From cf70ed5eac7e8e87ab4f4bd0d8bc349067ed61fd Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Sun, 6 Mar 2022 08:42:17 +0000
Subject: [PATCH] Bring back syntax highlighting in test data

cc #11597
---
 crates/parser/src/tests.rs                    |   18 +-
 .../test_data/lexer/err/empty_exponent.rast   |   48 +
 .../parser/test_data/lexer/err/empty_int.rast |   26 +
 .../err/lifetime_starts_with_a_number.rast    |    4 +
 .../err/unclosed_block_comment_at_eof.rast    |    1 +
 .../unclosed_block_comment_with_content.rast  |    1 +
 .../lexer/err/unclosed_byte_at_eof.rast       |    1 +
 .../err/unclosed_byte_string_at_eof.rast      |    1 +
 ...nclosed_byte_string_with_ascii_escape.rast |    1 +
 .../err/unclosed_byte_string_with_ferris.rast |    1 +
 .../err/unclosed_byte_string_with_slash.rast  |    1 +
 ...d_byte_string_with_slash_double_quote.rast |    1 +
 .../unclosed_byte_string_with_slash_n.rast    |    1 +
 .../err/unclosed_byte_string_with_space.rast  |    1 +
 ...losed_byte_string_with_unicode_escape.rast |    1 +
 .../err/unclosed_byte_with_ascii_escape.rast  |    1 +
 .../lexer/err/unclosed_byte_with_ferris.rast  |    1 +
 .../lexer/err/unclosed_byte_with_slash.rast   |    1 +
 .../lexer/err/unclosed_byte_with_slash_n.rast |    1 +
 ...unclosed_byte_with_slash_single_quote.rast |    1 +
 .../lexer/err/unclosed_byte_with_space.rast   |    1 +
 .../unclosed_byte_with_unicode_escape.rast    |    1 +
 .../lexer/err/unclosed_char_at_eof.rast       |    1 +
 .../err/unclosed_char_with_ascii_escape.rast  |    1 +
 .../lexer/err/unclosed_char_with_ferris.rast  |    1 +
 .../lexer/err/unclosed_char_with_slash.rast   |    1 +
 .../lexer/err/unclosed_char_with_slash_n.rast |    1 +
 ...unclosed_char_with_slash_single_quote.rast |    1 +
 .../lexer/err/unclosed_char_with_space.rast   |    1 +
 .../unclosed_char_with_unicode_escape.rast    |    1 +
 ...nclosed_nested_block_comment_entirely.rast |    1 +
 ...closed_nested_block_comment_partially.rast |    1 +
 .../err/unclosed_raw_byte_string_at_eof.rast  |    1 +
 ...sed_raw_byte_string_with_ascii_escape.rast |    1 +
 .../unclosed_raw_byte_string_with_ferris.rast |    1 +
 .../unclosed_raw_byte_string_with_slash.rast  |    1 +
 ...unclosed_raw_byte_string_with_slash_n.rast |    1 +
 .../unclosed_raw_byte_string_with_space.rast  |    1 +
 ...d_raw_byte_string_with_unicode_escape.rast |    1 +
 .../lexer/err/unclosed_raw_string_at_eof.rast |    1 +
 ...unclosed_raw_string_with_ascii_escape.rast |    1 +
 .../err/unclosed_raw_string_with_ferris.rast  |    1 +
 .../err/unclosed_raw_string_with_slash.rast   |    1 +
 .../err/unclosed_raw_string_with_slash_n.rast |    1 +
 .../err/unclosed_raw_string_with_space.rast   |    1 +
 ...closed_raw_string_with_unicode_escape.rast |    1 +
 .../lexer/err/unclosed_string_at_eof.rast     |    1 +
 .../unclosed_string_with_ascii_escape.rast    |    1 +
 .../err/unclosed_string_with_ferris.rast      |    1 +
 .../lexer/err/unclosed_string_with_slash.rast |    1 +
 ...closed_string_with_slash_double_quote.rast |    1 +
 .../err/unclosed_string_with_slash_n.rast     |    1 +
 .../lexer/err/unclosed_string_with_space.rast |    1 +
 .../unclosed_string_with_unicode_escape.rast  |    1 +
 .../err/unstarted_raw_byte_string_at_eof.rast |    1 +
 .../unstarted_raw_byte_string_with_ascii.rast |    9 +
 .../err/unstarted_raw_string_at_eof.rast      |    1 +
 .../err/unstarted_raw_string_with_ascii.rast  |    9 +
 .../test_data/lexer/ok/block_comment.rast     |    6 +
 .../test_data/lexer/ok/byte_strings.rast      |   22 +
 crates/parser/test_data/lexer/ok/chars.rast   |   16 +
 crates/parser/test_data/lexer/ok/hello.rast   |    3 +
 crates/parser/test_data/lexer/ok/ident.rast   |   14 +
 .../parser/test_data/lexer/ok/keywords.rast   |   64 +
 .../parser/test_data/lexer/ok/lifetimes.rast  |    8 +
 crates/parser/test_data/lexer/ok/numbers.rast |   57 +
 .../parser/test_data/lexer/ok/raw_ident.rast  |    2 +
 .../test_data/lexer/ok/raw_strings.rast       |    2 +
 .../lexer/ok/single_line_comments.rast        |   22 +
 crates/parser/test_data/lexer/ok/strings.rast |    8 +
 crates/parser/test_data/lexer/ok/symbols.rast |   77 +
 .../parser/test_data/lexer/ok/whitespace.rast |   12 +
 .../err/0000_struct_field_missing_comma.rast  |   68 +-
 .../err/0000_struct_field_missing_comma.txt   |   34 -
 .../err/0001_item_recovery_in_file.rast       |   36 +-
 .../parser/err/0001_item_recovery_in_file.txt |   18 -
 .../parser/err/0002_duplicate_shebang.rast    |   90 +-
 .../parser/err/0002_duplicate_shebang.txt     |   45 -
 .../parser/err/0003_C++_semicolon.rast        |   76 +-
 .../parser/err/0003_C++_semicolon.txt         |   39 -
 .../parser/err/0004_use_path_bad_segment.rast |   30 +-
 .../parser/err/0004_use_path_bad_segment.txt  |   15 -
 .../parser/err/0005_attribute_recover.rast    |  124 +-
 .../parser/err/0005_attribute_recover.txt     |   62 -
 .../parser/err/0006_named_field_recovery.rast |  148 +-
 .../parser/err/0006_named_field_recovery.txt  |   74 -
 .../parser/err/0007_stray_curly_in_file.rast  |   66 +-
 .../parser/err/0007_stray_curly_in_file.txt   |   33 -
 .../parser/err/0008_item_block_recovery.rast  |  161 +-
 .../parser/err/0008_item_block_recovery.txt   |   80 -
 .../0009_broken_struct_type_parameter.rast    |  112 +-
 .../err/0009_broken_struct_type_parameter.txt |   56 -
 .../parser/err/0010_unsafe_lambda_block.rast  |   90 +-
 .../parser/err/0010_unsafe_lambda_block.txt   |   45 -
 .../parser/err/0011_extern_struct.rast        |   26 +-
 .../parser/err/0011_extern_struct.txt         |   13 -
 .../parser/err/0013_invalid_type.rast         |  178 +-
 .../parser/err/0013_invalid_type.txt          |   89 -
 .../parser/err/0014_where_no_bounds.rast      |   64 +-
 .../parser/err/0014_where_no_bounds.txt       |   32 -
 .../parser/err/0015_curly_in_params.rast      |   48 +-
 .../parser/err/0015_curly_in_params.txt       |   24 -
 .../parser/err/0016_missing_semi.rast         |   88 +-
 .../parser/err/0016_missing_semi.txt          |   44 -
 .../parser/err/0017_incomplete_binexpr.rast   |   94 +-
 .../parser/err/0017_incomplete_binexpr.txt    |   47 -
 .../parser/err/0018_incomplete_fn.rast        |  266 +-
 .../parser/err/0018_incomplete_fn.txt         |  133 -
 .../parser/err/0019_let_recover.rast          |  214 +-
 .../test_data/parser/err/0019_let_recover.txt |  107 -
 .../test_data/parser/err/0020_fn_recover.rast |   42 +-
 .../test_data/parser/err/0020_fn_recover.txt  |   21 -
 .../parser/err/0021_incomplete_param.rast     |   68 +-
 .../parser/err/0021_incomplete_param.txt      |   34 -
 .../test_data/parser/err/0022_bad_exprs.rast  |  342 +-
 .../test_data/parser/err/0022_bad_exprs.txt   |  171 -
 .../parser/err/0023_mismatched_paren.rast     |   88 +-
 .../parser/err/0023_mismatched_paren.txt      |   44 -
 .../parser/err/0024_many_type_parens.rast     |  652 +--
 .../parser/err/0024_many_type_parens.txt      |  331 --
 .../err/{0025_nope.txt => 0025_nope.rast}     |    0
 .../parser/err/0026_imp_recovery.rast         |   98 +-
 .../parser/err/0026_imp_recovery.txt          |   49 -
 .../parser/err/0027_incomplere_where_for.rast |   58 +-
 .../parser/err/0027_incomplere_where_for.txt  |   29 -
 .../parser/err/0029_field_completion.rast     |   72 +-
 .../parser/err/0029_field_completion.txt      |   36 -
 .../err/0032_match_arms_inner_attrs.rast      |  410 +-
 .../err/0032_match_arms_inner_attrs.txt       |  205 -
 .../err/0033_match_arms_outer_attrs.rast      |  136 +-
 .../err/0033_match_arms_outer_attrs.txt       |   68 -
 .../parser/err/0034_bad_box_pattern.rast      |  192 +-
 .../parser/err/0034_bad_box_pattern.txt       |   96 -
 .../parser/err/0035_use_recover.rast          |  110 +-
 .../test_data/parser/err/0035_use_recover.txt |   55 -
 .../parser/err/0036_partial_use.rast          |  102 +-
 .../test_data/parser/err/0036_partial_use.txt |   51 -
 .../parser/err/0039_lambda_recovery.rast      |  166 +-
 .../parser/err/0039_lambda_recovery.txt       |   83 -
 .../parser/err/0042_weird_blocks.rast         |  150 +-
 .../parser/err/0042_weird_blocks.txt          |   75 -
 .../parser/err/0043_unexpected_for_type.rast  |  512 +-
 .../parser/err/0043_unexpected_for_type.txt   |  256 -
 .../parser/err/0044_item_modifiers.rast       |   96 +-
 .../parser/err/0044_item_modifiers.txt        |   48 -
 .../err/0047_repated_extern_modifier.rast     |   30 +-
 .../err/0047_repated_extern_modifier.txt      |   15 -
 .../parser/err/0048_double_fish.rast          |  246 +-
 .../test_data/parser/err/0048_double_fish.txt |  123 -
 .../err/0001_array_type_missing_semi.rast     |   54 +-
 .../err/0001_array_type_missing_semi.txt      |   27 -
 .../inline/err/0002_misplaced_label_err.rast  |   56 +-
 .../inline/err/0002_misplaced_label_err.txt   |   28 -
 .../err/0003_pointer_type_no_mutability.rast  |   34 +-
 .../err/0003_pointer_type_no_mutability.txt   |   17 -
 .../parser/inline/err/0004_impl_type.rast     |  158 +-
 .../parser/inline/err/0004_impl_type.txt      |   79 -
 .../err/0005_fn_pointer_type_missing_fn.rast  |   46 +-
 .../err/0005_fn_pointer_type_missing_fn.txt   |   23 -
 .../inline/err/0006_unsafe_block_in_mod.rast  |   74 +-
 .../inline/err/0006_unsafe_block_in_mod.txt   |   37 -
 .../err/0007_async_without_semicolon.rast     |   64 +-
 .../err/0007_async_without_semicolon.txt      |   32 -
 .../parser/inline/err/0008_pub_expr.rast      |   52 +-
 .../parser/inline/err/0008_pub_expr.txt       |   26 -
 .../inline/err/0013_anonymous_static.rast     |   42 +-
 .../inline/err/0013_anonymous_static.txt      |   21 -
 ...cord_literal_before_ellipsis_recovery.rast |   98 +-
 ...ecord_literal_before_ellipsis_recovery.txt |   49 -
 .../inline/err/0014_struct_field_recover.rast |   62 +-
 .../inline/err/0014_struct_field_recover.txt  |   31 -
 .../parser/inline/err/0015_empty_segment.rast |   28 +-
 .../parser/inline/err/0015_empty_segment.txt  |   14 -
 .../err/0015_missing_fn_param_type.rast       |  106 +-
 .../inline/err/0015_missing_fn_param_type.txt |   53 -
 .../parser/inline/ok/0002_use_tree_list.rast  |   58 +-
 .../parser/inline/ok/0002_use_tree_list.txt   |   29 -
 .../parser/inline/ok/0003_where_pred_for.rast |  126 +-
 .../parser/inline/ok/0003_where_pred_for.txt  |   63 -
 .../ok/0004_value_parameters_no_patterns.rast |  120 +-
 .../ok/0004_value_parameters_no_patterns.txt  |   60 -
 .../inline/ok/0005_function_type_params.rast  |   76 +-
 .../inline/ok/0005_function_type_params.txt   |   38 -
 .../parser/inline/ok/0006_self_param.rast     |  256 +-
 .../parser/inline/ok/0006_self_param.txt      |  128 -
 .../inline/ok/0007_type_param_bounds.rast     |  106 +-
 .../inline/ok/0007_type_param_bounds.txt      |   53 -
 .../parser/inline/ok/0008_path_part.rast      |  196 +-
 .../parser/inline/ok/0008_path_part.txt       |   98 -
 .../parser/inline/ok/0009_loop_expr.rast      |   52 +-
 .../parser/inline/ok/0009_loop_expr.txt       |   26 -
 .../parser/inline/ok/0010_extern_block.rast   |   42 +-
 .../parser/inline/ok/0010_extern_block.txt    |   21 -
 .../parser/inline/ok/0011_field_expr.rast     |  120 +-
 .../parser/inline/ok/0011_field_expr.txt      |   60 -
 .../ok/0012_type_item_where_clause.rast       |   66 +-
 .../inline/ok/0012_type_item_where_clause.txt |   33 -
 .../inline/ok/0013_pointer_type_mut.rast      |   70 +-
 .../inline/ok/0013_pointer_type_mut.txt       |   35 -
 .../parser/inline/ok/0014_never_type.rast     |   26 +-
 .../parser/inline/ok/0014_never_type.txt      |   13 -
 .../parser/inline/ok/0015_continue_expr.rast  |   76 +-
 .../parser/inline/ok/0015_continue_expr.txt   |   38 -
 .../parser/inline/ok/0017_array_type.rast     |   42 +-
 .../parser/inline/ok/0017_array_type.txt      |   21 -
 .../parser/inline/ok/0018_arb_self_types.rast |  152 +-
 .../parser/inline/ok/0018_arb_self_types.txt  |   76 -
 .../parser/inline/ok/0019_unary_expr.rast     |   90 +-
 .../parser/inline/ok/0019_unary_expr.txt      |   45 -
 .../inline/ok/0021_assoc_item_list.rast       |  162 +-
 .../parser/inline/ok/0021_assoc_item_list.txt |   81 -
 .../inline/ok/0022_crate_visibility.rast      |   98 +-
 .../inline/ok/0022_crate_visibility.txt       |   49 -
 .../inline/ok/0023_placeholder_type.rast      |   26 +-
 .../inline/ok/0023_placeholder_type.txt       |   13 -
 .../parser/inline/ok/0024_slice_pat.rast      |   84 +-
 .../parser/inline/ok/0024_slice_pat.txt       |   42 -
 .../parser/inline/ok/0025_slice_type.rast     |   34 +-
 .../parser/inline/ok/0025_slice_type.txt      |   17 -
 .../inline/ok/0026_tuple_pat_fields.rast      |  210 +-
 .../inline/ok/0026_tuple_pat_fields.txt       |  105 -
 .../parser/inline/ok/0027_ref_pat.rast        |  100 +-
 .../parser/inline/ok/0027_ref_pat.txt         |   50 -
 .../inline/ok/0028_impl_trait_type.rast       |   90 +-
 .../parser/inline/ok/0028_impl_trait_type.txt |   45 -
 .../parser/inline/ok/0029_cast_expr.rast      |  180 +-
 .../parser/inline/ok/0029_cast_expr.txt       |   90 -
 .../parser/inline/ok/0030_let_expr.txt        |   90 -
 .../parser/inline/ok/0031_while_expr.rast     |  176 +-
 .../parser/inline/ok/0031_while_expr.txt      |   87 -
 .../inline/ok/0032_fn_pointer_type.rast       |  196 +-
 .../parser/inline/ok/0032_fn_pointer_type.txt |   98 -
 .../inline/ok/0033_reference_type;.rast       |  102 +-
 .../parser/inline/ok/0033_reference_type;.txt |   51 -
 .../parser/inline/ok/0034_break_expr.rast     |  114 +-
 .../parser/inline/ok/0034_break_expr.txt      |   57 -
 .../parser/inline/ok/0037_qual_paths.rast     |  158 +-
 .../parser/inline/ok/0037_qual_paths.txt      |   79 -
 .../inline/ok/0038_full_range_expr.rast       |   58 +-
 .../parser/inline/ok/0038_full_range_expr.txt |   29 -
 .../inline/ok/0040_crate_keyword_vis.rast     |  126 +-
 .../inline/ok/0040_crate_keyword_vis.txt      |   63 -
 .../parser/inline/ok/0041_trait_item.rast     |   62 +-
 .../parser/inline/ok/0041_trait_item.txt      |   31 -
 .../parser/inline/ok/0042_call_expr.rast      |  296 +-
 .../parser/inline/ok/0042_call_expr.txt       |  148 -
 .../parser/inline/ok/0044_block_items.rast    |   60 +-
 .../parser/inline/ok/0044_block_items.txt     |   30 -
 .../ok/0045_param_list_opt_patterns.rast      |   96 +-
 .../ok/0045_param_list_opt_patterns.txt       |   48 -
 .../inline/ok/0046_singleton_tuple_type.rast  |   40 +-
 .../inline/ok/0046_singleton_tuple_type.txt   |   20 -
 .../inline/ok/0048_path_type_with_bounds.rast |  170 +-
 .../inline/ok/0048_path_type_with_bounds.txt  |   85 -
 .../parser/inline/ok/0050_fn_decl.rast        |   44 +-
 .../parser/inline/ok/0050_fn_decl.txt         |   22 -
 .../parser/inline/ok/0051_unit_type.rast      |   28 +-
 .../parser/inline/ok/0051_unit_type.txt       |   14 -
 .../parser/inline/ok/0052_path_type.rast      |  144 +-
 .../parser/inline/ok/0052_path_type.txt       |   72 -
 .../parser/inline/ok/0053_path_expr.rast      |  192 +-
 .../parser/inline/ok/0053_path_expr.txt       |   96 -
 .../inline/ok/0054_record_field_attrs.rast    |   66 +-
 .../inline/ok/0054_record_field_attrs.txt     |   33 -
 .../inline/ok/0055_literal_pattern.rast       |  154 +-
 .../parser/inline/ok/0055_literal_pattern.txt |   77 -
 .../parser/inline/ok/0056_where_clause.rast   |  234 +-
 .../parser/inline/ok/0056_where_clause.txt    |  117 -
 .../parser/inline/ok/0058_range_pat.rast      |  502 +-
 .../parser/inline/ok/0058_range_pat.txt       |  251 -
 .../inline/ok/0059_match_arms_commas.rast     |  120 +-
 .../inline/ok/0059_match_arms_commas.txt      |   60 -
 .../parser/inline/ok/0060_extern_crate.rast   |   20 +-
 .../parser/inline/ok/0060_extern_crate.txt    |   10 -
 .../parser/inline/ok/0061_record_lit.rast     |  250 +-
 .../parser/inline/ok/0061_record_lit.txt      |  125 -
 .../parser/inline/ok/0062_mod_contents.rast   |  130 +-
 .../parser/inline/ok/0062_mod_contents.txt    |   65 -
 .../parser/inline/ok/0063_impl_item_neg.rast  |   46 +-
 .../parser/inline/ok/0063_impl_item_neg.txt   |   23 -
 .../parser/inline/ok/0064_if_expr.rast        |  258 +-
 .../parser/inline/ok/0064_if_expr.txt         |  126 -
 .../parser/inline/ok/0065_dyn_trait_type.rast |   90 +-
 .../parser/inline/ok/0065_dyn_trait_type.txt  |   45 -
 .../parser/inline/ok/0066_match_arm.rast      |  304 +-
 .../parser/inline/ok/0066_match_arm.txt       |  152 -
 .../parser/inline/ok/0067_crate_path.rast     |   32 +-
 .../parser/inline/ok/0067_crate_path.txt      |   16 -
 .../ok/0070_stmt_bin_expr_ambiguity.rast      |  106 +-
 .../ok/0070_stmt_bin_expr_ambiguity.txt       |   53 -
 .../parser/inline/ok/0071_match_expr.rast     |  192 +-
 .../parser/inline/ok/0071_match_expr.txt      |   96 -
 .../parser/inline/ok/0072_return_expr.rast    |   58 +-
 .../parser/inline/ok/0072_return_expr.txt     |   29 -
 .../inline/ok/0073_type_item_type_params.rast |   40 +-
 .../inline/ok/0073_type_item_type_params.txt  |   20 -
 .../ok/0074_stmt_postfix_expr_ambiguity.rast  |  126 +-
 .../ok/0074_stmt_postfix_expr_ambiguity.txt   |   63 -
 .../parser/inline/ok/0075_block.rast          |  180 +-
 .../test_data/parser/inline/ok/0075_block.txt |   90 -
 .../inline/ok/0076_function_where_clause.rast |   80 +-
 .../inline/ok/0076_function_where_clause.txt  |   40 -
 .../parser/inline/ok/0077_try_expr.rast       |   52 +-
 .../parser/inline/ok/0077_try_expr.txt        |   26 -
 .../parser/inline/ok/0078_type_alias.rast     |   32 +-
 .../parser/inline/ok/0078_type_alias.txt      |   16 -
 .../parser/inline/ok/0079_impl_item.rast      |   28 +-
 .../parser/inline/ok/0079_impl_item.txt       |   14 -
 .../parser/inline/ok/0080_postfix_range.rast  |  192 +-
 .../parser/inline/ok/0080_postfix_range.txt   |   96 -
 .../parser/inline/ok/0081_for_type.rast       |  234 +-
 .../parser/inline/ok/0081_for_type.txt        |  117 -
 .../parser/inline/ok/0082_ref_expr.rast       |  278 +-
 .../parser/inline/ok/0082_ref_expr.txt        |  139 -
 .../parser/inline/ok/0084_paren_type.rast     |   38 +-
 .../parser/inline/ok/0084_paren_type.txt      |   19 -
 .../parser/inline/ok/0085_expr_literals.rast  |  272 +-
 .../parser/inline/ok/0085_expr_literals.txt   |  136 -
 .../inline/ok/0086_function_ret_type.rast     |   72 +-
 .../inline/ok/0086_function_ret_type.txt      |   36 -
 .../inline/ok/0088_break_ambiguity.rast       |  136 +-
 .../parser/inline/ok/0088_break_ambiguity.txt |   67 -
 .../inline/ok/0090_type_param_default.rast    |   44 +-
 .../inline/ok/0090_type_param_default.txt     |   22 -
 .../ok/0092_fn_pointer_type_with_ret.rast     |   46 +-
 .../ok/0092_fn_pointer_type_with_ret.txt      |   23 -
 .../parser/inline/ok/0093_index_expr.rast     |   68 +-
 .../parser/inline/ok/0093_index_expr.txt      |   34 -
 .../inline/ok/0095_placeholder_pat.rast       |   58 +-
 .../parser/inline/ok/0095_placeholder_pat.txt |   29 -
 .../inline/ok/0096_no_semi_after_block.rast   |  250 +-
 .../inline/ok/0096_no_semi_after_block.txt    |  124 -
 .../parser/inline/ok/0099_param_list.rast     |  206 +-
 .../parser/inline/ok/0099_param_list.txt      |  103 -
 .../parser/inline/ok/0100_for_expr.rast       |   72 +-
 .../parser/inline/ok/0100_for_expr.txt        |   36 -
 .../inline/ok/0102_record_pat_field_list.rast |  350 +-
 .../inline/ok/0102_record_pat_field_list.txt  |  175 -
 .../parser/inline/ok/0103_array_expr.rast     |  110 +-
 .../parser/inline/ok/0103_array_expr.txt      |   55 -
 .../inline/ok/0104_path_fn_trait_args.rast    |   82 +-
 .../inline/ok/0104_path_fn_trait_args.txt     |   41 -
 .../parser/inline/ok/0106_lambda_expr.rast    |  344 +-
 .../parser/inline/ok/0106_lambda_expr.txt     |  204 -
 .../inline/ok/0107_method_call_expr.rast      |  126 +-
 .../inline/ok/0107_method_call_expr.txt       |   63 -
 .../parser/inline/ok/0108_tuple_expr.rast     |   78 +-
 .../parser/inline/ok/0108_tuple_expr.txt      |   39 -
 .../parser/inline/ok/0109_label.rast          |  141 +-
 .../test_data/parser/inline/ok/0109_label.txt |   70 -
 .../parser/inline/ok/0111_tuple_pat.rast      |  180 +-
 .../parser/inline/ok/0111_tuple_pat.txt       |   90 -
 .../parser/inline/ok/0112_bind_pat.rast       |  256 +-
 .../parser/inline/ok/0112_bind_pat.txt        |  128 -
 .../parser/inline/ok/0113_nocontentexpr.rast  |  114 +-
 .../parser/inline/ok/0113_nocontentexpr.txt   |   57 -
 .../inline/ok/0114_tuple_struct_where.rast    |   84 +-
 .../inline/ok/0114_tuple_struct_where.txt     |   42 -
 .../inline/ok/0115_tuple_field_attrs.rast     |   56 +-
 .../inline/ok/0115_tuple_field_attrs.txt      |   28 -
 .../inline/ok/0117_macro_call_type.rast       |   92 +-
 .../parser/inline/ok/0117_macro_call_type.txt |   46 -
 .../parser/inline/ok/0118_match_guard.rast    |  153 +-
 .../parser/inline/ok/0118_match_guard.txt     |   77 -
 .../ok/0120_match_arms_inner_attribute.rast   |  168 +-
 .../ok/0120_match_arms_inner_attribute.txt    |   84 -
 .../ok/0121_match_arms_outer_attributes.rast  |  302 +-
 .../ok/0121_match_arms_outer_attributes.txt   |  151 -
 .../inline/ok/0123_param_list_vararg.rast     |  100 +-
 .../inline/ok/0123_param_list_vararg.txt      |   50 -
 .../inline/ok/0125_crate_keyword_path.rast    |   66 +-
 .../inline/ok/0125_crate_keyword_path.txt     |   33 -
 .../0125_record_literal_field_with_attr.rast  |   98 +-
 .../0125_record_literal_field_with_attr.txt   |   49 -
 .../inline/ok/0126_attr_on_expr_stmt.rast     |  208 +-
 .../inline/ok/0126_attr_on_expr_stmt.txt      |  104 -
 .../parser/inline/ok/0129_marco_pat.rast      |   74 +-
 .../parser/inline/ok/0129_marco_pat.txt       |   37 -
 .../parser/inline/ok/0130_let_stmt.rast       |   72 +-
 .../parser/inline/ok/0130_let_stmt.txt        |   36 -
 .../parser/inline/ok/0130_try_block_expr.rast |   64 +-
 .../parser/inline/ok/0130_try_block_expr.txt  |   32 -
 .../inline/ok/0131_existential_type.rast      |   62 +-
 .../inline/ok/0131_existential_type.txt       |   31 -
 .../parser/inline/ok/0132_box_expr.rast       |  180 +-
 .../parser/inline/ok/0132_box_expr.txt        |   90 -
 .../ok/0134_nocontentexpr_after_item.rast     |  128 +-
 .../ok/0134_nocontentexpr_after_item.txt      |   64 -
 .../parser/inline/ok/0137_await_expr.rast     |  140 +-
 .../parser/inline/ok/0137_await_expr.txt      |   70 -
 .../ok/0138_associated_type_bounds.rast       |  222 +-
 .../inline/ok/0138_associated_type_bounds.txt |  111 -
 .../ok/0138_expression_after_block.rast       |  132 +-
 .../inline/ok/0138_expression_after_block.txt |   66 -
 .../inline/ok/0138_self_param_outer_attr.rast |   56 +-
 .../inline/ok/0138_self_param_outer_attr.txt  |   28 -
 .../inline/ok/0139_param_outer_arg.rast       |   72 +-
 .../parser/inline/ok/0139_param_outer_arg.txt |   36 -
 .../parser/inline/ok/0142_for_range_from.rast |   84 +-
 .../parser/inline/ok/0142_for_range_from.txt  |   42 -
 .../parser/inline/ok/0143_box_pat.rast        |  222 +-
 .../parser/inline/ok/0143_box_pat.txt         |  111 -
 .../parser/inline/ok/0144_dot_dot_pat.rast    |  912 ++--
 .../parser/inline/ok/0144_dot_dot_pat.txt     |  456 --
 .../inline/ok/0145_record_pat_field.rast      |  246 +-
 .../inline/ok/0145_record_pat_field.txt       |  123 -
 .../parser/inline/ok/0146_as_precedence.rast  |   86 +-
 .../parser/inline/ok/0146_as_precedence.txt   |   43 -
 .../parser/inline/ok/0147_const_param.rast    |   46 +-
 .../parser/inline/ok/0147_const_param.txt     |   23 -
 .../parser/inline/ok/0147_macro_def.rast      |   38 +-
 .../parser/inline/ok/0147_macro_def.txt       |   19 -
 .../parser/inline/ok/0150_array_attrs.rast    |   96 +-
 .../parser/inline/ok/0150_array_attrs.txt     |   48 -
 .../inline/ok/0150_impl_type_params.rast      |   76 +-
 .../inline/ok/0150_impl_type_params.txt       |   38 -
 .../test_data/parser/inline/ok/0151_fn.rast   |   30 +-
 .../test_data/parser/inline/ok/0151_fn.txt    |   15 -
 .../parser/inline/ok/0151_trait_alias.rast    |   66 +-
 .../parser/inline/ok/0151_trait_alias.txt     |   33 -
 .../parser/inline/ok/0152_arg_with_attr.rast  |   76 +-
 .../parser/inline/ok/0152_arg_with_attr.txt   |   38 -
 .../inline/ok/0153_pub_parens_typepath.rast   |  112 +-
 .../inline/ok/0153_pub_parens_typepath.txt    |   56 -
 .../ok/0154_fn_pointer_param_ident_path.rast  |  116 +-
 .../ok/0154_fn_pointer_param_ident_path.txt   |   58 -
 .../ok/0154_no_dyn_trait_leading_for.rast     |   86 +-
 .../ok/0154_no_dyn_trait_leading_for.txt      |   43 -
 .../parser/inline/ok/0154_tuple_attrs.rast    |  102 +-
 .../parser/inline/ok/0154_tuple_attrs.txt     |   51 -
 .../parser/inline/ok/0155_closure_params.rast |  140 +-
 .../parser/inline/ok/0155_closure_params.txt  |   70 -
 .../inline/ok/0156_const_block_pat.rast       |  158 +-
 .../parser/inline/ok/0156_const_block_pat.txt |   79 -
 .../parser/inline/ok/0156_fn_def_param.rast   |   88 +-
 .../parser/inline/ok/0156_fn_def_param.txt    |   44 -
 .../parser/inline/ok/0156_or_pattern.rast     |  224 +-
 .../parser/inline/ok/0156_or_pattern.txt      |  112 -
 .../parser/inline/ok/0157_const_block.rast    |   48 +-
 .../parser/inline/ok/0157_const_block.txt     |   24 -
 .../ok/0157_fn_pointer_unnamed_arg.rast       |   52 +-
 .../inline/ok/0157_fn_pointer_unnamed_arg.txt |   26 -
 .../inline/ok/0157_variant_discriminant.rast  |   60 +-
 .../inline/ok/0157_variant_discriminant.txt   |   30 -
 .../ok/0158_binop_resets_statementness.rast   |   76 +-
 .../ok/0158_binop_resets_statementness.txt    |   38 -
 .../inline/ok/0158_lambda_ret_block.rast      |   90 +-
 .../inline/ok/0158_lambda_ret_block.txt       |   45 -
 .../inline/ok/0158_macro_rules_non_brace.rast |  114 +-
 .../inline/ok/0158_macro_rules_non_brace.txt  |   57 -
 .../inline/ok/0159_try_macro_fallback.rast    |   70 +-
 .../inline/ok/0159_try_macro_fallback.txt     |   35 -
 .../parser/inline/ok/0159_yield_expr.rast     |   58 +-
 .../parser/inline/ok/0159_yield_expr.txt      |   29 -
 .../inline/ok/0160_crate_visibility_in.rast   |   84 +-
 .../inline/ok/0160_crate_visibility_in.txt    |   42 -
 .../inline/ok/0160_try_macro_rules.rast       |   48 +-
 .../parser/inline/ok/0160_try_macro_rules.txt |   24 -
 .../inline/ok/0161_impl_item_const.rast       |   48 +-
 .../parser/inline/ok/0161_impl_item_const.txt |   24 -
 .../parser/inline/ok/0161_labeled_block.rast  |   56 +-
 .../parser/inline/ok/0161_labeled_block.txt   |   28 -
 .../ok/0162_default_async_unsafe_fn.rast      |   86 +-
 .../ok/0162_default_async_unsafe_fn.txt       |   43 -
 .../parser/inline/ok/0162_unsafe_block.rast   |   48 +-
 .../parser/inline/ok/0162_unsafe_block.txt    |   24 -
 .../inline/ok/0163_default_async_fn.rast      |   82 +-
 .../inline/ok/0163_default_async_fn.txt       |   41 -
 .../inline/ok/0163_default_unsafe_item.rast   |   90 +-
 .../inline/ok/0163_default_unsafe_item.txt    |   45 -
 .../parser/inline/ok/0164_default_item.rast   |   48 +-
 .../parser/inline/ok/0164_default_item.txt    |   24 -
 .../inline/ok/0164_type_path_in_pattern.rast  |   78 +-
 .../inline/ok/0164_type_path_in_pattern.txt   |   39 -
 .../inline/ok/0165_const_param_defaults.rast  |   62 +-
 .../inline/ok/0165_const_param_defaults.txt   |   31 -
 .../inline/ok/0166_half_open_range_pat.rast   |   64 +-
 .../inline/ok/0166_half_open_range_pat.txt    |   32 -
 .../inline/ok/0168_extern_crate_rename.rast   |   32 +-
 .../inline/ok/0168_extern_crate_rename.txt    |   16 -
 .../inline/ok/0168_extern_crate_self.rast     |   20 +-
 .../inline/ok/0168_extern_crate_self.txt      |   10 -
 .../parser/inline/ok/0169_mod_item.rast       |   16 +-
 .../parser/inline/ok/0169_mod_item.txt        |    8 -
 .../parser/inline/ok/0170_mod_item_curly.rast |   24 +-
 .../parser/inline/ok/0170_mod_item_curly.txt  |   12 -
 .../parser/inline/ok/0170_tuple_struct.rast   |   50 +-
 .../parser/inline/ok/0170_tuple_struct.txt    |   25 -
 .../parser/inline/ok/0171_struct_item.rast    |   22 +-
 .../parser/inline/ok/0171_struct_item.txt     |   11 -
 .../parser/inline/ok/0172_const_item.rast     |   40 +-
 .../parser/inline/ok/0172_const_item.txt      |   20 -
 .../inline/ok/0172_record_field_list.rast     |   70 +-
 .../inline/ok/0172_record_field_list.txt      |   35 -
 .../inline/ok/0173_anonymous_const.rast       |   38 +-
 .../parser/inline/ok/0173_anonymous_const.txt |   19 -
 .../inline/ok/0173_macro_def_curly.rast       |   54 +-
 .../parser/inline/ok/0173_macro_def_curly.txt |   27 -
 .../parser/inline/ok/0173_union_item.rast     |   70 +-
 .../parser/inline/ok/0173_union_item.txt      |   35 -
 .../ok/0174_trait_item_generic_params.rast    |   70 +-
 .../ok/0174_trait_item_generic_params.txt     |   35 -
 .../parser/inline/ok/0174_unit_struct.rast    |   16 +-
 .../parser/inline/ok/0174_unit_struct.txt     |    8 -
 .../parser/inline/ok/0174_use_tree_star.rast  |   48 +-
 .../parser/inline/ok/0174_use_tree_star.txt   |   24 -
 .../inline/ok/0175_trait_item_bounds.rast     |   58 +-
 .../inline/ok/0175_trait_item_bounds.txt      |   29 -
 .../ok/0176_trait_item_where_clause.rast      |   60 +-
 .../ok/0176_trait_item_where_clause.txt       |   30 -
 .../parser/inline/ok/0176_use_tree_alias.rast |   64 +-
 .../parser/inline/ok/0176_use_tree_alias.txt  |   32 -
 .../ok/0177_assoc_item_list_inner_attrs.rast  |   52 +-
 .../ok/0177_assoc_item_list_inner_attrs.txt   |   26 -
 .../ok/0177_trait_alias_where_clause.rast     |  192 +-
 .../ok/0177_trait_alias_where_clause.txt      |   96 -
 .../parser/inline/ok/0177_use_tree.rast       |   60 +-
 .../parser/inline/ok/0177_use_tree.txt        |   30 -
 .../parser/inline/ok/0177_use_tree_path.rast  |  144 +-
 .../parser/inline/ok/0177_use_tree_path.txt   |   72 -
 .../ok/0178_use_tree_path_use_tree.rast       |   40 +-
 .../inline/ok/0178_use_tree_path_use_tree.txt |   20 -
 .../inline/ok/0179_use_tree_abs_star.rast     |   52 +-
 .../inline/ok/0179_use_tree_abs_star.txt      |   26 -
 .../inline/ok/0180_use_tree_path_star.rast    |   26 +-
 .../inline/ok/0180_use_tree_path_star.txt     |   13 -
 .../ok/0181_generic_param_attribute.rast      |   92 +-
 .../ok/0181_generic_param_attribute.txt       |   46 -
 .../parser/inline/ok/0181_use_item.rast       |   32 +-
 .../parser/inline/ok/0181_use_item.txt        |   16 -
 .../parser/inline/ok/0182_lifetime_param.rast |   50 +-
 .../parser/inline/ok/0182_lifetime_param.txt  |   25 -
 .../inline/ok/0183_const_arg_block.rast       |   64 +-
 .../parser/inline/ok/0183_const_arg_block.txt |   32 -
 .../parser/inline/ok/0183_type_param.rast     |   60 +-
 .../parser/inline/ok/0183_type_param.txt      |   30 -
 .../parser/inline/ok/0184_const_arg.rast      |   44 +-
 .../parser/inline/ok/0184_const_arg.txt       |   22 -
 .../inline/ok/0184_generic_param_list.rast    |   60 +-
 .../inline/ok/0184_generic_param_list.txt     |   30 -
 .../inline/ok/0185_assoc_type_bound.rast      |   74 +-
 .../inline/ok/0185_assoc_type_bound.txt       |   37 -
 .../parser/inline/ok/0186_lifetime_arg.rast   |   44 +-
 .../parser/inline/ok/0186_lifetime_arg.txt    |   22 -
 .../parser/inline/ok/0187_assoc_type_eq.rast  |   82 +-
 .../parser/inline/ok/0187_assoc_type_eq.txt   |   41 -
 .../parser/inline/ok/0188_const_arg_path.rast |   74 +-
 .../parser/inline/ok/0188_const_arg_path.txt  |   37 -
 .../inline/ok/0189_const_arg_literal.rast     |   54 +-
 .../inline/ok/0189_const_arg_literal.txt      |   27 -
 .../parser/inline/ok/0190_generic_arg.rast    |   50 +-
 .../parser/inline/ok/0190_generic_arg.txt     |   25 -
 .../ok/0191_const_arg_negative_number.rast    |   48 +-
 .../ok/0191_const_arg_negative_number.txt     |   24 -
 .../ok/0192_const_arg_bool_literal.rast       |   44 +-
 .../inline/ok/0192_const_arg_bool_literal.txt |   22 -
 .../parser/inline/ok/0193_let_stmt_init.rast  |   58 +-
 .../parser/inline/ok/0193_let_stmt_init.txt   |   29 -
 .../parser/inline/ok/0194_let_else.rast       |  102 +-
 .../parser/inline/ok/0194_let_else.txt        |   51 -
 .../inline/ok/0194_let_stmt_ascription.rast   |   62 +-
 .../inline/ok/0194_let_stmt_ascription.txt    |   31 -
 .../ok/0194_macro_inside_generic_arg.rast     |   72 +-
 .../ok/0194_macro_inside_generic_arg.txt      |   36 -
 .../inline/ok/0196_pub_tuple_field.rast       |   60 +-
 .../parser/inline/ok/0196_pub_tuple_field.txt |   30 -
 ...uring_assignment_struct_rest_pattern.rast} |    0
 ...estructuring_assignment_wildcard_pat.rast} |    0
 .../test_data/parser/ok/0000_empty.rast       |    2 +-
 .../parser/test_data/parser/ok/0000_empty.txt |    1 -
 .../test_data/parser/ok/0001_struct_item.rast |   78 +-
 .../test_data/parser/ok/0001_struct_item.txt  |   39 -
 .../parser/ok/0002_struct_item_field.rast     |   44 +-
 .../parser/ok/0002_struct_item_field.txt      |   22 -
 .../parser/ok/0004_file_shebang.rast          |    4 +-
 .../test_data/parser/ok/0004_file_shebang.txt |    2 -
 .../test_data/parser/ok/0005_fn_item.rast     |   32 +-
 .../test_data/parser/ok/0005_fn_item.txt      |   16 -
 .../parser/ok/0006_inner_attributes.rast      |  388 +-
 .../parser/ok/0006_inner_attributes.txt       |  194 -
 .../parser/ok/0007_extern_crate.rast          |   80 +-
 .../test_data/parser/ok/0007_extern_crate.txt |   40 -
 .../test_data/parser/ok/0008_mod_item.rast    |  154 +-
 .../test_data/parser/ok/0008_mod_item.txt     |   77 -
 .../test_data/parser/ok/0009_use_item.rast    |   42 +-
 .../test_data/parser/ok/0009_use_item.txt     |   21 -
 .../parser/ok/0010_use_path_segments.rast     |   84 +-
 .../parser/ok/0010_use_path_segments.txt      |   42 -
 .../parser/ok/0011_outer_attribute.rast       |  122 +-
 .../parser/ok/0011_outer_attribute.txt        |   61 -
 .../test_data/parser/ok/0012_visibility.rast  |  266 +-
 .../test_data/parser/ok/0012_visibility.txt   |  133 -
 .../parser/ok/0013_use_path_self_super.rast   |   72 +-
 .../parser/ok/0013_use_path_self_super.txt    |   36 -
 .../test_data/parser/ok/0014_use_tree.rast    |  190 +-
 .../test_data/parser/ok/0014_use_tree.txt     |   95 -
 .../test_data/parser/ok/0015_use_tree.rast    |  130 +-
 .../test_data/parser/ok/0015_use_tree.txt     |   65 -
 .../parser/ok/0016_struct_flavors.rast        |  186 +-
 .../parser/ok/0016_struct_flavors.txt         |   93 -
 .../parser/ok/0017_attr_trailing_comma.rast   |   60 +-
 .../parser/ok/0017_attr_trailing_comma.txt    |   30 -
 .../parser/ok/0018_struct_type_params.rast    |  548 +-
 .../parser/ok/0018_struct_type_params.txt     |  274 -
 .../test_data/parser/ok/0019_enums.rast       |  310 +-
 .../parser/test_data/parser/ok/0019_enums.txt |  155 -
 .../parser/ok/0020_type_param_bounds.rast     |  566 +-
 .../parser/ok/0020_type_param_bounds.txt      |  283 -
 .../parser/ok/0022_empty_extern_block.rast    |   42 +-
 .../parser/ok/0022_empty_extern_block.txt     |   21 -
 .../parser/ok/0023_static_items.rast          |   82 +-
 .../test_data/parser/ok/0023_static_items.txt |   41 -
 .../test_data/parser/ok/0024_const_item.rast  |    2 +-
 .../test_data/parser/ok/0024_const_item.txt   |    1 -
 .../parser/ok/0025_extern_fn_in_block.rast    |   66 +-
 .../parser/ok/0025_extern_fn_in_block.txt     |   33 -
 .../parser/ok/0026_const_fn_in_block.rast     |   64 +-
 .../parser/ok/0026_const_fn_in_block.txt      |   32 -
 .../parser/ok/0027_unsafe_fn_in_block.rast    |   86 +-
 .../parser/ok/0027_unsafe_fn_in_block.txt     |   43 -
 .../ok/0028_operator_binding_power.rast       |  372 +-
 .../parser/ok/0028_operator_binding_power.txt |  186 -
 .../test_data/parser/ok/0029_range_forms.rast |  304 +-
 .../test_data/parser/ok/0029_range_forms.txt  |  152 -
 .../parser/ok/0030_string_suffixes.rast       |  128 +-
 .../parser/ok/0030_string_suffixes.txt        |   64 -
 .../test_data/parser/ok/0030_traits.rast      |  122 +-
 .../test_data/parser/ok/0030_traits.txt       |   61 -
 .../test_data/parser/ok/0031_extern.rast      | 1946 +++----
 .../test_data/parser/ok/0031_extern.txt       |  973 ----
 .../test_data/parser/ok/0032_where_for.rast   |  186 +-
 .../test_data/parser/ok/0032_where_for.txt    |   93 -
 .../test_data/parser/ok/0033_label_break.rast |  450 +-
 .../test_data/parser/ok/0033_label_break.txt  |  223 -
 .../parser/ok/0034_crate_path_in_call.rast    |   86 +-
 .../parser/ok/0034_crate_path_in_call.txt     |   43 -
 .../test_data/parser/ok/0035_weird_exprs.rast | 4665 ++++++++---------
 .../test_data/parser/ok/0035_weird_exprs.txt  | 2328 --------
 .../parser/ok/0036_fully_qualified.rast       |  186 +-
 .../parser/ok/0036_fully_qualified.txt        |   93 -
 .../parser/test_data/parser/ok/0037_mod.rast  |   32 +-
 .../parser/test_data/parser/ok/0037_mod.txt   |   16 -
 .../parser/ok/0038_where_pred_type.rast       |   86 +-
 .../parser/ok/0038_where_pred_type.txt        |   43 -
 .../test_data/parser/ok/0039_raw_fn_item.rast |   32 +-
 .../test_data/parser/ok/0039_raw_fn_item.txt  |   16 -
 .../parser/ok/0040_raw_struct_item_field.rast |   44 +-
 .../parser/ok/0040_raw_struct_item_field.txt  |   22 -
 .../parser/ok/0041_raw_keywords.rast          |  100 +-
 .../test_data/parser/ok/0041_raw_keywords.txt |   50 -
 .../parser/ok/0042_ufcs_call_list.rast        |  252 +-
 .../parser/ok/0042_ufcs_call_list.txt         |  126 -
 .../parser/ok/0043_complex_assignment.rast    |  220 +-
 .../parser/ok/0043_complex_assignment.txt     |  110 -
 .../test_data/parser/ok/0044_let_attrs.rast   |  154 +-
 .../test_data/parser/ok/0044_let_attrs.txt    |   77 -
 .../test_data/parser/ok/0045_block_attrs.rast |  460 +-
 .../test_data/parser/ok/0045_block_attrs.txt  |  230 -
 .../ok/0046_extern_inner_attributes.rast      |   58 +-
 .../ok/0046_extern_inner_attributes.txt       |   29 -
 .../ok/0047_minus_in_inner_pattern.rast       |  646 +--
 .../parser/ok/0047_minus_in_inner_pattern.txt |  323 --
 .../parser/ok/0048_compound_assignment.rast   |  402 +-
 .../parser/ok/0048_compound_assignment.txt    |  201 -
 .../test_data/parser/ok/0049_async_block.rast |   72 +-
 .../test_data/parser/ok/0049_async_block.txt  |   36 -
 .../ok/0050_async_block_as_argument.rast      |  184 +-
 .../ok/0050_async_block_as_argument.txt       |   92 -
 .../parser/ok/0051_parameter_attrs.rast       | 1096 ++--
 .../parser/ok/0051_parameter_attrs.txt        |  548 --
 .../parser/ok/0052_for_range_block.rast       |  162 +-
 .../parser/ok/0052_for_range_block.txt        |   81 -
 .../0053_outer_attribute_on_macro_rules.rast  |   74 +-
 .../0053_outer_attribute_on_macro_rules.txt   |   37 -
 .../parser/ok/0054_qual_path_in_type_arg.rast |  252 +-
 .../parser/ok/0054_qual_path_in_type_arg.txt  |  126 -
 .../test_data/parser/ok/0055_dot_dot_dot.rast |  100 +-
 .../test_data/parser/ok/0055_dot_dot_dot.txt  |   50 -
 .../test_data/parser/ok/0056_neq_in_type.rast |  131 +-
 .../test_data/parser/ok/0056_neq_in_type.txt  |   65 -
 .../parser/ok/0057_loop_in_call.rast          |  118 +-
 .../test_data/parser/ok/0057_loop_in_call.txt |   59 -
 .../parser/ok/0058_unary_expr_precedence.rast |  194 +-
 .../parser/ok/0058_unary_expr_precedence.txt  |   97 -
 .../parser/ok/0059_loops_in_parens.rast       |  201 +-
 .../parser/ok/0059_loops_in_parens.txt        |  100 -
 .../test_data/parser/ok/0060_as_range.rast    |  112 +-
 .../test_data/parser/ok/0060_as_range.txt     |   56 -
 .../parser/ok/0061_match_full_range.rast      |   54 +-
 .../parser/ok/0061_match_full_range.txt       |   27 -
 .../test_data/parser/ok/0062_macro_2.0.rast   |  354 +-
 .../test_data/parser/ok/0062_macro_2.0.txt    |  177 -
 .../parser/ok/0063_trait_fn_patterns.rast     |  396 +-
 .../parser/ok/0063_trait_fn_patterns.txt      |  198 -
 .../parser/ok/0063_variadic_fun.rast          |  268 +-
 .../test_data/parser/ok/0063_variadic_fun.txt |  134 -
 .../parser/ok/0064_impl_fn_params.rast        |  332 +-
 .../parser/ok/0064_impl_fn_params.txt         |  166 -
 .../parser/ok/0065_comment_newline.rast       |   34 +-
 .../parser/ok/0065_comment_newline.txt        |   17 -
 .../ok/0065_plus_after_fn_trait_bound.rast    |  122 +-
 .../ok/0065_plus_after_fn_trait_bound.txt     |   61 -
 .../parser/ok/0066_default_modifier.rast      |  444 +-
 .../parser/ok/0066_default_modifier.txt       |  222 -
 .../parser/ok/0067_where_for_pred.rast        |  826 +--
 .../parser/ok/0067_where_for_pred.txt         |  413 --
 .../parser/ok/0068_item_modifiers.rast        |  476 +-
 .../parser/ok/0068_item_modifiers.txt         |  238 -
 .../parser/ok/0069_multi_trait_object.rast    |  408 +-
 .../parser/ok/0069_multi_trait_object.txt     |  204 -
 .../parser/ok/0070_expr_attr_placement.rast   |  118 +-
 .../parser/ok/0070_expr_attr_placement.txt    |   59 -
 .../parser/ok/0071_stmt_attr_placement.rast   |  142 +-
 .../parser/ok/0071_stmt_attr_placement.txt    |   71 -
 ...txt => 0072_destructuring_assignment.rast} |    0
 715 files changed, 24858 insertions(+), 48830 deletions(-)
 create mode 100644 crates/parser/test_data/lexer/err/empty_exponent.rast
 create mode 100644 crates/parser/test_data/lexer/err/empty_int.rast
 create mode 100644 crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_block_comment_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_block_comment_with_content.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_with_ascii_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_with_ferris.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_double_quote.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_n.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_with_space.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_string_with_unicode_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_with_ascii_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_with_ferris.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_with_slash.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_with_slash_n.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_with_slash_single_quote.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_with_space.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_byte_with_unicode_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_with_ascii_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_with_ferris.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_with_slash.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_with_slash_n.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_with_slash_single_quote.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_with_space.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_char_with_unicode_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_nested_block_comment_entirely.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_nested_block_comment_partially.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_byte_string_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ascii_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ferris.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash_n.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_space.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_unicode_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_string_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_string_with_ascii_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_string_with_ferris.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash_n.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_string_with_space.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_raw_string_with_unicode_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_with_ascii_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_with_ferris.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_with_slash.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_with_slash_double_quote.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_with_slash_n.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_with_space.rast
 create mode 100644 crates/parser/test_data/lexer/err/unclosed_string_with_unicode_escape.rast
 create mode 100644 crates/parser/test_data/lexer/err/unstarted_raw_byte_string_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unstarted_raw_byte_string_with_ascii.rast
 create mode 100644 crates/parser/test_data/lexer/err/unstarted_raw_string_at_eof.rast
 create mode 100644 crates/parser/test_data/lexer/err/unstarted_raw_string_with_ascii.rast
 create mode 100644 crates/parser/test_data/lexer/ok/block_comment.rast
 create mode 100644 crates/parser/test_data/lexer/ok/byte_strings.rast
 create mode 100644 crates/parser/test_data/lexer/ok/chars.rast
 create mode 100644 crates/parser/test_data/lexer/ok/hello.rast
 create mode 100644 crates/parser/test_data/lexer/ok/ident.rast
 create mode 100644 crates/parser/test_data/lexer/ok/keywords.rast
 create mode 100644 crates/parser/test_data/lexer/ok/lifetimes.rast
 create mode 100644 crates/parser/test_data/lexer/ok/numbers.rast
 create mode 100644 crates/parser/test_data/lexer/ok/raw_ident.rast
 create mode 100644 crates/parser/test_data/lexer/ok/raw_strings.rast
 create mode 100644 crates/parser/test_data/lexer/ok/single_line_comments.rast
 create mode 100644 crates/parser/test_data/lexer/ok/strings.rast
 create mode 100644 crates/parser/test_data/lexer/ok/symbols.rast
 create mode 100644 crates/parser/test_data/lexer/ok/whitespace.rast
 delete mode 100644 crates/parser/test_data/parser/err/0000_struct_field_missing_comma.txt
 delete mode 100644 crates/parser/test_data/parser/err/0001_item_recovery_in_file.txt
 delete mode 100644 crates/parser/test_data/parser/err/0002_duplicate_shebang.txt
 delete mode 100644 crates/parser/test_data/parser/err/0003_C++_semicolon.txt
 delete mode 100644 crates/parser/test_data/parser/err/0004_use_path_bad_segment.txt
 delete mode 100644 crates/parser/test_data/parser/err/0005_attribute_recover.txt
 delete mode 100644 crates/parser/test_data/parser/err/0006_named_field_recovery.txt
 delete mode 100644 crates/parser/test_data/parser/err/0007_stray_curly_in_file.txt
 delete mode 100644 crates/parser/test_data/parser/err/0008_item_block_recovery.txt
 delete mode 100644 crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.txt
 delete mode 100644 crates/parser/test_data/parser/err/0010_unsafe_lambda_block.txt
 delete mode 100644 crates/parser/test_data/parser/err/0011_extern_struct.txt
 delete mode 100644 crates/parser/test_data/parser/err/0013_invalid_type.txt
 delete mode 100644 crates/parser/test_data/parser/err/0014_where_no_bounds.txt
 delete mode 100644 crates/parser/test_data/parser/err/0015_curly_in_params.txt
 delete mode 100644 crates/parser/test_data/parser/err/0016_missing_semi.txt
 delete mode 100644 crates/parser/test_data/parser/err/0017_incomplete_binexpr.txt
 delete mode 100644 crates/parser/test_data/parser/err/0018_incomplete_fn.txt
 delete mode 100644 crates/parser/test_data/parser/err/0019_let_recover.txt
 delete mode 100644 crates/parser/test_data/parser/err/0020_fn_recover.txt
 delete mode 100644 crates/parser/test_data/parser/err/0021_incomplete_param.txt
 delete mode 100644 crates/parser/test_data/parser/err/0022_bad_exprs.txt
 delete mode 100644 crates/parser/test_data/parser/err/0023_mismatched_paren.txt
 delete mode 100644 crates/parser/test_data/parser/err/0024_many_type_parens.txt
 rename crates/parser/test_data/parser/err/{0025_nope.txt => 0025_nope.rast} (100%)
 delete mode 100644 crates/parser/test_data/parser/err/0026_imp_recovery.txt
 delete mode 100644 crates/parser/test_data/parser/err/0027_incomplere_where_for.txt
 delete mode 100644 crates/parser/test_data/parser/err/0029_field_completion.txt
 delete mode 100644 crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/err/0034_bad_box_pattern.txt
 delete mode 100644 crates/parser/test_data/parser/err/0035_use_recover.txt
 delete mode 100644 crates/parser/test_data/parser/err/0036_partial_use.txt
 delete mode 100644 crates/parser/test_data/parser/err/0039_lambda_recovery.txt
 delete mode 100644 crates/parser/test_data/parser/err/0042_weird_blocks.txt
 delete mode 100644 crates/parser/test_data/parser/err/0043_unexpected_for_type.txt
 delete mode 100644 crates/parser/test_data/parser/err/0044_item_modifiers.txt
 delete mode 100644 crates/parser/test_data/parser/err/0047_repated_extern_modifier.txt
 delete mode 100644 crates/parser/test_data/parser/err/0048_double_fish.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0004_impl_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0008_pub_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0013_anonymous_static.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0014_struct_field_recover.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0015_empty_segment.txt
 delete mode 100644 crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0002_use_tree_list.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0003_where_pred_for.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0005_function_type_params.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0006_self_param.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0008_path_part.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0009_loop_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0010_extern_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0011_field_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0014_never_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0015_continue_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0017_array_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0018_arb_self_types.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0019_unary_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0022_crate_visibility.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0023_placeholder_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0024_slice_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0025_slice_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0027_ref_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0029_cast_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0030_let_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0031_while_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0033_reference_type;.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0034_break_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0037_qual_paths.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0038_full_range_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0041_trait_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0042_call_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0044_block_items.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0050_fn_decl.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0051_unit_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0052_path_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0053_path_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0055_literal_pattern.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0056_where_clause.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0058_range_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0060_extern_crate.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0061_record_lit.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0062_mod_contents.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0064_if_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0066_match_arm.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0067_crate_path.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0071_match_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0072_return_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0075_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0076_function_where_clause.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0077_try_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0078_type_alias.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0079_impl_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0080_postfix_range.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0081_for_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0082_ref_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0084_paren_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0085_expr_literals.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0086_function_ret_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0090_type_param_default.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0093_index_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0099_param_list.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0100_for_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0103_array_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0106_lambda_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0107_method_call_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0108_tuple_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0109_label.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0111_tuple_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0112_bind_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0117_macro_call_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0118_match_guard.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0129_marco_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0130_let_stmt.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0130_try_block_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0131_existential_type.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0132_box_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0137_await_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0138_expression_after_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0142_for_range_from.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0143_box_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0145_record_pat_field.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0146_as_precedence.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0147_const_param.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0147_macro_def.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0150_array_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0150_impl_type_params.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0151_fn.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0151_trait_alias.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0155_closure_params.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0156_const_block_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0156_fn_def_param.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0156_or_pattern.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0157_const_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0159_yield_expr.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0161_impl_item_const.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0161_labeled_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0162_unsafe_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0163_default_async_fn.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0164_default_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0169_mod_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0170_tuple_struct.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0171_struct_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0172_const_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0172_record_field_list.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0173_anonymous_const.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0173_union_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0174_unit_struct.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0174_use_tree_star.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0177_use_tree.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0177_use_tree_path.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0181_use_item.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0182_lifetime_param.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0183_const_arg_block.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0183_type_param.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0184_const_arg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0184_generic_param_list.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0188_const_arg_path.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0190_generic_arg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0194_let_else.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.txt
 delete mode 100644 crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.txt
 rename crates/parser/test_data/parser/inline/ok/{0197_destructuring_assignment_struct_rest_pattern.txt => 0197_destructuring_assignment_struct_rest_pattern.rast} (100%)
 rename crates/parser/test_data/parser/inline/ok/{0198_destructuring_assignment_wildcard_pat.txt => 0198_destructuring_assignment_wildcard_pat.rast} (100%)
 delete mode 100644 crates/parser/test_data/parser/ok/0000_empty.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0001_struct_item.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0002_struct_item_field.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0004_file_shebang.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0005_fn_item.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0006_inner_attributes.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0007_extern_crate.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0008_mod_item.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0009_use_item.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0010_use_path_segments.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0011_outer_attribute.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0012_visibility.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0013_use_path_self_super.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0014_use_tree.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0015_use_tree.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0016_struct_flavors.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0017_attr_trailing_comma.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0018_struct_type_params.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0019_enums.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0020_type_param_bounds.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0022_empty_extern_block.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0023_static_items.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0024_const_item.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0025_extern_fn_in_block.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0026_const_fn_in_block.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0028_operator_binding_power.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0029_range_forms.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0030_string_suffixes.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0030_traits.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0031_extern.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0032_where_for.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0033_label_break.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0034_crate_path_in_call.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0035_weird_exprs.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0036_fully_qualified.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0037_mod.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0038_where_pred_type.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0039_raw_fn_item.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0040_raw_struct_item_field.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0041_raw_keywords.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0042_ufcs_call_list.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0043_complex_assignment.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0044_let_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0045_block_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0046_extern_inner_attributes.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0048_compound_assignment.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0049_async_block.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0050_async_block_as_argument.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0051_parameter_attrs.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0052_for_range_block.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0055_dot_dot_dot.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0056_neq_in_type.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0057_loop_in_call.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0058_unary_expr_precedence.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0059_loops_in_parens.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0060_as_range.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0061_match_full_range.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0062_macro_2.0.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0063_trait_fn_patterns.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0063_variadic_fun.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0064_impl_fn_params.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0065_comment_newline.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0066_default_modifier.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0067_where_for_pred.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0068_item_modifiers.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0069_multi_trait_object.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0070_expr_attr_placement.txt
 delete mode 100644 crates/parser/test_data/parser/ok/0071_stmt_attr_placement.txt
 rename crates/parser/test_data/parser/ok/{0072_destructuring_assignment.txt => 0072_destructuring_assignment.rast} (100%)

diff --git a/crates/parser/src/tests.rs b/crates/parser/src/tests.rs
index cb25abdfeae..735c0b3e402 100644
--- a/crates/parser/src/tests.rs
+++ b/crates/parser/src/tests.rs
@@ -16,7 +16,7 @@ use crate::{LexedStr, TopEntryPoint};
 fn lex_ok() {
     for case in TestCase::list("lexer/ok") {
         let actual = lex(&case.text);
-        expect_file![case.txt].assert_eq(&actual)
+        expect_file![case.rast].assert_eq(&actual)
     }
 }
 
@@ -24,7 +24,7 @@ fn lex_ok() {
 fn lex_err() {
     for case in TestCase::list("lexer/err") {
         let actual = lex(&case.text);
-        expect_file![case.txt].assert_eq(&actual)
+        expect_file![case.rast].assert_eq(&actual)
     }
 }
 
@@ -48,7 +48,7 @@ fn parse_ok() {
     for case in TestCase::list("parser/ok") {
         let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text);
         assert!(!errors, "errors in an OK file {}:\n{}", case.rs.display(), actual);
-        expect_file![case.txt].assert_eq(&actual);
+        expect_file![case.rast].assert_eq(&actual);
     }
 }
 
@@ -57,7 +57,7 @@ fn parse_inline_ok() {
     for case in TestCase::list("parser/inline/ok") {
         let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text);
         assert!(!errors, "errors in an OK file {}:\n{}", case.rs.display(), actual);
-        expect_file![case.txt].assert_eq(&actual);
+        expect_file![case.rast].assert_eq(&actual);
     }
 }
 
@@ -66,7 +66,7 @@ fn parse_err() {
     for case in TestCase::list("parser/err") {
         let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text);
         assert!(errors, "no errors in an ERR file {}:\n{}", case.rs.display(), actual);
-        expect_file![case.txt].assert_eq(&actual)
+        expect_file![case.rast].assert_eq(&actual)
     }
 }
 
@@ -75,7 +75,7 @@ fn parse_inline_err() {
     for case in TestCase::list("parser/inline/err") {
         let (actual, errors) = parse(TopEntryPoint::SourceFile, &case.text);
         assert!(errors, "no errors in an ERR file {}:\n{}", case.rs.display(), actual);
-        expect_file![case.txt].assert_eq(&actual)
+        expect_file![case.rast].assert_eq(&actual)
     }
 }
 
@@ -137,7 +137,7 @@ fn parse(entry: TopEntryPoint, text: &str) -> (String, bool) {
 #[derive(PartialEq, Eq, PartialOrd, Ord)]
 struct TestCase {
     rs: PathBuf,
-    txt: PathBuf,
+    rast: PathBuf,
     text: String,
 }
 
@@ -155,9 +155,9 @@ impl TestCase {
             let path = file.path();
             if path.extension().unwrap_or_default() == "rs" {
                 let rs = path;
-                let txt = rs.with_extension("txt");
+                let rast = rs.with_extension("rast");
                 let text = fs::read_to_string(&rs).unwrap();
-                res.push(TestCase { rs, txt, text });
+                res.push(TestCase { rs, rast, text });
             }
         }
         res.sort();
diff --git a/crates/parser/test_data/lexer/err/empty_exponent.rast b/crates/parser/test_data/lexer/err/empty_exponent.rast
new file mode 100644
index 00000000000..af03d73ced9
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/empty_exponent.rast
@@ -0,0 +1,48 @@
+FLOAT_NUMBER "0e" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "0E" error: Missing digits after the exponent symbol
+WHITESPACE "\n\n"
+FLOAT_NUMBER "42e+" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42e-" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42E+" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42E-" error: Missing digits after the exponent symbol
+WHITESPACE "\n\n"
+INT_NUMBER "42"
+DOT "."
+IDENT "e"
+PLUS "+"
+WHITESPACE "\n"
+INT_NUMBER "42"
+DOT "."
+IDENT "e"
+MINUS "-"
+WHITESPACE "\n"
+INT_NUMBER "42"
+DOT "."
+IDENT "E"
+PLUS "+"
+WHITESPACE "\n"
+INT_NUMBER "42"
+DOT "."
+IDENT "E"
+MINUS "-"
+WHITESPACE "\n\n"
+FLOAT_NUMBER "42.2e+" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42.2e-" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42.2E+" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42.2E-" error: Missing digits after the exponent symbol
+WHITESPACE "\n\n"
+FLOAT_NUMBER "42.2e+f32" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42.2e-f32" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42.2E+f32" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
+FLOAT_NUMBER "42.2E-f32" error: Missing digits after the exponent symbol
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/err/empty_int.rast b/crates/parser/test_data/lexer/err/empty_int.rast
new file mode 100644
index 00000000000..7f7194f4522
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/empty_int.rast
@@ -0,0 +1,26 @@
+INT_NUMBER "0b" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0o" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0x" error: Missing digits after the integer base prefix
+WHITESPACE "\n\n"
+INT_NUMBER "0b_" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0o_" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0x_" error: Missing digits after the integer base prefix
+WHITESPACE "\n\n"
+INT_NUMBER "0bnoDigit" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0onoDigit" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0xnoDigit" error: Missing digits after the integer base prefix
+WHITESPACE "\n\n"
+INT_NUMBER "0xG" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0xg" error: Missing digits after the integer base prefix
+WHITESPACE "\n\n"
+INT_NUMBER "0x_g" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
+INT_NUMBER "0x_G" error: Missing digits after the integer base prefix
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.rast b/crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.rast
new file mode 100644
index 00000000000..e919bf2a4ae
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/lifetime_starts_with_a_number.rast
@@ -0,0 +1,4 @@
+LIFETIME_IDENT "'1" error: Lifetime name cannot start with a number
+WHITESPACE "\n"
+LIFETIME_IDENT "'1lifetime" error: Lifetime name cannot start with a number
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/err/unclosed_block_comment_at_eof.rast b/crates/parser/test_data/lexer/err/unclosed_block_comment_at_eof.rast
new file mode 100644
index 00000000000..7d2c3297621
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_block_comment_at_eof.rast
@@ -0,0 +1 @@
+COMMENT "/*" error: Missing trailing `*/` symbols to terminate the block comment
diff --git a/crates/parser/test_data/lexer/err/unclosed_block_comment_with_content.rast b/crates/parser/test_data/lexer/err/unclosed_block_comment_with_content.rast
new file mode 100644
index 00000000000..227a20660f7
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_block_comment_with_content.rast
@@ -0,0 +1 @@
+COMMENT "/* comment\n" error: Missing trailing `*/` symbols to terminate the block comment
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_at_eof.rast b/crates/parser/test_data/lexer/err/unclosed_byte_at_eof.rast
new file mode 100644
index 00000000000..36944dbb2de
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_at_eof.rast
@@ -0,0 +1 @@
+BYTE "b'" error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_at_eof.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_at_eof.rast
new file mode 100644
index 00000000000..534a3cadcc9
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_at_eof.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\"" error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_with_ascii_escape.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_ascii_escape.rast
new file mode 100644
index 00000000000..03f61de9a84
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_ascii_escape.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\"\\x7f" error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_with_ferris.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_ferris.rast
new file mode 100644
index 00000000000..e11d49d1ee1
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_ferris.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\"🦀" error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash.rast
new file mode 100644
index 00000000000..4e374b1206c
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\"\\" error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_double_quote.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_double_quote.rast
new file mode 100644
index 00000000000..ee199758601
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_double_quote.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\"\\\"" error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_n.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_n.rast
new file mode 100644
index 00000000000..b109d8629c9
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_slash_n.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\"\\n" error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_with_space.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_space.rast
new file mode 100644
index 00000000000..eaca94fa41e
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_space.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\" " error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_string_with_unicode_escape.rast b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_unicode_escape.rast
new file mode 100644
index 00000000000..3b79f48bcd2
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_string_with_unicode_escape.rast
@@ -0,0 +1 @@
+BYTE_STRING "b\"\\u{20AA}" error: Missing trailing `"` symbol to terminate the byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_with_ascii_escape.rast b/crates/parser/test_data/lexer/err/unclosed_byte_with_ascii_escape.rast
new file mode 100644
index 00000000000..5525376f450
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_with_ascii_escape.rast
@@ -0,0 +1 @@
+BYTE "b'\\x7f" error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_with_ferris.rast b/crates/parser/test_data/lexer/err/unclosed_byte_with_ferris.rast
new file mode 100644
index 00000000000..e7a8be4f6e0
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_with_ferris.rast
@@ -0,0 +1 @@
+BYTE "b'🦀" error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_with_slash.rast b/crates/parser/test_data/lexer/err/unclosed_byte_with_slash.rast
new file mode 100644
index 00000000000..d9937135a9b
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_with_slash.rast
@@ -0,0 +1 @@
+BYTE "b'\\" error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_with_slash_n.rast b/crates/parser/test_data/lexer/err/unclosed_byte_with_slash_n.rast
new file mode 100644
index 00000000000..c408cdb2b57
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_with_slash_n.rast
@@ -0,0 +1 @@
+BYTE "b'\\n" error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_with_slash_single_quote.rast b/crates/parser/test_data/lexer/err/unclosed_byte_with_slash_single_quote.rast
new file mode 100644
index 00000000000..b331f956074
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_with_slash_single_quote.rast
@@ -0,0 +1 @@
+BYTE "b'\\'" error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_with_space.rast b/crates/parser/test_data/lexer/err/unclosed_byte_with_space.rast
new file mode 100644
index 00000000000..80c0e1c00a1
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_with_space.rast
@@ -0,0 +1 @@
+BYTE "b' " error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_byte_with_unicode_escape.rast b/crates/parser/test_data/lexer/err/unclosed_byte_with_unicode_escape.rast
new file mode 100644
index 00000000000..e1c3dc141e8
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_byte_with_unicode_escape.rast
@@ -0,0 +1 @@
+BYTE "b'\\u{20AA}" error: Missing trailing `'` symbol to terminate the byte literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_at_eof.rast b/crates/parser/test_data/lexer/err/unclosed_char_at_eof.rast
new file mode 100644
index 00000000000..218c7a2d766
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_at_eof.rast
@@ -0,0 +1 @@
+CHAR "'" error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_with_ascii_escape.rast b/crates/parser/test_data/lexer/err/unclosed_char_with_ascii_escape.rast
new file mode 100644
index 00000000000..a0d8e1b83a0
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_with_ascii_escape.rast
@@ -0,0 +1 @@
+CHAR "'\\x7f" error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_with_ferris.rast b/crates/parser/test_data/lexer/err/unclosed_char_with_ferris.rast
new file mode 100644
index 00000000000..56f19cce078
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_with_ferris.rast
@@ -0,0 +1 @@
+CHAR "'🦀" error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_with_slash.rast b/crates/parser/test_data/lexer/err/unclosed_char_with_slash.rast
new file mode 100644
index 00000000000..cfa0e0752aa
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_with_slash.rast
@@ -0,0 +1 @@
+CHAR "'\\" error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_with_slash_n.rast b/crates/parser/test_data/lexer/err/unclosed_char_with_slash_n.rast
new file mode 100644
index 00000000000..6a42a4e22b9
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_with_slash_n.rast
@@ -0,0 +1 @@
+CHAR "'\\n" error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_with_slash_single_quote.rast b/crates/parser/test_data/lexer/err/unclosed_char_with_slash_single_quote.rast
new file mode 100644
index 00000000000..1275f6aa857
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_with_slash_single_quote.rast
@@ -0,0 +1 @@
+CHAR "'\\'" error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_with_space.rast b/crates/parser/test_data/lexer/err/unclosed_char_with_space.rast
new file mode 100644
index 00000000000..746c425c4e0
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_with_space.rast
@@ -0,0 +1 @@
+CHAR "' " error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_char_with_unicode_escape.rast b/crates/parser/test_data/lexer/err/unclosed_char_with_unicode_escape.rast
new file mode 100644
index 00000000000..9abd5909821
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_char_with_unicode_escape.rast
@@ -0,0 +1 @@
+CHAR "'\\u{20AA}" error: Missing trailing `'` symbol to terminate the character literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_nested_block_comment_entirely.rast b/crates/parser/test_data/lexer/err/unclosed_nested_block_comment_entirely.rast
new file mode 100644
index 00000000000..15ce8905a99
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_nested_block_comment_entirely.rast
@@ -0,0 +1 @@
+COMMENT "/* /* /*\n" error: Missing trailing `*/` symbols to terminate the block comment
diff --git a/crates/parser/test_data/lexer/err/unclosed_nested_block_comment_partially.rast b/crates/parser/test_data/lexer/err/unclosed_nested_block_comment_partially.rast
new file mode 100644
index 00000000000..e9b74ee7f82
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_nested_block_comment_partially.rast
@@ -0,0 +1 @@
+COMMENT "/** /*! /* comment */ */\n" error: Missing trailing `*/` symbols to terminate the block comment
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_at_eof.rast b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_at_eof.rast
new file mode 100644
index 00000000000..6ec1780c30b
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_at_eof.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##\"" error: Missing trailing `"` with `#` symbols to terminate the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ascii_escape.rast b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ascii_escape.rast
new file mode 100644
index 00000000000..d65f1bb2ff0
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ascii_escape.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##\"\\x7f" error: Missing trailing `"` with `#` symbols to terminate the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ferris.rast b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ferris.rast
new file mode 100644
index 00000000000..0f9e0a1657a
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_ferris.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##\"🦀" error: Missing trailing `"` with `#` symbols to terminate the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash.rast b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash.rast
new file mode 100644
index 00000000000..202dcd2d43e
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##\"\\" error: Missing trailing `"` with `#` symbols to terminate the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash_n.rast b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash_n.rast
new file mode 100644
index 00000000000..d45485b529e
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_slash_n.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##\"\\n" error: Missing trailing `"` with `#` symbols to terminate the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_space.rast b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_space.rast
new file mode 100644
index 00000000000..1bfabbc3ab6
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_space.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##\" " error: Missing trailing `"` with `#` symbols to terminate the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_unicode_escape.rast b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_unicode_escape.rast
new file mode 100644
index 00000000000..104ab8aaeef
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_byte_string_with_unicode_escape.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##\"\\u{20AA}" error: Missing trailing `"` with `#` symbols to terminate the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_string_at_eof.rast b/crates/parser/test_data/lexer/err/unclosed_raw_string_at_eof.rast
new file mode 100644
index 00000000000..71b20fd19db
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_string_at_eof.rast
@@ -0,0 +1 @@
+STRING "r##\"" error: Missing trailing `"` with `#` symbols to terminate the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_string_with_ascii_escape.rast b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_ascii_escape.rast
new file mode 100644
index 00000000000..dc106dd24a1
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_ascii_escape.rast
@@ -0,0 +1 @@
+STRING "r##\"\\x7f" error: Missing trailing `"` with `#` symbols to terminate the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_string_with_ferris.rast b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_ferris.rast
new file mode 100644
index 00000000000..30ee029f656
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_ferris.rast
@@ -0,0 +1 @@
+STRING "r##\"🦀" error: Missing trailing `"` with `#` symbols to terminate the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash.rast b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash.rast
new file mode 100644
index 00000000000..8a6f6cc4366
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash.rast
@@ -0,0 +1 @@
+STRING "r##\"\\" error: Missing trailing `"` with `#` symbols to terminate the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash_n.rast b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash_n.rast
new file mode 100644
index 00000000000..f46eff2516a
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_slash_n.rast
@@ -0,0 +1 @@
+STRING "r##\"\\n" error: Missing trailing `"` with `#` symbols to terminate the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_string_with_space.rast b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_space.rast
new file mode 100644
index 00000000000..49b6afea45a
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_space.rast
@@ -0,0 +1 @@
+STRING "r##\" " error: Missing trailing `"` with `#` symbols to terminate the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_raw_string_with_unicode_escape.rast b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_unicode_escape.rast
new file mode 100644
index 00000000000..d10d6d8e8c2
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_raw_string_with_unicode_escape.rast
@@ -0,0 +1 @@
+STRING "r##\"\\u{20AA}" error: Missing trailing `"` with `#` symbols to terminate the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_at_eof.rast b/crates/parser/test_data/lexer/err/unclosed_string_at_eof.rast
new file mode 100644
index 00000000000..3b89ce0ca1c
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_at_eof.rast
@@ -0,0 +1 @@
+STRING "\"" error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_with_ascii_escape.rast b/crates/parser/test_data/lexer/err/unclosed_string_with_ascii_escape.rast
new file mode 100644
index 00000000000..6694cf17a6c
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_with_ascii_escape.rast
@@ -0,0 +1 @@
+STRING "\"\\x7f" error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_with_ferris.rast b/crates/parser/test_data/lexer/err/unclosed_string_with_ferris.rast
new file mode 100644
index 00000000000..5f4501c18e5
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_with_ferris.rast
@@ -0,0 +1 @@
+STRING "\"🦀" error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_with_slash.rast b/crates/parser/test_data/lexer/err/unclosed_string_with_slash.rast
new file mode 100644
index 00000000000..a8ac565ac84
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_with_slash.rast
@@ -0,0 +1 @@
+STRING "\"\\" error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_with_slash_double_quote.rast b/crates/parser/test_data/lexer/err/unclosed_string_with_slash_double_quote.rast
new file mode 100644
index 00000000000..919183b9193
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_with_slash_double_quote.rast
@@ -0,0 +1 @@
+STRING "\"\\\"" error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_with_slash_n.rast b/crates/parser/test_data/lexer/err/unclosed_string_with_slash_n.rast
new file mode 100644
index 00000000000..39e288af965
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_with_slash_n.rast
@@ -0,0 +1 @@
+STRING "\"\\n" error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_with_space.rast b/crates/parser/test_data/lexer/err/unclosed_string_with_space.rast
new file mode 100644
index 00000000000..dcff94d7ed3
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_with_space.rast
@@ -0,0 +1 @@
+STRING "\" " error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unclosed_string_with_unicode_escape.rast b/crates/parser/test_data/lexer/err/unclosed_string_with_unicode_escape.rast
new file mode 100644
index 00000000000..ac232b530da
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unclosed_string_with_unicode_escape.rast
@@ -0,0 +1 @@
+STRING "\"\\u{20AA}" error: Missing trailing `"` symbol to terminate the string literal
diff --git a/crates/parser/test_data/lexer/err/unstarted_raw_byte_string_at_eof.rast b/crates/parser/test_data/lexer/err/unstarted_raw_byte_string_at_eof.rast
new file mode 100644
index 00000000000..cf942c92f3b
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unstarted_raw_byte_string_at_eof.rast
@@ -0,0 +1 @@
+BYTE_STRING "br##" error: Missing `"` symbol after `#` symbols to begin the raw byte string literal
diff --git a/crates/parser/test_data/lexer/err/unstarted_raw_byte_string_with_ascii.rast b/crates/parser/test_data/lexer/err/unstarted_raw_byte_string_with_ascii.rast
new file mode 100644
index 00000000000..042769c2756
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unstarted_raw_byte_string_with_ascii.rast
@@ -0,0 +1,9 @@
+BYTE_STRING "br## " error: Missing `"` symbol after `#` symbols to begin the raw byte string literal
+IDENT "I"
+WHITESPACE " "
+IDENT "lack"
+WHITESPACE " "
+IDENT "a"
+WHITESPACE " "
+IDENT "quote"
+BANG "!"
diff --git a/crates/parser/test_data/lexer/err/unstarted_raw_string_at_eof.rast b/crates/parser/test_data/lexer/err/unstarted_raw_string_at_eof.rast
new file mode 100644
index 00000000000..2f7c7529a95
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unstarted_raw_string_at_eof.rast
@@ -0,0 +1 @@
+STRING "r##" error: Missing `"` symbol after `#` symbols to begin the raw string literal
diff --git a/crates/parser/test_data/lexer/err/unstarted_raw_string_with_ascii.rast b/crates/parser/test_data/lexer/err/unstarted_raw_string_with_ascii.rast
new file mode 100644
index 00000000000..4a06b0abe74
--- /dev/null
+++ b/crates/parser/test_data/lexer/err/unstarted_raw_string_with_ascii.rast
@@ -0,0 +1,9 @@
+STRING "r## " error: Missing `"` symbol after `#` symbols to begin the raw string literal
+IDENT "I"
+WHITESPACE " "
+IDENT "lack"
+WHITESPACE " "
+IDENT "a"
+WHITESPACE " "
+IDENT "quote"
+BANG "!"
diff --git a/crates/parser/test_data/lexer/ok/block_comment.rast b/crates/parser/test_data/lexer/ok/block_comment.rast
new file mode 100644
index 00000000000..18bb5cad87f
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/block_comment.rast
@@ -0,0 +1,6 @@
+COMMENT "/* */"
+WHITESPACE "\n"
+COMMENT "/**/"
+WHITESPACE "\n"
+COMMENT "/* /* */ */"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/byte_strings.rast b/crates/parser/test_data/lexer/ok/byte_strings.rast
new file mode 100644
index 00000000000..c848ac368e4
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/byte_strings.rast
@@ -0,0 +1,22 @@
+BYTE "b''"
+WHITESPACE " "
+BYTE "b'x'"
+WHITESPACE " "
+BYTE_STRING "b\"foo\""
+WHITESPACE " "
+BYTE_STRING "br\"\""
+WHITESPACE "\n"
+BYTE "b''suf"
+WHITESPACE " "
+BYTE_STRING "b\"\"ix"
+WHITESPACE " "
+BYTE_STRING "br\"\"br"
+WHITESPACE "\n"
+BYTE "b'\\n'"
+WHITESPACE " "
+BYTE "b'\\\\'"
+WHITESPACE " "
+BYTE "b'\\''"
+WHITESPACE " "
+BYTE "b'hello'"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/chars.rast b/crates/parser/test_data/lexer/ok/chars.rast
new file mode 100644
index 00000000000..66e58cc298f
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/chars.rast
@@ -0,0 +1,16 @@
+CHAR "'x'"
+WHITESPACE " "
+CHAR "' '"
+WHITESPACE " "
+CHAR "'0'"
+WHITESPACE " "
+CHAR "'hello'"
+WHITESPACE " "
+CHAR "'\\x7f'"
+WHITESPACE " "
+CHAR "'\\n'"
+WHITESPACE " "
+CHAR "'\\\\'"
+WHITESPACE " "
+CHAR "'\\''"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/hello.rast b/crates/parser/test_data/lexer/ok/hello.rast
new file mode 100644
index 00000000000..7f5ce9de1b6
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/hello.rast
@@ -0,0 +1,3 @@
+IDENT "hello"
+WHITESPACE " "
+IDENT "world"
diff --git a/crates/parser/test_data/lexer/ok/ident.rast b/crates/parser/test_data/lexer/ok/ident.rast
new file mode 100644
index 00000000000..5689644c07e
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/ident.rast
@@ -0,0 +1,14 @@
+IDENT "foo"
+WHITESPACE " "
+IDENT "foo_"
+WHITESPACE " "
+IDENT "_foo"
+WHITESPACE " "
+UNDERSCORE "_"
+WHITESPACE " "
+IDENT "__"
+WHITESPACE " "
+IDENT "x"
+WHITESPACE " "
+IDENT "привет"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/keywords.rast b/crates/parser/test_data/lexer/ok/keywords.rast
new file mode 100644
index 00000000000..e19b1399aa1
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/keywords.rast
@@ -0,0 +1,64 @@
+ASYNC_KW "async"
+WHITESPACE " "
+FN_KW "fn"
+WHITESPACE " "
+USE_KW "use"
+WHITESPACE " "
+STRUCT_KW "struct"
+WHITESPACE " "
+TRAIT_KW "trait"
+WHITESPACE " "
+ENUM_KW "enum"
+WHITESPACE " "
+IMPL_KW "impl"
+WHITESPACE " "
+TRUE_KW "true"
+WHITESPACE " "
+FALSE_KW "false"
+WHITESPACE " "
+AS_KW "as"
+WHITESPACE " "
+EXTERN_KW "extern"
+WHITESPACE " "
+CRATE_KW "crate"
+WHITESPACE "\n"
+MOD_KW "mod"
+WHITESPACE " "
+PUB_KW "pub"
+WHITESPACE " "
+SELF_KW "self"
+WHITESPACE " "
+SUPER_KW "super"
+WHITESPACE " "
+IN_KW "in"
+WHITESPACE " "
+WHERE_KW "where"
+WHITESPACE " "
+FOR_KW "for"
+WHITESPACE " "
+LOOP_KW "loop"
+WHITESPACE " "
+WHILE_KW "while"
+WHITESPACE " "
+IF_KW "if"
+WHITESPACE " "
+MATCH_KW "match"
+WHITESPACE " "
+CONST_KW "const"
+WHITESPACE "\n"
+STATIC_KW "static"
+WHITESPACE " "
+MUT_KW "mut"
+WHITESPACE " "
+TYPE_KW "type"
+WHITESPACE " "
+REF_KW "ref"
+WHITESPACE " "
+LET_KW "let"
+WHITESPACE " "
+ELSE_KW "else"
+WHITESPACE " "
+MOVE_KW "move"
+WHITESPACE " "
+RETURN_KW "return"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/lifetimes.rast b/crates/parser/test_data/lexer/ok/lifetimes.rast
new file mode 100644
index 00000000000..eeb1e95414e
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/lifetimes.rast
@@ -0,0 +1,8 @@
+LIFETIME_IDENT "'a"
+WHITESPACE " "
+LIFETIME_IDENT "'foo"
+WHITESPACE " "
+LIFETIME_IDENT "'foo_bar_baz"
+WHITESPACE " "
+LIFETIME_IDENT "'_"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/numbers.rast b/crates/parser/test_data/lexer/ok/numbers.rast
new file mode 100644
index 00000000000..8d13c3f6106
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/numbers.rast
@@ -0,0 +1,57 @@
+INT_NUMBER "0"
+WHITESPACE " "
+INT_NUMBER "00"
+WHITESPACE " "
+INT_NUMBER "0_"
+WHITESPACE " "
+FLOAT_NUMBER "0."
+WHITESPACE " "
+INT_NUMBER "0z"
+WHITESPACE "\n"
+INT_NUMBER "01790"
+WHITESPACE " "
+INT_NUMBER "0b1790"
+WHITESPACE " "
+INT_NUMBER "0o1790"
+WHITESPACE " "
+INT_NUMBER "0x1790aAbBcCdDeEfF"
+WHITESPACE " "
+INT_NUMBER "001279"
+WHITESPACE " "
+INT_NUMBER "0_1279"
+WHITESPACE " "
+FLOAT_NUMBER "0.1279"
+WHITESPACE " "
+FLOAT_NUMBER "0e1279"
+WHITESPACE " "
+FLOAT_NUMBER "0E1279"
+WHITESPACE "\n"
+INT_NUMBER "0"
+DOT "."
+DOT "."
+INT_NUMBER "2"
+WHITESPACE "\n"
+INT_NUMBER "0"
+DOT "."
+IDENT "foo"
+L_PAREN "("
+R_PAREN ")"
+WHITESPACE "\n"
+FLOAT_NUMBER "0e+1"
+WHITESPACE "\n"
+INT_NUMBER "0"
+DOT "."
+IDENT "e"
+PLUS "+"
+INT_NUMBER "1"
+WHITESPACE "\n"
+FLOAT_NUMBER "0.0E-2"
+WHITESPACE "\n"
+FLOAT_NUMBER "0___0.10000____0000e+111__"
+WHITESPACE "\n"
+INT_NUMBER "1i64"
+WHITESPACE " "
+FLOAT_NUMBER "92.0f32"
+WHITESPACE " "
+INT_NUMBER "11__s"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/raw_ident.rast b/crates/parser/test_data/lexer/ok/raw_ident.rast
new file mode 100644
index 00000000000..fddad998216
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/raw_ident.rast
@@ -0,0 +1,2 @@
+IDENT "r#raw_ident"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/raw_strings.rast b/crates/parser/test_data/lexer/ok/raw_strings.rast
new file mode 100644
index 00000000000..13cf733b7d1
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/raw_strings.rast
@@ -0,0 +1,2 @@
+STRING "r###\"this is a r##\"raw\"## string\"###"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/single_line_comments.rast b/crates/parser/test_data/lexer/ok/single_line_comments.rast
new file mode 100644
index 00000000000..a7681e9f508
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/single_line_comments.rast
@@ -0,0 +1,22 @@
+SHEBANG "#!/usr/bin/env bash"
+WHITESPACE "\n"
+COMMENT "// hello"
+WHITESPACE "\n"
+COMMENT "//! World"
+WHITESPACE "\n"
+COMMENT "//!! Inner line doc"
+WHITESPACE "\n"
+COMMENT "/// Outer line doc"
+WHITESPACE "\n"
+COMMENT "//// Just a comment"
+WHITESPACE "\n\n"
+COMMENT "//"
+WHITESPACE "\n"
+COMMENT "//!"
+WHITESPACE "\n"
+COMMENT "//!!"
+WHITESPACE "\n"
+COMMENT "///"
+WHITESPACE "\n"
+COMMENT "////"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/strings.rast b/crates/parser/test_data/lexer/ok/strings.rast
new file mode 100644
index 00000000000..ec222591bd3
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/strings.rast
@@ -0,0 +1,8 @@
+STRING "\"hello\""
+WHITESPACE " "
+STRING "r\"world\""
+WHITESPACE " "
+STRING "\"\\n\\\"\\\\no escape\""
+WHITESPACE " "
+STRING "\"multi\nline\""
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/symbols.rast b/crates/parser/test_data/lexer/ok/symbols.rast
new file mode 100644
index 00000000000..533ccff9a87
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/symbols.rast
@@ -0,0 +1,77 @@
+SEMICOLON ";"
+WHITESPACE " "
+COMMA ","
+WHITESPACE " "
+L_PAREN "("
+WHITESPACE " "
+R_PAREN ")"
+WHITESPACE " "
+L_CURLY "{"
+WHITESPACE " "
+R_CURLY "}"
+WHITESPACE " "
+L_BRACK "["
+WHITESPACE " "
+R_BRACK "]"
+WHITESPACE " "
+L_ANGLE "<"
+WHITESPACE " "
+R_ANGLE ">"
+WHITESPACE " "
+AT "@"
+WHITESPACE " "
+POUND "#"
+WHITESPACE " "
+TILDE "~"
+WHITESPACE " "
+QUESTION "?"
+WHITESPACE " "
+DOLLAR "$"
+WHITESPACE " "
+AMP "&"
+WHITESPACE " "
+PIPE "|"
+WHITESPACE " "
+PLUS "+"
+WHITESPACE " "
+STAR "*"
+WHITESPACE " "
+SLASH "/"
+WHITESPACE " "
+CARET "^"
+WHITESPACE " "
+PERCENT "%"
+WHITESPACE "\n"
+DOT "."
+WHITESPACE " "
+DOT "."
+DOT "."
+WHITESPACE " "
+DOT "."
+DOT "."
+DOT "."
+WHITESPACE " "
+DOT "."
+DOT "."
+EQ "="
+WHITESPACE "\n"
+COLON ":"
+WHITESPACE " "
+COLON ":"
+COLON ":"
+WHITESPACE "\n"
+EQ "="
+WHITESPACE " "
+EQ "="
+R_ANGLE ">"
+WHITESPACE "\n"
+BANG "!"
+WHITESPACE " "
+BANG "!"
+EQ "="
+WHITESPACE "\n"
+MINUS "-"
+WHITESPACE " "
+MINUS "-"
+R_ANGLE ">"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/lexer/ok/whitespace.rast b/crates/parser/test_data/lexer/ok/whitespace.rast
new file mode 100644
index 00000000000..8ccb79e4ec7
--- /dev/null
+++ b/crates/parser/test_data/lexer/ok/whitespace.rast
@@ -0,0 +1,12 @@
+IDENT "a"
+WHITESPACE " "
+IDENT "b"
+WHITESPACE "  "
+IDENT "c"
+WHITESPACE "\n"
+IDENT "d"
+WHITESPACE "\n\n"
+IDENT "e"
+WHITESPACE "\t"
+IDENT "f"
+WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/err/0000_struct_field_missing_comma.rast b/crates/parser/test_data/parser/err/0000_struct_field_missing_comma.rast
index bbbf496c82d..b30328c8270 100644
--- a/crates/parser/test_data/parser/err/0000_struct_field_missing_comma.rast
+++ b/crates/parser/test_data/parser/err/0000_struct_field_missing_comma.rast
@@ -1,34 +1,34 @@
-SOURCE_FILE@0..34
-  STRUCT@0..34
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..34
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..15 "\n    "
-      RECORD_FIELD@15..21
-        NAME@15..16
-          IDENT@15..16 "a"
-        COLON@16..17 ":"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "u32"
-      WHITESPACE@21..26 "\n    "
-      RECORD_FIELD@26..32
-        NAME@26..27
-          IDENT@26..27 "b"
-        COLON@27..28 ":"
-        WHITESPACE@28..29 " "
-        PATH_TYPE@29..32
-          PATH@29..32
-            PATH_SEGMENT@29..32
-              NAME_REF@29..32
-                IDENT@29..32 "u32"
-      WHITESPACE@32..33 "\n"
-      R_CURLY@33..34 "}"
-error 21..21: expected COMMA
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "a"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "b"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      WHITESPACE "\n"
+      R_CURLY "}"
+error 21: expected COMMA
diff --git a/crates/parser/test_data/parser/err/0000_struct_field_missing_comma.txt b/crates/parser/test_data/parser/err/0000_struct_field_missing_comma.txt
deleted file mode 100644
index b30328c8270..00000000000
--- a/crates/parser/test_data/parser/err/0000_struct_field_missing_comma.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "a"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "b"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      WHITESPACE "\n"
-      R_CURLY "}"
-error 21: expected COMMA
diff --git a/crates/parser/test_data/parser/err/0001_item_recovery_in_file.rast b/crates/parser/test_data/parser/err/0001_item_recovery_in_file.rast
index 6dc73bfdbae..959b87ebbc5 100644
--- a/crates/parser/test_data/parser/err/0001_item_recovery_in_file.rast
+++ b/crates/parser/test_data/parser/err/0001_item_recovery_in_file.rast
@@ -1,18 +1,18 @@
-SOURCE_FILE@0..21
-  ERROR@0..2
-    IF_KW@0..2 "if"
-  WHITESPACE@2..3 " "
-  ERROR@3..8
-    MATCH_KW@3..8 "match"
-  WHITESPACE@8..10 "\n\n"
-  STRUCT@10..21
-    STRUCT_KW@10..16 "struct"
-    WHITESPACE@16..17 " "
-    NAME@17..18
-      IDENT@17..18 "S"
-    WHITESPACE@18..19 " "
-    RECORD_FIELD_LIST@19..21
-      L_CURLY@19..20 "{"
-      R_CURLY@20..21 "}"
-error 0..0: expected an item
-error 3..3: expected an item
+SOURCE_FILE
+  ERROR
+    IF_KW "if"
+  WHITESPACE " "
+  ERROR
+    MATCH_KW "match"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+error 0: expected an item
+error 3: expected an item
diff --git a/crates/parser/test_data/parser/err/0001_item_recovery_in_file.txt b/crates/parser/test_data/parser/err/0001_item_recovery_in_file.txt
deleted file mode 100644
index 959b87ebbc5..00000000000
--- a/crates/parser/test_data/parser/err/0001_item_recovery_in_file.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-SOURCE_FILE
-  ERROR
-    IF_KW "if"
-  WHITESPACE " "
-  ERROR
-    MATCH_KW "match"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-error 0: expected an item
-error 3: expected an item
diff --git a/crates/parser/test_data/parser/err/0002_duplicate_shebang.rast b/crates/parser/test_data/parser/err/0002_duplicate_shebang.rast
index 9ad5b12b8b8..ec6c3151005 100644
--- a/crates/parser/test_data/parser/err/0002_duplicate_shebang.rast
+++ b/crates/parser/test_data/parser/err/0002_duplicate_shebang.rast
@@ -1,45 +1,45 @@
-SOURCE_FILE@0..42
-  SHEBANG@0..20 "#!/use/bin/env rusti"
-  WHITESPACE@20..21 "\n"
-  ATTR@21..23
-    POUND@21..22 "#"
-    BANG@22..23 "!"
-  ERROR@23..24
-    SLASH@23..24 "/"
-  USE@24..28
-    USE_KW@24..27 "use"
-    ERROR@27..28
-      SLASH@27..28 "/"
-  MACRO_CALL@28..31
-    PATH@28..31
-      PATH_SEGMENT@28..31
-        NAME_REF@28..31
-          IDENT@28..31 "bin"
-  ERROR@31..32
-    SLASH@31..32 "/"
-  MACRO_CALL@32..35
-    PATH@32..35
-      PATH_SEGMENT@32..35
-        NAME_REF@32..35
-          IDENT@32..35 "env"
-  WHITESPACE@35..36 " "
-  MACRO_CALL@36..41
-    PATH@36..41
-      PATH_SEGMENT@36..41
-        NAME_REF@36..41
-          IDENT@36..41 "rusti"
-  WHITESPACE@41..42 "\n"
-error 23..23: expected `[`
-error 23..23: expected an item
-error 27..27: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 28..28: expected SEMICOLON
-error 31..31: expected BANG
-error 31..31: expected `{`, `[`, `(`
-error 31..31: expected SEMICOLON
-error 31..31: expected an item
-error 35..35: expected BANG
-error 35..35: expected `{`, `[`, `(`
-error 35..35: expected SEMICOLON
-error 41..41: expected BANG
-error 41..41: expected `{`, `[`, `(`
-error 41..41: expected SEMICOLON
+SOURCE_FILE
+  SHEBANG "#!/use/bin/env rusti"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+  ERROR
+    SLASH "/"
+  USE
+    USE_KW "use"
+    ERROR
+      SLASH "/"
+  MACRO_CALL
+    PATH
+      PATH_SEGMENT
+        NAME_REF
+          IDENT "bin"
+  ERROR
+    SLASH "/"
+  MACRO_CALL
+    PATH
+      PATH_SEGMENT
+        NAME_REF
+          IDENT "env"
+  WHITESPACE " "
+  MACRO_CALL
+    PATH
+      PATH_SEGMENT
+        NAME_REF
+          IDENT "rusti"
+  WHITESPACE "\n"
+error 23: expected `[`
+error 23: expected an item
+error 27: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
+error 28: expected SEMICOLON
+error 31: expected BANG
+error 31: expected `{`, `[`, `(`
+error 31: expected SEMICOLON
+error 31: expected an item
+error 35: expected BANG
+error 35: expected `{`, `[`, `(`
+error 35: expected SEMICOLON
+error 41: expected BANG
+error 41: expected `{`, `[`, `(`
+error 41: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0002_duplicate_shebang.txt b/crates/parser/test_data/parser/err/0002_duplicate_shebang.txt
deleted file mode 100644
index ec6c3151005..00000000000
--- a/crates/parser/test_data/parser/err/0002_duplicate_shebang.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE
-  SHEBANG "#!/use/bin/env rusti"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-  ERROR
-    SLASH "/"
-  USE
-    USE_KW "use"
-    ERROR
-      SLASH "/"
-  MACRO_CALL
-    PATH
-      PATH_SEGMENT
-        NAME_REF
-          IDENT "bin"
-  ERROR
-    SLASH "/"
-  MACRO_CALL
-    PATH
-      PATH_SEGMENT
-        NAME_REF
-          IDENT "env"
-  WHITESPACE " "
-  MACRO_CALL
-    PATH
-      PATH_SEGMENT
-        NAME_REF
-          IDENT "rusti"
-  WHITESPACE "\n"
-error 23: expected `[`
-error 23: expected an item
-error 27: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 28: expected SEMICOLON
-error 31: expected BANG
-error 31: expected `{`, `[`, `(`
-error 31: expected SEMICOLON
-error 31: expected an item
-error 35: expected BANG
-error 35: expected `{`, `[`, `(`
-error 35: expected SEMICOLON
-error 41: expected BANG
-error 41: expected `{`, `[`, `(`
-error 41: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0003_C++_semicolon.rast b/crates/parser/test_data/parser/err/0003_C++_semicolon.rast
index 7763fad840b..00131bea51d 100644
--- a/crates/parser/test_data/parser/err/0003_C++_semicolon.rast
+++ b/crates/parser/test_data/parser/err/0003_C++_semicolon.rast
@@ -1,39 +1,39 @@
-SOURCE_FILE@0..40
-  STRUCT@0..39
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..39
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..15 "\n    "
-      RECORD_FIELD@15..21
-        NAME@15..16
-          IDENT@15..16 "a"
-        COLON@16..17 ":"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "i32"
-      COMMA@21..22 ","
-      WHITESPACE@22..27 "\n    "
-      RECORD_FIELD@27..36
-        NAME@27..28
-          IDENT@27..28 "b"
-        COLON@28..29 ":"
-        WHITESPACE@29..30 " "
-        PATH_TYPE@30..36
-          PATH@30..36
-            PATH_SEGMENT@30..36
-              NAME_REF@30..36
-                IDENT@30..36 "String"
-      COMMA@36..37 ","
-      WHITESPACE@37..38 "\n"
-      R_CURLY@38..39 "}"
-  ERROR@39..40
-    SEMICOLON@39..40 ";"
-error 39..39: expected item, found `;`
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "a"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      COMMA ","
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "b"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "String"
+      COMMA ","
+      WHITESPACE "\n"
+      R_CURLY "}"
+  ERROR
+    SEMICOLON ";"
+error 39: expected item, found `;`
 consider removing this semicolon
diff --git a/crates/parser/test_data/parser/err/0003_C++_semicolon.txt b/crates/parser/test_data/parser/err/0003_C++_semicolon.txt
deleted file mode 100644
index 00131bea51d..00000000000
--- a/crates/parser/test_data/parser/err/0003_C++_semicolon.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "a"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      COMMA ","
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "b"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "String"
-      COMMA ","
-      WHITESPACE "\n"
-      R_CURLY "}"
-  ERROR
-    SEMICOLON ";"
-error 39: expected item, found `;`
-consider removing this semicolon
diff --git a/crates/parser/test_data/parser/err/0004_use_path_bad_segment.rast b/crates/parser/test_data/parser/err/0004_use_path_bad_segment.rast
index 9a0f4665efc..44e192a5fcb 100644
--- a/crates/parser/test_data/parser/err/0004_use_path_bad_segment.rast
+++ b/crates/parser/test_data/parser/err/0004_use_path_bad_segment.rast
@@ -1,15 +1,15 @@
-SOURCE_FILE@0..12
-  USE@0..12
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..11
-      PATH@4..11
-        PATH@4..7
-          PATH_SEGMENT@4..7
-            NAME_REF@4..7
-              IDENT@4..7 "foo"
-        COLON2@7..9 "::"
-        ERROR@9..11
-          INT_NUMBER@9..11 "92"
-    SEMICOLON@11..12 ";"
-error 9..9: expected identifier
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "foo"
+        COLON2 "::"
+        ERROR
+          INT_NUMBER "92"
+    SEMICOLON ";"
+error 9: expected identifier
diff --git a/crates/parser/test_data/parser/err/0004_use_path_bad_segment.txt b/crates/parser/test_data/parser/err/0004_use_path_bad_segment.txt
deleted file mode 100644
index 44e192a5fcb..00000000000
--- a/crates/parser/test_data/parser/err/0004_use_path_bad_segment.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "foo"
-        COLON2 "::"
-        ERROR
-          INT_NUMBER "92"
-    SEMICOLON ";"
-error 9: expected identifier
diff --git a/crates/parser/test_data/parser/err/0005_attribute_recover.rast b/crates/parser/test_data/parser/err/0005_attribute_recover.rast
index 44dcc58a926..6ff072e207c 100644
--- a/crates/parser/test_data/parser/err/0005_attribute_recover.rast
+++ b/crates/parser/test_data/parser/err/0005_attribute_recover.rast
@@ -1,62 +1,62 @@
-SOURCE_FILE@0..54
-  FN@0..31
-    ATTR@0..18
-      POUND@0..1 "#"
-      L_BRACK@1..2 "["
-      META@2..17
-        PATH@2..5
-          PATH_SEGMENT@2..5
-            NAME_REF@2..5
-              IDENT@2..5 "foo"
-        TOKEN_TREE@5..17
-          L_PAREN@5..6 "("
-          IDENT@6..9 "foo"
-          COMMA@9..10 ","
-          WHITESPACE@10..11 " "
-          PLUS@11..12 "+"
-          COMMA@12..13 ","
-          WHITESPACE@13..14 " "
-          INT_NUMBER@14..16 "92"
-          R_PAREN@16..17 ")"
-      R_BRACK@17..18 "]"
-    WHITESPACE@18..19 "\n"
-    FN_KW@19..21 "fn"
-    WHITESPACE@21..22 " "
-    NAME@22..25
-      IDENT@22..25 "foo"
-    PARAM_LIST@25..27
-      L_PAREN@25..26 "("
-      R_PAREN@26..27 ")"
-    WHITESPACE@27..28 " "
-    BLOCK_EXPR@28..31
-      STMT_LIST@28..31
-        L_CURLY@28..29 "{"
-        WHITESPACE@29..30 "\n"
-        R_CURLY@30..31 "}"
-  WHITESPACE@31..34 "\n\n\n"
-  ATTR@34..53
-    POUND@34..35 "#"
-    L_BRACK@35..36 "["
-    META@36..53
-      PATH@36..39
-        PATH_SEGMENT@36..39
-          NAME_REF@36..39
-            IDENT@36..39 "foo"
-      TOKEN_TREE@39..53
-        L_PAREN@39..40 "("
-        WHITESPACE@40..41 "\n"
-        FN_KW@41..43 "fn"
-        WHITESPACE@43..44 " "
-        IDENT@44..47 "foo"
-        TOKEN_TREE@47..49
-          L_PAREN@47..48 "("
-          R_PAREN@48..49 ")"
-        WHITESPACE@49..50 " "
-        TOKEN_TREE@50..53
-          L_CURLY@50..51 "{"
-          WHITESPACE@51..52 "\n"
-          R_CURLY@52..53 "}"
-  WHITESPACE@53..54 "\n"
-error 53..53: expected R_PAREN
-error 53..53: expected `]`
-error 53..53: expected an item
+SOURCE_FILE
+  FN
+    ATTR
+      POUND "#"
+      L_BRACK "["
+      META
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "foo"
+        TOKEN_TREE
+          L_PAREN "("
+          IDENT "foo"
+          COMMA ","
+          WHITESPACE " "
+          PLUS "+"
+          COMMA ","
+          WHITESPACE " "
+          INT_NUMBER "92"
+          R_PAREN ")"
+      R_BRACK "]"
+    WHITESPACE "\n"
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n\n"
+  ATTR
+    POUND "#"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+      TOKEN_TREE
+        L_PAREN "("
+        WHITESPACE "\n"
+        FN_KW "fn"
+        WHITESPACE " "
+        IDENT "foo"
+        TOKEN_TREE
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        TOKEN_TREE
+          L_CURLY "{"
+          WHITESPACE "\n"
+          R_CURLY "}"
+  WHITESPACE "\n"
+error 53: expected R_PAREN
+error 53: expected `]`
+error 53: expected an item
diff --git a/crates/parser/test_data/parser/err/0005_attribute_recover.txt b/crates/parser/test_data/parser/err/0005_attribute_recover.txt
deleted file mode 100644
index 6ff072e207c..00000000000
--- a/crates/parser/test_data/parser/err/0005_attribute_recover.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-SOURCE_FILE
-  FN
-    ATTR
-      POUND "#"
-      L_BRACK "["
-      META
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "foo"
-        TOKEN_TREE
-          L_PAREN "("
-          IDENT "foo"
-          COMMA ","
-          WHITESPACE " "
-          PLUS "+"
-          COMMA ","
-          WHITESPACE " "
-          INT_NUMBER "92"
-          R_PAREN ")"
-      R_BRACK "]"
-    WHITESPACE "\n"
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n\n"
-  ATTR
-    POUND "#"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-      TOKEN_TREE
-        L_PAREN "("
-        WHITESPACE "\n"
-        FN_KW "fn"
-        WHITESPACE " "
-        IDENT "foo"
-        TOKEN_TREE
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        TOKEN_TREE
-          L_CURLY "{"
-          WHITESPACE "\n"
-          R_CURLY "}"
-  WHITESPACE "\n"
-error 53: expected R_PAREN
-error 53: expected `]`
-error 53: expected an item
diff --git a/crates/parser/test_data/parser/err/0006_named_field_recovery.rast b/crates/parser/test_data/parser/err/0006_named_field_recovery.rast
index 5f85c3943ab..7a4aa93b246 100644
--- a/crates/parser/test_data/parser/err/0006_named_field_recovery.rast
+++ b/crates/parser/test_data/parser/err/0006_named_field_recovery.rast
@@ -1,74 +1,74 @@
-SOURCE_FILE@0..74
-  STRUCT@0..73
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..73
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..15 "\n    "
-      RECORD_FIELD@15..21
-        NAME@15..16
-          IDENT@15..16 "f"
-        COLON@16..17 ":"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "u32"
-      COMMA@21..22 ","
-      WHITESPACE@22..27 "\n    "
-      VISIBILITY@27..30
-        PUB_KW@27..30 "pub"
-      WHITESPACE@30..31 " "
-      ERROR@31..33
-        INT_NUMBER@31..33 "92"
-      WHITESPACE@33..38 "\n    "
-      ERROR@38..39
-        PLUS@38..39 "+"
-      WHITESPACE@39..40 " "
-      ERROR@40..41
-        MINUS@40..41 "-"
-      WHITESPACE@41..42 " "
-      ERROR@42..43
-        STAR@42..43 "*"
-      WHITESPACE@43..48 "\n    "
-      RECORD_FIELD@48..58
-        VISIBILITY@48..51
-          PUB_KW@48..51 "pub"
-        WHITESPACE@51..52 " "
-        NAME@52..53
-          IDENT@52..53 "x"
-        COLON@53..54 ":"
-        WHITESPACE@54..55 " "
-        PATH_TYPE@55..58
-          PATH@55..58
-            PATH_SEGMENT@55..58
-              NAME_REF@55..58
-                IDENT@55..58 "u32"
-      COMMA@58..59 ","
-      WHITESPACE@59..64 "\n    "
-      RECORD_FIELD@64..70
-        NAME@64..65
-          IDENT@64..65 "z"
-        COLON@65..66 ":"
-        WHITESPACE@66..67 " "
-        PATH_TYPE@67..70
-          PATH@67..70
-            PATH_SEGMENT@67..70
-              NAME_REF@67..70
-                IDENT@67..70 "f64"
-      COMMA@70..71 ","
-      WHITESPACE@71..72 "\n"
-      R_CURLY@72..73 "}"
-  WHITESPACE@73..74 "\n"
-error 31..31: expected field declaration
-error 33..33: expected COMMA
-error 38..38: expected field declaration
-error 39..39: expected COMMA
-error 40..40: expected field declaration
-error 41..41: expected COMMA
-error 42..42: expected field declaration
-error 43..43: expected COMMA
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "f"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      COMMA ","
+      WHITESPACE "\n    "
+      VISIBILITY
+        PUB_KW "pub"
+      WHITESPACE " "
+      ERROR
+        INT_NUMBER "92"
+      WHITESPACE "\n    "
+      ERROR
+        PLUS "+"
+      WHITESPACE " "
+      ERROR
+        MINUS "-"
+      WHITESPACE " "
+      ERROR
+        STAR "*"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        NAME
+          IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      COMMA ","
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "z"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "f64"
+      COMMA ","
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
+error 31: expected field declaration
+error 33: expected COMMA
+error 38: expected field declaration
+error 39: expected COMMA
+error 40: expected field declaration
+error 41: expected COMMA
+error 42: expected field declaration
+error 43: expected COMMA
diff --git a/crates/parser/test_data/parser/err/0006_named_field_recovery.txt b/crates/parser/test_data/parser/err/0006_named_field_recovery.txt
deleted file mode 100644
index 7a4aa93b246..00000000000
--- a/crates/parser/test_data/parser/err/0006_named_field_recovery.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "f"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      COMMA ","
-      WHITESPACE "\n    "
-      VISIBILITY
-        PUB_KW "pub"
-      WHITESPACE " "
-      ERROR
-        INT_NUMBER "92"
-      WHITESPACE "\n    "
-      ERROR
-        PLUS "+"
-      WHITESPACE " "
-      ERROR
-        MINUS "-"
-      WHITESPACE " "
-      ERROR
-        STAR "*"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        NAME
-          IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      COMMA ","
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "z"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "f64"
-      COMMA ","
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
-error 31: expected field declaration
-error 33: expected COMMA
-error 38: expected field declaration
-error 39: expected COMMA
-error 40: expected field declaration
-error 41: expected COMMA
-error 42: expected field declaration
-error 43: expected COMMA
diff --git a/crates/parser/test_data/parser/err/0007_stray_curly_in_file.rast b/crates/parser/test_data/parser/err/0007_stray_curly_in_file.rast
index c57ea77364e..5d87ff866b2 100644
--- a/crates/parser/test_data/parser/err/0007_stray_curly_in_file.rast
+++ b/crates/parser/test_data/parser/err/0007_stray_curly_in_file.rast
@@ -1,33 +1,33 @@
-SOURCE_FILE@0..31
-  ERROR@0..1
-    R_CURLY@0..1 "}"
-  WHITESPACE@1..3 "\n\n"
-  STRUCT@3..12
-    STRUCT_KW@3..9 "struct"
-    WHITESPACE@9..10 " "
-    NAME@10..11
-      IDENT@10..11 "S"
-    SEMICOLON@11..12 ";"
-  WHITESPACE@12..14 "\n\n"
-  ERROR@14..15
-    R_CURLY@14..15 "}"
-  WHITESPACE@15..17 "\n\n"
-  FN@17..27
-    FN_KW@17..19 "fn"
-    WHITESPACE@19..20 " "
-    NAME@20..23
-      IDENT@20..23 "foo"
-    PARAM_LIST@23..25
-      L_PAREN@23..24 "("
-      R_PAREN@24..25 ")"
-    BLOCK_EXPR@25..27
-      STMT_LIST@25..27
-        L_CURLY@25..26 "{"
-        R_CURLY@26..27 "}"
-  WHITESPACE@27..29 "\n\n"
-  ERROR@29..30
-    R_CURLY@29..30 "}"
-  WHITESPACE@30..31 "\n"
-error 0..0: unmatched `}`
-error 14..14: unmatched `}`
-error 29..29: unmatched `}`
+SOURCE_FILE
+  ERROR
+    R_CURLY "}"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+  ERROR
+    R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  ERROR
+    R_CURLY "}"
+  WHITESPACE "\n"
+error 0: unmatched `}`
+error 14: unmatched `}`
+error 29: unmatched `}`
diff --git a/crates/parser/test_data/parser/err/0007_stray_curly_in_file.txt b/crates/parser/test_data/parser/err/0007_stray_curly_in_file.txt
deleted file mode 100644
index 5d87ff866b2..00000000000
--- a/crates/parser/test_data/parser/err/0007_stray_curly_in_file.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE
-  ERROR
-    R_CURLY "}"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-  ERROR
-    R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  ERROR
-    R_CURLY "}"
-  WHITESPACE "\n"
-error 0: unmatched `}`
-error 14: unmatched `}`
-error 29: unmatched `}`
diff --git a/crates/parser/test_data/parser/err/0008_item_block_recovery.rast b/crates/parser/test_data/parser/err/0008_item_block_recovery.rast
index 99ec2faed00..60b2fe98755 100644
--- a/crates/parser/test_data/parser/err/0008_item_block_recovery.rast
+++ b/crates/parser/test_data/parser/err/0008_item_block_recovery.rast
@@ -1,81 +1,80 @@
-SOURCE_FILE@0..95
-  FN@0..12
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..12
-      STMT_LIST@9..12
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 "\n"
-        R_CURLY@11..12 "}"
-  WHITESPACE@12..14 "\n\n"
-  MACRO_CALL@14..19
-    PATH@14..17
-      PATH_SEGMENT@14..17
-        NAME_REF@14..17
-          IDENT@14..17 "bar"
-    TOKEN_TREE@17..19
-      L_PAREN@17..18 "("
-      R_PAREN@18..19 ")"
-  WHITESPACE@19..20 " "
-  ERROR@20..80
-    L_CURLY@20..21 "{"
-    WHITESPACE@21..26 "\n    "
-    IF_EXPR@26..78
-      IF_KW@26..28 "if"
-      WHITESPACE@28..29 " "
-      CONDITION@29..33
-        LITERAL@29..33
-          TRUE_KW@29..33 "true"
-      WHITESPACE@33..34 " "
-      BLOCK_EXPR@34..51
-        STMT_LIST@34..51
-          L_CURLY@34..35 "{"
-          WHITESPACE@35..44 "\n        "
-          LITERAL@44..45
-            INT_NUMBER@44..45 "1"
-          WHITESPACE@45..50 "\n    "
-          R_CURLY@50..51 "}"
-      WHITESPACE@51..52 " "
-      ELSE_KW@52..56 "else"
-      WHITESPACE@56..57 " "
-      BLOCK_EXPR@57..78
-        STMT_LIST@57..78
-          L_CURLY@57..58 "{"
-          WHITESPACE@58..67 "\n        "
-          BIN_EXPR@67..72
-            LITERAL@67..68
-              INT_NUMBER@67..68 "2"
-            WHITESPACE@68..69 " "
-            PLUS@69..70 "+"
-            WHITESPACE@70..71 " "
-            LITERAL@71..72
-              INT_NUMBER@71..72 "3"
-          WHITESPACE@72..77 "\n    "
-          R_CURLY@77..78 "}"
-    WHITESPACE@78..79 "\n"
-    R_CURLY@79..80 "}"
-  WHITESPACE@80..82 "\n\n"
-  FN@82..94
-    FN_KW@82..84 "fn"
-    WHITESPACE@84..85 " "
-    NAME@85..88
-      IDENT@85..88 "baz"
-    PARAM_LIST@88..90
-      L_PAREN@88..89 "("
-      R_PAREN@89..90 ")"
-    WHITESPACE@90..91 " "
-    BLOCK_EXPR@91..94
-      STMT_LIST@91..94
-        L_CURLY@91..92 "{"
-        WHITESPACE@92..93 "\n"
-        R_CURLY@93..94 "}"
-  WHITESPACE@94..95 "\n"
-error 17..17: expected BANG
-error 19..19: expected SEMICOLON
-error 20..20: expected an item
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  MACRO_CALL
+    PATH
+      PATH_SEGMENT
+        NAME_REF
+          IDENT "bar"
+    TOKEN_TREE
+      L_PAREN "("
+      R_PAREN ")"
+  WHITESPACE " "
+  ERROR
+    L_CURLY "{"
+    WHITESPACE "\n    "
+    IF_EXPR
+      IF_KW "if"
+      WHITESPACE " "
+      LITERAL
+        TRUE_KW "true"
+      WHITESPACE " "
+      BLOCK_EXPR
+        STMT_LIST
+          L_CURLY "{"
+          WHITESPACE "\n        "
+          LITERAL
+            INT_NUMBER "1"
+          WHITESPACE "\n    "
+          R_CURLY "}"
+      WHITESPACE " "
+      ELSE_KW "else"
+      WHITESPACE " "
+      BLOCK_EXPR
+        STMT_LIST
+          L_CURLY "{"
+          WHITESPACE "\n        "
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "2"
+            WHITESPACE " "
+            PLUS "+"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "3"
+          WHITESPACE "\n    "
+          R_CURLY "}"
+    WHITESPACE "\n"
+    R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "baz"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 17: expected BANG
+error 19: expected SEMICOLON
+error 20: expected an item
diff --git a/crates/parser/test_data/parser/err/0008_item_block_recovery.txt b/crates/parser/test_data/parser/err/0008_item_block_recovery.txt
deleted file mode 100644
index 60b2fe98755..00000000000
--- a/crates/parser/test_data/parser/err/0008_item_block_recovery.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  MACRO_CALL
-    PATH
-      PATH_SEGMENT
-        NAME_REF
-          IDENT "bar"
-    TOKEN_TREE
-      L_PAREN "("
-      R_PAREN ")"
-  WHITESPACE " "
-  ERROR
-    L_CURLY "{"
-    WHITESPACE "\n    "
-    IF_EXPR
-      IF_KW "if"
-      WHITESPACE " "
-      LITERAL
-        TRUE_KW "true"
-      WHITESPACE " "
-      BLOCK_EXPR
-        STMT_LIST
-          L_CURLY "{"
-          WHITESPACE "\n        "
-          LITERAL
-            INT_NUMBER "1"
-          WHITESPACE "\n    "
-          R_CURLY "}"
-      WHITESPACE " "
-      ELSE_KW "else"
-      WHITESPACE " "
-      BLOCK_EXPR
-        STMT_LIST
-          L_CURLY "{"
-          WHITESPACE "\n        "
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "2"
-            WHITESPACE " "
-            PLUS "+"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "3"
-          WHITESPACE "\n    "
-          R_CURLY "}"
-    WHITESPACE "\n"
-    R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "baz"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 17: expected BANG
-error 19: expected SEMICOLON
-error 20: expected an item
diff --git a/crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.rast b/crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.rast
index 2d4c689c7c6..a0154321718 100644
--- a/crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.rast
+++ b/crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.rast
@@ -1,56 +1,56 @@
-SOURCE_FILE@0..43
-  STRUCT@0..11
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    GENERIC_PARAM_LIST@8..11
-      L_ANGLE@8..9 "<"
-      ERROR@9..11
-        INT_NUMBER@9..11 "90"
-  WHITESPACE@11..12 " "
-  ERROR@12..13
-    PLUS@12..13 "+"
-  WHITESPACE@13..14 " "
-  ERROR@14..15
-    INT_NUMBER@14..15 "2"
-  ERROR@15..16
-    R_ANGLE@15..16 ">"
-  WHITESPACE@16..17 " "
-  ERROR@17..31
-    L_CURLY@17..18 "{"
-    WHITESPACE@18..23 "\n    "
-    EXPR_STMT@23..24
-      PATH_EXPR@23..24
-        PATH@23..24
-          PATH_SEGMENT@23..24
-            NAME_REF@23..24
-              IDENT@23..24 "f"
-    ERROR@24..25
-      COLON@24..25 ":"
-    WHITESPACE@25..26 " "
-    PATH_EXPR@26..29
-      PATH@26..29
-        PATH_SEGMENT@26..29
-          NAME_REF@26..29
-            IDENT@26..29 "u32"
-    WHITESPACE@29..30 "\n"
-    R_CURLY@30..31 "}"
-  WHITESPACE@31..33 "\n\n"
-  STRUCT@33..42
-    STRUCT_KW@33..39 "struct"
-    WHITESPACE@39..40 " "
-    NAME@40..41
-      IDENT@40..41 "T"
-    SEMICOLON@41..42 ";"
-  WHITESPACE@42..43 "\n"
-error 9..9: expected type parameter
-error 11..11: expected COMMA
-error 11..11: expected R_ANGLE
-error 11..11: expected `;`, `{`, or `(`
-error 12..12: expected an item
-error 14..14: expected an item
-error 15..15: expected an item
-error 17..17: expected an item
-error 24..24: expected SEMICOLON
-error 24..24: expected expression
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      ERROR
+        INT_NUMBER "90"
+  WHITESPACE " "
+  ERROR
+    PLUS "+"
+  WHITESPACE " "
+  ERROR
+    INT_NUMBER "2"
+  ERROR
+    R_ANGLE ">"
+  WHITESPACE " "
+  ERROR
+    L_CURLY "{"
+    WHITESPACE "\n    "
+    EXPR_STMT
+      PATH_EXPR
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "f"
+    ERROR
+      COLON ":"
+    WHITESPACE " "
+    PATH_EXPR
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "u32"
+    WHITESPACE "\n"
+    R_CURLY "}"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+error 9: expected type parameter
+error 11: expected COMMA
+error 11: expected R_ANGLE
+error 11: expected `;`, `{`, or `(`
+error 12: expected an item
+error 14: expected an item
+error 15: expected an item
+error 17: expected an item
+error 24: expected SEMICOLON
+error 24: expected expression
diff --git a/crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.txt b/crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.txt
deleted file mode 100644
index a0154321718..00000000000
--- a/crates/parser/test_data/parser/err/0009_broken_struct_type_parameter.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      ERROR
-        INT_NUMBER "90"
-  WHITESPACE " "
-  ERROR
-    PLUS "+"
-  WHITESPACE " "
-  ERROR
-    INT_NUMBER "2"
-  ERROR
-    R_ANGLE ">"
-  WHITESPACE " "
-  ERROR
-    L_CURLY "{"
-    WHITESPACE "\n    "
-    EXPR_STMT
-      PATH_EXPR
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "f"
-    ERROR
-      COLON ":"
-    WHITESPACE " "
-    PATH_EXPR
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "u32"
-    WHITESPACE "\n"
-    R_CURLY "}"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-error 9: expected type parameter
-error 11: expected COMMA
-error 11: expected R_ANGLE
-error 11: expected `;`, `{`, or `(`
-error 12: expected an item
-error 14: expected an item
-error 15: expected an item
-error 17: expected an item
-error 24: expected SEMICOLON
-error 24: expected expression
diff --git a/crates/parser/test_data/parser/err/0010_unsafe_lambda_block.rast b/crates/parser/test_data/parser/err/0010_unsafe_lambda_block.rast
index 586acc73296..9427ee5c0e5 100644
--- a/crates/parser/test_data/parser/err/0010_unsafe_lambda_block.rast
+++ b/crates/parser/test_data/parser/err/0010_unsafe_lambda_block.rast
@@ -1,45 +1,45 @@
-SOURCE_FILE@0..42
-  FN@0..41
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..41
-      STMT_LIST@10..41
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        EXPR_STMT@16..24
-          CLOSURE_EXPR@16..24
-            PARAM_LIST@16..18
-              PIPE@16..17 "|"
-              PIPE@17..18 "|"
-            WHITESPACE@18..19 " "
-            RET_TYPE@19..24
-              THIN_ARROW@19..21 "->"
-              WHITESPACE@21..22 " "
-              TUPLE_TYPE@22..24
-                L_PAREN@22..23 "("
-                R_PAREN@23..24 ")"
-        WHITESPACE@24..25 " "
-        EXPR_STMT@25..39
-          BLOCK_EXPR@25..38
-            UNSAFE_KW@25..31 "unsafe"
-            WHITESPACE@31..32 " "
-            STMT_LIST@32..38
-              L_CURLY@32..33 "{"
-              WHITESPACE@33..34 " "
-              TUPLE_EXPR@34..36
-                L_PAREN@34..35 "("
-                R_PAREN@35..36 ")"
-              WHITESPACE@36..37 " "
-              R_CURLY@37..38 "}"
-          SEMICOLON@38..39 ";"
-        WHITESPACE@39..40 "\n"
-        R_CURLY@40..41 "}"
-  WHITESPACE@41..42 "\n"
-error 24..24: expected a block
-error 24..24: expected SEMICOLON
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            RET_TYPE
+              THIN_ARROW "->"
+              WHITESPACE " "
+              TUPLE_TYPE
+                L_PAREN "("
+                R_PAREN ")"
+        WHITESPACE " "
+        EXPR_STMT
+          BLOCK_EXPR
+            UNSAFE_KW "unsafe"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 24: expected a block
+error 24: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0010_unsafe_lambda_block.txt b/crates/parser/test_data/parser/err/0010_unsafe_lambda_block.txt
deleted file mode 100644
index 9427ee5c0e5..00000000000
--- a/crates/parser/test_data/parser/err/0010_unsafe_lambda_block.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            RET_TYPE
-              THIN_ARROW "->"
-              WHITESPACE " "
-              TUPLE_TYPE
-                L_PAREN "("
-                R_PAREN ")"
-        WHITESPACE " "
-        EXPR_STMT
-          BLOCK_EXPR
-            UNSAFE_KW "unsafe"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 24: expected a block
-error 24: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0011_extern_struct.rast b/crates/parser/test_data/parser/err/0011_extern_struct.rast
index b02d390af9b..bd5ec4b7c29 100644
--- a/crates/parser/test_data/parser/err/0011_extern_struct.rast
+++ b/crates/parser/test_data/parser/err/0011_extern_struct.rast
@@ -1,13 +1,13 @@
-SOURCE_FILE@0..19
-  ERROR@0..6
-    ABI@0..6
-      EXTERN_KW@0..6 "extern"
-  WHITESPACE@6..7 " "
-  STRUCT@7..18
-    STRUCT_KW@7..13 "struct"
-    WHITESPACE@13..14 " "
-    NAME@14..17
-      IDENT@14..17 "Foo"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
-error 6..6: expected existential, fn, trait or impl
+SOURCE_FILE
+  ERROR
+    ABI
+      EXTERN_KW "extern"
+  WHITESPACE " "
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+error 6: expected existential, fn, trait or impl
diff --git a/crates/parser/test_data/parser/err/0011_extern_struct.txt b/crates/parser/test_data/parser/err/0011_extern_struct.txt
deleted file mode 100644
index bd5ec4b7c29..00000000000
--- a/crates/parser/test_data/parser/err/0011_extern_struct.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE
-  ERROR
-    ABI
-      EXTERN_KW "extern"
-  WHITESPACE " "
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-error 6: expected existential, fn, trait or impl
diff --git a/crates/parser/test_data/parser/err/0013_invalid_type.rast b/crates/parser/test_data/parser/err/0013_invalid_type.rast
index f48ab6e7124..eec84a0c67d 100644
--- a/crates/parser/test_data/parser/err/0013_invalid_type.rast
+++ b/crates/parser/test_data/parser/err/0013_invalid_type.rast
@@ -1,89 +1,89 @@
-SOURCE_FILE@0..86
-  STRUCT@0..72
-    VISIBILITY@0..3
-      PUB_KW@0..3 "pub"
-    WHITESPACE@3..4 " "
-    STRUCT_KW@4..10 "struct"
-    WHITESPACE@10..11 " "
-    NAME@11..16
-      IDENT@11..16 "Cache"
-    TUPLE_FIELD_LIST@16..72
-      L_PAREN@16..17 "("
-      WHITESPACE@17..22 "\n    "
-      TUPLE_FIELD@22..68
-        PATH_TYPE@22..68
-          PATH@22..68
-            PATH_SEGMENT@22..68
-              NAME_REF@22..29
-                IDENT@22..29 "RefCell"
-              GENERIC_ARG_LIST@29..68
-                L_ANGLE@29..30 "<"
-                TYPE_ARG@30..68
-                  PATH_TYPE@30..68
-                    PATH@30..68
-                      PATH_SEGMENT@30..68
-                        NAME_REF@30..37
-                          IDENT@30..37 "HashMap"
-                        GENERIC_ARG_LIST@37..68
-                          L_ANGLE@37..38 "<"
-                          WHITESPACE@38..47 "\n        "
-                          TYPE_ARG@47..53
-                            PATH_TYPE@47..53
-                              PATH@47..53
-                                PATH_SEGMENT@47..53
-                                  NAME_REF@47..53
-                                    IDENT@47..53 "TypeId"
-                          COMMA@53..54 ","
-                          WHITESPACE@54..63 "\n        "
-                          TYPE_ARG@63..68
-                            PATH_TYPE@63..68
-                              PATH@63..68
-                                PATH_SEGMENT@63..68
-                                  NAME_REF@63..66
-                                    IDENT@63..66 "Box"
-                                  GENERIC_ARG_LIST@66..68
-                                    L_ANGLE@66..67 "<"
-                                    TYPE_ARG@67..68
-                                      ERROR@67..68
-                                        AT@67..68 "@"
-      WHITESPACE@68..69 " "
-      TUPLE_FIELD@69..72
-        PATH_TYPE@69..72
-          PATH@69..72
-            PATH_SEGMENT@69..72
-              NAME_REF@69..72
-                IDENT@69..72 "Any"
-      ERROR@72..72
-  ERROR@72..73
-    R_ANGLE@72..73 ">"
-  ERROR@73..74
-    COMMA@73..74 ","
-  WHITESPACE@74..79 "\n    "
-  ERROR@79..80
-    R_ANGLE@79..80 ">"
-  ERROR@80..81
-    R_ANGLE@80..81 ">"
-  WHITESPACE@81..82 "\n"
-  ERROR@82..83
-    R_PAREN@82..83 ")"
-  ERROR@83..84
-    SEMICOLON@83..84 ";"
-  WHITESPACE@84..86 "\n\n"
-error 67..67: expected type
-error 68..68: expected COMMA
-error 68..68: expected R_ANGLE
-error 68..68: expected COMMA
-error 68..68: expected R_ANGLE
-error 68..68: expected COMMA
-error 68..68: expected R_ANGLE
-error 68..68: expected COMMA
-error 72..72: expected COMMA
-error 72..72: expected a type
-error 72..72: expected R_PAREN
-error 72..72: expected SEMICOLON
-error 72..72: expected an item
-error 73..73: expected an item
-error 79..79: expected an item
-error 80..80: expected an item
-error 82..82: expected an item
-error 83..83: expected an item
+SOURCE_FILE
+  STRUCT
+    VISIBILITY
+      PUB_KW "pub"
+    WHITESPACE " "
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "Cache"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      WHITESPACE "\n    "
+      TUPLE_FIELD
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "RefCell"
+              GENERIC_ARG_LIST
+                L_ANGLE "<"
+                TYPE_ARG
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "HashMap"
+                        GENERIC_ARG_LIST
+                          L_ANGLE "<"
+                          WHITESPACE "\n        "
+                          TYPE_ARG
+                            PATH_TYPE
+                              PATH
+                                PATH_SEGMENT
+                                  NAME_REF
+                                    IDENT "TypeId"
+                          COMMA ","
+                          WHITESPACE "\n        "
+                          TYPE_ARG
+                            PATH_TYPE
+                              PATH
+                                PATH_SEGMENT
+                                  NAME_REF
+                                    IDENT "Box"
+                                  GENERIC_ARG_LIST
+                                    L_ANGLE "<"
+                                    TYPE_ARG
+                                      ERROR
+                                        AT "@"
+      WHITESPACE " "
+      TUPLE_FIELD
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Any"
+      ERROR
+  ERROR
+    R_ANGLE ">"
+  ERROR
+    COMMA ","
+  WHITESPACE "\n    "
+  ERROR
+    R_ANGLE ">"
+  ERROR
+    R_ANGLE ">"
+  WHITESPACE "\n"
+  ERROR
+    R_PAREN ")"
+  ERROR
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+error 67: expected type
+error 68: expected COMMA
+error 68: expected R_ANGLE
+error 68: expected COMMA
+error 68: expected R_ANGLE
+error 68: expected COMMA
+error 68: expected R_ANGLE
+error 68: expected COMMA
+error 72: expected COMMA
+error 72: expected a type
+error 72: expected R_PAREN
+error 72: expected SEMICOLON
+error 72: expected an item
+error 73: expected an item
+error 79: expected an item
+error 80: expected an item
+error 82: expected an item
+error 83: expected an item
diff --git a/crates/parser/test_data/parser/err/0013_invalid_type.txt b/crates/parser/test_data/parser/err/0013_invalid_type.txt
deleted file mode 100644
index eec84a0c67d..00000000000
--- a/crates/parser/test_data/parser/err/0013_invalid_type.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    VISIBILITY
-      PUB_KW "pub"
-    WHITESPACE " "
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "Cache"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      WHITESPACE "\n    "
-      TUPLE_FIELD
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "RefCell"
-              GENERIC_ARG_LIST
-                L_ANGLE "<"
-                TYPE_ARG
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "HashMap"
-                        GENERIC_ARG_LIST
-                          L_ANGLE "<"
-                          WHITESPACE "\n        "
-                          TYPE_ARG
-                            PATH_TYPE
-                              PATH
-                                PATH_SEGMENT
-                                  NAME_REF
-                                    IDENT "TypeId"
-                          COMMA ","
-                          WHITESPACE "\n        "
-                          TYPE_ARG
-                            PATH_TYPE
-                              PATH
-                                PATH_SEGMENT
-                                  NAME_REF
-                                    IDENT "Box"
-                                  GENERIC_ARG_LIST
-                                    L_ANGLE "<"
-                                    TYPE_ARG
-                                      ERROR
-                                        AT "@"
-      WHITESPACE " "
-      TUPLE_FIELD
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Any"
-      ERROR
-  ERROR
-    R_ANGLE ">"
-  ERROR
-    COMMA ","
-  WHITESPACE "\n    "
-  ERROR
-    R_ANGLE ">"
-  ERROR
-    R_ANGLE ">"
-  WHITESPACE "\n"
-  ERROR
-    R_PAREN ")"
-  ERROR
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-error 67: expected type
-error 68: expected COMMA
-error 68: expected R_ANGLE
-error 68: expected COMMA
-error 68: expected R_ANGLE
-error 68: expected COMMA
-error 68: expected R_ANGLE
-error 68: expected COMMA
-error 72: expected COMMA
-error 72: expected a type
-error 72: expected R_PAREN
-error 72: expected SEMICOLON
-error 72: expected an item
-error 73: expected an item
-error 79: expected an item
-error 80: expected an item
-error 82: expected an item
-error 83: expected an item
diff --git a/crates/parser/test_data/parser/err/0014_where_no_bounds.rast b/crates/parser/test_data/parser/err/0014_where_no_bounds.rast
index 9178cf3b7f1..fd2f9ada33d 100644
--- a/crates/parser/test_data/parser/err/0014_where_no_bounds.rast
+++ b/crates/parser/test_data/parser/err/0014_where_no_bounds.rast
@@ -1,32 +1,32 @@
-SOURCE_FILE@0..23
-  FN@0..22
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    GENERIC_PARAM_LIST@6..9
-      L_ANGLE@6..7 "<"
-      TYPE_PARAM@7..8
-        NAME@7..8
-          IDENT@7..8 "T"
-      R_ANGLE@8..9 ">"
-    PARAM_LIST@9..11
-      L_PAREN@9..10 "("
-      R_PAREN@10..11 ")"
-    WHITESPACE@11..12 " "
-    WHERE_CLAUSE@12..19
-      WHERE_KW@12..17 "where"
-      WHITESPACE@17..18 " "
-      WHERE_PRED@18..19
-        PATH_TYPE@18..19
-          PATH@18..19
-            PATH_SEGMENT@18..19
-              NAME_REF@18..19
-                IDENT@18..19 "T"
-    WHITESPACE@19..20 " "
-    BLOCK_EXPR@20..22
-      STMT_LIST@20..22
-        L_CURLY@20..21 "{"
-        R_CURLY@21..22 "}"
-  WHITESPACE@22..23 "\n"
-error 19..19: expected colon
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 19: expected colon
diff --git a/crates/parser/test_data/parser/err/0014_where_no_bounds.txt b/crates/parser/test_data/parser/err/0014_where_no_bounds.txt
deleted file mode 100644
index fd2f9ada33d..00000000000
--- a/crates/parser/test_data/parser/err/0014_where_no_bounds.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 19: expected colon
diff --git a/crates/parser/test_data/parser/err/0015_curly_in_params.rast b/crates/parser/test_data/parser/err/0015_curly_in_params.rast
index a3c25b450a9..8e169320d95 100644
--- a/crates/parser/test_data/parser/err/0015_curly_in_params.rast
+++ b/crates/parser/test_data/parser/err/0015_curly_in_params.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..14
-  FN@0..7
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..7
-      L_PAREN@6..7 "("
-  ERROR@7..8
-    R_CURLY@7..8 "}"
-  ERROR@8..9
-    R_PAREN@8..9 ")"
-  WHITESPACE@9..10 " "
-  ERROR@10..13
-    L_CURLY@10..11 "{"
-    WHITESPACE@11..12 "\n"
-    R_CURLY@12..13 "}"
-  WHITESPACE@13..14 "\n"
-error 7..7: expected value parameter
-error 7..7: expected R_PAREN
-error 7..7: expected a block
-error 7..7: unmatched `}`
-error 8..8: expected an item
-error 10..10: expected an item
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+  ERROR
+    R_CURLY "}"
+  ERROR
+    R_PAREN ")"
+  WHITESPACE " "
+  ERROR
+    L_CURLY "{"
+    WHITESPACE "\n"
+    R_CURLY "}"
+  WHITESPACE "\n"
+error 7: expected value parameter
+error 7: expected R_PAREN
+error 7: expected a block
+error 7: unmatched `}`
+error 8: expected an item
+error 10: expected an item
diff --git a/crates/parser/test_data/parser/err/0015_curly_in_params.txt b/crates/parser/test_data/parser/err/0015_curly_in_params.txt
deleted file mode 100644
index 8e169320d95..00000000000
--- a/crates/parser/test_data/parser/err/0015_curly_in_params.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-  ERROR
-    R_CURLY "}"
-  ERROR
-    R_PAREN ")"
-  WHITESPACE " "
-  ERROR
-    L_CURLY "{"
-    WHITESPACE "\n"
-    R_CURLY "}"
-  WHITESPACE "\n"
-error 7: expected value parameter
-error 7: expected R_PAREN
-error 7: expected a block
-error 7: unmatched `}`
-error 8: expected an item
-error 10: expected an item
diff --git a/crates/parser/test_data/parser/err/0016_missing_semi.rast b/crates/parser/test_data/parser/err/0016_missing_semi.rast
index 30e76de8340..c48c35bf822 100644
--- a/crates/parser/test_data/parser/err/0016_missing_semi.rast
+++ b/crates/parser/test_data/parser/err/0016_missing_semi.rast
@@ -1,44 +1,44 @@
-SOURCE_FILE@0..56
-  FN@0..55
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..55
-      STMT_LIST@9..55
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..38
-          CALL_EXPR@15..38
-            PATH_EXPR@15..18
-              PATH@15..18
-                PATH_SEGMENT@15..18
-                  NAME_REF@15..18
-                    IDENT@15..18 "foo"
-            ARG_LIST@18..38
-              L_PAREN@18..19 "("
-              WHITESPACE@19..28 "\n        "
-              LITERAL@28..29
-                INT_NUMBER@28..29 "1"
-              COMMA@29..30 ","
-              WHITESPACE@30..31 " "
-              LITERAL@31..32
-                INT_NUMBER@31..32 "2"
-              WHITESPACE@32..37 "\n    "
-              R_PAREN@37..38 ")"
-        WHITESPACE@38..43 "\n    "
-        EXPR_STMT@43..53
-          RETURN_EXPR@43..52
-            RETURN_KW@43..49 "return"
-            WHITESPACE@49..50 " "
-            LITERAL@50..52
-              INT_NUMBER@50..52 "92"
-          SEMICOLON@52..53 ";"
-        WHITESPACE@53..54 "\n"
-        R_CURLY@54..55 "}"
-  WHITESPACE@55..56 "\n"
-error 38..38: expected SEMICOLON
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+            ARG_LIST
+              L_PAREN "("
+              WHITESPACE "\n        "
+              LITERAL
+                INT_NUMBER "1"
+              COMMA ","
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE "\n    "
+              R_PAREN ")"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RETURN_EXPR
+            RETURN_KW "return"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 38: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0016_missing_semi.txt b/crates/parser/test_data/parser/err/0016_missing_semi.txt
deleted file mode 100644
index c48c35bf822..00000000000
--- a/crates/parser/test_data/parser/err/0016_missing_semi.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-            ARG_LIST
-              L_PAREN "("
-              WHITESPACE "\n        "
-              LITERAL
-                INT_NUMBER "1"
-              COMMA ","
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE "\n    "
-              R_PAREN ")"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RETURN_EXPR
-            RETURN_KW "return"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 38: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0017_incomplete_binexpr.rast b/crates/parser/test_data/parser/err/0017_incomplete_binexpr.rast
index 9d2c7c69482..80735646290 100644
--- a/crates/parser/test_data/parser/err/0017_incomplete_binexpr.rast
+++ b/crates/parser/test_data/parser/err/0017_incomplete_binexpr.rast
@@ -1,47 +1,47 @@
-SOURCE_FILE@0..47
-  FN@0..46
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..16
-      L_PAREN@6..7 "("
-      PARAM@7..15
-        IDENT_PAT@7..10
-          NAME@7..10
-            IDENT@7..10 "foo"
-        COLON@10..11 ":"
-        WHITESPACE@11..12 " "
-        PATH_TYPE@12..15
-          PATH@12..15
-            PATH_SEGMENT@12..15
-              NAME_REF@12..15
-                IDENT@12..15 "i32"
-      R_PAREN@15..16 ")"
-    WHITESPACE@16..17 " "
-    BLOCK_EXPR@17..46
-      STMT_LIST@17..46
-        L_CURLY@17..18 "{"
-        WHITESPACE@18..23 "\n    "
-        LET_STMT@23..36
-          LET_KW@23..26 "let"
-          WHITESPACE@26..27 " "
-          IDENT_PAT@27..30
-            NAME@27..30
-              IDENT@27..30 "bar"
-          WHITESPACE@30..31 " "
-          EQ@31..32 "="
-          WHITESPACE@32..33 " "
-          LITERAL@33..35
-            INT_NUMBER@33..35 "92"
-          SEMICOLON@35..36 ";"
-        WHITESPACE@36..41 "\n    "
-        BIN_EXPR@41..44
-          LITERAL@41..42
-            INT_NUMBER@41..42 "1"
-          WHITESPACE@42..43 " "
-          PLUS@43..44 "+"
-        WHITESPACE@44..45 "\n"
-        R_CURLY@45..46 "}"
-  WHITESPACE@46..47 "\n"
-error 44..44: expected expression
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "foo"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "bar"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        BIN_EXPR
+          LITERAL
+            INT_NUMBER "1"
+          WHITESPACE " "
+          PLUS "+"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 44: expected expression
diff --git a/crates/parser/test_data/parser/err/0017_incomplete_binexpr.txt b/crates/parser/test_data/parser/err/0017_incomplete_binexpr.txt
deleted file mode 100644
index 80735646290..00000000000
--- a/crates/parser/test_data/parser/err/0017_incomplete_binexpr.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "foo"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "bar"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        BIN_EXPR
-          LITERAL
-            INT_NUMBER "1"
-          WHITESPACE " "
-          PLUS "+"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 44: expected expression
diff --git a/crates/parser/test_data/parser/err/0018_incomplete_fn.rast b/crates/parser/test_data/parser/err/0018_incomplete_fn.rast
index 55ac5bc62ad..799720b5574 100644
--- a/crates/parser/test_data/parser/err/0018_incomplete_fn.rast
+++ b/crates/parser/test_data/parser/err/0018_incomplete_fn.rast
@@ -1,133 +1,133 @@
-SOURCE_FILE@0..183
-  IMPL@0..182
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..13
-      PATH@5..13
-        PATH_SEGMENT@5..13
-          NAME_REF@5..13
-            IDENT@5..13 "FnScopes"
-    WHITESPACE@13..14 " "
-    ASSOC_ITEM_LIST@14..182
-      L_CURLY@14..15 "{"
-      WHITESPACE@15..20 "\n    "
-      FN@20..161
-        FN_KW@20..22 "fn"
-        WHITESPACE@22..23 " "
-        NAME@23..32
-          IDENT@23..32 "new_scope"
-        PARAM_LIST@32..35
-          L_PAREN@32..33 "("
-          PARAM@33..34
-            REF_PAT@33..34
-              AMP@33..34 "&"
-          R_PAREN@34..35 ")"
-        WHITESPACE@35..36 " "
-        RET_TYPE@36..46
-          THIN_ARROW@36..38 "->"
-          WHITESPACE@38..39 " "
-          PATH_TYPE@39..46
-            PATH@39..46
-              PATH_SEGMENT@39..46
-                NAME_REF@39..46
-                  IDENT@39..46 "ScopeId"
-        WHITESPACE@46..47 " "
-        BLOCK_EXPR@47..161
-          STMT_LIST@47..161
-            L_CURLY@47..48 "{"
-            WHITESPACE@48..57 "\n        "
-            LET_STMT@57..85
-              LET_KW@57..60 "let"
-              WHITESPACE@60..61 " "
-              IDENT_PAT@61..64
-                NAME@61..64
-                  IDENT@61..64 "res"
-              WHITESPACE@64..65 " "
-              EQ@65..66 "="
-              WHITESPACE@66..67 " "
-              METHOD_CALL_EXPR@67..84
-                FIELD_EXPR@67..78
-                  PATH_EXPR@67..71
-                    PATH@67..71
-                      PATH_SEGMENT@67..71
-                        NAME_REF@67..71
-                          SELF_KW@67..71 "self"
-                  DOT@71..72 "."
-                  NAME_REF@72..78
-                    IDENT@72..78 "scopes"
-                DOT@78..79 "."
-                NAME_REF@79..82
-                  IDENT@79..82 "len"
-                ARG_LIST@82..84
-                  L_PAREN@82..83 "("
-                  R_PAREN@83..84 ")"
-              SEMICOLON@84..85 ";"
-            WHITESPACE@85..94 "\n        "
-            METHOD_CALL_EXPR@94..155
-              FIELD_EXPR@94..105
-                PATH_EXPR@94..98
-                  PATH@94..98
-                    PATH_SEGMENT@94..98
-                      NAME_REF@94..98
-                        SELF_KW@94..98 "self"
-                DOT@98..99 "."
-                NAME_REF@99..105
-                  IDENT@99..105 "scopes"
-              DOT@105..106 "."
-              NAME_REF@106..110
-                IDENT@106..110 "push"
-              ARG_LIST@110..155
-                L_PAREN@110..111 "("
-                RECORD_EXPR@111..154
-                  PATH@111..120
-                    PATH_SEGMENT@111..120
-                      NAME_REF@111..120
-                        IDENT@111..120 "ScopeData"
-                  WHITESPACE@120..121 " "
-                  RECORD_EXPR_FIELD_LIST@121..154
-                    L_CURLY@121..122 "{"
-                    WHITESPACE@122..123 " "
-                    RECORD_EXPR_FIELD@123..135
-                      NAME_REF@123..129
-                        IDENT@123..129 "parent"
-                      COLON@129..130 ":"
-                      WHITESPACE@130..131 " "
-                      PATH_EXPR@131..135
-                        PATH@131..135
-                          PATH_SEGMENT@131..135
-                            NAME_REF@131..135
-                              IDENT@131..135 "None"
-                    COMMA@135..136 ","
-                    WHITESPACE@136..137 " "
-                    RECORD_EXPR_FIELD@137..152
-                      NAME_REF@137..144
-                        IDENT@137..144 "entries"
-                      COLON@144..145 ":"
-                      WHITESPACE@145..146 " "
-                      MACRO_CALL@146..152
-                        PATH@146..149
-                          PATH_SEGMENT@146..149
-                            NAME_REF@146..149
-                              IDENT@146..149 "vec"
-                        BANG@149..150 "!"
-                        TOKEN_TREE@150..152
-                          L_BRACK@150..151 "["
-                          R_BRACK@151..152 "]"
-                    WHITESPACE@152..153 " "
-                    R_CURLY@153..154 "}"
-                R_PAREN@154..155 ")"
-            WHITESPACE@155..160 "\n    "
-            R_CURLY@160..161 "}"
-      WHITESPACE@161..167 "\n\n    "
-      FN@167..180
-        FN_KW@167..169 "fn"
-        WHITESPACE@169..170 " "
-        NAME@170..180
-          IDENT@170..180 "set_parent"
-      WHITESPACE@180..181 "\n"
-      R_CURLY@181..182 "}"
-  WHITESPACE@182..183 "\n"
-error 34..34: expected pattern
-error 34..34: missing type for function parameter
-error 180..180: expected function arguments
-error 180..180: expected a block
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "FnScopes"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "new_scope"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            REF_PAT
+              AMP "&"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "ScopeId"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            LET_STMT
+              LET_KW "let"
+              WHITESPACE " "
+              IDENT_PAT
+                NAME
+                  IDENT "res"
+              WHITESPACE " "
+              EQ "="
+              WHITESPACE " "
+              METHOD_CALL_EXPR
+                FIELD_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          SELF_KW "self"
+                  DOT "."
+                  NAME_REF
+                    IDENT "scopes"
+                DOT "."
+                NAME_REF
+                  IDENT "len"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              SEMICOLON ";"
+            WHITESPACE "\n        "
+            METHOD_CALL_EXPR
+              FIELD_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        SELF_KW "self"
+                DOT "."
+                NAME_REF
+                  IDENT "scopes"
+              DOT "."
+              NAME_REF
+                IDENT "push"
+              ARG_LIST
+                L_PAREN "("
+                RECORD_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "ScopeData"
+                  WHITESPACE " "
+                  RECORD_EXPR_FIELD_LIST
+                    L_CURLY "{"
+                    WHITESPACE " "
+                    RECORD_EXPR_FIELD
+                      NAME_REF
+                        IDENT "parent"
+                      COLON ":"
+                      WHITESPACE " "
+                      PATH_EXPR
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "None"
+                    COMMA ","
+                    WHITESPACE " "
+                    RECORD_EXPR_FIELD
+                      NAME_REF
+                        IDENT "entries"
+                      COLON ":"
+                      WHITESPACE " "
+                      MACRO_CALL
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "vec"
+                        BANG "!"
+                        TOKEN_TREE
+                          L_BRACK "["
+                          R_BRACK "]"
+                    WHITESPACE " "
+                    R_CURLY "}"
+                R_PAREN ")"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+      WHITESPACE "\n\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "set_parent"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
+error 34: expected pattern
+error 34: missing type for function parameter
+error 180: expected function arguments
+error 180: expected a block
diff --git a/crates/parser/test_data/parser/err/0018_incomplete_fn.txt b/crates/parser/test_data/parser/err/0018_incomplete_fn.txt
deleted file mode 100644
index 799720b5574..00000000000
--- a/crates/parser/test_data/parser/err/0018_incomplete_fn.txt
+++ /dev/null
@@ -1,133 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "FnScopes"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "new_scope"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            REF_PAT
-              AMP "&"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "ScopeId"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            LET_STMT
-              LET_KW "let"
-              WHITESPACE " "
-              IDENT_PAT
-                NAME
-                  IDENT "res"
-              WHITESPACE " "
-              EQ "="
-              WHITESPACE " "
-              METHOD_CALL_EXPR
-                FIELD_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          SELF_KW "self"
-                  DOT "."
-                  NAME_REF
-                    IDENT "scopes"
-                DOT "."
-                NAME_REF
-                  IDENT "len"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              SEMICOLON ";"
-            WHITESPACE "\n        "
-            METHOD_CALL_EXPR
-              FIELD_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        SELF_KW "self"
-                DOT "."
-                NAME_REF
-                  IDENT "scopes"
-              DOT "."
-              NAME_REF
-                IDENT "push"
-              ARG_LIST
-                L_PAREN "("
-                RECORD_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "ScopeData"
-                  WHITESPACE " "
-                  RECORD_EXPR_FIELD_LIST
-                    L_CURLY "{"
-                    WHITESPACE " "
-                    RECORD_EXPR_FIELD
-                      NAME_REF
-                        IDENT "parent"
-                      COLON ":"
-                      WHITESPACE " "
-                      PATH_EXPR
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "None"
-                    COMMA ","
-                    WHITESPACE " "
-                    RECORD_EXPR_FIELD
-                      NAME_REF
-                        IDENT "entries"
-                      COLON ":"
-                      WHITESPACE " "
-                      MACRO_CALL
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "vec"
-                        BANG "!"
-                        TOKEN_TREE
-                          L_BRACK "["
-                          R_BRACK "]"
-                    WHITESPACE " "
-                    R_CURLY "}"
-                R_PAREN ")"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-      WHITESPACE "\n\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "set_parent"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
-error 34: expected pattern
-error 34: missing type for function parameter
-error 180: expected function arguments
-error 180: expected a block
diff --git a/crates/parser/test_data/parser/err/0019_let_recover.rast b/crates/parser/test_data/parser/err/0019_let_recover.rast
index 919ce545b76..7d62e0cc14f 100644
--- a/crates/parser/test_data/parser/err/0019_let_recover.rast
+++ b/crates/parser/test_data/parser/err/0019_let_recover.rast
@@ -1,107 +1,107 @@
-SOURCE_FILE@0..139
-  FN@0..138
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..138
-      STMT_LIST@9..138
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..24
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          IDENT_PAT@19..22
-            NAME@19..22
-              IDENT@19..22 "foo"
-          WHITESPACE@22..23 " "
-          EQ@23..24 "="
-        WHITESPACE@24..29 "\n    "
-        LET_STMT@29..41
-          LET_KW@29..32 "let"
-          WHITESPACE@32..33 " "
-          IDENT_PAT@33..36
-            NAME@33..36
-              IDENT@33..36 "bar"
-          WHITESPACE@36..37 " "
-          EQ@37..38 "="
-          WHITESPACE@38..39 " "
-          LITERAL@39..40
-            INT_NUMBER@39..40 "1"
-          SEMICOLON@40..41 ";"
-        WHITESPACE@41..46 "\n    "
-        LET_STMT@46..49
-          LET_KW@46..49 "let"
-        WHITESPACE@49..54 "\n    "
-        LET_STMT@54..67
-          LET_KW@54..57 "let"
-          WHITESPACE@57..58 " "
-          IDENT_PAT@58..61
-            NAME@58..61
-              IDENT@58..61 "baz"
-          WHITESPACE@61..62 " "
-          EQ@62..63 "="
-          WHITESPACE@63..64 " "
-          LITERAL@64..66
-            INT_NUMBER@64..66 "92"
-          SEMICOLON@66..67 ";"
-        WHITESPACE@67..72 "\n    "
-        LET_STMT@72..75
-          LET_KW@72..75 "let"
-        WHITESPACE@75..80 "\n    "
-        EXPR_STMT@80..90
-          IF_EXPR@80..90
-            IF_KW@80..82 "if"
-            WHITESPACE@82..83 " "
-            CONDITION@83..87
-              LITERAL@83..87
-                TRUE_KW@83..87 "true"
-            WHITESPACE@87..88 " "
-            BLOCK_EXPR@88..90
-              STMT_LIST@88..90
-                L_CURLY@88..89 "{"
-                R_CURLY@89..90 "}"
-        WHITESPACE@90..95 "\n    "
-        LET_STMT@95..98
-          LET_KW@95..98 "let"
-        WHITESPACE@98..103 "\n    "
-        EXPR_STMT@103..116
-          WHILE_EXPR@103..116
-            WHILE_KW@103..108 "while"
-            WHITESPACE@108..109 " "
-            CONDITION@109..113
-              LITERAL@109..113
-                TRUE_KW@109..113 "true"
-            WHITESPACE@113..114 " "
-            BLOCK_EXPR@114..116
-              STMT_LIST@114..116
-                L_CURLY@114..115 "{"
-                R_CURLY@115..116 "}"
-        WHITESPACE@116..121 "\n    "
-        LET_STMT@121..124
-          LET_KW@121..124 "let"
-        WHITESPACE@124..129 "\n    "
-        LOOP_EXPR@129..136
-          LOOP_KW@129..133 "loop"
-          WHITESPACE@133..134 " "
-          BLOCK_EXPR@134..136
-            STMT_LIST@134..136
-              L_CURLY@134..135 "{"
-              R_CURLY@135..136 "}"
-        WHITESPACE@136..137 "\n"
-        R_CURLY@137..138 "}"
-  WHITESPACE@138..139 "\n"
-error 24..24: expected expression
-error 24..24: expected SEMICOLON
-error 49..49: expected pattern
-error 49..49: expected SEMICOLON
-error 75..75: expected pattern
-error 75..75: expected SEMICOLON
-error 98..98: expected pattern
-error 98..98: expected SEMICOLON
-error 124..124: expected pattern
-error 124..124: expected SEMICOLON
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "foo"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "11"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "bar"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "baz"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          WHILE_EXPR
+            WHILE_KW "while"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+        WHITESPACE "\n    "
+        LOOP_EXPR
+          LOOP_KW "loop"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 27: expected SEMICOLON
+error 52: expected pattern
+error 52: expected SEMICOLON
+error 78: expected pattern
+error 78: expected SEMICOLON
+error 101: expected pattern
+error 101: expected SEMICOLON
+error 127: expected pattern
+error 127: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0019_let_recover.txt b/crates/parser/test_data/parser/err/0019_let_recover.txt
deleted file mode 100644
index 7d62e0cc14f..00000000000
--- a/crates/parser/test_data/parser/err/0019_let_recover.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "foo"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "11"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "bar"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "baz"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          WHILE_EXPR
-            WHILE_KW "while"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-        WHITESPACE "\n    "
-        LOOP_EXPR
-          LOOP_KW "loop"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 27: expected SEMICOLON
-error 52: expected pattern
-error 52: expected SEMICOLON
-error 78: expected pattern
-error 78: expected SEMICOLON
-error 101: expected pattern
-error 101: expected SEMICOLON
-error 127: expected pattern
-error 127: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0020_fn_recover.rast b/crates/parser/test_data/parser/err/0020_fn_recover.rast
index 9ed2b14745c..56d124cb95b 100644
--- a/crates/parser/test_data/parser/err/0020_fn_recover.rast
+++ b/crates/parser/test_data/parser/err/0020_fn_recover.rast
@@ -1,21 +1,21 @@
-SOURCE_FILE@0..16
-  FN@0..2
-    FN_KW@0..2 "fn"
-  WHITESPACE@2..4 "\n\n"
-  FN@4..15
-    FN_KW@4..6 "fn"
-    WHITESPACE@6..7 " "
-    NAME@7..10
-      IDENT@7..10 "foo"
-    PARAM_LIST@10..12
-      L_PAREN@10..11 "("
-      R_PAREN@11..12 ")"
-    WHITESPACE@12..13 " "
-    BLOCK_EXPR@13..15
-      STMT_LIST@13..15
-        L_CURLY@13..14 "{"
-        R_CURLY@14..15 "}"
-  WHITESPACE@15..16 "\n"
-error 2..2: expected a name
-error 2..2: expected function arguments
-error 2..2: expected a block
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 2: expected a name
+error 2: expected function arguments
+error 2: expected a block
diff --git a/crates/parser/test_data/parser/err/0020_fn_recover.txt b/crates/parser/test_data/parser/err/0020_fn_recover.txt
deleted file mode 100644
index 56d124cb95b..00000000000
--- a/crates/parser/test_data/parser/err/0020_fn_recover.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 2: expected a name
-error 2: expected function arguments
-error 2: expected a block
diff --git a/crates/parser/test_data/parser/err/0021_incomplete_param.rast b/crates/parser/test_data/parser/err/0021_incomplete_param.rast
index e2b6a3fd7e4..762840aa2a9 100644
--- a/crates/parser/test_data/parser/err/0021_incomplete_param.rast
+++ b/crates/parser/test_data/parser/err/0021_incomplete_param.rast
@@ -1,34 +1,34 @@
-SOURCE_FILE@0..22
-  FN@0..21
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..17
-      L_PAREN@6..7 "("
-      PARAM@7..13
-        IDENT_PAT@7..8
-          NAME@7..8
-            IDENT@7..8 "x"
-        COLON@8..9 ":"
-        WHITESPACE@9..10 " "
-        PATH_TYPE@10..13
-          PATH@10..13
-            PATH_SEGMENT@10..13
-              NAME_REF@10..13
-                IDENT@10..13 "i32"
-      COMMA@13..14 ","
-      WHITESPACE@14..15 " "
-      PARAM@15..16
-        IDENT_PAT@15..16
-          NAME@15..16
-            IDENT@15..16 "y"
-      R_PAREN@16..17 ")"
-    WHITESPACE@17..18 " "
-    BLOCK_EXPR@18..21
-      STMT_LIST@18..21
-        L_CURLY@18..19 "{"
-        WHITESPACE@19..20 "\n"
-        R_CURLY@20..21 "}"
-  WHITESPACE@21..22 "\n"
-error 16..16: missing type for function parameter
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      COMMA ","
+      WHITESPACE " "
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "y"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 16: missing type for function parameter
diff --git a/crates/parser/test_data/parser/err/0021_incomplete_param.txt b/crates/parser/test_data/parser/err/0021_incomplete_param.txt
deleted file mode 100644
index 762840aa2a9..00000000000
--- a/crates/parser/test_data/parser/err/0021_incomplete_param.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      COMMA ","
-      WHITESPACE " "
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "y"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 16: missing type for function parameter
diff --git a/crates/parser/test_data/parser/err/0022_bad_exprs.rast b/crates/parser/test_data/parser/err/0022_bad_exprs.rast
index d4341371a71..900394bd960 100644
--- a/crates/parser/test_data/parser/err/0022_bad_exprs.rast
+++ b/crates/parser/test_data/parser/err/0022_bad_exprs.rast
@@ -1,171 +1,171 @@
-SOURCE_FILE@0..112
-  FN@0..33
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "a"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..33
-      STMT_LIST@7..33
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        EXPR_STMT@9..17
-          ARRAY_EXPR@9..17
-            L_BRACK@9..10 "["
-            LITERAL@10..11
-              INT_NUMBER@10..11 "1"
-            COMMA@11..12 ","
-            WHITESPACE@12..13 " "
-            LITERAL@13..14
-              INT_NUMBER@13..14 "2"
-            COMMA@14..15 ","
-            WHITESPACE@15..16 " "
-            ERROR@16..17
-              AT@16..17 "@"
-        ERROR@17..18
-          COMMA@17..18 ","
-        WHITESPACE@18..19 " "
-        STRUCT@19..26
-          STRUCT_KW@19..25 "struct"
-          ERROR@25..26
-            COMMA@25..26 ","
-        WHITESPACE@26..27 " "
-        LET_STMT@27..31
-          LET_KW@27..30 "let"
-          ERROR@30..31
-            R_BRACK@30..31 "]"
-        WHITESPACE@31..32 " "
-        R_CURLY@32..33 "}"
-  WHITESPACE@33..34 "\n"
-  FN@34..68
-    FN_KW@34..36 "fn"
-    WHITESPACE@36..37 " "
-    NAME@37..38
-      IDENT@37..38 "b"
-    PARAM_LIST@38..40
-      L_PAREN@38..39 "("
-      R_PAREN@39..40 ")"
-    WHITESPACE@40..41 " "
-    BLOCK_EXPR@41..68
-      STMT_LIST@41..68
-        L_CURLY@41..42 "{"
-        WHITESPACE@42..43 " "
-        EXPR_STMT@43..54
-          CALL_EXPR@43..54
-            PATH_EXPR@43..46
-              PATH@43..46
-                PATH_SEGMENT@43..46
-                  NAME_REF@43..46
-                    IDENT@43..46 "foo"
-            ARG_LIST@46..54
-              L_PAREN@46..47 "("
-              LITERAL@47..48
-                INT_NUMBER@47..48 "1"
-              COMMA@48..49 ","
-              WHITESPACE@49..50 " "
-              LITERAL@50..51
-                INT_NUMBER@50..51 "2"
-              COMMA@51..52 ","
-              WHITESPACE@52..53 " "
-              ERROR@53..54
-                AT@53..54 "@"
-        ERROR@54..55
-          COMMA@54..55 ","
-        WHITESPACE@55..56 " "
-        IMPL@56..60
-          IMPL_KW@56..60 "impl"
-        ERROR@60..61
-          COMMA@60..61 ","
-        WHITESPACE@61..62 " "
-        LET_STMT@62..65
-          LET_KW@62..65 "let"
-        ERROR@65..66
-          R_PAREN@65..66 ")"
-        WHITESPACE@66..67 " "
-        R_CURLY@67..68 "}"
-  WHITESPACE@68..69 "\n"
-  FN@69..111
-    FN_KW@69..71 "fn"
-    WHITESPACE@71..72 " "
-    NAME@72..73
-      IDENT@72..73 "c"
-    PARAM_LIST@73..75
-      L_PAREN@73..74 "("
-      R_PAREN@74..75 ")"
-    WHITESPACE@75..76 " "
-    BLOCK_EXPR@76..111
-      STMT_LIST@76..111
-        L_CURLY@76..77 "{"
-        WHITESPACE@77..78 " "
-        EXPR_STMT@78..93
-          METHOD_CALL_EXPR@78..93
-            PATH_EXPR@78..81
-              PATH@78..81
-                PATH_SEGMENT@78..81
-                  NAME_REF@78..81
-                    IDENT@78..81 "foo"
-            DOT@81..82 "."
-            NAME_REF@82..85
-              IDENT@82..85 "bar"
-            ARG_LIST@85..93
-              L_PAREN@85..86 "("
-              LITERAL@86..87
-                INT_NUMBER@86..87 "1"
-              COMMA@87..88 ","
-              WHITESPACE@88..89 " "
-              LITERAL@89..90
-                INT_NUMBER@89..90 "2"
-              COMMA@90..91 ","
-              WHITESPACE@91..92 " "
-              ERROR@92..93
-                AT@92..93 "@"
-        ERROR@93..94
-          COMMA@93..94 ","
-        WHITESPACE@94..95 " "
-        ERROR@95..96
-          R_BRACK@95..96 "]"
-        ERROR@96..97
-          COMMA@96..97 ","
-        WHITESPACE@97..98 " "
-        TRAIT@98..104
-          TRAIT_KW@98..103 "trait"
-          ERROR@103..104
-            COMMA@103..104 ","
-        WHITESPACE@104..105 " "
-        LET_STMT@105..108
-          LET_KW@105..108 "let"
-        ERROR@108..109
-          R_PAREN@108..109 ")"
-        WHITESPACE@109..110 " "
-        R_CURLY@110..111 "}"
-  WHITESPACE@111..112 "\n"
-error 16..16: expected expression
-error 17..17: expected R_BRACK
-error 17..17: expected SEMICOLON
-error 17..17: expected expression
-error 25..25: expected a name
-error 26..26: expected `;`, `{`, or `(`
-error 30..30: expected pattern
-error 31..31: expected SEMICOLON
-error 53..53: expected expression
-error 54..54: expected SEMICOLON
-error 54..54: expected expression
-error 60..60: expected type
-error 60..60: expected `{`
-error 60..60: expected expression
-error 65..65: expected pattern
-error 65..65: expected SEMICOLON
-error 65..65: expected expression
-error 92..92: expected expression
-error 93..93: expected SEMICOLON
-error 93..93: expected expression
-error 95..95: expected expression
-error 96..96: expected expression
-error 103..103: expected a name
-error 104..104: expected `{`
-error 108..108: expected pattern
-error 108..108: expected SEMICOLON
-error 108..108: expected expression
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "a"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          ARRAY_EXPR
+            L_BRACK "["
+            LITERAL
+              INT_NUMBER "1"
+            COMMA ","
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+            COMMA ","
+            WHITESPACE " "
+            ERROR
+              AT "@"
+        ERROR
+          COMMA ","
+        WHITESPACE " "
+        STRUCT
+          STRUCT_KW "struct"
+          ERROR
+            COMMA ","
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          ERROR
+            R_BRACK "]"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "b"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+            ARG_LIST
+              L_PAREN "("
+              LITERAL
+                INT_NUMBER "1"
+              COMMA ","
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "2"
+              COMMA ","
+              WHITESPACE " "
+              ERROR
+                AT "@"
+        ERROR
+          COMMA ","
+        WHITESPACE " "
+        IMPL
+          IMPL_KW "impl"
+        ERROR
+          COMMA ","
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+        ERROR
+          R_PAREN ")"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "c"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          METHOD_CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+            DOT "."
+            NAME_REF
+              IDENT "bar"
+            ARG_LIST
+              L_PAREN "("
+              LITERAL
+                INT_NUMBER "1"
+              COMMA ","
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "2"
+              COMMA ","
+              WHITESPACE " "
+              ERROR
+                AT "@"
+        ERROR
+          COMMA ","
+        WHITESPACE " "
+        ERROR
+          R_BRACK "]"
+        ERROR
+          COMMA ","
+        WHITESPACE " "
+        TRAIT
+          TRAIT_KW "trait"
+          ERROR
+            COMMA ","
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+        ERROR
+          R_PAREN ")"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 16: expected expression
+error 17: expected R_BRACK
+error 17: expected SEMICOLON
+error 17: expected expression
+error 25: expected a name
+error 26: expected `;`, `{`, or `(`
+error 30: expected pattern
+error 31: expected SEMICOLON
+error 53: expected expression
+error 54: expected SEMICOLON
+error 54: expected expression
+error 60: expected type
+error 60: expected `{`
+error 60: expected expression
+error 65: expected pattern
+error 65: expected SEMICOLON
+error 65: expected expression
+error 92: expected expression
+error 93: expected SEMICOLON
+error 93: expected expression
+error 95: expected expression
+error 96: expected expression
+error 103: expected a name
+error 104: expected `{`
+error 108: expected pattern
+error 108: expected SEMICOLON
+error 108: expected expression
diff --git a/crates/parser/test_data/parser/err/0022_bad_exprs.txt b/crates/parser/test_data/parser/err/0022_bad_exprs.txt
deleted file mode 100644
index 900394bd960..00000000000
--- a/crates/parser/test_data/parser/err/0022_bad_exprs.txt
+++ /dev/null
@@ -1,171 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "a"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          ARRAY_EXPR
-            L_BRACK "["
-            LITERAL
-              INT_NUMBER "1"
-            COMMA ","
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-            COMMA ","
-            WHITESPACE " "
-            ERROR
-              AT "@"
-        ERROR
-          COMMA ","
-        WHITESPACE " "
-        STRUCT
-          STRUCT_KW "struct"
-          ERROR
-            COMMA ","
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          ERROR
-            R_BRACK "]"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "b"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-            ARG_LIST
-              L_PAREN "("
-              LITERAL
-                INT_NUMBER "1"
-              COMMA ","
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "2"
-              COMMA ","
-              WHITESPACE " "
-              ERROR
-                AT "@"
-        ERROR
-          COMMA ","
-        WHITESPACE " "
-        IMPL
-          IMPL_KW "impl"
-        ERROR
-          COMMA ","
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-        ERROR
-          R_PAREN ")"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "c"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          METHOD_CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-            DOT "."
-            NAME_REF
-              IDENT "bar"
-            ARG_LIST
-              L_PAREN "("
-              LITERAL
-                INT_NUMBER "1"
-              COMMA ","
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "2"
-              COMMA ","
-              WHITESPACE " "
-              ERROR
-                AT "@"
-        ERROR
-          COMMA ","
-        WHITESPACE " "
-        ERROR
-          R_BRACK "]"
-        ERROR
-          COMMA ","
-        WHITESPACE " "
-        TRAIT
-          TRAIT_KW "trait"
-          ERROR
-            COMMA ","
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-        ERROR
-          R_PAREN ")"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 16: expected expression
-error 17: expected R_BRACK
-error 17: expected SEMICOLON
-error 17: expected expression
-error 25: expected a name
-error 26: expected `;`, `{`, or `(`
-error 30: expected pattern
-error 31: expected SEMICOLON
-error 53: expected expression
-error 54: expected SEMICOLON
-error 54: expected expression
-error 60: expected type
-error 60: expected `{`
-error 60: expected expression
-error 65: expected pattern
-error 65: expected SEMICOLON
-error 65: expected expression
-error 92: expected expression
-error 93: expected SEMICOLON
-error 93: expected expression
-error 95: expected expression
-error 96: expected expression
-error 103: expected a name
-error 104: expected `{`
-error 108: expected pattern
-error 108: expected SEMICOLON
-error 108: expected expression
diff --git a/crates/parser/test_data/parser/err/0023_mismatched_paren.rast b/crates/parser/test_data/parser/err/0023_mismatched_paren.rast
index 671566e3837..1176400634c 100644
--- a/crates/parser/test_data/parser/err/0023_mismatched_paren.rast
+++ b/crates/parser/test_data/parser/err/0023_mismatched_paren.rast
@@ -1,44 +1,44 @@
-SOURCE_FILE@0..94
-  FN@0..55
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..55
-      STMT_LIST@10..55
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        MACRO_CALL@16..49
-          PATH@16..19
-            PATH_SEGMENT@16..19
-              NAME_REF@16..19
-                IDENT@16..19 "foo"
-          BANG@19..20 "!"
-          WHITESPACE@20..21 " "
-          TOKEN_TREE@21..49
-            L_PAREN@21..22 "("
-            WHITESPACE@22..31 "\n        "
-            IDENT@31..34 "bar"
-            COMMA@34..35 ","
-            WHITESPACE@35..36 " "
-            STRING@36..41 "\"baz\""
-            COMMA@41..42 ","
-            WHITESPACE@42..43 " "
-            INT_NUMBER@43..44 "1"
-            COMMA@44..45 ","
-            WHITESPACE@45..46 " "
-            FLOAT_NUMBER@46..49 "2.0"
-        WHITESPACE@49..54 "\n    "
-        R_CURLY@54..55 "}"
-  WHITESPACE@55..56 " "
-  COMMENT@56..91 "//~ ERROR incorrect c ..."
-  WHITESPACE@91..92 "\n"
-  ERROR@92..93
-    R_CURLY@92..93 "}"
-  WHITESPACE@93..94 "\n"
-error 49..49: unmatched `}`
-error 92..92: unmatched `}`
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MACRO_CALL
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "foo"
+          BANG "!"
+          WHITESPACE " "
+          TOKEN_TREE
+            L_PAREN "("
+            WHITESPACE "\n        "
+            IDENT "bar"
+            COMMA ","
+            WHITESPACE " "
+            STRING "\"baz\""
+            COMMA ","
+            WHITESPACE " "
+            INT_NUMBER "1"
+            COMMA ","
+            WHITESPACE " "
+            FLOAT_NUMBER "2.0"
+        WHITESPACE "\n    "
+        R_CURLY "}"
+  WHITESPACE " "
+  COMMENT "//~ ERROR incorrect close delimiter"
+  WHITESPACE "\n"
+  ERROR
+    R_CURLY "}"
+  WHITESPACE "\n"
+error 49: unmatched `}`
+error 92: unmatched `}`
diff --git a/crates/parser/test_data/parser/err/0023_mismatched_paren.txt b/crates/parser/test_data/parser/err/0023_mismatched_paren.txt
deleted file mode 100644
index 1176400634c..00000000000
--- a/crates/parser/test_data/parser/err/0023_mismatched_paren.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MACRO_CALL
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "foo"
-          BANG "!"
-          WHITESPACE " "
-          TOKEN_TREE
-            L_PAREN "("
-            WHITESPACE "\n        "
-            IDENT "bar"
-            COMMA ","
-            WHITESPACE " "
-            STRING "\"baz\""
-            COMMA ","
-            WHITESPACE " "
-            INT_NUMBER "1"
-            COMMA ","
-            WHITESPACE " "
-            FLOAT_NUMBER "2.0"
-        WHITESPACE "\n    "
-        R_CURLY "}"
-  WHITESPACE " "
-  COMMENT "//~ ERROR incorrect close delimiter"
-  WHITESPACE "\n"
-  ERROR
-    R_CURLY "}"
-  WHITESPACE "\n"
-error 49: unmatched `}`
-error 92: unmatched `}`
diff --git a/crates/parser/test_data/parser/err/0024_many_type_parens.rast b/crates/parser/test_data/parser/err/0024_many_type_parens.rast
index 39a317137f3..82e6a11249b 100644
--- a/crates/parser/test_data/parser/err/0024_many_type_parens.rast
+++ b/crates/parser/test_data/parser/err/0024_many_type_parens.rast
@@ -1,321 +1,331 @@
-SOURCE_FILE@0..240
-  FN@0..53
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    GENERIC_PARAM_LIST@4..48
-      L_ANGLE@4..5 "<"
-      TYPE_PARAM@5..47
-        NAME@5..6
-          IDENT@5..6 "T"
-        COLON@6..7 ":"
-        WHITESPACE@7..8 " "
-        TYPE_BOUND_LIST@8..47
-          TYPE_BOUND@8..14
-            L_PAREN@8..9 "("
-            PATH_TYPE@9..13
-              PATH@9..13
-                PATH_SEGMENT@9..13
-                  NAME_REF@9..13
-                    IDENT@9..13 "Copy"
-            R_PAREN@13..14 ")"
-          WHITESPACE@14..15 " "
-          PLUS@15..16 "+"
-          WHITESPACE@16..17 " "
-          TYPE_BOUND@17..25
-            L_PAREN@17..18 "("
-            QUESTION@18..19 "?"
-            PATH_TYPE@19..24
-              PATH@19..24
-                PATH_SEGMENT@19..24
-                  NAME_REF@19..24
-                    IDENT@19..24 "Sized"
-            R_PAREN@24..25 ")"
-          WHITESPACE@25..26 " "
-          PLUS@26..27 "+"
-          WHITESPACE@27..28 " "
-          TYPE_BOUND@28..47
-            L_PAREN@28..29 "("
-            FOR_TYPE@29..46
-              FOR_KW@29..32 "for"
-              GENERIC_PARAM_LIST@32..36
-                L_ANGLE@32..33 "<"
-                LIFETIME_PARAM@33..35
-                  LIFETIME@33..35
-                    LIFETIME_IDENT@33..35 "'a"
-                R_ANGLE@35..36 ">"
-              WHITESPACE@36..37 " "
-              PATH_TYPE@37..46
-                PATH@37..46
-                  PATH_SEGMENT@37..46
-                    NAME_REF@37..42
-                      IDENT@37..42 "Trait"
-                    GENERIC_ARG_LIST@42..46
-                      L_ANGLE@42..43 "<"
-                      LIFETIME_ARG@43..45
-                        LIFETIME@43..45
-                          LIFETIME_IDENT@43..45 "'a"
-                      R_ANGLE@45..46 ">"
-            R_PAREN@46..47 ")"
-      R_ANGLE@47..48 ">"
-    PARAM_LIST@48..50
-      L_PAREN@48..49 "("
-      R_PAREN@49..50 ")"
-    WHITESPACE@50..51 " "
-    BLOCK_EXPR@51..53
-      STMT_LIST@51..53
-        L_CURLY@51..52 "{"
-        R_CURLY@52..53 "}"
-  WHITESPACE@53..55 "\n\n"
-  FN@55..239
-    FN_KW@55..57 "fn"
-    WHITESPACE@57..58 " "
-    NAME@58..62
-      IDENT@58..62 "main"
-    PARAM_LIST@62..64
-      L_PAREN@62..63 "("
-      R_PAREN@63..64 ")"
-    WHITESPACE@64..65 " "
-    BLOCK_EXPR@65..239
-      STMT_LIST@65..239
-        L_CURLY@65..66 "{"
-        WHITESPACE@66..71 "\n    "
-        LET_STMT@71..121
-          LET_KW@71..74 "let"
-          WHITESPACE@74..75 " "
-          WILDCARD_PAT@75..76
-            UNDERSCORE@75..76 "_"
-          COLON@76..77 ":"
-          WHITESPACE@77..78 " "
-          DYN_TRAIT_TYPE@78..121
-            TYPE_BOUND_LIST@78..121
-              TYPE_BOUND@78..88
-                PATH_TYPE@78..88
-                  PATH@78..88
-                    PATH_SEGMENT@78..88
-                      NAME_REF@78..81
-                        IDENT@78..81 "Box"
-                      GENERIC_ARG_LIST@81..88
-                        L_ANGLE@81..82 "<"
-                        TYPE_ARG@82..88
-                          PAREN_TYPE@82..88
-                            L_PAREN@82..83 "("
-                            PATH_TYPE@83..87
-                              PATH@83..87
-                                PATH_SEGMENT@83..87
-                                  NAME_REF@83..87
-                                    IDENT@83..87 "Copy"
-                            R_PAREN@87..88 ")"
-              WHITESPACE@88..89 " "
-              PLUS@89..90 "+"
-              WHITESPACE@90..91 " "
-              TYPE_BOUND@91..99
-                L_PAREN@91..92 "("
-                QUESTION@92..93 "?"
-                PATH_TYPE@93..98
-                  PATH@93..98
-                    PATH_SEGMENT@93..98
-                      NAME_REF@93..98
-                        IDENT@93..98 "Sized"
-                R_PAREN@98..99 ")"
-              WHITESPACE@99..100 " "
-              PLUS@100..101 "+"
-              WHITESPACE@101..102 " "
-              TYPE_BOUND@102..121
-                L_PAREN@102..103 "("
-                FOR_TYPE@103..120
-                  FOR_KW@103..106 "for"
-                  GENERIC_PARAM_LIST@106..110
-                    L_ANGLE@106..107 "<"
-                    LIFETIME_PARAM@107..109
-                      LIFETIME@107..109
-                        LIFETIME_IDENT@107..109 "'a"
-                    R_ANGLE@109..110 ">"
-                  WHITESPACE@110..111 " "
-                  PATH_TYPE@111..120
-                    PATH@111..120
-                      PATH_SEGMENT@111..120
-                        NAME_REF@111..116
-                          IDENT@111..116 "Trait"
-                        GENERIC_ARG_LIST@116..120
-                          L_ANGLE@116..117 "<"
-                          LIFETIME_ARG@117..119
-                            LIFETIME@117..119
-                              LIFETIME_IDENT@117..119 "'a"
-                          R_ANGLE@119..120 ">"
-                R_PAREN@120..121 ")"
-        ERROR@121..122
-          R_ANGLE@121..122 ">"
-        SEMICOLON@122..123 ";"
-        WHITESPACE@123..128 "\n    "
-        LET_STMT@128..141
-          LET_KW@128..131 "let"
-          WHITESPACE@131..132 " "
-          WILDCARD_PAT@132..133
-            UNDERSCORE@132..133 "_"
-          COLON@133..134 ":"
-          WHITESPACE@134..135 " "
-          PATH_TYPE@135..141
-            PATH@135..141
-              PATH_SEGMENT@135..141
-                NAME_REF@135..138
-                  IDENT@135..138 "Box"
-                GENERIC_ARG_LIST@138..141
-                  L_ANGLE@138..139 "<"
-                  TYPE_ARG@139..141
-                    PAREN_TYPE@139..141
-                      L_PAREN@139..140 "("
-                      ERROR@140..141
-                        QUESTION@140..141 "?"
-        EXPR_STMT@141..146
-          PATH_EXPR@141..146
-            PATH@141..146
-              PATH_SEGMENT@141..146
-                NAME_REF@141..146
-                  IDENT@141..146 "Sized"
-        ERROR@146..147
-          R_PAREN@146..147 ")"
-        WHITESPACE@147..148 " "
-        ERROR@148..149
-          PLUS@148..149 "+"
-        WHITESPACE@149..150 " "
-        EXPR_STMT@150..180
-          TUPLE_EXPR@150..180
-            L_PAREN@150..151 "("
-            FOR_EXPR@151..180
-              FOR_KW@151..154 "for"
-              PATH_PAT@154..158
-                PATH@154..158
-                  PATH_SEGMENT@154..158
-                    L_ANGLE@154..155 "<"
-                    ERROR@155..157
-                      LIFETIME_IDENT@155..157 "'a"
-                    R_ANGLE@157..158 ">"
-              WHITESPACE@158..159 " "
-              BIN_EXPR@159..180
-                BIN_EXPR@159..178
-                  BIN_EXPR@159..169
-                    BIN_EXPR@159..167
-                      PATH_EXPR@159..164
-                        PATH@159..164
-                          PATH_SEGMENT@159..164
-                            NAME_REF@159..164
-                              IDENT@159..164 "Trait"
-                      L_ANGLE@164..165 "<"
-                      ERROR@165..167
-                        LIFETIME_IDENT@165..167 "'a"
-                    R_ANGLE@167..168 ">"
-                    ERROR@168..169
-                      R_PAREN@168..169 ")"
-                  WHITESPACE@169..170 " "
-                  PLUS@170..171 "+"
-                  WHITESPACE@171..172 " "
-                  PAREN_EXPR@172..178
-                    L_PAREN@172..173 "("
-                    PATH_EXPR@173..177
-                      PATH@173..177
-                        PATH_SEGMENT@173..177
-                          NAME_REF@173..177
-                            IDENT@173..177 "Copy"
-                    R_PAREN@177..178 ")"
-                R_ANGLE@178..179 ">"
-                ERROR@179..180
-                  SEMICOLON@179..180 ";"
-        WHITESPACE@180..185 "\n    "
-        LET_STMT@185..235
-          LET_KW@185..188 "let"
-          WHITESPACE@188..189 " "
-          WILDCARD_PAT@189..190
-            UNDERSCORE@189..190 "_"
-          COLON@190..191 ":"
-          WHITESPACE@191..192 " "
-          DYN_TRAIT_TYPE@192..235
-            TYPE_BOUND_LIST@192..235
-              TYPE_BOUND@192..215
-                PATH_TYPE@192..215
-                  PATH@192..215
-                    PATH_SEGMENT@192..215
-                      NAME_REF@192..195
-                        IDENT@192..195 "Box"
-                      GENERIC_ARG_LIST@195..215
-                        L_ANGLE@195..196 "<"
-                        TYPE_ARG@196..215
-                          PAREN_TYPE@196..215
-                            L_PAREN@196..197 "("
-                            FOR_TYPE@197..214
-                              FOR_KW@197..200 "for"
-                              GENERIC_PARAM_LIST@200..204
-                                L_ANGLE@200..201 "<"
-                                LIFETIME_PARAM@201..203
-                                  LIFETIME@201..203
-                                    LIFETIME_IDENT@201..203 "'a"
-                                R_ANGLE@203..204 ">"
-                              WHITESPACE@204..205 " "
-                              PATH_TYPE@205..214
-                                PATH@205..214
-                                  PATH_SEGMENT@205..214
-                                    NAME_REF@205..210
-                                      IDENT@205..210 "Trait"
-                                    GENERIC_ARG_LIST@210..214
-                                      L_ANGLE@210..211 "<"
-                                      LIFETIME_ARG@211..213
-                                        LIFETIME@211..213
-                                          LIFETIME_IDENT@211..213 "'a"
-                                      R_ANGLE@213..214 ">"
-                            R_PAREN@214..215 ")"
-              WHITESPACE@215..216 " "
-              PLUS@216..217 "+"
-              WHITESPACE@217..218 " "
-              TYPE_BOUND@218..224
-                L_PAREN@218..219 "("
-                PATH_TYPE@219..223
-                  PATH@219..223
-                    PATH_SEGMENT@219..223
-                      NAME_REF@219..223
-                        IDENT@219..223 "Copy"
-                R_PAREN@223..224 ")"
-              WHITESPACE@224..225 " "
-              PLUS@225..226 "+"
-              WHITESPACE@226..227 " "
-              TYPE_BOUND@227..235
-                L_PAREN@227..228 "("
-                QUESTION@228..229 "?"
-                PATH_TYPE@229..234
-                  PATH@229..234
-                    PATH_SEGMENT@229..234
-                      NAME_REF@229..234
-                        IDENT@229..234 "Sized"
-                R_PAREN@234..235 ")"
-        ERROR@235..236
-          R_ANGLE@235..236 ">"
-        SEMICOLON@236..237 ";"
-        WHITESPACE@237..238 "\n"
-        R_CURLY@238..239 "}"
-  WHITESPACE@239..240 "\n"
-error 88..88: expected COMMA
-error 88..88: expected R_ANGLE
-error 121..121: expected SEMICOLON
-error 121..121: expected expression
-error 140..140: expected type
-error 141..141: expected R_PAREN
-error 141..141: expected COMMA
-error 141..141: expected R_ANGLE
-error 141..141: expected SEMICOLON
-error 146..146: expected SEMICOLON
-error 146..146: expected expression
-error 148..148: expected expression
-error 155..155: expected type
-error 158..158: expected IN_KW
-error 165..165: expected expression
-error 168..168: expected expression
-error 179..179: expected expression
-error 180..180: expected a block
-error 180..180: expected COMMA
-error 180..180: expected expression
-error 180..180: expected R_PAREN
-error 180..180: expected SEMICOLON
-error 215..215: expected COMMA
-error 215..215: expected R_ANGLE
-error 235..235: expected SEMICOLON
-error 235..235: expected expression
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            L_PAREN "("
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+            R_PAREN ")"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            L_PAREN "("
+            QUESTION "?"
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Sized"
+            R_PAREN ")"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            L_PAREN "("
+            FOR_TYPE
+              FOR_KW "for"
+              GENERIC_PARAM_LIST
+                L_ANGLE "<"
+                LIFETIME_PARAM
+                  LIFETIME
+                    LIFETIME_IDENT "'a"
+                R_ANGLE ">"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Trait"
+                    GENERIC_ARG_LIST
+                      L_ANGLE "<"
+                      LIFETIME_ARG
+                        LIFETIME
+                          LIFETIME_IDENT "'a"
+                      R_ANGLE ">"
+            R_PAREN ")"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          COLON ":"
+          WHITESPACE " "
+          DYN_TRAIT_TYPE
+            TYPE_BOUND_LIST
+              TYPE_BOUND
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Box"
+                      GENERIC_ARG_LIST
+                        L_ANGLE "<"
+                        TYPE_ARG
+                          PAREN_TYPE
+                            L_PAREN "("
+                            PATH_TYPE
+                              PATH
+                                PATH_SEGMENT
+                                  NAME_REF
+                                    IDENT "Copy"
+                            R_PAREN ")"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              TYPE_BOUND
+                L_PAREN "("
+                QUESTION "?"
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Sized"
+                R_PAREN ")"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              TYPE_BOUND
+                L_PAREN "("
+                FOR_TYPE
+                  FOR_KW "for"
+                  GENERIC_PARAM_LIST
+                    L_ANGLE "<"
+                    LIFETIME_PARAM
+                      LIFETIME
+                        LIFETIME_IDENT "'a"
+                    R_ANGLE ">"
+                  WHITESPACE " "
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Trait"
+                        GENERIC_ARG_LIST
+                          L_ANGLE "<"
+                          LIFETIME_ARG
+                            LIFETIME
+                              LIFETIME_IDENT "'a"
+                          R_ANGLE ">"
+                R_PAREN ")"
+        ERROR
+          R_ANGLE ">"
+        SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Box"
+                GENERIC_ARG_LIST
+                  L_ANGLE "<"
+                  TYPE_ARG
+                    PAREN_TYPE
+                      L_PAREN "("
+                      ERROR
+                        QUESTION "?"
+        EXPR_STMT
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Sized"
+        ERROR
+          R_PAREN ")"
+        WHITESPACE " "
+        ERROR
+          PLUS "+"
+        WHITESPACE " "
+        TUPLE_EXPR
+          L_PAREN "("
+          FOR_EXPR
+            FOR_KW "for"
+            PATH_PAT
+              PATH
+                PATH_SEGMENT
+                  L_ANGLE "<"
+                  ERROR
+                    LIFETIME_IDENT "'a"
+                  R_ANGLE ">"
+            WHITESPACE " "
+            BIN_EXPR
+              BIN_EXPR
+                BIN_EXPR
+                  BIN_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "Trait"
+                    L_ANGLE "<"
+                    ERROR
+                      LIFETIME_IDENT "'a"
+                  R_ANGLE ">"
+                  ERROR
+                    R_PAREN ")"
+                WHITESPACE " "
+                PLUS "+"
+                WHITESPACE " "
+                PAREN_EXPR
+                  L_PAREN "("
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Copy"
+                  R_PAREN ")"
+              R_ANGLE ">"
+              ERROR
+                SEMICOLON ";"
+          WHITESPACE "\n    "
+          LET_EXPR
+            LET_KW "let"
+            WHITESPACE " "
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            ERROR
+              COLON ":"
+          WHITESPACE " "
+          BIN_EXPR
+            BIN_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Box"
+              L_ANGLE "<"
+              TUPLE_EXPR
+                L_PAREN "("
+                FOR_EXPR
+                  FOR_KW "for"
+                  PATH_PAT
+                    PATH
+                      PATH_SEGMENT
+                        L_ANGLE "<"
+                        ERROR
+                          LIFETIME_IDENT "'a"
+                        R_ANGLE ">"
+                  WHITESPACE " "
+                  BIN_EXPR
+                    BIN_EXPR
+                      BIN_EXPR
+                        BIN_EXPR
+                          PATH_EXPR
+                            PATH
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "Trait"
+                          L_ANGLE "<"
+                          ERROR
+                            LIFETIME_IDENT "'a"
+                        R_ANGLE ">"
+                        ERROR
+                          R_PAREN ")"
+                      WHITESPACE " "
+                      PLUS "+"
+                      WHITESPACE " "
+                      PAREN_EXPR
+                        L_PAREN "("
+                        PATH_EXPR
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Copy"
+                        R_PAREN ")"
+                    WHITESPACE " "
+                    PLUS "+"
+                    WHITESPACE " "
+                    PAREN_EXPR
+                      L_PAREN "("
+                      ERROR
+                        QUESTION "?"
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Sized"
+                R_PAREN ")"
+            R_ANGLE ">"
+            ERROR
+              SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 88: expected COMMA
+error 88: expected R_ANGLE
+error 121: expected SEMICOLON
+error 121: expected expression
+error 140: expected type
+error 141: expected R_PAREN
+error 141: expected COMMA
+error 141: expected R_ANGLE
+error 141: expected SEMICOLON
+error 146: expected SEMICOLON
+error 146: expected expression
+error 148: expected expression
+error 155: expected type
+error 158: expected IN_KW
+error 165: expected expression
+error 168: expected expression
+error 179: expected expression
+error 180: expected a block
+error 180: expected COMMA
+error 190: expected EQ
+error 190: expected expression
+error 191: expected COMMA
+error 201: expected type
+error 204: expected IN_KW
+error 211: expected expression
+error 214: expected expression
+error 228: expected expression
+error 229: expected R_PAREN
+error 229: expected a block
+error 229: expected COMMA
+error 236: expected expression
+error 237: expected COMMA
+error 237: expected expression
+error 237: expected R_PAREN
diff --git a/crates/parser/test_data/parser/err/0024_many_type_parens.txt b/crates/parser/test_data/parser/err/0024_many_type_parens.txt
deleted file mode 100644
index 82e6a11249b..00000000000
--- a/crates/parser/test_data/parser/err/0024_many_type_parens.txt
+++ /dev/null
@@ -1,331 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            L_PAREN "("
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-            R_PAREN ")"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            L_PAREN "("
-            QUESTION "?"
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Sized"
-            R_PAREN ")"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            L_PAREN "("
-            FOR_TYPE
-              FOR_KW "for"
-              GENERIC_PARAM_LIST
-                L_ANGLE "<"
-                LIFETIME_PARAM
-                  LIFETIME
-                    LIFETIME_IDENT "'a"
-                R_ANGLE ">"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Trait"
-                    GENERIC_ARG_LIST
-                      L_ANGLE "<"
-                      LIFETIME_ARG
-                        LIFETIME
-                          LIFETIME_IDENT "'a"
-                      R_ANGLE ">"
-            R_PAREN ")"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          COLON ":"
-          WHITESPACE " "
-          DYN_TRAIT_TYPE
-            TYPE_BOUND_LIST
-              TYPE_BOUND
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Box"
-                      GENERIC_ARG_LIST
-                        L_ANGLE "<"
-                        TYPE_ARG
-                          PAREN_TYPE
-                            L_PAREN "("
-                            PATH_TYPE
-                              PATH
-                                PATH_SEGMENT
-                                  NAME_REF
-                                    IDENT "Copy"
-                            R_PAREN ")"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              TYPE_BOUND
-                L_PAREN "("
-                QUESTION "?"
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Sized"
-                R_PAREN ")"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              TYPE_BOUND
-                L_PAREN "("
-                FOR_TYPE
-                  FOR_KW "for"
-                  GENERIC_PARAM_LIST
-                    L_ANGLE "<"
-                    LIFETIME_PARAM
-                      LIFETIME
-                        LIFETIME_IDENT "'a"
-                    R_ANGLE ">"
-                  WHITESPACE " "
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Trait"
-                        GENERIC_ARG_LIST
-                          L_ANGLE "<"
-                          LIFETIME_ARG
-                            LIFETIME
-                              LIFETIME_IDENT "'a"
-                          R_ANGLE ">"
-                R_PAREN ")"
-        ERROR
-          R_ANGLE ">"
-        SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Box"
-                GENERIC_ARG_LIST
-                  L_ANGLE "<"
-                  TYPE_ARG
-                    PAREN_TYPE
-                      L_PAREN "("
-                      ERROR
-                        QUESTION "?"
-        EXPR_STMT
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Sized"
-        ERROR
-          R_PAREN ")"
-        WHITESPACE " "
-        ERROR
-          PLUS "+"
-        WHITESPACE " "
-        TUPLE_EXPR
-          L_PAREN "("
-          FOR_EXPR
-            FOR_KW "for"
-            PATH_PAT
-              PATH
-                PATH_SEGMENT
-                  L_ANGLE "<"
-                  ERROR
-                    LIFETIME_IDENT "'a"
-                  R_ANGLE ">"
-            WHITESPACE " "
-            BIN_EXPR
-              BIN_EXPR
-                BIN_EXPR
-                  BIN_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "Trait"
-                    L_ANGLE "<"
-                    ERROR
-                      LIFETIME_IDENT "'a"
-                  R_ANGLE ">"
-                  ERROR
-                    R_PAREN ")"
-                WHITESPACE " "
-                PLUS "+"
-                WHITESPACE " "
-                PAREN_EXPR
-                  L_PAREN "("
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Copy"
-                  R_PAREN ")"
-              R_ANGLE ">"
-              ERROR
-                SEMICOLON ";"
-          WHITESPACE "\n    "
-          LET_EXPR
-            LET_KW "let"
-            WHITESPACE " "
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            ERROR
-              COLON ":"
-          WHITESPACE " "
-          BIN_EXPR
-            BIN_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Box"
-              L_ANGLE "<"
-              TUPLE_EXPR
-                L_PAREN "("
-                FOR_EXPR
-                  FOR_KW "for"
-                  PATH_PAT
-                    PATH
-                      PATH_SEGMENT
-                        L_ANGLE "<"
-                        ERROR
-                          LIFETIME_IDENT "'a"
-                        R_ANGLE ">"
-                  WHITESPACE " "
-                  BIN_EXPR
-                    BIN_EXPR
-                      BIN_EXPR
-                        BIN_EXPR
-                          PATH_EXPR
-                            PATH
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "Trait"
-                          L_ANGLE "<"
-                          ERROR
-                            LIFETIME_IDENT "'a"
-                        R_ANGLE ">"
-                        ERROR
-                          R_PAREN ")"
-                      WHITESPACE " "
-                      PLUS "+"
-                      WHITESPACE " "
-                      PAREN_EXPR
-                        L_PAREN "("
-                        PATH_EXPR
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Copy"
-                        R_PAREN ")"
-                    WHITESPACE " "
-                    PLUS "+"
-                    WHITESPACE " "
-                    PAREN_EXPR
-                      L_PAREN "("
-                      ERROR
-                        QUESTION "?"
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Sized"
-                R_PAREN ")"
-            R_ANGLE ">"
-            ERROR
-              SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 88: expected COMMA
-error 88: expected R_ANGLE
-error 121: expected SEMICOLON
-error 121: expected expression
-error 140: expected type
-error 141: expected R_PAREN
-error 141: expected COMMA
-error 141: expected R_ANGLE
-error 141: expected SEMICOLON
-error 146: expected SEMICOLON
-error 146: expected expression
-error 148: expected expression
-error 155: expected type
-error 158: expected IN_KW
-error 165: expected expression
-error 168: expected expression
-error 179: expected expression
-error 180: expected a block
-error 180: expected COMMA
-error 190: expected EQ
-error 190: expected expression
-error 191: expected COMMA
-error 201: expected type
-error 204: expected IN_KW
-error 211: expected expression
-error 214: expected expression
-error 228: expected expression
-error 229: expected R_PAREN
-error 229: expected a block
-error 229: expected COMMA
-error 236: expected expression
-error 237: expected COMMA
-error 237: expected expression
-error 237: expected R_PAREN
diff --git a/crates/parser/test_data/parser/err/0025_nope.txt b/crates/parser/test_data/parser/err/0025_nope.rast
similarity index 100%
rename from crates/parser/test_data/parser/err/0025_nope.txt
rename to crates/parser/test_data/parser/err/0025_nope.rast
diff --git a/crates/parser/test_data/parser/err/0026_imp_recovery.rast b/crates/parser/test_data/parser/err/0026_imp_recovery.rast
index 1b08c834eb8..1068418e0d8 100644
--- a/crates/parser/test_data/parser/err/0026_imp_recovery.rast
+++ b/crates/parser/test_data/parser/err/0026_imp_recovery.rast
@@ -1,49 +1,49 @@
-SOURCE_FILE@0..38
-  IMPL@0..14
-    IMPL_KW@0..4 "impl"
-    GENERIC_PARAM_LIST@4..14
-      L_ANGLE@4..5 "<"
-      TYPE_PARAM@5..13
-        NAME@5..6
-          IDENT@5..6 "T"
-        COLON@6..7 ":"
-        WHITESPACE@7..8 " "
-        TYPE_BOUND_LIST@8..13
-          TYPE_BOUND@8..13
-            PATH_TYPE@8..13
-              PATH@8..13
-                PATH_SEGMENT@8..13
-                  NAME_REF@8..13
-                    IDENT@8..13 "Clone"
-      R_ANGLE@13..14 ">"
-  WHITESPACE@14..15 "\n"
-  IMPL@15..37
-    IMPL_KW@15..19 "impl"
-    GENERIC_PARAM_LIST@19..22
-      L_ANGLE@19..20 "<"
-      TYPE_PARAM@20..21
-        NAME@20..21
-          IDENT@20..21 "T"
-      R_ANGLE@21..22 ">"
-    WHITESPACE@22..23 " "
-    PATH_TYPE@23..34
-      PATH@23..34
-        PATH_SEGMENT@23..34
-          NAME_REF@23..31
-            IDENT@23..31 "OnceCell"
-          GENERIC_ARG_LIST@31..34
-            L_ANGLE@31..32 "<"
-            TYPE_ARG@32..33
-              PATH_TYPE@32..33
-                PATH@32..33
-                  PATH_SEGMENT@32..33
-                    NAME_REF@32..33
-                      IDENT@32..33 "T"
-            R_ANGLE@33..34 ">"
-    WHITESPACE@34..35 " "
-    ASSOC_ITEM_LIST@35..37
-      L_CURLY@35..36 "{"
-      R_CURLY@36..37 "}"
-  WHITESPACE@37..38 "\n"
-error 14..14: expected trait or type
-error 14..14: expected `{`
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+      R_ANGLE ">"
+  WHITESPACE "\n"
+  IMPL
+    IMPL_KW "impl"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "OnceCell"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            TYPE_ARG
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "T"
+            R_ANGLE ">"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+error 14: expected trait or type
+error 14: expected `{`
diff --git a/crates/parser/test_data/parser/err/0026_imp_recovery.txt b/crates/parser/test_data/parser/err/0026_imp_recovery.txt
deleted file mode 100644
index 1068418e0d8..00000000000
--- a/crates/parser/test_data/parser/err/0026_imp_recovery.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-      R_ANGLE ">"
-  WHITESPACE "\n"
-  IMPL
-    IMPL_KW "impl"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "OnceCell"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            TYPE_ARG
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "T"
-            R_ANGLE ">"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-error 14: expected trait or type
-error 14: expected `{`
diff --git a/crates/parser/test_data/parser/err/0027_incomplere_where_for.rast b/crates/parser/test_data/parser/err/0027_incomplere_where_for.rast
index ec585a42356..674c8d536ca 100644
--- a/crates/parser/test_data/parser/err/0027_incomplere_where_for.rast
+++ b/crates/parser/test_data/parser/err/0027_incomplere_where_for.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..30
-  FN@0..29
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..13 "\n    "
-    WHERE_CLAUSE@13..26
-      WHERE_KW@13..18 "where"
-      WHITESPACE@18..19 " "
-      WHERE_PRED@19..26
-        FOR_KW@19..22 "for"
-        GENERIC_PARAM_LIST@22..26
-          L_ANGLE@22..23 "<"
-          LIFETIME_PARAM@23..25
-            LIFETIME@23..25
-              LIFETIME_IDENT@23..25 "'a"
-          R_ANGLE@25..26 ">"
-    WHITESPACE@26..27 "\n"
-    BLOCK_EXPR@27..29
-      STMT_LIST@27..29
-        L_CURLY@27..28 "{"
-        R_CURLY@28..29 "}"
-  WHITESPACE@29..30 "\n"
-error 26..26: expected type
-error 26..26: expected colon
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n    "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 26: expected type
+error 26: expected colon
diff --git a/crates/parser/test_data/parser/err/0027_incomplere_where_for.txt b/crates/parser/test_data/parser/err/0027_incomplere_where_for.txt
deleted file mode 100644
index 674c8d536ca..00000000000
--- a/crates/parser/test_data/parser/err/0027_incomplere_where_for.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n    "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 26: expected type
-error 26: expected colon
diff --git a/crates/parser/test_data/parser/err/0029_field_completion.rast b/crates/parser/test_data/parser/err/0029_field_completion.rast
index 183cf32030b..fb037112fa3 100644
--- a/crates/parser/test_data/parser/err/0029_field_completion.rast
+++ b/crates/parser/test_data/parser/err/0029_field_completion.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..24
-  FN@0..23
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..12
-      L_PAREN@6..7 "("
-      PARAM@7..11
-        IDENT_PAT@7..8
-          NAME@7..8
-            IDENT@7..8 "a"
-        COLON@8..9 ":"
-        WHITESPACE@9..10 " "
-        PATH_TYPE@10..11
-          PATH@10..11
-            PATH_SEGMENT@10..11
-              NAME_REF@10..11
-                IDENT@10..11 "A"
-      R_PAREN@11..12 ")"
-    WHITESPACE@12..13 " "
-    BLOCK_EXPR@13..23
-      STMT_LIST@13..23
-        L_CURLY@13..14 "{"
-        WHITESPACE@14..19 "\n    "
-        FIELD_EXPR@19..21
-          PATH_EXPR@19..20
-            PATH@19..20
-              PATH_SEGMENT@19..20
-                NAME_REF@19..20
-                  IDENT@19..20 "a"
-          DOT@20..21 "."
-        WHITESPACE@21..22 "\n"
-        R_CURLY@22..23 "}"
-  WHITESPACE@23..24 "\n"
-error 21..21: expected field name or number
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "a"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "A"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        FIELD_EXPR
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "a"
+          DOT "."
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 21: expected field name or number
diff --git a/crates/parser/test_data/parser/err/0029_field_completion.txt b/crates/parser/test_data/parser/err/0029_field_completion.txt
deleted file mode 100644
index fb037112fa3..00000000000
--- a/crates/parser/test_data/parser/err/0029_field_completion.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "a"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "A"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        FIELD_EXPR
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "a"
-          DOT "."
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 21: expected field name or number
diff --git a/crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.rast b/crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.rast
index 2438b104bf4..327bf94a49e 100644
--- a/crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.rast
+++ b/crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.rast
@@ -1,205 +1,205 @@
-SOURCE_FILE@0..293
-  FN@0..292
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..292
-      STMT_LIST@9..292
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..101
-          MATCH_EXPR@15..101
-            MATCH_KW@15..20 "match"
-            WHITESPACE@20..21 " "
-            TUPLE_EXPR@21..23
-              L_PAREN@21..22 "("
-              R_PAREN@22..23 ")"
-            WHITESPACE@23..24 " "
-            MATCH_ARM_LIST@24..101
-              L_CURLY@24..25 "{"
-              WHITESPACE@25..34 "\n        "
-              MATCH_ARM@34..42
-                WILDCARD_PAT@34..35
-                  UNDERSCORE@34..35 "_"
-                WHITESPACE@35..36 " "
-                FAT_ARROW@36..38 "=>"
-                WHITESPACE@38..39 " "
-                TUPLE_EXPR@39..41
-                  L_PAREN@39..40 "("
-                  R_PAREN@40..41 ")"
-                COMMA@41..42 ","
-              WHITESPACE@42..51 "\n        "
-              MATCH_ARM@51..78
-                ATTR@51..52
-                  POUND@51..52 "#"
-                ERROR@52..53
-                  BANG@52..53 "!"
-                ARRAY_EXPR@53..78
-                  L_BRACK@53..54 "["
-                  CALL_EXPR@54..77
-                    PATH_EXPR@54..57
-                      PATH@54..57
-                        PATH_SEGMENT@54..57
-                          NAME_REF@54..57
-                            IDENT@54..57 "doc"
-                    ARG_LIST@57..77
-                      L_PAREN@57..58 "("
-                      LITERAL@58..76
-                        STRING@58..76 "\"Not allowed here\""
-                      R_PAREN@76..77 ")"
-                  R_BRACK@77..78 "]"
-              WHITESPACE@78..87 "\n        "
-              MATCH_ARM@87..95
-                WILDCARD_PAT@87..88
-                  UNDERSCORE@87..88 "_"
-                WHITESPACE@88..89 " "
-                FAT_ARROW@89..91 "=>"
-                WHITESPACE@91..92 " "
-                TUPLE_EXPR@92..94
-                  L_PAREN@92..93 "("
-                  R_PAREN@93..94 ")"
-                COMMA@94..95 ","
-              WHITESPACE@95..100 "\n    "
-              R_CURLY@100..101 "}"
-        WHITESPACE@101..107 "\n\n    "
-        EXPR_STMT@107..185
-          MATCH_EXPR@107..185
-            MATCH_KW@107..112 "match"
-            WHITESPACE@112..113 " "
-            TUPLE_EXPR@113..115
-              L_PAREN@113..114 "("
-              R_PAREN@114..115 ")"
-            WHITESPACE@115..116 " "
-            MATCH_ARM_LIST@116..185
-              L_CURLY@116..117 "{"
-              WHITESPACE@117..126 "\n        "
-              MATCH_ARM@126..134
-                WILDCARD_PAT@126..127
-                  UNDERSCORE@126..127 "_"
-                WHITESPACE@127..128 " "
-                FAT_ARROW@128..130 "=>"
-                WHITESPACE@130..131 " "
-                TUPLE_EXPR@131..133
-                  L_PAREN@131..132 "("
-                  R_PAREN@132..133 ")"
-                COMMA@133..134 ","
-              WHITESPACE@134..143 "\n        "
-              MATCH_ARM@143..151
-                WILDCARD_PAT@143..144
-                  UNDERSCORE@143..144 "_"
-                WHITESPACE@144..145 " "
-                FAT_ARROW@145..147 "=>"
-                WHITESPACE@147..148 " "
-                TUPLE_EXPR@148..150
-                  L_PAREN@148..149 "("
-                  R_PAREN@149..150 ")"
-                COMMA@150..151 ","
-              WHITESPACE@151..160 "\n        "
-              MATCH_ARM@160..179
-                ATTR@160..161
-                  POUND@160..161 "#"
-                ERROR@161..162
-                  BANG@161..162 "!"
-                ARRAY_EXPR@162..179
-                  L_BRACK@162..163 "["
-                  CALL_EXPR@163..178
-                    PATH_EXPR@163..166
-                      PATH@163..166
-                        PATH_SEGMENT@163..166
-                          NAME_REF@163..166
-                            IDENT@163..166 "doc"
-                    ARG_LIST@166..178
-                      L_PAREN@166..167 "("
-                      LITERAL@167..177
-                        STRING@167..177 "\"Nor here\""
-                      R_PAREN@177..178 ")"
-                  R_BRACK@178..179 "]"
-              WHITESPACE@179..184 "\n    "
-              R_CURLY@184..185 "}"
-        WHITESPACE@185..191 "\n\n    "
-        MATCH_EXPR@191..290
-          MATCH_KW@191..196 "match"
-          WHITESPACE@196..197 " "
-          TUPLE_EXPR@197..199
-            L_PAREN@197..198 "("
-            R_PAREN@198..199 ")"
-          WHITESPACE@199..200 " "
-          MATCH_ARM_LIST@200..290
-            L_CURLY@200..201 "{"
-            WHITESPACE@201..210 "\n        "
-            MATCH_ARM@210..250
-              ATTR@210..222
-                POUND@210..211 "#"
-                L_BRACK@211..212 "["
-                META@212..221
-                  PATH@212..215
-                    PATH_SEGMENT@212..215
-                      NAME_REF@212..215
-                        IDENT@212..215 "cfg"
-                  TOKEN_TREE@215..221
-                    L_PAREN@215..216 "("
-                    IDENT@216..220 "test"
-                    R_PAREN@220..221 ")"
-                R_BRACK@221..222 "]"
-              WHITESPACE@222..231 "\n        "
-              ATTR@231..232
-                POUND@231..232 "#"
-              ERROR@232..233
-                BANG@232..233 "!"
-              ARRAY_EXPR@233..250
-                L_BRACK@233..234 "["
-                CALL_EXPR@234..249
-                  PATH_EXPR@234..237
-                    PATH@234..237
-                      PATH_SEGMENT@234..237
-                        NAME_REF@234..237
-                          IDENT@234..237 "doc"
-                  ARG_LIST@237..249
-                    L_PAREN@237..238 "("
-                    LITERAL@238..248
-                      STRING@238..248 "\"Nor here\""
-                    R_PAREN@248..249 ")"
-                R_BRACK@249..250 "]"
-            WHITESPACE@250..259 "\n        "
-            MATCH_ARM@259..267
-              WILDCARD_PAT@259..260
-                UNDERSCORE@259..260 "_"
-              WHITESPACE@260..261 " "
-              FAT_ARROW@261..263 "=>"
-              WHITESPACE@263..264 " "
-              TUPLE_EXPR@264..266
-                L_PAREN@264..265 "("
-                R_PAREN@265..266 ")"
-              COMMA@266..267 ","
-            WHITESPACE@267..276 "\n        "
-            MATCH_ARM@276..284
-              WILDCARD_PAT@276..277
-                UNDERSCORE@276..277 "_"
-              WHITESPACE@277..278 " "
-              FAT_ARROW@278..280 "=>"
-              WHITESPACE@280..281 " "
-              TUPLE_EXPR@281..283
-                L_PAREN@281..282 "("
-                R_PAREN@282..283 ")"
-              COMMA@283..284 ","
-            WHITESPACE@284..289 "\n    "
-            R_CURLY@289..290 "}"
-        WHITESPACE@290..291 "\n"
-        R_CURLY@291..292 "}"
-  WHITESPACE@292..293 "\n"
-error 52..52: expected `[`
-error 52..52: expected pattern
-error 53..53: expected FAT_ARROW
-error 78..78: expected `,`
-error 161..161: expected `[`
-error 161..161: expected pattern
-error 162..162: expected FAT_ARROW
-error 232..232: expected `[`
-error 232..232: expected pattern
-error 233..233: expected FAT_ARROW
-error 250..250: expected `,`
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                ATTR
+                  POUND "#"
+                ERROR
+                  BANG "!"
+                ARRAY_EXPR
+                  L_BRACK "["
+                  CALL_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "doc"
+                    ARG_LIST
+                      L_PAREN "("
+                      LITERAL
+                        STRING "\"Not allowed here\""
+                      R_PAREN ")"
+                  R_BRACK "]"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                ATTR
+                  POUND "#"
+                ERROR
+                  BANG "!"
+                ARRAY_EXPR
+                  L_BRACK "["
+                  CALL_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "doc"
+                    ARG_LIST
+                      L_PAREN "("
+                      LITERAL
+                        STRING "\"Nor here\""
+                      R_PAREN ")"
+                  R_BRACK "]"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "test"
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              ATTR
+                POUND "#"
+              ERROR
+                BANG "!"
+              ARRAY_EXPR
+                L_BRACK "["
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "doc"
+                  ARG_LIST
+                    L_PAREN "("
+                    LITERAL
+                      STRING "\"Nor here\""
+                    R_PAREN ")"
+                R_BRACK "]"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 52: expected `[`
+error 52: expected pattern
+error 53: expected FAT_ARROW
+error 78: expected `,`
+error 161: expected `[`
+error 161: expected pattern
+error 162: expected FAT_ARROW
+error 232: expected `[`
+error 232: expected pattern
+error 233: expected FAT_ARROW
+error 250: expected `,`
diff --git a/crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.txt b/crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.txt
deleted file mode 100644
index 327bf94a49e..00000000000
--- a/crates/parser/test_data/parser/err/0032_match_arms_inner_attrs.txt
+++ /dev/null
@@ -1,205 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                ATTR
-                  POUND "#"
-                ERROR
-                  BANG "!"
-                ARRAY_EXPR
-                  L_BRACK "["
-                  CALL_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "doc"
-                    ARG_LIST
-                      L_PAREN "("
-                      LITERAL
-                        STRING "\"Not allowed here\""
-                      R_PAREN ")"
-                  R_BRACK "]"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                ATTR
-                  POUND "#"
-                ERROR
-                  BANG "!"
-                ARRAY_EXPR
-                  L_BRACK "["
-                  CALL_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "doc"
-                    ARG_LIST
-                      L_PAREN "("
-                      LITERAL
-                        STRING "\"Nor here\""
-                      R_PAREN ")"
-                  R_BRACK "]"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "test"
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              ATTR
-                POUND "#"
-              ERROR
-                BANG "!"
-              ARRAY_EXPR
-                L_BRACK "["
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "doc"
-                  ARG_LIST
-                    L_PAREN "("
-                    LITERAL
-                      STRING "\"Nor here\""
-                    R_PAREN ")"
-                R_BRACK "]"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 52: expected `[`
-error 52: expected pattern
-error 53: expected FAT_ARROW
-error 78: expected `,`
-error 161: expected `[`
-error 161: expected pattern
-error 162: expected FAT_ARROW
-error 232: expected `[`
-error 232: expected pattern
-error 233: expected FAT_ARROW
-error 250: expected `,`
diff --git a/crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.rast b/crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.rast
index 66fc2ccbd20..b5bc3d84df0 100644
--- a/crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.rast
+++ b/crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.rast
@@ -1,68 +1,68 @@
-SOURCE_FILE@0..89
-  FN@0..88
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..88
-      STMT_LIST@9..88
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        MATCH_EXPR@15..86
-          MATCH_KW@15..20 "match"
-          WHITESPACE@20..21 " "
-          TUPLE_EXPR@21..23
-            L_PAREN@21..22 "("
-            R_PAREN@22..23 ")"
-          WHITESPACE@23..24 " "
-          MATCH_ARM_LIST@24..86
-            L_CURLY@24..25 "{"
-            WHITESPACE@25..34 "\n        "
-            MATCH_ARM@34..42
-              WILDCARD_PAT@34..35
-                UNDERSCORE@34..35 "_"
-              WHITESPACE@35..36 " "
-              FAT_ARROW@36..38 "=>"
-              WHITESPACE@38..39 " "
-              TUPLE_EXPR@39..41
-                L_PAREN@39..40 "("
-                R_PAREN@40..41 ")"
-              COMMA@41..42 ","
-            WHITESPACE@42..51 "\n        "
-            MATCH_ARM@51..59
-              WILDCARD_PAT@51..52
-                UNDERSCORE@51..52 "_"
-              WHITESPACE@52..53 " "
-              FAT_ARROW@53..55 "=>"
-              WHITESPACE@55..56 " "
-              TUPLE_EXPR@56..58
-                L_PAREN@56..57 "("
-                R_PAREN@57..58 ")"
-              COMMA@58..59 ","
-            WHITESPACE@59..68 "\n        "
-            MATCH_ARM@68..80
-              ATTR@68..80
-                POUND@68..69 "#"
-                L_BRACK@69..70 "["
-                META@70..79
-                  PATH@70..73
-                    PATH_SEGMENT@70..73
-                      NAME_REF@70..73
-                        IDENT@70..73 "cfg"
-                  TOKEN_TREE@73..79
-                    L_PAREN@73..74 "("
-                    IDENT@74..78 "test"
-                    R_PAREN@78..79 ")"
-                R_BRACK@79..80 "]"
-            WHITESPACE@80..85 "\n    "
-            R_CURLY@85..86 "}"
-        WHITESPACE@86..87 "\n"
-        R_CURLY@87..88 "}"
-  WHITESPACE@88..89 "\n"
-error 80..80: expected pattern
-error 80..80: expected FAT_ARROW
-error 80..80: expected expression
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "test"
+                    R_PAREN ")"
+                R_BRACK "]"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 80: expected pattern
+error 80: expected FAT_ARROW
+error 80: expected expression
diff --git a/crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.txt b/crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.txt
deleted file mode 100644
index b5bc3d84df0..00000000000
--- a/crates/parser/test_data/parser/err/0033_match_arms_outer_attrs.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "test"
-                    R_PAREN ")"
-                R_BRACK "]"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 80: expected pattern
-error 80: expected FAT_ARROW
-error 80: expected expression
diff --git a/crates/parser/test_data/parser/err/0034_bad_box_pattern.rast b/crates/parser/test_data/parser/err/0034_bad_box_pattern.rast
index 583e62c77a3..7a2ae9103fd 100644
--- a/crates/parser/test_data/parser/err/0034_bad_box_pattern.rast
+++ b/crates/parser/test_data/parser/err/0034_bad_box_pattern.rast
@@ -1,96 +1,96 @@
-SOURCE_FILE@0..91
-  FN@0..89
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..89
-      STMT_LIST@10..89
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..27
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          IDENT_PAT@20..27
-            REF_KW@20..23 "ref"
-            WHITESPACE@23..24 " "
-            ERROR@24..27
-              BOX_KW@24..27 "box"
-        WHITESPACE@27..28 " "
-        EXPR_STMT@28..35
-          BIN_EXPR@28..34
-            PATH_EXPR@28..29
-              PATH@28..29
-                PATH_SEGMENT@28..29
-                  NAME_REF@28..29
-                    IDENT@28..29 "i"
-            WHITESPACE@29..30 " "
-            EQ@30..31 "="
-            WHITESPACE@31..32 " "
-            TUPLE_EXPR@32..34
-              L_PAREN@32..33 "("
-              R_PAREN@33..34 ")"
-          SEMICOLON@34..35 ";"
-        WHITESPACE@35..40 "\n    "
-        LET_STMT@40..51
-          LET_KW@40..43 "let"
-          WHITESPACE@43..44 " "
-          IDENT_PAT@44..51
-            MUT_KW@44..47 "mut"
-            WHITESPACE@47..48 " "
-            ERROR@48..51
-              BOX_KW@48..51 "box"
-        WHITESPACE@51..52 " "
-        EXPR_STMT@52..59
-          BIN_EXPR@52..58
-            PATH_EXPR@52..53
-              PATH@52..53
-                PATH_SEGMENT@52..53
-                  NAME_REF@52..53
-                    IDENT@52..53 "i"
-            WHITESPACE@53..54 " "
-            EQ@54..55 "="
-            WHITESPACE@55..56 " "
-            TUPLE_EXPR@56..58
-              L_PAREN@56..57 "("
-              R_PAREN@57..58 ")"
-          SEMICOLON@58..59 ";"
-        WHITESPACE@59..64 "\n    "
-        LET_STMT@64..79
-          LET_KW@64..67 "let"
-          WHITESPACE@67..68 " "
-          IDENT_PAT@68..79
-            REF_KW@68..71 "ref"
-            WHITESPACE@71..72 " "
-            MUT_KW@72..75 "mut"
-            WHITESPACE@75..76 " "
-            ERROR@76..79
-              BOX_KW@76..79 "box"
-        WHITESPACE@79..80 " "
-        EXPR_STMT@80..87
-          BIN_EXPR@80..86
-            PATH_EXPR@80..81
-              PATH@80..81
-                PATH_SEGMENT@80..81
-                  NAME_REF@80..81
-                    IDENT@80..81 "i"
-            WHITESPACE@81..82 " "
-            EQ@82..83 "="
-            WHITESPACE@83..84 " "
-            TUPLE_EXPR@84..86
-              L_PAREN@84..85 "("
-              R_PAREN@85..86 ")"
-          SEMICOLON@86..87 ";"
-        WHITESPACE@87..88 "\n"
-        R_CURLY@88..89 "}"
-  WHITESPACE@89..91 "\n\n"
-error 24..24: expected a name
-error 27..27: expected SEMICOLON
-error 48..48: expected a name
-error 51..51: expected SEMICOLON
-error 76..76: expected a name
-error 79..79: expected SEMICOLON
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            REF_KW "ref"
+            WHITESPACE " "
+            ERROR
+              BOX_KW "box"
+        WHITESPACE " "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            ERROR
+              BOX_KW "box"
+        WHITESPACE " "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            REF_KW "ref"
+            WHITESPACE " "
+            MUT_KW "mut"
+            WHITESPACE " "
+            ERROR
+              BOX_KW "box"
+        WHITESPACE " "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+error 24: expected a name
+error 27: expected SEMICOLON
+error 48: expected a name
+error 51: expected SEMICOLON
+error 76: expected a name
+error 79: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0034_bad_box_pattern.txt b/crates/parser/test_data/parser/err/0034_bad_box_pattern.txt
deleted file mode 100644
index 7a2ae9103fd..00000000000
--- a/crates/parser/test_data/parser/err/0034_bad_box_pattern.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            REF_KW "ref"
-            WHITESPACE " "
-            ERROR
-              BOX_KW "box"
-        WHITESPACE " "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            ERROR
-              BOX_KW "box"
-        WHITESPACE " "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            REF_KW "ref"
-            WHITESPACE " "
-            MUT_KW "mut"
-            WHITESPACE " "
-            ERROR
-              BOX_KW "box"
-        WHITESPACE " "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-error 24: expected a name
-error 27: expected SEMICOLON
-error 48: expected a name
-error 51: expected SEMICOLON
-error 76: expected a name
-error 79: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0035_use_recover.rast b/crates/parser/test_data/parser/err/0035_use_recover.rast
index 14eaf9e9b02..f9287d42e20 100644
--- a/crates/parser/test_data/parser/err/0035_use_recover.rast
+++ b/crates/parser/test_data/parser/err/0035_use_recover.rast
@@ -1,55 +1,55 @@
-SOURCE_FILE@0..48
-  USE@0..13
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..12
-      PATH@4..12
-        PATH@4..7
-          PATH_SEGMENT@4..7
-            NAME_REF@4..7
-              IDENT@4..7 "foo"
-        COLON2@7..9 "::"
-        PATH_SEGMENT@9..12
-          NAME_REF@9..12
-            IDENT@9..12 "bar"
-    SEMICOLON@12..13 ";"
-  WHITESPACE@13..14 "\n"
-  USE@14..17
-    USE_KW@14..17 "use"
-  WHITESPACE@17..18 "\n"
-  USE@18..33
-    USE_KW@18..21 "use"
-    WHITESPACE@21..22 " "
-    USE_TREE@22..32
-      PATH@22..32
-        PATH@22..27
-          PATH_SEGMENT@22..27
-            NAME_REF@22..27
-              CRATE_KW@22..27 "crate"
-        COLON2@27..29 "::"
-        PATH_SEGMENT@29..32
-          NAME_REF@29..32
-            IDENT@29..32 "baz"
-    SEMICOLON@32..33 ";"
-  WHITESPACE@33..34 "\n"
-  USE@34..37
-    USE_KW@34..37 "use"
-  WHITESPACE@37..38 "\n"
-  FN@38..47
-    FN_KW@38..40 "fn"
-    WHITESPACE@40..41 " "
-    NAME@41..42
-      IDENT@41..42 "f"
-    PARAM_LIST@42..44
-      L_PAREN@42..43 "("
-      R_PAREN@43..44 ")"
-    WHITESPACE@44..45 " "
-    BLOCK_EXPR@45..47
-      STMT_LIST@45..47
-        L_CURLY@45..46 "{"
-        R_CURLY@46..47 "}"
-  WHITESPACE@47..48 "\n"
-error 17..17: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 17..17: expected SEMICOLON
-error 37..37: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 37..37: expected SEMICOLON
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "foo"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "bar"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              CRATE_KW "crate"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "baz"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 17: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
+error 17: expected SEMICOLON
+error 37: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
+error 37: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0035_use_recover.txt b/crates/parser/test_data/parser/err/0035_use_recover.txt
deleted file mode 100644
index f9287d42e20..00000000000
--- a/crates/parser/test_data/parser/err/0035_use_recover.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "foo"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "bar"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              CRATE_KW "crate"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "baz"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 17: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 17: expected SEMICOLON
-error 37: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 37: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0036_partial_use.rast b/crates/parser/test_data/parser/err/0036_partial_use.rast
index ef6172f8a1a..13e76e68307 100644
--- a/crates/parser/test_data/parser/err/0036_partial_use.rast
+++ b/crates/parser/test_data/parser/err/0036_partial_use.rast
@@ -1,51 +1,51 @@
-SOURCE_FILE@0..37
-  USE@0..36
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..36
-      PATH@4..7
-        PATH_SEGMENT@4..7
-          NAME_REF@4..7
-            IDENT@4..7 "std"
-      COLON2@7..9 "::"
-      USE_TREE_LIST@9..36
-        L_CURLY@9..10 "{"
-        USE_TREE@10..22
-          PATH@10..22
-            PATH@10..15
-              PATH_SEGMENT@10..15
-                NAME_REF@10..15
-                  IDENT@10..15 "error"
-            COLON2@15..17 "::"
-            PATH_SEGMENT@17..22
-              NAME_REF@17..22
-                IDENT@17..22 "Error"
-        ERROR@22..23
-          SEMICOLON@22..23 ";"
-        WHITESPACE@23..24 "\n"
-        ERROR@24..27
-          USE_KW@24..27 "use"
-        WHITESPACE@27..28 " "
-        USE_TREE@28..35
-          PATH@28..35
-            PATH@28..31
-              PATH_SEGMENT@28..31
-                NAME_REF@28..31
-                  IDENT@28..31 "std"
-            COLON2@31..33 "::"
-            PATH_SEGMENT@33..35
-              NAME_REF@33..35
-                IDENT@33..35 "io"
-        ERROR@35..36
-          SEMICOLON@35..36 ";"
-  WHITESPACE@36..37 "\n"
-error 22..22: expected COMMA
-error 22..22: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 23..23: expected COMMA
-error 24..24: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 27..27: expected COMMA
-error 35..35: expected COMMA
-error 35..35: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 36..36: expected COMMA
-error 36..36: expected R_CURLY
-error 36..36: expected SEMICOLON
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "std"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          PATH
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "error"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Error"
+        ERROR
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        ERROR
+          USE_KW "use"
+        WHITESPACE " "
+        USE_TREE
+          PATH
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "std"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "io"
+        ERROR
+          SEMICOLON ";"
+  WHITESPACE "\n"
+error 22: expected COMMA
+error 22: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
+error 23: expected COMMA
+error 24: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
+error 27: expected COMMA
+error 35: expected COMMA
+error 35: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
+error 36: expected COMMA
+error 36: expected R_CURLY
+error 36: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0036_partial_use.txt b/crates/parser/test_data/parser/err/0036_partial_use.txt
deleted file mode 100644
index 13e76e68307..00000000000
--- a/crates/parser/test_data/parser/err/0036_partial_use.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "std"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          PATH
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "error"
-            COLON2 "::"
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Error"
-        ERROR
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        ERROR
-          USE_KW "use"
-        WHITESPACE " "
-        USE_TREE
-          PATH
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "std"
-            COLON2 "::"
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "io"
-        ERROR
-          SEMICOLON ";"
-  WHITESPACE "\n"
-error 22: expected COMMA
-error 22: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 23: expected COMMA
-error 24: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 27: expected COMMA
-error 35: expected COMMA
-error 35: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
-error 36: expected COMMA
-error 36: expected R_CURLY
-error 36: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0039_lambda_recovery.rast b/crates/parser/test_data/parser/err/0039_lambda_recovery.rast
index b9b9f2e4b1b..8ca16060153 100644
--- a/crates/parser/test_data/parser/err/0039_lambda_recovery.rast
+++ b/crates/parser/test_data/parser/err/0039_lambda_recovery.rast
@@ -1,83 +1,83 @@
-SOURCE_FILE@0..83
-  FN@0..82
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    RET_TYPE@9..15
-      THIN_ARROW@9..11 "->"
-      WHITESPACE@11..12 " "
-      PATH_TYPE@12..15
-        PATH@12..15
-          PATH_SEGMENT@12..15
-            NAME_REF@12..15
-              IDENT@12..15 "i32"
-    WHITESPACE@15..16 " "
-    BLOCK_EXPR@16..82
-      STMT_LIST@16..82
-        L_CURLY@16..17 "{"
-        WHITESPACE@17..22 "\n    "
-        EXPR_STMT@22..80
-          METHOD_CALL_EXPR@22..79
-            METHOD_CALL_EXPR@22..57
-              METHOD_CALL_EXPR@22..38
-                ARRAY_EXPR@22..31
-                  L_BRACK@22..23 "["
-                  LITERAL@23..24
-                    INT_NUMBER@23..24 "1"
-                  COMMA@24..25 ","
-                  WHITESPACE@25..26 " "
-                  LITERAL@26..27
-                    INT_NUMBER@26..27 "2"
-                  COMMA@27..28 ","
-                  WHITESPACE@28..29 " "
-                  LITERAL@29..30
-                    INT_NUMBER@29..30 "3"
-                  R_BRACK@30..31 "]"
-                DOT@31..32 "."
-                NAME_REF@32..36
-                  IDENT@32..36 "iter"
-                ARG_LIST@36..38
-                  L_PAREN@36..37 "("
-                  R_PAREN@37..38 ")"
-              WHITESPACE@38..47 "\n        "
-              DOT@47..48 "."
-              NAME_REF@48..51
-                IDENT@48..51 "map"
-              ARG_LIST@51..57
-                L_PAREN@51..52 "("
-                CLOSURE_EXPR@52..56
-                  PARAM_LIST@52..56
-                    PIPE@52..53 "|"
-                    PARAM@53..55
-                      IDENT_PAT@53..55
-                        NAME@53..55
-                          IDENT@53..55 "it"
-                    PIPE@55..56 "|"
-                R_PAREN@56..57 ")"
-            WHITESPACE@57..66 "\n        "
-            DOT@66..67 "."
-            NAME_REF@67..70
-              IDENT@67..70 "max"
-            GENERIC_ARG_LIST@70..77
-              COLON2@70..72 "::"
-              L_ANGLE@72..73 "<"
-              TYPE_ARG@73..76
-                PATH_TYPE@73..76
-                  PATH@73..76
-                    PATH_SEGMENT@73..76
-                      NAME_REF@73..76
-                        IDENT@73..76 "i32"
-              R_ANGLE@76..77 ">"
-            ARG_LIST@77..79
-              L_PAREN@77..78 "("
-              R_PAREN@78..79 ")"
-          SEMICOLON@79..80 ";"
-        WHITESPACE@80..81 "\n"
-        R_CURLY@81..82 "}"
-  WHITESPACE@82..83 "\n"
-error 56..56: expected expression
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "i32"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          METHOD_CALL_EXPR
+            METHOD_CALL_EXPR
+              METHOD_CALL_EXPR
+                ARRAY_EXPR
+                  L_BRACK "["
+                  LITERAL
+                    INT_NUMBER "1"
+                  COMMA ","
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "2"
+                  COMMA ","
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "3"
+                  R_BRACK "]"
+                DOT "."
+                NAME_REF
+                  IDENT "iter"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE "\n        "
+              DOT "."
+              NAME_REF
+                IDENT "map"
+              ARG_LIST
+                L_PAREN "("
+                CLOSURE_EXPR
+                  PARAM_LIST
+                    PIPE "|"
+                    PARAM
+                      IDENT_PAT
+                        NAME
+                          IDENT "it"
+                    PIPE "|"
+                R_PAREN ")"
+            WHITESPACE "\n        "
+            DOT "."
+            NAME_REF
+              IDENT "max"
+            GENERIC_ARG_LIST
+              COLON2 "::"
+              L_ANGLE "<"
+              TYPE_ARG
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "i32"
+              R_ANGLE ">"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 56: expected expression
diff --git a/crates/parser/test_data/parser/err/0039_lambda_recovery.txt b/crates/parser/test_data/parser/err/0039_lambda_recovery.txt
deleted file mode 100644
index 8ca16060153..00000000000
--- a/crates/parser/test_data/parser/err/0039_lambda_recovery.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "i32"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          METHOD_CALL_EXPR
-            METHOD_CALL_EXPR
-              METHOD_CALL_EXPR
-                ARRAY_EXPR
-                  L_BRACK "["
-                  LITERAL
-                    INT_NUMBER "1"
-                  COMMA ","
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "2"
-                  COMMA ","
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "3"
-                  R_BRACK "]"
-                DOT "."
-                NAME_REF
-                  IDENT "iter"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE "\n        "
-              DOT "."
-              NAME_REF
-                IDENT "map"
-              ARG_LIST
-                L_PAREN "("
-                CLOSURE_EXPR
-                  PARAM_LIST
-                    PIPE "|"
-                    PARAM
-                      IDENT_PAT
-                        NAME
-                          IDENT "it"
-                    PIPE "|"
-                R_PAREN ")"
-            WHITESPACE "\n        "
-            DOT "."
-            NAME_REF
-              IDENT "max"
-            GENERIC_ARG_LIST
-              COLON2 "::"
-              L_ANGLE "<"
-              TYPE_ARG
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "i32"
-              R_ANGLE ">"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 56: expected expression
diff --git a/crates/parser/test_data/parser/err/0042_weird_blocks.rast b/crates/parser/test_data/parser/err/0042_weird_blocks.rast
index 25910cb4052..9cea337ce9c 100644
--- a/crates/parser/test_data/parser/err/0042_weird_blocks.rast
+++ b/crates/parser/test_data/parser/err/0042_weird_blocks.rast
@@ -1,75 +1,75 @@
-SOURCE_FILE@0..83
-  FN@0..82
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..82
-      STMT_LIST@10..82
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        EXPR_STMT@16..29
-          BLOCK_EXPR@16..29
-            STMT_LIST@16..29
-              L_CURLY@16..17 "{"
-              WHITESPACE@17..18 " "
-              ERROR@18..24
-                UNSAFE_KW@18..24 "unsafe"
-              WHITESPACE@24..25 " "
-              LITERAL@25..27
-                INT_NUMBER@25..27 "92"
-              WHITESPACE@27..28 " "
-              R_CURLY@28..29 "}"
-        WHITESPACE@29..34 "\n    "
-        EXPR_STMT@34..46
-          BLOCK_EXPR@34..46
-            STMT_LIST@34..46
-              L_CURLY@34..35 "{"
-              WHITESPACE@35..36 " "
-              ERROR@36..41
-                ASYNC_KW@36..41 "async"
-              WHITESPACE@41..42 " "
-              LITERAL@42..44
-                INT_NUMBER@42..44 "92"
-              WHITESPACE@44..45 " "
-              R_CURLY@45..46 "}"
-        WHITESPACE@46..51 "\n    "
-        EXPR_STMT@51..61
-          BLOCK_EXPR@51..61
-            STMT_LIST@51..61
-              L_CURLY@51..52 "{"
-              WHITESPACE@52..53 " "
-              EXPR_STMT@53..56
-                BLOCK_EXPR@53..56
-                  TRY_KW@53..56 "try"
-              WHITESPACE@56..57 " "
-              LITERAL@57..59
-                INT_NUMBER@57..59 "92"
-              WHITESPACE@59..60 " "
-              R_CURLY@60..61 "}"
-        WHITESPACE@61..66 "\n    "
-        BLOCK_EXPR@66..80
-          STMT_LIST@66..80
-            L_CURLY@66..67 "{"
-            WHITESPACE@67..68 " "
-            ERROR@68..75
-              LABEL@68..75
-                LIFETIME@68..74
-                  LIFETIME_IDENT@68..74 "'label"
-                COLON@74..75 ":"
-            WHITESPACE@75..76 " "
-            LITERAL@76..78
-              INT_NUMBER@76..78 "92"
-            WHITESPACE@78..79 " "
-            R_CURLY@79..80 "}"
-        WHITESPACE@80..81 "\n"
-        R_CURLY@81..82 "}"
-  WHITESPACE@82..83 "\n"
-error 24..24: expected existential, fn, trait or impl
-error 41..41: expected existential, fn, trait or impl
-error 56..56: expected a block
-error 75..75: expected a loop
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              ERROR
+                UNSAFE_KW "unsafe"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "92"
+              WHITESPACE " "
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              ERROR
+                ASYNC_KW "async"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "92"
+              WHITESPACE " "
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              EXPR_STMT
+                BLOCK_EXPR
+                  TRY_KW "try"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "92"
+              WHITESPACE " "
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE " "
+            ERROR
+              LABEL
+                LIFETIME
+                  LIFETIME_IDENT "'label"
+                COLON ":"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "92"
+            WHITESPACE " "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 24: expected existential, fn, trait or impl
+error 41: expected existential, fn, trait or impl
+error 56: expected a block
+error 75: expected a loop
diff --git a/crates/parser/test_data/parser/err/0042_weird_blocks.txt b/crates/parser/test_data/parser/err/0042_weird_blocks.txt
deleted file mode 100644
index 9cea337ce9c..00000000000
--- a/crates/parser/test_data/parser/err/0042_weird_blocks.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              ERROR
-                UNSAFE_KW "unsafe"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "92"
-              WHITESPACE " "
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              ERROR
-                ASYNC_KW "async"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "92"
-              WHITESPACE " "
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              EXPR_STMT
-                BLOCK_EXPR
-                  TRY_KW "try"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "92"
-              WHITESPACE " "
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE " "
-            ERROR
-              LABEL
-                LIFETIME
-                  LIFETIME_IDENT "'label"
-                COLON ":"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "92"
-            WHITESPACE " "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 24: expected existential, fn, trait or impl
-error 41: expected existential, fn, trait or impl
-error 56: expected a block
-error 75: expected a loop
diff --git a/crates/parser/test_data/parser/err/0043_unexpected_for_type.rast b/crates/parser/test_data/parser/err/0043_unexpected_for_type.rast
index d4e4bf102ed..cb4fb1642d9 100644
--- a/crates/parser/test_data/parser/err/0043_unexpected_for_type.rast
+++ b/crates/parser/test_data/parser/err/0043_unexpected_for_type.rast
@@ -1,256 +1,256 @@
-SOURCE_FILE@0..239
-  TYPE_ALIAS@0..30
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..11
-      IDENT@5..11 "ForRef"
-    WHITESPACE@11..12 " "
-    EQ@12..13 "="
-    WHITESPACE@13..14 " "
-    FOR_TYPE@14..29
-      FOR_KW@14..17 "for"
-      GENERIC_PARAM_LIST@17..21
-        L_ANGLE@17..18 "<"
-        LIFETIME_PARAM@18..20
-          LIFETIME@18..20
-            LIFETIME_IDENT@18..20 "'a"
-        R_ANGLE@20..21 ">"
-      WHITESPACE@21..22 " "
-      REF_TYPE@22..29
-        AMP@22..23 "&"
-        LIFETIME@23..25
-          LIFETIME_IDENT@23..25 "'a"
-        WHITESPACE@25..26 " "
-        PATH_TYPE@26..29
-          PATH@26..29
-            PATH_SEGMENT@26..29
-              NAME_REF@26..29
-                IDENT@26..29 "u32"
-    SEMICOLON@29..30 ";"
-  WHITESPACE@30..31 "\n"
-  TYPE_ALIAS@31..64
-    TYPE_KW@31..35 "type"
-    WHITESPACE@35..36 " "
-    NAME@36..42
-      IDENT@36..42 "ForTup"
-    WHITESPACE@42..43 " "
-    EQ@43..44 "="
-    WHITESPACE@44..45 " "
-    FOR_TYPE@45..63
-      FOR_KW@45..48 "for"
-      GENERIC_PARAM_LIST@48..52
-        L_ANGLE@48..49 "<"
-        LIFETIME_PARAM@49..51
-          LIFETIME@49..51
-            LIFETIME_IDENT@49..51 "'a"
-        R_ANGLE@51..52 ">"
-      WHITESPACE@52..53 " "
-      TUPLE_TYPE@53..63
-        L_PAREN@53..54 "("
-        REF_TYPE@54..61
-          AMP@54..55 "&"
-          LIFETIME@55..57
-            LIFETIME_IDENT@55..57 "'a"
-          WHITESPACE@57..58 " "
-          PATH_TYPE@58..61
-            PATH@58..61
-              PATH_SEGMENT@58..61
-                NAME_REF@58..61
-                  IDENT@58..61 "u32"
-        COMMA@61..62 ","
-        R_PAREN@62..63 ")"
-    SEMICOLON@63..64 ";"
-  WHITESPACE@64..65 "\n"
-  TYPE_ALIAS@65..95
-    TYPE_KW@65..69 "type"
-    WHITESPACE@69..70 " "
-    NAME@70..78
-      IDENT@70..78 "ForSlice"
-    WHITESPACE@78..79 " "
-    EQ@79..80 "="
-    WHITESPACE@80..81 " "
-    FOR_TYPE@81..94
-      FOR_KW@81..84 "for"
-      GENERIC_PARAM_LIST@84..88
-        L_ANGLE@84..85 "<"
-        LIFETIME_PARAM@85..87
-          LIFETIME@85..87
-            LIFETIME_IDENT@85..87 "'a"
-        R_ANGLE@87..88 ">"
-      WHITESPACE@88..89 " "
-      SLICE_TYPE@89..94
-        L_BRACK@89..90 "["
-        PATH_TYPE@90..93
-          PATH@90..93
-            PATH_SEGMENT@90..93
-              NAME_REF@90..93
-                IDENT@90..93 "u32"
-        R_BRACK@93..94 "]"
-    SEMICOLON@94..95 ";"
-  WHITESPACE@95..96 "\n"
-  TYPE_ALIAS@96..149
-    TYPE_KW@96..100 "type"
-    WHITESPACE@100..101 " "
-    NAME@101..109
-      IDENT@101..109 "ForForFn"
-    WHITESPACE@109..110 " "
-    EQ@110..111 "="
-    WHITESPACE@111..112 " "
-    FOR_TYPE@112..148
-      FOR_KW@112..115 "for"
-      GENERIC_PARAM_LIST@115..119
-        L_ANGLE@115..116 "<"
-        LIFETIME_PARAM@116..118
-          LIFETIME@116..118
-            LIFETIME_IDENT@116..118 "'a"
-        R_ANGLE@118..119 ">"
-      WHITESPACE@119..120 " "
-      FOR_TYPE@120..148
-        FOR_KW@120..123 "for"
-        GENERIC_PARAM_LIST@123..127
-          L_ANGLE@123..124 "<"
-          LIFETIME_PARAM@124..126
-            LIFETIME@124..126
-              LIFETIME_IDENT@124..126 "'b"
-          R_ANGLE@126..127 ">"
-        WHITESPACE@127..128 " "
-        FN_PTR_TYPE@128..148
-          FN_KW@128..130 "fn"
-          PARAM_LIST@130..148
-            L_PAREN@130..131 "("
-            PARAM@131..138
-              REF_TYPE@131..138
-                AMP@131..132 "&"
-                LIFETIME@132..134
-                  LIFETIME_IDENT@132..134 "'a"
-                WHITESPACE@134..135 " "
-                PATH_TYPE@135..138
-                  PATH@135..138
-                    PATH_SEGMENT@135..138
-                      NAME_REF@135..138
-                        IDENT@135..138 "i32"
-            COMMA@138..139 ","
-            WHITESPACE@139..140 " "
-            PARAM@140..147
-              REF_TYPE@140..147
-                AMP@140..141 "&"
-                LIFETIME@141..143
-                  LIFETIME_IDENT@141..143 "'b"
-                WHITESPACE@143..144 " "
-                PATH_TYPE@144..147
-                  PATH@144..147
-                    PATH_SEGMENT@144..147
-                      NAME_REF@144..147
-                        IDENT@144..147 "i32"
-            R_PAREN@147..148 ")"
-    SEMICOLON@148..149 ";"
-  WHITESPACE@149..150 "\n"
-  FN@150..238
-    FN_KW@150..152 "fn"
-    WHITESPACE@152..153 " "
-    NAME@153..164
-      IDENT@153..164 "for_for_for"
-    GENERIC_PARAM_LIST@164..167
-      L_ANGLE@164..165 "<"
-      TYPE_PARAM@165..166
-        NAME@165..166
-          IDENT@165..166 "T"
-      R_ANGLE@166..167 ">"
-    PARAM_LIST@167..169
-      L_PAREN@167..168 "("
-      R_PAREN@168..169 ")"
-    WHITESPACE@169..170 "\n"
-    WHERE_CLAUSE@170..234
-      WHERE_KW@170..175 "where"
-      WHITESPACE@175..180 "\n    "
-      WHERE_PRED@180..233
-        FOR_KW@180..183 "for"
-        GENERIC_PARAM_LIST@183..187
-          L_ANGLE@183..184 "<"
-          LIFETIME_PARAM@184..186
-            LIFETIME@184..186
-              LIFETIME_IDENT@184..186 "'a"
-          R_ANGLE@186..187 ">"
-        WHITESPACE@187..188 " "
-        FOR_TYPE@188..227
-          FOR_KW@188..191 "for"
-          GENERIC_PARAM_LIST@191..195
-            L_ANGLE@191..192 "<"
-            LIFETIME_PARAM@192..194
-              LIFETIME@192..194
-                LIFETIME_IDENT@192..194 "'b"
-            R_ANGLE@194..195 ">"
-          WHITESPACE@195..196 " "
-          FOR_TYPE@196..227
-            FOR_KW@196..199 "for"
-            GENERIC_PARAM_LIST@199..203
-              L_ANGLE@199..200 "<"
-              LIFETIME_PARAM@200..202
-                LIFETIME@200..202
-                  LIFETIME_IDENT@200..202 "'c"
-              R_ANGLE@202..203 ">"
-            WHITESPACE@203..204 " "
-            FN_PTR_TYPE@204..227
-              FN_KW@204..206 "fn"
-              PARAM_LIST@206..227
-                L_PAREN@206..207 "("
-                PARAM@207..212
-                  REF_TYPE@207..212
-                    AMP@207..208 "&"
-                    LIFETIME@208..210
-                      LIFETIME_IDENT@208..210 "'a"
-                    WHITESPACE@210..211 " "
-                    PATH_TYPE@211..212
-                      PATH@211..212
-                        PATH_SEGMENT@211..212
-                          NAME_REF@211..212
-                            IDENT@211..212 "T"
-                COMMA@212..213 ","
-                WHITESPACE@213..214 " "
-                PARAM@214..219
-                  REF_TYPE@214..219
-                    AMP@214..215 "&"
-                    LIFETIME@215..217
-                      LIFETIME_IDENT@215..217 "'b"
-                    WHITESPACE@217..218 " "
-                    PATH_TYPE@218..219
-                      PATH@218..219
-                        PATH_SEGMENT@218..219
-                          NAME_REF@218..219
-                            IDENT@218..219 "T"
-                COMMA@219..220 ","
-                WHITESPACE@220..221 " "
-                PARAM@221..226
-                  REF_TYPE@221..226
-                    AMP@221..222 "&"
-                    LIFETIME@222..224
-                      LIFETIME_IDENT@222..224 "'c"
-                    WHITESPACE@224..225 " "
-                    PATH_TYPE@225..226
-                      PATH@225..226
-                        PATH_SEGMENT@225..226
-                          NAME_REF@225..226
-                            IDENT@225..226 "T"
-                R_PAREN@226..227 ")"
-        COLON@227..228 ":"
-        WHITESPACE@228..229 " "
-        TYPE_BOUND_LIST@229..233
-          TYPE_BOUND@229..233
-            PATH_TYPE@229..233
-              PATH@229..233
-                PATH_SEGMENT@229..233
-                  NAME_REF@229..233
-                    IDENT@229..233 "Copy"
-      COMMA@233..234 ","
-    WHITESPACE@234..235 "\n"
-    BLOCK_EXPR@235..238
-      STMT_LIST@235..238
-        L_CURLY@235..236 "{"
-        WHITESPACE@236..237 "\n"
-        R_CURLY@237..238 "}"
-  WHITESPACE@238..239 "\n"
-error 21..21: expected a function pointer or path
-error 52..52: expected a function pointer or path
-error 88..88: expected a function pointer or path
-error 119..119: expected a function pointer or path
-error 195..195: expected a function pointer or path
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "ForRef"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FOR_TYPE
+      FOR_KW "for"
+      GENERIC_PARAM_LIST
+        L_ANGLE "<"
+        LIFETIME_PARAM
+          LIFETIME
+            LIFETIME_IDENT "'a"
+        R_ANGLE ">"
+      WHITESPACE " "
+      REF_TYPE
+        AMP "&"
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "ForTup"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FOR_TYPE
+      FOR_KW "for"
+      GENERIC_PARAM_LIST
+        L_ANGLE "<"
+        LIFETIME_PARAM
+          LIFETIME
+            LIFETIME_IDENT "'a"
+        R_ANGLE ">"
+      WHITESPACE " "
+      TUPLE_TYPE
+        L_PAREN "("
+        REF_TYPE
+          AMP "&"
+          LIFETIME
+            LIFETIME_IDENT "'a"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "u32"
+        COMMA ","
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "ForSlice"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FOR_TYPE
+      FOR_KW "for"
+      GENERIC_PARAM_LIST
+        L_ANGLE "<"
+        LIFETIME_PARAM
+          LIFETIME
+            LIFETIME_IDENT "'a"
+        R_ANGLE ">"
+      WHITESPACE " "
+      SLICE_TYPE
+        L_BRACK "["
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+        R_BRACK "]"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "ForForFn"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FOR_TYPE
+      FOR_KW "for"
+      GENERIC_PARAM_LIST
+        L_ANGLE "<"
+        LIFETIME_PARAM
+          LIFETIME
+            LIFETIME_IDENT "'a"
+        R_ANGLE ">"
+      WHITESPACE " "
+      FOR_TYPE
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'b"
+          R_ANGLE ">"
+        WHITESPACE " "
+        FN_PTR_TYPE
+          FN_KW "fn"
+          PARAM_LIST
+            L_PAREN "("
+            PARAM
+              REF_TYPE
+                AMP "&"
+                LIFETIME
+                  LIFETIME_IDENT "'a"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "i32"
+            COMMA ","
+            WHITESPACE " "
+            PARAM
+              REF_TYPE
+                AMP "&"
+                LIFETIME
+                  LIFETIME_IDENT "'b"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "i32"
+            R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_for_for"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        FOR_TYPE
+          FOR_KW "for"
+          GENERIC_PARAM_LIST
+            L_ANGLE "<"
+            LIFETIME_PARAM
+              LIFETIME
+                LIFETIME_IDENT "'b"
+            R_ANGLE ">"
+          WHITESPACE " "
+          FOR_TYPE
+            FOR_KW "for"
+            GENERIC_PARAM_LIST
+              L_ANGLE "<"
+              LIFETIME_PARAM
+                LIFETIME
+                  LIFETIME_IDENT "'c"
+              R_ANGLE ">"
+            WHITESPACE " "
+            FN_PTR_TYPE
+              FN_KW "fn"
+              PARAM_LIST
+                L_PAREN "("
+                PARAM
+                  REF_TYPE
+                    AMP "&"
+                    LIFETIME
+                      LIFETIME_IDENT "'a"
+                    WHITESPACE " "
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "T"
+                COMMA ","
+                WHITESPACE " "
+                PARAM
+                  REF_TYPE
+                    AMP "&"
+                    LIFETIME
+                      LIFETIME_IDENT "'b"
+                    WHITESPACE " "
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "T"
+                COMMA ","
+                WHITESPACE " "
+                PARAM
+                  REF_TYPE
+                    AMP "&"
+                    LIFETIME
+                      LIFETIME_IDENT "'c"
+                    WHITESPACE " "
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "T"
+                R_PAREN ")"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 21: expected a function pointer or path
+error 52: expected a function pointer or path
+error 88: expected a function pointer or path
+error 119: expected a function pointer or path
+error 195: expected a function pointer or path
diff --git a/crates/parser/test_data/parser/err/0043_unexpected_for_type.txt b/crates/parser/test_data/parser/err/0043_unexpected_for_type.txt
deleted file mode 100644
index cb4fb1642d9..00000000000
--- a/crates/parser/test_data/parser/err/0043_unexpected_for_type.txt
+++ /dev/null
@@ -1,256 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "ForRef"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FOR_TYPE
-      FOR_KW "for"
-      GENERIC_PARAM_LIST
-        L_ANGLE "<"
-        LIFETIME_PARAM
-          LIFETIME
-            LIFETIME_IDENT "'a"
-        R_ANGLE ">"
-      WHITESPACE " "
-      REF_TYPE
-        AMP "&"
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "ForTup"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FOR_TYPE
-      FOR_KW "for"
-      GENERIC_PARAM_LIST
-        L_ANGLE "<"
-        LIFETIME_PARAM
-          LIFETIME
-            LIFETIME_IDENT "'a"
-        R_ANGLE ">"
-      WHITESPACE " "
-      TUPLE_TYPE
-        L_PAREN "("
-        REF_TYPE
-          AMP "&"
-          LIFETIME
-            LIFETIME_IDENT "'a"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "u32"
-        COMMA ","
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "ForSlice"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FOR_TYPE
-      FOR_KW "for"
-      GENERIC_PARAM_LIST
-        L_ANGLE "<"
-        LIFETIME_PARAM
-          LIFETIME
-            LIFETIME_IDENT "'a"
-        R_ANGLE ">"
-      WHITESPACE " "
-      SLICE_TYPE
-        L_BRACK "["
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-        R_BRACK "]"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "ForForFn"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FOR_TYPE
-      FOR_KW "for"
-      GENERIC_PARAM_LIST
-        L_ANGLE "<"
-        LIFETIME_PARAM
-          LIFETIME
-            LIFETIME_IDENT "'a"
-        R_ANGLE ">"
-      WHITESPACE " "
-      FOR_TYPE
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'b"
-          R_ANGLE ">"
-        WHITESPACE " "
-        FN_PTR_TYPE
-          FN_KW "fn"
-          PARAM_LIST
-            L_PAREN "("
-            PARAM
-              REF_TYPE
-                AMP "&"
-                LIFETIME
-                  LIFETIME_IDENT "'a"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "i32"
-            COMMA ","
-            WHITESPACE " "
-            PARAM
-              REF_TYPE
-                AMP "&"
-                LIFETIME
-                  LIFETIME_IDENT "'b"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "i32"
-            R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_for_for"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        FOR_TYPE
-          FOR_KW "for"
-          GENERIC_PARAM_LIST
-            L_ANGLE "<"
-            LIFETIME_PARAM
-              LIFETIME
-                LIFETIME_IDENT "'b"
-            R_ANGLE ">"
-          WHITESPACE " "
-          FOR_TYPE
-            FOR_KW "for"
-            GENERIC_PARAM_LIST
-              L_ANGLE "<"
-              LIFETIME_PARAM
-                LIFETIME
-                  LIFETIME_IDENT "'c"
-              R_ANGLE ">"
-            WHITESPACE " "
-            FN_PTR_TYPE
-              FN_KW "fn"
-              PARAM_LIST
-                L_PAREN "("
-                PARAM
-                  REF_TYPE
-                    AMP "&"
-                    LIFETIME
-                      LIFETIME_IDENT "'a"
-                    WHITESPACE " "
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "T"
-                COMMA ","
-                WHITESPACE " "
-                PARAM
-                  REF_TYPE
-                    AMP "&"
-                    LIFETIME
-                      LIFETIME_IDENT "'b"
-                    WHITESPACE " "
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "T"
-                COMMA ","
-                WHITESPACE " "
-                PARAM
-                  REF_TYPE
-                    AMP "&"
-                    LIFETIME
-                      LIFETIME_IDENT "'c"
-                    WHITESPACE " "
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "T"
-                R_PAREN ")"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 21: expected a function pointer or path
-error 52: expected a function pointer or path
-error 88: expected a function pointer or path
-error 119: expected a function pointer or path
-error 195: expected a function pointer or path
diff --git a/crates/parser/test_data/parser/err/0044_item_modifiers.rast b/crates/parser/test_data/parser/err/0044_item_modifiers.rast
index b4ff1a14a7c..96e471a69a7 100644
--- a/crates/parser/test_data/parser/err/0044_item_modifiers.rast
+++ b/crates/parser/test_data/parser/err/0044_item_modifiers.rast
@@ -1,48 +1,48 @@
-SOURCE_FILE@0..50
-  ERROR@0..6
-    UNSAFE_KW@0..6 "unsafe"
-  WHITESPACE@6..7 " "
-  FN@7..24
-    ASYNC_KW@7..12 "async"
-    WHITESPACE@12..13 " "
-    FN_KW@13..15 "fn"
-    WHITESPACE@15..16 " "
-    NAME@16..19
-      IDENT@16..19 "foo"
-    PARAM_LIST@19..21
-      L_PAREN@19..20 "("
-      R_PAREN@20..21 ")"
-    WHITESPACE@21..22 " "
-    BLOCK_EXPR@22..24
-      STMT_LIST@22..24
-        L_CURLY@22..23 "{"
-        R_CURLY@23..24 "}"
-  WHITESPACE@24..25 "\n"
-  CONST@25..40
-    UNSAFE_KW@25..31 "unsafe"
-    WHITESPACE@31..32 " "
-    CONST_KW@32..37 "const"
-    WHITESPACE@37..38 " "
-    ERROR@38..40
-      FN_KW@38..40 "fn"
-  WHITESPACE@40..41 " "
-  MACRO_CALL@41..46
-    PATH@41..44
-      PATH_SEGMENT@41..44
-        NAME_REF@41..44
-          IDENT@41..44 "bar"
-    TOKEN_TREE@44..46
-      L_PAREN@44..45 "("
-      R_PAREN@45..46 ")"
-  WHITESPACE@46..47 " "
-  ERROR@47..49
-    L_CURLY@47..48 "{"
-    R_CURLY@48..49 "}"
-  WHITESPACE@49..50 "\n"
-error 6..6: expected existential, fn, trait or impl
-error 38..38: expected a name
-error 40..40: missing type for `const` or `static`
-error 40..40: expected SEMICOLON
-error 44..44: expected BANG
-error 46..46: expected SEMICOLON
-error 47..47: expected an item
+SOURCE_FILE
+  ERROR
+    UNSAFE_KW "unsafe"
+  WHITESPACE " "
+  FN
+    ASYNC_KW "async"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  CONST
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    CONST_KW "const"
+    WHITESPACE " "
+    ERROR
+      FN_KW "fn"
+  WHITESPACE " "
+  MACRO_CALL
+    PATH
+      PATH_SEGMENT
+        NAME_REF
+          IDENT "bar"
+    TOKEN_TREE
+      L_PAREN "("
+      R_PAREN ")"
+  WHITESPACE " "
+  ERROR
+    L_CURLY "{"
+    R_CURLY "}"
+  WHITESPACE "\n"
+error 6: expected existential, fn, trait or impl
+error 38: expected a name
+error 40: missing type for `const` or `static`
+error 40: expected SEMICOLON
+error 44: expected BANG
+error 46: expected SEMICOLON
+error 47: expected an item
diff --git a/crates/parser/test_data/parser/err/0044_item_modifiers.txt b/crates/parser/test_data/parser/err/0044_item_modifiers.txt
deleted file mode 100644
index 96e471a69a7..00000000000
--- a/crates/parser/test_data/parser/err/0044_item_modifiers.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-SOURCE_FILE
-  ERROR
-    UNSAFE_KW "unsafe"
-  WHITESPACE " "
-  FN
-    ASYNC_KW "async"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  CONST
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    CONST_KW "const"
-    WHITESPACE " "
-    ERROR
-      FN_KW "fn"
-  WHITESPACE " "
-  MACRO_CALL
-    PATH
-      PATH_SEGMENT
-        NAME_REF
-          IDENT "bar"
-    TOKEN_TREE
-      L_PAREN "("
-      R_PAREN ")"
-  WHITESPACE " "
-  ERROR
-    L_CURLY "{"
-    R_CURLY "}"
-  WHITESPACE "\n"
-error 6: expected existential, fn, trait or impl
-error 38: expected a name
-error 40: missing type for `const` or `static`
-error 40: expected SEMICOLON
-error 44: expected BANG
-error 46: expected SEMICOLON
-error 47: expected an item
diff --git a/crates/parser/test_data/parser/err/0047_repated_extern_modifier.rast b/crates/parser/test_data/parser/err/0047_repated_extern_modifier.rast
index 85e10ca36db..4b2a740362e 100644
--- a/crates/parser/test_data/parser/err/0047_repated_extern_modifier.rast
+++ b/crates/parser/test_data/parser/err/0047_repated_extern_modifier.rast
@@ -1,15 +1,15 @@
-SOURCE_FILE@0..22
-  ERROR@0..10
-    ABI@0..10
-      EXTERN_KW@0..6 "extern"
-      WHITESPACE@6..7 " "
-      STRING@7..10 "\"C\""
-  WHITESPACE@10..11 " "
-  ERROR@11..21
-    ABI@11..21
-      EXTERN_KW@11..17 "extern"
-      WHITESPACE@17..18 " "
-      STRING@18..21 "\"C\""
-  WHITESPACE@21..22 "\n"
-error 10..10: expected existential, fn, trait or impl
-error 21..21: expected existential, fn, trait or impl
+SOURCE_FILE
+  ERROR
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+  WHITESPACE " "
+  ERROR
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+  WHITESPACE "\n"
+error 10: expected existential, fn, trait or impl
+error 21: expected existential, fn, trait or impl
diff --git a/crates/parser/test_data/parser/err/0047_repated_extern_modifier.txt b/crates/parser/test_data/parser/err/0047_repated_extern_modifier.txt
deleted file mode 100644
index 4b2a740362e..00000000000
--- a/crates/parser/test_data/parser/err/0047_repated_extern_modifier.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-SOURCE_FILE
-  ERROR
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-  WHITESPACE " "
-  ERROR
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-  WHITESPACE "\n"
-error 10: expected existential, fn, trait or impl
-error 21: expected existential, fn, trait or impl
diff --git a/crates/parser/test_data/parser/err/0048_double_fish.rast b/crates/parser/test_data/parser/err/0048_double_fish.rast
index ca52166fbc4..3a05bfee1ee 100644
--- a/crates/parser/test_data/parser/err/0048_double_fish.rast
+++ b/crates/parser/test_data/parser/err/0048_double_fish.rast
@@ -1,123 +1,123 @@
-SOURCE_FILE@0..90
-  FN@0..40
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..40
-      STMT_LIST@7..40
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..13 "\n    "
-        EXPR_STMT@13..31
-          PATH_EXPR@13..31
-            PATH@13..31
-              PATH_SEGMENT@13..31
-                NAME_REF@13..14
-                  IDENT@13..14 "S"
-                GENERIC_ARG_LIST@14..31
-                  COLON2@14..16 "::"
-                  L_ANGLE@16..17 "<"
-                  TYPE_ARG@17..31
-                    PATH_TYPE@17..31
-                      PATH@17..31
-                        PATH@17..28
-                          PATH_SEGMENT@17..28
-                            NAME_REF@17..21
-                              IDENT@17..21 "Item"
-                            GENERIC_ARG_LIST@21..28
-                              COLON2@21..23 "::"
-                              L_ANGLE@23..24 "<"
-                              TYPE_ARG@24..27
-                                PATH_TYPE@24..27
-                                  PATH@24..27
-                                    PATH_SEGMENT@24..27
-                                      NAME_REF@24..27
-                                        IDENT@24..27 "lol"
-                              R_ANGLE@27..28 ">"
-                        COLON2@28..30 "::"
-                        ERROR@30..31
-                          L_ANGLE@30..31 "<"
-        BIN_EXPR@31..38
-          PATH_EXPR@31..35
-            PATH@31..35
-              PATH_SEGMENT@31..35
-                NAME_REF@31..35
-                  IDENT@31..35 "nope"
-          SHR@35..37 ">>"
-          ERROR@37..38
-            SEMICOLON@37..38 ";"
-        WHITESPACE@38..39 "\n"
-        R_CURLY@39..40 "}"
-  WHITESPACE@40..42 "\n\n"
-  FN@42..89
-    FN_KW@42..44 "fn"
-    WHITESPACE@44..45 " "
-    NAME@45..46
-      IDENT@45..46 "g"
-    PARAM_LIST@46..48
-      L_PAREN@46..47 "("
-      R_PAREN@47..48 ")"
-    WHITESPACE@48..49 " "
-    BLOCK_EXPR@49..89
-      STMT_LIST@49..89
-        L_CURLY@49..50 "{"
-        WHITESPACE@50..55 "\n    "
-        LET_STMT@55..76
-          LET_KW@55..58 "let"
-          WHITESPACE@58..59 " "
-          WILDCARD_PAT@59..60
-            UNDERSCORE@59..60 "_"
-          COLON@60..61 ":"
-          WHITESPACE@61..62 " "
-          PATH_TYPE@62..76
-            PATH@62..76
-              PATH@62..73
-                PATH_SEGMENT@62..73
-                  NAME_REF@62..66
-                    IDENT@62..66 "Item"
-                  GENERIC_ARG_LIST@66..73
-                    COLON2@66..68 "::"
-                    L_ANGLE@68..69 "<"
-                    TYPE_ARG@69..72
-                      PATH_TYPE@69..72
-                        PATH@69..72
-                          PATH_SEGMENT@69..72
-                            NAME_REF@69..72
-                              IDENT@69..72 "lol"
-                    R_ANGLE@72..73 ">"
-              COLON2@73..75 "::"
-              ERROR@75..76
-                L_ANGLE@75..76 "<"
-        EXPR_STMT@76..83
-          BIN_EXPR@76..83
-            PATH_EXPR@76..80
-              PATH@76..80
-                PATH_SEGMENT@76..80
-                  NAME_REF@76..80
-                    IDENT@76..80 "nope"
-            R_ANGLE@80..81 ">"
-            WHITESPACE@81..82 " "
-            ERROR@82..83
-              EQ@82..83 "="
-        WHITESPACE@83..84 " "
-        EXPR_STMT@84..87
-          TUPLE_EXPR@84..86
-            L_PAREN@84..85 "("
-            R_PAREN@85..86 ")"
-          SEMICOLON@86..87 ";"
-        WHITESPACE@87..88 "\n"
-        R_CURLY@88..89 "}"
-  WHITESPACE@89..90 "\n"
-error 30..30: expected identifier
-error 31..31: expected COMMA
-error 31..31: expected R_ANGLE
-error 31..31: expected SEMICOLON
-error 37..37: expected expression
-error 75..75: expected identifier
-error 76..76: expected SEMICOLON
-error 82..82: expected expression
-error 83..83: expected SEMICOLON
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+                GENERIC_ARG_LIST
+                  COLON2 "::"
+                  L_ANGLE "<"
+                  TYPE_ARG
+                    PATH_TYPE
+                      PATH
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Item"
+                            GENERIC_ARG_LIST
+                              COLON2 "::"
+                              L_ANGLE "<"
+                              TYPE_ARG
+                                PATH_TYPE
+                                  PATH
+                                    PATH_SEGMENT
+                                      NAME_REF
+                                        IDENT "lol"
+                              R_ANGLE ">"
+                        COLON2 "::"
+                        ERROR
+                          L_ANGLE "<"
+        BIN_EXPR
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "nope"
+          SHR ">>"
+          ERROR
+            SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "g"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Item"
+                  GENERIC_ARG_LIST
+                    COLON2 "::"
+                    L_ANGLE "<"
+                    TYPE_ARG
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "lol"
+                    R_ANGLE ">"
+              COLON2 "::"
+              ERROR
+                L_ANGLE "<"
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "nope"
+            R_ANGLE ">"
+            WHITESPACE " "
+            ERROR
+              EQ "="
+        WHITESPACE " "
+        EXPR_STMT
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 30: expected identifier
+error 31: expected COMMA
+error 31: expected R_ANGLE
+error 31: expected SEMICOLON
+error 37: expected expression
+error 75: expected identifier
+error 76: expected SEMICOLON
+error 82: expected expression
+error 83: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/err/0048_double_fish.txt b/crates/parser/test_data/parser/err/0048_double_fish.txt
deleted file mode 100644
index 3a05bfee1ee..00000000000
--- a/crates/parser/test_data/parser/err/0048_double_fish.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-                GENERIC_ARG_LIST
-                  COLON2 "::"
-                  L_ANGLE "<"
-                  TYPE_ARG
-                    PATH_TYPE
-                      PATH
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Item"
-                            GENERIC_ARG_LIST
-                              COLON2 "::"
-                              L_ANGLE "<"
-                              TYPE_ARG
-                                PATH_TYPE
-                                  PATH
-                                    PATH_SEGMENT
-                                      NAME_REF
-                                        IDENT "lol"
-                              R_ANGLE ">"
-                        COLON2 "::"
-                        ERROR
-                          L_ANGLE "<"
-        BIN_EXPR
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "nope"
-          SHR ">>"
-          ERROR
-            SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "g"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Item"
-                  GENERIC_ARG_LIST
-                    COLON2 "::"
-                    L_ANGLE "<"
-                    TYPE_ARG
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "lol"
-                    R_ANGLE ">"
-              COLON2 "::"
-              ERROR
-                L_ANGLE "<"
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "nope"
-            R_ANGLE ">"
-            WHITESPACE " "
-            ERROR
-              EQ "="
-        WHITESPACE " "
-        EXPR_STMT
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 30: expected identifier
-error 31: expected COMMA
-error 31: expected R_ANGLE
-error 31: expected SEMICOLON
-error 37: expected expression
-error 75: expected identifier
-error 76: expected SEMICOLON
-error 82: expected expression
-error 83: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.rast b/crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.rast
index 0b9bbec0776..ed739a7e398 100644
--- a/crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.rast
+++ b/crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.rast
@@ -1,27 +1,27 @@
-SOURCE_FILE@0..18
-  TYPE_ALIAS@0..12
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    SLICE_TYPE@9..12
-      L_BRACK@9..10 "["
-      TUPLE_TYPE@10..12
-        L_PAREN@10..11 "("
-        R_PAREN@11..12 ")"
-  WHITESPACE@12..13 " "
-  ERROR@13..15
-    INT_NUMBER@13..15 "92"
-  ERROR@15..16
-    R_BRACK@15..16 "]"
-  ERROR@16..17
-    SEMICOLON@16..17 ";"
-  WHITESPACE@17..18 "\n"
-error 12..12: expected `;` or `]`
-error 12..12: expected SEMICOLON
-error 13..13: expected an item
-error 15..15: expected an item
-error 16..16: expected an item
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    SLICE_TYPE
+      L_BRACK "["
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+  WHITESPACE " "
+  ERROR
+    INT_NUMBER "92"
+  ERROR
+    R_BRACK "]"
+  ERROR
+    SEMICOLON ";"
+  WHITESPACE "\n"
+error 12: expected `;` or `]`
+error 12: expected SEMICOLON
+error 13: expected an item
+error 15: expected an item
+error 16: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.txt b/crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.txt
deleted file mode 100644
index ed739a7e398..00000000000
--- a/crates/parser/test_data/parser/inline/err/0001_array_type_missing_semi.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    SLICE_TYPE
-      L_BRACK "["
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-  WHITESPACE " "
-  ERROR
-    INT_NUMBER "92"
-  ERROR
-    R_BRACK "]"
-  ERROR
-    SEMICOLON ";"
-  WHITESPACE "\n"
-error 12: expected `;` or `]`
-error 12: expected SEMICOLON
-error 13: expected an item
-error 15: expected an item
-error 16: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.rast b/crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.rast
index 06abd807f17..56cea4b1567 100644
--- a/crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.rast
+++ b/crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.rast
@@ -1,28 +1,28 @@
-SOURCE_FILE@0..30
-  FN@0..29
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..29
-      STMT_LIST@10..29
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        ERROR@16..22
-          LABEL@16..22
-            LIFETIME@16..21
-              LIFETIME_IDENT@16..21 "'loop"
-            COLON@21..22 ":"
-        WHITESPACE@22..23 " "
-        IMPL@23..27
-          IMPL_KW@23..27 "impl"
-        WHITESPACE@27..28 "\n"
-        R_CURLY@28..29 "}"
-  WHITESPACE@29..30 "\n"
-error 22..22: expected a loop
-error 27..27: expected type
-error 27..27: expected `{`
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        ERROR
+          LABEL
+            LIFETIME
+              LIFETIME_IDENT "'loop"
+            COLON ":"
+        WHITESPACE " "
+        IMPL
+          IMPL_KW "impl"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 22: expected a loop
+error 27: expected type
+error 27: expected `{`
diff --git a/crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.txt b/crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.txt
deleted file mode 100644
index 56cea4b1567..00000000000
--- a/crates/parser/test_data/parser/inline/err/0002_misplaced_label_err.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        ERROR
-          LABEL
-            LIFETIME
-              LIFETIME_IDENT "'loop"
-            COLON ":"
-        WHITESPACE " "
-        IMPL
-          IMPL_KW "impl"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 22: expected a loop
-error 27: expected type
-error 27: expected `{`
diff --git a/crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast b/crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast
index 0d8bf6dd6b6..354c4135a4d 100644
--- a/crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast
+++ b/crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast
@@ -1,17 +1,17 @@
-SOURCE_FILE@0..14
-  TYPE_ALIAS@0..13
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PTR_TYPE@9..12
-      STAR@9..10 "*"
-      TUPLE_TYPE@10..12
-        L_PAREN@10..11 "("
-        R_PAREN@11..12 ")"
-    SEMICOLON@12..13 ";"
-  WHITESPACE@13..14 "\n"
-error 10..10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PTR_TYPE
+      STAR "*"
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+error 10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
diff --git a/crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.txt b/crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.txt
deleted file mode 100644
index 354c4135a4d..00000000000
--- a/crates/parser/test_data/parser/inline/err/0003_pointer_type_no_mutability.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PTR_TYPE
-      STAR "*"
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-error 10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
diff --git a/crates/parser/test_data/parser/inline/err/0004_impl_type.rast b/crates/parser/test_data/parser/inline/err/0004_impl_type.rast
index 29d6b397402..dbeb878a2e8 100644
--- a/crates/parser/test_data/parser/inline/err/0004_impl_type.rast
+++ b/crates/parser/test_data/parser/inline/err/0004_impl_type.rast
@@ -1,79 +1,79 @@
-SOURCE_FILE@0..87
-  IMPL@0..12
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..9
-      PATH@5..9
-        PATH_SEGMENT@5..9
-          NAME_REF@5..9
-            IDENT@5..9 "Type"
-    WHITESPACE@9..10 " "
-    ASSOC_ITEM_LIST@10..12
-      L_CURLY@10..11 "{"
-      R_CURLY@11..12 "}"
-  WHITESPACE@12..13 "\n"
-  IMPL@13..33
-    IMPL_KW@13..17 "impl"
-    WHITESPACE@17..18 " "
-    PATH_TYPE@18..24
-      PATH@18..24
-        PATH_SEGMENT@18..24
-          NAME_REF@18..24
-            IDENT@18..24 "Trait1"
-    WHITESPACE@24..25 " "
-    FOR_KW@25..28 "for"
-    WHITESPACE@28..29 " "
-    PATH_TYPE@29..30
-      PATH@29..30
-        PATH_SEGMENT@29..30
-          NAME_REF@29..30
-            IDENT@29..30 "T"
-    WHITESPACE@30..31 " "
-    ASSOC_ITEM_LIST@31..33
-      L_CURLY@31..32 "{"
-      R_CURLY@32..33 "}"
-  WHITESPACE@33..34 "\n"
-  IMPL@34..38
-    IMPL_KW@34..38 "impl"
-  WHITESPACE@38..39 " "
-  IMPL@39..54
-    IMPL_KW@39..43 "impl"
-    WHITESPACE@43..44 " "
-    PATH_TYPE@44..51
-      PATH@44..51
-        PATH_SEGMENT@44..51
-          NAME_REF@44..51
-            IDENT@44..51 "NotType"
-    WHITESPACE@51..52 " "
-    ASSOC_ITEM_LIST@52..54
-      L_CURLY@52..53 "{"
-      R_CURLY@53..54 "}"
-  WHITESPACE@54..55 "\n"
-  IMPL@55..70
-    IMPL_KW@55..59 "impl"
-    WHITESPACE@59..60 " "
-    PATH_TYPE@60..66
-      PATH@60..66
-        PATH_SEGMENT@60..66
-          NAME_REF@60..66
-            IDENT@60..66 "Trait2"
-    WHITESPACE@66..67 " "
-    FOR_KW@67..70 "for"
-  WHITESPACE@70..71 " "
-  IMPL@71..86
-    IMPL_KW@71..75 "impl"
-    WHITESPACE@75..76 " "
-    PATH_TYPE@76..83
-      PATH@76..83
-        PATH_SEGMENT@76..83
-          NAME_REF@76..83
-            IDENT@76..83 "NotType"
-    WHITESPACE@83..84 " "
-    ASSOC_ITEM_LIST@84..86
-      L_CURLY@84..85 "{"
-      R_CURLY@85..86 "}"
-  WHITESPACE@86..87 "\n"
-error 38..38: expected trait or type
-error 38..38: expected `{`
-error 70..70: expected trait or type
-error 70..70: expected `{`
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Type"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Trait1"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  IMPL
+    IMPL_KW "impl"
+  WHITESPACE " "
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "NotType"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Trait2"
+    WHITESPACE " "
+    FOR_KW "for"
+  WHITESPACE " "
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "NotType"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+error 38: expected trait or type
+error 38: expected `{`
+error 70: expected trait or type
+error 70: expected `{`
diff --git a/crates/parser/test_data/parser/inline/err/0004_impl_type.txt b/crates/parser/test_data/parser/inline/err/0004_impl_type.txt
deleted file mode 100644
index dbeb878a2e8..00000000000
--- a/crates/parser/test_data/parser/inline/err/0004_impl_type.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Type"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Trait1"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  IMPL
-    IMPL_KW "impl"
-  WHITESPACE " "
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "NotType"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Trait2"
-    WHITESPACE " "
-    FOR_KW "for"
-  WHITESPACE " "
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "NotType"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-error 38: expected trait or type
-error 38: expected `{`
-error 70: expected trait or type
-error 70: expected `{`
diff --git a/crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast b/crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast
index 776022fd936..eb059529396 100644
--- a/crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast
+++ b/crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast
@@ -1,23 +1,23 @@
-SOURCE_FILE@0..20
-  TYPE_ALIAS@0..15
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "F"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    UNSAFE_KW@9..15 "unsafe"
-  WHITESPACE@15..16 " "
-  ERROR@16..17
-    L_PAREN@16..17 "("
-  ERROR@17..18
-    R_PAREN@17..18 ")"
-  ERROR@18..19
-    SEMICOLON@18..19 ";"
-  WHITESPACE@19..20 "\n"
-error 15..15: expected `fn`
-error 15..15: expected SEMICOLON
-error 16..16: expected an item
-error 17..17: expected an item
-error 18..18: expected an item
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "F"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    UNSAFE_KW "unsafe"
+  WHITESPACE " "
+  ERROR
+    L_PAREN "("
+  ERROR
+    R_PAREN ")"
+  ERROR
+    SEMICOLON ";"
+  WHITESPACE "\n"
+error 15: expected `fn`
+error 15: expected SEMICOLON
+error 16: expected an item
+error 17: expected an item
+error 18: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt b/crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
deleted file mode 100644
index eb059529396..00000000000
--- a/crates/parser/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "F"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    UNSAFE_KW "unsafe"
-  WHITESPACE " "
-  ERROR
-    L_PAREN "("
-  ERROR
-    R_PAREN ")"
-  ERROR
-    SEMICOLON ";"
-  WHITESPACE "\n"
-error 15: expected `fn`
-error 15: expected SEMICOLON
-error 16: expected an item
-error 17: expected an item
-error 18: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast b/crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast
index 04bac982114..77c2b56adf2 100644
--- a/crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast
+++ b/crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast
@@ -1,37 +1,37 @@
-SOURCE_FILE@0..33
-  FN@0..10
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    BLOCK_EXPR@8..10
-      STMT_LIST@8..10
-        L_CURLY@8..9 "{"
-        R_CURLY@9..10 "}"
-  WHITESPACE@10..11 " "
-  ERROR@11..17
-    UNSAFE_KW@11..17 "unsafe"
-  WHITESPACE@17..18 " "
-  ERROR@18..21
-    L_CURLY@18..19 "{"
-    WHITESPACE@19..20 " "
-    R_CURLY@20..21 "}"
-  WHITESPACE@21..22 " "
-  FN@22..32
-    FN_KW@22..24 "fn"
-    WHITESPACE@24..25 " "
-    NAME@25..28
-      IDENT@25..28 "bar"
-    PARAM_LIST@28..30
-      L_PAREN@28..29 "("
-      R_PAREN@29..30 ")"
-    BLOCK_EXPR@30..32
-      STMT_LIST@30..32
-        L_CURLY@30..31 "{"
-        R_CURLY@31..32 "}"
-  WHITESPACE@32..33 "\n"
-error 11..11: expected an item
-error 18..18: expected an item
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE " "
+  ERROR
+    UNSAFE_KW "unsafe"
+  WHITESPACE " "
+  ERROR
+    L_CURLY "{"
+    WHITESPACE " "
+    R_CURLY "}"
+  WHITESPACE " "
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "bar"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 11: expected an item
+error 18: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt b/crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt
deleted file mode 100644
index 77c2b56adf2..00000000000
--- a/crates/parser/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE " "
-  ERROR
-    UNSAFE_KW "unsafe"
-  WHITESPACE " "
-  ERROR
-    L_CURLY "{"
-    WHITESPACE " "
-    R_CURLY "}"
-  WHITESPACE " "
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "bar"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 11: expected an item
-error 18: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.rast b/crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.rast
index c9a84a0ce44..bf20d5fa4f6 100644
--- a/crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.rast
+++ b/crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.rast
@@ -1,32 +1,32 @@
-SOURCE_FILE@0..30
-  FN@0..29
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..29
-      STMT_LIST@9..29
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 " "
-        LET_STMT@11..27
-          LET_KW@11..14 "let"
-          WHITESPACE@14..15 " "
-          WILDCARD_PAT@15..16
-            UNDERSCORE@15..16 "_"
-          WHITESPACE@16..17 " "
-          EQ@17..18 "="
-          WHITESPACE@18..19 " "
-          BLOCK_EXPR@19..27
-            ASYNC_KW@19..24 "async"
-            WHITESPACE@24..25 " "
-            STMT_LIST@25..27
-              L_CURLY@25..26 "{"
-              R_CURLY@26..27 "}"
-        WHITESPACE@27..28 " "
-        R_CURLY@28..29 "}"
-  WHITESPACE@29..30 "\n"
-error 27..27: expected SEMICOLON
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BLOCK_EXPR
+            ASYNC_KW "async"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 27: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.txt b/crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.txt
deleted file mode 100644
index bf20d5fa4f6..00000000000
--- a/crates/parser/test_data/parser/inline/err/0007_async_without_semicolon.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BLOCK_EXPR
-            ASYNC_KW "async"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 27: expected SEMICOLON
diff --git a/crates/parser/test_data/parser/inline/err/0008_pub_expr.rast b/crates/parser/test_data/parser/inline/err/0008_pub_expr.rast
index 57c1d2051b8..0ae9f64e7e6 100644
--- a/crates/parser/test_data/parser/inline/err/0008_pub_expr.rast
+++ b/crates/parser/test_data/parser/inline/err/0008_pub_expr.rast
@@ -1,26 +1,26 @@
-SOURCE_FILE@0..21
-  FN@0..20
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..20
-      STMT_LIST@9..20
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 " "
-        ERROR@11..14
-          VISIBILITY@11..14
-            PUB_KW@11..14 "pub"
-        WHITESPACE@14..15 " "
-        EXPR_STMT@15..18
-          LITERAL@15..17
-            INT_NUMBER@15..17 "92"
-          SEMICOLON@17..18 ";"
-        WHITESPACE@18..19 " "
-        R_CURLY@19..20 "}"
-  WHITESPACE@20..21 "\n"
-error 14..14: expected an item
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        ERROR
+          VISIBILITY
+            PUB_KW "pub"
+        WHITESPACE " "
+        EXPR_STMT
+          LITERAL
+            INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 14: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0008_pub_expr.txt b/crates/parser/test_data/parser/inline/err/0008_pub_expr.txt
deleted file mode 100644
index 0ae9f64e7e6..00000000000
--- a/crates/parser/test_data/parser/inline/err/0008_pub_expr.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        ERROR
-          VISIBILITY
-            PUB_KW "pub"
-        WHITESPACE " "
-        EXPR_STMT
-          LITERAL
-            INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 14: expected an item
diff --git a/crates/parser/test_data/parser/inline/err/0013_anonymous_static.rast b/crates/parser/test_data/parser/inline/err/0013_anonymous_static.rast
index 8d761b90741..823db94f58a 100644
--- a/crates/parser/test_data/parser/inline/err/0013_anonymous_static.rast
+++ b/crates/parser/test_data/parser/inline/err/0013_anonymous_static.rast
@@ -1,21 +1,21 @@
-SOURCE_FILE@0..19
-  STATIC@0..18
-    STATIC_KW@0..6 "static"
-    WHITESPACE@6..7 " "
-    ERROR@7..8
-      UNDERSCORE@7..8 "_"
-    COLON@8..9 ":"
-    WHITESPACE@9..10 " "
-    PATH_TYPE@10..13
-      PATH@10..13
-        PATH_SEGMENT@10..13
-          NAME_REF@10..13
-            IDENT@10..13 "i32"
-    WHITESPACE@13..14 " "
-    EQ@14..15 "="
-    WHITESPACE@15..16 " "
-    LITERAL@16..17
-      INT_NUMBER@16..17 "5"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
-error 7..7: expected a name
+SOURCE_FILE
+  STATIC
+    STATIC_KW "static"
+    WHITESPACE " "
+    ERROR
+      UNDERSCORE "_"
+    COLON ":"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "i32"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    LITERAL
+      INT_NUMBER "5"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+error 7: expected a name
diff --git a/crates/parser/test_data/parser/inline/err/0013_anonymous_static.txt b/crates/parser/test_data/parser/inline/err/0013_anonymous_static.txt
deleted file mode 100644
index 823db94f58a..00000000000
--- a/crates/parser/test_data/parser/inline/err/0013_anonymous_static.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE
-  STATIC
-    STATIC_KW "static"
-    WHITESPACE " "
-    ERROR
-      UNDERSCORE "_"
-    COLON ":"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "i32"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    LITERAL
-      INT_NUMBER "5"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-error 7: expected a name
diff --git a/crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast b/crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast
index f8cdddb6e84..f511960040d 100644
--- a/crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast
+++ b/crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast
@@ -1,49 +1,49 @@
-SOURCE_FILE@0..45
-  FN@0..44
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..44
-      STMT_LIST@10..44
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        RECORD_EXPR@16..42
-          PATH@16..17
-            PATH_SEGMENT@16..17
-              NAME_REF@16..17
-                IDENT@16..17 "S"
-          WHITESPACE@17..18 " "
-          RECORD_EXPR_FIELD_LIST@18..42
-            L_CURLY@18..19 "{"
-            WHITESPACE@19..20 " "
-            RECORD_EXPR_FIELD@20..40
-              NAME_REF@20..25
-                IDENT@20..25 "field"
-              WHITESPACE@25..26 " "
-              RANGE_EXPR@26..40
-                DOT2@26..28 ".."
-                CALL_EXPR@28..40
-                  PATH_EXPR@28..38
-                    PATH@28..38
-                      PATH@28..29
-                        PATH_SEGMENT@28..29
-                          NAME_REF@28..29
-                            IDENT@28..29 "S"
-                      COLON2@29..31 "::"
-                      PATH_SEGMENT@31..38
-                        NAME_REF@31..38
-                          IDENT@31..38 "default"
-                  ARG_LIST@38..40
-                    L_PAREN@38..39 "("
-                    R_PAREN@39..40 ")"
-            WHITESPACE@40..41 " "
-            R_CURLY@41..42 "}"
-        WHITESPACE@42..43 "\n"
-        R_CURLY@43..44 "}"
-  WHITESPACE@44..45 "\n"
-error 25..25: expected COLON
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        RECORD_EXPR
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "S"
+          WHITESPACE " "
+          RECORD_EXPR_FIELD_LIST
+            L_CURLY "{"
+            WHITESPACE " "
+            RECORD_EXPR_FIELD
+              NAME_REF
+                IDENT "field"
+              WHITESPACE " "
+              RANGE_EXPR
+                DOT2 ".."
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "S"
+                      COLON2 "::"
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "default"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+            WHITESPACE " "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 25: expected COLON
diff --git a/crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.txt b/crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.txt
deleted file mode 100644
index f511960040d..00000000000
--- a/crates/parser/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        RECORD_EXPR
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "S"
-          WHITESPACE " "
-          RECORD_EXPR_FIELD_LIST
-            L_CURLY "{"
-            WHITESPACE " "
-            RECORD_EXPR_FIELD
-              NAME_REF
-                IDENT "field"
-              WHITESPACE " "
-              RANGE_EXPR
-                DOT2 ".."
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "S"
-                      COLON2 "::"
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "default"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-            WHITESPACE " "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 25: expected COLON
diff --git a/crates/parser/test_data/parser/inline/err/0014_struct_field_recover.rast b/crates/parser/test_data/parser/inline/err/0014_struct_field_recover.rast
index ba8e50993d7..458d7f4e2fa 100644
--- a/crates/parser/test_data/parser/inline/err/0014_struct_field_recover.rast
+++ b/crates/parser/test_data/parser/inline/err/0014_struct_field_recover.rast
@@ -1,31 +1,31 @@
-SOURCE_FILE@0..25
-  STRUCT@0..24
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..24
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..11 " "
-      RECORD_FIELD@11..12
-        NAME@11..12
-          IDENT@11..12 "f"
-      WHITESPACE@12..13 " "
-      RECORD_FIELD@13..22
-        VISIBILITY@13..16
-          PUB_KW@13..16 "pub"
-        WHITESPACE@16..17 " "
-        NAME@17..18
-          IDENT@17..18 "g"
-        COLON@18..19 ":"
-        WHITESPACE@19..20 " "
-        TUPLE_TYPE@20..22
-          L_PAREN@20..21 "("
-          R_PAREN@21..22 ")"
-      WHITESPACE@22..23 " "
-      R_CURLY@23..24 "}"
-  WHITESPACE@24..25 "\n"
-error 12..12: expected COLON
-error 12..12: expected type
-error 12..12: expected COMMA
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      RECORD_FIELD
+        NAME
+          IDENT "f"
+      WHITESPACE " "
+      RECORD_FIELD
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        NAME
+          IDENT "g"
+        COLON ":"
+        WHITESPACE " "
+        TUPLE_TYPE
+          L_PAREN "("
+          R_PAREN ")"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
+error 12: expected COLON
+error 12: expected type
+error 12: expected COMMA
diff --git a/crates/parser/test_data/parser/inline/err/0014_struct_field_recover.txt b/crates/parser/test_data/parser/inline/err/0014_struct_field_recover.txt
deleted file mode 100644
index 458d7f4e2fa..00000000000
--- a/crates/parser/test_data/parser/inline/err/0014_struct_field_recover.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      RECORD_FIELD
-        NAME
-          IDENT "f"
-      WHITESPACE " "
-      RECORD_FIELD
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        NAME
-          IDENT "g"
-        COLON ":"
-        WHITESPACE " "
-        TUPLE_TYPE
-          L_PAREN "("
-          R_PAREN ")"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
-error 12: expected COLON
-error 12: expected type
-error 12: expected COMMA
diff --git a/crates/parser/test_data/parser/inline/err/0015_empty_segment.rast b/crates/parser/test_data/parser/inline/err/0015_empty_segment.rast
index d3c5dde586c..b03f5ad9f7e 100644
--- a/crates/parser/test_data/parser/inline/err/0015_empty_segment.rast
+++ b/crates/parser/test_data/parser/inline/err/0015_empty_segment.rast
@@ -1,14 +1,14 @@
-SOURCE_FILE@0..13
-  USE@0..12
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..11
-      PATH@4..11
-        PATH@4..9
-          PATH_SEGMENT@4..9
-            NAME_REF@4..9
-              CRATE_KW@4..9 "crate"
-        COLON2@9..11 "::"
-    SEMICOLON@11..12 ";"
-  WHITESPACE@12..13 "\n"
-error 11..11: expected identifier
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              CRATE_KW "crate"
+        COLON2 "::"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+error 11: expected identifier
diff --git a/crates/parser/test_data/parser/inline/err/0015_empty_segment.txt b/crates/parser/test_data/parser/inline/err/0015_empty_segment.txt
deleted file mode 100644
index b03f5ad9f7e..00000000000
--- a/crates/parser/test_data/parser/inline/err/0015_empty_segment.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              CRATE_KW "crate"
-        COLON2 "::"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-error 11: expected identifier
diff --git a/crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.rast b/crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.rast
index 6c634b4f743..e72df374d1b 100644
--- a/crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.rast
+++ b/crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.rast
@@ -1,53 +1,53 @@
-SOURCE_FILE@0..29
-  FN@0..28
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..25
-      L_PAREN@4..5 "("
-      PARAM@5..6
-        IDENT_PAT@5..6
-          NAME@5..6
-            IDENT@5..6 "x"
-      WHITESPACE@6..7 " "
-      PARAM@7..13
-        IDENT_PAT@7..8
-          NAME@7..8
-            IDENT@7..8 "y"
-        COLON@8..9 ":"
-        WHITESPACE@9..10 " "
-        PATH_TYPE@10..13
-          PATH@10..13
-            PATH_SEGMENT@10..13
-              NAME_REF@10..13
-                IDENT@10..13 "i32"
-      COMMA@13..14 ","
-      WHITESPACE@14..15 " "
-      PARAM@15..16
-        IDENT_PAT@15..16
-          NAME@15..16
-            IDENT@15..16 "z"
-      COMMA@16..17 ","
-      WHITESPACE@17..18 " "
-      PARAM@18..24
-        IDENT_PAT@18..19
-          NAME@18..19
-            IDENT@18..19 "t"
-        COLON@19..20 ":"
-        WHITESPACE@20..21 " "
-        PATH_TYPE@21..24
-          PATH@21..24
-            PATH_SEGMENT@21..24
-              NAME_REF@21..24
-                IDENT@21..24 "i32"
-      R_PAREN@24..25 ")"
-    WHITESPACE@25..26 " "
-    BLOCK_EXPR@26..28
-      STMT_LIST@26..28
-        L_CURLY@26..27 "{"
-        R_CURLY@27..28 "}"
-  WHITESPACE@28..29 "\n"
-error 6..6: missing type for function parameter
-error 6..6: expected COMMA
-error 16..16: missing type for function parameter
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "x"
+      WHITESPACE " "
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "y"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      COMMA ","
+      WHITESPACE " "
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "z"
+      COMMA ","
+      WHITESPACE " "
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "t"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+error 6: missing type for function parameter
+error 6: expected COMMA
+error 16: missing type for function parameter
diff --git a/crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.txt b/crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.txt
deleted file mode 100644
index e72df374d1b..00000000000
--- a/crates/parser/test_data/parser/inline/err/0015_missing_fn_param_type.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "x"
-      WHITESPACE " "
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "y"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      COMMA ","
-      WHITESPACE " "
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "z"
-      COMMA ","
-      WHITESPACE " "
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "t"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-error 6: missing type for function parameter
-error 6: expected COMMA
-error 16: missing type for function parameter
diff --git a/crates/parser/test_data/parser/inline/ok/0002_use_tree_list.rast b/crates/parser/test_data/parser/inline/ok/0002_use_tree_list.rast
index 9bee074b7b2..f3b1129f277 100644
--- a/crates/parser/test_data/parser/inline/ok/0002_use_tree_list.rast
+++ b/crates/parser/test_data/parser/inline/ok/0002_use_tree_list.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..15
-  USE@0..14
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..13
-      USE_TREE_LIST@4..13
-        L_CURLY@4..5 "{"
-        USE_TREE@5..6
-          PATH@5..6
-            PATH_SEGMENT@5..6
-              NAME_REF@5..6
-                IDENT@5..6 "a"
-        COMMA@6..7 ","
-        WHITESPACE@7..8 " "
-        USE_TREE@8..9
-          PATH@8..9
-            PATH_SEGMENT@8..9
-              NAME_REF@8..9
-                IDENT@8..9 "b"
-        COMMA@9..10 ","
-        WHITESPACE@10..11 " "
-        USE_TREE@11..12
-          PATH@11..12
-            PATH_SEGMENT@11..12
-              NAME_REF@11..12
-                IDENT@11..12 "c"
-        R_CURLY@12..13 "}"
-    SEMICOLON@13..14 ";"
-  WHITESPACE@14..15 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "a"
+        COMMA ","
+        WHITESPACE " "
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "b"
+        COMMA ","
+        WHITESPACE " "
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "c"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0002_use_tree_list.txt b/crates/parser/test_data/parser/inline/ok/0002_use_tree_list.txt
deleted file mode 100644
index f3b1129f277..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0002_use_tree_list.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "a"
-        COMMA ","
-        WHITESPACE " "
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "b"
-        COMMA ","
-        WHITESPACE " "
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "c"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0003_where_pred_for.rast b/crates/parser/test_data/parser/inline/ok/0003_where_pred_for.rast
index 174733a867f..8407e99f614 100644
--- a/crates/parser/test_data/parser/inline/ok/0003_where_pred_for.rast
+++ b/crates/parser/test_data/parser/inline/ok/0003_where_pred_for.rast
@@ -1,63 +1,63 @@
-SOURCE_FILE@0..54
-  FN@0..53
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..12
-      IDENT@3..12 "for_trait"
-    GENERIC_PARAM_LIST@12..15
-      L_ANGLE@12..13 "<"
-      TYPE_PARAM@13..14
-        NAME@13..14
-          IDENT@13..14 "F"
-      R_ANGLE@14..15 ">"
-    PARAM_LIST@15..17
-      L_PAREN@15..16 "("
-      R_PAREN@16..17 ")"
-    WHITESPACE@17..18 "\n"
-    WHERE_CLAUSE@18..49
-      WHERE_KW@18..23 "where"
-      WHITESPACE@23..27 "\n   "
-      WHERE_PRED@27..49
-        FOR_KW@27..30 "for"
-        GENERIC_PARAM_LIST@30..34
-          L_ANGLE@30..31 "<"
-          LIFETIME_PARAM@31..33
-            LIFETIME@31..33
-              LIFETIME_IDENT@31..33 "'a"
-          R_ANGLE@33..34 ">"
-        WHITESPACE@34..35 " "
-        PATH_TYPE@35..36
-          PATH@35..36
-            PATH_SEGMENT@35..36
-              NAME_REF@35..36
-                IDENT@35..36 "F"
-        COLON@36..37 ":"
-        WHITESPACE@37..38 " "
-        TYPE_BOUND_LIST@38..49
-          TYPE_BOUND@38..49
-            PATH_TYPE@38..49
-              PATH@38..49
-                PATH_SEGMENT@38..49
-                  NAME_REF@38..40
-                    IDENT@38..40 "Fn"
-                  PARAM_LIST@40..49
-                    L_PAREN@40..41 "("
-                    PARAM@41..48
-                      REF_TYPE@41..48
-                        AMP@41..42 "&"
-                        LIFETIME@42..44
-                          LIFETIME_IDENT@42..44 "'a"
-                        WHITESPACE@44..45 " "
-                        PATH_TYPE@45..48
-                          PATH@45..48
-                            PATH_SEGMENT@45..48
-                              NAME_REF@45..48
-                                IDENT@45..48 "str"
-                    R_PAREN@48..49 ")"
-    WHITESPACE@49..50 "\n"
-    BLOCK_EXPR@50..53
-      STMT_LIST@50..53
-        L_CURLY@50..51 "{"
-        WHITESPACE@51..52 " "
-        R_CURLY@52..53 "}"
-  WHITESPACE@53..54 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_trait"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "F"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n   "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "F"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Fn"
+                  PARAM_LIST
+                    L_PAREN "("
+                    PARAM
+                      REF_TYPE
+                        AMP "&"
+                        LIFETIME
+                          LIFETIME_IDENT "'a"
+                        WHITESPACE " "
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "str"
+                    R_PAREN ")"
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0003_where_pred_for.txt b/crates/parser/test_data/parser/inline/ok/0003_where_pred_for.txt
deleted file mode 100644
index 8407e99f614..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0003_where_pred_for.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_trait"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "F"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n   "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "F"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Fn"
-                  PARAM_LIST
-                    L_PAREN "("
-                    PARAM
-                      REF_TYPE
-                        AMP "&"
-                        LIFETIME
-                          LIFETIME_IDENT "'a"
-                        WHITESPACE " "
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "str"
-                    R_PAREN ")"
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast b/crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast
index b650735ba1d..902b06484c8 100644
--- a/crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast
+++ b/crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast
@@ -1,60 +1,60 @@
-SOURCE_FILE@0..39
-  TYPE_ALIAS@0..38
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "F"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..37
-      PATH@9..37
-        PATH_SEGMENT@9..37
-          NAME_REF@9..12
-            IDENT@9..12 "Box"
-          GENERIC_ARG_LIST@12..37
-            L_ANGLE@12..13 "<"
-            TYPE_ARG@13..36
-              PATH_TYPE@13..36
-                PATH@13..36
-                  PATH_SEGMENT@13..36
-                    NAME_REF@13..15
-                      IDENT@13..15 "Fn"
-                    PARAM_LIST@15..36
-                      L_PAREN@15..16 "("
-                      PARAM@16..19
-                        PATH_TYPE@16..19
-                          PATH@16..19
-                            PATH_SEGMENT@16..19
-                              NAME_REF@16..19
-                                IDENT@16..19 "i32"
-                      COMMA@19..20 ","
-                      WHITESPACE@20..21 " "
-                      PARAM@21..25
-                        REF_TYPE@21..25
-                          AMP@21..22 "&"
-                          PATH_TYPE@22..25
-                            PATH@22..25
-                              PATH_SEGMENT@22..25
-                                NAME_REF@22..25
-                                  IDENT@22..25 "i32"
-                      COMMA@25..26 ","
-                      WHITESPACE@26..27 " "
-                      PARAM@27..31
-                        REF_TYPE@27..31
-                          AMP@27..28 "&"
-                          PATH_TYPE@28..31
-                            PATH@28..31
-                              PATH_SEGMENT@28..31
-                                NAME_REF@28..31
-                                  IDENT@28..31 "i32"
-                      COMMA@31..32 ","
-                      WHITESPACE@32..33 " "
-                      PARAM@33..35
-                        TUPLE_TYPE@33..35
-                          L_PAREN@33..34 "("
-                          R_PAREN@34..35 ")"
-                      R_PAREN@35..36 ")"
-            R_ANGLE@36..37 ">"
-    SEMICOLON@37..38 ";"
-  WHITESPACE@38..39 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "F"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Box"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            TYPE_ARG
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Fn"
+                    PARAM_LIST
+                      L_PAREN "("
+                      PARAM
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "i32"
+                      COMMA ","
+                      WHITESPACE " "
+                      PARAM
+                        REF_TYPE
+                          AMP "&"
+                          PATH_TYPE
+                            PATH
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "i32"
+                      COMMA ","
+                      WHITESPACE " "
+                      PARAM
+                        REF_TYPE
+                          AMP "&"
+                          PATH_TYPE
+                            PATH
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "i32"
+                      COMMA ","
+                      WHITESPACE " "
+                      PARAM
+                        TUPLE_TYPE
+                          L_PAREN "("
+                          R_PAREN ")"
+                      R_PAREN ")"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.txt b/crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.txt
deleted file mode 100644
index 902b06484c8..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0004_value_parameters_no_patterns.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "F"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Box"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            TYPE_ARG
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Fn"
-                    PARAM_LIST
-                      L_PAREN "("
-                      PARAM
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "i32"
-                      COMMA ","
-                      WHITESPACE " "
-                      PARAM
-                        REF_TYPE
-                          AMP "&"
-                          PATH_TYPE
-                            PATH
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "i32"
-                      COMMA ","
-                      WHITESPACE " "
-                      PARAM
-                        REF_TYPE
-                          AMP "&"
-                          PATH_TYPE
-                            PATH
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "i32"
-                      COMMA ","
-                      WHITESPACE " "
-                      PARAM
-                        TUPLE_TYPE
-                          L_PAREN "("
-                          R_PAREN ")"
-                      R_PAREN ")"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0005_function_type_params.rast b/crates/parser/test_data/parser/inline/ok/0005_function_type_params.rast
index 5308dce6a26..3858e3eed57 100644
--- a/crates/parser/test_data/parser/inline/ok/0005_function_type_params.rast
+++ b/crates/parser/test_data/parser/inline/ok/0005_function_type_params.rast
@@ -1,38 +1,38 @@
-SOURCE_FILE@0..28
-  FN@0..27
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    GENERIC_PARAM_LIST@6..23
-      L_ANGLE@6..7 "<"
-      TYPE_PARAM@7..22
-        NAME@7..8
-          IDENT@7..8 "T"
-        COLON@8..9 ":"
-        WHITESPACE@9..10 " "
-        TYPE_BOUND_LIST@10..22
-          TYPE_BOUND@10..15
-            PATH_TYPE@10..15
-              PATH@10..15
-                PATH_SEGMENT@10..15
-                  NAME_REF@10..15
-                    IDENT@10..15 "Clone"
-          WHITESPACE@15..16 " "
-          PLUS@16..17 "+"
-          WHITESPACE@17..18 " "
-          TYPE_BOUND@18..22
-            PATH_TYPE@18..22
-              PATH@18..22
-                PATH_SEGMENT@18..22
-                  NAME_REF@18..22
-                    IDENT@18..22 "Copy"
-      R_ANGLE@22..23 ">"
-    PARAM_LIST@23..25
-      L_PAREN@23..24 "("
-      R_PAREN@24..25 ")"
-    BLOCK_EXPR@25..27
-      STMT_LIST@25..27
-        L_CURLY@25..26 "{"
-        R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0005_function_type_params.txt b/crates/parser/test_data/parser/inline/ok/0005_function_type_params.txt
deleted file mode 100644
index 3858e3eed57..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0005_function_type_params.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0006_self_param.rast b/crates/parser/test_data/parser/inline/ok/0006_self_param.rast
index 90667cb7c2e..67e28236397 100644
--- a/crates/parser/test_data/parser/inline/ok/0006_self_param.rast
+++ b/crates/parser/test_data/parser/inline/ok/0006_self_param.rast
@@ -1,128 +1,128 @@
-SOURCE_FILE@0..128
-  IMPL@0..127
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "S"
-    WHITESPACE@6..7 " "
-    ASSOC_ITEM_LIST@7..127
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..13 "\n    "
-      FN@13..26
-        FN_KW@13..15 "fn"
-        WHITESPACE@15..16 " "
-        NAME@16..17
-          IDENT@16..17 "a"
-        PARAM_LIST@17..23
-          L_PAREN@17..18 "("
-          SELF_PARAM@18..22
-            NAME@18..22
-              SELF_KW@18..22 "self"
-          R_PAREN@22..23 ")"
-        WHITESPACE@23..24 " "
-        BLOCK_EXPR@24..26
-          STMT_LIST@24..26
-            L_CURLY@24..25 "{"
-            R_CURLY@25..26 "}"
-      WHITESPACE@26..31 "\n    "
-      FN@31..46
-        FN_KW@31..33 "fn"
-        WHITESPACE@33..34 " "
-        NAME@34..35
-          IDENT@34..35 "b"
-        PARAM_LIST@35..43
-          L_PAREN@35..36 "("
-          SELF_PARAM@36..41
-            AMP@36..37 "&"
-            NAME@37..41
-              SELF_KW@37..41 "self"
-          COMMA@41..42 ","
-          R_PAREN@42..43 ")"
-        WHITESPACE@43..44 " "
-        BLOCK_EXPR@44..46
-          STMT_LIST@44..46
-            L_CURLY@44..45 "{"
-            R_CURLY@45..46 "}"
-      WHITESPACE@46..51 "\n    "
-      FN@51..69
-        FN_KW@51..53 "fn"
-        WHITESPACE@53..54 " "
-        NAME@54..55
-          IDENT@54..55 "c"
-        PARAM_LIST@55..66
-          L_PAREN@55..56 "("
-          SELF_PARAM@56..64
-            AMP@56..57 "&"
-            LIFETIME@57..59
-              LIFETIME_IDENT@57..59 "'a"
-            WHITESPACE@59..60 " "
-            NAME@60..64
-              SELF_KW@60..64 "self"
-          COMMA@64..65 ","
-          R_PAREN@65..66 ")"
-        WHITESPACE@66..67 " "
-        BLOCK_EXPR@67..69
-          STMT_LIST@67..69
-            L_CURLY@67..68 "{"
-            R_CURLY@68..69 "}"
-      WHITESPACE@69..74 "\n    "
-      FN@74..103
-        FN_KW@74..76 "fn"
-        WHITESPACE@76..77 " "
-        NAME@77..78
-          IDENT@77..78 "d"
-        PARAM_LIST@78..100
-          L_PAREN@78..79 "("
-          SELF_PARAM@79..91
-            AMP@79..80 "&"
-            LIFETIME@80..82
-              LIFETIME_IDENT@80..82 "'a"
-            WHITESPACE@82..83 " "
-            MUT_KW@83..86 "mut"
-            WHITESPACE@86..87 " "
-            NAME@87..91
-              SELF_KW@87..91 "self"
-          COMMA@91..92 ","
-          WHITESPACE@92..93 " "
-          PARAM@93..99
-            IDENT_PAT@93..94
-              NAME@93..94
-                IDENT@93..94 "x"
-            COLON@94..95 ":"
-            WHITESPACE@95..96 " "
-            PATH_TYPE@96..99
-              PATH@96..99
-                PATH_SEGMENT@96..99
-                  NAME_REF@96..99
-                    IDENT@96..99 "i32"
-          R_PAREN@99..100 ")"
-        WHITESPACE@100..101 " "
-        BLOCK_EXPR@101..103
-          STMT_LIST@101..103
-            L_CURLY@101..102 "{"
-            R_CURLY@102..103 "}"
-      WHITESPACE@103..108 "\n    "
-      FN@108..125
-        FN_KW@108..110 "fn"
-        WHITESPACE@110..111 " "
-        NAME@111..112
-          IDENT@111..112 "e"
-        PARAM_LIST@112..122
-          L_PAREN@112..113 "("
-          SELF_PARAM@113..121
-            MUT_KW@113..116 "mut"
-            WHITESPACE@116..117 " "
-            NAME@117..121
-              SELF_KW@117..121 "self"
-          R_PAREN@121..122 ")"
-        WHITESPACE@122..123 " "
-        BLOCK_EXPR@123..125
-          STMT_LIST@123..125
-            L_CURLY@123..124 "{"
-            R_CURLY@124..125 "}"
-      WHITESPACE@125..126 "\n"
-      R_CURLY@126..127 "}"
-  WHITESPACE@127..128 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "a"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "b"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            AMP "&"
+            NAME
+              SELF_KW "self"
+          COMMA ","
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "c"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            AMP "&"
+            LIFETIME
+              LIFETIME_IDENT "'a"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          COMMA ","
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "d"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            AMP "&"
+            LIFETIME
+              LIFETIME_IDENT "'a"
+            WHITESPACE " "
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "x"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i32"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "e"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0006_self_param.txt b/crates/parser/test_data/parser/inline/ok/0006_self_param.txt
deleted file mode 100644
index 67e28236397..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0006_self_param.txt
+++ /dev/null
@@ -1,128 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "a"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "b"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            AMP "&"
-            NAME
-              SELF_KW "self"
-          COMMA ","
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "c"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            AMP "&"
-            LIFETIME
-              LIFETIME_IDENT "'a"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          COMMA ","
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "d"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            AMP "&"
-            LIFETIME
-              LIFETIME_IDENT "'a"
-            WHITESPACE " "
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "x"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i32"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "e"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.rast b/crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.rast
index 4cd03485f42..dee860c2418 100644
--- a/crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.rast
+++ b/crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.rast
@@ -1,53 +1,53 @@
-SOURCE_FILE@0..49
-  STRUCT@0..48
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    GENERIC_PARAM_LIST@8..47
-      L_ANGLE@8..9 "<"
-      TYPE_PARAM@9..46
-        NAME@9..10
-          IDENT@9..10 "T"
-        COLON@10..11 ":"
-        WHITESPACE@11..12 " "
-        TYPE_BOUND_LIST@12..46
-          TYPE_BOUND@12..14
-            LIFETIME@12..14
-              LIFETIME_IDENT@12..14 "'a"
-          WHITESPACE@14..15 " "
-          PLUS@15..16 "+"
-          WHITESPACE@16..17 " "
-          TYPE_BOUND@17..23
-            QUESTION@17..18 "?"
-            PATH_TYPE@18..23
-              PATH@18..23
-                PATH_SEGMENT@18..23
-                  NAME_REF@18..23
-                    IDENT@18..23 "Sized"
-          WHITESPACE@23..24 " "
-          PLUS@24..25 "+"
-          WHITESPACE@25..26 " "
-          TYPE_BOUND@26..32
-            L_PAREN@26..27 "("
-            PATH_TYPE@27..31
-              PATH@27..31
-                PATH_SEGMENT@27..31
-                  NAME_REF@27..31
-                    IDENT@27..31 "Copy"
-            R_PAREN@31..32 ")"
-          WHITESPACE@32..33 " "
-          PLUS@33..34 "+"
-          WHITESPACE@34..35 " "
-          TYPE_BOUND@35..46
-            TILDE@35..36 "~"
-            CONST_KW@36..41 "const"
-            WHITESPACE@41..42 " "
-            PATH_TYPE@42..46
-              PATH@42..46
-                PATH_SEGMENT@42..46
-                  NAME_REF@42..46
-                    IDENT@42..46 "Drop"
-      R_ANGLE@46..47 ">"
-    SEMICOLON@47..48 ";"
-  WHITESPACE@48..49 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            QUESTION "?"
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Sized"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            L_PAREN "("
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+            R_PAREN ")"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            TILDE "~"
+            CONST_KW "const"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Drop"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.txt b/crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.txt
deleted file mode 100644
index dee860c2418..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0007_type_param_bounds.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            QUESTION "?"
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Sized"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            L_PAREN "("
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-            R_PAREN ")"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            TILDE "~"
-            CONST_KW "const"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Drop"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0008_path_part.rast b/crates/parser/test_data/parser/inline/ok/0008_path_part.rast
index c20e41ffae7..4ccda19a8d7 100644
--- a/crates/parser/test_data/parser/inline/ok/0008_path_part.rast
+++ b/crates/parser/test_data/parser/inline/ok/0008_path_part.rast
@@ -1,98 +1,98 @@
-SOURCE_FILE@0..103
-  FN@0..102
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..102
-      STMT_LIST@9..102
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..33
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          PATH_PAT@19..27
-            PATH@19..27
-              PATH@19..22
-                PATH_SEGMENT@19..22
-                  NAME_REF@19..22
-                    IDENT@19..22 "foo"
-              COLON2@22..24 "::"
-              PATH_SEGMENT@24..27
-                NAME_REF@24..27
-                  IDENT@24..27 "Bar"
-          WHITESPACE@27..28 " "
-          EQ@28..29 "="
-          WHITESPACE@29..30 " "
-          TUPLE_EXPR@30..32
-            L_PAREN@30..31 "("
-            R_PAREN@31..32 ")"
-          SEMICOLON@32..33 ";"
-        WHITESPACE@33..38 "\n    "
-        LET_STMT@38..53
-          LET_KW@38..41 "let"
-          WHITESPACE@41..42 " "
-          PATH_PAT@42..47
-            PATH@42..47
-              PATH_SEGMENT@42..47
-                COLON2@42..44 "::"
-                NAME_REF@44..47
-                  IDENT@44..47 "Bar"
-          WHITESPACE@47..48 " "
-          EQ@48..49 "="
-          WHITESPACE@49..50 " "
-          TUPLE_EXPR@50..52
-            L_PAREN@50..51 "("
-            R_PAREN@51..52 ")"
-          SEMICOLON@52..53 ";"
-        WHITESPACE@53..58 "\n    "
-        LET_STMT@58..78
-          LET_KW@58..61 "let"
-          WHITESPACE@61..62 " "
-          RECORD_PAT@62..72
-            PATH@62..65
-              PATH_SEGMENT@62..65
-                NAME_REF@62..65
-                  IDENT@62..65 "Bar"
-            WHITESPACE@65..66 " "
-            RECORD_PAT_FIELD_LIST@66..72
-              L_CURLY@66..67 "{"
-              WHITESPACE@67..68 " "
-              REST_PAT@68..70
-                DOT2@68..70 ".."
-              WHITESPACE@70..71 " "
-              R_CURLY@71..72 "}"
-          WHITESPACE@72..73 " "
-          EQ@73..74 "="
-          WHITESPACE@74..75 " "
-          TUPLE_EXPR@75..77
-            L_PAREN@75..76 "("
-            R_PAREN@76..77 ")"
-          SEMICOLON@77..78 ";"
-        WHITESPACE@78..83 "\n    "
-        LET_STMT@83..100
-          LET_KW@83..86 "let"
-          WHITESPACE@86..87 " "
-          TUPLE_STRUCT_PAT@87..94
-            PATH@87..90
-              PATH_SEGMENT@87..90
-                NAME_REF@87..90
-                  IDENT@87..90 "Bar"
-            L_PAREN@90..91 "("
-            REST_PAT@91..93
-              DOT2@91..93 ".."
-            R_PAREN@93..94 ")"
-          WHITESPACE@94..95 " "
-          EQ@95..96 "="
-          WHITESPACE@96..97 " "
-          TUPLE_EXPR@97..99
-            L_PAREN@97..98 "("
-            R_PAREN@98..99 ")"
-          SEMICOLON@99..100 ";"
-        WHITESPACE@100..101 "\n"
-        R_CURLY@101..102 "}"
-  WHITESPACE@102..103 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          PATH_PAT
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Bar"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          PATH_PAT
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "Bar"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Bar"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              REST_PAT
+                DOT2 ".."
+              WHITESPACE " "
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Bar"
+            L_PAREN "("
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0008_path_part.txt b/crates/parser/test_data/parser/inline/ok/0008_path_part.txt
deleted file mode 100644
index 4ccda19a8d7..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0008_path_part.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          PATH_PAT
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Bar"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          PATH_PAT
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "Bar"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Bar"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              REST_PAT
-                DOT2 ".."
-              WHITESPACE " "
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Bar"
-            L_PAREN "("
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0009_loop_expr.rast b/crates/parser/test_data/parser/inline/ok/0009_loop_expr.rast
index 0e2ddb9f2f4..ab3b49b0d6c 100644
--- a/crates/parser/test_data/parser/inline/ok/0009_loop_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0009_loop_expr.rast
@@ -1,26 +1,26 @@
-SOURCE_FILE@0..26
-  FN@0..25
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..25
-      STMT_LIST@9..25
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..23
-          LOOP_EXPR@15..22
-            LOOP_KW@15..19 "loop"
-            WHITESPACE@19..20 " "
-            BLOCK_EXPR@20..22
-              STMT_LIST@20..22
-                L_CURLY@20..21 "{"
-                R_CURLY@21..22 "}"
-          SEMICOLON@22..23 ";"
-        WHITESPACE@23..24 "\n"
-        R_CURLY@24..25 "}"
-  WHITESPACE@25..26 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          LOOP_EXPR
+            LOOP_KW "loop"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0009_loop_expr.txt b/crates/parser/test_data/parser/inline/ok/0009_loop_expr.txt
deleted file mode 100644
index ab3b49b0d6c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0009_loop_expr.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          LOOP_EXPR
-            LOOP_KW "loop"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0010_extern_block.rast b/crates/parser/test_data/parser/inline/ok/0010_extern_block.rast
index beac566e592..7a3cd6a0dfd 100644
--- a/crates/parser/test_data/parser/inline/ok/0010_extern_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0010_extern_block.rast
@@ -1,21 +1,21 @@
-SOURCE_FILE@0..31
-  EXTERN_BLOCK@0..20
-    UNSAFE_KW@0..6 "unsafe"
-    WHITESPACE@6..7 " "
-    ABI@7..17
-      EXTERN_KW@7..13 "extern"
-      WHITESPACE@13..14 " "
-      STRING@14..17 "\"C\""
-    WHITESPACE@17..18 " "
-    EXTERN_ITEM_LIST@18..20
-      L_CURLY@18..19 "{"
-      R_CURLY@19..20 "}"
-  WHITESPACE@20..21 "\n"
-  EXTERN_BLOCK@21..30
-    ABI@21..27
-      EXTERN_KW@21..27 "extern"
-    WHITESPACE@27..28 " "
-    EXTERN_ITEM_LIST@28..30
-      L_CURLY@28..29 "{"
-      R_CURLY@29..30 "}"
-  WHITESPACE@30..31 "\n"
+SOURCE_FILE
+  EXTERN_BLOCK
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0010_extern_block.txt b/crates/parser/test_data/parser/inline/ok/0010_extern_block.txt
deleted file mode 100644
index 7a3cd6a0dfd..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0010_extern_block.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE
-  EXTERN_BLOCK
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0011_field_expr.rast b/crates/parser/test_data/parser/inline/ok/0011_field_expr.rast
index 9475e3e2179..8498724b9ef 100644
--- a/crates/parser/test_data/parser/inline/ok/0011_field_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0011_field_expr.rast
@@ -1,60 +1,60 @@
-SOURCE_FILE@0..48
-  FN@0..47
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..47
-      STMT_LIST@9..47
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..21
-          FIELD_EXPR@15..20
-            PATH_EXPR@15..16
-              PATH@15..16
-                PATH_SEGMENT@15..16
-                  NAME_REF@15..16
-                    IDENT@15..16 "x"
-            DOT@16..17 "."
-            NAME_REF@17..20
-              IDENT@17..20 "foo"
-          SEMICOLON@20..21 ";"
-        WHITESPACE@21..26 "\n    "
-        EXPR_STMT@26..34
-          FIELD_EXPR@26..33
-            FIELD_EXPR@26..29
-              PATH_EXPR@26..27
-                PATH@26..27
-                  PATH_SEGMENT@26..27
-                    NAME_REF@26..27
-                      IDENT@26..27 "x"
-              DOT@27..28 "."
-              NAME_REF@28..29
-                INT_NUMBER@28..29 "0"
-            DOT@29..30 "."
-            NAME_REF@30..33
-              IDENT@30..33 "bar"
-          SEMICOLON@33..34 ";"
-        WHITESPACE@34..39 "\n    "
-        EXPR_STMT@39..45
-          CALL_EXPR@39..44
-            FIELD_EXPR@39..42
-              PATH_EXPR@39..40
-                PATH@39..40
-                  PATH_SEGMENT@39..40
-                    NAME_REF@39..40
-                      IDENT@39..40 "x"
-              DOT@40..41 "."
-              NAME_REF@41..42
-                INT_NUMBER@41..42 "0"
-            ARG_LIST@42..44
-              L_PAREN@42..43 "("
-              R_PAREN@43..44 ")"
-          SEMICOLON@44..45 ";"
-        WHITESPACE@45..46 "\n"
-        R_CURLY@46..47 "}"
-  WHITESPACE@47..48 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          FIELD_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+            DOT "."
+            NAME_REF
+              IDENT "foo"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          FIELD_EXPR
+            FIELD_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "x"
+              DOT "."
+              NAME_REF
+                INT_NUMBER "0"
+            DOT "."
+            NAME_REF
+              IDENT "bar"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            FIELD_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "x"
+              DOT "."
+              NAME_REF
+                INT_NUMBER "0"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0011_field_expr.txt b/crates/parser/test_data/parser/inline/ok/0011_field_expr.txt
deleted file mode 100644
index 8498724b9ef..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0011_field_expr.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          FIELD_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-            DOT "."
-            NAME_REF
-              IDENT "foo"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          FIELD_EXPR
-            FIELD_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "x"
-              DOT "."
-              NAME_REF
-                INT_NUMBER "0"
-            DOT "."
-            NAME_REF
-              IDENT "bar"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            FIELD_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "x"
-              DOT "."
-              NAME_REF
-                INT_NUMBER "0"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.rast b/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.rast
index 28c94bfd64f..7210b738958 100644
--- a/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.rast
+++ b/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.rast
@@ -1,33 +1,33 @@
-SOURCE_FILE@0..31
-  TYPE_ALIAS@0..30
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..8
-      IDENT@5..8 "Foo"
-    WHITESPACE@8..9 " "
-    WHERE_CLAUSE@9..24
-      WHERE_KW@9..14 "where"
-      WHITESPACE@14..15 " "
-      WHERE_PRED@15..24
-        PATH_TYPE@15..18
-          PATH@15..18
-            PATH_SEGMENT@15..18
-              NAME_REF@15..18
-                IDENT@15..18 "Foo"
-        COLON@18..19 ":"
-        WHITESPACE@19..20 " "
-        TYPE_BOUND_LIST@20..24
-          TYPE_BOUND@20..24
-            PATH_TYPE@20..24
-              PATH@20..24
-                PATH_SEGMENT@20..24
-                  NAME_REF@20..24
-                    IDENT@20..24 "Copy"
-    WHITESPACE@24..25 " "
-    EQ@25..26 "="
-    WHITESPACE@26..27 " "
-    TUPLE_TYPE@27..29
-      L_PAREN@27..28 "("
-      R_PAREN@28..29 ")"
-    SEMICOLON@29..30 ";"
-  WHITESPACE@30..31 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Foo"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.txt b/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.txt
deleted file mode 100644
index 7210b738958..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Foo"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.rast b/crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.rast
index d33215b507c..bfe7ed5b400 100644
--- a/crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.rast
+++ b/crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.rast
@@ -1,35 +1,35 @@
-SOURCE_FILE@0..36
-  TYPE_ALIAS@0..17
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "M"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PTR_TYPE@9..16
-      STAR@9..10 "*"
-      MUT_KW@10..13 "mut"
-      WHITESPACE@13..14 " "
-      TUPLE_TYPE@14..16
-        L_PAREN@14..15 "("
-        R_PAREN@15..16 ")"
-    SEMICOLON@16..17 ";"
-  WHITESPACE@17..18 "\n"
-  TYPE_ALIAS@18..35
-    TYPE_KW@18..22 "type"
-    WHITESPACE@22..23 " "
-    NAME@23..24
-      IDENT@23..24 "C"
-    WHITESPACE@24..25 " "
-    EQ@25..26 "="
-    WHITESPACE@26..27 " "
-    PTR_TYPE@27..34
-      STAR@27..28 "*"
-      MUT_KW@28..31 "mut"
-      WHITESPACE@31..32 " "
-      TUPLE_TYPE@32..34
-        L_PAREN@32..33 "("
-        R_PAREN@33..34 ")"
-    SEMICOLON@34..35 ";"
-  WHITESPACE@35..36 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "M"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PTR_TYPE
+      STAR "*"
+      MUT_KW "mut"
+      WHITESPACE " "
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "C"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PTR_TYPE
+      STAR "*"
+      MUT_KW "mut"
+      WHITESPACE " "
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.txt b/crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.txt
deleted file mode 100644
index bfe7ed5b400..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0013_pointer_type_mut.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "M"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PTR_TYPE
-      STAR "*"
-      MUT_KW "mut"
-      WHITESPACE " "
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "C"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PTR_TYPE
-      STAR "*"
-      MUT_KW "mut"
-      WHITESPACE " "
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0014_never_type.rast b/crates/parser/test_data/parser/inline/ok/0014_never_type.rast
index b1d5106ce9a..53dbf3999b2 100644
--- a/crates/parser/test_data/parser/inline/ok/0014_never_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0014_never_type.rast
@@ -1,13 +1,13 @@
-SOURCE_FILE@0..16
-  TYPE_ALIAS@0..15
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..10
-      IDENT@5..10 "Never"
-    WHITESPACE@10..11 " "
-    EQ@11..12 "="
-    WHITESPACE@12..13 " "
-    NEVER_TYPE@13..14
-      BANG@13..14 "!"
-    SEMICOLON@14..15 ";"
-  WHITESPACE@15..16 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Never"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    NEVER_TYPE
+      BANG "!"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0014_never_type.txt b/crates/parser/test_data/parser/inline/ok/0014_never_type.txt
deleted file mode 100644
index 53dbf3999b2..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0014_never_type.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Never"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    NEVER_TYPE
-      BANG "!"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0015_continue_expr.rast b/crates/parser/test_data/parser/inline/ok/0015_continue_expr.rast
index 81c916fe1ed..5d80a57a2e4 100644
--- a/crates/parser/test_data/parser/inline/ok/0015_continue_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0015_continue_expr.rast
@@ -1,38 +1,38 @@
-SOURCE_FILE@0..69
-  FN@0..68
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..68
-      STMT_LIST@9..68
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LOOP_EXPR@15..66
-          LOOP_KW@15..19 "loop"
-          WHITESPACE@19..20 " "
-          BLOCK_EXPR@20..66
-            STMT_LIST@20..66
-              L_CURLY@20..21 "{"
-              WHITESPACE@21..30 "\n        "
-              EXPR_STMT@30..39
-                CONTINUE_EXPR@30..38
-                  CONTINUE_KW@30..38 "continue"
-                SEMICOLON@38..39 ";"
-              WHITESPACE@39..48 "\n        "
-              EXPR_STMT@48..60
-                CONTINUE_EXPR@48..59
-                  CONTINUE_KW@48..56 "continue"
-                  WHITESPACE@56..57 " "
-                  LIFETIME@57..59
-                    LIFETIME_IDENT@57..59 "'l"
-                SEMICOLON@59..60 ";"
-              WHITESPACE@60..65 "\n    "
-              R_CURLY@65..66 "}"
-        WHITESPACE@66..67 "\n"
-        R_CURLY@67..68 "}"
-  WHITESPACE@68..69 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LOOP_EXPR
+          LOOP_KW "loop"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                CONTINUE_EXPR
+                  CONTINUE_KW "continue"
+                SEMICOLON ";"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                CONTINUE_EXPR
+                  CONTINUE_KW "continue"
+                  WHITESPACE " "
+                  LIFETIME
+                    LIFETIME_IDENT "'l"
+                SEMICOLON ";"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0015_continue_expr.txt b/crates/parser/test_data/parser/inline/ok/0015_continue_expr.txt
deleted file mode 100644
index 5d80a57a2e4..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0015_continue_expr.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LOOP_EXPR
-          LOOP_KW "loop"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                CONTINUE_EXPR
-                  CONTINUE_KW "continue"
-                SEMICOLON ";"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                CONTINUE_EXPR
-                  CONTINUE_KW "continue"
-                  WHITESPACE " "
-                  LIFETIME
-                    LIFETIME_IDENT "'l"
-                SEMICOLON ";"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0017_array_type.rast b/crates/parser/test_data/parser/inline/ok/0017_array_type.rast
index c131df1c951..2a5c644d467 100644
--- a/crates/parser/test_data/parser/inline/ok/0017_array_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0017_array_type.rast
@@ -1,21 +1,21 @@
-SOURCE_FILE@0..19
-  TYPE_ALIAS@0..18
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    ARRAY_TYPE@9..17
-      L_BRACK@9..10 "["
-      TUPLE_TYPE@10..12
-        L_PAREN@10..11 "("
-        R_PAREN@11..12 ")"
-      SEMICOLON@12..13 ";"
-      WHITESPACE@13..14 " "
-      LITERAL@14..16
-        INT_NUMBER@14..16 "92"
-      R_BRACK@16..17 "]"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    ARRAY_TYPE
+      L_BRACK "["
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+      SEMICOLON ";"
+      WHITESPACE " "
+      LITERAL
+        INT_NUMBER "92"
+      R_BRACK "]"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0017_array_type.txt b/crates/parser/test_data/parser/inline/ok/0017_array_type.txt
deleted file mode 100644
index 2a5c644d467..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0017_array_type.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    ARRAY_TYPE
-      L_BRACK "["
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-      SEMICOLON ";"
-      WHITESPACE " "
-      LITERAL
-        INT_NUMBER "92"
-      R_BRACK "]"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0018_arb_self_types.rast b/crates/parser/test_data/parser/inline/ok/0018_arb_self_types.rast
index 48b11844cdd..a0b56262962 100644
--- a/crates/parser/test_data/parser/inline/ok/0018_arb_self_types.rast
+++ b/crates/parser/test_data/parser/inline/ok/0018_arb_self_types.rast
@@ -1,76 +1,76 @@
-SOURCE_FILE@0..69
-  IMPL@0..68
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "S"
-    WHITESPACE@6..7 " "
-    ASSOC_ITEM_LIST@7..68
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..13 "\n    "
-      FN@13..33
-        FN_KW@13..15 "fn"
-        WHITESPACE@15..16 " "
-        NAME@16..17
-          IDENT@16..17 "a"
-        PARAM_LIST@17..30
-          L_PAREN@17..18 "("
-          SELF_PARAM@18..29
-            NAME@18..22
-              SELF_KW@18..22 "self"
-            COLON@22..23 ":"
-            WHITESPACE@23..24 " "
-            REF_TYPE@24..29
-              AMP@24..25 "&"
-              PATH_TYPE@25..29
-                PATH@25..29
-                  PATH_SEGMENT@25..29
-                    NAME_REF@25..29
-                      IDENT@25..29 "Self"
-          R_PAREN@29..30 ")"
-        WHITESPACE@30..31 " "
-        BLOCK_EXPR@31..33
-          STMT_LIST@31..33
-            L_CURLY@31..32 "{"
-            R_CURLY@32..33 "}"
-      WHITESPACE@33..38 "\n    "
-      FN@38..66
-        FN_KW@38..40 "fn"
-        WHITESPACE@40..41 " "
-        NAME@41..42
-          IDENT@41..42 "b"
-        PARAM_LIST@42..63
-          L_PAREN@42..43 "("
-          SELF_PARAM@43..62
-            MUT_KW@43..46 "mut"
-            WHITESPACE@46..47 " "
-            NAME@47..51
-              SELF_KW@47..51 "self"
-            COLON@51..52 ":"
-            WHITESPACE@52..53 " "
-            PATH_TYPE@53..62
-              PATH@53..62
-                PATH_SEGMENT@53..62
-                  NAME_REF@53..56
-                    IDENT@53..56 "Box"
-                  GENERIC_ARG_LIST@56..62
-                    L_ANGLE@56..57 "<"
-                    TYPE_ARG@57..61
-                      PATH_TYPE@57..61
-                        PATH@57..61
-                          PATH_SEGMENT@57..61
-                            NAME_REF@57..61
-                              IDENT@57..61 "Self"
-                    R_ANGLE@61..62 ">"
-          R_PAREN@62..63 ")"
-        WHITESPACE@63..64 " "
-        BLOCK_EXPR@64..66
-          STMT_LIST@64..66
-            L_CURLY@64..65 "{"
-            R_CURLY@65..66 "}"
-      WHITESPACE@66..67 "\n"
-      R_CURLY@67..68 "}"
-  WHITESPACE@68..69 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "a"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            NAME
+              SELF_KW "self"
+            COLON ":"
+            WHITESPACE " "
+            REF_TYPE
+              AMP "&"
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      SELF_TYPE_KW "Self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "b"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Box"
+                  GENERIC_ARG_LIST
+                    L_ANGLE "<"
+                    TYPE_ARG
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              SELF_TYPE_KW "Self"
+                    R_ANGLE ">"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0018_arb_self_types.txt b/crates/parser/test_data/parser/inline/ok/0018_arb_self_types.txt
deleted file mode 100644
index a0b56262962..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0018_arb_self_types.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "a"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            NAME
-              SELF_KW "self"
-            COLON ":"
-            WHITESPACE " "
-            REF_TYPE
-              AMP "&"
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      SELF_TYPE_KW "Self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "b"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Box"
-                  GENERIC_ARG_LIST
-                    L_ANGLE "<"
-                    TYPE_ARG
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              SELF_TYPE_KW "Self"
-                    R_ANGLE ">"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0019_unary_expr.rast b/crates/parser/test_data/parser/inline/ok/0019_unary_expr.rast
index 8a67c60e79a..525b2674587 100644
--- a/crates/parser/test_data/parser/inline/ok/0019_unary_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0019_unary_expr.rast
@@ -1,45 +1,45 @@
-SOURCE_FILE@0..44
-  FN@0..43
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..43
-      STMT_LIST@9..43
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..20
-          PREFIX_EXPR@15..19
-            STAR@15..16 "*"
-            PREFIX_EXPR@16..19
-              STAR@16..17 "*"
-              REF_EXPR@17..19
-                AMP@17..18 "&"
-                LITERAL@18..19
-                  INT_NUMBER@18..19 "1"
-          SEMICOLON@19..20 ";"
-        WHITESPACE@20..25 "\n    "
-        EXPR_STMT@25..32
-          PREFIX_EXPR@25..31
-            BANG@25..26 "!"
-            PREFIX_EXPR@26..31
-              BANG@26..27 "!"
-              LITERAL@27..31
-                TRUE_KW@27..31 "true"
-          SEMICOLON@31..32 ";"
-        WHITESPACE@32..37 "\n    "
-        EXPR_STMT@37..41
-          PREFIX_EXPR@37..40
-            MINUS@37..38 "-"
-            PREFIX_EXPR@38..40
-              MINUS@38..39 "-"
-              LITERAL@39..40
-                INT_NUMBER@39..40 "1"
-          SEMICOLON@40..41 ";"
-        WHITESPACE@41..42 "\n"
-        R_CURLY@42..43 "}"
-  WHITESPACE@43..44 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          PREFIX_EXPR
+            STAR "*"
+            PREFIX_EXPR
+              STAR "*"
+              REF_EXPR
+                AMP "&"
+                LITERAL
+                  INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          PREFIX_EXPR
+            BANG "!"
+            PREFIX_EXPR
+              BANG "!"
+              LITERAL
+                TRUE_KW "true"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          PREFIX_EXPR
+            MINUS "-"
+            PREFIX_EXPR
+              MINUS "-"
+              LITERAL
+                INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0019_unary_expr.txt b/crates/parser/test_data/parser/inline/ok/0019_unary_expr.txt
deleted file mode 100644
index 525b2674587..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0019_unary_expr.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          PREFIX_EXPR
-            STAR "*"
-            PREFIX_EXPR
-              STAR "*"
-              REF_EXPR
-                AMP "&"
-                LITERAL
-                  INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          PREFIX_EXPR
-            BANG "!"
-            PREFIX_EXPR
-              BANG "!"
-              LITERAL
-                TRUE_KW "true"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          PREFIX_EXPR
-            MINUS "-"
-            PREFIX_EXPR
-              MINUS "-"
-              LITERAL
-                INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.rast b/crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.rast
index d57e315a340..def7373c9de 100644
--- a/crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.rast
+++ b/crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.rast
@@ -1,81 +1,81 @@
-SOURCE_FILE@0..89
-  IMPL@0..88
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "F"
-    WHITESPACE@6..7 " "
-    ASSOC_ITEM_LIST@7..88
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..13 "\n    "
-      TYPE_ALIAS@13..26
-        TYPE_KW@13..17 "type"
-        WHITESPACE@17..18 " "
-        NAME@18..19
-          IDENT@18..19 "A"
-        WHITESPACE@19..20 " "
-        EQ@20..21 "="
-        WHITESPACE@21..22 " "
-        PATH_TYPE@22..25
-          PATH@22..25
-            PATH_SEGMENT@22..25
-              NAME_REF@22..25
-                IDENT@22..25 "i32"
-        SEMICOLON@25..26 ";"
-      WHITESPACE@26..31 "\n    "
-      CONST@31..49
-        CONST_KW@31..36 "const"
-        WHITESPACE@36..37 " "
-        NAME@37..38
-          IDENT@37..38 "B"
-        COLON@38..39 ":"
-        WHITESPACE@39..40 " "
-        PATH_TYPE@40..43
-          PATH@40..43
-            PATH_SEGMENT@40..43
-              NAME_REF@40..43
-                IDENT@40..43 "i32"
-        WHITESPACE@43..44 " "
-        EQ@44..45 "="
-        WHITESPACE@45..46 " "
-        LITERAL@46..48
-          INT_NUMBER@46..48 "92"
-        SEMICOLON@48..49 ";"
-      WHITESPACE@49..54 "\n    "
-      FN@54..65
-        FN_KW@54..56 "fn"
-        WHITESPACE@56..57 " "
-        NAME@57..60
-          IDENT@57..60 "foo"
-        PARAM_LIST@60..62
-          L_PAREN@60..61 "("
-          R_PAREN@61..62 ")"
-        WHITESPACE@62..63 " "
-        BLOCK_EXPR@63..65
-          STMT_LIST@63..65
-            L_CURLY@63..64 "{"
-            R_CURLY@64..65 "}"
-      WHITESPACE@65..70 "\n    "
-      FN@70..86
-        FN_KW@70..72 "fn"
-        WHITESPACE@72..73 " "
-        NAME@73..76
-          IDENT@73..76 "bar"
-        PARAM_LIST@76..83
-          L_PAREN@76..77 "("
-          SELF_PARAM@77..82
-            AMP@77..78 "&"
-            NAME@78..82
-              SELF_KW@78..82 "self"
-          R_PAREN@82..83 ")"
-        WHITESPACE@83..84 " "
-        BLOCK_EXPR@84..86
-          STMT_LIST@84..86
-            L_CURLY@84..85 "{"
-            R_CURLY@85..86 "}"
-      WHITESPACE@86..87 "\n"
-      R_CURLY@87..88 "}"
-  WHITESPACE@88..89 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "F"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      TYPE_ALIAS
+        TYPE_KW "type"
+        WHITESPACE " "
+        NAME
+          IDENT "A"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      CONST
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "B"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        LITERAL
+          INT_NUMBER "92"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "bar"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            AMP "&"
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.txt b/crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.txt
deleted file mode 100644
index def7373c9de..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0021_assoc_item_list.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "F"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      TYPE_ALIAS
-        TYPE_KW "type"
-        WHITESPACE " "
-        NAME
-          IDENT "A"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      CONST
-        CONST_KW "const"
-        WHITESPACE " "
-        NAME
-          IDENT "B"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        LITERAL
-          INT_NUMBER "92"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "bar"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            AMP "&"
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0022_crate_visibility.rast b/crates/parser/test_data/parser/inline/ok/0022_crate_visibility.rast
index f2ead8a6249..8738292a9f7 100644
--- a/crates/parser/test_data/parser/inline/ok/0022_crate_visibility.rast
+++ b/crates/parser/test_data/parser/inline/ok/0022_crate_visibility.rast
@@ -1,49 +1,49 @@
-SOURCE_FILE@0..62
-  STRUCT@0..20
-    VISIBILITY@0..10
-      PUB_KW@0..3 "pub"
-      L_PAREN@3..4 "("
-      PATH@4..9
-        PATH_SEGMENT@4..9
-          NAME_REF@4..9
-            CRATE_KW@4..9 "crate"
-      R_PAREN@9..10 ")"
-    WHITESPACE@10..11 " "
-    STRUCT_KW@11..17 "struct"
-    WHITESPACE@17..18 " "
-    NAME@18..19
-      IDENT@18..19 "S"
-    SEMICOLON@19..20 ";"
-  WHITESPACE@20..21 "\n"
-  STRUCT@21..40
-    VISIBILITY@21..30
-      PUB_KW@21..24 "pub"
-      L_PAREN@24..25 "("
-      PATH@25..29
-        PATH_SEGMENT@25..29
-          NAME_REF@25..29
-            SELF_KW@25..29 "self"
-      R_PAREN@29..30 ")"
-    WHITESPACE@30..31 " "
-    STRUCT_KW@31..37 "struct"
-    WHITESPACE@37..38 " "
-    NAME@38..39
-      IDENT@38..39 "S"
-    SEMICOLON@39..40 ";"
-  WHITESPACE@40..41 "\n"
-  STRUCT@41..61
-    VISIBILITY@41..51
-      PUB_KW@41..44 "pub"
-      L_PAREN@44..45 "("
-      PATH@45..50
-        PATH_SEGMENT@45..50
-          NAME_REF@45..50
-            SUPER_KW@45..50 "super"
-      R_PAREN@50..51 ")"
-    WHITESPACE@51..52 " "
-    STRUCT_KW@52..58 "struct"
-    WHITESPACE@58..59 " "
-    NAME@59..60
-      IDENT@59..60 "S"
-    SEMICOLON@60..61 ";"
-  WHITESPACE@61..62 "\n"
+SOURCE_FILE
+  STRUCT
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            CRATE_KW "crate"
+      R_PAREN ")"
+    WHITESPACE " "
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            SELF_KW "self"
+      R_PAREN ")"
+    WHITESPACE " "
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            SUPER_KW "super"
+      R_PAREN ")"
+    WHITESPACE " "
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0022_crate_visibility.txt b/crates/parser/test_data/parser/inline/ok/0022_crate_visibility.txt
deleted file mode 100644
index 8738292a9f7..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0022_crate_visibility.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            CRATE_KW "crate"
-      R_PAREN ")"
-    WHITESPACE " "
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            SELF_KW "self"
-      R_PAREN ")"
-    WHITESPACE " "
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            SUPER_KW "super"
-      R_PAREN ")"
-    WHITESPACE " "
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0023_placeholder_type.rast b/crates/parser/test_data/parser/inline/ok/0023_placeholder_type.rast
index e4fe2b948b0..d9db1c34bf8 100644
--- a/crates/parser/test_data/parser/inline/ok/0023_placeholder_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0023_placeholder_type.rast
@@ -1,13 +1,13 @@
-SOURCE_FILE@0..22
-  TYPE_ALIAS@0..21
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..16
-      IDENT@5..16 "Placeholder"
-    WHITESPACE@16..17 " "
-    EQ@17..18 "="
-    WHITESPACE@18..19 " "
-    INFER_TYPE@19..20
-      UNDERSCORE@19..20 "_"
-    SEMICOLON@20..21 ";"
-  WHITESPACE@21..22 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Placeholder"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    INFER_TYPE
+      UNDERSCORE "_"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0023_placeholder_type.txt b/crates/parser/test_data/parser/inline/ok/0023_placeholder_type.txt
deleted file mode 100644
index d9db1c34bf8..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0023_placeholder_type.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Placeholder"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    INFER_TYPE
-      UNDERSCORE "_"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0024_slice_pat.rast b/crates/parser/test_data/parser/inline/ok/0024_slice_pat.rast
index 970260df818..235a9d7f404 100644
--- a/crates/parser/test_data/parser/inline/ok/0024_slice_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0024_slice_pat.rast
@@ -1,42 +1,42 @@
-SOURCE_FILE@0..39
-  FN@0..38
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..38
-      STMT_LIST@10..38
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..36
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          SLICE_PAT@20..30
-            L_BRACK@20..21 "["
-            IDENT_PAT@21..22
-              NAME@21..22
-                IDENT@21..22 "a"
-            COMMA@22..23 ","
-            WHITESPACE@23..24 " "
-            IDENT_PAT@24..25
-              NAME@24..25
-                IDENT@24..25 "b"
-            COMMA@25..26 ","
-            WHITESPACE@26..27 " "
-            REST_PAT@27..29
-              DOT2@27..29 ".."
-            R_BRACK@29..30 "]"
-          WHITESPACE@30..31 " "
-          EQ@31..32 "="
-          WHITESPACE@32..33 " "
-          ARRAY_EXPR@33..35
-            L_BRACK@33..34 "["
-            R_BRACK@34..35 "]"
-          SEMICOLON@35..36 ";"
-        WHITESPACE@36..37 "\n"
-        R_CURLY@37..38 "}"
-  WHITESPACE@38..39 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "b"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          ARRAY_EXPR
+            L_BRACK "["
+            R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0024_slice_pat.txt b/crates/parser/test_data/parser/inline/ok/0024_slice_pat.txt
deleted file mode 100644
index 235a9d7f404..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0024_slice_pat.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "b"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          ARRAY_EXPR
-            L_BRACK "["
-            R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0025_slice_type.rast b/crates/parser/test_data/parser/inline/ok/0025_slice_type.rast
index fd819ea370e..0bcb3152481 100644
--- a/crates/parser/test_data/parser/inline/ok/0025_slice_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0025_slice_type.rast
@@ -1,17 +1,17 @@
-SOURCE_FILE@0..15
-  TYPE_ALIAS@0..14
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    SLICE_TYPE@9..13
-      L_BRACK@9..10 "["
-      TUPLE_TYPE@10..12
-        L_PAREN@10..11 "("
-        R_PAREN@11..12 ")"
-      R_BRACK@12..13 "]"
-    SEMICOLON@13..14 ";"
-  WHITESPACE@14..15 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    SLICE_TYPE
+      L_BRACK "["
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+      R_BRACK "]"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0025_slice_type.txt b/crates/parser/test_data/parser/inline/ok/0025_slice_type.txt
deleted file mode 100644
index 0bcb3152481..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0025_slice_type.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    SLICE_TYPE
-      L_BRACK "["
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-      R_BRACK "]"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.rast b/crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.rast
index d1be7e6e0a7..3cdaf32b572 100644
--- a/crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.rast
+++ b/crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.rast
@@ -1,105 +1,105 @@
-SOURCE_FILE@0..97
-  FN@0..96
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..96
-      STMT_LIST@9..96
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..28
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          TUPLE_STRUCT_PAT@19..22
-            PATH@19..20
-              PATH_SEGMENT@19..20
-                NAME_REF@19..20
-                  IDENT@19..20 "S"
-            L_PAREN@20..21 "("
-            R_PAREN@21..22 ")"
-          WHITESPACE@22..23 " "
-          EQ@23..24 "="
-          WHITESPACE@24..25 " "
-          TUPLE_EXPR@25..27
-            L_PAREN@25..26 "("
-            R_PAREN@26..27 ")"
-          SEMICOLON@27..28 ";"
-        WHITESPACE@28..33 "\n    "
-        LET_STMT@33..47
-          LET_KW@33..36 "let"
-          WHITESPACE@36..37 " "
-          TUPLE_STRUCT_PAT@37..41
-            PATH@37..38
-              PATH_SEGMENT@37..38
-                NAME_REF@37..38
-                  IDENT@37..38 "S"
-            L_PAREN@38..39 "("
-            WILDCARD_PAT@39..40
-              UNDERSCORE@39..40 "_"
-            R_PAREN@40..41 ")"
-          WHITESPACE@41..42 " "
-          EQ@42..43 "="
-          WHITESPACE@43..44 " "
-          TUPLE_EXPR@44..46
-            L_PAREN@44..45 "("
-            R_PAREN@45..46 ")"
-          SEMICOLON@46..47 ";"
-        WHITESPACE@47..52 "\n    "
-        LET_STMT@52..67
-          LET_KW@52..55 "let"
-          WHITESPACE@55..56 " "
-          TUPLE_STRUCT_PAT@56..61
-            PATH@56..57
-              PATH_SEGMENT@56..57
-                NAME_REF@56..57
-                  IDENT@56..57 "S"
-            L_PAREN@57..58 "("
-            WILDCARD_PAT@58..59
-              UNDERSCORE@58..59 "_"
-            COMMA@59..60 ","
-            R_PAREN@60..61 ")"
-          WHITESPACE@61..62 " "
-          EQ@62..63 "="
-          WHITESPACE@63..64 " "
-          TUPLE_EXPR@64..66
-            L_PAREN@64..65 "("
-            R_PAREN@65..66 ")"
-          SEMICOLON@66..67 ";"
-        WHITESPACE@67..72 "\n    "
-        LET_STMT@72..94
-          LET_KW@72..75 "let"
-          WHITESPACE@75..76 " "
-          TUPLE_STRUCT_PAT@76..88
-            PATH@76..77
-              PATH_SEGMENT@76..77
-                NAME_REF@76..77
-                  IDENT@76..77 "S"
-            L_PAREN@77..78 "("
-            WILDCARD_PAT@78..79
-              UNDERSCORE@78..79 "_"
-            COMMA@79..80 ","
-            WHITESPACE@80..81 " "
-            REST_PAT@81..83
-              DOT2@81..83 ".."
-            WHITESPACE@83..84 " "
-            COMMA@84..85 ","
-            WHITESPACE@85..86 " "
-            IDENT_PAT@86..87
-              NAME@86..87
-                IDENT@86..87 "x"
-            R_PAREN@87..88 ")"
-          WHITESPACE@88..89 " "
-          EQ@89..90 "="
-          WHITESPACE@90..91 " "
-          TUPLE_EXPR@91..93
-            L_PAREN@91..92 "("
-            R_PAREN@92..93 ")"
-          SEMICOLON@93..94 ";"
-        WHITESPACE@94..95 "\n"
-        R_CURLY@95..96 "}"
-  WHITESPACE@96..97 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            L_PAREN "("
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            L_PAREN "("
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COMMA ","
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            L_PAREN "("
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            WHITESPACE " "
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "x"
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.txt b/crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.txt
deleted file mode 100644
index 3cdaf32b572..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0026_tuple_pat_fields.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            L_PAREN "("
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            L_PAREN "("
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COMMA ","
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            L_PAREN "("
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            WHITESPACE " "
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "x"
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0027_ref_pat.rast b/crates/parser/test_data/parser/inline/ok/0027_ref_pat.rast
index ed47dc21ddc..4516fd01132 100644
--- a/crates/parser/test_data/parser/inline/ok/0027_ref_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0027_ref_pat.rast
@@ -1,50 +1,50 @@
-SOURCE_FILE@0..52
-  FN@0..51
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..51
-      STMT_LIST@10..51
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..28
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          REF_PAT@20..22
-            AMP@20..21 "&"
-            IDENT_PAT@21..22
-              NAME@21..22
-                IDENT@21..22 "a"
-          WHITESPACE@22..23 " "
-          EQ@23..24 "="
-          WHITESPACE@24..25 " "
-          TUPLE_EXPR@25..27
-            L_PAREN@25..26 "("
-            R_PAREN@26..27 ")"
-          SEMICOLON@27..28 ";"
-        WHITESPACE@28..33 "\n    "
-        LET_STMT@33..49
-          LET_KW@33..36 "let"
-          WHITESPACE@36..37 " "
-          REF_PAT@37..43
-            AMP@37..38 "&"
-            MUT_KW@38..41 "mut"
-            WHITESPACE@41..42 " "
-            IDENT_PAT@42..43
-              NAME@42..43
-                IDENT@42..43 "b"
-          WHITESPACE@43..44 " "
-          EQ@44..45 "="
-          WHITESPACE@45..46 " "
-          TUPLE_EXPR@46..48
-            L_PAREN@46..47 "("
-            R_PAREN@47..48 ")"
-          SEMICOLON@48..49 ";"
-        WHITESPACE@49..50 "\n"
-        R_CURLY@50..51 "}"
-  WHITESPACE@51..52 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          REF_PAT
+            AMP "&"
+            IDENT_PAT
+              NAME
+                IDENT "a"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          REF_PAT
+            AMP "&"
+            MUT_KW "mut"
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "b"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0027_ref_pat.txt b/crates/parser/test_data/parser/inline/ok/0027_ref_pat.txt
deleted file mode 100644
index 4516fd01132..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0027_ref_pat.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          REF_PAT
-            AMP "&"
-            IDENT_PAT
-              NAME
-                IDENT "a"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          REF_PAT
-            AMP "&"
-            MUT_KW "mut"
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "b"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.rast b/crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.rast
index b44f46f0538..c7478da942b 100644
--- a/crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.rast
@@ -1,45 +1,45 @@
-SOURCE_FILE@0..43
-  TYPE_ALIAS@0..42
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    IMPL_TRAIT_TYPE@9..41
-      IMPL_KW@9..13 "impl"
-      WHITESPACE@13..14 " "
-      TYPE_BOUND_LIST@14..41
-        TYPE_BOUND@14..36
-          PATH_TYPE@14..36
-            PATH@14..36
-              PATH_SEGMENT@14..36
-                NAME_REF@14..22
-                  IDENT@14..22 "Iterator"
-                GENERIC_ARG_LIST@22..36
-                  L_ANGLE@22..23 "<"
-                  ASSOC_TYPE_ARG@23..35
-                    NAME_REF@23..27
-                      IDENT@23..27 "Item"
-                    EQ@27..28 "="
-                    PATH_TYPE@28..35
-                      PATH@28..35
-                        PATH_SEGMENT@28..35
-                          NAME_REF@28..31
-                            IDENT@28..31 "Foo"
-                          GENERIC_ARG_LIST@31..35
-                            L_ANGLE@31..32 "<"
-                            LIFETIME_ARG@32..34
-                              LIFETIME@32..34
-                                LIFETIME_IDENT@32..34 "'a"
-                            R_ANGLE@34..35 ">"
-                  R_ANGLE@35..36 ">"
-        WHITESPACE@36..37 " "
-        PLUS@37..38 "+"
-        WHITESPACE@38..39 " "
-        TYPE_BOUND@39..41
-          LIFETIME@39..41
-            LIFETIME_IDENT@39..41 "'a"
-    SEMICOLON@41..42 ";"
-  WHITESPACE@42..43 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    IMPL_TRAIT_TYPE
+      IMPL_KW "impl"
+      WHITESPACE " "
+      TYPE_BOUND_LIST
+        TYPE_BOUND
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Iterator"
+                GENERIC_ARG_LIST
+                  L_ANGLE "<"
+                  ASSOC_TYPE_ARG
+                    NAME_REF
+                      IDENT "Item"
+                    EQ "="
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "Foo"
+                          GENERIC_ARG_LIST
+                            L_ANGLE "<"
+                            LIFETIME_ARG
+                              LIFETIME
+                                LIFETIME_IDENT "'a"
+                            R_ANGLE ">"
+                  R_ANGLE ">"
+        WHITESPACE " "
+        PLUS "+"
+        WHITESPACE " "
+        TYPE_BOUND
+          LIFETIME
+            LIFETIME_IDENT "'a"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.txt b/crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.txt
deleted file mode 100644
index c7478da942b..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0028_impl_trait_type.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    IMPL_TRAIT_TYPE
-      IMPL_KW "impl"
-      WHITESPACE " "
-      TYPE_BOUND_LIST
-        TYPE_BOUND
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Iterator"
-                GENERIC_ARG_LIST
-                  L_ANGLE "<"
-                  ASSOC_TYPE_ARG
-                    NAME_REF
-                      IDENT "Item"
-                    EQ "="
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "Foo"
-                          GENERIC_ARG_LIST
-                            L_ANGLE "<"
-                            LIFETIME_ARG
-                              LIFETIME
-                                LIFETIME_IDENT "'a"
-                            R_ANGLE ">"
-                  R_ANGLE ">"
-        WHITESPACE " "
-        PLUS "+"
-        WHITESPACE " "
-        TYPE_BOUND
-          LIFETIME
-            LIFETIME_IDENT "'a"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0029_cast_expr.rast b/crates/parser/test_data/parser/inline/ok/0029_cast_expr.rast
index 5afd7bd8fe6..d53dde53811 100644
--- a/crates/parser/test_data/parser/inline/ok/0029_cast_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0029_cast_expr.rast
@@ -1,90 +1,90 @@
-SOURCE_FILE@0..89
-  FN@0..88
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..88
-      STMT_LIST@9..88
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..25
-          CAST_EXPR@15..24
-            LITERAL@15..17
-              INT_NUMBER@15..17 "82"
-            WHITESPACE@17..18 " "
-            AS_KW@18..20 "as"
-            WHITESPACE@20..21 " "
-            PATH_TYPE@21..24
-              PATH@21..24
-                PATH_SEGMENT@21..24
-                  NAME_REF@21..24
-                    IDENT@21..24 "i32"
-          SEMICOLON@24..25 ";"
-        WHITESPACE@25..30 "\n    "
-        EXPR_STMT@30..43
-          BIN_EXPR@30..42
-            CAST_EXPR@30..38
-              LITERAL@30..32
-                INT_NUMBER@30..32 "81"
-              WHITESPACE@32..33 " "
-              AS_KW@33..35 "as"
-              WHITESPACE@35..36 " "
-              PATH_TYPE@36..38
-                PATH@36..38
-                  PATH_SEGMENT@36..38
-                    NAME_REF@36..38
-                      IDENT@36..38 "i8"
-            WHITESPACE@38..39 " "
-            PLUS@39..40 "+"
-            WHITESPACE@40..41 " "
-            LITERAL@41..42
-              INT_NUMBER@41..42 "1"
-          SEMICOLON@42..43 ";"
-        WHITESPACE@43..48 "\n    "
-        EXPR_STMT@48..62
-          BIN_EXPR@48..61
-            CAST_EXPR@48..57
-              LITERAL@48..50
-                INT_NUMBER@48..50 "79"
-              WHITESPACE@50..51 " "
-              AS_KW@51..53 "as"
-              WHITESPACE@53..54 " "
-              PATH_TYPE@54..57
-                PATH@54..57
-                  PATH_SEGMENT@54..57
-                    NAME_REF@54..57
-                      IDENT@54..57 "i16"
-            WHITESPACE@57..58 " "
-            MINUS@58..59 "-"
-            WHITESPACE@59..60 " "
-            LITERAL@60..61
-              INT_NUMBER@60..61 "1"
-          SEMICOLON@61..62 ";"
-        WHITESPACE@62..67 "\n    "
-        EXPR_STMT@67..86
-          BIN_EXPR@67..85
-            CAST_EXPR@67..77
-              LITERAL@67..71
-                INT_NUMBER@67..71 "0x36"
-              WHITESPACE@71..72 " "
-              AS_KW@72..74 "as"
-              WHITESPACE@74..75 " "
-              PATH_TYPE@75..77
-                PATH@75..77
-                  PATH_SEGMENT@75..77
-                    NAME_REF@75..77
-                      IDENT@75..77 "u8"
-            WHITESPACE@77..78 " "
-            LTEQ@78..80 "<="
-            WHITESPACE@80..81 " "
-            LITERAL@81..85
-              INT_NUMBER@81..85 "0x37"
-          SEMICOLON@85..86 ";"
-        WHITESPACE@86..87 "\n"
-        R_CURLY@87..88 "}"
-  WHITESPACE@88..89 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CAST_EXPR
+            LITERAL
+              INT_NUMBER "82"
+            WHITESPACE " "
+            AS_KW "as"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i32"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            CAST_EXPR
+              LITERAL
+                INT_NUMBER "81"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i8"
+            WHITESPACE " "
+            PLUS "+"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            CAST_EXPR
+              LITERAL
+                INT_NUMBER "79"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i16"
+            WHITESPACE " "
+            MINUS "-"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            CAST_EXPR
+              LITERAL
+                INT_NUMBER "0x36"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "u8"
+            WHITESPACE " "
+            LTEQ "<="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "0x37"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0029_cast_expr.txt b/crates/parser/test_data/parser/inline/ok/0029_cast_expr.txt
deleted file mode 100644
index d53dde53811..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0029_cast_expr.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CAST_EXPR
-            LITERAL
-              INT_NUMBER "82"
-            WHITESPACE " "
-            AS_KW "as"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i32"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            CAST_EXPR
-              LITERAL
-                INT_NUMBER "81"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i8"
-            WHITESPACE " "
-            PLUS "+"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            CAST_EXPR
-              LITERAL
-                INT_NUMBER "79"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i16"
-            WHITESPACE " "
-            MINUS "-"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            CAST_EXPR
-              LITERAL
-                INT_NUMBER "0x36"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "u8"
-            WHITESPACE " "
-            LTEQ "<="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "0x37"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0030_let_expr.txt b/crates/parser/test_data/parser/inline/ok/0030_let_expr.txt
deleted file mode 100644
index dcffcb1ce2f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0030_let_expr.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            BIN_EXPR
-              LET_EXPR
-                LET_KW "let"
-                WHITESPACE " "
-                TUPLE_STRUCT_PAT
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Some"
-                  L_PAREN "("
-                  WILDCARD_PAT
-                    UNDERSCORE "_"
-                  R_PAREN ")"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "None"
-              WHITESPACE " "
-              AMP2 "&&"
-              WHITESPACE " "
-              LITERAL
-                TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        WHILE_EXPR
-          WHILE_KW "while"
-          WHITESPACE " "
-          BIN_EXPR
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "1"
-              WHITESPACE " "
-              EQ2 "=="
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "5"
-            WHITESPACE " "
-            AMP2 "&&"
-            WHITESPACE " "
-            PAREN_EXPR
-              L_PAREN "("
-              LET_EXPR
-                LET_KW "let"
-                WHITESPACE " "
-                IDENT_PAT
-                  NAME
-                    IDENT "None"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "None"
-              R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0031_while_expr.rast b/crates/parser/test_data/parser/inline/ok/0031_while_expr.rast
index d2d22e58ea6..16c522414af 100644
--- a/crates/parser/test_data/parser/inline/ok/0031_while_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0031_while_expr.rast
@@ -1,89 +1,87 @@
-SOURCE_FILE@0..93
-  FN@0..92
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..92
-      STMT_LIST@9..92
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..29
-          WHILE_EXPR@15..28
-            WHILE_KW@15..20 "while"
-            WHITESPACE@20..21 " "
-            CONDITION@21..25
-              LITERAL@21..25
-                TRUE_KW@21..25 "true"
-            WHITESPACE@25..26 " "
-            BLOCK_EXPR@26..28
-              STMT_LIST@26..28
-                L_CURLY@26..27 "{"
-                R_CURLY@27..28 "}"
-          SEMICOLON@28..29 ";"
-        WHITESPACE@29..34 "\n    "
-        EXPR_STMT@34..67
-          WHILE_EXPR@34..66
-            WHILE_KW@34..39 "while"
-            WHITESPACE@39..40 " "
-            CONDITION@40..63
-              LET_KW@40..43 "let"
-              WHITESPACE@43..44 " "
-              TUPLE_STRUCT_PAT@44..51
-                PATH@44..48
-                  PATH_SEGMENT@44..48
-                    NAME_REF@44..48
-                      IDENT@44..48 "Some"
-                L_PAREN@48..49 "("
-                IDENT_PAT@49..50
-                  NAME@49..50
-                    IDENT@49..50 "x"
-                R_PAREN@50..51 ")"
-              WHITESPACE@51..52 " "
-              EQ@52..53 "="
-              WHITESPACE@53..54 " "
-              METHOD_CALL_EXPR@54..63
-                PATH_EXPR@54..56
-                  PATH@54..56
-                    PATH_SEGMENT@54..56
-                      NAME_REF@54..56
-                        IDENT@54..56 "it"
-                DOT@56..57 "."
-                NAME_REF@57..61
-                  IDENT@57..61 "next"
-                ARG_LIST@61..63
-                  L_PAREN@61..62 "("
-                  R_PAREN@62..63 ")"
-            WHITESPACE@63..64 " "
-            BLOCK_EXPR@64..66
-              STMT_LIST@64..66
-                L_CURLY@64..65 "{"
-                R_CURLY@65..66 "}"
-          SEMICOLON@66..67 ";"
-        WHITESPACE@67..72 "\n    "
-        EXPR_STMT@72..90
-          WHILE_EXPR@72..89
-            WHILE_KW@72..77 "while"
-            WHITESPACE@77..78 " "
-            CONDITION@78..86
-              BLOCK_EXPR@78..86
-                STMT_LIST@78..86
-                  L_CURLY@78..79 "{"
-                  WHITESPACE@79..80 " "
-                  LITERAL@80..84
-                    TRUE_KW@80..84 "true"
-                  WHITESPACE@84..85 " "
-                  R_CURLY@85..86 "}"
-            WHITESPACE@86..87 " "
-            BLOCK_EXPR@87..89
-              STMT_LIST@87..89
-                L_CURLY@87..88 "{"
-                R_CURLY@88..89 "}"
-          SEMICOLON@89..90 ";"
-        WHITESPACE@90..91 "\n"
-        R_CURLY@91..92 "}"
-  WHITESPACE@92..93 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          WHILE_EXPR
+            WHILE_KW "while"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          WHILE_EXPR
+            WHILE_KW "while"
+            WHITESPACE " "
+            LET_EXPR
+              LET_KW "let"
+              WHITESPACE " "
+              TUPLE_STRUCT_PAT
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Some"
+                L_PAREN "("
+                IDENT_PAT
+                  NAME
+                    IDENT "x"
+                R_PAREN ")"
+              WHITESPACE " "
+              EQ "="
+              WHITESPACE " "
+              METHOD_CALL_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "it"
+                DOT "."
+                NAME_REF
+                  IDENT "next"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          WHILE_EXPR
+            WHILE_KW "while"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                LITERAL
+                  TRUE_KW "true"
+                WHITESPACE " "
+                R_CURLY "}"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0031_while_expr.txt b/crates/parser/test_data/parser/inline/ok/0031_while_expr.txt
deleted file mode 100644
index 16c522414af..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0031_while_expr.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          WHILE_EXPR
-            WHILE_KW "while"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          WHILE_EXPR
-            WHILE_KW "while"
-            WHITESPACE " "
-            LET_EXPR
-              LET_KW "let"
-              WHITESPACE " "
-              TUPLE_STRUCT_PAT
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Some"
-                L_PAREN "("
-                IDENT_PAT
-                  NAME
-                    IDENT "x"
-                R_PAREN ")"
-              WHITESPACE " "
-              EQ "="
-              WHITESPACE " "
-              METHOD_CALL_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "it"
-                DOT "."
-                NAME_REF
-                  IDENT "next"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          WHILE_EXPR
-            WHILE_KW "while"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                LITERAL
-                  TRUE_KW "true"
-                WHITESPACE " "
-                R_CURLY "}"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.rast b/crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.rast
index dda6577eda8..608b0be160a 100644
--- a/crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.rast
@@ -1,98 +1,98 @@
-SOURCE_FILE@0..113
-  TYPE_ALIAS@0..14
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    FN_PTR_TYPE@9..13
-      FN_KW@9..11 "fn"
-      PARAM_LIST@11..13
-        L_PAREN@11..12 "("
-        R_PAREN@12..13 ")"
-    SEMICOLON@13..14 ";"
-  WHITESPACE@14..15 "\n"
-  TYPE_ALIAS@15..36
-    TYPE_KW@15..19 "type"
-    WHITESPACE@19..20 " "
-    NAME@20..21
-      IDENT@20..21 "B"
-    WHITESPACE@21..22 " "
-    EQ@22..23 "="
-    WHITESPACE@23..24 " "
-    FN_PTR_TYPE@24..35
-      UNSAFE_KW@24..30 "unsafe"
-      WHITESPACE@30..31 " "
-      FN_KW@31..33 "fn"
-      PARAM_LIST@33..35
-        L_PAREN@33..34 "("
-        R_PAREN@34..35 ")"
-    SEMICOLON@35..36 ";"
-  WHITESPACE@36..37 "\n"
-  TYPE_ALIAS@37..69
-    TYPE_KW@37..41 "type"
-    WHITESPACE@41..42 " "
-    NAME@42..43
-      IDENT@42..43 "C"
-    WHITESPACE@43..44 " "
-    EQ@44..45 "="
-    WHITESPACE@45..46 " "
-    FN_PTR_TYPE@46..68
-      UNSAFE_KW@46..52 "unsafe"
-      WHITESPACE@52..53 " "
-      ABI@53..63
-        EXTERN_KW@53..59 "extern"
-        WHITESPACE@59..60 " "
-        STRING@60..63 "\"C\""
-      WHITESPACE@63..64 " "
-      FN_KW@64..66 "fn"
-      PARAM_LIST@66..68
-        L_PAREN@66..67 "("
-        R_PAREN@67..68 ")"
-    SEMICOLON@68..69 ";"
-  WHITESPACE@69..70 "\n"
-  TYPE_ALIAS@70..112
-    TYPE_KW@70..74 "type"
-    WHITESPACE@74..75 " "
-    NAME@75..76
-      IDENT@75..76 "D"
-    WHITESPACE@76..77 " "
-    EQ@77..78 "="
-    WHITESPACE@78..79 " "
-    FN_PTR_TYPE@79..111
-      ABI@79..89
-        EXTERN_KW@79..85 "extern"
-        WHITESPACE@85..86 " "
-        STRING@86..89 "\"C\""
-      WHITESPACE@89..90 " "
-      FN_KW@90..92 "fn"
-      WHITESPACE@92..93 " "
-      PARAM_LIST@93..105
-        L_PAREN@93..94 "("
-        WHITESPACE@94..95 " "
-        PARAM@95..97
-          PATH_TYPE@95..97
-            PATH@95..97
-              PATH_SEGMENT@95..97
-                NAME_REF@95..97
-                  IDENT@95..97 "u8"
-        WHITESPACE@97..98 " "
-        COMMA@98..99 ","
-        WHITESPACE@99..100 " "
-        PARAM@100..103
-          DOT3@100..103 "..."
-        WHITESPACE@103..104 " "
-        R_PAREN@104..105 ")"
-      WHITESPACE@105..106 " "
-      RET_TYPE@106..111
-        THIN_ARROW@106..108 "->"
-        WHITESPACE@108..109 " "
-        PATH_TYPE@109..111
-          PATH@109..111
-            PATH_SEGMENT@109..111
-              NAME_REF@109..111
-                IDENT@109..111 "u8"
-    SEMICOLON@111..112 ";"
-  WHITESPACE@112..113 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      UNSAFE_KW "unsafe"
+      WHITESPACE " "
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "C"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      UNSAFE_KW "unsafe"
+      WHITESPACE " "
+      ABI
+        EXTERN_KW "extern"
+        WHITESPACE " "
+        STRING "\"C\""
+      WHITESPACE " "
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "D"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      ABI
+        EXTERN_KW "extern"
+        WHITESPACE " "
+        STRING "\"C\""
+      WHITESPACE " "
+      FN_KW "fn"
+      WHITESPACE " "
+      PARAM_LIST
+        L_PAREN "("
+        WHITESPACE " "
+        PARAM
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "u8"
+        WHITESPACE " "
+        COMMA ","
+        WHITESPACE " "
+        PARAM
+          DOT3 "..."
+        WHITESPACE " "
+        R_PAREN ")"
+      WHITESPACE " "
+      RET_TYPE
+        THIN_ARROW "->"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u8"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.txt b/crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.txt
deleted file mode 100644
index 608b0be160a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0032_fn_pointer_type.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      UNSAFE_KW "unsafe"
-      WHITESPACE " "
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "C"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      UNSAFE_KW "unsafe"
-      WHITESPACE " "
-      ABI
-        EXTERN_KW "extern"
-        WHITESPACE " "
-        STRING "\"C\""
-      WHITESPACE " "
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "D"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      ABI
-        EXTERN_KW "extern"
-        WHITESPACE " "
-        STRING "\"C\""
-      WHITESPACE " "
-      FN_KW "fn"
-      WHITESPACE " "
-      PARAM_LIST
-        L_PAREN "("
-        WHITESPACE " "
-        PARAM
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "u8"
-        WHITESPACE " "
-        COMMA ","
-        WHITESPACE " "
-        PARAM
-          DOT3 "..."
-        WHITESPACE " "
-        R_PAREN ")"
-      WHITESPACE " "
-      RET_TYPE
-        THIN_ARROW "->"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u8"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0033_reference_type;.rast b/crates/parser/test_data/parser/inline/ok/0033_reference_type;.rast
index 7cb288bf072..b5c9d7a8dfb 100644
--- a/crates/parser/test_data/parser/inline/ok/0033_reference_type;.rast
+++ b/crates/parser/test_data/parser/inline/ok/0033_reference_type;.rast
@@ -1,51 +1,51 @@
-SOURCE_FILE@0..54
-  TYPE_ALIAS@0..13
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    REF_TYPE@9..12
-      AMP@9..10 "&"
-      TUPLE_TYPE@10..12
-        L_PAREN@10..11 "("
-        R_PAREN@11..12 ")"
-    SEMICOLON@12..13 ";"
-  WHITESPACE@13..14 "\n"
-  TYPE_ALIAS@14..35
-    TYPE_KW@14..18 "type"
-    WHITESPACE@18..19 " "
-    NAME@19..20
-      IDENT@19..20 "B"
-    WHITESPACE@20..21 " "
-    EQ@21..22 "="
-    WHITESPACE@22..23 " "
-    REF_TYPE@23..34
-      AMP@23..24 "&"
-      LIFETIME@24..31
-        LIFETIME_IDENT@24..31 "'static"
-      WHITESPACE@31..32 " "
-      TUPLE_TYPE@32..34
-        L_PAREN@32..33 "("
-        R_PAREN@33..34 ")"
-    SEMICOLON@34..35 ";"
-  WHITESPACE@35..36 "\n"
-  TYPE_ALIAS@36..53
-    TYPE_KW@36..40 "type"
-    WHITESPACE@40..41 " "
-    NAME@41..42
-      IDENT@41..42 "C"
-    WHITESPACE@42..43 " "
-    EQ@43..44 "="
-    WHITESPACE@44..45 " "
-    REF_TYPE@45..52
-      AMP@45..46 "&"
-      MUT_KW@46..49 "mut"
-      WHITESPACE@49..50 " "
-      TUPLE_TYPE@50..52
-        L_PAREN@50..51 "("
-        R_PAREN@51..52 ")"
-    SEMICOLON@52..53 ";"
-  WHITESPACE@53..54 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    REF_TYPE
+      AMP "&"
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    REF_TYPE
+      AMP "&"
+      LIFETIME
+        LIFETIME_IDENT "'static"
+      WHITESPACE " "
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "C"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    REF_TYPE
+      AMP "&"
+      MUT_KW "mut"
+      WHITESPACE " "
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0033_reference_type;.txt b/crates/parser/test_data/parser/inline/ok/0033_reference_type;.txt
deleted file mode 100644
index b5c9d7a8dfb..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0033_reference_type;.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    REF_TYPE
-      AMP "&"
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    REF_TYPE
-      AMP "&"
-      LIFETIME
-        LIFETIME_IDENT "'static"
-      WHITESPACE " "
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "C"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    REF_TYPE
-      AMP "&"
-      MUT_KW "mut"
-      WHITESPACE " "
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0034_break_expr.rast b/crates/parser/test_data/parser/inline/ok/0034_break_expr.rast
index a52c1c3893f..06c053d0f82 100644
--- a/crates/parser/test_data/parser/inline/ok/0034_break_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0034_break_expr.rast
@@ -1,57 +1,57 @@
-SOURCE_FILE@0..102
-  FN@0..101
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..101
-      STMT_LIST@9..101
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LOOP_EXPR@15..99
-          LOOP_KW@15..19 "loop"
-          WHITESPACE@19..20 " "
-          BLOCK_EXPR@20..99
-            STMT_LIST@20..99
-              L_CURLY@20..21 "{"
-              WHITESPACE@21..30 "\n        "
-              EXPR_STMT@30..36
-                BREAK_EXPR@30..35
-                  BREAK_KW@30..35 "break"
-                SEMICOLON@35..36 ";"
-              WHITESPACE@36..45 "\n        "
-              EXPR_STMT@45..54
-                BREAK_EXPR@45..53
-                  BREAK_KW@45..50 "break"
-                  WHITESPACE@50..51 " "
-                  LIFETIME@51..53
-                    LIFETIME_IDENT@51..53 "'l"
-                SEMICOLON@53..54 ";"
-              WHITESPACE@54..63 "\n        "
-              EXPR_STMT@63..72
-                BREAK_EXPR@63..71
-                  BREAK_KW@63..68 "break"
-                  WHITESPACE@68..69 " "
-                  LITERAL@69..71
-                    INT_NUMBER@69..71 "92"
-                SEMICOLON@71..72 ";"
-              WHITESPACE@72..81 "\n        "
-              EXPR_STMT@81..93
-                BREAK_EXPR@81..92
-                  BREAK_KW@81..86 "break"
-                  WHITESPACE@86..87 " "
-                  LIFETIME@87..89
-                    LIFETIME_IDENT@87..89 "'l"
-                  WHITESPACE@89..90 " "
-                  LITERAL@90..92
-                    INT_NUMBER@90..92 "92"
-                SEMICOLON@92..93 ";"
-              WHITESPACE@93..98 "\n    "
-              R_CURLY@98..99 "}"
-        WHITESPACE@99..100 "\n"
-        R_CURLY@100..101 "}"
-  WHITESPACE@101..102 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LOOP_EXPR
+          LOOP_KW "loop"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                BREAK_EXPR
+                  BREAK_KW "break"
+                SEMICOLON ";"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                BREAK_EXPR
+                  BREAK_KW "break"
+                  WHITESPACE " "
+                  LIFETIME
+                    LIFETIME_IDENT "'l"
+                SEMICOLON ";"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                BREAK_EXPR
+                  BREAK_KW "break"
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "92"
+                SEMICOLON ";"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                BREAK_EXPR
+                  BREAK_KW "break"
+                  WHITESPACE " "
+                  LIFETIME
+                    LIFETIME_IDENT "'l"
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "92"
+                SEMICOLON ";"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0034_break_expr.txt b/crates/parser/test_data/parser/inline/ok/0034_break_expr.txt
deleted file mode 100644
index 06c053d0f82..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0034_break_expr.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LOOP_EXPR
-          LOOP_KW "loop"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                BREAK_EXPR
-                  BREAK_KW "break"
-                SEMICOLON ";"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                BREAK_EXPR
-                  BREAK_KW "break"
-                  WHITESPACE " "
-                  LIFETIME
-                    LIFETIME_IDENT "'l"
-                SEMICOLON ";"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                BREAK_EXPR
-                  BREAK_KW "break"
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "92"
-                SEMICOLON ";"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                BREAK_EXPR
-                  BREAK_KW "break"
-                  WHITESPACE " "
-                  LIFETIME
-                    LIFETIME_IDENT "'l"
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "92"
-                SEMICOLON ";"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0037_qual_paths.rast b/crates/parser/test_data/parser/inline/ok/0037_qual_paths.rast
index ab22f3189d7..8c66cfe599f 100644
--- a/crates/parser/test_data/parser/inline/ok/0037_qual_paths.rast
+++ b/crates/parser/test_data/parser/inline/ok/0037_qual_paths.rast
@@ -1,79 +1,79 @@
-SOURCE_FILE@0..71
-  TYPE_ALIAS@0..26
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "X"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..25
-      PATH@9..25
-        PATH@9..17
-          PATH_SEGMENT@9..17
-            L_ANGLE@9..10 "<"
-            PATH_TYPE@10..11
-              PATH@10..11
-                PATH_SEGMENT@10..11
-                  NAME_REF@10..11
-                    IDENT@10..11 "A"
-            WHITESPACE@11..12 " "
-            AS_KW@12..14 "as"
-            WHITESPACE@14..15 " "
-            PATH_TYPE@15..16
-              PATH@15..16
-                PATH_SEGMENT@15..16
-                  NAME_REF@15..16
-                    IDENT@15..16 "B"
-            R_ANGLE@16..17 ">"
-        COLON2@17..19 "::"
-        PATH_SEGMENT@19..25
-          NAME_REF@19..25
-            IDENT@19..25 "Output"
-    SEMICOLON@25..26 ";"
-  WHITESPACE@26..27 "\n"
-  FN@27..70
-    FN_KW@27..29 "fn"
-    WHITESPACE@29..30 " "
-    NAME@30..33
-      IDENT@30..33 "foo"
-    PARAM_LIST@33..35
-      L_PAREN@33..34 "("
-      R_PAREN@34..35 ")"
-    WHITESPACE@35..36 " "
-    BLOCK_EXPR@36..70
-      STMT_LIST@36..70
-        L_CURLY@36..37 "{"
-        WHITESPACE@37..38 " "
-        EXPR_STMT@38..68
-          CALL_EXPR@38..67
-            PATH_EXPR@38..65
-              PATH@38..65
-                PATH@38..56
-                  PATH_SEGMENT@38..56
-                    L_ANGLE@38..39 "<"
-                    PATH_TYPE@39..44
-                      PATH@39..44
-                        PATH_SEGMENT@39..44
-                          NAME_REF@39..44
-                            IDENT@39..44 "usize"
-                    WHITESPACE@44..45 " "
-                    AS_KW@45..47 "as"
-                    WHITESPACE@47..48 " "
-                    PATH_TYPE@48..55
-                      PATH@48..55
-                        PATH_SEGMENT@48..55
-                          NAME_REF@48..55
-                            IDENT@48..55 "Default"
-                    R_ANGLE@55..56 ">"
-                COLON2@56..58 "::"
-                PATH_SEGMENT@58..65
-                  NAME_REF@58..65
-                    IDENT@58..65 "default"
-            ARG_LIST@65..67
-              L_PAREN@65..66 "("
-              R_PAREN@66..67 ")"
-          SEMICOLON@67..68 ";"
-        WHITESPACE@68..69 " "
-        R_CURLY@69..70 "}"
-  WHITESPACE@70..71 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "X"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH
+          PATH_SEGMENT
+            L_ANGLE "<"
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "A"
+            WHITESPACE " "
+            AS_KW "as"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "B"
+            R_ANGLE ">"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Output"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH
+                  PATH_SEGMENT
+                    L_ANGLE "<"
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "usize"
+                    WHITESPACE " "
+                    AS_KW "as"
+                    WHITESPACE " "
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "Default"
+                    R_ANGLE ">"
+                COLON2 "::"
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "default"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0037_qual_paths.txt b/crates/parser/test_data/parser/inline/ok/0037_qual_paths.txt
deleted file mode 100644
index 8c66cfe599f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0037_qual_paths.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "X"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH
-          PATH_SEGMENT
-            L_ANGLE "<"
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "A"
-            WHITESPACE " "
-            AS_KW "as"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "B"
-            R_ANGLE ">"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Output"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH
-                  PATH_SEGMENT
-                    L_ANGLE "<"
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "usize"
-                    WHITESPACE " "
-                    AS_KW "as"
-                    WHITESPACE " "
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "Default"
-                    R_ANGLE ">"
-                COLON2 "::"
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "default"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0038_full_range_expr.rast b/crates/parser/test_data/parser/inline/ok/0038_full_range_expr.rast
index 9bb358f8a00..9ffc0763041 100644
--- a/crates/parser/test_data/parser/inline/ok/0038_full_range_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0038_full_range_expr.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..21
-  FN@0..20
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..20
-      STMT_LIST@9..20
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 " "
-        EXPR_STMT@11..18
-          INDEX_EXPR@11..17
-            PATH_EXPR@11..13
-              PATH@11..13
-                PATH_SEGMENT@11..13
-                  NAME_REF@11..13
-                    IDENT@11..13 "xs"
-            L_BRACK@13..14 "["
-            RANGE_EXPR@14..16
-              DOT2@14..16 ".."
-            R_BRACK@16..17 "]"
-          SEMICOLON@17..18 ";"
-        WHITESPACE@18..19 " "
-        R_CURLY@19..20 "}"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          INDEX_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "xs"
+            L_BRACK "["
+            RANGE_EXPR
+              DOT2 ".."
+            R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0038_full_range_expr.txt b/crates/parser/test_data/parser/inline/ok/0038_full_range_expr.txt
deleted file mode 100644
index 9ffc0763041..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0038_full_range_expr.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          INDEX_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "xs"
-            L_BRACK "["
-            RANGE_EXPR
-              DOT2 ".."
-            R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.rast b/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.rast
index 31225282865..07b0210e44d 100644
--- a/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.rast
+++ b/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.rast
@@ -1,63 +1,63 @@
-SOURCE_FILE@0..71
-  FN@0..19
-    VISIBILITY@0..5
-      CRATE_KW@0..5 "crate"
-    WHITESPACE@5..6 " "
-    FN_KW@6..8 "fn"
-    WHITESPACE@8..9 " "
-    NAME@9..13
-      IDENT@9..13 "main"
-    PARAM_LIST@13..15
-      L_PAREN@13..14 "("
-      R_PAREN@14..15 ")"
-    WHITESPACE@15..16 " "
-    BLOCK_EXPR@16..19
-      STMT_LIST@16..19
-        L_CURLY@16..17 "{"
-        WHITESPACE@17..18 " "
-        R_CURLY@18..19 "}"
-  WHITESPACE@19..20 "\n"
-  STRUCT@20..49
-    STRUCT_KW@20..26 "struct"
-    WHITESPACE@26..27 " "
-    NAME@27..28
-      IDENT@27..28 "S"
-    WHITESPACE@28..29 " "
-    RECORD_FIELD_LIST@29..49
-      L_CURLY@29..30 "{"
-      WHITESPACE@30..31 " "
-      RECORD_FIELD@31..47
-        VISIBILITY@31..36
-          CRATE_KW@31..36 "crate"
-        WHITESPACE@36..37 " "
-        NAME@37..42
-          IDENT@37..42 "field"
-        COLON@42..43 ":"
-        WHITESPACE@43..44 " "
-        PATH_TYPE@44..47
-          PATH@44..47
-            PATH_SEGMENT@44..47
-              NAME_REF@44..47
-                IDENT@44..47 "u32"
-      WHITESPACE@47..48 " "
-      R_CURLY@48..49 "}"
-  WHITESPACE@49..50 "\n"
-  STRUCT@50..70
-    STRUCT_KW@50..56 "struct"
-    WHITESPACE@56..57 " "
-    NAME@57..58
-      IDENT@57..58 "T"
-    TUPLE_FIELD_LIST@58..69
-      L_PAREN@58..59 "("
-      TUPLE_FIELD@59..68
-        VISIBILITY@59..64
-          CRATE_KW@59..64 "crate"
-        WHITESPACE@64..65 " "
-        PATH_TYPE@65..68
-          PATH@65..68
-            PATH_SEGMENT@65..68
-              NAME_REF@65..68
-                IDENT@65..68 "u32"
-      R_PAREN@68..69 ")"
-    SEMICOLON@69..70 ";"
-  WHITESPACE@70..71 "\n"
+SOURCE_FILE
+  FN
+    VISIBILITY
+      CRATE_KW "crate"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      RECORD_FIELD
+        VISIBILITY
+          CRATE_KW "crate"
+        WHITESPACE " "
+        NAME
+          IDENT "field"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        VISIBILITY
+          CRATE_KW "crate"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.txt b/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.txt
deleted file mode 100644
index 07b0210e44d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-SOURCE_FILE
-  FN
-    VISIBILITY
-      CRATE_KW "crate"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      RECORD_FIELD
-        VISIBILITY
-          CRATE_KW "crate"
-        WHITESPACE " "
-        NAME
-          IDENT "field"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        VISIBILITY
-          CRATE_KW "crate"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0041_trait_item.rast b/crates/parser/test_data/parser/inline/ok/0041_trait_item.rast
index f7814abaa4a..dd7f76eb939 100644
--- a/crates/parser/test_data/parser/inline/ok/0041_trait_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0041_trait_item.rast
@@ -1,31 +1,31 @@
-SOURCE_FILE@0..30
-  TRAIT@0..29
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "T"
-    WHITESPACE@7..8 " "
-    ASSOC_ITEM_LIST@8..29
-      L_CURLY@8..9 "{"
-      WHITESPACE@9..10 " "
-      FN@10..27
-        FN_KW@10..12 "fn"
-        WHITESPACE@12..13 " "
-        NAME@13..16
-          IDENT@13..16 "new"
-        PARAM_LIST@16..18
-          L_PAREN@16..17 "("
-          R_PAREN@17..18 ")"
-        WHITESPACE@18..19 " "
-        RET_TYPE@19..26
-          THIN_ARROW@19..21 "->"
-          WHITESPACE@21..22 " "
-          PATH_TYPE@22..26
-            PATH@22..26
-              PATH_SEGMENT@22..26
-                NAME_REF@22..26
-                  IDENT@22..26 "Self"
-        SEMICOLON@26..27 ";"
-      WHITESPACE@27..28 " "
-      R_CURLY@28..29 "}"
-  WHITESPACE@29..30 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "new"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  SELF_TYPE_KW "Self"
+        SEMICOLON ";"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0041_trait_item.txt b/crates/parser/test_data/parser/inline/ok/0041_trait_item.txt
deleted file mode 100644
index dd7f76eb939..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0041_trait_item.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "new"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  SELF_TYPE_KW "Self"
-        SEMICOLON ";"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0042_call_expr.rast b/crates/parser/test_data/parser/inline/ok/0042_call_expr.rast
index 55619dd016a..19cc8d5ac7c 100644
--- a/crates/parser/test_data/parser/inline/ok/0042_call_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0042_call_expr.rast
@@ -1,148 +1,148 @@
-SOURCE_FILE@0..118
-  FN@0..117
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..117
-      STMT_LIST@9..117
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..27
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          WILDCARD_PAT@19..20
-            UNDERSCORE@19..20 "_"
-          WHITESPACE@20..21 " "
-          EQ@21..22 "="
-          WHITESPACE@22..23 " "
-          CALL_EXPR@23..26
-            PATH_EXPR@23..24
-              PATH@23..24
-                PATH_SEGMENT@23..24
-                  NAME_REF@23..24
-                    IDENT@23..24 "f"
-            ARG_LIST@24..26
-              L_PAREN@24..25 "("
-              R_PAREN@25..26 ")"
-          SEMICOLON@26..27 ";"
-        WHITESPACE@27..32 "\n    "
-        LET_STMT@32..54
-          LET_KW@32..35 "let"
-          WHITESPACE@35..36 " "
-          WILDCARD_PAT@36..37
-            UNDERSCORE@36..37 "_"
-          WHITESPACE@37..38 " "
-          EQ@38..39 "="
-          WHITESPACE@39..40 " "
-          CALL_EXPR@40..53
-            CALL_EXPR@40..46
-              CALL_EXPR@40..43
-                PATH_EXPR@40..41
-                  PATH@40..41
-                    PATH_SEGMENT@40..41
-                      NAME_REF@40..41
-                        IDENT@40..41 "f"
-                ARG_LIST@41..43
-                  L_PAREN@41..42 "("
-                  R_PAREN@42..43 ")"
-              ARG_LIST@43..46
-                L_PAREN@43..44 "("
-                LITERAL@44..45
-                  INT_NUMBER@44..45 "1"
-                R_PAREN@45..46 ")"
-            ARG_LIST@46..53
-              L_PAREN@46..47 "("
-              LITERAL@47..48
-                INT_NUMBER@47..48 "1"
-              COMMA@48..49 ","
-              WHITESPACE@49..50 " "
-              LITERAL@50..51
-                INT_NUMBER@50..51 "2"
-              COMMA@51..52 ","
-              R_PAREN@52..53 ")"
-          SEMICOLON@53..54 ";"
-        WHITESPACE@54..59 "\n    "
-        LET_STMT@59..84
-          LET_KW@59..62 "let"
-          WHITESPACE@62..63 " "
-          WILDCARD_PAT@63..64
-            UNDERSCORE@63..64 "_"
-          WHITESPACE@64..65 " "
-          EQ@65..66 "="
-          WHITESPACE@66..67 " "
-          CALL_EXPR@67..83
-            PATH_EXPR@67..68
-              PATH@67..68
-                PATH_SEGMENT@67..68
-                  NAME_REF@67..68
-                    IDENT@67..68 "f"
-            ARG_LIST@68..83
-              L_PAREN@68..69 "("
-              CALL_EXPR@69..82
-                PATH_EXPR@69..80
-                  PATH@69..80
-                    PATH@69..74
-                      PATH_SEGMENT@69..74
-                        L_ANGLE@69..70 "<"
-                        PATH_TYPE@70..73
-                          PATH@70..73
-                            PATH_SEGMENT@70..73
-                              NAME_REF@70..73
-                                IDENT@70..73 "Foo"
-                        R_ANGLE@73..74 ">"
-                    COLON2@74..76 "::"
-                    PATH_SEGMENT@76..80
-                      NAME_REF@76..80
-                        IDENT@76..80 "func"
-                ARG_LIST@80..82
-                  L_PAREN@80..81 "("
-                  R_PAREN@81..82 ")"
-              R_PAREN@82..83 ")"
-          SEMICOLON@83..84 ";"
-        WHITESPACE@84..89 "\n    "
-        EXPR_STMT@89..115
-          CALL_EXPR@89..114
-            PATH_EXPR@89..90
-              PATH@89..90
-                PATH_SEGMENT@89..90
-                  NAME_REF@89..90
-                    IDENT@89..90 "f"
-            ARG_LIST@90..114
-              L_PAREN@90..91 "("
-              CALL_EXPR@91..113
-                PATH_EXPR@91..111
-                  PATH@91..111
-                    PATH@91..105
-                      PATH_SEGMENT@91..105
-                        L_ANGLE@91..92 "<"
-                        PATH_TYPE@92..95
-                          PATH@92..95
-                            PATH_SEGMENT@92..95
-                              NAME_REF@92..95
-                                IDENT@92..95 "Foo"
-                        WHITESPACE@95..96 " "
-                        AS_KW@96..98 "as"
-                        WHITESPACE@98..99 " "
-                        PATH_TYPE@99..104
-                          PATH@99..104
-                            PATH_SEGMENT@99..104
-                              NAME_REF@99..104
-                                IDENT@99..104 "Trait"
-                        R_ANGLE@104..105 ">"
-                    COLON2@105..107 "::"
-                    PATH_SEGMENT@107..111
-                      NAME_REF@107..111
-                        IDENT@107..111 "func"
-                ARG_LIST@111..113
-                  L_PAREN@111..112 "("
-                  R_PAREN@112..113 ")"
-              R_PAREN@113..114 ")"
-          SEMICOLON@114..115 ";"
-        WHITESPACE@115..116 "\n"
-        R_CURLY@116..117 "}"
-  WHITESPACE@117..118 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "f"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CALL_EXPR
+            CALL_EXPR
+              CALL_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "f"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              ARG_LIST
+                L_PAREN "("
+                LITERAL
+                  INT_NUMBER "1"
+                R_PAREN ")"
+            ARG_LIST
+              L_PAREN "("
+              LITERAL
+                INT_NUMBER "1"
+              COMMA ","
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "2"
+              COMMA ","
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "f"
+            ARG_LIST
+              L_PAREN "("
+              CALL_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        L_ANGLE "<"
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Foo"
+                        R_ANGLE ">"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "func"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "f"
+            ARG_LIST
+              L_PAREN "("
+              CALL_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        L_ANGLE "<"
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Foo"
+                        WHITESPACE " "
+                        AS_KW "as"
+                        WHITESPACE " "
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Trait"
+                        R_ANGLE ">"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "func"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0042_call_expr.txt b/crates/parser/test_data/parser/inline/ok/0042_call_expr.txt
deleted file mode 100644
index 19cc8d5ac7c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0042_call_expr.txt
+++ /dev/null
@@ -1,148 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "f"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CALL_EXPR
-            CALL_EXPR
-              CALL_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "f"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              ARG_LIST
-                L_PAREN "("
-                LITERAL
-                  INT_NUMBER "1"
-                R_PAREN ")"
-            ARG_LIST
-              L_PAREN "("
-              LITERAL
-                INT_NUMBER "1"
-              COMMA ","
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "2"
-              COMMA ","
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "f"
-            ARG_LIST
-              L_PAREN "("
-              CALL_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        L_ANGLE "<"
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Foo"
-                        R_ANGLE ">"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "func"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "f"
-            ARG_LIST
-              L_PAREN "("
-              CALL_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        L_ANGLE "<"
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Foo"
-                        WHITESPACE " "
-                        AS_KW "as"
-                        WHITESPACE " "
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Trait"
-                        R_ANGLE ">"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "func"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0044_block_items.rast b/crates/parser/test_data/parser/inline/ok/0044_block_items.rast
index d5c755d3437..2e4b515cab9 100644
--- a/crates/parser/test_data/parser/inline/ok/0044_block_items.rast
+++ b/crates/parser/test_data/parser/inline/ok/0044_block_items.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..21
-  FN@0..20
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "a"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..20
-      STMT_LIST@7..20
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        FN@9..18
-          FN_KW@9..11 "fn"
-          WHITESPACE@11..12 " "
-          NAME@12..13
-            IDENT@12..13 "b"
-          PARAM_LIST@13..15
-            L_PAREN@13..14 "("
-            R_PAREN@14..15 ")"
-          WHITESPACE@15..16 " "
-          BLOCK_EXPR@16..18
-            STMT_LIST@16..18
-              L_CURLY@16..17 "{"
-              R_CURLY@17..18 "}"
-        WHITESPACE@18..19 " "
-        R_CURLY@19..20 "}"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "a"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        FN
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "b"
+          PARAM_LIST
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0044_block_items.txt b/crates/parser/test_data/parser/inline/ok/0044_block_items.txt
deleted file mode 100644
index 2e4b515cab9..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0044_block_items.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "a"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        FN
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "b"
-          PARAM_LIST
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast b/crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast
index 8f187f2ae64..e9d93a0d0a4 100644
--- a/crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast
+++ b/crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast
@@ -1,48 +1,48 @@
-SOURCE_FILE@0..35
-  FN@0..34
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    GENERIC_PARAM_LIST@6..30
-      L_ANGLE@6..7 "<"
-      TYPE_PARAM@7..29
-        NAME@7..8
-          IDENT@7..8 "F"
-        COLON@8..9 ":"
-        WHITESPACE@9..10 " "
-        TYPE_BOUND_LIST@10..29
-          TYPE_BOUND@10..29
-            PATH_TYPE@10..29
-              PATH@10..29
-                PATH_SEGMENT@10..29
-                  NAME_REF@10..15
-                    IDENT@10..15 "FnMut"
-                  PARAM_LIST@15..29
-                    L_PAREN@15..16 "("
-                    PARAM@16..28
-                      REF_TYPE@16..28
-                        AMP@16..17 "&"
-                        MUT_KW@17..20 "mut"
-                        WHITESPACE@20..21 " "
-                        PATH_TYPE@21..28
-                          PATH@21..28
-                            PATH_SEGMENT@21..28
-                              NAME_REF@21..24
-                                IDENT@21..24 "Foo"
-                              GENERIC_ARG_LIST@24..28
-                                L_ANGLE@24..25 "<"
-                                LIFETIME_ARG@25..27
-                                  LIFETIME@25..27
-                                    LIFETIME_IDENT@25..27 "'a"
-                                R_ANGLE@27..28 ">"
-                    R_PAREN@28..29 ")"
-      R_ANGLE@29..30 ">"
-    PARAM_LIST@30..32
-      L_PAREN@30..31 "("
-      R_PAREN@31..32 ")"
-    BLOCK_EXPR@32..34
-      STMT_LIST@32..34
-        L_CURLY@32..33 "{"
-        R_CURLY@33..34 "}"
-  WHITESPACE@34..35 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "F"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "FnMut"
+                  PARAM_LIST
+                    L_PAREN "("
+                    PARAM
+                      REF_TYPE
+                        AMP "&"
+                        MUT_KW "mut"
+                        WHITESPACE " "
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Foo"
+                              GENERIC_ARG_LIST
+                                L_ANGLE "<"
+                                LIFETIME_ARG
+                                  LIFETIME
+                                    LIFETIME_IDENT "'a"
+                                R_ANGLE ">"
+                    R_PAREN ")"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt b/crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt
deleted file mode 100644
index e9d93a0d0a4..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "F"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "FnMut"
-                  PARAM_LIST
-                    L_PAREN "("
-                    PARAM
-                      REF_TYPE
-                        AMP "&"
-                        MUT_KW "mut"
-                        WHITESPACE " "
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Foo"
-                              GENERIC_ARG_LIST
-                                L_ANGLE "<"
-                                LIFETIME_ARG
-                                  LIFETIME
-                                    LIFETIME_IDENT "'a"
-                                R_ANGLE ">"
-                    R_PAREN ")"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.rast b/crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.rast
index e89284c1405..0129955d136 100644
--- a/crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.rast
@@ -1,20 +1,20 @@
-SOURCE_FILE@0..17
-  TYPE_ALIAS@0..16
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    TUPLE_TYPE@9..15
-      L_PAREN@9..10 "("
-      PATH_TYPE@10..13
-        PATH@10..13
-          PATH_SEGMENT@10..13
-            NAME_REF@10..13
-              IDENT@10..13 "i32"
-      COMMA@13..14 ","
-      R_PAREN@14..15 ")"
-    SEMICOLON@15..16 ";"
-  WHITESPACE@16..17 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "i32"
+      COMMA ","
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.txt b/crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.txt
deleted file mode 100644
index 0129955d136..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0046_singleton_tuple_type.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "i32"
-      COMMA ","
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.rast b/crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.rast
index c65ad4231e1..a059e124ae4 100644
--- a/crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.rast
+++ b/crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.rast
@@ -1,85 +1,85 @@
-SOURCE_FILE@0..58
-  FN@0..26
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    RET_TYPE@9..23
-      THIN_ARROW@9..11 "->"
-      WHITESPACE@11..12 " "
-      PATH_TYPE@12..23
-        PATH@12..23
-          PATH_SEGMENT@12..23
-            NAME_REF@12..15
-              IDENT@12..15 "Box"
-            GENERIC_ARG_LIST@15..23
-              L_ANGLE@15..16 "<"
-              TYPE_ARG@16..22
-                DYN_TRAIT_TYPE@16..22
-                  TYPE_BOUND_LIST@16..22
-                    TYPE_BOUND@16..17
-                      PATH_TYPE@16..17
-                        PATH@16..17
-                          PATH_SEGMENT@16..17
-                            NAME_REF@16..17
-                              IDENT@16..17 "T"
-                    WHITESPACE@17..18 " "
-                    PLUS@18..19 "+"
-                    WHITESPACE@19..20 " "
-                    TYPE_BOUND@20..22
-                      LIFETIME@20..22
-                        LIFETIME_IDENT@20..22 "'f"
-              R_ANGLE@22..23 ">"
-    WHITESPACE@23..24 " "
-    BLOCK_EXPR@24..26
-      STMT_LIST@24..26
-        L_CURLY@24..25 "{"
-        R_CURLY@25..26 "}"
-  WHITESPACE@26..27 "\n"
-  FN@27..57
-    FN_KW@27..29 "fn"
-    WHITESPACE@29..30 " "
-    NAME@30..33
-      IDENT@30..33 "foo"
-    PARAM_LIST@33..35
-      L_PAREN@33..34 "("
-      R_PAREN@34..35 ")"
-    WHITESPACE@35..36 " "
-    RET_TYPE@36..54
-      THIN_ARROW@36..38 "->"
-      WHITESPACE@38..39 " "
-      PATH_TYPE@39..54
-        PATH@39..54
-          PATH_SEGMENT@39..54
-            NAME_REF@39..42
-              IDENT@39..42 "Box"
-            GENERIC_ARG_LIST@42..54
-              L_ANGLE@42..43 "<"
-              TYPE_ARG@43..53
-                DYN_TRAIT_TYPE@43..53
-                  DYN_KW@43..46 "dyn"
-                  WHITESPACE@46..47 " "
-                  TYPE_BOUND_LIST@47..53
-                    TYPE_BOUND@47..48
-                      PATH_TYPE@47..48
-                        PATH@47..48
-                          PATH_SEGMENT@47..48
-                            NAME_REF@47..48
-                              IDENT@47..48 "T"
-                    WHITESPACE@48..49 " "
-                    PLUS@49..50 "+"
-                    WHITESPACE@50..51 " "
-                    TYPE_BOUND@51..53
-                      LIFETIME@51..53
-                        LIFETIME_IDENT@51..53 "'f"
-              R_ANGLE@53..54 ">"
-    WHITESPACE@54..55 " "
-    BLOCK_EXPR@55..57
-      STMT_LIST@55..57
-        L_CURLY@55..56 "{"
-        R_CURLY@56..57 "}"
-  WHITESPACE@57..58 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "Box"
+            GENERIC_ARG_LIST
+              L_ANGLE "<"
+              TYPE_ARG
+                DYN_TRAIT_TYPE
+                  TYPE_BOUND_LIST
+                    TYPE_BOUND
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "T"
+                    WHITESPACE " "
+                    PLUS "+"
+                    WHITESPACE " "
+                    TYPE_BOUND
+                      LIFETIME
+                        LIFETIME_IDENT "'f"
+              R_ANGLE ">"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "Box"
+            GENERIC_ARG_LIST
+              L_ANGLE "<"
+              TYPE_ARG
+                DYN_TRAIT_TYPE
+                  DYN_KW "dyn"
+                  WHITESPACE " "
+                  TYPE_BOUND_LIST
+                    TYPE_BOUND
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "T"
+                    WHITESPACE " "
+                    PLUS "+"
+                    WHITESPACE " "
+                    TYPE_BOUND
+                      LIFETIME
+                        LIFETIME_IDENT "'f"
+              R_ANGLE ">"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.txt b/crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.txt
deleted file mode 100644
index a059e124ae4..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0048_path_type_with_bounds.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "Box"
-            GENERIC_ARG_LIST
-              L_ANGLE "<"
-              TYPE_ARG
-                DYN_TRAIT_TYPE
-                  TYPE_BOUND_LIST
-                    TYPE_BOUND
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "T"
-                    WHITESPACE " "
-                    PLUS "+"
-                    WHITESPACE " "
-                    TYPE_BOUND
-                      LIFETIME
-                        LIFETIME_IDENT "'f"
-              R_ANGLE ">"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "Box"
-            GENERIC_ARG_LIST
-              L_ANGLE "<"
-              TYPE_ARG
-                DYN_TRAIT_TYPE
-                  DYN_KW "dyn"
-                  WHITESPACE " "
-                  TYPE_BOUND_LIST
-                    TYPE_BOUND
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "T"
-                    WHITESPACE " "
-                    PLUS "+"
-                    WHITESPACE " "
-                    TYPE_BOUND
-                      LIFETIME
-                        LIFETIME_IDENT "'f"
-              R_ANGLE ">"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0050_fn_decl.rast b/crates/parser/test_data/parser/inline/ok/0050_fn_decl.rast
index a5bf55131dd..f7fac807f49 100644
--- a/crates/parser/test_data/parser/inline/ok/0050_fn_decl.rast
+++ b/crates/parser/test_data/parser/inline/ok/0050_fn_decl.rast
@@ -1,22 +1,22 @@
-SOURCE_FILE@0..22
-  TRAIT@0..21
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "T"
-    WHITESPACE@7..8 " "
-    ASSOC_ITEM_LIST@8..21
-      L_CURLY@8..9 "{"
-      WHITESPACE@9..10 " "
-      FN@10..19
-        FN_KW@10..12 "fn"
-        WHITESPACE@12..13 " "
-        NAME@13..16
-          IDENT@13..16 "foo"
-        PARAM_LIST@16..18
-          L_PAREN@16..17 "("
-          R_PAREN@17..18 ")"
-        SEMICOLON@18..19 ";"
-      WHITESPACE@19..20 " "
-      R_CURLY@20..21 "}"
-  WHITESPACE@21..22 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0050_fn_decl.txt b/crates/parser/test_data/parser/inline/ok/0050_fn_decl.txt
deleted file mode 100644
index f7fac807f49..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0050_fn_decl.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0051_unit_type.rast b/crates/parser/test_data/parser/inline/ok/0051_unit_type.rast
index 6330dbf9e60..b3df3153546 100644
--- a/crates/parser/test_data/parser/inline/ok/0051_unit_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0051_unit_type.rast
@@ -1,14 +1,14 @@
-SOURCE_FILE@0..13
-  TYPE_ALIAS@0..12
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    TUPLE_TYPE@9..11
-      L_PAREN@9..10 "("
-      R_PAREN@10..11 ")"
-    SEMICOLON@11..12 ";"
-  WHITESPACE@12..13 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0051_unit_type.txt b/crates/parser/test_data/parser/inline/ok/0051_unit_type.txt
deleted file mode 100644
index b3df3153546..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0051_unit_type.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0052_path_type.rast b/crates/parser/test_data/parser/inline/ok/0052_path_type.rast
index 46a103d5baf..d498d372189 100644
--- a/crates/parser/test_data/parser/inline/ok/0052_path_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0052_path_type.rast
@@ -1,72 +1,72 @@
-SOURCE_FILE@0..71
-  TYPE_ALIAS@0..13
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..12
-      PATH@9..12
-        PATH_SEGMENT@9..12
-          NAME_REF@9..12
-            IDENT@9..12 "Foo"
-    SEMICOLON@12..13 ";"
-  WHITESPACE@13..14 "\n"
-  TYPE_ALIAS@14..29
-    TYPE_KW@14..18 "type"
-    WHITESPACE@18..19 " "
-    NAME@19..20
-      IDENT@19..20 "B"
-    WHITESPACE@20..21 " "
-    EQ@21..22 "="
-    WHITESPACE@22..23 " "
-    PATH_TYPE@23..28
-      PATH@23..28
-        PATH_SEGMENT@23..28
-          COLON2@23..25 "::"
-          NAME_REF@25..28
-            IDENT@25..28 "Foo"
-    SEMICOLON@28..29 ";"
-  WHITESPACE@29..30 "\n"
-  TYPE_ALIAS@30..49
-    TYPE_KW@30..34 "type"
-    WHITESPACE@34..35 " "
-    NAME@35..36
-      IDENT@35..36 "C"
-    WHITESPACE@36..37 " "
-    EQ@37..38 "="
-    WHITESPACE@38..39 " "
-    PATH_TYPE@39..48
-      PATH@39..48
-        PATH@39..43
-          PATH_SEGMENT@39..43
-            NAME_REF@39..43
-              SELF_KW@39..43 "self"
-        COLON2@43..45 "::"
-        PATH_SEGMENT@45..48
-          NAME_REF@45..48
-            IDENT@45..48 "Foo"
-    SEMICOLON@48..49 ";"
-  WHITESPACE@49..50 "\n"
-  TYPE_ALIAS@50..70
-    TYPE_KW@50..54 "type"
-    WHITESPACE@54..55 " "
-    NAME@55..56
-      IDENT@55..56 "D"
-    WHITESPACE@56..57 " "
-    EQ@57..58 "="
-    WHITESPACE@58..59 " "
-    PATH_TYPE@59..69
-      PATH@59..69
-        PATH@59..64
-          PATH_SEGMENT@59..64
-            NAME_REF@59..64
-              SUPER_KW@59..64 "super"
-        COLON2@64..66 "::"
-        PATH_SEGMENT@66..69
-          NAME_REF@66..69
-            IDENT@66..69 "Foo"
-    SEMICOLON@69..70 ";"
-  WHITESPACE@70..71 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          COLON2 "::"
+          NAME_REF
+            IDENT "Foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "C"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              SELF_KW "self"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "D"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              SUPER_KW "super"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0052_path_type.txt b/crates/parser/test_data/parser/inline/ok/0052_path_type.txt
deleted file mode 100644
index d498d372189..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0052_path_type.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          COLON2 "::"
-          NAME_REF
-            IDENT "Foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "C"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              SELF_KW "self"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "D"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              SUPER_KW "super"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0053_path_expr.rast b/crates/parser/test_data/parser/inline/ok/0053_path_expr.rast
index 7894f66d4c4..abd8accf41c 100644
--- a/crates/parser/test_data/parser/inline/ok/0053_path_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0053_path_expr.rast
@@ -1,96 +1,96 @@
-SOURCE_FILE@0..91
-  FN@0..90
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..90
-      STMT_LIST@9..90
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..25
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          WILDCARD_PAT@19..20
-            UNDERSCORE@19..20 "_"
-          WHITESPACE@20..21 " "
-          EQ@21..22 "="
-          WHITESPACE@22..23 " "
-          PATH_EXPR@23..24
-            PATH@23..24
-              PATH_SEGMENT@23..24
-                NAME_REF@23..24
-                  IDENT@23..24 "a"
-          SEMICOLON@24..25 ";"
-        WHITESPACE@25..30 "\n    "
-        LET_STMT@30..43
-          LET_KW@30..33 "let"
-          WHITESPACE@33..34 " "
-          WILDCARD_PAT@34..35
-            UNDERSCORE@34..35 "_"
-          WHITESPACE@35..36 " "
-          EQ@36..37 "="
-          WHITESPACE@37..38 " "
-          PATH_EXPR@38..42
-            PATH@38..42
-              PATH@38..39
-                PATH_SEGMENT@38..39
-                  NAME_REF@38..39
-                    IDENT@38..39 "a"
-              COLON2@39..41 "::"
-              PATH_SEGMENT@41..42
-                NAME_REF@41..42
-                  IDENT@41..42 "b"
-          SEMICOLON@42..43 ";"
-        WHITESPACE@43..48 "\n    "
-        LET_STMT@48..65
-          LET_KW@48..51 "let"
-          WHITESPACE@51..52 " "
-          WILDCARD_PAT@52..53
-            UNDERSCORE@52..53 "_"
-          WHITESPACE@53..54 " "
-          EQ@54..55 "="
-          WHITESPACE@55..56 " "
-          PATH_EXPR@56..64
-            PATH@56..64
-              PATH_SEGMENT@56..64
-                COLON2@56..58 "::"
-                NAME_REF@58..59
-                  IDENT@58..59 "a"
-                GENERIC_ARG_LIST@59..64
-                  COLON2@59..61 "::"
-                  L_ANGLE@61..62 "<"
-                  TYPE_ARG@62..63
-                    PATH_TYPE@62..63
-                      PATH@62..63
-                        PATH_SEGMENT@62..63
-                          NAME_REF@62..63
-                            IDENT@62..63 "b"
-                  R_ANGLE@63..64 ">"
-          SEMICOLON@64..65 ";"
-        WHITESPACE@65..70 "\n    "
-        LET_STMT@70..88
-          LET_KW@70..73 "let"
-          WHITESPACE@73..74 " "
-          WILDCARD_PAT@74..75
-            UNDERSCORE@74..75 "_"
-          WHITESPACE@75..76 " "
-          EQ@76..77 "="
-          WHITESPACE@77..78 " "
-          MACRO_CALL@78..87
-            PATH@78..84
-              PATH_SEGMENT@78..84
-                NAME_REF@78..84
-                  IDENT@78..84 "format"
-            BANG@84..85 "!"
-            TOKEN_TREE@85..87
-              L_PAREN@85..86 "("
-              R_PAREN@86..87 ")"
-          SEMICOLON@87..88 ";"
-        WHITESPACE@88..89 "\n"
-        R_CURLY@89..90 "}"
-  WHITESPACE@90..91 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "a"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PATH_EXPR
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "b"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "a"
+                GENERIC_ARG_LIST
+                  COLON2 "::"
+                  L_ANGLE "<"
+                  TYPE_ARG
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "b"
+                  R_ANGLE ">"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          MACRO_CALL
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "format"
+            BANG "!"
+            TOKEN_TREE
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0053_path_expr.txt b/crates/parser/test_data/parser/inline/ok/0053_path_expr.txt
deleted file mode 100644
index abd8accf41c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0053_path_expr.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "a"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PATH_EXPR
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "b"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "a"
-                GENERIC_ARG_LIST
-                  COLON2 "::"
-                  L_ANGLE "<"
-                  TYPE_ARG
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "b"
-                  R_ANGLE ">"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          MACRO_CALL
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "format"
-            BANG "!"
-            TOKEN_TREE
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.rast b/crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.rast
index 453bef31584..639ee0eb777 100644
--- a/crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.rast
+++ b/crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.rast
@@ -1,33 +1,33 @@
-SOURCE_FILE@0..28
-  STRUCT@0..27
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..27
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..11 " "
-      RECORD_FIELD@11..25
-        ATTR@11..18
-          POUND@11..12 "#"
-          L_BRACK@12..13 "["
-          META@13..17
-            PATH@13..17
-              PATH_SEGMENT@13..17
-                NAME_REF@13..17
-                  IDENT@13..17 "attr"
-          R_BRACK@17..18 "]"
-        WHITESPACE@18..19 " "
-        NAME@19..20
-          IDENT@19..20 "f"
-        COLON@20..21 ":"
-        WHITESPACE@21..22 " "
-        PATH_TYPE@22..25
-          PATH@22..25
-            PATH_SEGMENT@22..25
-              NAME_REF@22..25
-                IDENT@22..25 "f32"
-      WHITESPACE@25..26 " "
-      R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      RECORD_FIELD
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "attr"
+          R_BRACK "]"
+        WHITESPACE " "
+        NAME
+          IDENT "f"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "f32"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.txt b/crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.txt
deleted file mode 100644
index 639ee0eb777..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0054_record_field_attrs.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      RECORD_FIELD
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "attr"
-          R_BRACK "]"
-        WHITESPACE " "
-        NAME
-          IDENT "f"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "f32"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0055_literal_pattern.rast b/crates/parser/test_data/parser/inline/ok/0055_literal_pattern.rast
index 97e2d31d1c1..c83ea7ade71 100644
--- a/crates/parser/test_data/parser/inline/ok/0055_literal_pattern.rast
+++ b/crates/parser/test_data/parser/inline/ok/0055_literal_pattern.rast
@@ -1,77 +1,77 @@
-SOURCE_FILE@0..113
-  FN@0..112
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..112
-      STMT_LIST@10..112
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        MATCH_EXPR@16..110
-          MATCH_KW@16..21 "match"
-          WHITESPACE@21..22 " "
-          TUPLE_EXPR@22..24
-            L_PAREN@22..23 "("
-            R_PAREN@23..24 ")"
-          WHITESPACE@24..25 " "
-          MATCH_ARM_LIST@25..110
-            L_CURLY@25..26 "{"
-            WHITESPACE@26..35 "\n        "
-            MATCH_ARM@35..44
-              LITERAL_PAT@35..37
-                MINUS@35..36 "-"
-                LITERAL@36..37
-                  INT_NUMBER@36..37 "1"
-              WHITESPACE@37..38 " "
-              FAT_ARROW@38..40 "=>"
-              WHITESPACE@40..41 " "
-              TUPLE_EXPR@41..43
-                L_PAREN@41..42 "("
-                R_PAREN@42..43 ")"
-              COMMA@43..44 ","
-            WHITESPACE@44..53 "\n        "
-            MATCH_ARM@53..62
-              LITERAL_PAT@53..55
-                LITERAL@53..55
-                  INT_NUMBER@53..55 "92"
-              WHITESPACE@55..56 " "
-              FAT_ARROW@56..58 "=>"
-              WHITESPACE@58..59 " "
-              TUPLE_EXPR@59..61
-                L_PAREN@59..60 "("
-                R_PAREN@60..61 ")"
-              COMMA@61..62 ","
-            WHITESPACE@62..71 "\n        "
-            MATCH_ARM@71..81
-              LITERAL_PAT@71..74
-                LITERAL@71..74
-                  CHAR@71..74 "'c'"
-              WHITESPACE@74..75 " "
-              FAT_ARROW@75..77 "=>"
-              WHITESPACE@77..78 " "
-              TUPLE_EXPR@78..80
-                L_PAREN@78..79 "("
-                R_PAREN@79..80 ")"
-              COMMA@80..81 ","
-            WHITESPACE@81..90 "\n        "
-            MATCH_ARM@90..104
-              LITERAL_PAT@90..97
-                LITERAL@90..97
-                  STRING@90..97 "\"hello\""
-              WHITESPACE@97..98 " "
-              FAT_ARROW@98..100 "=>"
-              WHITESPACE@100..101 " "
-              TUPLE_EXPR@101..103
-                L_PAREN@101..102 "("
-                R_PAREN@102..103 ")"
-              COMMA@103..104 ","
-            WHITESPACE@104..109 "\n    "
-            R_CURLY@109..110 "}"
-        WHITESPACE@110..111 "\n"
-        R_CURLY@111..112 "}"
-  WHITESPACE@112..113 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              LITERAL_PAT
+                MINUS "-"
+                LITERAL
+                  INT_NUMBER "1"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              LITERAL_PAT
+                LITERAL
+                  INT_NUMBER "92"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              LITERAL_PAT
+                LITERAL
+                  CHAR "'c'"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              LITERAL_PAT
+                LITERAL
+                  STRING "\"hello\""
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0055_literal_pattern.txt b/crates/parser/test_data/parser/inline/ok/0055_literal_pattern.txt
deleted file mode 100644
index c83ea7ade71..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0055_literal_pattern.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              LITERAL_PAT
-                MINUS "-"
-                LITERAL
-                  INT_NUMBER "1"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              LITERAL_PAT
-                LITERAL
-                  INT_NUMBER "92"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              LITERAL_PAT
-                LITERAL
-                  CHAR "'c'"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              LITERAL_PAT
-                LITERAL
-                  STRING "\"hello\""
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0056_where_clause.rast b/crates/parser/test_data/parser/inline/ok/0056_where_clause.rast
index 20fd2c3f433..a3cbe457e1a 100644
--- a/crates/parser/test_data/parser/inline/ok/0056_where_clause.rast
+++ b/crates/parser/test_data/parser/inline/ok/0056_where_clause.rast
@@ -1,117 +1,117 @@
-SOURCE_FILE@0..116
-  FN@0..115
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 "\n"
-    WHERE_CLAUSE@9..112
-      WHERE_KW@9..14 "where"
-      WHITESPACE@14..18 "\n   "
-      WHERE_PRED@18..29
-        LIFETIME@18..20
-          LIFETIME_IDENT@18..20 "'a"
-        COLON@20..21 ":"
-        WHITESPACE@21..22 " "
-        TYPE_BOUND_LIST@22..29
-          TYPE_BOUND@22..24
-            LIFETIME@22..24
-              LIFETIME_IDENT@22..24 "'b"
-          WHITESPACE@24..25 " "
-          PLUS@25..26 "+"
-          WHITESPACE@26..27 " "
-          TYPE_BOUND@27..29
-            LIFETIME@27..29
-              LIFETIME_IDENT@27..29 "'c"
-      COMMA@29..30 ","
-      WHITESPACE@30..34 "\n   "
-      WHERE_PRED@34..59
-        PATH_TYPE@34..35
-          PATH@34..35
-            PATH_SEGMENT@34..35
-              NAME_REF@34..35
-                IDENT@34..35 "T"
-        COLON@35..36 ":"
-        WHITESPACE@36..37 " "
-        TYPE_BOUND_LIST@37..59
-          TYPE_BOUND@37..42
-            PATH_TYPE@37..42
-              PATH@37..42
-                PATH_SEGMENT@37..42
-                  NAME_REF@37..42
-                    IDENT@37..42 "Clone"
-          WHITESPACE@42..43 " "
-          PLUS@43..44 "+"
-          WHITESPACE@44..45 " "
-          TYPE_BOUND@45..49
-            PATH_TYPE@45..49
-              PATH@45..49
-                PATH_SEGMENT@45..49
-                  NAME_REF@45..49
-                    IDENT@45..49 "Copy"
-          WHITESPACE@49..50 " "
-          PLUS@50..51 "+"
-          WHITESPACE@51..52 " "
-          TYPE_BOUND@52..59
-            LIFETIME@52..59
-              LIFETIME_IDENT@52..59 "'static"
-      COMMA@59..60 ","
-      WHITESPACE@60..64 "\n   "
-      WHERE_PRED@64..82
-        PATH_TYPE@64..78
-          PATH@64..78
-            PATH@64..72
-              PATH_SEGMENT@64..72
-                NAME_REF@64..72
-                  IDENT@64..72 "Iterator"
-            COLON2@72..74 "::"
-            PATH_SEGMENT@74..78
-              NAME_REF@74..78
-                IDENT@74..78 "Item"
-        COLON@78..79 ":"
-        WHITESPACE@79..80 " "
-        TYPE_BOUND_LIST@80..82
-          TYPE_BOUND@80..82
-            LIFETIME@80..82
-              LIFETIME_IDENT@80..82 "'a"
-      COMMA@82..83 ","
-      WHITESPACE@83..87 "\n   "
-      WHERE_PRED@87..112
-        PATH_TYPE@87..108
-          PATH@87..108
-            PATH@87..102
-              PATH_SEGMENT@87..102
-                L_ANGLE@87..88 "<"
-                PATH_TYPE@88..89
-                  PATH@88..89
-                    PATH_SEGMENT@88..89
-                      NAME_REF@88..89
-                        IDENT@88..89 "T"
-                WHITESPACE@89..90 " "
-                AS_KW@90..92 "as"
-                WHITESPACE@92..93 " "
-                PATH_TYPE@93..101
-                  PATH@93..101
-                    PATH_SEGMENT@93..101
-                      NAME_REF@93..101
-                        IDENT@93..101 "Iterator"
-                R_ANGLE@101..102 ">"
-            COLON2@102..104 "::"
-            PATH_SEGMENT@104..108
-              NAME_REF@104..108
-                IDENT@104..108 "Item"
-        COLON@108..109 ":"
-        WHITESPACE@109..110 " "
-        TYPE_BOUND_LIST@110..112
-          TYPE_BOUND@110..112
-            LIFETIME@110..112
-              LIFETIME_IDENT@110..112 "'a"
-    WHITESPACE@112..113 "\n"
-    BLOCK_EXPR@113..115
-      STMT_LIST@113..115
-        L_CURLY@113..114 "{"
-        R_CURLY@114..115 "}"
-  WHITESPACE@115..116 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n   "
+      WHERE_PRED
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'b"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'c"
+      COMMA ","
+      WHITESPACE "\n   "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'static"
+      COMMA ","
+      WHITESPACE "\n   "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Iterator"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Item"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+      COMMA ","
+      WHITESPACE "\n   "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH
+              PATH_SEGMENT
+                L_ANGLE "<"
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "T"
+                WHITESPACE " "
+                AS_KW "as"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Iterator"
+                R_ANGLE ">"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Item"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0056_where_clause.txt b/crates/parser/test_data/parser/inline/ok/0056_where_clause.txt
deleted file mode 100644
index a3cbe457e1a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0056_where_clause.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n   "
-      WHERE_PRED
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'b"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'c"
-      COMMA ","
-      WHITESPACE "\n   "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'static"
-      COMMA ","
-      WHITESPACE "\n   "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Iterator"
-            COLON2 "::"
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Item"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-      COMMA ","
-      WHITESPACE "\n   "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH
-              PATH_SEGMENT
-                L_ANGLE "<"
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "T"
-                WHITESPACE " "
-                AS_KW "as"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Iterator"
-                R_ANGLE ">"
-            COLON2 "::"
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Item"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast
index 0eb5af54b88..44c967e8dc5 100644
--- a/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0058_range_pat.rast
@@ -1,251 +1,251 @@
-SOURCE_FILE@0..307
-  FN@0..306
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..306
-      STMT_LIST@10..306
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        EXPR_STMT@16..132
-          MATCH_EXPR@16..132
-            MATCH_KW@16..21 "match"
-            WHITESPACE@21..22 " "
-            LITERAL@22..24
-              INT_NUMBER@22..24 "92"
-            WHITESPACE@24..25 " "
-            MATCH_ARM_LIST@25..132
-              L_CURLY@25..26 "{"
-              WHITESPACE@26..35 "\n        "
-              MATCH_ARM@35..51
-                RANGE_PAT@35..44
-                  LITERAL_PAT@35..36
-                    LITERAL@35..36
-                      INT_NUMBER@35..36 "0"
-                  WHITESPACE@36..37 " "
-                  DOT3@37..40 "..."
-                  WHITESPACE@40..41 " "
-                  LITERAL_PAT@41..44
-                    LITERAL@41..44
-                      INT_NUMBER@41..44 "100"
-                WHITESPACE@44..45 " "
-                FAT_ARROW@45..47 "=>"
-                WHITESPACE@47..48 " "
-                TUPLE_EXPR@48..50
-                  L_PAREN@48..49 "("
-                  R_PAREN@49..50 ")"
-                COMMA@50..51 ","
-              WHITESPACE@51..60 "\n        "
-              MATCH_ARM@60..78
-                RANGE_PAT@60..71
-                  LITERAL_PAT@60..63
-                    LITERAL@60..63
-                      INT_NUMBER@60..63 "101"
-                  WHITESPACE@63..64 " "
-                  DOT2EQ@64..67 "..="
-                  WHITESPACE@67..68 " "
-                  LITERAL_PAT@68..71
-                    LITERAL@68..71
-                      INT_NUMBER@68..71 "200"
-                WHITESPACE@71..72 " "
-                FAT_ARROW@72..74 "=>"
-                WHITESPACE@74..75 " "
-                TUPLE_EXPR@75..77
-                  L_PAREN@75..76 "("
-                  R_PAREN@76..77 ")"
-                COMMA@77..78 ","
-              WHITESPACE@78..87 "\n        "
-              MATCH_ARM@87..104
-                RANGE_PAT@87..97
-                  LITERAL_PAT@87..90
-                    LITERAL@87..90
-                      INT_NUMBER@87..90 "200"
-                  WHITESPACE@90..91 " "
-                  DOT2@91..93 ".."
-                  WHITESPACE@93..94 " "
-                  LITERAL_PAT@94..97
-                    LITERAL@94..97
-                      INT_NUMBER@94..97 "301"
-                WHITESPACE@97..98 " "
-                FAT_ARROW@98..100 "=>"
-                WHITESPACE@100..101 " "
-                TUPLE_EXPR@101..103
-                  L_PAREN@101..102 "("
-                  R_PAREN@102..103 ")"
-                COMMA@103..104 ","
-              WHITESPACE@104..113 "\n        "
-              MATCH_ARM@113..126
-                RANGE_PAT@113..119
-                  LITERAL_PAT@113..116
-                    LITERAL@113..116
-                      INT_NUMBER@113..116 "302"
-                  WHITESPACE@116..117 " "
-                  DOT2@117..119 ".."
-                WHITESPACE@119..120 " "
-                FAT_ARROW@120..122 "=>"
-                WHITESPACE@122..123 " "
-                TUPLE_EXPR@123..125
-                  L_PAREN@123..124 "("
-                  R_PAREN@124..125 ")"
-                COMMA@125..126 ","
-              WHITESPACE@126..131 "\n    "
-              R_CURLY@131..132 "}"
-        WHITESPACE@132..138 "\n\n    "
-        EXPR_STMT@138..220
-          MATCH_EXPR@138..220
-            MATCH_KW@138..143 "match"
-            WHITESPACE@143..144 " "
-            CALL_EXPR@144..158
-              PATH_EXPR@144..148
-                PATH@144..148
-                  PATH_SEGMENT@144..148
-                    NAME_REF@144..148
-                      IDENT@144..148 "Some"
-              ARG_LIST@148..158
-                L_PAREN@148..149 "("
-                CAST_EXPR@149..157
-                  LITERAL@149..151
-                    INT_NUMBER@149..151 "10"
-                  WHITESPACE@151..152 " "
-                  AS_KW@152..154 "as"
-                  WHITESPACE@154..155 " "
-                  PATH_TYPE@155..157
-                    PATH@155..157
-                      PATH_SEGMENT@155..157
-                        NAME_REF@155..157
-                          IDENT@155..157 "u8"
-                R_PAREN@157..158 ")"
-            WHITESPACE@158..159 " "
-            MATCH_ARM_LIST@159..220
-              L_CURLY@159..160 "{"
-              WHITESPACE@160..169 "\n        "
-              MATCH_ARM@169..190
-                OR_PAT@169..183
-                  TUPLE_STRUCT_PAT@169..176
-                    PATH@169..173
-                      PATH_SEGMENT@169..173
-                        NAME_REF@169..173
-                          IDENT@169..173 "Some"
-                    L_PAREN@173..174 "("
-                    LITERAL_PAT@174..175
-                      LITERAL@174..175
-                        INT_NUMBER@174..175 "0"
-                    R_PAREN@175..176 ")"
-                  WHITESPACE@176..177 " "
-                  PIPE@177..178 "|"
-                  WHITESPACE@178..179 " "
-                  IDENT_PAT@179..183
-                    NAME@179..183
-                      IDENT@179..183 "None"
-                WHITESPACE@183..184 " "
-                FAT_ARROW@184..186 "=>"
-                WHITESPACE@186..187 " "
-                TUPLE_EXPR@187..189
-                  L_PAREN@187..188 "("
-                  R_PAREN@188..189 ")"
-                COMMA@189..190 ","
-              WHITESPACE@190..199 "\n        "
-              MATCH_ARM@199..214
-                TUPLE_STRUCT_PAT@199..208
-                  PATH@199..203
-                    PATH_SEGMENT@199..203
-                      NAME_REF@199..203
-                        IDENT@199..203 "Some"
-                  L_PAREN@203..204 "("
-                  RANGE_PAT@204..207
-                    LITERAL_PAT@204..205
-                      LITERAL@204..205
-                        INT_NUMBER@204..205 "1"
-                    DOT2@205..207 ".."
-                  R_PAREN@207..208 ")"
-                WHITESPACE@208..209 " "
-                FAT_ARROW@209..211 "=>"
-                WHITESPACE@211..212 " "
-                TUPLE_EXPR@212..214
-                  L_PAREN@212..213 "("
-                  R_PAREN@213..214 ")"
-              WHITESPACE@214..219 "\n    "
-              R_CURLY@219..220 "}"
-        WHITESPACE@220..226 "\n\n    "
-        MATCH_EXPR@226..304
-          MATCH_KW@226..231 "match"
-          WHITESPACE@231..232 " "
-          TUPLE_EXPR@232..251
-            L_PAREN@232..233 "("
-            CAST_EXPR@233..241
-              LITERAL@233..235
-                INT_NUMBER@233..235 "10"
-              WHITESPACE@235..236 " "
-              AS_KW@236..238 "as"
-              WHITESPACE@238..239 " "
-              PATH_TYPE@239..241
-                PATH@239..241
-                  PATH_SEGMENT@239..241
-                    NAME_REF@239..241
-                      IDENT@239..241 "u8"
-            COMMA@241..242 ","
-            WHITESPACE@242..243 " "
-            CAST_EXPR@243..250
-              LITERAL@243..244
-                INT_NUMBER@243..244 "5"
-              WHITESPACE@244..245 " "
-              AS_KW@245..247 "as"
-              WHITESPACE@247..248 " "
-              PATH_TYPE@248..250
-                PATH@248..250
-                  PATH_SEGMENT@248..250
-                    NAME_REF@248..250
-                      IDENT@248..250 "u8"
-            R_PAREN@250..251 ")"
-          WHITESPACE@251..252 " "
-          MATCH_ARM_LIST@252..304
-            L_CURLY@252..253 "{"
-            WHITESPACE@253..262 "\n        "
-            MATCH_ARM@262..275
-              TUPLE_PAT@262..268
-                L_PAREN@262..263 "("
-                LITERAL_PAT@263..264
-                  LITERAL@263..264
-                    INT_NUMBER@263..264 "0"
-                COMMA@264..265 ","
-                WHITESPACE@265..266 " "
-                WILDCARD_PAT@266..267
-                  UNDERSCORE@266..267 "_"
-                R_PAREN@267..268 ")"
-              WHITESPACE@268..269 " "
-              FAT_ARROW@269..271 "=>"
-              WHITESPACE@271..272 " "
-              TUPLE_EXPR@272..274
-                L_PAREN@272..273 "("
-                R_PAREN@273..274 ")"
-              COMMA@274..275 ","
-            WHITESPACE@275..284 "\n        "
-            MATCH_ARM@284..298
-              TUPLE_PAT@284..292
-                L_PAREN@284..285 "("
-                RANGE_PAT@285..288
-                  LITERAL_PAT@285..286
-                    LITERAL@285..286
-                      INT_NUMBER@285..286 "1"
-                  DOT2@286..288 ".."
-                COMMA@288..289 ","
-                WHITESPACE@289..290 " "
-                WILDCARD_PAT@290..291
-                  UNDERSCORE@290..291 "_"
-                R_PAREN@291..292 ")"
-              WHITESPACE@292..293 " "
-              FAT_ARROW@293..295 "=>"
-              WHITESPACE@295..296 " "
-              TUPLE_EXPR@296..298
-                L_PAREN@296..297 "("
-                R_PAREN@297..298 ")"
-            WHITESPACE@298..303 "\n    "
-            R_CURLY@303..304 "}"
-        WHITESPACE@304..305 "\n"
-        R_CURLY@305..306 "}"
-  WHITESPACE@306..307 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "92"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                RANGE_PAT
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "0"
+                  WHITESPACE " "
+                  DOT3 "..."
+                  WHITESPACE " "
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "100"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                RANGE_PAT
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "101"
+                  WHITESPACE " "
+                  DOT2EQ "..="
+                  WHITESPACE " "
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "200"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                RANGE_PAT
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "200"
+                  WHITESPACE " "
+                  DOT2 ".."
+                  WHITESPACE " "
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "301"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                RANGE_PAT
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "302"
+                  WHITESPACE " "
+                  DOT2 ".."
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Some"
+              ARG_LIST
+                L_PAREN "("
+                CAST_EXPR
+                  LITERAL
+                    INT_NUMBER "10"
+                  WHITESPACE " "
+                  AS_KW "as"
+                  WHITESPACE " "
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "u8"
+                R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                OR_PAT
+                  TUPLE_STRUCT_PAT
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Some"
+                    L_PAREN "("
+                    LITERAL_PAT
+                      LITERAL
+                        INT_NUMBER "0"
+                    R_PAREN ")"
+                  WHITESPACE " "
+                  PIPE "|"
+                  WHITESPACE " "
+                  IDENT_PAT
+                    NAME
+                      IDENT "None"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                TUPLE_STRUCT_PAT
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Some"
+                  L_PAREN "("
+                  RANGE_PAT
+                    LITERAL_PAT
+                      LITERAL
+                        INT_NUMBER "1"
+                    DOT2 ".."
+                  R_PAREN ")"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            CAST_EXPR
+              LITERAL
+                INT_NUMBER "10"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "u8"
+            COMMA ","
+            WHITESPACE " "
+            CAST_EXPR
+              LITERAL
+                INT_NUMBER "5"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "u8"
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              TUPLE_PAT
+                L_PAREN "("
+                LITERAL_PAT
+                  LITERAL
+                    INT_NUMBER "0"
+                COMMA ","
+                WHITESPACE " "
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                R_PAREN ")"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              TUPLE_PAT
+                L_PAREN "("
+                RANGE_PAT
+                  LITERAL_PAT
+                    LITERAL
+                      INT_NUMBER "1"
+                  DOT2 ".."
+                COMMA ","
+                WHITESPACE " "
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                R_PAREN ")"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0058_range_pat.txt b/crates/parser/test_data/parser/inline/ok/0058_range_pat.txt
deleted file mode 100644
index 44c967e8dc5..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0058_range_pat.txt
+++ /dev/null
@@ -1,251 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "92"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                RANGE_PAT
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "0"
-                  WHITESPACE " "
-                  DOT3 "..."
-                  WHITESPACE " "
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "100"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                RANGE_PAT
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "101"
-                  WHITESPACE " "
-                  DOT2EQ "..="
-                  WHITESPACE " "
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "200"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                RANGE_PAT
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "200"
-                  WHITESPACE " "
-                  DOT2 ".."
-                  WHITESPACE " "
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "301"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                RANGE_PAT
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "302"
-                  WHITESPACE " "
-                  DOT2 ".."
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Some"
-              ARG_LIST
-                L_PAREN "("
-                CAST_EXPR
-                  LITERAL
-                    INT_NUMBER "10"
-                  WHITESPACE " "
-                  AS_KW "as"
-                  WHITESPACE " "
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "u8"
-                R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                OR_PAT
-                  TUPLE_STRUCT_PAT
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Some"
-                    L_PAREN "("
-                    LITERAL_PAT
-                      LITERAL
-                        INT_NUMBER "0"
-                    R_PAREN ")"
-                  WHITESPACE " "
-                  PIPE "|"
-                  WHITESPACE " "
-                  IDENT_PAT
-                    NAME
-                      IDENT "None"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                TUPLE_STRUCT_PAT
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Some"
-                  L_PAREN "("
-                  RANGE_PAT
-                    LITERAL_PAT
-                      LITERAL
-                        INT_NUMBER "1"
-                    DOT2 ".."
-                  R_PAREN ")"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            CAST_EXPR
-              LITERAL
-                INT_NUMBER "10"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "u8"
-            COMMA ","
-            WHITESPACE " "
-            CAST_EXPR
-              LITERAL
-                INT_NUMBER "5"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "u8"
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              TUPLE_PAT
-                L_PAREN "("
-                LITERAL_PAT
-                  LITERAL
-                    INT_NUMBER "0"
-                COMMA ","
-                WHITESPACE " "
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                R_PAREN ")"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              TUPLE_PAT
-                L_PAREN "("
-                RANGE_PAT
-                  LITERAL_PAT
-                    LITERAL
-                      INT_NUMBER "1"
-                  DOT2 ".."
-                COMMA ","
-                WHITESPACE " "
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                R_PAREN ")"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.rast b/crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.rast
index 075d49bcc81..94897c2d204 100644
--- a/crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.rast
+++ b/crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.rast
@@ -1,60 +1,60 @@
-SOURCE_FILE@0..83
-  FN@0..82
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..82
-      STMT_LIST@9..82
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        MATCH_EXPR@15..80
-          MATCH_KW@15..20 "match"
-          WHITESPACE@20..21 " "
-          TUPLE_EXPR@21..23
-            L_PAREN@21..22 "("
-            R_PAREN@22..23 ")"
-          WHITESPACE@23..24 " "
-          MATCH_ARM_LIST@24..80
-            L_CURLY@24..25 "{"
-            WHITESPACE@25..34 "\n        "
-            MATCH_ARM@34..42
-              WILDCARD_PAT@34..35
-                UNDERSCORE@34..35 "_"
-              WHITESPACE@35..36 " "
-              FAT_ARROW@36..38 "=>"
-              WHITESPACE@38..39 " "
-              TUPLE_EXPR@39..41
-                L_PAREN@39..40 "("
-                R_PAREN@40..41 ")"
-              COMMA@41..42 ","
-            WHITESPACE@42..51 "\n        "
-            MATCH_ARM@51..58
-              WILDCARD_PAT@51..52
-                UNDERSCORE@51..52 "_"
-              WHITESPACE@52..53 " "
-              FAT_ARROW@53..55 "=>"
-              WHITESPACE@55..56 " "
-              BLOCK_EXPR@56..58
-                STMT_LIST@56..58
-                  L_CURLY@56..57 "{"
-                  R_CURLY@57..58 "}"
-            WHITESPACE@58..67 "\n        "
-            MATCH_ARM@67..74
-              WILDCARD_PAT@67..68
-                UNDERSCORE@67..68 "_"
-              WHITESPACE@68..69 " "
-              FAT_ARROW@69..71 "=>"
-              WHITESPACE@71..72 " "
-              TUPLE_EXPR@72..74
-                L_PAREN@72..73 "("
-                R_PAREN@73..74 ")"
-            WHITESPACE@74..79 "\n    "
-            R_CURLY@79..80 "}"
-        WHITESPACE@80..81 "\n"
-        R_CURLY@81..82 "}"
-  WHITESPACE@82..83 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  R_CURLY "}"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.txt b/crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.txt
deleted file mode 100644
index 94897c2d204..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0059_match_arms_commas.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  R_CURLY "}"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0060_extern_crate.rast b/crates/parser/test_data/parser/inline/ok/0060_extern_crate.rast
index 25e1777d1ab..0a660957d15 100644
--- a/crates/parser/test_data/parser/inline/ok/0060_extern_crate.rast
+++ b/crates/parser/test_data/parser/inline/ok/0060_extern_crate.rast
@@ -1,10 +1,10 @@
-SOURCE_FILE@0..18
-  EXTERN_CRATE@0..17
-    EXTERN_KW@0..6 "extern"
-    WHITESPACE@6..7 " "
-    CRATE_KW@7..12 "crate"
-    WHITESPACE@12..13 " "
-    NAME_REF@13..16
-      IDENT@13..16 "foo"
-    SEMICOLON@16..17 ";"
-  WHITESPACE@17..18 "\n"
+SOURCE_FILE
+  EXTERN_CRATE
+    EXTERN_KW "extern"
+    WHITESPACE " "
+    CRATE_KW "crate"
+    WHITESPACE " "
+    NAME_REF
+      IDENT "foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0060_extern_crate.txt b/crates/parser/test_data/parser/inline/ok/0060_extern_crate.txt
deleted file mode 100644
index 0a660957d15..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0060_extern_crate.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-SOURCE_FILE
-  EXTERN_CRATE
-    EXTERN_KW "extern"
-    WHITESPACE " "
-    CRATE_KW "crate"
-    WHITESPACE " "
-    NAME_REF
-      IDENT "foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast b/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast
index baa12c92d51..9997d0ae348 100644
--- a/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast
+++ b/crates/parser/test_data/parser/inline/ok/0061_record_lit.rast
@@ -1,125 +1,125 @@
-SOURCE_FILE@0..112
-  FN@0..111
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..111
-      STMT_LIST@9..111
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..20
-          RECORD_EXPR@15..19
-            PATH@15..16
-              PATH_SEGMENT@15..16
-                NAME_REF@15..16
-                  IDENT@15..16 "S"
-            WHITESPACE@16..17 " "
-            RECORD_EXPR_FIELD_LIST@17..19
-              L_CURLY@17..18 "{"
-              R_CURLY@18..19 "}"
-          SEMICOLON@19..20 ";"
-        WHITESPACE@20..25 "\n    "
-        EXPR_STMT@25..41
-          RECORD_EXPR@25..40
-            PATH@25..26
-              PATH_SEGMENT@25..26
-                NAME_REF@25..26
-                  IDENT@25..26 "S"
-            WHITESPACE@26..27 " "
-            RECORD_EXPR_FIELD_LIST@27..40
-              L_CURLY@27..28 "{"
-              WHITESPACE@28..29 " "
-              RECORD_EXPR_FIELD@29..30
-                PATH_EXPR@29..30
-                  PATH@29..30
-                    PATH_SEGMENT@29..30
-                      NAME_REF@29..30
-                        IDENT@29..30 "x"
-              COMMA@30..31 ","
-              WHITESPACE@31..32 " "
-              RECORD_EXPR_FIELD@32..37
-                NAME_REF@32..33
-                  IDENT@32..33 "y"
-                COLON@33..34 ":"
-                WHITESPACE@34..35 " "
-                LITERAL@35..37
-                  INT_NUMBER@35..37 "32"
-              COMMA@37..38 ","
-              WHITESPACE@38..39 " "
-              R_CURLY@39..40 "}"
-          SEMICOLON@40..41 ";"
-        WHITESPACE@41..46 "\n    "
-        EXPR_STMT@46..83
-          RECORD_EXPR@46..82
-            PATH@46..47
-              PATH_SEGMENT@46..47
-                NAME_REF@46..47
-                  IDENT@46..47 "S"
-            WHITESPACE@47..48 " "
-            RECORD_EXPR_FIELD_LIST@48..82
-              L_CURLY@48..49 "{"
-              WHITESPACE@49..50 " "
-              RECORD_EXPR_FIELD@50..51
-                PATH_EXPR@50..51
-                  PATH@50..51
-                    PATH_SEGMENT@50..51
-                      NAME_REF@50..51
-                        IDENT@50..51 "x"
-              COMMA@51..52 ","
-              WHITESPACE@52..53 " "
-              RECORD_EXPR_FIELD@53..58
-                NAME_REF@53..54
-                  IDENT@53..54 "y"
-                COLON@54..55 ":"
-                WHITESPACE@55..56 " "
-                LITERAL@56..58
-                  INT_NUMBER@56..58 "32"
-              COMMA@58..59 ","
-              WHITESPACE@59..60 " "
-              DOT2@60..62 ".."
-              CALL_EXPR@62..80
-                PATH_EXPR@62..78
-                  PATH@62..78
-                    PATH@62..69
-                      PATH_SEGMENT@62..69
-                        NAME_REF@62..69
-                          IDENT@62..69 "Default"
-                    COLON2@69..71 "::"
-                    PATH_SEGMENT@71..78
-                      NAME_REF@71..78
-                        IDENT@71..78 "default"
-                ARG_LIST@78..80
-                  L_PAREN@78..79 "("
-                  R_PAREN@79..80 ")"
-              WHITESPACE@80..81 " "
-              R_CURLY@81..82 "}"
-          SEMICOLON@82..83 ";"
-        WHITESPACE@83..88 "\n    "
-        EXPR_STMT@88..109
-          RECORD_EXPR@88..108
-            PATH@88..99
-              PATH_SEGMENT@88..99
-                NAME_REF@88..99
-                  IDENT@88..99 "TupleStruct"
-            WHITESPACE@99..100 " "
-            RECORD_EXPR_FIELD_LIST@100..108
-              L_CURLY@100..101 "{"
-              WHITESPACE@101..102 " "
-              RECORD_EXPR_FIELD@102..106
-                NAME_REF@102..103
-                  INT_NUMBER@102..103 "0"
-                COLON@103..104 ":"
-                WHITESPACE@104..105 " "
-                LITERAL@105..106
-                  INT_NUMBER@105..106 "1"
-              WHITESPACE@106..107 " "
-              R_CURLY@107..108 "}"
-          SEMICOLON@108..109 ";"
-        WHITESPACE@109..110 "\n"
-        R_CURLY@110..111 "}"
-  WHITESPACE@111..112 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RECORD_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_EXPR_FIELD_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RECORD_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_EXPR_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_EXPR_FIELD
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "x"
+              COMMA ","
+              WHITESPACE " "
+              RECORD_EXPR_FIELD
+                NAME_REF
+                  IDENT "y"
+                COLON ":"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "32"
+              COMMA ","
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RECORD_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_EXPR_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_EXPR_FIELD
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "x"
+              COMMA ","
+              WHITESPACE " "
+              RECORD_EXPR_FIELD
+                NAME_REF
+                  IDENT "y"
+                COLON ":"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "32"
+              COMMA ","
+              WHITESPACE " "
+              DOT2 ".."
+              CALL_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Default"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "default"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RECORD_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "TupleStruct"
+            WHITESPACE " "
+            RECORD_EXPR_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_EXPR_FIELD
+                NAME_REF
+                  INT_NUMBER "0"
+                COLON ":"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "1"
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0061_record_lit.txt b/crates/parser/test_data/parser/inline/ok/0061_record_lit.txt
deleted file mode 100644
index 9997d0ae348..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0061_record_lit.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RECORD_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_EXPR_FIELD_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RECORD_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_EXPR_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_EXPR_FIELD
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "x"
-              COMMA ","
-              WHITESPACE " "
-              RECORD_EXPR_FIELD
-                NAME_REF
-                  IDENT "y"
-                COLON ":"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "32"
-              COMMA ","
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RECORD_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_EXPR_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_EXPR_FIELD
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "x"
-              COMMA ","
-              WHITESPACE " "
-              RECORD_EXPR_FIELD
-                NAME_REF
-                  IDENT "y"
-                COLON ":"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "32"
-              COMMA ","
-              WHITESPACE " "
-              DOT2 ".."
-              CALL_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Default"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "default"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RECORD_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "TupleStruct"
-            WHITESPACE " "
-            RECORD_EXPR_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_EXPR_FIELD
-                NAME_REF
-                  INT_NUMBER "0"
-                COLON ":"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "1"
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0062_mod_contents.rast b/crates/parser/test_data/parser/inline/ok/0062_mod_contents.rast
index 2deaf07030a..5f60e03d446 100644
--- a/crates/parser/test_data/parser/inline/ok/0062_mod_contents.rast
+++ b/crates/parser/test_data/parser/inline/ok/0062_mod_contents.rast
@@ -1,65 +1,65 @@
-SOURCE_FILE@0..70
-  FN@0..11
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..11
-      STMT_LIST@9..11
-        L_CURLY@9..10 "{"
-        R_CURLY@10..11 "}"
-  WHITESPACE@11..12 "\n"
-  MACRO_RULES@12..31
-    MACRO_RULES_KW@12..23 "macro_rules"
-    BANG@23..24 "!"
-    WHITESPACE@24..25 " "
-    NAME@25..28
-      IDENT@25..28 "foo"
-    WHITESPACE@28..29 " "
-    TOKEN_TREE@29..31
-      L_CURLY@29..30 "{"
-      R_CURLY@30..31 "}"
-  WHITESPACE@31..32 "\n"
-  MACRO_CALL@32..44
-    PATH@32..40
-      PATH@32..35
-        PATH_SEGMENT@32..35
-          NAME_REF@32..35
-            IDENT@32..35 "foo"
-      COLON2@35..37 "::"
-      PATH_SEGMENT@37..40
-        NAME_REF@37..40
-          IDENT@37..40 "bar"
-    BANG@40..41 "!"
-    TOKEN_TREE@41..43
-      L_PAREN@41..42 "("
-      R_PAREN@42..43 ")"
-    SEMICOLON@43..44 ";"
-  WHITESPACE@44..45 "\n"
-  MACRO_CALL@45..59
-    PATH@45..55
-      PATH@45..50
-        PATH_SEGMENT@45..50
-          NAME_REF@45..50
-            SUPER_KW@45..50 "super"
-      COLON2@50..52 "::"
-      PATH_SEGMENT@52..55
-        NAME_REF@52..55
-          IDENT@52..55 "baz"
-    BANG@55..56 "!"
-    WHITESPACE@56..57 " "
-    TOKEN_TREE@57..59
-      L_CURLY@57..58 "{"
-      R_CURLY@58..59 "}"
-  WHITESPACE@59..60 "\n"
-  STRUCT@60..69
-    STRUCT_KW@60..66 "struct"
-    WHITESPACE@66..67 " "
-    NAME@67..68
-      IDENT@67..68 "S"
-    SEMICOLON@68..69 ";"
-  WHITESPACE@69..70 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  MACRO_RULES
+    MACRO_RULES_KW "macro_rules"
+    BANG "!"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    WHITESPACE " "
+    TOKEN_TREE
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  MACRO_CALL
+    PATH
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+      COLON2 "::"
+      PATH_SEGMENT
+        NAME_REF
+          IDENT "bar"
+    BANG "!"
+    TOKEN_TREE
+      L_PAREN "("
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  MACRO_CALL
+    PATH
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            SUPER_KW "super"
+      COLON2 "::"
+      PATH_SEGMENT
+        NAME_REF
+          IDENT "baz"
+    BANG "!"
+    WHITESPACE " "
+    TOKEN_TREE
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0062_mod_contents.txt b/crates/parser/test_data/parser/inline/ok/0062_mod_contents.txt
deleted file mode 100644
index 5f60e03d446..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0062_mod_contents.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  MACRO_RULES
-    MACRO_RULES_KW "macro_rules"
-    BANG "!"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    WHITESPACE " "
-    TOKEN_TREE
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  MACRO_CALL
-    PATH
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-      COLON2 "::"
-      PATH_SEGMENT
-        NAME_REF
-          IDENT "bar"
-    BANG "!"
-    TOKEN_TREE
-      L_PAREN "("
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  MACRO_CALL
-    PATH
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            SUPER_KW "super"
-      COLON2 "::"
-      PATH_SEGMENT
-        NAME_REF
-          IDENT "baz"
-    BANG "!"
-    WHITESPACE " "
-    TOKEN_TREE
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.rast b/crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.rast
index 4ab352223b4..805052fbcae 100644
--- a/crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.rast
@@ -1,23 +1,23 @@
-SOURCE_FILE@0..20
-  IMPL@0..19
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    BANG@5..6 "!"
-    PATH_TYPE@6..10
-      PATH@6..10
-        PATH_SEGMENT@6..10
-          NAME_REF@6..10
-            IDENT@6..10 "Send"
-    WHITESPACE@10..11 " "
-    FOR_KW@11..14 "for"
-    WHITESPACE@14..15 " "
-    PATH_TYPE@15..16
-      PATH@15..16
-        PATH_SEGMENT@15..16
-          NAME_REF@15..16
-            IDENT@15..16 "S"
-    WHITESPACE@16..17 " "
-    ASSOC_ITEM_LIST@17..19
-      L_CURLY@17..18 "{"
-      R_CURLY@18..19 "}"
-  WHITESPACE@19..20 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    BANG "!"
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Send"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.txt b/crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.txt
deleted file mode 100644
index 805052fbcae..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0063_impl_item_neg.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    BANG "!"
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Send"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0064_if_expr.rast b/crates/parser/test_data/parser/inline/ok/0064_if_expr.rast
index 5d8a8620cfe..e2e964e44d1 100644
--- a/crates/parser/test_data/parser/inline/ok/0064_if_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0064_if_expr.rast
@@ -1,132 +1,126 @@
-SOURCE_FILE@0..137
-  FN@0..136
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..136
-      STMT_LIST@9..136
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..26
-          IF_EXPR@15..25
-            IF_KW@15..17 "if"
-            WHITESPACE@17..18 " "
-            CONDITION@18..22
-              LITERAL@18..22
-                TRUE_KW@18..22 "true"
-            WHITESPACE@22..23 " "
-            BLOCK_EXPR@23..25
-              STMT_LIST@23..25
-                L_CURLY@23..24 "{"
-                R_CURLY@24..25 "}"
-          SEMICOLON@25..26 ";"
-        WHITESPACE@26..31 "\n    "
-        EXPR_STMT@31..50
-          IF_EXPR@31..49
-            IF_KW@31..33 "if"
-            WHITESPACE@33..34 " "
-            CONDITION@34..38
-              LITERAL@34..38
-                TRUE_KW@34..38 "true"
-            WHITESPACE@38..39 " "
-            BLOCK_EXPR@39..41
-              STMT_LIST@39..41
-                L_CURLY@39..40 "{"
-                R_CURLY@40..41 "}"
-            WHITESPACE@41..42 " "
-            ELSE_KW@42..46 "else"
-            WHITESPACE@46..47 " "
-            BLOCK_EXPR@47..49
-              STMT_LIST@47..49
-                L_CURLY@47..48 "{"
-                R_CURLY@48..49 "}"
-          SEMICOLON@49..50 ";"
-        WHITESPACE@50..55 "\n    "
-        EXPR_STMT@55..91
-          IF_EXPR@55..90
-            IF_KW@55..57 "if"
-            WHITESPACE@57..58 " "
-            CONDITION@58..62
-              LITERAL@58..62
-                TRUE_KW@58..62 "true"
-            WHITESPACE@62..63 " "
-            BLOCK_EXPR@63..65
-              STMT_LIST@63..65
-                L_CURLY@63..64 "{"
-                R_CURLY@64..65 "}"
-            WHITESPACE@65..66 " "
-            ELSE_KW@66..70 "else"
-            WHITESPACE@70..71 " "
-            IF_EXPR@71..90
-              IF_KW@71..73 "if"
-              WHITESPACE@73..74 " "
-              CONDITION@74..79
-                LITERAL@74..79
-                  FALSE_KW@74..79 "false"
-              WHITESPACE@79..80 " "
-              BLOCK_EXPR@80..82
-                STMT_LIST@80..82
-                  L_CURLY@80..81 "{"
-                  R_CURLY@81..82 "}"
-              WHITESPACE@82..83 " "
-              ELSE_KW@83..87 "else"
-              WHITESPACE@87..88 " "
-              BLOCK_EXPR@88..90
-                STMT_LIST@88..90
-                  L_CURLY@88..89 "{"
-                  R_CURLY@89..90 "}"
-          SEMICOLON@90..91 ";"
-        WHITESPACE@91..96 "\n    "
-        EXPR_STMT@96..104
-          IF_EXPR@96..103
-            IF_KW@96..98 "if"
-            WHITESPACE@98..99 " "
-            CONDITION@99..100
-              PATH_EXPR@99..100
-                PATH@99..100
-                  PATH_SEGMENT@99..100
-                    NAME_REF@99..100
-                      IDENT@99..100 "S"
-            WHITESPACE@100..101 " "
-            BLOCK_EXPR@101..103
-              STMT_LIST@101..103
-                L_CURLY@101..102 "{"
-                R_CURLY@102..103 "}"
-          SEMICOLON@103..104 ";"
-        WHITESPACE@104..109 "\n    "
-        EXPR_STMT@109..134
-          IF_EXPR@109..133
-            IF_KW@109..111 "if"
-            WHITESPACE@111..112 " "
-            CONDITION@112..120
-              BLOCK_EXPR@112..120
-                STMT_LIST@112..120
-                  L_CURLY@112..113 "{"
-                  WHITESPACE@113..114 " "
-                  LITERAL@114..118
-                    TRUE_KW@114..118 "true"
-                  WHITESPACE@118..119 " "
-                  R_CURLY@119..120 "}"
-            WHITESPACE@120..121 " "
-            BLOCK_EXPR@121..124
-              STMT_LIST@121..124
-                L_CURLY@121..122 "{"
-                WHITESPACE@122..123 " "
-                R_CURLY@123..124 "}"
-            WHITESPACE@124..125 " "
-            ELSE_KW@125..129 "else"
-            WHITESPACE@129..130 " "
-            BLOCK_EXPR@130..133
-              STMT_LIST@130..133
-                L_CURLY@130..131 "{"
-                WHITESPACE@131..132 " "
-                R_CURLY@132..133 "}"
-          SEMICOLON@133..134 ";"
-        WHITESPACE@134..135 "\n"
-        R_CURLY@135..136 "}"
-  WHITESPACE@136..137 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+            WHITESPACE " "
+            ELSE_KW "else"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+            WHITESPACE " "
+            ELSE_KW "else"
+            WHITESPACE " "
+            IF_EXPR
+              IF_KW "if"
+              WHITESPACE " "
+              LITERAL
+                FALSE_KW "false"
+              WHITESPACE " "
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  R_CURLY "}"
+              WHITESPACE " "
+              ELSE_KW "else"
+              WHITESPACE " "
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "S"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                LITERAL
+                  TRUE_KW "true"
+                WHITESPACE " "
+                R_CURLY "}"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                R_CURLY "}"
+            WHITESPACE " "
+            ELSE_KW "else"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0064_if_expr.txt b/crates/parser/test_data/parser/inline/ok/0064_if_expr.txt
deleted file mode 100644
index e2e964e44d1..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0064_if_expr.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-            WHITESPACE " "
-            ELSE_KW "else"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-            WHITESPACE " "
-            ELSE_KW "else"
-            WHITESPACE " "
-            IF_EXPR
-              IF_KW "if"
-              WHITESPACE " "
-              LITERAL
-                FALSE_KW "false"
-              WHITESPACE " "
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  R_CURLY "}"
-              WHITESPACE " "
-              ELSE_KW "else"
-              WHITESPACE " "
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "S"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                LITERAL
-                  TRUE_KW "true"
-                WHITESPACE " "
-                R_CURLY "}"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                R_CURLY "}"
-            WHITESPACE " "
-            ELSE_KW "else"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.rast b/crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.rast
index 8f76177d1d3..e37d43aac6c 100644
--- a/crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.rast
@@ -1,45 +1,45 @@
-SOURCE_FILE@0..42
-  TYPE_ALIAS@0..41
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    DYN_TRAIT_TYPE@9..40
-      DYN_KW@9..12 "dyn"
-      WHITESPACE@12..13 " "
-      TYPE_BOUND_LIST@13..40
-        TYPE_BOUND@13..35
-          PATH_TYPE@13..35
-            PATH@13..35
-              PATH_SEGMENT@13..35
-                NAME_REF@13..21
-                  IDENT@13..21 "Iterator"
-                GENERIC_ARG_LIST@21..35
-                  L_ANGLE@21..22 "<"
-                  ASSOC_TYPE_ARG@22..34
-                    NAME_REF@22..26
-                      IDENT@22..26 "Item"
-                    EQ@26..27 "="
-                    PATH_TYPE@27..34
-                      PATH@27..34
-                        PATH_SEGMENT@27..34
-                          NAME_REF@27..30
-                            IDENT@27..30 "Foo"
-                          GENERIC_ARG_LIST@30..34
-                            L_ANGLE@30..31 "<"
-                            LIFETIME_ARG@31..33
-                              LIFETIME@31..33
-                                LIFETIME_IDENT@31..33 "'a"
-                            R_ANGLE@33..34 ">"
-                  R_ANGLE@34..35 ">"
-        WHITESPACE@35..36 " "
-        PLUS@36..37 "+"
-        WHITESPACE@37..38 " "
-        TYPE_BOUND@38..40
-          LIFETIME@38..40
-            LIFETIME_IDENT@38..40 "'a"
-    SEMICOLON@40..41 ";"
-  WHITESPACE@41..42 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    DYN_TRAIT_TYPE
+      DYN_KW "dyn"
+      WHITESPACE " "
+      TYPE_BOUND_LIST
+        TYPE_BOUND
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Iterator"
+                GENERIC_ARG_LIST
+                  L_ANGLE "<"
+                  ASSOC_TYPE_ARG
+                    NAME_REF
+                      IDENT "Item"
+                    EQ "="
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "Foo"
+                          GENERIC_ARG_LIST
+                            L_ANGLE "<"
+                            LIFETIME_ARG
+                              LIFETIME
+                                LIFETIME_IDENT "'a"
+                            R_ANGLE ">"
+                  R_ANGLE ">"
+        WHITESPACE " "
+        PLUS "+"
+        WHITESPACE " "
+        TYPE_BOUND
+          LIFETIME
+            LIFETIME_IDENT "'a"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.txt b/crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.txt
deleted file mode 100644
index e37d43aac6c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0065_dyn_trait_type.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    DYN_TRAIT_TYPE
-      DYN_KW "dyn"
-      WHITESPACE " "
-      TYPE_BOUND_LIST
-        TYPE_BOUND
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Iterator"
-                GENERIC_ARG_LIST
-                  L_ANGLE "<"
-                  ASSOC_TYPE_ARG
-                    NAME_REF
-                      IDENT "Item"
-                    EQ "="
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "Foo"
-                          GENERIC_ARG_LIST
-                            L_ANGLE "<"
-                            LIFETIME_ARG
-                              LIFETIME
-                                LIFETIME_IDENT "'a"
-                            R_ANGLE ">"
-                  R_ANGLE ">"
-        WHITESPACE " "
-        PLUS "+"
-        WHITESPACE " "
-        TYPE_BOUND
-          LIFETIME
-            LIFETIME_IDENT "'a"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0066_match_arm.rast b/crates/parser/test_data/parser/inline/ok/0066_match_arm.rast
index 7d8ce82d97b..8189cf0a8e5 100644
--- a/crates/parser/test_data/parser/inline/ok/0066_match_arm.rast
+++ b/crates/parser/test_data/parser/inline/ok/0066_match_arm.rast
@@ -1,152 +1,152 @@
-SOURCE_FILE@0..167
-  FN@0..166
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..166
-      STMT_LIST@9..166
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..164
-          MATCH_EXPR@15..163
-            MATCH_KW@15..20 "match"
-            WHITESPACE@20..21 " "
-            TUPLE_EXPR@21..23
-              L_PAREN@21..22 "("
-              R_PAREN@22..23 ")"
-            WHITESPACE@23..24 " "
-            MATCH_ARM_LIST@24..163
-              L_CURLY@24..25 "{"
-              WHITESPACE@25..34 "\n        "
-              MATCH_ARM@34..42
-                WILDCARD_PAT@34..35
-                  UNDERSCORE@34..35 "_"
-                WHITESPACE@35..36 " "
-                FAT_ARROW@36..38 "=>"
-                WHITESPACE@38..39 " "
-                TUPLE_EXPR@39..41
-                  L_PAREN@39..40 "("
-                  R_PAREN@40..41 ")"
-                COMMA@41..42 ","
-              WHITESPACE@42..51 "\n        "
-              MATCH_ARM@51..84
-                WILDCARD_PAT@51..52
-                  UNDERSCORE@51..52 "_"
-                WHITESPACE@52..53 " "
-                MATCH_GUARD@53..77
-                  IF_KW@53..55 "if"
-                  WHITESPACE@55..56 " "
-                  BIN_EXPR@56..77
-                    PATH_EXPR@56..60
-                      PATH@56..60
-                        PATH_SEGMENT@56..60
-                          NAME_REF@56..60
-                            IDENT@56..60 "Test"
-                    WHITESPACE@60..61 " "
-                    R_ANGLE@61..62 ">"
-                    WHITESPACE@62..63 " "
-                    RECORD_EXPR@63..77
-                      PATH@63..67
-                        PATH_SEGMENT@63..67
-                          NAME_REF@63..67
-                            IDENT@63..67 "Test"
-                      RECORD_EXPR_FIELD_LIST@67..77
-                        L_CURLY@67..68 "{"
-                        RECORD_EXPR_FIELD@68..76
-                          NAME_REF@68..73
-                            IDENT@68..73 "field"
-                          COLON@73..74 ":"
-                          WHITESPACE@74..75 " "
-                          LITERAL@75..76
-                            INT_NUMBER@75..76 "0"
-                        R_CURLY@76..77 "}"
-                WHITESPACE@77..78 " "
-                FAT_ARROW@78..80 "=>"
-                WHITESPACE@80..81 " "
-                TUPLE_EXPR@81..83
-                  L_PAREN@81..82 "("
-                  R_PAREN@82..83 ")"
-                COMMA@83..84 ","
-              WHITESPACE@84..93 "\n        "
-              MATCH_ARM@93..110
-                OR_PAT@93..98
-                  IDENT_PAT@93..94
-                    NAME@93..94
-                      IDENT@93..94 "X"
-                  WHITESPACE@94..95 " "
-                  PIPE@95..96 "|"
-                  WHITESPACE@96..97 " "
-                  IDENT_PAT@97..98
-                    NAME@97..98
-                      IDENT@97..98 "Y"
-                WHITESPACE@98..99 " "
-                MATCH_GUARD@99..103
-                  IF_KW@99..101 "if"
-                  WHITESPACE@101..102 " "
-                  PATH_EXPR@102..103
-                    PATH@102..103
-                      PATH_SEGMENT@102..103
-                        NAME_REF@102..103
-                          IDENT@102..103 "Z"
-                WHITESPACE@103..104 " "
-                FAT_ARROW@104..106 "=>"
-                WHITESPACE@106..107 " "
-                TUPLE_EXPR@107..109
-                  L_PAREN@107..108 "("
-                  R_PAREN@108..109 ")"
-                COMMA@109..110 ","
-              WHITESPACE@110..119 "\n        "
-              MATCH_ARM@119..138
-                PIPE@119..120 "|"
-                WHITESPACE@120..121 " "
-                OR_PAT@121..126
-                  IDENT_PAT@121..122
-                    NAME@121..122
-                      IDENT@121..122 "X"
-                  WHITESPACE@122..123 " "
-                  PIPE@123..124 "|"
-                  WHITESPACE@124..125 " "
-                  IDENT_PAT@125..126
-                    NAME@125..126
-                      IDENT@125..126 "Y"
-                WHITESPACE@126..127 " "
-                MATCH_GUARD@127..131
-                  IF_KW@127..129 "if"
-                  WHITESPACE@129..130 " "
-                  PATH_EXPR@130..131
-                    PATH@130..131
-                      PATH_SEGMENT@130..131
-                        NAME_REF@130..131
-                          IDENT@130..131 "Z"
-                WHITESPACE@131..132 " "
-                FAT_ARROW@132..134 "=>"
-                WHITESPACE@134..135 " "
-                TUPLE_EXPR@135..137
-                  L_PAREN@135..136 "("
-                  R_PAREN@136..137 ")"
-                COMMA@137..138 ","
-              WHITESPACE@138..147 "\n        "
-              MATCH_ARM@147..157
-                PIPE@147..148 "|"
-                WHITESPACE@148..149 " "
-                IDENT_PAT@149..150
-                  NAME@149..150
-                    IDENT@149..150 "X"
-                WHITESPACE@150..151 " "
-                FAT_ARROW@151..153 "=>"
-                WHITESPACE@153..154 " "
-                TUPLE_EXPR@154..156
-                  L_PAREN@154..155 "("
-                  R_PAREN@155..156 ")"
-                COMMA@156..157 ","
-              WHITESPACE@157..162 "\n    "
-              R_CURLY@162..163 "}"
-          SEMICOLON@163..164 ";"
-        WHITESPACE@164..165 "\n"
-        R_CURLY@165..166 "}"
-  WHITESPACE@166..167 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                MATCH_GUARD
+                  IF_KW "if"
+                  WHITESPACE " "
+                  BIN_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "Test"
+                    WHITESPACE " "
+                    R_ANGLE ">"
+                    WHITESPACE " "
+                    RECORD_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "Test"
+                      RECORD_EXPR_FIELD_LIST
+                        L_CURLY "{"
+                        RECORD_EXPR_FIELD
+                          NAME_REF
+                            IDENT "field"
+                          COLON ":"
+                          WHITESPACE " "
+                          LITERAL
+                            INT_NUMBER "0"
+                        R_CURLY "}"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                OR_PAT
+                  IDENT_PAT
+                    NAME
+                      IDENT "X"
+                  WHITESPACE " "
+                  PIPE "|"
+                  WHITESPACE " "
+                  IDENT_PAT
+                    NAME
+                      IDENT "Y"
+                WHITESPACE " "
+                MATCH_GUARD
+                  IF_KW "if"
+                  WHITESPACE " "
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Z"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                PIPE "|"
+                WHITESPACE " "
+                OR_PAT
+                  IDENT_PAT
+                    NAME
+                      IDENT "X"
+                  WHITESPACE " "
+                  PIPE "|"
+                  WHITESPACE " "
+                  IDENT_PAT
+                    NAME
+                      IDENT "Y"
+                WHITESPACE " "
+                MATCH_GUARD
+                  IF_KW "if"
+                  WHITESPACE " "
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Z"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                PIPE "|"
+                WHITESPACE " "
+                IDENT_PAT
+                  NAME
+                    IDENT "X"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n    "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0066_match_arm.txt b/crates/parser/test_data/parser/inline/ok/0066_match_arm.txt
deleted file mode 100644
index 8189cf0a8e5..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0066_match_arm.txt
+++ /dev/null
@@ -1,152 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                MATCH_GUARD
-                  IF_KW "if"
-                  WHITESPACE " "
-                  BIN_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "Test"
-                    WHITESPACE " "
-                    R_ANGLE ">"
-                    WHITESPACE " "
-                    RECORD_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "Test"
-                      RECORD_EXPR_FIELD_LIST
-                        L_CURLY "{"
-                        RECORD_EXPR_FIELD
-                          NAME_REF
-                            IDENT "field"
-                          COLON ":"
-                          WHITESPACE " "
-                          LITERAL
-                            INT_NUMBER "0"
-                        R_CURLY "}"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                OR_PAT
-                  IDENT_PAT
-                    NAME
-                      IDENT "X"
-                  WHITESPACE " "
-                  PIPE "|"
-                  WHITESPACE " "
-                  IDENT_PAT
-                    NAME
-                      IDENT "Y"
-                WHITESPACE " "
-                MATCH_GUARD
-                  IF_KW "if"
-                  WHITESPACE " "
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Z"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                PIPE "|"
-                WHITESPACE " "
-                OR_PAT
-                  IDENT_PAT
-                    NAME
-                      IDENT "X"
-                  WHITESPACE " "
-                  PIPE "|"
-                  WHITESPACE " "
-                  IDENT_PAT
-                    NAME
-                      IDENT "Y"
-                WHITESPACE " "
-                MATCH_GUARD
-                  IF_KW "if"
-                  WHITESPACE " "
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Z"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                PIPE "|"
-                WHITESPACE " "
-                IDENT_PAT
-                  NAME
-                    IDENT "X"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n    "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0067_crate_path.rast b/crates/parser/test_data/parser/inline/ok/0067_crate_path.rast
index 87c0c48dc8b..f71367ae1e4 100644
--- a/crates/parser/test_data/parser/inline/ok/0067_crate_path.rast
+++ b/crates/parser/test_data/parser/inline/ok/0067_crate_path.rast
@@ -1,16 +1,16 @@
-SOURCE_FILE@0..16
-  USE@0..15
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..14
-      PATH@4..14
-        PATH@4..9
-          PATH_SEGMENT@4..9
-            NAME_REF@4..9
-              CRATE_KW@4..9 "crate"
-        COLON2@9..11 "::"
-        PATH_SEGMENT@11..14
-          NAME_REF@11..14
-            IDENT@11..14 "foo"
-    SEMICOLON@14..15 ";"
-  WHITESPACE@15..16 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              CRATE_KW "crate"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0067_crate_path.txt b/crates/parser/test_data/parser/inline/ok/0067_crate_path.txt
deleted file mode 100644
index f71367ae1e4..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0067_crate_path.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              CRATE_KW "crate"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast b/crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast
index 1a7dcd1bc27..e387e14d14f 100644
--- a/crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast
+++ b/crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast
@@ -1,53 +1,53 @@
-SOURCE_FILE@0..44
-  FN@0..43
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..43
-      STMT_LIST@7..43
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..13 "\n    "
-        LET_STMT@13..29
-          LET_KW@13..16 "let"
-          WHITESPACE@16..17 " "
-          WILDCARD_PAT@17..18
-            UNDERSCORE@17..18 "_"
-          WHITESPACE@18..19 " "
-          EQ@19..20 "="
-          WHITESPACE@20..21 " "
-          BIN_EXPR@21..28
-            BLOCK_EXPR@21..24
-              STMT_LIST@21..24
-                L_CURLY@21..22 "{"
-                LITERAL@22..23
-                  INT_NUMBER@22..23 "1"
-                R_CURLY@23..24 "}"
-            WHITESPACE@24..25 " "
-            AMP@25..26 "&"
-            WHITESPACE@26..27 " "
-            LITERAL@27..28
-              INT_NUMBER@27..28 "2"
-          SEMICOLON@28..29 ";"
-        WHITESPACE@29..34 "\n    "
-        EXPR_STMT@34..37
-          BLOCK_EXPR@34..37
-            STMT_LIST@34..37
-              L_CURLY@34..35 "{"
-              LITERAL@35..36
-                INT_NUMBER@35..36 "1"
-              R_CURLY@36..37 "}"
-        WHITESPACE@37..38 " "
-        EXPR_STMT@38..41
-          REF_EXPR@38..40
-            AMP@38..39 "&"
-            LITERAL@39..40
-              INT_NUMBER@39..40 "2"
-          SEMICOLON@40..41 ";"
-        WHITESPACE@41..42 "\n"
-        R_CURLY@42..43 "}"
-  WHITESPACE@43..44 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BIN_EXPR
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                LITERAL
+                  INT_NUMBER "1"
+                R_CURLY "}"
+            WHITESPACE " "
+            AMP "&"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              LITERAL
+                INT_NUMBER "1"
+              R_CURLY "}"
+        WHITESPACE " "
+        EXPR_STMT
+          REF_EXPR
+            AMP "&"
+            LITERAL
+              INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt b/crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
deleted file mode 100644
index e387e14d14f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BIN_EXPR
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                LITERAL
-                  INT_NUMBER "1"
-                R_CURLY "}"
-            WHITESPACE " "
-            AMP "&"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              LITERAL
-                INT_NUMBER "1"
-              R_CURLY "}"
-        WHITESPACE " "
-        EXPR_STMT
-          REF_EXPR
-            AMP "&"
-            LITERAL
-              INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0071_match_expr.rast b/crates/parser/test_data/parser/inline/ok/0071_match_expr.rast
index 2897bedfb75..0d6cd390ea0 100644
--- a/crates/parser/test_data/parser/inline/ok/0071_match_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0071_match_expr.rast
@@ -1,96 +1,96 @@
-SOURCE_FILE@0..97
-  FN@0..96
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..96
-      STMT_LIST@9..96
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..28
-          MATCH_EXPR@15..27
-            MATCH_KW@15..20 "match"
-            WHITESPACE@20..21 " "
-            TUPLE_EXPR@21..23
-              L_PAREN@21..22 "("
-              R_PAREN@22..23 ")"
-            WHITESPACE@23..24 " "
-            MATCH_ARM_LIST@24..27
-              L_CURLY@24..25 "{"
-              WHITESPACE@25..26 " "
-              R_CURLY@26..27 "}"
-          SEMICOLON@27..28 ";"
-        WHITESPACE@28..33 "\n    "
-        EXPR_STMT@33..44
-          MATCH_EXPR@33..43
-            MATCH_KW@33..38 "match"
-            WHITESPACE@38..39 " "
-            PATH_EXPR@39..40
-              PATH@39..40
-                PATH_SEGMENT@39..40
-                  NAME_REF@39..40
-                    IDENT@39..40 "S"
-            WHITESPACE@40..41 " "
-            MATCH_ARM_LIST@41..43
-              L_CURLY@41..42 "{"
-              R_CURLY@42..43 "}"
-          SEMICOLON@43..44 ";"
-        WHITESPACE@44..49 "\n    "
-        EXPR_STMT@49..71
-          MATCH_EXPR@49..70
-            MATCH_KW@49..54 "match"
-            WHITESPACE@54..55 " "
-            BLOCK_EXPR@55..58
-              STMT_LIST@55..58
-                L_CURLY@55..56 "{"
-                WHITESPACE@56..57 " "
-                R_CURLY@57..58 "}"
-            WHITESPACE@58..59 " "
-            MATCH_ARM_LIST@59..70
-              L_CURLY@59..60 "{"
-              WHITESPACE@60..61 " "
-              MATCH_ARM@61..68
-                WILDCARD_PAT@61..62
-                  UNDERSCORE@61..62 "_"
-                WHITESPACE@62..63 " "
-                FAT_ARROW@63..65 "=>"
-                WHITESPACE@65..66 " "
-                TUPLE_EXPR@66..68
-                  L_PAREN@66..67 "("
-                  R_PAREN@67..68 ")"
-              WHITESPACE@68..69 " "
-              R_CURLY@69..70 "}"
-          SEMICOLON@70..71 ";"
-        WHITESPACE@71..76 "\n    "
-        EXPR_STMT@76..94
-          MATCH_EXPR@76..93
-            MATCH_KW@76..81 "match"
-            WHITESPACE@81..82 " "
-            BLOCK_EXPR@82..90
-              STMT_LIST@82..90
-                L_CURLY@82..83 "{"
-                WHITESPACE@83..84 " "
-                RECORD_EXPR@84..88
-                  PATH@84..85
-                    PATH_SEGMENT@84..85
-                      NAME_REF@84..85
-                        IDENT@84..85 "S"
-                  WHITESPACE@85..86 " "
-                  RECORD_EXPR_FIELD_LIST@86..88
-                    L_CURLY@86..87 "{"
-                    R_CURLY@87..88 "}"
-                WHITESPACE@88..89 " "
-                R_CURLY@89..90 "}"
-            WHITESPACE@90..91 " "
-            MATCH_ARM_LIST@91..93
-              L_CURLY@91..92 "{"
-              R_CURLY@92..93 "}"
-          SEMICOLON@93..94 ";"
-        WHITESPACE@94..95 "\n"
-        R_CURLY@95..96 "}"
-  WHITESPACE@96..97 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "S"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                R_CURLY "}"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                RECORD_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "S"
+                  WHITESPACE " "
+                  RECORD_EXPR_FIELD_LIST
+                    L_CURLY "{"
+                    R_CURLY "}"
+                WHITESPACE " "
+                R_CURLY "}"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0071_match_expr.txt b/crates/parser/test_data/parser/inline/ok/0071_match_expr.txt
deleted file mode 100644
index 0d6cd390ea0..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0071_match_expr.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "S"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                R_CURLY "}"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                RECORD_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "S"
-                  WHITESPACE " "
-                  RECORD_EXPR_FIELD_LIST
-                    L_CURLY "{"
-                    R_CURLY "}"
-                WHITESPACE " "
-                R_CURLY "}"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0072_return_expr.rast b/crates/parser/test_data/parser/inline/ok/0072_return_expr.rast
index be96f8f43fd..62cff122026 100644
--- a/crates/parser/test_data/parser/inline/ok/0072_return_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0072_return_expr.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..40
-  FN@0..39
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..39
-      STMT_LIST@9..39
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..22
-          RETURN_EXPR@15..21
-            RETURN_KW@15..21 "return"
-          SEMICOLON@21..22 ";"
-        WHITESPACE@22..27 "\n    "
-        EXPR_STMT@27..37
-          RETURN_EXPR@27..36
-            RETURN_KW@27..33 "return"
-            WHITESPACE@33..34 " "
-            LITERAL@34..36
-              INT_NUMBER@34..36 "92"
-          SEMICOLON@36..37 ";"
-        WHITESPACE@37..38 "\n"
-        R_CURLY@38..39 "}"
-  WHITESPACE@39..40 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RETURN_EXPR
+            RETURN_KW "return"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RETURN_EXPR
+            RETURN_KW "return"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0072_return_expr.txt b/crates/parser/test_data/parser/inline/ok/0072_return_expr.txt
deleted file mode 100644
index 62cff122026..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0072_return_expr.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RETURN_EXPR
-            RETURN_KW "return"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RETURN_EXPR
-            RETURN_KW "return"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.rast b/crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.rast
index 00cce69e6c7..60ac3b3c4af 100644
--- a/crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.rast
+++ b/crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.rast
@@ -1,20 +1,20 @@
-SOURCE_FILE@0..21
-  TYPE_ALIAS@0..20
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..11
-      IDENT@5..11 "Result"
-    GENERIC_PARAM_LIST@11..14
-      L_ANGLE@11..12 "<"
-      TYPE_PARAM@12..13
-        NAME@12..13
-          IDENT@12..13 "T"
-      R_ANGLE@13..14 ">"
-    WHITESPACE@14..15 " "
-    EQ@15..16 "="
-    WHITESPACE@16..17 " "
-    TUPLE_TYPE@17..19
-      L_PAREN@17..18 "("
-      R_PAREN@18..19 ")"
-    SEMICOLON@19..20 ";"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Result"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.txt b/crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.txt
deleted file mode 100644
index 60ac3b3c4af..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0073_type_item_type_params.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Result"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast b/crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast
index 43e85c53a95..950421feb70 100644
--- a/crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast
+++ b/crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast
@@ -1,63 +1,63 @@
-SOURCE_FILE@0..84
-  FN@0..83
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..83
-      STMT_LIST@9..83
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        MATCH_EXPR@15..81
-          MATCH_KW@15..20 "match"
-          WHITESPACE@20..21 " "
-          TUPLE_EXPR@21..23
-            L_PAREN@21..22 "("
-            R_PAREN@22..23 ")"
-          WHITESPACE@23..24 " "
-          MATCH_ARM_LIST@24..81
-            L_CURLY@24..25 "{"
-            WHITESPACE@25..34 "\n        "
-            MATCH_ARM@34..41
-              WILDCARD_PAT@34..35
-                UNDERSCORE@34..35 "_"
-              WHITESPACE@35..36 " "
-              FAT_ARROW@36..38 "=>"
-              WHITESPACE@38..39 " "
-              BLOCK_EXPR@39..41
-                STMT_LIST@39..41
-                  L_CURLY@39..40 "{"
-                  R_CURLY@40..41 "}"
-            WHITESPACE@41..50 "\n        "
-            MATCH_ARM@50..58
-              TUPLE_PAT@50..52
-                L_PAREN@50..51 "("
-                R_PAREN@51..52 ")"
-              WHITESPACE@52..53 " "
-              FAT_ARROW@53..55 "=>"
-              WHITESPACE@55..56 " "
-              BLOCK_EXPR@56..58
-                STMT_LIST@56..58
-                  L_CURLY@56..57 "{"
-                  R_CURLY@57..58 "}"
-            WHITESPACE@58..67 "\n        "
-            MATCH_ARM@67..75
-              SLICE_PAT@67..69
-                L_BRACK@67..68 "["
-                R_BRACK@68..69 "]"
-              WHITESPACE@69..70 " "
-              FAT_ARROW@70..72 "=>"
-              WHITESPACE@72..73 " "
-              BLOCK_EXPR@73..75
-                STMT_LIST@73..75
-                  L_CURLY@73..74 "{"
-                  R_CURLY@74..75 "}"
-            WHITESPACE@75..80 "\n    "
-            R_CURLY@80..81 "}"
-        WHITESPACE@81..82 "\n"
-        R_CURLY@82..83 "}"
-  WHITESPACE@83..84 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  R_CURLY "}"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              TUPLE_PAT
+                L_PAREN "("
+                R_PAREN ")"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  R_CURLY "}"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              SLICE_PAT
+                L_BRACK "["
+                R_BRACK "]"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  R_CURLY "}"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt b/crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
deleted file mode 100644
index 950421feb70..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  R_CURLY "}"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              TUPLE_PAT
-                L_PAREN "("
-                R_PAREN ")"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  R_CURLY "}"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              SLICE_PAT
-                L_BRACK "["
-                R_BRACK "]"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  R_CURLY "}"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0075_block.rast b/crates/parser/test_data/parser/inline/ok/0075_block.rast
index 7a05874313b..a23364d152c 100644
--- a/crates/parser/test_data/parser/inline/ok/0075_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0075_block.rast
@@ -1,90 +1,90 @@
-SOURCE_FILE@0..65
-  FN@0..9
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "a"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..9
-      STMT_LIST@7..9
-        L_CURLY@7..8 "{"
-        R_CURLY@8..9 "}"
-  WHITESPACE@9..10 "\n"
-  FN@10..31
-    FN_KW@10..12 "fn"
-    WHITESPACE@12..13 " "
-    NAME@13..14
-      IDENT@13..14 "b"
-    PARAM_LIST@14..16
-      L_PAREN@14..15 "("
-      R_PAREN@15..16 ")"
-    WHITESPACE@16..17 " "
-    BLOCK_EXPR@17..31
-      STMT_LIST@17..31
-        L_CURLY@17..18 "{"
-        WHITESPACE@18..19 " "
-        LET_STMT@19..29
-          LET_KW@19..22 "let"
-          WHITESPACE@22..23 " "
-          WILDCARD_PAT@23..24
-            UNDERSCORE@23..24 "_"
-          WHITESPACE@24..25 " "
-          EQ@25..26 "="
-          WHITESPACE@26..27 " "
-          LITERAL@27..28
-            INT_NUMBER@27..28 "1"
-          SEMICOLON@28..29 ";"
-        WHITESPACE@29..30 " "
-        R_CURLY@30..31 "}"
-  WHITESPACE@31..32 "\n"
-  FN@32..48
-    FN_KW@32..34 "fn"
-    WHITESPACE@34..35 " "
-    NAME@35..36
-      IDENT@35..36 "c"
-    PARAM_LIST@36..38
-      L_PAREN@36..37 "("
-      R_PAREN@37..38 ")"
-    WHITESPACE@38..39 " "
-    BLOCK_EXPR@39..48
-      STMT_LIST@39..48
-        L_CURLY@39..40 "{"
-        WHITESPACE@40..41 " "
-        EXPR_STMT@41..43
-          LITERAL@41..42
-            INT_NUMBER@41..42 "1"
-          SEMICOLON@42..43 ";"
-        WHITESPACE@43..44 " "
-        EXPR_STMT@44..46
-          LITERAL@44..45
-            INT_NUMBER@44..45 "2"
-          SEMICOLON@45..46 ";"
-        WHITESPACE@46..47 " "
-        R_CURLY@47..48 "}"
-  WHITESPACE@48..49 "\n"
-  FN@49..64
-    FN_KW@49..51 "fn"
-    WHITESPACE@51..52 " "
-    NAME@52..53
-      IDENT@52..53 "d"
-    PARAM_LIST@53..55
-      L_PAREN@53..54 "("
-      R_PAREN@54..55 ")"
-    WHITESPACE@55..56 " "
-    BLOCK_EXPR@56..64
-      STMT_LIST@56..64
-        L_CURLY@56..57 "{"
-        WHITESPACE@57..58 " "
-        EXPR_STMT@58..60
-          LITERAL@58..59
-            INT_NUMBER@58..59 "1"
-          SEMICOLON@59..60 ";"
-        WHITESPACE@60..61 " "
-        LITERAL@61..62
-          INT_NUMBER@61..62 "2"
-        WHITESPACE@62..63 " "
-        R_CURLY@63..64 "}"
-  WHITESPACE@64..65 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "a"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "b"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "c"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          LITERAL
+            INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE " "
+        EXPR_STMT
+          LITERAL
+            INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "d"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          LITERAL
+            INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE " "
+        LITERAL
+          INT_NUMBER "2"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0075_block.txt b/crates/parser/test_data/parser/inline/ok/0075_block.txt
deleted file mode 100644
index a23364d152c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0075_block.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "a"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "b"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "c"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          LITERAL
-            INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE " "
-        EXPR_STMT
-          LITERAL
-            INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "d"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          LITERAL
-            INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE " "
-        LITERAL
-          INT_NUMBER "2"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0076_function_where_clause.rast b/crates/parser/test_data/parser/inline/ok/0076_function_where_clause.rast
index 24e41f79286..a000d7e5928 100644
--- a/crates/parser/test_data/parser/inline/ok/0076_function_where_clause.rast
+++ b/crates/parser/test_data/parser/inline/ok/0076_function_where_clause.rast
@@ -1,40 +1,40 @@
-SOURCE_FILE@0..29
-  FN@0..28
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    GENERIC_PARAM_LIST@6..9
-      L_ANGLE@6..7 "<"
-      TYPE_PARAM@7..8
-        NAME@7..8
-          IDENT@7..8 "T"
-      R_ANGLE@8..9 ">"
-    PARAM_LIST@9..11
-      L_PAREN@9..10 "("
-      R_PAREN@10..11 ")"
-    WHITESPACE@11..12 " "
-    WHERE_CLAUSE@12..25
-      WHERE_KW@12..17 "where"
-      WHITESPACE@17..18 " "
-      WHERE_PRED@18..25
-        PATH_TYPE@18..19
-          PATH@18..19
-            PATH_SEGMENT@18..19
-              NAME_REF@18..19
-                IDENT@18..19 "T"
-        COLON@19..20 ":"
-        WHITESPACE@20..21 " "
-        TYPE_BOUND_LIST@21..25
-          TYPE_BOUND@21..25
-            PATH_TYPE@21..25
-              PATH@21..25
-                PATH_SEGMENT@21..25
-                  NAME_REF@21..25
-                    IDENT@21..25 "Copy"
-    WHITESPACE@25..26 " "
-    BLOCK_EXPR@26..28
-      STMT_LIST@26..28
-        L_CURLY@26..27 "{"
-        R_CURLY@27..28 "}"
-  WHITESPACE@28..29 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0076_function_where_clause.txt b/crates/parser/test_data/parser/inline/ok/0076_function_where_clause.txt
deleted file mode 100644
index a000d7e5928..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0076_function_where_clause.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0077_try_expr.rast b/crates/parser/test_data/parser/inline/ok/0077_try_expr.rast
index 89fcbadbe53..c3aa8c15ded 100644
--- a/crates/parser/test_data/parser/inline/ok/0077_try_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0077_try_expr.rast
@@ -1,26 +1,26 @@
-SOURCE_FILE@0..21
-  FN@0..20
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..20
-      STMT_LIST@9..20
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..18
-          TRY_EXPR@15..17
-            PATH_EXPR@15..16
-              PATH@15..16
-                PATH_SEGMENT@15..16
-                  NAME_REF@15..16
-                    IDENT@15..16 "x"
-            QUESTION@16..17 "?"
-          SEMICOLON@17..18 ";"
-        WHITESPACE@18..19 "\n"
-        R_CURLY@19..20 "}"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          TRY_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+            QUESTION "?"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0077_try_expr.txt b/crates/parser/test_data/parser/inline/ok/0077_try_expr.txt
deleted file mode 100644
index c3aa8c15ded..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0077_try_expr.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          TRY_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-            QUESTION "?"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0078_type_alias.rast b/crates/parser/test_data/parser/inline/ok/0078_type_alias.rast
index 2befc8388ec..c5da799741f 100644
--- a/crates/parser/test_data/parser/inline/ok/0078_type_alias.rast
+++ b/crates/parser/test_data/parser/inline/ok/0078_type_alias.rast
@@ -1,16 +1,16 @@
-SOURCE_FILE@0..16
-  TYPE_ALIAS@0..15
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..8
-      IDENT@5..8 "Foo"
-    WHITESPACE@8..9 " "
-    EQ@9..10 "="
-    WHITESPACE@10..11 " "
-    PATH_TYPE@11..14
-      PATH@11..14
-        PATH_SEGMENT@11..14
-          NAME_REF@11..14
-            IDENT@11..14 "Bar"
-    SEMICOLON@14..15 ";"
-  WHITESPACE@15..16 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Bar"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0078_type_alias.txt b/crates/parser/test_data/parser/inline/ok/0078_type_alias.txt
deleted file mode 100644
index c5da799741f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0078_type_alias.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Bar"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0079_impl_item.rast b/crates/parser/test_data/parser/inline/ok/0079_impl_item.rast
index 6516a78f831..879676309a2 100644
--- a/crates/parser/test_data/parser/inline/ok/0079_impl_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0079_impl_item.rast
@@ -1,14 +1,14 @@
-SOURCE_FILE@0..10
-  IMPL@0..9
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "S"
-    WHITESPACE@6..7 " "
-    ASSOC_ITEM_LIST@7..9
-      L_CURLY@7..8 "{"
-      R_CURLY@8..9 "}"
-  WHITESPACE@9..10 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0079_impl_item.txt b/crates/parser/test_data/parser/inline/ok/0079_impl_item.txt
deleted file mode 100644
index 879676309a2..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0079_impl_item.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0080_postfix_range.rast b/crates/parser/test_data/parser/inline/ok/0080_postfix_range.rast
index b431028a451..3a59cf7b832 100644
--- a/crates/parser/test_data/parser/inline/ok/0080_postfix_range.rast
+++ b/crates/parser/test_data/parser/inline/ok/0080_postfix_range.rast
@@ -1,96 +1,96 @@
-SOURCE_FILE@0..89
-  FN@0..88
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..88
-      STMT_LIST@9..88
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..27
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          IDENT_PAT@19..20
-            NAME@19..20
-              IDENT@19..20 "x"
-          WHITESPACE@20..21 " "
-          EQ@21..22 "="
-          WHITESPACE@22..23 " "
-          RANGE_EXPR@23..26
-            LITERAL@23..24
-              INT_NUMBER@23..24 "1"
-            DOT2@24..26 ".."
-          SEMICOLON@26..27 ";"
-        WHITESPACE@27..32 "\n    "
-        EXPR_STMT@32..54
-          MATCH_EXPR@32..53
-            MATCH_KW@32..37 "match"
-            WHITESPACE@37..38 " "
-            RANGE_EXPR@38..41
-              LITERAL@38..39
-                INT_NUMBER@38..39 "1"
-              DOT2@39..41 ".."
-            WHITESPACE@41..42 " "
-            MATCH_ARM_LIST@42..53
-              L_CURLY@42..43 "{"
-              WHITESPACE@43..44 " "
-              MATCH_ARM@44..51
-                WILDCARD_PAT@44..45
-                  UNDERSCORE@44..45 "_"
-                WHITESPACE@45..46 " "
-                FAT_ARROW@46..48 "=>"
-                WHITESPACE@48..49 " "
-                TUPLE_EXPR@49..51
-                  L_PAREN@49..50 "("
-                  R_PAREN@50..51 ")"
-              WHITESPACE@51..52 " "
-              R_CURLY@52..53 "}"
-          SEMICOLON@53..54 ";"
-        WHITESPACE@54..59 "\n    "
-        EXPR_STMT@59..86
-          MATCH_EXPR@59..85
-            MATCH_KW@59..64 "match"
-            WHITESPACE@64..65 " "
-            RANGE_EXPR@65..73
-              METHOD_CALL_EXPR@65..70
-                PATH_EXPR@65..66
-                  PATH@65..66
-                    PATH_SEGMENT@65..66
-                      NAME_REF@65..66
-                        IDENT@65..66 "a"
-                DOT@66..67 "."
-                NAME_REF@67..68
-                  IDENT@67..68 "b"
-                ARG_LIST@68..70
-                  L_PAREN@68..69 "("
-                  R_PAREN@69..70 ")"
-              DOT2@70..72 ".."
-              PATH_EXPR@72..73
-                PATH@72..73
-                  PATH_SEGMENT@72..73
-                    NAME_REF@72..73
-                      IDENT@72..73 "S"
-            WHITESPACE@73..74 " "
-            MATCH_ARM_LIST@74..85
-              L_CURLY@74..75 "{"
-              WHITESPACE@75..76 " "
-              MATCH_ARM@76..83
-                WILDCARD_PAT@76..77
-                  UNDERSCORE@76..77 "_"
-                WHITESPACE@77..78 " "
-                FAT_ARROW@78..80 "=>"
-                WHITESPACE@80..81 " "
-                TUPLE_EXPR@81..83
-                  L_PAREN@81..82 "("
-                  R_PAREN@82..83 ")"
-              WHITESPACE@83..84 " "
-              R_CURLY@84..85 "}"
-          SEMICOLON@85..86 ";"
-        WHITESPACE@86..87 "\n"
-        R_CURLY@87..88 "}"
-  WHITESPACE@88..89 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          RANGE_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            DOT2 ".."
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            RANGE_EXPR
+              LITERAL
+                INT_NUMBER "1"
+              DOT2 ".."
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            RANGE_EXPR
+              METHOD_CALL_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "a"
+                DOT "."
+                NAME_REF
+                  IDENT "b"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              DOT2 ".."
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "S"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE " "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0080_postfix_range.txt b/crates/parser/test_data/parser/inline/ok/0080_postfix_range.txt
deleted file mode 100644
index 3a59cf7b832..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0080_postfix_range.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          RANGE_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            DOT2 ".."
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            RANGE_EXPR
-              LITERAL
-                INT_NUMBER "1"
-              DOT2 ".."
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            RANGE_EXPR
-              METHOD_CALL_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "a"
-                DOT "."
-                NAME_REF
-                  IDENT "b"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              DOT2 ".."
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "S"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE " "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0081_for_type.rast b/crates/parser/test_data/parser/inline/ok/0081_for_type.rast
index 7958e32e509..7600457a9b8 100644
--- a/crates/parser/test_data/parser/inline/ok/0081_for_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0081_for_type.rast
@@ -1,117 +1,117 @@
-SOURCE_FILE@0..121
-  TYPE_ALIAS@0..28
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    FOR_TYPE@9..27
-      FOR_KW@9..12 "for"
-      GENERIC_PARAM_LIST@12..16
-        L_ANGLE@12..13 "<"
-        LIFETIME_PARAM@13..15
-          LIFETIME@13..15
-            LIFETIME_IDENT@13..15 "'a"
-        R_ANGLE@15..16 ">"
-      WHITESPACE@16..17 " "
-      FN_PTR_TYPE@17..27
-        FN_KW@17..19 "fn"
-        PARAM_LIST@19..21
-          L_PAREN@19..20 "("
-          R_PAREN@20..21 ")"
-        WHITESPACE@21..22 " "
-        RET_TYPE@22..27
-          THIN_ARROW@22..24 "->"
-          WHITESPACE@24..25 " "
-          TUPLE_TYPE@25..27
-            L_PAREN@25..26 "("
-            R_PAREN@26..27 ")"
-    SEMICOLON@27..28 ";"
-  WHITESPACE@28..29 "\n"
-  TYPE_ALIAS@29..81
-    TYPE_KW@29..33 "type"
-    WHITESPACE@33..34 " "
-    NAME@34..35
-      IDENT@34..35 "B"
-    WHITESPACE@35..36 " "
-    EQ@36..37 "="
-    WHITESPACE@37..38 " "
-    FOR_TYPE@38..80
-      FOR_KW@38..41 "for"
-      GENERIC_PARAM_LIST@41..45
-        L_ANGLE@41..42 "<"
-        LIFETIME_PARAM@42..44
-          LIFETIME@42..44
-            LIFETIME_IDENT@42..44 "'a"
-        R_ANGLE@44..45 ">"
-      WHITESPACE@45..46 " "
-      FN_PTR_TYPE@46..80
-        UNSAFE_KW@46..52 "unsafe"
-        WHITESPACE@52..53 " "
-        ABI@53..63
-          EXTERN_KW@53..59 "extern"
-          WHITESPACE@59..60 " "
-          STRING@60..63 "\"C\""
-        WHITESPACE@63..64 " "
-        FN_KW@64..66 "fn"
-        PARAM_LIST@66..74
-          L_PAREN@66..67 "("
-          PARAM@67..73
-            REF_TYPE@67..73
-              AMP@67..68 "&"
-              LIFETIME@68..70
-                LIFETIME_IDENT@68..70 "'a"
-              WHITESPACE@70..71 " "
-              TUPLE_TYPE@71..73
-                L_PAREN@71..72 "("
-                R_PAREN@72..73 ")"
-          R_PAREN@73..74 ")"
-        WHITESPACE@74..75 " "
-        RET_TYPE@75..80
-          THIN_ARROW@75..77 "->"
-          WHITESPACE@77..78 " "
-          TUPLE_TYPE@78..80
-            L_PAREN@78..79 "("
-            R_PAREN@79..80 ")"
-    SEMICOLON@80..81 ";"
-  WHITESPACE@81..82 "\n"
-  TYPE_ALIAS@82..120
-    TYPE_KW@82..86 "type"
-    WHITESPACE@86..87 " "
-    NAME@87..90
-      IDENT@87..90 "Obj"
-    WHITESPACE@90..91 " "
-    EQ@91..92 "="
-    WHITESPACE@92..93 " "
-    FOR_TYPE@93..119
-      FOR_KW@93..96 "for"
-      GENERIC_PARAM_LIST@96..100
-        L_ANGLE@96..97 "<"
-        LIFETIME_PARAM@97..99
-          LIFETIME@97..99
-            LIFETIME_IDENT@97..99 "'a"
-        R_ANGLE@99..100 ">"
-      WHITESPACE@100..101 " "
-      PATH_TYPE@101..119
-        PATH@101..119
-          PATH_SEGMENT@101..119
-            NAME_REF@101..110
-              IDENT@101..110 "PartialEq"
-            GENERIC_ARG_LIST@110..119
-              L_ANGLE@110..111 "<"
-              TYPE_ARG@111..118
-                REF_TYPE@111..118
-                  AMP@111..112 "&"
-                  LIFETIME@112..114
-                    LIFETIME_IDENT@112..114 "'a"
-                  WHITESPACE@114..115 " "
-                  PATH_TYPE@115..118
-                    PATH@115..118
-                      PATH_SEGMENT@115..118
-                        NAME_REF@115..118
-                          IDENT@115..118 "i32"
-              R_ANGLE@118..119 ">"
-    SEMICOLON@119..120 ";"
-  WHITESPACE@120..121 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FOR_TYPE
+      FOR_KW "for"
+      GENERIC_PARAM_LIST
+        L_ANGLE "<"
+        LIFETIME_PARAM
+          LIFETIME
+            LIFETIME_IDENT "'a"
+        R_ANGLE ">"
+      WHITESPACE " "
+      FN_PTR_TYPE
+        FN_KW "fn"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          TUPLE_TYPE
+            L_PAREN "("
+            R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FOR_TYPE
+      FOR_KW "for"
+      GENERIC_PARAM_LIST
+        L_ANGLE "<"
+        LIFETIME_PARAM
+          LIFETIME
+            LIFETIME_IDENT "'a"
+        R_ANGLE ">"
+      WHITESPACE " "
+      FN_PTR_TYPE
+        UNSAFE_KW "unsafe"
+        WHITESPACE " "
+        ABI
+          EXTERN_KW "extern"
+          WHITESPACE " "
+          STRING "\"C\""
+        WHITESPACE " "
+        FN_KW "fn"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            REF_TYPE
+              AMP "&"
+              LIFETIME
+                LIFETIME_IDENT "'a"
+              WHITESPACE " "
+              TUPLE_TYPE
+                L_PAREN "("
+                R_PAREN ")"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          TUPLE_TYPE
+            L_PAREN "("
+            R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Obj"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FOR_TYPE
+      FOR_KW "for"
+      GENERIC_PARAM_LIST
+        L_ANGLE "<"
+        LIFETIME_PARAM
+          LIFETIME
+            LIFETIME_IDENT "'a"
+        R_ANGLE ">"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "PartialEq"
+            GENERIC_ARG_LIST
+              L_ANGLE "<"
+              TYPE_ARG
+                REF_TYPE
+                  AMP "&"
+                  LIFETIME
+                    LIFETIME_IDENT "'a"
+                  WHITESPACE " "
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "i32"
+              R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0081_for_type.txt b/crates/parser/test_data/parser/inline/ok/0081_for_type.txt
deleted file mode 100644
index 7600457a9b8..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0081_for_type.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FOR_TYPE
-      FOR_KW "for"
-      GENERIC_PARAM_LIST
-        L_ANGLE "<"
-        LIFETIME_PARAM
-          LIFETIME
-            LIFETIME_IDENT "'a"
-        R_ANGLE ">"
-      WHITESPACE " "
-      FN_PTR_TYPE
-        FN_KW "fn"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          TUPLE_TYPE
-            L_PAREN "("
-            R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FOR_TYPE
-      FOR_KW "for"
-      GENERIC_PARAM_LIST
-        L_ANGLE "<"
-        LIFETIME_PARAM
-          LIFETIME
-            LIFETIME_IDENT "'a"
-        R_ANGLE ">"
-      WHITESPACE " "
-      FN_PTR_TYPE
-        UNSAFE_KW "unsafe"
-        WHITESPACE " "
-        ABI
-          EXTERN_KW "extern"
-          WHITESPACE " "
-          STRING "\"C\""
-        WHITESPACE " "
-        FN_KW "fn"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            REF_TYPE
-              AMP "&"
-              LIFETIME
-                LIFETIME_IDENT "'a"
-              WHITESPACE " "
-              TUPLE_TYPE
-                L_PAREN "("
-                R_PAREN ")"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          TUPLE_TYPE
-            L_PAREN "("
-            R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Obj"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FOR_TYPE
-      FOR_KW "for"
-      GENERIC_PARAM_LIST
-        L_ANGLE "<"
-        LIFETIME_PARAM
-          LIFETIME
-            LIFETIME_IDENT "'a"
-        R_ANGLE ">"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "PartialEq"
-            GENERIC_ARG_LIST
-              L_ANGLE "<"
-              TYPE_ARG
-                REF_TYPE
-                  AMP "&"
-                  LIFETIME
-                    LIFETIME_IDENT "'a"
-                  WHITESPACE " "
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "i32"
-              R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0082_ref_expr.rast b/crates/parser/test_data/parser/inline/ok/0082_ref_expr.rast
index 9fda28a2718..108b0802c33 100644
--- a/crates/parser/test_data/parser/inline/ok/0082_ref_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0082_ref_expr.rast
@@ -1,139 +1,139 @@
-SOURCE_FILE@0..200
-  FN@0..199
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..199
-      STMT_LIST@9..199
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        COMMENT@15..36 "// reference operator"
-        WHITESPACE@36..41 "\n    "
-        LET_STMT@41..52
-          LET_KW@41..44 "let"
-          WHITESPACE@44..45 " "
-          WILDCARD_PAT@45..46
-            UNDERSCORE@45..46 "_"
-          WHITESPACE@46..47 " "
-          EQ@47..48 "="
-          WHITESPACE@48..49 " "
-          REF_EXPR@49..51
-            AMP@49..50 "&"
-            LITERAL@50..51
-              INT_NUMBER@50..51 "1"
-          SEMICOLON@51..52 ";"
-        WHITESPACE@52..57 "\n    "
-        LET_STMT@57..75
-          LET_KW@57..60 "let"
-          WHITESPACE@60..61 " "
-          WILDCARD_PAT@61..62
-            UNDERSCORE@61..62 "_"
-          WHITESPACE@62..63 " "
-          EQ@63..64 "="
-          WHITESPACE@64..65 " "
-          REF_EXPR@65..74
-            AMP@65..66 "&"
-            MUT_KW@66..69 "mut"
-            WHITESPACE@69..70 " "
-            REF_EXPR@70..74
-              AMP@70..71 "&"
-              CALL_EXPR@71..74
-                PATH_EXPR@71..72
-                  PATH@71..72
-                    PATH_SEGMENT@71..72
-                      NAME_REF@71..72
-                        IDENT@71..72 "f"
-                ARG_LIST@72..74
-                  L_PAREN@72..73 "("
-                  R_PAREN@73..74 ")"
-          SEMICOLON@74..75 ";"
-        WHITESPACE@75..80 "\n    "
-        LET_STMT@80..93
-          LET_KW@80..83 "let"
-          WHITESPACE@83..84 " "
-          WILDCARD_PAT@84..85
-            UNDERSCORE@84..85 "_"
-          WHITESPACE@85..86 " "
-          EQ@86..87 "="
-          WHITESPACE@87..88 " "
-          REF_EXPR@88..92
-            AMP@88..89 "&"
-            PATH_EXPR@89..92
-              PATH@89..92
-                PATH_SEGMENT@89..92
-                  NAME_REF@89..92
-                    IDENT@89..92 "raw"
-          SEMICOLON@92..93 ";"
-        WHITESPACE@93..98 "\n    "
-        LET_STMT@98..113
-          LET_KW@98..101 "let"
-          WHITESPACE@101..102 " "
-          WILDCARD_PAT@102..103
-            UNDERSCORE@102..103 "_"
-          WHITESPACE@103..104 " "
-          EQ@104..105 "="
-          WHITESPACE@105..106 " "
-          REF_EXPR@106..112
-            AMP@106..107 "&"
-            FIELD_EXPR@107..112
-              PATH_EXPR@107..110
-                PATH@107..110
-                  PATH_SEGMENT@107..110
-                    NAME_REF@107..110
-                      IDENT@107..110 "raw"
-              DOT@110..111 "."
-              NAME_REF@111..112
-                INT_NUMBER@111..112 "0"
-          SEMICOLON@112..113 ";"
-        WHITESPACE@113..118 "\n    "
-        COMMENT@118..143 "// raw reference oper ..."
-        WHITESPACE@143..148 "\n    "
-        LET_STMT@148..169
-          LET_KW@148..151 "let"
-          WHITESPACE@151..152 " "
-          WILDCARD_PAT@152..153
-            UNDERSCORE@152..153 "_"
-          WHITESPACE@153..154 " "
-          EQ@154..155 "="
-          WHITESPACE@155..156 " "
-          REF_EXPR@156..168
-            AMP@156..157 "&"
-            RAW_KW@157..160 "raw"
-            WHITESPACE@160..161 " "
-            MUT_KW@161..164 "mut"
-            WHITESPACE@164..165 " "
-            PATH_EXPR@165..168
-              PATH@165..168
-                PATH_SEGMENT@165..168
-                  NAME_REF@165..168
-                    IDENT@165..168 "foo"
-          SEMICOLON@168..169 ";"
-        WHITESPACE@169..174 "\n    "
-        LET_STMT@174..197
-          LET_KW@174..177 "let"
-          WHITESPACE@177..178 " "
-          WILDCARD_PAT@178..179
-            UNDERSCORE@178..179 "_"
-          WHITESPACE@179..180 " "
-          EQ@180..181 "="
-          WHITESPACE@181..182 " "
-          REF_EXPR@182..196
-            AMP@182..183 "&"
-            RAW_KW@183..186 "raw"
-            WHITESPACE@186..187 " "
-            CONST_KW@187..192 "const"
-            WHITESPACE@192..193 " "
-            PATH_EXPR@193..196
-              PATH@193..196
-                PATH_SEGMENT@193..196
-                  NAME_REF@193..196
-                    IDENT@193..196 "foo"
-          SEMICOLON@196..197 ";"
-        WHITESPACE@197..198 "\n"
-        R_CURLY@198..199 "}"
-  WHITESPACE@199..200 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        COMMENT "// reference operator"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          REF_EXPR
+            AMP "&"
+            LITERAL
+              INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          REF_EXPR
+            AMP "&"
+            MUT_KW "mut"
+            WHITESPACE " "
+            REF_EXPR
+              AMP "&"
+              CALL_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "f"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          REF_EXPR
+            AMP "&"
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "raw"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          REF_EXPR
+            AMP "&"
+            FIELD_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "raw"
+              DOT "."
+              NAME_REF
+                INT_NUMBER "0"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        COMMENT "// raw reference operator"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          REF_EXPR
+            AMP "&"
+            RAW_KW "raw"
+            WHITESPACE " "
+            MUT_KW "mut"
+            WHITESPACE " "
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          REF_EXPR
+            AMP "&"
+            RAW_KW "raw"
+            WHITESPACE " "
+            CONST_KW "const"
+            WHITESPACE " "
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0082_ref_expr.txt b/crates/parser/test_data/parser/inline/ok/0082_ref_expr.txt
deleted file mode 100644
index 108b0802c33..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0082_ref_expr.txt
+++ /dev/null
@@ -1,139 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        COMMENT "// reference operator"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          REF_EXPR
-            AMP "&"
-            LITERAL
-              INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          REF_EXPR
-            AMP "&"
-            MUT_KW "mut"
-            WHITESPACE " "
-            REF_EXPR
-              AMP "&"
-              CALL_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "f"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          REF_EXPR
-            AMP "&"
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "raw"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          REF_EXPR
-            AMP "&"
-            FIELD_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "raw"
-              DOT "."
-              NAME_REF
-                INT_NUMBER "0"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        COMMENT "// raw reference operator"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          REF_EXPR
-            AMP "&"
-            RAW_KW "raw"
-            WHITESPACE " "
-            MUT_KW "mut"
-            WHITESPACE " "
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          REF_EXPR
-            AMP "&"
-            RAW_KW "raw"
-            WHITESPACE " "
-            CONST_KW "const"
-            WHITESPACE " "
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0084_paren_type.rast b/crates/parser/test_data/parser/inline/ok/0084_paren_type.rast
index ee889496686..29995bb752f 100644
--- a/crates/parser/test_data/parser/inline/ok/0084_paren_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0084_paren_type.rast
@@ -1,19 +1,19 @@
-SOURCE_FILE@0..16
-  TYPE_ALIAS@0..15
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PAREN_TYPE@9..14
-      L_PAREN@9..10 "("
-      PATH_TYPE@10..13
-        PATH@10..13
-          PATH_SEGMENT@10..13
-            NAME_REF@10..13
-              IDENT@10..13 "i32"
-      R_PAREN@13..14 ")"
-    SEMICOLON@14..15 ";"
-  WHITESPACE@15..16 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PAREN_TYPE
+      L_PAREN "("
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "i32"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0084_paren_type.txt b/crates/parser/test_data/parser/inline/ok/0084_paren_type.txt
deleted file mode 100644
index 29995bb752f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0084_paren_type.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PAREN_TYPE
-      L_PAREN "("
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "i32"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rast b/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rast
index ca68b4b1091..403c265ea35 100644
--- a/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rast
+++ b/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rast
@@ -1,136 +1,136 @@
-SOURCE_FILE@0..189
-  FN@0..188
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..188
-      STMT_LIST@9..188
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..28
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          WILDCARD_PAT@19..20
-            UNDERSCORE@19..20 "_"
-          WHITESPACE@20..21 " "
-          EQ@21..22 "="
-          WHITESPACE@22..23 " "
-          LITERAL@23..27
-            TRUE_KW@23..27 "true"
-          SEMICOLON@27..28 ";"
-        WHITESPACE@28..33 "\n    "
-        LET_STMT@33..47
-          LET_KW@33..36 "let"
-          WHITESPACE@36..37 " "
-          WILDCARD_PAT@37..38
-            UNDERSCORE@37..38 "_"
-          WHITESPACE@38..39 " "
-          EQ@39..40 "="
-          WHITESPACE@40..41 " "
-          LITERAL@41..46
-            FALSE_KW@41..46 "false"
-          SEMICOLON@46..47 ";"
-        WHITESPACE@47..52 "\n    "
-        LET_STMT@52..62
-          LET_KW@52..55 "let"
-          WHITESPACE@55..56 " "
-          WILDCARD_PAT@56..57
-            UNDERSCORE@56..57 "_"
-          WHITESPACE@57..58 " "
-          EQ@58..59 "="
-          WHITESPACE@59..60 " "
-          LITERAL@60..61
-            INT_NUMBER@60..61 "1"
-          SEMICOLON@61..62 ";"
-        WHITESPACE@62..67 "\n    "
-        LET_STMT@67..79
-          LET_KW@67..70 "let"
-          WHITESPACE@70..71 " "
-          WILDCARD_PAT@71..72
-            UNDERSCORE@71..72 "_"
-          WHITESPACE@72..73 " "
-          EQ@73..74 "="
-          WHITESPACE@74..75 " "
-          LITERAL@75..78
-            FLOAT_NUMBER@75..78 "2.0"
-          SEMICOLON@78..79 ";"
-        WHITESPACE@79..84 "\n    "
-        LET_STMT@84..97
-          LET_KW@84..87 "let"
-          WHITESPACE@87..88 " "
-          WILDCARD_PAT@88..89
-            UNDERSCORE@88..89 "_"
-          WHITESPACE@89..90 " "
-          EQ@90..91 "="
-          WHITESPACE@91..92 " "
-          LITERAL@92..96
-            BYTE@92..96 "b'a'"
-          SEMICOLON@96..97 ";"
-        WHITESPACE@97..102 "\n    "
-        LET_STMT@102..114
-          LET_KW@102..105 "let"
-          WHITESPACE@105..106 " "
-          WILDCARD_PAT@106..107
-            UNDERSCORE@106..107 "_"
-          WHITESPACE@107..108 " "
-          EQ@108..109 "="
-          WHITESPACE@109..110 " "
-          LITERAL@110..113
-            CHAR@110..113 "'b'"
-          SEMICOLON@113..114 ";"
-        WHITESPACE@114..119 "\n    "
-        LET_STMT@119..131
-          LET_KW@119..122 "let"
-          WHITESPACE@122..123 " "
-          WILDCARD_PAT@123..124
-            UNDERSCORE@123..124 "_"
-          WHITESPACE@124..125 " "
-          EQ@125..126 "="
-          WHITESPACE@126..127 " "
-          LITERAL@127..130
-            STRING@127..130 "\"c\""
-          SEMICOLON@130..131 ";"
-        WHITESPACE@131..136 "\n    "
-        LET_STMT@136..149
-          LET_KW@136..139 "let"
-          WHITESPACE@139..140 " "
-          WILDCARD_PAT@140..141
-            UNDERSCORE@140..141 "_"
-          WHITESPACE@141..142 " "
-          EQ@142..143 "="
-          WHITESPACE@143..144 " "
-          LITERAL@144..148
-            STRING@144..148 "r\"d\""
-          SEMICOLON@148..149 ";"
-        WHITESPACE@149..154 "\n    "
-        LET_STMT@154..167
-          LET_KW@154..157 "let"
-          WHITESPACE@157..158 " "
-          WILDCARD_PAT@158..159
-            UNDERSCORE@158..159 "_"
-          WHITESPACE@159..160 " "
-          EQ@160..161 "="
-          WHITESPACE@161..162 " "
-          LITERAL@162..166
-            BYTE_STRING@162..166 "b\"e\""
-          SEMICOLON@166..167 ";"
-        WHITESPACE@167..172 "\n    "
-        LET_STMT@172..186
-          LET_KW@172..175 "let"
-          WHITESPACE@175..176 " "
-          WILDCARD_PAT@176..177
-            UNDERSCORE@176..177 "_"
-          WHITESPACE@177..178 " "
-          EQ@178..179 "="
-          WHITESPACE@179..180 " "
-          LITERAL@180..185
-            BYTE_STRING@180..185 "br\"f\""
-          SEMICOLON@185..186 ";"
-        WHITESPACE@186..187 "\n"
-        R_CURLY@187..188 "}"
-  WHITESPACE@188..189 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            TRUE_KW "true"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            FALSE_KW "false"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            FLOAT_NUMBER "2.0"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            BYTE "b'a'"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            CHAR "'b'"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            STRING "\"c\""
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            STRING "r\"d\""
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            BYTE_STRING "b\"e\""
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            BYTE_STRING "br\"f\""
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0085_expr_literals.txt b/crates/parser/test_data/parser/inline/ok/0085_expr_literals.txt
deleted file mode 100644
index 403c265ea35..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0085_expr_literals.txt
+++ /dev/null
@@ -1,136 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            TRUE_KW "true"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            FALSE_KW "false"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            FLOAT_NUMBER "2.0"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            BYTE "b'a'"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            CHAR "'b'"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            STRING "\"c\""
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            STRING "r\"d\""
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            BYTE_STRING "b\"e\""
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            BYTE_STRING "br\"f\""
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0086_function_ret_type.rast b/crates/parser/test_data/parser/inline/ok/0086_function_ret_type.rast
index 71d5d127ca8..6687c843fbb 100644
--- a/crates/parser/test_data/parser/inline/ok/0086_function_ret_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0086_function_ret_type.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..30
-  FN@0..11
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..11
-      STMT_LIST@9..11
-        L_CURLY@9..10 "{"
-        R_CURLY@10..11 "}"
-  WHITESPACE@11..12 "\n"
-  FN@12..29
-    FN_KW@12..14 "fn"
-    WHITESPACE@14..15 " "
-    NAME@15..18
-      IDENT@15..18 "bar"
-    PARAM_LIST@18..20
-      L_PAREN@18..19 "("
-      R_PAREN@19..20 ")"
-    WHITESPACE@20..21 " "
-    RET_TYPE@21..26
-      THIN_ARROW@21..23 "->"
-      WHITESPACE@23..24 " "
-      TUPLE_TYPE@24..26
-        L_PAREN@24..25 "("
-        R_PAREN@25..26 ")"
-    WHITESPACE@26..27 " "
-    BLOCK_EXPR@27..29
-      STMT_LIST@27..29
-        L_CURLY@27..28 "{"
-        R_CURLY@28..29 "}"
-  WHITESPACE@29..30 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "bar"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      TUPLE_TYPE
+        L_PAREN "("
+        R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0086_function_ret_type.txt b/crates/parser/test_data/parser/inline/ok/0086_function_ret_type.txt
deleted file mode 100644
index 6687c843fbb..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0086_function_ret_type.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "bar"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      TUPLE_TYPE
-        L_PAREN "("
-        R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.rast b/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.rast
index 698b4c40ffd..cbf5e84e8cd 100644
--- a/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.rast
+++ b/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.rast
@@ -1,69 +1,67 @@
-SOURCE_FILE@0..88
-  FN@0..87
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    BLOCK_EXPR@8..87
-      STMT_LIST@8..87
-        L_CURLY@8..9 "{"
-        WHITESPACE@9..14 "\n    "
-        EXPR_STMT@14..25
-          IF_EXPR@14..25
-            IF_KW@14..16 "if"
-            WHITESPACE@16..17 " "
-            CONDITION@17..22
-              BREAK_EXPR@17..22
-                BREAK_KW@17..22 "break"
-            WHITESPACE@22..23 " "
-            BLOCK_EXPR@23..25
-              STMT_LIST@23..25
-                L_CURLY@23..24 "{"
-                R_CURLY@24..25 "}"
-        WHITESPACE@25..30 "\n    "
-        EXPR_STMT@30..44
-          WHILE_EXPR@30..44
-            WHILE_KW@30..35 "while"
-            WHITESPACE@35..36 " "
-            CONDITION@36..41
-              BREAK_EXPR@36..41
-                BREAK_KW@36..41 "break"
-            WHITESPACE@41..42 " "
-            BLOCK_EXPR@42..44
-              STMT_LIST@42..44
-                L_CURLY@42..43 "{"
-                R_CURLY@43..44 "}"
-        WHITESPACE@44..49 "\n    "
-        EXPR_STMT@49..66
-          FOR_EXPR@49..66
-            FOR_KW@49..52 "for"
-            WHITESPACE@52..53 " "
-            IDENT_PAT@53..54
-              NAME@53..54
-                IDENT@53..54 "i"
-            WHITESPACE@54..55 " "
-            IN_KW@55..57 "in"
-            WHITESPACE@57..58 " "
-            BREAK_EXPR@58..63
-              BREAK_KW@58..63 "break"
-            WHITESPACE@63..64 " "
-            BLOCK_EXPR@64..66
-              STMT_LIST@64..66
-                L_CURLY@64..65 "{"
-                R_CURLY@65..66 "}"
-        WHITESPACE@66..71 "\n    "
-        MATCH_EXPR@71..85
-          MATCH_KW@71..76 "match"
-          WHITESPACE@76..77 " "
-          BREAK_EXPR@77..82
-            BREAK_KW@77..82 "break"
-          WHITESPACE@82..83 " "
-          MATCH_ARM_LIST@83..85
-            L_CURLY@83..84 "{"
-            R_CURLY@84..85 "}"
-        WHITESPACE@85..86 "\n"
-        R_CURLY@86..87 "}"
-  WHITESPACE@87..88 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            BREAK_EXPR
+              BREAK_KW "break"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          WHILE_EXPR
+            WHILE_KW "while"
+            WHITESPACE " "
+            BREAK_EXPR
+              BREAK_KW "break"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          FOR_EXPR
+            FOR_KW "for"
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "i"
+            WHITESPACE " "
+            IN_KW "in"
+            WHITESPACE " "
+            BREAK_EXPR
+              BREAK_KW "break"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          BREAK_EXPR
+            BREAK_KW "break"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt b/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt
deleted file mode 100644
index cbf5e84e8cd..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            BREAK_EXPR
-              BREAK_KW "break"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          WHILE_EXPR
-            WHILE_KW "while"
-            WHITESPACE " "
-            BREAK_EXPR
-              BREAK_KW "break"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          FOR_EXPR
-            FOR_KW "for"
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "i"
-            WHITESPACE " "
-            IN_KW "in"
-            WHITESPACE " "
-            BREAK_EXPR
-              BREAK_KW "break"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          BREAK_EXPR
-            BREAK_KW "break"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0090_type_param_default.rast b/crates/parser/test_data/parser/inline/ok/0090_type_param_default.rast
index 2ef026e3709..cf7236f62e6 100644
--- a/crates/parser/test_data/parser/inline/ok/0090_type_param_default.rast
+++ b/crates/parser/test_data/parser/inline/ok/0090_type_param_default.rast
@@ -1,22 +1,22 @@
-SOURCE_FILE@0..19
-  STRUCT@0..18
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    GENERIC_PARAM_LIST@8..17
-      L_ANGLE@8..9 "<"
-      TYPE_PARAM@9..16
-        NAME@9..10
-          IDENT@9..10 "T"
-        WHITESPACE@10..11 " "
-        EQ@11..12 "="
-        WHITESPACE@12..13 " "
-        PATH_TYPE@13..16
-          PATH@13..16
-            PATH_SEGMENT@13..16
-              NAME_REF@13..16
-                IDENT@13..16 "i32"
-      R_ANGLE@16..17 ">"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0090_type_param_default.txt b/crates/parser/test_data/parser/inline/ok/0090_type_param_default.txt
deleted file mode 100644
index cf7236f62e6..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0090_type_param_default.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast b/crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast
index f80326465fd..372c867ae6d 100644
--- a/crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast
+++ b/crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast
@@ -1,23 +1,23 @@
-SOURCE_FILE@0..21
-  TYPE_ALIAS@0..20
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "F"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    FN_PTR_TYPE@9..19
-      FN_KW@9..11 "fn"
-      PARAM_LIST@11..13
-        L_PAREN@11..12 "("
-        R_PAREN@12..13 ")"
-      WHITESPACE@13..14 " "
-      RET_TYPE@14..19
-        THIN_ARROW@14..16 "->"
-        WHITESPACE@16..17 " "
-        TUPLE_TYPE@17..19
-          L_PAREN@17..18 "("
-          R_PAREN@18..19 ")"
-    SEMICOLON@19..20 ";"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "F"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        R_PAREN ")"
+      WHITESPACE " "
+      RET_TYPE
+        THIN_ARROW "->"
+        WHITESPACE " "
+        TUPLE_TYPE
+          L_PAREN "("
+          R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt b/crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
deleted file mode 100644
index 372c867ae6d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "F"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        R_PAREN ")"
-      WHITESPACE " "
-      RET_TYPE
-        THIN_ARROW "->"
-        WHITESPACE " "
-        TUPLE_TYPE
-          L_PAREN "("
-          R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0093_index_expr.rast b/crates/parser/test_data/parser/inline/ok/0093_index_expr.rast
index ef3ef692a07..6969259fc08 100644
--- a/crates/parser/test_data/parser/inline/ok/0093_index_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0093_index_expr.rast
@@ -1,34 +1,34 @@
-SOURCE_FILE@0..26
-  FN@0..25
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..25
-      STMT_LIST@9..25
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..23
-          INDEX_EXPR@15..22
-            INDEX_EXPR@15..19
-              PATH_EXPR@15..16
-                PATH@15..16
-                  PATH_SEGMENT@15..16
-                    NAME_REF@15..16
-                      IDENT@15..16 "x"
-              L_BRACK@16..17 "["
-              LITERAL@17..18
-                INT_NUMBER@17..18 "1"
-              R_BRACK@18..19 "]"
-            L_BRACK@19..20 "["
-            LITERAL@20..21
-              INT_NUMBER@20..21 "2"
-            R_BRACK@21..22 "]"
-          SEMICOLON@22..23 ";"
-        WHITESPACE@23..24 "\n"
-        R_CURLY@24..25 "}"
-  WHITESPACE@25..26 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          INDEX_EXPR
+            INDEX_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "x"
+              L_BRACK "["
+              LITERAL
+                INT_NUMBER "1"
+              R_BRACK "]"
+            L_BRACK "["
+            LITERAL
+              INT_NUMBER "2"
+            R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0093_index_expr.txt b/crates/parser/test_data/parser/inline/ok/0093_index_expr.txt
deleted file mode 100644
index 6969259fc08..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0093_index_expr.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          INDEX_EXPR
-            INDEX_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "x"
-              L_BRACK "["
-              LITERAL
-                INT_NUMBER "1"
-              R_BRACK "]"
-            L_BRACK "["
-            LITERAL
-              INT_NUMBER "2"
-            R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.rast b/crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.rast
index 2450b66d79b..d39c3df2b7e 100644
--- a/crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..26
-  FN@0..25
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..25
-      STMT_LIST@10..25
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..12 " "
-        LET_STMT@12..23
-          LET_KW@12..15 "let"
-          WHITESPACE@15..16 " "
-          WILDCARD_PAT@16..17
-            UNDERSCORE@16..17 "_"
-          WHITESPACE@17..18 " "
-          EQ@18..19 "="
-          WHITESPACE@19..20 " "
-          TUPLE_EXPR@20..22
-            L_PAREN@20..21 "("
-            R_PAREN@21..22 ")"
-          SEMICOLON@22..23 ";"
-        WHITESPACE@23..24 " "
-        R_CURLY@24..25 "}"
-  WHITESPACE@25..26 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.txt b/crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.txt
deleted file mode 100644
index d39c3df2b7e..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0095_placeholder_pat.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.rast b/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.rast
index 0a6ea549c41..e4e215593ee 100644
--- a/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.rast
@@ -1,126 +1,124 @@
-SOURCE_FILE@0..167
-  FN@0..166
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..166
-      STMT_LIST@9..166
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..25
-          IF_EXPR@15..25
-            IF_KW@15..17 "if"
-            WHITESPACE@17..18 " "
-            CONDITION@18..22
-              LITERAL@18..22
-                TRUE_KW@18..22 "true"
-            WHITESPACE@22..23 " "
-            BLOCK_EXPR@23..25
-              STMT_LIST@23..25
-                L_CURLY@23..24 "{"
-                R_CURLY@24..25 "}"
-        WHITESPACE@25..30 "\n    "
-        EXPR_STMT@30..37
-          LOOP_EXPR@30..37
-            LOOP_KW@30..34 "loop"
-            WHITESPACE@34..35 " "
-            BLOCK_EXPR@35..37
-              STMT_LIST@35..37
-                L_CURLY@35..36 "{"
-                R_CURLY@36..37 "}"
-        WHITESPACE@37..42 "\n    "
-        EXPR_STMT@42..53
-          MATCH_EXPR@42..53
-            MATCH_KW@42..47 "match"
-            WHITESPACE@47..48 " "
-            TUPLE_EXPR@48..50
-              L_PAREN@48..49 "("
-              R_PAREN@49..50 ")"
-            WHITESPACE@50..51 " "
-            MATCH_ARM_LIST@51..53
-              L_CURLY@51..52 "{"
-              R_CURLY@52..53 "}"
-        WHITESPACE@53..58 "\n    "
-        EXPR_STMT@58..71
-          WHILE_EXPR@58..71
-            WHILE_KW@58..63 "while"
-            WHITESPACE@63..64 " "
-            CONDITION@64..68
-              LITERAL@64..68
-                TRUE_KW@64..68 "true"
-            WHITESPACE@68..69 " "
-            BLOCK_EXPR@69..71
-              STMT_LIST@69..71
-                L_CURLY@69..70 "{"
-                R_CURLY@70..71 "}"
-        WHITESPACE@71..76 "\n    "
-        EXPR_STMT@76..90
-          FOR_EXPR@76..90
-            FOR_KW@76..79 "for"
-            WHITESPACE@79..80 " "
-            WILDCARD_PAT@80..81
-              UNDERSCORE@80..81 "_"
-            WHITESPACE@81..82 " "
-            IN_KW@82..84 "in"
-            WHITESPACE@84..85 " "
-            TUPLE_EXPR@85..87
-              L_PAREN@85..86 "("
-              R_PAREN@86..87 ")"
-            WHITESPACE@87..88 " "
-            BLOCK_EXPR@88..90
-              STMT_LIST@88..90
-                L_CURLY@88..89 "{"
-                R_CURLY@89..90 "}"
-        WHITESPACE@90..95 "\n    "
-        EXPR_STMT@95..97
-          BLOCK_EXPR@95..97
-            STMT_LIST@95..97
-              L_CURLY@95..96 "{"
-              R_CURLY@96..97 "}"
-        WHITESPACE@97..102 "\n    "
-        EXPR_STMT@102..104
-          BLOCK_EXPR@102..104
-            STMT_LIST@102..104
-              L_CURLY@102..103 "{"
-              R_CURLY@103..104 "}"
-        WHITESPACE@104..109 "\n    "
-        MACRO_RULES@109..152
-          MACRO_RULES_KW@109..120 "macro_rules"
-          BANG@120..121 "!"
-          WHITESPACE@121..122 " "
-          NAME@122..126
-            IDENT@122..126 "test"
-          WHITESPACE@126..127 " "
-          TOKEN_TREE@127..152
-            L_CURLY@127..128 "{"
-            WHITESPACE@128..138 "\n         "
-            TOKEN_TREE@138..140
-              L_PAREN@138..139 "("
-              R_PAREN@139..140 ")"
-            WHITESPACE@140..141 " "
-            EQ@141..142 "="
-            R_ANGLE@142..143 ">"
-            WHITESPACE@143..144 " "
-            TOKEN_TREE@144..146
-              L_CURLY@144..145 "{"
-              R_CURLY@145..146 "}"
-            WHITESPACE@146..151 "\n    "
-            R_CURLY@151..152 "}"
-        WHITESPACE@152..157 "\n    "
-        MACRO_CALL@157..164
-          PATH@157..161
-            PATH_SEGMENT@157..161
-              NAME_REF@157..161
-                IDENT@157..161 "test"
-          BANG@161..162 "!"
-          TOKEN_TREE@162..164
-            L_CURLY@162..163 "{"
-            R_CURLY@163..164 "}"
-        WHITESPACE@164..165 "\n"
-        R_CURLY@165..166 "}"
-  WHITESPACE@166..167 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          IF_EXPR
+            IF_KW "if"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          LOOP_EXPR
+            LOOP_KW "loop"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          WHILE_EXPR
+            WHILE_KW "while"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          FOR_EXPR
+            FOR_KW "for"
+            WHITESPACE " "
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            WHITESPACE " "
+            IN_KW "in"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        MACRO_RULES
+          MACRO_RULES_KW "macro_rules"
+          BANG "!"
+          WHITESPACE " "
+          NAME
+            IDENT "test"
+          WHITESPACE " "
+          TOKEN_TREE
+            L_CURLY "{"
+            WHITESPACE "\n         "
+            TOKEN_TREE
+              L_PAREN "("
+              R_PAREN ")"
+            WHITESPACE " "
+            EQ "="
+            R_ANGLE ">"
+            WHITESPACE " "
+            TOKEN_TREE
+              L_CURLY "{"
+              R_CURLY "}"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n    "
+        MACRO_CALL
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "test"
+          BANG "!"
+          TOKEN_TREE
+            L_CURLY "{"
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt b/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt
deleted file mode 100644
index e4e215593ee..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          IF_EXPR
-            IF_KW "if"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          LOOP_EXPR
-            LOOP_KW "loop"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          WHILE_EXPR
-            WHILE_KW "while"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          FOR_EXPR
-            FOR_KW "for"
-            WHITESPACE " "
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            WHITESPACE " "
-            IN_KW "in"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        MACRO_RULES
-          MACRO_RULES_KW "macro_rules"
-          BANG "!"
-          WHITESPACE " "
-          NAME
-            IDENT "test"
-          WHITESPACE " "
-          TOKEN_TREE
-            L_CURLY "{"
-            WHITESPACE "\n         "
-            TOKEN_TREE
-              L_PAREN "("
-              R_PAREN ")"
-            WHITESPACE " "
-            EQ "="
-            R_ANGLE ">"
-            WHITESPACE " "
-            TOKEN_TREE
-              L_CURLY "{"
-              R_CURLY "}"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n    "
-        MACRO_CALL
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "test"
-          BANG "!"
-          TOKEN_TREE
-            L_CURLY "{"
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0099_param_list.rast b/crates/parser/test_data/parser/inline/ok/0099_param_list.rast
index 2f2f2b6889b..d240a52f6ff 100644
--- a/crates/parser/test_data/parser/inline/ok/0099_param_list.rast
+++ b/crates/parser/test_data/parser/inline/ok/0099_param_list.rast
@@ -1,103 +1,103 @@
-SOURCE_FILE@0..67
-  FN@0..9
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "a"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..9
-      STMT_LIST@7..9
-        L_CURLY@7..8 "{"
-        R_CURLY@8..9 "}"
-  WHITESPACE@9..10 "\n"
-  FN@10..25
-    FN_KW@10..12 "fn"
-    WHITESPACE@12..13 " "
-    NAME@13..14
-      IDENT@13..14 "b"
-    PARAM_LIST@14..22
-      L_PAREN@14..15 "("
-      PARAM@15..21
-        IDENT_PAT@15..16
-          NAME@15..16
-            IDENT@15..16 "x"
-        COLON@16..17 ":"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "i32"
-      R_PAREN@21..22 ")"
-    WHITESPACE@22..23 " "
-    BLOCK_EXPR@23..25
-      STMT_LIST@23..25
-        L_CURLY@23..24 "{"
-        R_CURLY@24..25 "}"
-  WHITESPACE@25..26 "\n"
-  FN@26..43
-    FN_KW@26..28 "fn"
-    WHITESPACE@28..29 " "
-    NAME@29..30
-      IDENT@29..30 "c"
-    PARAM_LIST@30..40
-      L_PAREN@30..31 "("
-      PARAM@31..37
-        IDENT_PAT@31..32
-          NAME@31..32
-            IDENT@31..32 "x"
-        COLON@32..33 ":"
-        WHITESPACE@33..34 " "
-        PATH_TYPE@34..37
-          PATH@34..37
-            PATH_SEGMENT@34..37
-              NAME_REF@34..37
-                IDENT@34..37 "i32"
-      COMMA@37..38 ","
-      WHITESPACE@38..39 " "
-      R_PAREN@39..40 ")"
-    WHITESPACE@40..41 " "
-    BLOCK_EXPR@41..43
-      STMT_LIST@41..43
-        L_CURLY@41..42 "{"
-        R_CURLY@42..43 "}"
-  WHITESPACE@43..44 "\n"
-  FN@44..66
-    FN_KW@44..46 "fn"
-    WHITESPACE@46..47 " "
-    NAME@47..48
-      IDENT@47..48 "d"
-    PARAM_LIST@48..63
-      L_PAREN@48..49 "("
-      PARAM@49..55
-        IDENT_PAT@49..50
-          NAME@49..50
-            IDENT@49..50 "x"
-        COLON@50..51 ":"
-        WHITESPACE@51..52 " "
-        PATH_TYPE@52..55
-          PATH@52..55
-            PATH_SEGMENT@52..55
-              NAME_REF@52..55
-                IDENT@52..55 "i32"
-      COMMA@55..56 ","
-      WHITESPACE@56..57 " "
-      PARAM@57..62
-        IDENT_PAT@57..58
-          NAME@57..58
-            IDENT@57..58 "y"
-        COLON@58..59 ":"
-        WHITESPACE@59..60 " "
-        TUPLE_TYPE@60..62
-          L_PAREN@60..61 "("
-          R_PAREN@61..62 ")"
-      R_PAREN@62..63 ")"
-    WHITESPACE@63..64 " "
-    BLOCK_EXPR@64..66
-      STMT_LIST@64..66
-        L_CURLY@64..65 "{"
-        R_CURLY@65..66 "}"
-  WHITESPACE@66..67 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "a"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "b"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "c"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      COMMA ","
+      WHITESPACE " "
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "d"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      COMMA ","
+      WHITESPACE " "
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "y"
+        COLON ":"
+        WHITESPACE " "
+        TUPLE_TYPE
+          L_PAREN "("
+          R_PAREN ")"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0099_param_list.txt b/crates/parser/test_data/parser/inline/ok/0099_param_list.txt
deleted file mode 100644
index d240a52f6ff..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0099_param_list.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "a"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "b"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "c"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      COMMA ","
-      WHITESPACE " "
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "d"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      COMMA ","
-      WHITESPACE " "
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "y"
-        COLON ":"
-        WHITESPACE " "
-        TUPLE_TYPE
-          L_PAREN "("
-          R_PAREN ")"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0100_for_expr.rast b/crates/parser/test_data/parser/inline/ok/0100_for_expr.rast
index f195f2369c4..6bc3c0fb057 100644
--- a/crates/parser/test_data/parser/inline/ok/0100_for_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0100_for_expr.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..33
-  FN@0..32
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..32
-      STMT_LIST@9..32
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..30
-          FOR_EXPR@15..29
-            FOR_KW@15..18 "for"
-            WHITESPACE@18..19 " "
-            IDENT_PAT@19..20
-              NAME@19..20
-                IDENT@19..20 "x"
-            WHITESPACE@20..21 " "
-            IN_KW@21..23 "in"
-            WHITESPACE@23..24 " "
-            ARRAY_EXPR@24..26
-              L_BRACK@24..25 "["
-              R_BRACK@25..26 "]"
-            WHITESPACE@26..27 " "
-            BLOCK_EXPR@27..29
-              STMT_LIST@27..29
-                L_CURLY@27..28 "{"
-                R_CURLY@28..29 "}"
-          SEMICOLON@29..30 ";"
-        WHITESPACE@30..31 "\n"
-        R_CURLY@31..32 "}"
-  WHITESPACE@32..33 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          FOR_EXPR
+            FOR_KW "for"
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "x"
+            WHITESPACE " "
+            IN_KW "in"
+            WHITESPACE " "
+            ARRAY_EXPR
+              L_BRACK "["
+              R_BRACK "]"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0100_for_expr.txt b/crates/parser/test_data/parser/inline/ok/0100_for_expr.txt
deleted file mode 100644
index 6bc3c0fb057..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0100_for_expr.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          FOR_EXPR
-            FOR_KW "for"
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "x"
-            WHITESPACE " "
-            IN_KW "in"
-            WHITESPACE " "
-            ARRAY_EXPR
-              L_BRACK "["
-              R_BRACK "]"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.rast b/crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.rast
index 761438d2ec6..f69ae1d6445 100644
--- a/crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.rast
+++ b/crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.rast
@@ -1,175 +1,175 @@
-SOURCE_FILE@0..156
-  FN@0..155
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..155
-      STMT_LIST@9..155
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..29
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          RECORD_PAT@19..23
-            PATH@19..20
-              PATH_SEGMENT@19..20
-                NAME_REF@19..20
-                  IDENT@19..20 "S"
-            WHITESPACE@20..21 " "
-            RECORD_PAT_FIELD_LIST@21..23
-              L_CURLY@21..22 "{"
-              R_CURLY@22..23 "}"
-          WHITESPACE@23..24 " "
-          EQ@24..25 "="
-          WHITESPACE@25..26 " "
-          TUPLE_EXPR@26..28
-            L_PAREN@26..27 "("
-            R_PAREN@27..28 ")"
-          SEMICOLON@28..29 ";"
-        WHITESPACE@29..34 "\n    "
-        LET_STMT@34..62
-          LET_KW@34..37 "let"
-          WHITESPACE@37..38 " "
-          RECORD_PAT@38..56
-            PATH@38..39
-              PATH_SEGMENT@38..39
-                NAME_REF@38..39
-                  IDENT@38..39 "S"
-            WHITESPACE@39..40 " "
-            RECORD_PAT_FIELD_LIST@40..56
-              L_CURLY@40..41 "{"
-              WHITESPACE@41..42 " "
-              RECORD_PAT_FIELD@42..43
-                IDENT_PAT@42..43
-                  NAME@42..43
-                    IDENT@42..43 "f"
-              COMMA@43..44 ","
-              WHITESPACE@44..45 " "
-              RECORD_PAT_FIELD@45..54
-                IDENT_PAT@45..54
-                  REF_KW@45..48 "ref"
-                  WHITESPACE@48..49 " "
-                  MUT_KW@49..52 "mut"
-                  WHITESPACE@52..53 " "
-                  NAME@53..54
-                    IDENT@53..54 "g"
-              WHITESPACE@54..55 " "
-              R_CURLY@55..56 "}"
-          WHITESPACE@56..57 " "
-          EQ@57..58 "="
-          WHITESPACE@58..59 " "
-          TUPLE_EXPR@59..61
-            L_PAREN@59..60 "("
-            R_PAREN@60..61 ")"
-          SEMICOLON@61..62 ";"
-        WHITESPACE@62..67 "\n    "
-        LET_STMT@67..90
-          LET_KW@67..70 "let"
-          WHITESPACE@70..71 " "
-          RECORD_PAT@71..84
-            PATH@71..72
-              PATH_SEGMENT@71..72
-                NAME_REF@71..72
-                  IDENT@71..72 "S"
-            WHITESPACE@72..73 " "
-            RECORD_PAT_FIELD_LIST@73..84
-              L_CURLY@73..74 "{"
-              WHITESPACE@74..75 " "
-              RECORD_PAT_FIELD@75..79
-                NAME_REF@75..76
-                  IDENT@75..76 "h"
-                COLON@76..77 ":"
-                WHITESPACE@77..78 " "
-                WILDCARD_PAT@78..79
-                  UNDERSCORE@78..79 "_"
-              COMMA@79..80 ","
-              WHITESPACE@80..81 " "
-              REST_PAT@81..83
-                DOT2@81..83 ".."
-              R_CURLY@83..84 "}"
-          WHITESPACE@84..85 " "
-          EQ@85..86 "="
-          WHITESPACE@86..87 " "
-          TUPLE_EXPR@87..89
-            L_PAREN@87..88 "("
-            R_PAREN@88..89 ")"
-          SEMICOLON@89..90 ";"
-        WHITESPACE@90..95 "\n    "
-        LET_STMT@95..116
-          LET_KW@95..98 "let"
-          WHITESPACE@98..99 " "
-          RECORD_PAT@99..110
-            PATH@99..100
-              PATH_SEGMENT@99..100
-                NAME_REF@99..100
-                  IDENT@99..100 "S"
-            WHITESPACE@100..101 " "
-            RECORD_PAT_FIELD_LIST@101..110
-              L_CURLY@101..102 "{"
-              WHITESPACE@102..103 " "
-              RECORD_PAT_FIELD@103..107
-                NAME_REF@103..104
-                  IDENT@103..104 "h"
-                COLON@104..105 ":"
-                WHITESPACE@105..106 " "
-                WILDCARD_PAT@106..107
-                  UNDERSCORE@106..107 "_"
-              COMMA@107..108 ","
-              WHITESPACE@108..109 " "
-              R_CURLY@109..110 "}"
-          WHITESPACE@110..111 " "
-          EQ@111..112 "="
-          WHITESPACE@112..113 " "
-          TUPLE_EXPR@113..115
-            L_PAREN@113..114 "("
-            R_PAREN@114..115 ")"
-          SEMICOLON@115..116 ";"
-        WHITESPACE@116..121 "\n    "
-        LET_STMT@121..153
-          LET_KW@121..124 "let"
-          WHITESPACE@124..125 " "
-          RECORD_PAT@125..147
-            PATH@125..126
-              PATH_SEGMENT@125..126
-                NAME_REF@125..126
-                  IDENT@125..126 "S"
-            WHITESPACE@126..127 " "
-            RECORD_PAT_FIELD_LIST@127..147
-              L_CURLY@127..128 "{"
-              WHITESPACE@128..129 " "
-              REST_PAT@129..145
-                ATTR@129..142
-                  POUND@129..130 "#"
-                  L_BRACK@130..131 "["
-                  META@131..141
-                    PATH@131..134
-                      PATH_SEGMENT@131..134
-                        NAME_REF@131..134
-                          IDENT@131..134 "cfg"
-                    TOKEN_TREE@134..141
-                      L_PAREN@134..135 "("
-                      IDENT@135..138 "any"
-                      TOKEN_TREE@138..140
-                        L_PAREN@138..139 "("
-                        R_PAREN@139..140 ")"
-                      R_PAREN@140..141 ")"
-                  R_BRACK@141..142 "]"
-                WHITESPACE@142..143 " "
-                DOT2@143..145 ".."
-              WHITESPACE@145..146 " "
-              R_CURLY@146..147 "}"
-          WHITESPACE@147..148 " "
-          EQ@148..149 "="
-          WHITESPACE@149..150 " "
-          TUPLE_EXPR@150..152
-            L_PAREN@150..151 "("
-            R_PAREN@151..152 ")"
-          SEMICOLON@152..153 ";"
-        WHITESPACE@153..154 "\n"
-        R_CURLY@154..155 "}"
-  WHITESPACE@155..156 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_PAT_FIELD
+                IDENT_PAT
+                  NAME
+                    IDENT "f"
+              COMMA ","
+              WHITESPACE " "
+              RECORD_PAT_FIELD
+                IDENT_PAT
+                  REF_KW "ref"
+                  WHITESPACE " "
+                  MUT_KW "mut"
+                  WHITESPACE " "
+                  NAME
+                    IDENT "g"
+              WHITESPACE " "
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_PAT_FIELD
+                NAME_REF
+                  IDENT "h"
+                COLON ":"
+                WHITESPACE " "
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+              COMMA ","
+              WHITESPACE " "
+              REST_PAT
+                DOT2 ".."
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_PAT_FIELD
+                NAME_REF
+                  IDENT "h"
+                COLON ":"
+                WHITESPACE " "
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+              COMMA ","
+              WHITESPACE " "
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              REST_PAT
+                ATTR
+                  POUND "#"
+                  L_BRACK "["
+                  META
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "cfg"
+                    TOKEN_TREE
+                      L_PAREN "("
+                      IDENT "any"
+                      TOKEN_TREE
+                        L_PAREN "("
+                        R_PAREN ")"
+                      R_PAREN ")"
+                  R_BRACK "]"
+                WHITESPACE " "
+                DOT2 ".."
+              WHITESPACE " "
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.txt b/crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.txt
deleted file mode 100644
index f69ae1d6445..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0102_record_pat_field_list.txt
+++ /dev/null
@@ -1,175 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_PAT_FIELD
-                IDENT_PAT
-                  NAME
-                    IDENT "f"
-              COMMA ","
-              WHITESPACE " "
-              RECORD_PAT_FIELD
-                IDENT_PAT
-                  REF_KW "ref"
-                  WHITESPACE " "
-                  MUT_KW "mut"
-                  WHITESPACE " "
-                  NAME
-                    IDENT "g"
-              WHITESPACE " "
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_PAT_FIELD
-                NAME_REF
-                  IDENT "h"
-                COLON ":"
-                WHITESPACE " "
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-              COMMA ","
-              WHITESPACE " "
-              REST_PAT
-                DOT2 ".."
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_PAT_FIELD
-                NAME_REF
-                  IDENT "h"
-                COLON ":"
-                WHITESPACE " "
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-              COMMA ","
-              WHITESPACE " "
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              REST_PAT
-                ATTR
-                  POUND "#"
-                  L_BRACK "["
-                  META
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "cfg"
-                    TOKEN_TREE
-                      L_PAREN "("
-                      IDENT "any"
-                      TOKEN_TREE
-                        L_PAREN "("
-                        R_PAREN ")"
-                      R_PAREN ")"
-                  R_BRACK "]"
-                WHITESPACE " "
-                DOT2 ".."
-              WHITESPACE " "
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0103_array_expr.rast b/crates/parser/test_data/parser/inline/ok/0103_array_expr.rast
index 1e0d2fa07a7..60395948c18 100644
--- a/crates/parser/test_data/parser/inline/ok/0103_array_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0103_array_expr.rast
@@ -1,55 +1,55 @@
-SOURCE_FILE@0..55
-  FN@0..54
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..54
-      STMT_LIST@9..54
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..18
-          ARRAY_EXPR@15..17
-            L_BRACK@15..16 "["
-            R_BRACK@16..17 "]"
-          SEMICOLON@17..18 ";"
-        WHITESPACE@18..23 "\n    "
-        EXPR_STMT@23..27
-          ARRAY_EXPR@23..26
-            L_BRACK@23..24 "["
-            LITERAL@24..25
-              INT_NUMBER@24..25 "1"
-            R_BRACK@25..26 "]"
-          SEMICOLON@26..27 ";"
-        WHITESPACE@27..32 "\n    "
-        EXPR_STMT@32..40
-          ARRAY_EXPR@32..39
-            L_BRACK@32..33 "["
-            LITERAL@33..34
-              INT_NUMBER@33..34 "1"
-            COMMA@34..35 ","
-            WHITESPACE@35..36 " "
-            LITERAL@36..37
-              INT_NUMBER@36..37 "2"
-            COMMA@37..38 ","
-            R_BRACK@38..39 "]"
-          SEMICOLON@39..40 ";"
-        WHITESPACE@40..45 "\n    "
-        EXPR_STMT@45..52
-          ARRAY_EXPR@45..51
-            L_BRACK@45..46 "["
-            LITERAL@46..47
-              INT_NUMBER@46..47 "1"
-            SEMICOLON@47..48 ";"
-            WHITESPACE@48..49 " "
-            LITERAL@49..50
-              INT_NUMBER@49..50 "2"
-            R_BRACK@50..51 "]"
-          SEMICOLON@51..52 ";"
-        WHITESPACE@52..53 "\n"
-        R_CURLY@53..54 "}"
-  WHITESPACE@54..55 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          ARRAY_EXPR
+            L_BRACK "["
+            R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          ARRAY_EXPR
+            L_BRACK "["
+            LITERAL
+              INT_NUMBER "1"
+            R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          ARRAY_EXPR
+            L_BRACK "["
+            LITERAL
+              INT_NUMBER "1"
+            COMMA ","
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+            COMMA ","
+            R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          ARRAY_EXPR
+            L_BRACK "["
+            LITERAL
+              INT_NUMBER "1"
+            SEMICOLON ";"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+            R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0103_array_expr.txt b/crates/parser/test_data/parser/inline/ok/0103_array_expr.txt
deleted file mode 100644
index 60395948c18..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0103_array_expr.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          ARRAY_EXPR
-            L_BRACK "["
-            R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          ARRAY_EXPR
-            L_BRACK "["
-            LITERAL
-              INT_NUMBER "1"
-            R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          ARRAY_EXPR
-            L_BRACK "["
-            LITERAL
-              INT_NUMBER "1"
-            COMMA ","
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-            COMMA ","
-            R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          ARRAY_EXPR
-            L_BRACK "["
-            LITERAL
-              INT_NUMBER "1"
-            SEMICOLON ";"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-            R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.rast b/crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.rast
index 1244a503134..fd83daf841f 100644
--- a/crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.rast
+++ b/crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.rast
@@ -1,41 +1,41 @@
-SOURCE_FILE@0..29
-  TYPE_ALIAS@0..28
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "F"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..27
-      PATH@9..27
-        PATH_SEGMENT@9..27
-          NAME_REF@9..12
-            IDENT@9..12 "Box"
-          GENERIC_ARG_LIST@12..27
-            L_ANGLE@12..13 "<"
-            TYPE_ARG@13..26
-              PATH_TYPE@13..26
-                PATH@13..26
-                  PATH_SEGMENT@13..26
-                    NAME_REF@13..15
-                      IDENT@13..15 "Fn"
-                    PARAM_LIST@15..20
-                      L_PAREN@15..16 "("
-                      PARAM@16..19
-                        PATH_TYPE@16..19
-                          PATH@16..19
-                            PATH_SEGMENT@16..19
-                              NAME_REF@16..19
-                                IDENT@16..19 "i32"
-                      R_PAREN@19..20 ")"
-                    WHITESPACE@20..21 " "
-                    RET_TYPE@21..26
-                      THIN_ARROW@21..23 "->"
-                      WHITESPACE@23..24 " "
-                      TUPLE_TYPE@24..26
-                        L_PAREN@24..25 "("
-                        R_PAREN@25..26 ")"
-            R_ANGLE@26..27 ">"
-    SEMICOLON@27..28 ";"
-  WHITESPACE@28..29 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "F"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Box"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            TYPE_ARG
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Fn"
+                    PARAM_LIST
+                      L_PAREN "("
+                      PARAM
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "i32"
+                      R_PAREN ")"
+                    WHITESPACE " "
+                    RET_TYPE
+                      THIN_ARROW "->"
+                      WHITESPACE " "
+                      TUPLE_TYPE
+                        L_PAREN "("
+                        R_PAREN ")"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.txt b/crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.txt
deleted file mode 100644
index fd83daf841f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0104_path_fn_trait_args.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "F"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Box"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            TYPE_ARG
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Fn"
-                    PARAM_LIST
-                      L_PAREN "("
-                      PARAM
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "i32"
-                      R_PAREN ")"
-                    WHITESPACE " "
-                    RET_TYPE
-                      THIN_ARROW "->"
-                      WHITESPACE " "
-                      TUPLE_TYPE
-                        L_PAREN "("
-                        R_PAREN ")"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0106_lambda_expr.rast b/crates/parser/test_data/parser/inline/ok/0106_lambda_expr.rast
index 3497de01c50..bc54b018697 100644
--- a/crates/parser/test_data/parser/inline/ok/0106_lambda_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0106_lambda_expr.rast
@@ -1,140 +1,204 @@
-SOURCE_FILE@0..134
-  FN@0..133
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..133
-      STMT_LIST@9..133
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..21
-          CLOSURE_EXPR@15..20
-            PARAM_LIST@15..17
-              PIPE@15..16 "|"
-              PIPE@16..17 "|"
-            WHITESPACE@17..18 " "
-            TUPLE_EXPR@18..20
-              L_PAREN@18..19 "("
-              R_PAREN@19..20 ")"
-          SEMICOLON@20..21 ";"
-        WHITESPACE@21..26 "\n    "
-        EXPR_STMT@26..43
-          CLOSURE_EXPR@26..42
-            PARAM_LIST@26..28
-              PIPE@26..27 "|"
-              PIPE@27..28 "|"
-            WHITESPACE@28..29 " "
-            RET_TYPE@29..35
-              THIN_ARROW@29..31 "->"
-              WHITESPACE@31..32 " "
-              PATH_TYPE@32..35
-                PATH@32..35
-                  PATH_SEGMENT@32..35
-                    NAME_REF@32..35
-                      IDENT@32..35 "i32"
-            WHITESPACE@35..36 " "
-            BLOCK_EXPR@36..42
-              STMT_LIST@36..42
-                L_CURLY@36..37 "{"
-                WHITESPACE@37..38 " "
-                LITERAL@38..40
-                  INT_NUMBER@38..40 "92"
-                WHITESPACE@40..41 " "
-                R_CURLY@41..42 "}"
-          SEMICOLON@42..43 ";"
-        WHITESPACE@43..48 "\n    "
-        EXPR_STMT@48..54
-          CLOSURE_EXPR@48..53
-            PARAM_LIST@48..51
-              PIPE@48..49 "|"
-              PARAM@49..50
-                IDENT_PAT@49..50
-                  NAME@49..50
-                    IDENT@49..50 "x"
-              PIPE@50..51 "|"
-            WHITESPACE@51..52 " "
-            PATH_EXPR@52..53
-              PATH@52..53
-                PATH_SEGMENT@52..53
-                  NAME_REF@52..53
-                    IDENT@52..53 "x"
-          SEMICOLON@53..54 ";"
-        WHITESPACE@54..59 "\n    "
-        EXPR_STMT@59..76
-          CLOSURE_EXPR@59..75
-            MOVE_KW@59..63 "move"
-            WHITESPACE@63..64 " "
-            PARAM_LIST@64..73
-              PIPE@64..65 "|"
-              PARAM@65..71
-                IDENT_PAT@65..66
-                  NAME@65..66
-                    IDENT@65..66 "x"
-                COLON@66..67 ":"
-                WHITESPACE@67..68 " "
-                PATH_TYPE@68..71
-                  PATH@68..71
-                    PATH_SEGMENT@68..71
-                      NAME_REF@68..71
-                        IDENT@68..71 "i32"
-              COMMA@71..72 ","
-              PIPE@72..73 "|"
-            WHITESPACE@73..74 " "
-            PATH_EXPR@74..75
-              PATH@74..75
-                PATH_SEGMENT@74..75
-                  NAME_REF@74..75
-                    IDENT@74..75 "x"
-          SEMICOLON@75..76 ";"
-        WHITESPACE@76..81 "\n    "
-        EXPR_STMT@81..93
-          CLOSURE_EXPR@81..92
-            ASYNC_KW@81..86 "async"
-            WHITESPACE@86..87 " "
-            PARAM_LIST@87..89
-              PIPE@87..88 "|"
-              PIPE@88..89 "|"
-            WHITESPACE@89..90 " "
-            BLOCK_EXPR@90..92
-              STMT_LIST@90..92
-                L_CURLY@90..91 "{"
-                R_CURLY@91..92 "}"
-          SEMICOLON@92..93 ";"
-        WHITESPACE@93..98 "\n    "
-        EXPR_STMT@98..109
-          CLOSURE_EXPR@98..108
-            MOVE_KW@98..102 "move"
-            WHITESPACE@102..103 " "
-            PARAM_LIST@103..105
-              PIPE@103..104 "|"
-              PIPE@104..105 "|"
-            WHITESPACE@105..106 " "
-            BLOCK_EXPR@106..108
-              STMT_LIST@106..108
-                L_CURLY@106..107 "{"
-                R_CURLY@107..108 "}"
-          SEMICOLON@108..109 ";"
-        WHITESPACE@109..114 "\n    "
-        EXPR_STMT@114..131
-          CLOSURE_EXPR@114..130
-            ASYNC_KW@114..119 "async"
-            WHITESPACE@119..120 " "
-            MOVE_KW@120..124 "move"
-            WHITESPACE@124..125 " "
-            PARAM_LIST@125..127
-              PIPE@125..126 "|"
-              PIPE@126..127 "|"
-            WHITESPACE@127..128 " "
-            BLOCK_EXPR@128..130
-              STMT_LIST@128..130
-                L_CURLY@128..129 "{"
-                R_CURLY@129..130 "}"
-          SEMICOLON@130..131 ";"
-        WHITESPACE@131..132 "\n"
-        R_CURLY@132..133 "}"
-  WHITESPACE@133..134 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            RET_TYPE
+              THIN_ARROW "->"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i32"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "92"
+                WHITESPACE " "
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            PARAM_LIST
+              PIPE "|"
+              PARAM
+                IDENT_PAT
+                  NAME
+                    IDENT "x"
+              PIPE "|"
+            WHITESPACE " "
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            MOVE_KW "move"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PARAM
+                IDENT_PAT
+                  NAME
+                    IDENT "x"
+                COLON ":"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "i32"
+              COMMA ","
+              PIPE "|"
+            WHITESPACE " "
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            ASYNC_KW "async"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            MOVE_KW "move"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            ASYNC_KW "async"
+            WHITESPACE " "
+            MOVE_KW "move"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            STATIC_KW "static"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            STATIC_KW "static"
+            WHITESPACE " "
+            MOVE_KW "move"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            STATIC_KW "static"
+            WHITESPACE " "
+            ASYNC_KW "async"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CLOSURE_EXPR
+            STATIC_KW "static"
+            WHITESPACE " "
+            ASYNC_KW "async"
+            WHITESPACE " "
+            MOVE_KW "move"
+            WHITESPACE " "
+            PARAM_LIST
+              PIPE "|"
+              PIPE "|"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0106_lambda_expr.txt b/crates/parser/test_data/parser/inline/ok/0106_lambda_expr.txt
deleted file mode 100644
index bc54b018697..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0106_lambda_expr.txt
+++ /dev/null
@@ -1,204 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            RET_TYPE
-              THIN_ARROW "->"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i32"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "92"
-                WHITESPACE " "
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            PARAM_LIST
-              PIPE "|"
-              PARAM
-                IDENT_PAT
-                  NAME
-                    IDENT "x"
-              PIPE "|"
-            WHITESPACE " "
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            MOVE_KW "move"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PARAM
-                IDENT_PAT
-                  NAME
-                    IDENT "x"
-                COLON ":"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "i32"
-              COMMA ","
-              PIPE "|"
-            WHITESPACE " "
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            ASYNC_KW "async"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            MOVE_KW "move"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            ASYNC_KW "async"
-            WHITESPACE " "
-            MOVE_KW "move"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            STATIC_KW "static"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            STATIC_KW "static"
-            WHITESPACE " "
-            MOVE_KW "move"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            STATIC_KW "static"
-            WHITESPACE " "
-            ASYNC_KW "async"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CLOSURE_EXPR
-            STATIC_KW "static"
-            WHITESPACE " "
-            ASYNC_KW "async"
-            WHITESPACE " "
-            MOVE_KW "move"
-            WHITESPACE " "
-            PARAM_LIST
-              PIPE "|"
-              PIPE "|"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0107_method_call_expr.rast b/crates/parser/test_data/parser/inline/ok/0107_method_call_expr.rast
index 9cddb373ff6..dcbcfe1231e 100644
--- a/crates/parser/test_data/parser/inline/ok/0107_method_call_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0107_method_call_expr.rast
@@ -1,63 +1,63 @@
-SOURCE_FILE@0..49
-  FN@0..48
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..48
-      STMT_LIST@9..48
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..23
-          METHOD_CALL_EXPR@15..22
-            PATH_EXPR@15..16
-              PATH@15..16
-                PATH_SEGMENT@15..16
-                  NAME_REF@15..16
-                    IDENT@15..16 "x"
-            DOT@16..17 "."
-            NAME_REF@17..20
-              IDENT@17..20 "foo"
-            ARG_LIST@20..22
-              L_PAREN@20..21 "("
-              R_PAREN@21..22 ")"
-          SEMICOLON@22..23 ";"
-        WHITESPACE@23..28 "\n    "
-        EXPR_STMT@28..46
-          METHOD_CALL_EXPR@28..45
-            PATH_EXPR@28..29
-              PATH@28..29
-                PATH_SEGMENT@28..29
-                  NAME_REF@28..29
-                    IDENT@28..29 "y"
-            DOT@29..30 "."
-            NAME_REF@30..33
-              IDENT@30..33 "bar"
-            GENERIC_ARG_LIST@33..38
-              COLON2@33..35 "::"
-              L_ANGLE@35..36 "<"
-              TYPE_ARG@36..37
-                PATH_TYPE@36..37
-                  PATH@36..37
-                    PATH_SEGMENT@36..37
-                      NAME_REF@36..37
-                        IDENT@36..37 "T"
-              R_ANGLE@37..38 ">"
-            ARG_LIST@38..45
-              L_PAREN@38..39 "("
-              LITERAL@39..40
-                INT_NUMBER@39..40 "1"
-              COMMA@40..41 ","
-              WHITESPACE@41..42 " "
-              LITERAL@42..43
-                INT_NUMBER@42..43 "2"
-              COMMA@43..44 ","
-              R_PAREN@44..45 ")"
-          SEMICOLON@45..46 ";"
-        WHITESPACE@46..47 "\n"
-        R_CURLY@47..48 "}"
-  WHITESPACE@48..49 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          METHOD_CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+            DOT "."
+            NAME_REF
+              IDENT "foo"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          METHOD_CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "y"
+            DOT "."
+            NAME_REF
+              IDENT "bar"
+            GENERIC_ARG_LIST
+              COLON2 "::"
+              L_ANGLE "<"
+              TYPE_ARG
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "T"
+              R_ANGLE ">"
+            ARG_LIST
+              L_PAREN "("
+              LITERAL
+                INT_NUMBER "1"
+              COMMA ","
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "2"
+              COMMA ","
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0107_method_call_expr.txt b/crates/parser/test_data/parser/inline/ok/0107_method_call_expr.txt
deleted file mode 100644
index dcbcfe1231e..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0107_method_call_expr.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          METHOD_CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-            DOT "."
-            NAME_REF
-              IDENT "foo"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          METHOD_CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "y"
-            DOT "."
-            NAME_REF
-              IDENT "bar"
-            GENERIC_ARG_LIST
-              COLON2 "::"
-              L_ANGLE "<"
-              TYPE_ARG
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "T"
-              R_ANGLE ">"
-            ARG_LIST
-              L_PAREN "("
-              LITERAL
-                INT_NUMBER "1"
-              COMMA ","
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "2"
-              COMMA ","
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0108_tuple_expr.rast b/crates/parser/test_data/parser/inline/ok/0108_tuple_expr.rast
index a6b247c0acc..ac5a7170315 100644
--- a/crates/parser/test_data/parser/inline/ok/0108_tuple_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0108_tuple_expr.rast
@@ -1,39 +1,39 @@
-SOURCE_FILE@0..40
-  FN@0..39
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..39
-      STMT_LIST@9..39
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..18
-          TUPLE_EXPR@15..17
-            L_PAREN@15..16 "("
-            R_PAREN@16..17 ")"
-          SEMICOLON@17..18 ";"
-        WHITESPACE@18..23 "\n    "
-        EXPR_STMT@23..27
-          PAREN_EXPR@23..26
-            L_PAREN@23..24 "("
-            LITERAL@24..25
-              INT_NUMBER@24..25 "1"
-            R_PAREN@25..26 ")"
-          SEMICOLON@26..27 ";"
-        WHITESPACE@27..32 "\n    "
-        EXPR_STMT@32..37
-          TUPLE_EXPR@32..36
-            L_PAREN@32..33 "("
-            LITERAL@33..34
-              INT_NUMBER@33..34 "1"
-            COMMA@34..35 ","
-            R_PAREN@35..36 ")"
-          SEMICOLON@36..37 ";"
-        WHITESPACE@37..38 "\n"
-        R_CURLY@38..39 "}"
-  WHITESPACE@39..40 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          PAREN_EXPR
+            L_PAREN "("
+            LITERAL
+              INT_NUMBER "1"
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          TUPLE_EXPR
+            L_PAREN "("
+            LITERAL
+              INT_NUMBER "1"
+            COMMA ","
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0108_tuple_expr.txt b/crates/parser/test_data/parser/inline/ok/0108_tuple_expr.txt
deleted file mode 100644
index ac5a7170315..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0108_tuple_expr.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          PAREN_EXPR
-            L_PAREN "("
-            LITERAL
-              INT_NUMBER "1"
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          TUPLE_EXPR
-            L_PAREN "("
-            LITERAL
-              INT_NUMBER "1"
-            COMMA ","
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0109_label.rast b/crates/parser/test_data/parser/inline/ok/0109_label.rast
index 688e9dca4fb..48d0bde845a 100644
--- a/crates/parser/test_data/parser/inline/ok/0109_label.rast
+++ b/crates/parser/test_data/parser/inline/ok/0109_label.rast
@@ -1,71 +1,70 @@
-SOURCE_FILE@0..74
-  FN@0..73
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..73
-      STMT_LIST@9..73
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..26
-          LOOP_EXPR@15..26
-            LABEL@15..18
-              LIFETIME@15..17
-                LIFETIME_IDENT@15..17 "'a"
-              COLON@17..18 ":"
-            WHITESPACE@18..19 " "
-            LOOP_KW@19..23 "loop"
-            WHITESPACE@23..24 " "
-            BLOCK_EXPR@24..26
-              STMT_LIST@24..26
-                L_CURLY@24..25 "{"
-                R_CURLY@25..26 "}"
-        WHITESPACE@26..31 "\n    "
-        EXPR_STMT@31..48
-          WHILE_EXPR@31..48
-            LABEL@31..34
-              LIFETIME@31..33
-                LIFETIME_IDENT@31..33 "'b"
-              COLON@33..34 ":"
-            WHITESPACE@34..35 " "
-            WHILE_KW@35..40 "while"
-            WHITESPACE@40..41 " "
-            CONDITION@41..45
-              LITERAL@41..45
-                TRUE_KW@41..45 "true"
-            WHITESPACE@45..46 " "
-            BLOCK_EXPR@46..48
-              STMT_LIST@46..48
-                L_CURLY@46..47 "{"
-                R_CURLY@47..48 "}"
-        WHITESPACE@48..53 "\n    "
-        FOR_EXPR@53..71
-          LABEL@53..56
-            LIFETIME@53..55
-              LIFETIME_IDENT@53..55 "'c"
-            COLON@55..56 ":"
-          WHITESPACE@56..57 " "
-          FOR_KW@57..60 "for"
-          WHITESPACE@60..61 " "
-          IDENT_PAT@61..62
-            NAME@61..62
-              IDENT@61..62 "x"
-          WHITESPACE@62..63 " "
-          IN_KW@63..65 "in"
-          WHITESPACE@65..66 " "
-          TUPLE_EXPR@66..68
-            L_PAREN@66..67 "("
-            R_PAREN@67..68 ")"
-          WHITESPACE@68..69 " "
-          BLOCK_EXPR@69..71
-            STMT_LIST@69..71
-              L_CURLY@69..70 "{"
-              R_CURLY@70..71 "}"
-        WHITESPACE@71..72 "\n"
-        R_CURLY@72..73 "}"
-  WHITESPACE@73..74 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          LOOP_EXPR
+            LABEL
+              LIFETIME
+                LIFETIME_IDENT "'a"
+              COLON ":"
+            WHITESPACE " "
+            LOOP_KW "loop"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          WHILE_EXPR
+            LABEL
+              LIFETIME
+                LIFETIME_IDENT "'b"
+              COLON ":"
+            WHITESPACE " "
+            WHILE_KW "while"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        FOR_EXPR
+          LABEL
+            LIFETIME
+              LIFETIME_IDENT "'c"
+            COLON ":"
+          WHITESPACE " "
+          FOR_KW "for"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          IN_KW "in"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0109_label.txt b/crates/parser/test_data/parser/inline/ok/0109_label.txt
deleted file mode 100644
index 48d0bde845a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0109_label.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          LOOP_EXPR
-            LABEL
-              LIFETIME
-                LIFETIME_IDENT "'a"
-              COLON ":"
-            WHITESPACE " "
-            LOOP_KW "loop"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          WHILE_EXPR
-            LABEL
-              LIFETIME
-                LIFETIME_IDENT "'b"
-              COLON ":"
-            WHITESPACE " "
-            WHILE_KW "while"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        FOR_EXPR
-          LABEL
-            LIFETIME
-              LIFETIME_IDENT "'c"
-            COLON ":"
-          WHITESPACE " "
-          FOR_KW "for"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          IN_KW "in"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0111_tuple_pat.rast b/crates/parser/test_data/parser/inline/ok/0111_tuple_pat.rast
index 994c345c9db..cebe98c43aa 100644
--- a/crates/parser/test_data/parser/inline/ok/0111_tuple_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0111_tuple_pat.rast
@@ -1,90 +1,90 @@
-SOURCE_FILE@0..94
-  FN@0..93
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..93
-      STMT_LIST@10..93
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..36
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          TUPLE_PAT@20..30
-            L_PAREN@20..21 "("
-            IDENT_PAT@21..22
-              NAME@21..22
-                IDENT@21..22 "a"
-            COMMA@22..23 ","
-            WHITESPACE@23..24 " "
-            IDENT_PAT@24..25
-              NAME@24..25
-                IDENT@24..25 "b"
-            COMMA@25..26 ","
-            WHITESPACE@26..27 " "
-            REST_PAT@27..29
-              DOT2@27..29 ".."
-            R_PAREN@29..30 ")"
-          WHITESPACE@30..31 " "
-          EQ@31..32 "="
-          WHITESPACE@32..33 " "
-          TUPLE_EXPR@33..35
-            L_PAREN@33..34 "("
-            R_PAREN@34..35 ")"
-          SEMICOLON@35..36 ";"
-        WHITESPACE@36..41 "\n    "
-        LET_STMT@41..55
-          LET_KW@41..44 "let"
-          WHITESPACE@44..45 " "
-          TUPLE_PAT@45..49
-            L_PAREN@45..46 "("
-            IDENT_PAT@46..47
-              NAME@46..47
-                IDENT@46..47 "a"
-            COMMA@47..48 ","
-            R_PAREN@48..49 ")"
-          WHITESPACE@49..50 " "
-          EQ@50..51 "="
-          WHITESPACE@51..52 " "
-          TUPLE_EXPR@52..54
-            L_PAREN@52..53 "("
-            R_PAREN@53..54 ")"
-          SEMICOLON@54..55 ";"
-        WHITESPACE@55..60 "\n    "
-        LET_STMT@60..74
-          LET_KW@60..63 "let"
-          WHITESPACE@63..64 " "
-          TUPLE_PAT@64..68
-            L_PAREN@64..65 "("
-            REST_PAT@65..67
-              DOT2@65..67 ".."
-            R_PAREN@67..68 ")"
-          WHITESPACE@68..69 " "
-          EQ@69..70 "="
-          WHITESPACE@70..71 " "
-          TUPLE_EXPR@71..73
-            L_PAREN@71..72 "("
-            R_PAREN@72..73 ")"
-          SEMICOLON@73..74 ";"
-        WHITESPACE@74..79 "\n    "
-        LET_STMT@79..91
-          LET_KW@79..82 "let"
-          WHITESPACE@82..83 " "
-          TUPLE_PAT@83..85
-            L_PAREN@83..84 "("
-            R_PAREN@84..85 ")"
-          WHITESPACE@85..86 " "
-          EQ@86..87 "="
-          WHITESPACE@87..88 " "
-          TUPLE_EXPR@88..90
-            L_PAREN@88..89 "("
-            R_PAREN@89..90 ")"
-          SEMICOLON@90..91 ";"
-        WHITESPACE@91..92 "\n"
-        R_CURLY@92..93 "}"
-  WHITESPACE@93..94 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "b"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0111_tuple_pat.txt b/crates/parser/test_data/parser/inline/ok/0111_tuple_pat.txt
deleted file mode 100644
index cebe98c43aa..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0111_tuple_pat.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "b"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0112_bind_pat.rast b/crates/parser/test_data/parser/inline/ok/0112_bind_pat.rast
index 70f764944e3..eb1c32474a2 100644
--- a/crates/parser/test_data/parser/inline/ok/0112_bind_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0112_bind_pat.rast
@@ -1,128 +1,128 @@
-SOURCE_FILE@0..146
-  FN@0..145
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..145
-      STMT_LIST@10..145
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..27
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          IDENT_PAT@20..21
-            NAME@20..21
-              IDENT@20..21 "a"
-          WHITESPACE@21..22 " "
-          EQ@22..23 "="
-          WHITESPACE@23..24 " "
-          TUPLE_EXPR@24..26
-            L_PAREN@24..25 "("
-            R_PAREN@25..26 ")"
-          SEMICOLON@26..27 ";"
-        WHITESPACE@27..32 "\n    "
-        LET_STMT@32..47
-          LET_KW@32..35 "let"
-          WHITESPACE@35..36 " "
-          IDENT_PAT@36..41
-            MUT_KW@36..39 "mut"
-            WHITESPACE@39..40 " "
-            NAME@40..41
-              IDENT@40..41 "b"
-          WHITESPACE@41..42 " "
-          EQ@42..43 "="
-          WHITESPACE@43..44 " "
-          TUPLE_EXPR@44..46
-            L_PAREN@44..45 "("
-            R_PAREN@45..46 ")"
-          SEMICOLON@46..47 ";"
-        WHITESPACE@47..52 "\n    "
-        LET_STMT@52..67
-          LET_KW@52..55 "let"
-          WHITESPACE@55..56 " "
-          IDENT_PAT@56..61
-            REF_KW@56..59 "ref"
-            WHITESPACE@59..60 " "
-            NAME@60..61
-              IDENT@60..61 "c"
-          WHITESPACE@61..62 " "
-          EQ@62..63 "="
-          WHITESPACE@63..64 " "
-          TUPLE_EXPR@64..66
-            L_PAREN@64..65 "("
-            R_PAREN@65..66 ")"
-          SEMICOLON@66..67 ";"
-        WHITESPACE@67..72 "\n    "
-        LET_STMT@72..91
-          LET_KW@72..75 "let"
-          WHITESPACE@75..76 " "
-          IDENT_PAT@76..85
-            REF_KW@76..79 "ref"
-            WHITESPACE@79..80 " "
-            MUT_KW@80..83 "mut"
-            WHITESPACE@83..84 " "
-            NAME@84..85
-              IDENT@84..85 "d"
-          WHITESPACE@85..86 " "
-          EQ@86..87 "="
-          WHITESPACE@87..88 " "
-          TUPLE_EXPR@88..90
-            L_PAREN@88..89 "("
-            R_PAREN@89..90 ")"
-          SEMICOLON@90..91 ";"
-        WHITESPACE@91..96 "\n    "
-        LET_STMT@96..111
-          LET_KW@96..99 "let"
-          WHITESPACE@99..100 " "
-          IDENT_PAT@100..105
-            NAME@100..101
-              IDENT@100..101 "e"
-            WHITESPACE@101..102 " "
-            AT@102..103 "@"
-            WHITESPACE@103..104 " "
-            WILDCARD_PAT@104..105
-              UNDERSCORE@104..105 "_"
-          WHITESPACE@105..106 " "
-          EQ@106..107 "="
-          WHITESPACE@107..108 " "
-          TUPLE_EXPR@108..110
-            L_PAREN@108..109 "("
-            R_PAREN@109..110 ")"
-          SEMICOLON@110..111 ";"
-        WHITESPACE@111..116 "\n    "
-        LET_STMT@116..143
-          LET_KW@116..119 "let"
-          WHITESPACE@119..120 " "
-          IDENT_PAT@120..137
-            REF_KW@120..123 "ref"
-            WHITESPACE@123..124 " "
-            MUT_KW@124..127 "mut"
-            WHITESPACE@127..128 " "
-            NAME@128..129
-              IDENT@128..129 "f"
-            WHITESPACE@129..130 " "
-            AT@130..131 "@"
-            WHITESPACE@131..132 " "
-            IDENT_PAT@132..137
-              NAME@132..133
-                IDENT@132..133 "g"
-              WHITESPACE@133..134 " "
-              AT@134..135 "@"
-              WHITESPACE@135..136 " "
-              WILDCARD_PAT@136..137
-                UNDERSCORE@136..137 "_"
-          WHITESPACE@137..138 " "
-          EQ@138..139 "="
-          WHITESPACE@139..140 " "
-          TUPLE_EXPR@140..142
-            L_PAREN@140..141 "("
-            R_PAREN@141..142 ")"
-          SEMICOLON@142..143 ";"
-        WHITESPACE@143..144 "\n"
-        R_CURLY@144..145 "}"
-  WHITESPACE@145..146 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "a"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "b"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            REF_KW "ref"
+            WHITESPACE " "
+            NAME
+              IDENT "c"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            REF_KW "ref"
+            WHITESPACE " "
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "d"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "e"
+            WHITESPACE " "
+            AT "@"
+            WHITESPACE " "
+            WILDCARD_PAT
+              UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            REF_KW "ref"
+            WHITESPACE " "
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "f"
+            WHITESPACE " "
+            AT "@"
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "g"
+              WHITESPACE " "
+              AT "@"
+              WHITESPACE " "
+              WILDCARD_PAT
+                UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0112_bind_pat.txt b/crates/parser/test_data/parser/inline/ok/0112_bind_pat.txt
deleted file mode 100644
index eb1c32474a2..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0112_bind_pat.txt
+++ /dev/null
@@ -1,128 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "a"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "b"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            REF_KW "ref"
-            WHITESPACE " "
-            NAME
-              IDENT "c"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            REF_KW "ref"
-            WHITESPACE " "
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "d"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "e"
-            WHITESPACE " "
-            AT "@"
-            WHITESPACE " "
-            WILDCARD_PAT
-              UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            REF_KW "ref"
-            WHITESPACE " "
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "f"
-            WHITESPACE " "
-            AT "@"
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "g"
-              WHITESPACE " "
-              AT "@"
-              WHITESPACE " "
-              WILDCARD_PAT
-                UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.rast b/crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.rast
index 538b3577acd..8bd90a7f675 100644
--- a/crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.rast
@@ -1,57 +1,57 @@
-SOURCE_FILE@0..50
-  FN@0..49
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    BLOCK_EXPR@8..49
-      STMT_LIST@8..49
-        L_CURLY@8..9 "{"
-        WHITESPACE@9..14 "\n    "
-        SEMICOLON@14..15 ";"
-        SEMICOLON@15..16 ";"
-        SEMICOLON@16..17 ";"
-        EXPR_STMT@17..29
-          CALL_EXPR@17..28
-            PATH_EXPR@17..26
-              PATH@17..26
-                PATH_SEGMENT@17..26
-                  NAME_REF@17..26
-                    IDENT@17..26 "some_expr"
-            ARG_LIST@26..28
-              L_PAREN@26..27 "("
-              R_PAREN@27..28 ")"
-          SEMICOLON@28..29 ";"
-        SEMICOLON@29..30 ";"
-        SEMICOLON@30..31 ";"
-        SEMICOLON@31..32 ";"
-        EXPR_STMT@32..38
-          BLOCK_EXPR@32..37
-            STMT_LIST@32..37
-              L_CURLY@32..33 "{"
-              SEMICOLON@33..34 ";"
-              SEMICOLON@34..35 ";"
-              SEMICOLON@35..36 ";"
-              R_CURLY@36..37 "}"
-          SEMICOLON@37..38 ";"
-        SEMICOLON@38..39 ";"
-        SEMICOLON@39..40 ";"
-        SEMICOLON@40..41 ";"
-        CALL_EXPR@41..47
-          PATH_EXPR@41..43
-            PATH@41..43
-              PATH_SEGMENT@41..43
-                NAME_REF@41..43
-                  IDENT@41..43 "Ok"
-          ARG_LIST@43..47
-            L_PAREN@43..44 "("
-            TUPLE_EXPR@44..46
-              L_PAREN@44..45 "("
-              R_PAREN@45..46 ")"
-            R_PAREN@46..47 ")"
-        WHITESPACE@47..48 "\n"
-        R_CURLY@48..49 "}"
-  WHITESPACE@49..50 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "some_expr"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              SEMICOLON ";"
+              SEMICOLON ";"
+              SEMICOLON ";"
+              R_CURLY "}"
+          SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        CALL_EXPR
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Ok"
+          ARG_LIST
+            L_PAREN "("
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+            R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.txt b/crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.txt
deleted file mode 100644
index 8bd90a7f675..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0113_nocontentexpr.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "some_expr"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              SEMICOLON ";"
-              SEMICOLON ";"
-              SEMICOLON ";"
-              R_CURLY "}"
-          SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        CALL_EXPR
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Ok"
-          ARG_LIST
-            L_PAREN "("
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-            R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.rast b/crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.rast
index 31961113634..aab77416570 100644
--- a/crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.rast
+++ b/crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.rast
@@ -1,42 +1,42 @@
-SOURCE_FILE@0..31
-  STRUCT@0..30
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    GENERIC_PARAM_LIST@8..11
-      L_ANGLE@8..9 "<"
-      TYPE_PARAM@9..10
-        NAME@9..10
-          IDENT@9..10 "T"
-      R_ANGLE@10..11 ">"
-    TUPLE_FIELD_LIST@11..14
-      L_PAREN@11..12 "("
-      TUPLE_FIELD@12..13
-        PATH_TYPE@12..13
-          PATH@12..13
-            PATH_SEGMENT@12..13
-              NAME_REF@12..13
-                IDENT@12..13 "T"
-      R_PAREN@13..14 ")"
-    WHITESPACE@14..15 " "
-    WHERE_CLAUSE@15..29
-      WHERE_KW@15..20 "where"
-      WHITESPACE@20..21 " "
-      WHERE_PRED@21..29
-        PATH_TYPE@21..22
-          PATH@21..22
-            PATH_SEGMENT@21..22
-              NAME_REF@21..22
-                IDENT@21..22 "T"
-        COLON@22..23 ":"
-        WHITESPACE@23..24 " "
-        TYPE_BOUND_LIST@24..29
-          TYPE_BOUND@24..29
-            PATH_TYPE@24..29
-              PATH@24..29
-                PATH_SEGMENT@24..29
-                  NAME_REF@24..29
-                    IDENT@24..29 "Clone"
-    SEMICOLON@29..30 ";"
-  WHITESPACE@30..31 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+      R_PAREN ")"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.txt b/crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.txt
deleted file mode 100644
index aab77416570..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0114_tuple_struct_where.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-      R_PAREN ")"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.rast b/crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.rast
index 9a0bcdc18e3..1699602f4fb 100644
--- a/crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.rast
+++ b/crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.rast
@@ -1,28 +1,28 @@
-SOURCE_FILE@0..24
-  STRUCT@0..23
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    TUPLE_FIELD_LIST@9..22
-      L_PAREN@9..10 "("
-      TUPLE_FIELD@10..21
-        ATTR@10..17
-          POUND@10..11 "#"
-          L_BRACK@11..12 "["
-          META@12..16
-            PATH@12..16
-              PATH_SEGMENT@12..16
-                NAME_REF@12..16
-                  IDENT@12..16 "attr"
-          R_BRACK@16..17 "]"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "f32"
-      R_PAREN@21..22 ")"
-    SEMICOLON@22..23 ";"
-  WHITESPACE@23..24 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "attr"
+          R_BRACK "]"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "f32"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.txt b/crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.txt
deleted file mode 100644
index 1699602f4fb..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0115_tuple_field_attrs.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "attr"
-          R_BRACK "]"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "f32"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0117_macro_call_type.rast b/crates/parser/test_data/parser/inline/ok/0117_macro_call_type.rast
index 1ff3f7656a4..8165cb7d9ba 100644
--- a/crates/parser/test_data/parser/inline/ok/0117_macro_call_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0117_macro_call_type.rast
@@ -1,46 +1,46 @@
-SOURCE_FILE@0..41
-  TYPE_ALIAS@0..16
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    MACRO_TYPE@9..15
-      MACRO_CALL@9..15
-        PATH@9..12
-          PATH_SEGMENT@9..12
-            NAME_REF@9..12
-              IDENT@9..12 "foo"
-        BANG@12..13 "!"
-        TOKEN_TREE@13..15
-          L_PAREN@13..14 "("
-          R_PAREN@14..15 ")"
-    SEMICOLON@15..16 ";"
-  WHITESPACE@16..17 "\n"
-  TYPE_ALIAS@17..40
-    TYPE_KW@17..21 "type"
-    WHITESPACE@21..22 " "
-    NAME@22..23
-      IDENT@22..23 "B"
-    WHITESPACE@23..24 " "
-    EQ@24..25 "="
-    WHITESPACE@25..26 " "
-    MACRO_TYPE@26..39
-      MACRO_CALL@26..39
-        PATH@26..36
-          PATH@26..31
-            PATH_SEGMENT@26..31
-              NAME_REF@26..31
-                CRATE_KW@26..31 "crate"
-          COLON2@31..33 "::"
-          PATH_SEGMENT@33..36
-            NAME_REF@33..36
-              IDENT@33..36 "foo"
-        BANG@36..37 "!"
-        TOKEN_TREE@37..39
-          L_PAREN@37..38 "("
-          R_PAREN@38..39 ")"
-    SEMICOLON@39..40 ";"
-  WHITESPACE@40..41 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    MACRO_TYPE
+      MACRO_CALL
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "foo"
+        BANG "!"
+        TOKEN_TREE
+          L_PAREN "("
+          R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    MACRO_TYPE
+      MACRO_CALL
+        PATH
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                CRATE_KW "crate"
+          COLON2 "::"
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "foo"
+        BANG "!"
+        TOKEN_TREE
+          L_PAREN "("
+          R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0117_macro_call_type.txt b/crates/parser/test_data/parser/inline/ok/0117_macro_call_type.txt
deleted file mode 100644
index 8165cb7d9ba..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0117_macro_call_type.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    MACRO_TYPE
-      MACRO_CALL
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "foo"
-        BANG "!"
-        TOKEN_TREE
-          L_PAREN "("
-          R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    MACRO_TYPE
-      MACRO_CALL
-        PATH
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                CRATE_KW "crate"
-          COLON2 "::"
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "foo"
-        BANG "!"
-        TOKEN_TREE
-          L_PAREN "("
-          R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0118_match_guard.rast b/crates/parser/test_data/parser/inline/ok/0118_match_guard.rast
index 8d5fe502feb..96318b52195 100644
--- a/crates/parser/test_data/parser/inline/ok/0118_match_guard.rast
+++ b/crates/parser/test_data/parser/inline/ok/0118_match_guard.rast
@@ -1,76 +1,77 @@
-SOURCE_FILE@0..92
-  FN@0..91
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..91
-      STMT_LIST@9..91
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        MATCH_EXPR@15..89
-          MATCH_KW@15..20 "match"
-          WHITESPACE@20..21 " "
-          TUPLE_EXPR@21..23
-            L_PAREN@21..22 "("
-            R_PAREN@22..23 ")"
-          WHITESPACE@23..24 " "
-          MATCH_ARM_LIST@24..89
-            L_CURLY@24..25 "{"
-            WHITESPACE@25..34 "\n        "
-            MATCH_ARM@34..49
-              WILDCARD_PAT@34..35
-                UNDERSCORE@34..35 "_"
-              WHITESPACE@35..36 " "
-              MATCH_GUARD@36..42
-                IF_KW@36..38 "if"
-                WHITESPACE@38..39 " "
-                PATH_EXPR@39..42
-                  PATH@39..42
-                    PATH_SEGMENT@39..42
-                      NAME_REF@39..42
-                        IDENT@39..42 "foo"
-              WHITESPACE@42..43 " "
-              FAT_ARROW@43..45 "=>"
-              WHITESPACE@45..46 " "
-              TUPLE_EXPR@46..48
-                L_PAREN@46..47 "("
-                R_PAREN@47..48 ")"
-              COMMA@48..49 ","
-            WHITESPACE@49..58 "\n        "
-            MATCH_ARM@58..83
-              WILDCARD_PAT@58..59
-                UNDERSCORE@58..59 "_"
-              WHITESPACE@59..60 " "
-              MATCH_GUARD@60..76
-                IF_KW@60..62 "if"
-                WHITESPACE@62..63 " "
-                LET_KW@63..66 "let"
-                WHITESPACE@66..67 " "
-                IDENT_PAT@67..70
-                  NAME@67..70
-                    IDENT@67..70 "foo"
-                WHITESPACE@70..71 " "
-                EQ@71..72 "="
-                WHITESPACE@72..73 " "
-                PATH_EXPR@73..76
-                  PATH@73..76
-                    PATH_SEGMENT@73..76
-                      NAME_REF@73..76
-                        IDENT@73..76 "bar"
-              WHITESPACE@76..77 " "
-              FAT_ARROW@77..79 "=>"
-              WHITESPACE@79..80 " "
-              TUPLE_EXPR@80..82
-                L_PAREN@80..81 "("
-                R_PAREN@81..82 ")"
-              COMMA@82..83 ","
-            WHITESPACE@83..88 "\n    "
-            R_CURLY@88..89 "}"
-        WHITESPACE@89..90 "\n"
-        R_CURLY@90..91 "}"
-  WHITESPACE@91..92 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              MATCH_GUARD
+                IF_KW "if"
+                WHITESPACE " "
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "foo"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              MATCH_GUARD
+                IF_KW "if"
+                WHITESPACE " "
+                LET_EXPR
+                  LET_KW "let"
+                  WHITESPACE " "
+                  IDENT_PAT
+                    NAME
+                      IDENT "foo"
+                  WHITESPACE " "
+                  EQ "="
+                  WHITESPACE " "
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "bar"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0118_match_guard.txt b/crates/parser/test_data/parser/inline/ok/0118_match_guard.txt
deleted file mode 100644
index 96318b52195..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0118_match_guard.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              MATCH_GUARD
-                IF_KW "if"
-                WHITESPACE " "
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "foo"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              MATCH_GUARD
-                IF_KW "if"
-                WHITESPACE " "
-                LET_EXPR
-                  LET_KW "let"
-                  WHITESPACE " "
-                  IDENT_PAT
-                    NAME
-                      IDENT "foo"
-                  WHITESPACE " "
-                  EQ "="
-                  WHITESPACE " "
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "bar"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast b/crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast
index 517b221d4eb..6fd9f424676 100644
--- a/crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast
+++ b/crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast
@@ -1,84 +1,84 @@
-SOURCE_FILE@0..139
-  FN@0..138
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..138
-      STMT_LIST@9..138
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        MATCH_EXPR@15..136
-          MATCH_KW@15..20 "match"
-          WHITESPACE@20..21 " "
-          TUPLE_EXPR@21..23
-            L_PAREN@21..22 "("
-            R_PAREN@22..23 ")"
-          WHITESPACE@23..24 " "
-          MATCH_ARM_LIST@24..136
-            L_CURLY@24..25 "{"
-            WHITESPACE@25..34 "\n        "
-            ATTR@34..60
-              POUND@34..35 "#"
-              BANG@35..36 "!"
-              L_BRACK@36..37 "["
-              META@37..59
-                PATH@37..40
-                  PATH_SEGMENT@37..40
-                    NAME_REF@37..40
-                      IDENT@37..40 "doc"
-                TOKEN_TREE@40..59
-                  L_PAREN@40..41 "("
-                  STRING@41..58 "\"Inner attribute\""
-                  R_PAREN@58..59 ")"
-              R_BRACK@59..60 "]"
-            WHITESPACE@60..69 "\n        "
-            ATTR@69..86
-              POUND@69..70 "#"
-              BANG@70..71 "!"
-              L_BRACK@71..72 "["
-              META@72..85
-                PATH@72..75
-                  PATH_SEGMENT@72..75
-                    NAME_REF@72..75
-                      IDENT@72..75 "doc"
-                TOKEN_TREE@75..85
-                  L_PAREN@75..76 "("
-                  STRING@76..84 "\"Can be\""
-                  R_PAREN@84..85 ")"
-              R_BRACK@85..86 "]"
-            WHITESPACE@86..95 "\n        "
-            ATTR@95..113
-              POUND@95..96 "#"
-              BANG@96..97 "!"
-              L_BRACK@97..98 "["
-              META@98..112
-                PATH@98..101
-                  PATH_SEGMENT@98..101
-                    NAME_REF@98..101
-                      IDENT@98..101 "doc"
-                TOKEN_TREE@101..112
-                  L_PAREN@101..102 "("
-                  STRING@102..111 "\"Stacked\""
-                  R_PAREN@111..112 ")"
-              R_BRACK@112..113 "]"
-            WHITESPACE@113..122 "\n        "
-            MATCH_ARM@122..130
-              WILDCARD_PAT@122..123
-                UNDERSCORE@122..123 "_"
-              WHITESPACE@123..124 " "
-              FAT_ARROW@124..126 "=>"
-              WHITESPACE@126..127 " "
-              TUPLE_EXPR@127..129
-                L_PAREN@127..128 "("
-                R_PAREN@128..129 ")"
-              COMMA@129..130 ","
-            WHITESPACE@130..135 "\n    "
-            R_CURLY@135..136 "}"
-        WHITESPACE@136..137 "\n"
-        R_CURLY@137..138 "}"
-  WHITESPACE@138..139 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            ATTR
+              POUND "#"
+              BANG "!"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "doc"
+                TOKEN_TREE
+                  L_PAREN "("
+                  STRING "\"Inner attribute\""
+                  R_PAREN ")"
+              R_BRACK "]"
+            WHITESPACE "\n        "
+            ATTR
+              POUND "#"
+              BANG "!"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "doc"
+                TOKEN_TREE
+                  L_PAREN "("
+                  STRING "\"Can be\""
+                  R_PAREN ")"
+              R_BRACK "]"
+            WHITESPACE "\n        "
+            ATTR
+              POUND "#"
+              BANG "!"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "doc"
+                TOKEN_TREE
+                  L_PAREN "("
+                  STRING "\"Stacked\""
+                  R_PAREN ")"
+              R_BRACK "]"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt b/crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt
deleted file mode 100644
index 6fd9f424676..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            ATTR
-              POUND "#"
-              BANG "!"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "doc"
-                TOKEN_TREE
-                  L_PAREN "("
-                  STRING "\"Inner attribute\""
-                  R_PAREN ")"
-              R_BRACK "]"
-            WHITESPACE "\n        "
-            ATTR
-              POUND "#"
-              BANG "!"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "doc"
-                TOKEN_TREE
-                  L_PAREN "("
-                  STRING "\"Can be\""
-                  R_PAREN ")"
-              R_BRACK "]"
-            WHITESPACE "\n        "
-            ATTR
-              POUND "#"
-              BANG "!"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "doc"
-                TOKEN_TREE
-                  L_PAREN "("
-                  STRING "\"Stacked\""
-                  R_PAREN ")"
-              R_BRACK "]"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast b/crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast
index 54cf1d08926..0f7580c1a33 100644
--- a/crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast
+++ b/crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast
@@ -1,151 +1,151 @@
-SOURCE_FILE@0..259
-  FN@0..258
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..258
-      STMT_LIST@9..258
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        MATCH_EXPR@15..256
-          MATCH_KW@15..20 "match"
-          WHITESPACE@20..21 " "
-          TUPLE_EXPR@21..23
-            L_PAREN@21..22 "("
-            R_PAREN@22..23 ")"
-          WHITESPACE@23..24 " "
-          MATCH_ARM_LIST@24..256
-            L_CURLY@24..25 "{"
-            WHITESPACE@25..34 "\n        "
-            MATCH_ARM@34..75
-              ATTR@34..58
-                POUND@34..35 "#"
-                L_BRACK@35..36 "["
-                META@36..57
-                  PATH@36..39
-                    PATH_SEGMENT@36..39
-                      NAME_REF@36..39
-                        IDENT@36..39 "cfg"
-                  TOKEN_TREE@39..57
-                    L_PAREN@39..40 "("
-                    IDENT@40..47 "feature"
-                    WHITESPACE@47..48 " "
-                    EQ@48..49 "="
-                    WHITESPACE@49..50 " "
-                    STRING@50..56 "\"some\""
-                    R_PAREN@56..57 ")"
-                R_BRACK@57..58 "]"
-              WHITESPACE@58..67 "\n        "
-              WILDCARD_PAT@67..68
-                UNDERSCORE@67..68 "_"
-              WHITESPACE@68..69 " "
-              FAT_ARROW@69..71 "=>"
-              WHITESPACE@71..72 " "
-              TUPLE_EXPR@72..74
-                L_PAREN@72..73 "("
-                R_PAREN@73..74 ")"
-              COMMA@74..75 ","
-            WHITESPACE@75..84 "\n        "
-            MATCH_ARM@84..126
-              ATTR@84..109
-                POUND@84..85 "#"
-                L_BRACK@85..86 "["
-                META@86..108
-                  PATH@86..89
-                    PATH_SEGMENT@86..89
-                      NAME_REF@86..89
-                        IDENT@86..89 "cfg"
-                  TOKEN_TREE@89..108
-                    L_PAREN@89..90 "("
-                    IDENT@90..97 "feature"
-                    WHITESPACE@97..98 " "
-                    EQ@98..99 "="
-                    WHITESPACE@99..100 " "
-                    STRING@100..107 "\"other\""
-                    R_PAREN@107..108 ")"
-                R_BRACK@108..109 "]"
-              WHITESPACE@109..118 "\n        "
-              WILDCARD_PAT@118..119
-                UNDERSCORE@118..119 "_"
-              WHITESPACE@119..120 " "
-              FAT_ARROW@120..122 "=>"
-              WHITESPACE@122..123 " "
-              TUPLE_EXPR@123..125
-                L_PAREN@123..124 "("
-                R_PAREN@124..125 ")"
-              COMMA@125..126 ","
-            WHITESPACE@126..135 "\n        "
-            MATCH_ARM@135..250
-              ATTR@135..159
-                POUND@135..136 "#"
-                L_BRACK@136..137 "["
-                META@137..158
-                  PATH@137..140
-                    PATH_SEGMENT@137..140
-                      NAME_REF@137..140
-                        IDENT@137..140 "cfg"
-                  TOKEN_TREE@140..158
-                    L_PAREN@140..141 "("
-                    IDENT@141..148 "feature"
-                    WHITESPACE@148..149 " "
-                    EQ@149..150 "="
-                    WHITESPACE@150..151 " "
-                    STRING@151..157 "\"many\""
-                    R_PAREN@157..158 ")"
-                R_BRACK@158..159 "]"
-              WHITESPACE@159..168 "\n        "
-              ATTR@168..198
-                POUND@168..169 "#"
-                L_BRACK@169..170 "["
-                META@170..197
-                  PATH@170..173
-                    PATH_SEGMENT@170..173
-                      NAME_REF@170..173
-                        IDENT@170..173 "cfg"
-                  TOKEN_TREE@173..197
-                    L_PAREN@173..174 "("
-                    IDENT@174..181 "feature"
-                    WHITESPACE@181..182 " "
-                    EQ@182..183 "="
-                    WHITESPACE@183..184 " "
-                    STRING@184..196 "\"attributes\""
-                    R_PAREN@196..197 ")"
-                R_BRACK@197..198 "]"
-              WHITESPACE@198..207 "\n        "
-              ATTR@207..233
-                POUND@207..208 "#"
-                L_BRACK@208..209 "["
-                META@209..232
-                  PATH@209..212
-                    PATH_SEGMENT@209..212
-                      NAME_REF@209..212
-                        IDENT@209..212 "cfg"
-                  TOKEN_TREE@212..232
-                    L_PAREN@212..213 "("
-                    IDENT@213..220 "feature"
-                    WHITESPACE@220..221 " "
-                    EQ@221..222 "="
-                    WHITESPACE@222..223 " "
-                    STRING@223..231 "\"before\""
-                    R_PAREN@231..232 ")"
-                R_BRACK@232..233 "]"
-              WHITESPACE@233..242 "\n        "
-              WILDCARD_PAT@242..243
-                UNDERSCORE@242..243 "_"
-              WHITESPACE@243..244 " "
-              FAT_ARROW@244..246 "=>"
-              WHITESPACE@246..247 " "
-              TUPLE_EXPR@247..249
-                L_PAREN@247..248 "("
-                R_PAREN@248..249 ")"
-              COMMA@249..250 ","
-            WHITESPACE@250..255 "\n    "
-            R_CURLY@255..256 "}"
-        WHITESPACE@256..257 "\n"
-        R_CURLY@257..258 "}"
-  WHITESPACE@258..259 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "feature"
+                    WHITESPACE " "
+                    EQ "="
+                    WHITESPACE " "
+                    STRING "\"some\""
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "feature"
+                    WHITESPACE " "
+                    EQ "="
+                    WHITESPACE " "
+                    STRING "\"other\""
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "feature"
+                    WHITESPACE " "
+                    EQ "="
+                    WHITESPACE " "
+                    STRING "\"many\""
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "feature"
+                    WHITESPACE " "
+                    EQ "="
+                    WHITESPACE " "
+                    STRING "\"attributes\""
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "feature"
+                    WHITESPACE " "
+                    EQ "="
+                    WHITESPACE " "
+                    STRING "\"before\""
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              WILDCARD_PAT
+                UNDERSCORE "_"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt b/crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt
deleted file mode 100644
index 0f7580c1a33..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt
+++ /dev/null
@@ -1,151 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "feature"
-                    WHITESPACE " "
-                    EQ "="
-                    WHITESPACE " "
-                    STRING "\"some\""
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "feature"
-                    WHITESPACE " "
-                    EQ "="
-                    WHITESPACE " "
-                    STRING "\"other\""
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "feature"
-                    WHITESPACE " "
-                    EQ "="
-                    WHITESPACE " "
-                    STRING "\"many\""
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "feature"
-                    WHITESPACE " "
-                    EQ "="
-                    WHITESPACE " "
-                    STRING "\"attributes\""
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "feature"
-                    WHITESPACE " "
-                    EQ "="
-                    WHITESPACE " "
-                    STRING "\"before\""
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              WILDCARD_PAT
-                UNDERSCORE "_"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.rast b/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.rast
index 7cdec663473..c86cf18bbe9 100644
--- a/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.rast
@@ -1,50 +1,50 @@
-SOURCE_FILE@0..57
-  EXTERN_BLOCK@0..56
-    ABI@0..10
-      EXTERN_KW@0..6 "extern"
-      WHITESPACE@6..7 " "
-      STRING@7..10 "\"C\""
-    WHITESPACE@10..11 " "
-    EXTERN_ITEM_LIST@11..56
-      L_CURLY@11..12 "{"
-      WHITESPACE@12..13 " "
-      FN@13..54
-        FN_KW@13..15 "fn"
-        WHITESPACE@15..16 " "
-        NAME@16..22
-          IDENT@16..22 "printf"
-        PARAM_LIST@22..46
-          L_PAREN@22..23 "("
-          PARAM@23..40
-            IDENT_PAT@23..29
-              NAME@23..29
-                IDENT@23..29 "format"
-            COLON@29..30 ":"
-            WHITESPACE@30..31 " "
-            PTR_TYPE@31..40
-              STAR@31..32 "*"
-              CONST_KW@32..37 "const"
-              WHITESPACE@37..38 " "
-              PATH_TYPE@38..40
-                PATH@38..40
-                  PATH_SEGMENT@38..40
-                    NAME_REF@38..40
-                      IDENT@38..40 "i8"
-          COMMA@40..41 ","
-          WHITESPACE@41..42 " "
-          PARAM@42..45
-            DOT3@42..45 "..."
-          R_PAREN@45..46 ")"
-        WHITESPACE@46..47 " "
-        RET_TYPE@47..53
-          THIN_ARROW@47..49 "->"
-          WHITESPACE@49..50 " "
-          PATH_TYPE@50..53
-            PATH@50..53
-              PATH_SEGMENT@50..53
-                NAME_REF@50..53
-                  IDENT@50..53 "i32"
-        SEMICOLON@53..54 ";"
-      WHITESPACE@54..55 " "
-      R_CURLY@55..56 "}"
-  WHITESPACE@56..57 "\n"
+SOURCE_FILE
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "printf"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "format"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i8"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            DOT3 "..."
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "i32"
+        SEMICOLON ";"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.txt b/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.txt
deleted file mode 100644
index c86cf18bbe9..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-SOURCE_FILE
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "printf"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "format"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i8"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            DOT3 "..."
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "i32"
-        SEMICOLON ";"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.rast b/crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.rast
index 69633b8e50a..8d9b61630ae 100644
--- a/crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.rast
+++ b/crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.rast
@@ -1,33 +1,33 @@
-SOURCE_FILE@0..27
-  FN@0..26
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..26
-      STMT_LIST@9..26
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 " "
-        EXPR_STMT@11..24
-          CALL_EXPR@11..23
-            PATH_EXPR@11..21
-              PATH@11..21
-                PATH@11..16
-                  PATH_SEGMENT@11..16
-                    NAME_REF@11..16
-                      CRATE_KW@11..16 "crate"
-                COLON2@16..18 "::"
-                PATH_SEGMENT@18..21
-                  NAME_REF@18..21
-                    IDENT@18..21 "foo"
-            ARG_LIST@21..23
-              L_PAREN@21..22 "("
-              R_PAREN@22..23 ")"
-          SEMICOLON@23..24 ";"
-        WHITESPACE@24..25 " "
-        R_CURLY@25..26 "}"
-  WHITESPACE@26..27 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      CRATE_KW "crate"
+                COLON2 "::"
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.txt b/crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.txt
deleted file mode 100644
index 8d9b61630ae..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0125_crate_keyword_path.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      CRATE_KW "crate"
-                COLON2 "::"
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast b/crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast
index 1755a53b517..a1df70841e8 100644
--- a/crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast
@@ -1,49 +1,49 @@
-SOURCE_FILE@0..46
-  FN@0..45
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..45
-      STMT_LIST@10..45
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        RECORD_EXPR@16..43
-          PATH@16..17
-            PATH_SEGMENT@16..17
-              NAME_REF@16..17
-                IDENT@16..17 "S"
-          WHITESPACE@17..18 " "
-          RECORD_EXPR_FIELD_LIST@18..43
-            L_CURLY@18..19 "{"
-            WHITESPACE@19..20 " "
-            RECORD_EXPR_FIELD@20..41
-              ATTR@20..32
-                POUND@20..21 "#"
-                L_BRACK@21..22 "["
-                META@22..31
-                  PATH@22..25
-                    PATH_SEGMENT@22..25
-                      NAME_REF@22..25
-                        IDENT@22..25 "cfg"
-                  TOKEN_TREE@25..31
-                    L_PAREN@25..26 "("
-                    IDENT@26..30 "test"
-                    R_PAREN@30..31 ")"
-                R_BRACK@31..32 "]"
-              WHITESPACE@32..33 " "
-              NAME_REF@33..38
-                IDENT@33..38 "field"
-              COLON@38..39 ":"
-              WHITESPACE@39..40 " "
-              LITERAL@40..41
-                INT_NUMBER@40..41 "1"
-            WHITESPACE@41..42 " "
-            R_CURLY@42..43 "}"
-        WHITESPACE@43..44 "\n"
-        R_CURLY@44..45 "}"
-  WHITESPACE@45..46 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        RECORD_EXPR
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "S"
+          WHITESPACE " "
+          RECORD_EXPR_FIELD_LIST
+            L_CURLY "{"
+            WHITESPACE " "
+            RECORD_EXPR_FIELD
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "cfg"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "test"
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE " "
+              NAME_REF
+                IDENT "field"
+              COLON ":"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "1"
+            WHITESPACE " "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt b/crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt
deleted file mode 100644
index a1df70841e8..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        RECORD_EXPR
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "S"
-          WHITESPACE " "
-          RECORD_EXPR_FIELD_LIST
-            L_CURLY "{"
-            WHITESPACE " "
-            RECORD_EXPR_FIELD
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "cfg"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "test"
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE " "
-              NAME_REF
-                IDENT "field"
-              COLON ":"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "1"
-            WHITESPACE " "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast b/crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast
index b69276ceeb4..cafd059f24c 100644
--- a/crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast
+++ b/crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast
@@ -1,104 +1,104 @@
-SOURCE_FILE@0..82
-  FN@0..81
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..81
-      STMT_LIST@9..81
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..26
-          CALL_EXPR@15..25
-            ATTR@15..19
-              POUND@15..16 "#"
-              L_BRACK@16..17 "["
-              META@17..18
-                PATH@17..18
-                  PATH_SEGMENT@17..18
-                    NAME_REF@17..18
-                      IDENT@17..18 "A"
-              R_BRACK@18..19 "]"
-            WHITESPACE@19..20 " "
-            PATH_EXPR@20..23
-              PATH@20..23
-                PATH_SEGMENT@20..23
-                  NAME_REF@20..23
-                    IDENT@20..23 "foo"
-            ARG_LIST@23..25
-              L_PAREN@23..24 "("
-              R_PAREN@24..25 ")"
-          SEMICOLON@25..26 ";"
-        WHITESPACE@26..31 "\n    "
-        EXPR_STMT@31..42
-          MACRO_CALL@31..42
-            ATTR@31..35
-              POUND@31..32 "#"
-              L_BRACK@32..33 "["
-              META@33..34
-                PATH@33..34
-                  PATH_SEGMENT@33..34
-                    NAME_REF@33..34
-                      IDENT@33..34 "B"
-              R_BRACK@34..35 "]"
-            WHITESPACE@35..36 " "
-            PATH@36..39
-              PATH_SEGMENT@36..39
-                NAME_REF@36..39
-                  IDENT@36..39 "bar"
-            BANG@39..40 "!"
-            TOKEN_TREE@40..42
-              L_CURLY@40..41 "{"
-              R_CURLY@41..42 "}"
-        WHITESPACE@42..47 "\n    "
-        EXPR_STMT@47..59
-          BLOCK_EXPR@47..59
-            ATTR@47..51
-              POUND@47..48 "#"
-              L_BRACK@48..49 "["
-              META@49..50
-                PATH@49..50
-                  PATH_SEGMENT@49..50
-                    NAME_REF@49..50
-                      IDENT@49..50 "C"
-              R_BRACK@50..51 "]"
-            WHITESPACE@51..52 " "
-            ATTR@52..56
-              POUND@52..53 "#"
-              L_BRACK@53..54 "["
-              META@54..55
-                PATH@54..55
-                  PATH_SEGMENT@54..55
-                    NAME_REF@54..55
-                      IDENT@54..55 "D"
-              R_BRACK@55..56 "]"
-            WHITESPACE@56..57 " "
-            STMT_LIST@57..59
-              L_CURLY@57..58 "{"
-              R_CURLY@58..59 "}"
-        WHITESPACE@59..64 "\n    "
-        EXPR_STMT@64..79
-          RETURN_EXPR@64..78
-            ATTR@64..68
-              POUND@64..65 "#"
-              L_BRACK@65..66 "["
-              META@66..67
-                PATH@66..67
-                  PATH_SEGMENT@66..67
-                    NAME_REF@66..67
-                      IDENT@66..67 "D"
-              R_BRACK@67..68 "]"
-            WHITESPACE@68..69 " "
-            RETURN_KW@69..75 "return"
-            WHITESPACE@75..76 " "
-            TUPLE_EXPR@76..78
-              L_PAREN@76..77 "("
-              R_PAREN@77..78 ")"
-          SEMICOLON@78..79 ";"
-        WHITESPACE@79..80 "\n"
-        R_CURLY@80..81 "}"
-  WHITESPACE@81..82 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "A"
+              R_BRACK "]"
+            WHITESPACE " "
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MACRO_CALL
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "B"
+              R_BRACK "]"
+            WHITESPACE " "
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "bar"
+            BANG "!"
+            TOKEN_TREE
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "C"
+              R_BRACK "]"
+            WHITESPACE " "
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "D"
+              R_BRACK "]"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RETURN_EXPR
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "D"
+              R_BRACK "]"
+            WHITESPACE " "
+            RETURN_KW "return"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt b/crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt
deleted file mode 100644
index cafd059f24c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "A"
-              R_BRACK "]"
-            WHITESPACE " "
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MACRO_CALL
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "B"
-              R_BRACK "]"
-            WHITESPACE " "
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "bar"
-            BANG "!"
-            TOKEN_TREE
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "C"
-              R_BRACK "]"
-            WHITESPACE " "
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "D"
-              R_BRACK "]"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RETURN_EXPR
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "D"
-              R_BRACK "]"
-            WHITESPACE " "
-            RETURN_KW "return"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0129_marco_pat.rast b/crates/parser/test_data/parser/inline/ok/0129_marco_pat.rast
index 0e262735647..cedaa904533 100644
--- a/crates/parser/test_data/parser/inline/ok/0129_marco_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0129_marco_pat.rast
@@ -1,37 +1,37 @@
-SOURCE_FILE@0..33
-  FN@0..32
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..32
-      STMT_LIST@10..32
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..30
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          MACRO_PAT@20..25
-            MACRO_CALL@20..25
-              PATH@20..21
-                PATH_SEGMENT@20..21
-                  NAME_REF@20..21
-                    IDENT@20..21 "m"
-              BANG@21..22 "!"
-              TOKEN_TREE@22..25
-                L_PAREN@22..23 "("
-                IDENT@23..24 "x"
-                R_PAREN@24..25 ")"
-          WHITESPACE@25..26 " "
-          EQ@26..27 "="
-          WHITESPACE@27..28 " "
-          LITERAL@28..29
-            INT_NUMBER@28..29 "0"
-          SEMICOLON@29..30 ";"
-        WHITESPACE@30..31 "\n"
-        R_CURLY@31..32 "}"
-  WHITESPACE@32..33 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          MACRO_PAT
+            MACRO_CALL
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "m"
+              BANG "!"
+              TOKEN_TREE
+                L_PAREN "("
+                IDENT "x"
+                R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "0"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0129_marco_pat.txt b/crates/parser/test_data/parser/inline/ok/0129_marco_pat.txt
deleted file mode 100644
index cedaa904533..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0129_marco_pat.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          MACRO_PAT
-            MACRO_CALL
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "m"
-              BANG "!"
-              TOKEN_TREE
-                L_PAREN "("
-                IDENT "x"
-                R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "0"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0130_let_stmt.rast b/crates/parser/test_data/parser/inline/ok/0130_let_stmt.rast
index c3141e15455..de9d0fc19ee 100644
--- a/crates/parser/test_data/parser/inline/ok/0130_let_stmt.rast
+++ b/crates/parser/test_data/parser/inline/ok/0130_let_stmt.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..28
-  FN@0..27
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..27
-      STMT_LIST@7..27
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        LET_STMT@9..25
-          LET_KW@9..12 "let"
-          WHITESPACE@12..13 " "
-          IDENT_PAT@13..14
-            NAME@13..14
-              IDENT@13..14 "x"
-          COLON@14..15 ":"
-          WHITESPACE@15..16 " "
-          PATH_TYPE@16..19
-            PATH@16..19
-              PATH_SEGMENT@16..19
-                NAME_REF@16..19
-                  IDENT@16..19 "i32"
-          WHITESPACE@19..20 " "
-          EQ@20..21 "="
-          WHITESPACE@21..22 " "
-          LITERAL@22..24
-            INT_NUMBER@22..24 "92"
-          SEMICOLON@24..25 ";"
-        WHITESPACE@25..26 " "
-        R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "i32"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0130_let_stmt.txt b/crates/parser/test_data/parser/inline/ok/0130_let_stmt.txt
deleted file mode 100644
index de9d0fc19ee..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0130_let_stmt.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "i32"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0130_try_block_expr.rast b/crates/parser/test_data/parser/inline/ok/0130_try_block_expr.rast
index bd3652280b1..aec8fbf4775 100644
--- a/crates/parser/test_data/parser/inline/ok/0130_try_block_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0130_try_block_expr.rast
@@ -1,32 +1,32 @@
-SOURCE_FILE@0..33
-  FN@0..32
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..32
-      STMT_LIST@9..32
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..30
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          WILDCARD_PAT@19..20
-            UNDERSCORE@19..20 "_"
-          WHITESPACE@20..21 " "
-          EQ@21..22 "="
-          WHITESPACE@22..23 " "
-          BLOCK_EXPR@23..29
-            TRY_KW@23..26 "try"
-            WHITESPACE@26..27 " "
-            STMT_LIST@27..29
-              L_CURLY@27..28 "{"
-              R_CURLY@28..29 "}"
-          SEMICOLON@29..30 ";"
-        WHITESPACE@30..31 "\n"
-        R_CURLY@31..32 "}"
-  WHITESPACE@32..33 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BLOCK_EXPR
+            TRY_KW "try"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0130_try_block_expr.txt b/crates/parser/test_data/parser/inline/ok/0130_try_block_expr.txt
deleted file mode 100644
index aec8fbf4775..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0130_try_block_expr.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BLOCK_EXPR
-            TRY_KW "try"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0131_existential_type.rast b/crates/parser/test_data/parser/inline/ok/0131_existential_type.rast
index d47071a911a..b73780261ba 100644
--- a/crates/parser/test_data/parser/inline/ok/0131_existential_type.rast
+++ b/crates/parser/test_data/parser/inline/ok/0131_existential_type.rast
@@ -1,31 +1,31 @@
-SOURCE_FILE@0..37
-  TYPE_ALIAS@0..36
-    EXISTENTIAL_KW@0..11 "existential"
-    WHITESPACE@11..12 " "
-    TYPE_KW@12..16 "type"
-    WHITESPACE@16..17 " "
-    NAME@17..20
-      IDENT@17..20 "Foo"
-    COLON@20..21 ":"
-    WHITESPACE@21..22 " "
-    TYPE_BOUND_LIST@22..35
-      TYPE_BOUND@22..35
-        PATH_TYPE@22..35
-          PATH@22..35
-            PATH_SEGMENT@22..35
-              NAME_REF@22..24
-                IDENT@22..24 "Fn"
-              PARAM_LIST@24..26
-                L_PAREN@24..25 "("
-                R_PAREN@25..26 ")"
-              WHITESPACE@26..27 " "
-              RET_TYPE@27..35
-                THIN_ARROW@27..29 "->"
-                WHITESPACE@29..30 " "
-                PATH_TYPE@30..35
-                  PATH@30..35
-                    PATH_SEGMENT@30..35
-                      NAME_REF@30..35
-                        IDENT@30..35 "usize"
-    SEMICOLON@35..36 ";"
-  WHITESPACE@36..37 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    EXISTENTIAL_KW "existential"
+    WHITESPACE " "
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    COLON ":"
+    WHITESPACE " "
+    TYPE_BOUND_LIST
+      TYPE_BOUND
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Fn"
+              PARAM_LIST
+                L_PAREN "("
+                R_PAREN ")"
+              WHITESPACE " "
+              RET_TYPE
+                THIN_ARROW "->"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "usize"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0131_existential_type.txt b/crates/parser/test_data/parser/inline/ok/0131_existential_type.txt
deleted file mode 100644
index b73780261ba..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0131_existential_type.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    EXISTENTIAL_KW "existential"
-    WHITESPACE " "
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    COLON ":"
-    WHITESPACE " "
-    TYPE_BOUND_LIST
-      TYPE_BOUND
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Fn"
-              PARAM_LIST
-                L_PAREN "("
-                R_PAREN ")"
-              WHITESPACE " "
-              RET_TYPE
-                THIN_ARROW "->"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "usize"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0132_box_expr.rast b/crates/parser/test_data/parser/inline/ok/0132_box_expr.rast
index 29f97a3a77e..b21f37cd85a 100644
--- a/crates/parser/test_data/parser/inline/ok/0132_box_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0132_box_expr.rast
@@ -1,90 +1,90 @@
-SOURCE_FILE@0..106
-  FN@0..105
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..105
-      STMT_LIST@9..105
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..32
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          IDENT_PAT@19..20
-            NAME@19..20
-              IDENT@19..20 "x"
-          WHITESPACE@20..21 " "
-          EQ@21..22 "="
-          WHITESPACE@22..23 " "
-          BOX_EXPR@23..31
-            BOX_KW@23..26 "box"
-            WHITESPACE@26..27 " "
-            LITERAL@27..31
-              INT_NUMBER@27..31 "1i32"
-          SEMICOLON@31..32 ";"
-        WHITESPACE@32..37 "\n    "
-        LET_STMT@37..66
-          LET_KW@37..40 "let"
-          WHITESPACE@40..41 " "
-          IDENT_PAT@41..42
-            NAME@41..42
-              IDENT@41..42 "y"
-          WHITESPACE@42..43 " "
-          EQ@43..44 "="
-          WHITESPACE@44..45 " "
-          TUPLE_EXPR@45..65
-            L_PAREN@45..46 "("
-            BOX_EXPR@46..54
-              BOX_KW@46..49 "box"
-              WHITESPACE@49..50 " "
-              LITERAL@50..54
-                INT_NUMBER@50..54 "1i32"
-            COMMA@54..55 ","
-            WHITESPACE@55..56 " "
-            BOX_EXPR@56..64
-              BOX_KW@56..59 "box"
-              WHITESPACE@59..60 " "
-              LITERAL@60..64
-                INT_NUMBER@60..64 "2i32"
-            R_PAREN@64..65 ")"
-          SEMICOLON@65..66 ";"
-        WHITESPACE@66..71 "\n    "
-        LET_STMT@71..103
-          LET_KW@71..74 "let"
-          WHITESPACE@74..75 " "
-          IDENT_PAT@75..76
-            NAME@75..76
-              IDENT@75..76 "z"
-          WHITESPACE@76..77 " "
-          EQ@77..78 "="
-          WHITESPACE@78..79 " "
-          CALL_EXPR@79..102
-            PATH_EXPR@79..82
-              PATH@79..82
-                PATH_SEGMENT@79..82
-                  NAME_REF@79..82
-                    IDENT@79..82 "Foo"
-            ARG_LIST@82..102
-              L_PAREN@82..83 "("
-              BOX_EXPR@83..91
-                BOX_KW@83..86 "box"
-                WHITESPACE@86..87 " "
-                LITERAL@87..91
-                  INT_NUMBER@87..91 "1i32"
-              COMMA@91..92 ","
-              WHITESPACE@92..93 " "
-              BOX_EXPR@93..101
-                BOX_KW@93..96 "box"
-                WHITESPACE@96..97 " "
-                LITERAL@97..101
-                  INT_NUMBER@97..101 "2i32"
-              R_PAREN@101..102 ")"
-          SEMICOLON@102..103 ";"
-        WHITESPACE@103..104 "\n"
-        R_CURLY@104..105 "}"
-  WHITESPACE@105..106 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BOX_EXPR
+            BOX_KW "box"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "1i32"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "y"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            BOX_EXPR
+              BOX_KW "box"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "1i32"
+            COMMA ","
+            WHITESPACE " "
+            BOX_EXPR
+              BOX_KW "box"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "2i32"
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "z"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Foo"
+            ARG_LIST
+              L_PAREN "("
+              BOX_EXPR
+                BOX_KW "box"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "1i32"
+              COMMA ","
+              WHITESPACE " "
+              BOX_EXPR
+                BOX_KW "box"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "2i32"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0132_box_expr.txt b/crates/parser/test_data/parser/inline/ok/0132_box_expr.txt
deleted file mode 100644
index b21f37cd85a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0132_box_expr.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BOX_EXPR
-            BOX_KW "box"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "1i32"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "y"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            BOX_EXPR
-              BOX_KW "box"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "1i32"
-            COMMA ","
-            WHITESPACE " "
-            BOX_EXPR
-              BOX_KW "box"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "2i32"
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "z"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Foo"
-            ARG_LIST
-              L_PAREN "("
-              BOX_EXPR
-                BOX_KW "box"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "1i32"
-              COMMA ","
-              WHITESPACE " "
-              BOX_EXPR
-                BOX_KW "box"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "2i32"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast b/crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast
index f0b45b4a163..f5ee12fe967 100644
--- a/crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast
@@ -1,64 +1,64 @@
-SOURCE_FILE@0..111
-  FN@0..110
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..18
-      IDENT@3..18 "simple_function"
-    PARAM_LIST@18..20
-      L_PAREN@18..19 "("
-      R_PAREN@19..20 ")"
-    WHITESPACE@20..21 " "
-    BLOCK_EXPR@21..110
-      STMT_LIST@21..110
-        L_CURLY@21..22 "{"
-        WHITESPACE@22..27 "\n    "
-        ENUM@27..75
-          ENUM_KW@27..31 "enum"
-          WHITESPACE@31..32 " "
-          NAME@32..41
-            IDENT@32..41 "LocalEnum"
-          WHITESPACE@41..42 " "
-          VARIANT_LIST@42..75
-            L_CURLY@42..43 "{"
-            WHITESPACE@43..52 "\n        "
-            VARIANT@52..55
-              NAME@52..55
-                IDENT@52..55 "One"
-            COMMA@55..56 ","
-            WHITESPACE@56..65 "\n        "
-            VARIANT@65..68
-              NAME@65..68
-                IDENT@65..68 "Two"
-            COMMA@68..69 ","
-            WHITESPACE@69..74 "\n    "
-            R_CURLY@74..75 "}"
-        SEMICOLON@75..76 ";"
-        WHITESPACE@76..81 "\n    "
-        FN@81..90
-          FN_KW@81..83 "fn"
-          WHITESPACE@83..84 " "
-          NAME@84..85
-            IDENT@84..85 "f"
-          PARAM_LIST@85..87
-            L_PAREN@85..86 "("
-            R_PAREN@86..87 ")"
-          WHITESPACE@87..88 " "
-          BLOCK_EXPR@88..90
-            STMT_LIST@88..90
-              L_CURLY@88..89 "{"
-              R_CURLY@89..90 "}"
-        SEMICOLON@90..91 ";"
-        WHITESPACE@91..96 "\n    "
-        STRUCT@96..107
-          STRUCT_KW@96..102 "struct"
-          WHITESPACE@102..103 " "
-          NAME@103..104
-            IDENT@103..104 "S"
-          WHITESPACE@104..105 " "
-          RECORD_FIELD_LIST@105..107
-            L_CURLY@105..106 "{"
-            R_CURLY@106..107 "}"
-        SEMICOLON@107..108 ";"
-        WHITESPACE@108..109 "\n"
-        R_CURLY@109..110 "}"
-  WHITESPACE@110..111 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "simple_function"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        ENUM
+          ENUM_KW "enum"
+          WHITESPACE " "
+          NAME
+            IDENT "LocalEnum"
+          WHITESPACE " "
+          VARIANT_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            VARIANT
+              NAME
+                IDENT "One"
+            COMMA ","
+            WHITESPACE "\n        "
+            VARIANT
+              NAME
+                IDENT "Two"
+            COMMA ","
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        SEMICOLON ";"
+        WHITESPACE "\n    "
+        FN
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "f"
+          PARAM_LIST
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        SEMICOLON ";"
+        WHITESPACE "\n    "
+        STRUCT
+          STRUCT_KW "struct"
+          WHITESPACE " "
+          NAME
+            IDENT "S"
+          WHITESPACE " "
+          RECORD_FIELD_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+        SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt b/crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt
deleted file mode 100644
index f5ee12fe967..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "simple_function"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        ENUM
-          ENUM_KW "enum"
-          WHITESPACE " "
-          NAME
-            IDENT "LocalEnum"
-          WHITESPACE " "
-          VARIANT_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            VARIANT
-              NAME
-                IDENT "One"
-            COMMA ","
-            WHITESPACE "\n        "
-            VARIANT
-              NAME
-                IDENT "Two"
-            COMMA ","
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        SEMICOLON ";"
-        WHITESPACE "\n    "
-        FN
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "f"
-          PARAM_LIST
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        SEMICOLON ";"
-        WHITESPACE "\n    "
-        STRUCT
-          STRUCT_KW "struct"
-          WHITESPACE " "
-          NAME
-            IDENT "S"
-          WHITESPACE " "
-          RECORD_FIELD_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-        SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0137_await_expr.rast b/crates/parser/test_data/parser/inline/ok/0137_await_expr.rast
index cacd3fa816f..9d37ada0da8 100644
--- a/crates/parser/test_data/parser/inline/ok/0137_await_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0137_await_expr.rast
@@ -1,70 +1,70 @@
-SOURCE_FILE@0..67
-  FN@0..66
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..66
-      STMT_LIST@9..66
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..23
-          AWAIT_EXPR@15..22
-            PATH_EXPR@15..16
-              PATH@15..16
-                PATH_SEGMENT@15..16
-                  NAME_REF@15..16
-                    IDENT@15..16 "x"
-            DOT@16..17 "."
-            AWAIT_KW@17..22 "await"
-          SEMICOLON@22..23 ";"
-        WHITESPACE@23..28 "\n    "
-        EXPR_STMT@28..38
-          AWAIT_EXPR@28..37
-            FIELD_EXPR@28..31
-              PATH_EXPR@28..29
-                PATH@28..29
-                  PATH_SEGMENT@28..29
-                    NAME_REF@28..29
-                      IDENT@28..29 "x"
-              DOT@29..30 "."
-              NAME_REF@30..31
-                INT_NUMBER@30..31 "0"
-            DOT@31..32 "."
-            AWAIT_KW@32..37 "await"
-          SEMICOLON@37..38 ";"
-        WHITESPACE@38..43 "\n    "
-        EXPR_STMT@43..64
-          METHOD_CALL_EXPR@43..63
-            TRY_EXPR@43..55
-              AWAIT_EXPR@43..54
-                CALL_EXPR@43..48
-                  FIELD_EXPR@43..46
-                    PATH_EXPR@43..44
-                      PATH@43..44
-                        PATH_SEGMENT@43..44
-                          NAME_REF@43..44
-                            IDENT@43..44 "x"
-                    DOT@44..45 "."
-                    NAME_REF@45..46
-                      INT_NUMBER@45..46 "0"
-                  ARG_LIST@46..48
-                    L_PAREN@46..47 "("
-                    R_PAREN@47..48 ")"
-                DOT@48..49 "."
-                AWAIT_KW@49..54 "await"
-              QUESTION@54..55 "?"
-            DOT@55..56 "."
-            NAME_REF@56..61
-              IDENT@56..61 "hello"
-            ARG_LIST@61..63
-              L_PAREN@61..62 "("
-              R_PAREN@62..63 ")"
-          SEMICOLON@63..64 ";"
-        WHITESPACE@64..65 "\n"
-        R_CURLY@65..66 "}"
-  WHITESPACE@66..67 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          AWAIT_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+            DOT "."
+            AWAIT_KW "await"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          AWAIT_EXPR
+            FIELD_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "x"
+              DOT "."
+              NAME_REF
+                INT_NUMBER "0"
+            DOT "."
+            AWAIT_KW "await"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          METHOD_CALL_EXPR
+            TRY_EXPR
+              AWAIT_EXPR
+                CALL_EXPR
+                  FIELD_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "x"
+                    DOT "."
+                    NAME_REF
+                      INT_NUMBER "0"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+                DOT "."
+                AWAIT_KW "await"
+              QUESTION "?"
+            DOT "."
+            NAME_REF
+              IDENT "hello"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0137_await_expr.txt b/crates/parser/test_data/parser/inline/ok/0137_await_expr.txt
deleted file mode 100644
index 9d37ada0da8..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0137_await_expr.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          AWAIT_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-            DOT "."
-            AWAIT_KW "await"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          AWAIT_EXPR
-            FIELD_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "x"
-              DOT "."
-              NAME_REF
-                INT_NUMBER "0"
-            DOT "."
-            AWAIT_KW "await"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          METHOD_CALL_EXPR
-            TRY_EXPR
-              AWAIT_EXPR
-                CALL_EXPR
-                  FIELD_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "x"
-                    DOT "."
-                    NAME_REF
-                      INT_NUMBER "0"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-                DOT "."
-                AWAIT_KW "await"
-              QUESTION "?"
-            DOT "."
-            NAME_REF
-              IDENT "hello"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.rast b/crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.rast
index c3f03c49b73..8cbc98c51ca 100644
--- a/crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.rast
+++ b/crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.rast
@@ -1,111 +1,111 @@
-SOURCE_FILE@0..108
-  FN@0..107
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..12
-      IDENT@3..12 "print_all"
-    GENERIC_PARAM_LIST@12..89
-      L_ANGLE@12..13 "<"
-      TYPE_PARAM@13..88
-        NAME@13..14
-          IDENT@13..14 "T"
-        COLON@14..15 ":"
-        WHITESPACE@15..16 " "
-        TYPE_BOUND_LIST@16..88
-          TYPE_BOUND@16..88
-            PATH_TYPE@16..88
-              PATH@16..88
-                PATH_SEGMENT@16..88
-                  NAME_REF@16..24
-                    IDENT@16..24 "Iterator"
-                  GENERIC_ARG_LIST@24..88
-                    L_ANGLE@24..25 "<"
-                    TYPE_ARG@25..29
-                      PATH_TYPE@25..29
-                        PATH@25..29
-                          PATH_SEGMENT@25..29
-                            NAME_REF@25..29
-                              IDENT@25..29 "Item"
-                    COMMA@29..30 ","
-                    WHITESPACE@30..31 " "
-                    TYPE_ARG@31..41
-                      PATH_TYPE@31..41
-                        PATH@31..41
-                          PATH@31..35
-                            PATH_SEGMENT@31..35
-                              NAME_REF@31..35
-                                IDENT@31..35 "Item"
-                          COLON2@35..37 "::"
-                          PATH_SEGMENT@37..41
-                            NAME_REF@37..41
-                              IDENT@37..41 "Item"
-                    COMMA@41..42 ","
-                    WHITESPACE@42..43 " "
-                    TYPE_ARG@43..55
-                      PATH_TYPE@43..55
-                        PATH@43..55
-                          PATH_SEGMENT@43..55
-                            NAME_REF@43..47
-                              IDENT@43..47 "Item"
-                            GENERIC_ARG_LIST@47..55
-                              COLON2@47..49 "::"
-                              L_ANGLE@49..50 "<"
-                              CONST_ARG@50..54
-                                LITERAL@50..54
-                                  TRUE_KW@50..54 "true"
-                              R_ANGLE@54..55 ">"
-                    COMMA@55..56 ","
-                    WHITESPACE@56..57 " "
-                    ASSOC_TYPE_ARG@57..70
-                      NAME_REF@57..61
-                        IDENT@57..61 "Item"
-                      COLON@61..62 ":"
-                      WHITESPACE@62..63 " "
-                      TYPE_BOUND_LIST@63..70
-                        TYPE_BOUND@63..70
-                          PATH_TYPE@63..70
-                            PATH@63..70
-                              PATH_SEGMENT@63..70
-                                NAME_REF@63..70
-                                  IDENT@63..70 "Display"
-                    COMMA@70..71 ","
-                    WHITESPACE@71..72 " "
-                    ASSOC_TYPE_ARG@72..87
-                      NAME_REF@72..76
-                        IDENT@72..76 "Item"
-                      GENERIC_ARG_LIST@76..80
-                        L_ANGLE@76..77 "<"
-                        LIFETIME_ARG@77..79
-                          LIFETIME@77..79
-                            LIFETIME_IDENT@77..79 "'a"
-                        R_ANGLE@79..80 ">"
-                      WHITESPACE@80..81 " "
-                      EQ@81..82 "="
-                      WHITESPACE@82..83 " "
-                      PATH_TYPE@83..87
-                        PATH@83..87
-                          PATH_SEGMENT@83..87
-                            NAME_REF@83..87
-                              IDENT@83..87 "Item"
-                    R_ANGLE@87..88 ">"
-      R_ANGLE@88..89 ">"
-    PARAM_LIST@89..104
-      L_PAREN@89..90 "("
-      PARAM@90..103
-        IDENT_PAT@90..100
-          NAME@90..100
-            IDENT@90..100 "printables"
-        COLON@100..101 ":"
-        WHITESPACE@101..102 " "
-        PATH_TYPE@102..103
-          PATH@102..103
-            PATH_SEGMENT@102..103
-              NAME_REF@102..103
-                IDENT@102..103 "T"
-      R_PAREN@103..104 ")"
-    WHITESPACE@104..105 " "
-    BLOCK_EXPR@105..107
-      STMT_LIST@105..107
-        L_CURLY@105..106 "{"
-        R_CURLY@106..107 "}"
-  WHITESPACE@107..108 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "print_all"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Iterator"
+                  GENERIC_ARG_LIST
+                    L_ANGLE "<"
+                    TYPE_ARG
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Item"
+                    COMMA ","
+                    WHITESPACE " "
+                    TYPE_ARG
+                      PATH_TYPE
+                        PATH
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Item"
+                          COLON2 "::"
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Item"
+                    COMMA ","
+                    WHITESPACE " "
+                    TYPE_ARG
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Item"
+                            GENERIC_ARG_LIST
+                              COLON2 "::"
+                              L_ANGLE "<"
+                              CONST_ARG
+                                LITERAL
+                                  TRUE_KW "true"
+                              R_ANGLE ">"
+                    COMMA ","
+                    WHITESPACE " "
+                    ASSOC_TYPE_ARG
+                      NAME_REF
+                        IDENT "Item"
+                      COLON ":"
+                      WHITESPACE " "
+                      TYPE_BOUND_LIST
+                        TYPE_BOUND
+                          PATH_TYPE
+                            PATH
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "Display"
+                    COMMA ","
+                    WHITESPACE " "
+                    ASSOC_TYPE_ARG
+                      NAME_REF
+                        IDENT "Item"
+                      GENERIC_ARG_LIST
+                        L_ANGLE "<"
+                        LIFETIME_ARG
+                          LIFETIME
+                            LIFETIME_IDENT "'a"
+                        R_ANGLE ">"
+                      WHITESPACE " "
+                      EQ "="
+                      WHITESPACE " "
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Item"
+                    R_ANGLE ">"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "printables"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.txt b/crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.txt
deleted file mode 100644
index 8cbc98c51ca..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0138_associated_type_bounds.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "print_all"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Iterator"
-                  GENERIC_ARG_LIST
-                    L_ANGLE "<"
-                    TYPE_ARG
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Item"
-                    COMMA ","
-                    WHITESPACE " "
-                    TYPE_ARG
-                      PATH_TYPE
-                        PATH
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Item"
-                          COLON2 "::"
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Item"
-                    COMMA ","
-                    WHITESPACE " "
-                    TYPE_ARG
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Item"
-                            GENERIC_ARG_LIST
-                              COLON2 "::"
-                              L_ANGLE "<"
-                              CONST_ARG
-                                LITERAL
-                                  TRUE_KW "true"
-                              R_ANGLE ">"
-                    COMMA ","
-                    WHITESPACE " "
-                    ASSOC_TYPE_ARG
-                      NAME_REF
-                        IDENT "Item"
-                      COLON ":"
-                      WHITESPACE " "
-                      TYPE_BOUND_LIST
-                        TYPE_BOUND
-                          PATH_TYPE
-                            PATH
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "Display"
-                    COMMA ","
-                    WHITESPACE " "
-                    ASSOC_TYPE_ARG
-                      NAME_REF
-                        IDENT "Item"
-                      GENERIC_ARG_LIST
-                        L_ANGLE "<"
-                        LIFETIME_ARG
-                          LIFETIME
-                            LIFETIME_IDENT "'a"
-                        R_ANGLE ">"
-                      WHITESPACE " "
-                      EQ "="
-                      WHITESPACE " "
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Item"
-                    R_ANGLE ">"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "printables"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0138_expression_after_block.rast b/crates/parser/test_data/parser/inline/ok/0138_expression_after_block.rast
index 134438715a7..553ac356d73 100644
--- a/crates/parser/test_data/parser/inline/ok/0138_expression_after_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0138_expression_after_block.rast
@@ -1,66 +1,66 @@
-SOURCE_FILE@0..52
-  FN@0..51
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..51
-      STMT_LIST@9..51
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..14 "\n   "
-        LET_STMT@14..34
-          LET_KW@14..17 "let"
-          WHITESPACE@17..18 " "
-          IDENT_PAT@18..23
-            MUT_KW@18..21 "mut"
-            WHITESPACE@21..22 " "
-            NAME@22..23
-              IDENT@22..23 "p"
-          WHITESPACE@23..24 " "
-          EQ@24..25 "="
-          WHITESPACE@25..26 " "
-          RECORD_EXPR@26..33
-            PATH@26..27
-              PATH_SEGMENT@26..27
-                NAME_REF@26..27
-                  IDENT@26..27 "F"
-            RECORD_EXPR_FIELD_LIST@27..33
-              L_CURLY@27..28 "{"
-              RECORD_EXPR_FIELD@28..32
-                NAME_REF@28..29
-                  IDENT@28..29 "x"
-                COLON@29..30 ":"
-                WHITESPACE@30..31 " "
-                LITERAL@31..32
-                  INT_NUMBER@31..32 "5"
-              R_CURLY@32..33 "}"
-          SEMICOLON@33..34 ";"
-        WHITESPACE@34..38 "\n   "
-        EXPR_STMT@38..49
-          BIN_EXPR@38..48
-            FIELD_EXPR@38..43
-              BLOCK_EXPR@38..41
-                STMT_LIST@38..41
-                  L_CURLY@38..39 "{"
-                  PATH_EXPR@39..40
-                    PATH@39..40
-                      PATH_SEGMENT@39..40
-                        NAME_REF@39..40
-                          IDENT@39..40 "p"
-                  R_CURLY@40..41 "}"
-              DOT@41..42 "."
-              NAME_REF@42..43
-                IDENT@42..43 "x"
-            WHITESPACE@43..44 " "
-            EQ@44..45 "="
-            WHITESPACE@45..46 " "
-            LITERAL@46..48
-              INT_NUMBER@46..48 "10"
-          SEMICOLON@48..49 ";"
-        WHITESPACE@49..50 "\n"
-        R_CURLY@50..51 "}"
-  WHITESPACE@51..52 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n   "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "p"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          RECORD_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "F"
+            RECORD_EXPR_FIELD_LIST
+              L_CURLY "{"
+              RECORD_EXPR_FIELD
+                NAME_REF
+                  IDENT "x"
+                COLON ":"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "5"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n   "
+        EXPR_STMT
+          BIN_EXPR
+            FIELD_EXPR
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "p"
+                  R_CURLY "}"
+              DOT "."
+              NAME_REF
+                IDENT "x"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "10"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0138_expression_after_block.txt b/crates/parser/test_data/parser/inline/ok/0138_expression_after_block.txt
deleted file mode 100644
index 553ac356d73..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0138_expression_after_block.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n   "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "p"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          RECORD_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "F"
-            RECORD_EXPR_FIELD_LIST
-              L_CURLY "{"
-              RECORD_EXPR_FIELD
-                NAME_REF
-                  IDENT "x"
-                COLON ":"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "5"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n   "
-        EXPR_STMT
-          BIN_EXPR
-            FIELD_EXPR
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "p"
-                  R_CURLY "}"
-              DOT "."
-              NAME_REF
-                IDENT "x"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "10"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.rast b/crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.rast
index 6a80b72e45b..db583f7d526 100644
--- a/crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.rast
@@ -1,28 +1,28 @@
-SOURCE_FILE@0..26
-  FN@0..25
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..22
-      L_PAREN@4..5 "("
-      SELF_PARAM@5..21
-        ATTR@5..16
-          POUND@5..6 "#"
-          L_BRACK@6..7 "["
-          META@7..15
-            PATH@7..15
-              PATH_SEGMENT@7..15
-                NAME_REF@7..15
-                  IDENT@7..15 "must_use"
-          R_BRACK@15..16 "]"
-        WHITESPACE@16..17 " "
-        NAME@17..21
-          SELF_KW@17..21 "self"
-      R_PAREN@21..22 ")"
-    WHITESPACE@22..23 " "
-    BLOCK_EXPR@23..25
-      STMT_LIST@23..25
-        L_CURLY@23..24 "{"
-        R_CURLY@24..25 "}"
-  WHITESPACE@25..26 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      SELF_PARAM
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "must_use"
+          R_BRACK "]"
+        WHITESPACE " "
+        NAME
+          SELF_KW "self"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.txt b/crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.txt
deleted file mode 100644
index db583f7d526..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0138_self_param_outer_attr.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      SELF_PARAM
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "must_use"
-          R_BRACK "]"
-        WHITESPACE " "
-        NAME
-          SELF_KW "self"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.rast b/crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.rast
index 7cdd38917de..c63ea020a3f 100644
--- a/crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..28
-  FN@0..27
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..24
-      L_PAREN@4..5 "("
-      PARAM@5..23
-        ATTR@5..13
-          POUND@5..6 "#"
-          L_BRACK@6..7 "["
-          META@7..12
-            PATH@7..12
-              PATH_SEGMENT@7..12
-                NAME_REF@7..12
-                  IDENT@7..12 "attr1"
-          R_BRACK@12..13 "]"
-        WHITESPACE@13..14 " "
-        IDENT_PAT@14..17
-          NAME@14..17
-            IDENT@14..17 "pat"
-        COLON@17..18 ":"
-        WHITESPACE@18..19 " "
-        PATH_TYPE@19..23
-          PATH@19..23
-            PATH_SEGMENT@19..23
-              NAME_REF@19..23
-                IDENT@19..23 "Type"
-      R_PAREN@23..24 ")"
-    WHITESPACE@24..25 " "
-    BLOCK_EXPR@25..27
-      STMT_LIST@25..27
-        L_CURLY@25..26 "{"
-        R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "attr1"
+          R_BRACK "]"
+        WHITESPACE " "
+        IDENT_PAT
+          NAME
+            IDENT "pat"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Type"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.txt b/crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.txt
deleted file mode 100644
index c63ea020a3f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0139_param_outer_arg.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "attr1"
-          R_BRACK "]"
-        WHITESPACE " "
-        IDENT_PAT
-          NAME
-            IDENT "pat"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Type"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0142_for_range_from.rast b/crates/parser/test_data/parser/inline/ok/0142_for_range_from.rast
index 4f859c30e5c..90cf3101c13 100644
--- a/crates/parser/test_data/parser/inline/ok/0142_for_range_from.rast
+++ b/crates/parser/test_data/parser/inline/ok/0142_for_range_from.rast
@@ -1,42 +1,42 @@
-SOURCE_FILE@0..51
-  FN@0..50
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..50
-      STMT_LIST@9..50
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..14 "\n   "
-        FOR_EXPR@14..48
-          FOR_KW@14..17 "for"
-          WHITESPACE@17..18 " "
-          IDENT_PAT@18..19
-            NAME@18..19
-              IDENT@18..19 "x"
-          WHITESPACE@19..20 " "
-          IN_KW@20..22 "in"
-          WHITESPACE@22..23 " "
-          RANGE_EXPR@23..27
-            LITERAL@23..24
-              INT_NUMBER@23..24 "0"
-            WHITESPACE@24..25 " "
-            DOT2@25..27 ".."
-          WHITESPACE@27..28 " "
-          BLOCK_EXPR@28..48
-            STMT_LIST@28..48
-              L_CURLY@28..29 "{"
-              WHITESPACE@29..37 "\n       "
-              EXPR_STMT@37..43
-                BREAK_EXPR@37..42
-                  BREAK_KW@37..42 "break"
-                SEMICOLON@42..43 ";"
-              WHITESPACE@43..47 "\n   "
-              R_CURLY@47..48 "}"
-        WHITESPACE@48..49 "\n"
-        R_CURLY@49..50 "}"
-  WHITESPACE@50..51 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n   "
+        FOR_EXPR
+          FOR_KW "for"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          IN_KW "in"
+          WHITESPACE " "
+          RANGE_EXPR
+            LITERAL
+              INT_NUMBER "0"
+            WHITESPACE " "
+            DOT2 ".."
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n       "
+              EXPR_STMT
+                BREAK_EXPR
+                  BREAK_KW "break"
+                SEMICOLON ";"
+              WHITESPACE "\n   "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0142_for_range_from.txt b/crates/parser/test_data/parser/inline/ok/0142_for_range_from.txt
deleted file mode 100644
index 90cf3101c13..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0142_for_range_from.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n   "
-        FOR_EXPR
-          FOR_KW "for"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          IN_KW "in"
-          WHITESPACE " "
-          RANGE_EXPR
-            LITERAL
-              INT_NUMBER "0"
-            WHITESPACE " "
-            DOT2 ".."
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n       "
-              EXPR_STMT
-                BREAK_EXPR
-                  BREAK_KW "break"
-                SEMICOLON ";"
-              WHITESPACE "\n   "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0143_box_pat.rast b/crates/parser/test_data/parser/inline/ok/0143_box_pat.rast
index a5f990cff96..df22decde12 100644
--- a/crates/parser/test_data/parser/inline/ok/0143_box_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0143_box_pat.rast
@@ -1,111 +1,111 @@
-SOURCE_FILE@0..118
-  FN@0..117
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..117
-      STMT_LIST@10..117
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..31
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          BOX_PAT@20..25
-            BOX_KW@20..23 "box"
-            WHITESPACE@23..24 " "
-            IDENT_PAT@24..25
-              NAME@24..25
-                IDENT@24..25 "i"
-          WHITESPACE@25..26 " "
-          EQ@26..27 "="
-          WHITESPACE@27..28 " "
-          TUPLE_EXPR@28..30
-            L_PAREN@28..29 "("
-            R_PAREN@29..30 ")"
-          SEMICOLON@30..31 ";"
-        WHITESPACE@31..36 "\n    "
-        LET_STMT@36..87
-          LET_KW@36..39 "let"
-          WHITESPACE@39..40 " "
-          BOX_PAT@40..81
-            BOX_KW@40..43 "box"
-            WHITESPACE@43..44 " "
-            RECORD_PAT@44..81
-              PATH@44..49
-                PATH_SEGMENT@44..49
-                  NAME_REF@44..49
-                    IDENT@44..49 "Outer"
-              WHITESPACE@49..50 " "
-              RECORD_PAT_FIELD_LIST@50..81
-                L_CURLY@50..51 "{"
-                WHITESPACE@51..52 " "
-                RECORD_PAT_FIELD@52..57
-                  BOX_PAT@52..57
-                    BOX_KW@52..55 "box"
-                    WHITESPACE@55..56 " "
-                    IDENT_PAT@56..57
-                      NAME@56..57
-                        IDENT@56..57 "i"
-                COMMA@57..58 ","
-                WHITESPACE@58..59 " "
-                RECORD_PAT_FIELD@59..79
-                  NAME_REF@59..60
-                    IDENT@59..60 "j"
-                  COLON@60..61 ":"
-                  WHITESPACE@61..62 " "
-                  BOX_PAT@62..79
-                    BOX_KW@62..65 "box"
-                    WHITESPACE@65..66 " "
-                    TUPLE_STRUCT_PAT@66..79
-                      PATH@66..71
-                        PATH_SEGMENT@66..71
-                          NAME_REF@66..71
-                            IDENT@66..71 "Inner"
-                      L_PAREN@71..72 "("
-                      BOX_PAT@72..78
-                        BOX_KW@72..75 "box"
-                        WHITESPACE@75..76 " "
-                        REF_PAT@76..78
-                          AMP@76..77 "&"
-                          IDENT_PAT@77..78
-                            NAME@77..78
-                              IDENT@77..78 "x"
-                      R_PAREN@78..79 ")"
-                WHITESPACE@79..80 " "
-                R_CURLY@80..81 "}"
-          WHITESPACE@81..82 " "
-          EQ@82..83 "="
-          WHITESPACE@83..84 " "
-          TUPLE_EXPR@84..86
-            L_PAREN@84..85 "("
-            R_PAREN@85..86 ")"
-          SEMICOLON@86..87 ";"
-        WHITESPACE@87..92 "\n    "
-        LET_STMT@92..115
-          LET_KW@92..95 "let"
-          WHITESPACE@95..96 " "
-          BOX_PAT@96..109
-            BOX_KW@96..99 "box"
-            WHITESPACE@99..100 " "
-            IDENT_PAT@100..109
-              REF_KW@100..103 "ref"
-              WHITESPACE@103..104 " "
-              MUT_KW@104..107 "mut"
-              WHITESPACE@107..108 " "
-              NAME@108..109
-                IDENT@108..109 "i"
-          WHITESPACE@109..110 " "
-          EQ@110..111 "="
-          WHITESPACE@111..112 " "
-          TUPLE_EXPR@112..114
-            L_PAREN@112..113 "("
-            R_PAREN@113..114 ")"
-          SEMICOLON@114..115 ";"
-        WHITESPACE@115..116 "\n"
-        R_CURLY@116..117 "}"
-  WHITESPACE@117..118 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          BOX_PAT
+            BOX_KW "box"
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "i"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          BOX_PAT
+            BOX_KW "box"
+            WHITESPACE " "
+            RECORD_PAT
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Outer"
+              WHITESPACE " "
+              RECORD_PAT_FIELD_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                RECORD_PAT_FIELD
+                  BOX_PAT
+                    BOX_KW "box"
+                    WHITESPACE " "
+                    IDENT_PAT
+                      NAME
+                        IDENT "i"
+                COMMA ","
+                WHITESPACE " "
+                RECORD_PAT_FIELD
+                  NAME_REF
+                    IDENT "j"
+                  COLON ":"
+                  WHITESPACE " "
+                  BOX_PAT
+                    BOX_KW "box"
+                    WHITESPACE " "
+                    TUPLE_STRUCT_PAT
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "Inner"
+                      L_PAREN "("
+                      BOX_PAT
+                        BOX_KW "box"
+                        WHITESPACE " "
+                        REF_PAT
+                          AMP "&"
+                          IDENT_PAT
+                            NAME
+                              IDENT "x"
+                      R_PAREN ")"
+                WHITESPACE " "
+                R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          BOX_PAT
+            BOX_KW "box"
+            WHITESPACE " "
+            IDENT_PAT
+              REF_KW "ref"
+              WHITESPACE " "
+              MUT_KW "mut"
+              WHITESPACE " "
+              NAME
+                IDENT "i"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0143_box_pat.txt b/crates/parser/test_data/parser/inline/ok/0143_box_pat.txt
deleted file mode 100644
index df22decde12..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0143_box_pat.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          BOX_PAT
-            BOX_KW "box"
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "i"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          BOX_PAT
-            BOX_KW "box"
-            WHITESPACE " "
-            RECORD_PAT
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Outer"
-              WHITESPACE " "
-              RECORD_PAT_FIELD_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                RECORD_PAT_FIELD
-                  BOX_PAT
-                    BOX_KW "box"
-                    WHITESPACE " "
-                    IDENT_PAT
-                      NAME
-                        IDENT "i"
-                COMMA ","
-                WHITESPACE " "
-                RECORD_PAT_FIELD
-                  NAME_REF
-                    IDENT "j"
-                  COLON ":"
-                  WHITESPACE " "
-                  BOX_PAT
-                    BOX_KW "box"
-                    WHITESPACE " "
-                    TUPLE_STRUCT_PAT
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "Inner"
-                      L_PAREN "("
-                      BOX_PAT
-                        BOX_KW "box"
-                        WHITESPACE " "
-                        REF_PAT
-                          AMP "&"
-                          IDENT_PAT
-                            NAME
-                              IDENT "x"
-                      R_PAREN ")"
-                WHITESPACE " "
-                R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          BOX_PAT
-            BOX_KW "box"
-            WHITESPACE " "
-            IDENT_PAT
-              REF_KW "ref"
-              WHITESPACE " "
-              MUT_KW "mut"
-              WHITESPACE " "
-              NAME
-                IDENT "i"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.rast b/crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.rast
index 6a423ff14cc..4d4011e6b4a 100644
--- a/crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.rast
@@ -1,456 +1,456 @@
-SOURCE_FILE@0..555
-  FN@0..554
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..554
-      STMT_LIST@10..554
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..28
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          REST_PAT@20..22
-            DOT2@20..22 ".."
-          WHITESPACE@22..23 " "
-          EQ@23..24 "="
-          WHITESPACE@24..25 " "
-          TUPLE_EXPR@25..27
-            L_PAREN@25..26 "("
-            R_PAREN@26..27 ")"
-          SEMICOLON@27..28 ";"
-        WHITESPACE@28..33 "\n    "
-        COMMENT@33..35 "//"
-        WHITESPACE@35..40 "\n    "
-        COMMENT@40..49 "// Tuples"
-        WHITESPACE@49..54 "\n    "
-        COMMENT@54..56 "//"
-        WHITESPACE@56..61 "\n    "
-        LET_STMT@61..78
-          LET_KW@61..64 "let"
-          WHITESPACE@64..65 " "
-          TUPLE_PAT@65..72
-            L_PAREN@65..66 "("
-            IDENT_PAT@66..67
-              NAME@66..67
-                IDENT@66..67 "a"
-            COMMA@67..68 ","
-            WHITESPACE@68..69 " "
-            REST_PAT@69..71
-              DOT2@69..71 ".."
-            R_PAREN@71..72 ")"
-          WHITESPACE@72..73 " "
-          EQ@73..74 "="
-          WHITESPACE@74..75 " "
-          TUPLE_EXPR@75..77
-            L_PAREN@75..76 "("
-            R_PAREN@76..77 ")"
-          SEMICOLON@77..78 ";"
-        WHITESPACE@78..83 "\n    "
-        LET_STMT@83..101
-          LET_KW@83..86 "let"
-          WHITESPACE@86..87 " "
-          TUPLE_PAT@87..95
-            L_PAREN@87..88 "("
-            IDENT_PAT@88..89
-              NAME@88..89
-                IDENT@88..89 "a"
-            COMMA@89..90 ","
-            WHITESPACE@90..91 " "
-            REST_PAT@91..93
-              DOT2@91..93 ".."
-            COMMA@93..94 ","
-            R_PAREN@94..95 ")"
-          WHITESPACE@95..96 " "
-          EQ@96..97 "="
-          WHITESPACE@97..98 " "
-          TUPLE_EXPR@98..100
-            L_PAREN@98..99 "("
-            R_PAREN@99..100 ")"
-          SEMICOLON@100..101 ";"
-        WHITESPACE@101..106 "\n    "
-        LET_STMT@106..128
-          LET_KW@106..109 "let"
-          WHITESPACE@109..110 " "
-          TUPLE_STRUCT_PAT@110..122
-            PATH@110..115
-              PATH_SEGMENT@110..115
-                NAME_REF@110..115
-                  IDENT@110..115 "Tuple"
-            L_PAREN@115..116 "("
-            IDENT_PAT@116..117
-              NAME@116..117
-                IDENT@116..117 "a"
-            COMMA@117..118 ","
-            WHITESPACE@118..119 " "
-            REST_PAT@119..121
-              DOT2@119..121 ".."
-            R_PAREN@121..122 ")"
-          WHITESPACE@122..123 " "
-          EQ@123..124 "="
-          WHITESPACE@124..125 " "
-          TUPLE_EXPR@125..127
-            L_PAREN@125..126 "("
-            R_PAREN@126..127 ")"
-          SEMICOLON@127..128 ";"
-        WHITESPACE@128..133 "\n    "
-        LET_STMT@133..156
-          LET_KW@133..136 "let"
-          WHITESPACE@136..137 " "
-          TUPLE_STRUCT_PAT@137..150
-            PATH@137..142
-              PATH_SEGMENT@137..142
-                NAME_REF@137..142
-                  IDENT@137..142 "Tuple"
-            L_PAREN@142..143 "("
-            IDENT_PAT@143..144
-              NAME@143..144
-                IDENT@143..144 "a"
-            COMMA@144..145 ","
-            WHITESPACE@145..146 " "
-            REST_PAT@146..148
-              DOT2@146..148 ".."
-            COMMA@148..149 ","
-            R_PAREN@149..150 ")"
-          WHITESPACE@150..151 " "
-          EQ@151..152 "="
-          WHITESPACE@152..153 " "
-          TUPLE_EXPR@153..155
-            L_PAREN@153..154 "("
-            R_PAREN@154..155 ")"
-          SEMICOLON@155..156 ";"
-        WHITESPACE@156..161 "\n    "
-        LET_STMT@161..179
-          LET_KW@161..164 "let"
-          WHITESPACE@164..165 " "
-          TUPLE_PAT@165..173
-            L_PAREN@165..166 "("
-            REST_PAT@166..168
-              DOT2@166..168 ".."
-            COMMA@168..169 ","
-            WHITESPACE@169..170 " "
-            REST_PAT@170..172
-              DOT2@170..172 ".."
-            R_PAREN@172..173 ")"
-          WHITESPACE@173..174 " "
-          EQ@174..175 "="
-          WHITESPACE@175..176 " "
-          TUPLE_EXPR@176..178
-            L_PAREN@176..177 "("
-            R_PAREN@177..178 ")"
-          SEMICOLON@178..179 ";"
-        WHITESPACE@179..184 "\n    "
-        LET_STMT@184..207
-          LET_KW@184..187 "let"
-          WHITESPACE@187..188 " "
-          TUPLE_STRUCT_PAT@188..201
-            PATH@188..193
-              PATH_SEGMENT@188..193
-                NAME_REF@188..193
-                  IDENT@188..193 "Tuple"
-            L_PAREN@193..194 "("
-            REST_PAT@194..196
-              DOT2@194..196 ".."
-            COMMA@196..197 ","
-            WHITESPACE@197..198 " "
-            REST_PAT@198..200
-              DOT2@198..200 ".."
-            R_PAREN@200..201 ")"
-          WHITESPACE@201..202 " "
-          EQ@202..203 "="
-          WHITESPACE@203..204 " "
-          TUPLE_EXPR@204..206
-            L_PAREN@204..205 "("
-            R_PAREN@205..206 ")"
-          SEMICOLON@206..207 ";"
-        WHITESPACE@207..212 "\n    "
-        LET_STMT@212..233
-          LET_KW@212..215 "let"
-          WHITESPACE@215..216 " "
-          TUPLE_PAT@216..227
-            L_PAREN@216..217 "("
-            REST_PAT@217..219
-              DOT2@217..219 ".."
-            COMMA@219..220 ","
-            WHITESPACE@220..221 " "
-            IDENT_PAT@221..222
-              NAME@221..222
-                IDENT@221..222 "a"
-            COMMA@222..223 ","
-            WHITESPACE@223..224 " "
-            REST_PAT@224..226
-              DOT2@224..226 ".."
-            R_PAREN@226..227 ")"
-          WHITESPACE@227..228 " "
-          EQ@228..229 "="
-          WHITESPACE@229..230 " "
-          TUPLE_EXPR@230..232
-            L_PAREN@230..231 "("
-            R_PAREN@231..232 ")"
-          SEMICOLON@232..233 ";"
-        WHITESPACE@233..238 "\n    "
-        LET_STMT@238..264
-          LET_KW@238..241 "let"
-          WHITESPACE@241..242 " "
-          TUPLE_STRUCT_PAT@242..258
-            PATH@242..247
-              PATH_SEGMENT@242..247
-                NAME_REF@242..247
-                  IDENT@242..247 "Tuple"
-            L_PAREN@247..248 "("
-            REST_PAT@248..250
-              DOT2@248..250 ".."
-            COMMA@250..251 ","
-            WHITESPACE@251..252 " "
-            IDENT_PAT@252..253
-              NAME@252..253
-                IDENT@252..253 "a"
-            COMMA@253..254 ","
-            WHITESPACE@254..255 " "
-            REST_PAT@255..257
-              DOT2@255..257 ".."
-            R_PAREN@257..258 ")"
-          WHITESPACE@258..259 " "
-          EQ@259..260 "="
-          WHITESPACE@260..261 " "
-          TUPLE_EXPR@261..263
-            L_PAREN@261..262 "("
-            R_PAREN@262..263 ")"
-          SEMICOLON@263..264 ";"
-        WHITESPACE@264..269 "\n    "
-        COMMENT@269..271 "//"
-        WHITESPACE@271..276 "\n    "
-        COMMENT@276..285 "// Slices"
-        WHITESPACE@285..290 "\n    "
-        COMMENT@290..292 "//"
-        WHITESPACE@292..297 "\n    "
-        LET_STMT@297..311
-          LET_KW@297..300 "let"
-          WHITESPACE@300..301 " "
-          SLICE_PAT@301..305
-            L_BRACK@301..302 "["
-            REST_PAT@302..304
-              DOT2@302..304 ".."
-            R_BRACK@304..305 "]"
-          WHITESPACE@305..306 " "
-          EQ@306..307 "="
-          WHITESPACE@307..308 " "
-          TUPLE_EXPR@308..310
-            L_PAREN@308..309 "("
-            R_PAREN@309..310 ")"
-          SEMICOLON@310..311 ";"
-        WHITESPACE@311..316 "\n    "
-        LET_STMT@316..336
-          LET_KW@316..319 "let"
-          WHITESPACE@319..320 " "
-          SLICE_PAT@320..330
-            L_BRACK@320..321 "["
-            IDENT_PAT@321..325
-              NAME@321..325
-                IDENT@321..325 "head"
-            COMMA@325..326 ","
-            WHITESPACE@326..327 " "
-            REST_PAT@327..329
-              DOT2@327..329 ".."
-            R_BRACK@329..330 "]"
-          WHITESPACE@330..331 " "
-          EQ@331..332 "="
-          WHITESPACE@332..333 " "
-          TUPLE_EXPR@333..335
-            L_PAREN@333..334 "("
-            R_PAREN@334..335 ")"
-          SEMICOLON@335..336 ";"
-        WHITESPACE@336..341 "\n    "
-        LET_STMT@341..368
-          LET_KW@341..344 "let"
-          WHITESPACE@344..345 " "
-          SLICE_PAT@345..362
-            L_BRACK@345..346 "["
-            IDENT_PAT@346..350
-              NAME@346..350
-                IDENT@346..350 "head"
-            COMMA@350..351 ","
-            WHITESPACE@351..352 " "
-            IDENT_PAT@352..361
-              NAME@352..356
-                IDENT@352..356 "tail"
-              WHITESPACE@356..357 " "
-              AT@357..358 "@"
-              WHITESPACE@358..359 " "
-              REST_PAT@359..361
-                DOT2@359..361 ".."
-            R_BRACK@361..362 "]"
-          WHITESPACE@362..363 " "
-          EQ@363..364 "="
-          WHITESPACE@364..365 " "
-          TUPLE_EXPR@365..367
-            L_PAREN@365..366 "("
-            R_PAREN@366..367 ")"
-          SEMICOLON@367..368 ";"
-        WHITESPACE@368..373 "\n    "
-        LET_STMT@373..399
-          LET_KW@373..376 "let"
-          WHITESPACE@376..377 " "
-          SLICE_PAT@377..393
-            L_BRACK@377..378 "["
-            IDENT_PAT@378..382
-              NAME@378..382
-                IDENT@378..382 "head"
-            COMMA@382..383 ","
-            WHITESPACE@383..384 " "
-            REST_PAT@384..386
-              DOT2@384..386 ".."
-            COMMA@386..387 ","
-            WHITESPACE@387..388 " "
-            IDENT_PAT@388..392
-              NAME@388..392
-                IDENT@388..392 "cons"
-            R_BRACK@392..393 "]"
-          WHITESPACE@393..394 " "
-          EQ@394..395 "="
-          WHITESPACE@395..396 " "
-          TUPLE_EXPR@396..398
-            L_PAREN@396..397 "("
-            R_PAREN@397..398 ")"
-          SEMICOLON@398..399 ";"
-        WHITESPACE@399..404 "\n    "
-        LET_STMT@404..436
-          LET_KW@404..407 "let"
-          WHITESPACE@407..408 " "
-          SLICE_PAT@408..430
-            L_BRACK@408..409 "["
-            IDENT_PAT@409..413
-              NAME@409..413
-                IDENT@409..413 "head"
-            COMMA@413..414 ","
-            WHITESPACE@414..415 " "
-            IDENT_PAT@415..423
-              NAME@415..418
-                IDENT@415..418 "mid"
-              WHITESPACE@418..419 " "
-              AT@419..420 "@"
-              WHITESPACE@420..421 " "
-              REST_PAT@421..423
-                DOT2@421..423 ".."
-            COMMA@423..424 ","
-            WHITESPACE@424..425 " "
-            IDENT_PAT@425..429
-              NAME@425..429
-                IDENT@425..429 "cons"
-            R_BRACK@429..430 "]"
-          WHITESPACE@430..431 " "
-          EQ@431..432 "="
-          WHITESPACE@432..433 " "
-          TUPLE_EXPR@433..435
-            L_PAREN@433..434 "("
-            R_PAREN@434..435 ")"
-          SEMICOLON@435..436 ";"
-        WHITESPACE@436..441 "\n    "
-        LET_STMT@441..471
-          LET_KW@441..444 "let"
-          WHITESPACE@444..445 " "
-          SLICE_PAT@445..465
-            L_BRACK@445..446 "["
-            IDENT_PAT@446..450
-              NAME@446..450
-                IDENT@446..450 "head"
-            COMMA@450..451 ","
-            WHITESPACE@451..452 " "
-            REST_PAT@452..454
-              DOT2@452..454 ".."
-            COMMA@454..455 ","
-            WHITESPACE@455..456 " "
-            REST_PAT@456..458
-              DOT2@456..458 ".."
-            COMMA@458..459 ","
-            WHITESPACE@459..460 " "
-            IDENT_PAT@460..464
-              NAME@460..464
-                IDENT@460..464 "cons"
-            R_BRACK@464..465 "]"
-          WHITESPACE@465..466 " "
-          EQ@466..467 "="
-          WHITESPACE@467..468 " "
-          TUPLE_EXPR@468..470
-            L_PAREN@468..469 "("
-            R_PAREN@469..470 ")"
-          SEMICOLON@470..471 ";"
-        WHITESPACE@471..476 "\n    "
-        LET_STMT@476..512
-          LET_KW@476..479 "let"
-          WHITESPACE@479..480 " "
-          SLICE_PAT@480..506
-            L_BRACK@480..481 "["
-            IDENT_PAT@481..485
-              NAME@481..485
-                IDENT@481..485 "head"
-            COMMA@485..486 ","
-            WHITESPACE@486..487 " "
-            REST_PAT@487..489
-              DOT2@487..489 ".."
-            COMMA@489..490 ","
-            WHITESPACE@490..491 " "
-            IDENT_PAT@491..494
-              NAME@491..494
-                IDENT@491..494 "mid"
-            COMMA@494..495 ","
-            WHITESPACE@495..496 " "
-            IDENT_PAT@496..505
-              NAME@496..500
-                IDENT@496..500 "tail"
-              WHITESPACE@500..501 " "
-              AT@501..502 "@"
-              WHITESPACE@502..503 " "
-              REST_PAT@503..505
-                DOT2@503..505 ".."
-            R_BRACK@505..506 "]"
-          WHITESPACE@506..507 " "
-          EQ@507..508 "="
-          WHITESPACE@508..509 " "
-          TUPLE_EXPR@509..511
-            L_PAREN@509..510 "("
-            R_PAREN@510..511 ")"
-          SEMICOLON@511..512 ";"
-        WHITESPACE@512..517 "\n    "
-        LET_STMT@517..552
-          LET_KW@517..520 "let"
-          WHITESPACE@520..521 " "
-          SLICE_PAT@521..546
-            L_BRACK@521..522 "["
-            IDENT_PAT@522..526
-              NAME@522..526
-                IDENT@522..526 "head"
-            COMMA@526..527 ","
-            WHITESPACE@527..528 " "
-            REST_PAT@528..530
-              DOT2@528..530 ".."
-            COMMA@530..531 ","
-            WHITESPACE@531..532 " "
-            IDENT_PAT@532..535
-              NAME@532..535
-                IDENT@532..535 "mid"
-            COMMA@535..536 ","
-            WHITESPACE@536..537 " "
-            REST_PAT@537..539
-              DOT2@537..539 ".."
-            COMMA@539..540 ","
-            WHITESPACE@540..541 " "
-            IDENT_PAT@541..545
-              NAME@541..545
-                IDENT@541..545 "cons"
-            R_BRACK@545..546 "]"
-          WHITESPACE@546..547 " "
-          EQ@547..548 "="
-          WHITESPACE@548..549 " "
-          TUPLE_EXPR@549..551
-            L_PAREN@549..550 "("
-            R_PAREN@550..551 ")"
-          SEMICOLON@551..552 ";"
-        WHITESPACE@552..553 "\n"
-        R_CURLY@553..554 "}"
-  WHITESPACE@554..555 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          REST_PAT
+            DOT2 ".."
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        COMMENT "//"
+        WHITESPACE "\n    "
+        COMMENT "// Tuples"
+        WHITESPACE "\n    "
+        COMMENT "//"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Tuple"
+            L_PAREN "("
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Tuple"
+            L_PAREN "("
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Tuple"
+            L_PAREN "("
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Tuple"
+            L_PAREN "("
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "a"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        COMMENT "//"
+        WHITESPACE "\n    "
+        COMMENT "// Slices"
+        WHITESPACE "\n    "
+        COMMENT "//"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            REST_PAT
+              DOT2 ".."
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "head"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "head"
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "tail"
+              WHITESPACE " "
+              AT "@"
+              WHITESPACE " "
+              REST_PAT
+                DOT2 ".."
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "head"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "cons"
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "head"
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "mid"
+              WHITESPACE " "
+              AT "@"
+              WHITESPACE " "
+              REST_PAT
+                DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "cons"
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "head"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "cons"
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "head"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "mid"
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "tail"
+              WHITESPACE " "
+              AT "@"
+              WHITESPACE " "
+              REST_PAT
+                DOT2 ".."
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          SLICE_PAT
+            L_BRACK "["
+            IDENT_PAT
+              NAME
+                IDENT "head"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "mid"
+            COMMA ","
+            WHITESPACE " "
+            REST_PAT
+              DOT2 ".."
+            COMMA ","
+            WHITESPACE " "
+            IDENT_PAT
+              NAME
+                IDENT "cons"
+            R_BRACK "]"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.txt b/crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.txt
deleted file mode 100644
index 4d4011e6b4a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0144_dot_dot_pat.txt
+++ /dev/null
@@ -1,456 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          REST_PAT
-            DOT2 ".."
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        COMMENT "//"
-        WHITESPACE "\n    "
-        COMMENT "// Tuples"
-        WHITESPACE "\n    "
-        COMMENT "//"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Tuple"
-            L_PAREN "("
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Tuple"
-            L_PAREN "("
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Tuple"
-            L_PAREN "("
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Tuple"
-            L_PAREN "("
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "a"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        COMMENT "//"
-        WHITESPACE "\n    "
-        COMMENT "// Slices"
-        WHITESPACE "\n    "
-        COMMENT "//"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            REST_PAT
-              DOT2 ".."
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "head"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "head"
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "tail"
-              WHITESPACE " "
-              AT "@"
-              WHITESPACE " "
-              REST_PAT
-                DOT2 ".."
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "head"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "cons"
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "head"
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "mid"
-              WHITESPACE " "
-              AT "@"
-              WHITESPACE " "
-              REST_PAT
-                DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "cons"
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "head"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "cons"
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "head"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "mid"
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "tail"
-              WHITESPACE " "
-              AT "@"
-              WHITESPACE " "
-              REST_PAT
-                DOT2 ".."
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          SLICE_PAT
-            L_BRACK "["
-            IDENT_PAT
-              NAME
-                IDENT "head"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "mid"
-            COMMA ","
-            WHITESPACE " "
-            REST_PAT
-              DOT2 ".."
-            COMMA ","
-            WHITESPACE " "
-            IDENT_PAT
-              NAME
-                IDENT "cons"
-            R_BRACK "]"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0145_record_pat_field.rast b/crates/parser/test_data/parser/inline/ok/0145_record_pat_field.rast
index b79690b9ed7..f3d2fde4669 100644
--- a/crates/parser/test_data/parser/inline/ok/0145_record_pat_field.rast
+++ b/crates/parser/test_data/parser/inline/ok/0145_record_pat_field.rast
@@ -1,123 +1,123 @@
-SOURCE_FILE@0..102
-  FN@0..101
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..101
-      STMT_LIST@9..101
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        LET_STMT@15..35
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          RECORD_PAT@19..29
-            PATH@19..20
-              PATH_SEGMENT@19..20
-                NAME_REF@19..20
-                  IDENT@19..20 "S"
-            WHITESPACE@20..21 " "
-            RECORD_PAT_FIELD_LIST@21..29
-              L_CURLY@21..22 "{"
-              WHITESPACE@22..23 " "
-              RECORD_PAT_FIELD@23..27
-                NAME_REF@23..24
-                  INT_NUMBER@23..24 "0"
-                COLON@24..25 ":"
-                WHITESPACE@25..26 " "
-                LITERAL_PAT@26..27
-                  LITERAL@26..27
-                    INT_NUMBER@26..27 "1"
-              WHITESPACE@27..28 " "
-              R_CURLY@28..29 "}"
-          WHITESPACE@29..30 " "
-          EQ@30..31 "="
-          WHITESPACE@31..32 " "
-          TUPLE_EXPR@32..34
-            L_PAREN@32..33 "("
-            R_PAREN@33..34 ")"
-          SEMICOLON@34..35 ";"
-        WHITESPACE@35..40 "\n    "
-        LET_STMT@40..60
-          LET_KW@40..43 "let"
-          WHITESPACE@43..44 " "
-          RECORD_PAT@44..54
-            PATH@44..45
-              PATH_SEGMENT@44..45
-                NAME_REF@44..45
-                  IDENT@44..45 "S"
-            WHITESPACE@45..46 " "
-            RECORD_PAT_FIELD_LIST@46..54
-              L_CURLY@46..47 "{"
-              WHITESPACE@47..48 " "
-              RECORD_PAT_FIELD@48..52
-                NAME_REF@48..49
-                  IDENT@48..49 "x"
-                COLON@49..50 ":"
-                WHITESPACE@50..51 " "
-                LITERAL_PAT@51..52
-                  LITERAL@51..52
-                    INT_NUMBER@51..52 "1"
-              WHITESPACE@52..53 " "
-              R_CURLY@53..54 "}"
-          WHITESPACE@54..55 " "
-          EQ@55..56 "="
-          WHITESPACE@56..57 " "
-          TUPLE_EXPR@57..59
-            L_PAREN@57..58 "("
-            R_PAREN@58..59 ")"
-          SEMICOLON@59..60 ";"
-        WHITESPACE@60..65 "\n    "
-        LET_STMT@65..99
-          LET_KW@65..68 "let"
-          WHITESPACE@68..69 " "
-          RECORD_PAT@69..93
-            PATH@69..70
-              PATH_SEGMENT@69..70
-                NAME_REF@69..70
-                  IDENT@69..70 "S"
-            WHITESPACE@70..71 " "
-            RECORD_PAT_FIELD_LIST@71..93
-              L_CURLY@71..72 "{"
-              WHITESPACE@72..73 " "
-              RECORD_PAT_FIELD@73..91
-                ATTR@73..86
-                  POUND@73..74 "#"
-                  L_BRACK@74..75 "["
-                  META@75..85
-                    PATH@75..78
-                      PATH_SEGMENT@75..78
-                        NAME_REF@75..78
-                          IDENT@75..78 "cfg"
-                    TOKEN_TREE@78..85
-                      L_PAREN@78..79 "("
-                      IDENT@79..82 "any"
-                      TOKEN_TREE@82..84
-                        L_PAREN@82..83 "("
-                        R_PAREN@83..84 ")"
-                      R_PAREN@84..85 ")"
-                  R_BRACK@85..86 "]"
-                WHITESPACE@86..87 " "
-                NAME_REF@87..88
-                  IDENT@87..88 "x"
-                COLON@88..89 ":"
-                WHITESPACE@89..90 " "
-                LITERAL_PAT@90..91
-                  LITERAL@90..91
-                    INT_NUMBER@90..91 "1"
-              WHITESPACE@91..92 " "
-              R_CURLY@92..93 "}"
-          WHITESPACE@93..94 " "
-          EQ@94..95 "="
-          WHITESPACE@95..96 " "
-          TUPLE_EXPR@96..98
-            L_PAREN@96..97 "("
-            R_PAREN@97..98 ")"
-          SEMICOLON@98..99 ";"
-        WHITESPACE@99..100 "\n"
-        R_CURLY@100..101 "}"
-  WHITESPACE@101..102 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_PAT_FIELD
+                NAME_REF
+                  INT_NUMBER "0"
+                COLON ":"
+                WHITESPACE " "
+                LITERAL_PAT
+                  LITERAL
+                    INT_NUMBER "1"
+              WHITESPACE " "
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_PAT_FIELD
+                NAME_REF
+                  IDENT "x"
+                COLON ":"
+                WHITESPACE " "
+                LITERAL_PAT
+                  LITERAL
+                    INT_NUMBER "1"
+              WHITESPACE " "
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RECORD_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "S"
+            WHITESPACE " "
+            RECORD_PAT_FIELD_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              RECORD_PAT_FIELD
+                ATTR
+                  POUND "#"
+                  L_BRACK "["
+                  META
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "cfg"
+                    TOKEN_TREE
+                      L_PAREN "("
+                      IDENT "any"
+                      TOKEN_TREE
+                        L_PAREN "("
+                        R_PAREN ")"
+                      R_PAREN ")"
+                  R_BRACK "]"
+                WHITESPACE " "
+                NAME_REF
+                  IDENT "x"
+                COLON ":"
+                WHITESPACE " "
+                LITERAL_PAT
+                  LITERAL
+                    INT_NUMBER "1"
+              WHITESPACE " "
+              R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0145_record_pat_field.txt b/crates/parser/test_data/parser/inline/ok/0145_record_pat_field.txt
deleted file mode 100644
index f3d2fde4669..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0145_record_pat_field.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_PAT_FIELD
-                NAME_REF
-                  INT_NUMBER "0"
-                COLON ":"
-                WHITESPACE " "
-                LITERAL_PAT
-                  LITERAL
-                    INT_NUMBER "1"
-              WHITESPACE " "
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_PAT_FIELD
-                NAME_REF
-                  IDENT "x"
-                COLON ":"
-                WHITESPACE " "
-                LITERAL_PAT
-                  LITERAL
-                    INT_NUMBER "1"
-              WHITESPACE " "
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RECORD_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "S"
-            WHITESPACE " "
-            RECORD_PAT_FIELD_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              RECORD_PAT_FIELD
-                ATTR
-                  POUND "#"
-                  L_BRACK "["
-                  META
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "cfg"
-                    TOKEN_TREE
-                      L_PAREN "("
-                      IDENT "any"
-                      TOKEN_TREE
-                        L_PAREN "("
-                        R_PAREN ")"
-                      R_PAREN ")"
-                  R_BRACK "]"
-                WHITESPACE " "
-                NAME_REF
-                  IDENT "x"
-                COLON ":"
-                WHITESPACE " "
-                LITERAL_PAT
-                  LITERAL
-                    INT_NUMBER "1"
-              WHITESPACE " "
-              R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0146_as_precedence.rast b/crates/parser/test_data/parser/inline/ok/0146_as_precedence.rast
index 5a51b3bbea2..4079d2a9915 100644
--- a/crates/parser/test_data/parser/inline/ok/0146_as_precedence.rast
+++ b/crates/parser/test_data/parser/inline/ok/0146_as_precedence.rast
@@ -1,43 +1,43 @@
-SOURCE_FILE@0..37
-  FN@0..36
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..36
-      STMT_LIST@7..36
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        LET_STMT@9..34
-          LET_KW@9..12 "let"
-          WHITESPACE@12..13 " "
-          WILDCARD_PAT@13..14
-            UNDERSCORE@13..14 "_"
-          WHITESPACE@14..15 " "
-          EQ@15..16 "="
-          WHITESPACE@16..17 " "
-          CAST_EXPR@17..33
-            REF_EXPR@17..19
-              AMP@17..18 "&"
-              LITERAL@18..19
-                INT_NUMBER@18..19 "1"
-            WHITESPACE@19..20 " "
-            AS_KW@20..22 "as"
-            WHITESPACE@22..23 " "
-            PTR_TYPE@23..33
-              STAR@23..24 "*"
-              CONST_KW@24..29 "const"
-              WHITESPACE@29..30 " "
-              PATH_TYPE@30..33
-                PATH@30..33
-                  PATH_SEGMENT@30..33
-                    NAME_REF@30..33
-                      IDENT@30..33 "i32"
-          SEMICOLON@33..34 ";"
-        WHITESPACE@34..35 " "
-        R_CURLY@35..36 "}"
-  WHITESPACE@36..37 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CAST_EXPR
+            REF_EXPR
+              AMP "&"
+              LITERAL
+                INT_NUMBER "1"
+            WHITESPACE " "
+            AS_KW "as"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i32"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0146_as_precedence.txt b/crates/parser/test_data/parser/inline/ok/0146_as_precedence.txt
deleted file mode 100644
index 4079d2a9915..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0146_as_precedence.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CAST_EXPR
-            REF_EXPR
-              AMP "&"
-              LITERAL
-                INT_NUMBER "1"
-            WHITESPACE " "
-            AS_KW "as"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i32"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0147_const_param.rast b/crates/parser/test_data/parser/inline/ok/0147_const_param.rast
index 9312eab65e4..24595a1a185 100644
--- a/crates/parser/test_data/parser/inline/ok/0147_const_param.rast
+++ b/crates/parser/test_data/parser/inline/ok/0147_const_param.rast
@@ -1,23 +1,23 @@
-SOURCE_FILE@0..24
-  STRUCT@0..23
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    GENERIC_PARAM_LIST@8..22
-      L_ANGLE@8..9 "<"
-      CONST_PARAM@9..21
-        CONST_KW@9..14 "const"
-        WHITESPACE@14..15 " "
-        NAME@15..16
-          IDENT@15..16 "N"
-        COLON@16..17 ":"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "u32"
-      R_ANGLE@21..22 ">"
-    SEMICOLON@22..23 ";"
-  WHITESPACE@23..24 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      CONST_PARAM
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "N"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0147_const_param.txt b/crates/parser/test_data/parser/inline/ok/0147_const_param.txt
deleted file mode 100644
index 24595a1a185..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0147_const_param.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      CONST_PARAM
-        CONST_KW "const"
-        WHITESPACE " "
-        NAME
-          IDENT "N"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0147_macro_def.rast b/crates/parser/test_data/parser/inline/ok/0147_macro_def.rast
index 4d7b78d5caa..01de13a907d 100644
--- a/crates/parser/test_data/parser/inline/ok/0147_macro_def.rast
+++ b/crates/parser/test_data/parser/inline/ok/0147_macro_def.rast
@@ -1,19 +1,19 @@
-SOURCE_FILE@0..21
-  MACRO_DEF@0..20
-    MACRO_KW@0..5 "macro"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "m"
-    TOKEN_TREE@7..20
-      TOKEN_TREE@7..17
-        L_PAREN@7..8 "("
-        DOLLAR@8..9 "$"
-        IDENT@9..10 "i"
-        COLON@10..11 ":"
-        IDENT@11..16 "ident"
-        R_PAREN@16..17 ")"
-      WHITESPACE@17..18 " "
-      TOKEN_TREE@18..20
-        L_CURLY@18..19 "{"
-        R_CURLY@19..20 "}"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  MACRO_DEF
+    MACRO_KW "macro"
+    WHITESPACE " "
+    NAME
+      IDENT "m"
+    TOKEN_TREE
+      TOKEN_TREE
+        L_PAREN "("
+        DOLLAR "$"
+        IDENT "i"
+        COLON ":"
+        IDENT "ident"
+        R_PAREN ")"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0147_macro_def.txt b/crates/parser/test_data/parser/inline/ok/0147_macro_def.txt
deleted file mode 100644
index 01de13a907d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0147_macro_def.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-SOURCE_FILE
-  MACRO_DEF
-    MACRO_KW "macro"
-    WHITESPACE " "
-    NAME
-      IDENT "m"
-    TOKEN_TREE
-      TOKEN_TREE
-        L_PAREN "("
-        DOLLAR "$"
-        IDENT "i"
-        COLON ":"
-        IDENT "ident"
-        R_PAREN ")"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0150_array_attrs.rast b/crates/parser/test_data/parser/inline/ok/0150_array_attrs.rast
index 26cdc2945ae..6eb8af33119 100644
--- a/crates/parser/test_data/parser/inline/ok/0150_array_attrs.rast
+++ b/crates/parser/test_data/parser/inline/ok/0150_array_attrs.rast
@@ -1,48 +1,48 @@
-SOURCE_FILE@0..40
-  CONST@0..39
-    CONST_KW@0..5 "const"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "A"
-    COLON@7..8 ":"
-    WHITESPACE@8..9 " "
-    REF_TYPE@9..15
-      AMP@9..10 "&"
-      SLICE_TYPE@10..15
-        L_BRACK@10..11 "["
-        PATH_TYPE@11..14
-          PATH@11..14
-            PATH_SEGMENT@11..14
-              NAME_REF@11..14
-                IDENT@11..14 "i64"
-        R_BRACK@14..15 "]"
-    WHITESPACE@15..16 " "
-    EQ@16..17 "="
-    WHITESPACE@17..18 " "
-    REF_EXPR@18..38
-      AMP@18..19 "&"
-      ARRAY_EXPR@19..38
-        L_BRACK@19..20 "["
-        LITERAL@20..21
-          INT_NUMBER@20..21 "1"
-        COMMA@21..22 ","
-        WHITESPACE@22..23 " "
-        LITERAL@23..37
-          ATTR@23..35
-            POUND@23..24 "#"
-            L_BRACK@24..25 "["
-            META@25..34
-              PATH@25..28
-                PATH_SEGMENT@25..28
-                  NAME_REF@25..28
-                    IDENT@25..28 "cfg"
-              TOKEN_TREE@28..34
-                L_PAREN@28..29 "("
-                IDENT@29..33 "test"
-                R_PAREN@33..34 ")"
-            R_BRACK@34..35 "]"
-          WHITESPACE@35..36 " "
-          INT_NUMBER@36..37 "2"
-        R_BRACK@37..38 "]"
-    SEMICOLON@38..39 ";"
-  WHITESPACE@39..40 "\n"
+SOURCE_FILE
+  CONST
+    CONST_KW "const"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    COLON ":"
+    WHITESPACE " "
+    REF_TYPE
+      AMP "&"
+      SLICE_TYPE
+        L_BRACK "["
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i64"
+        R_BRACK "]"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    REF_EXPR
+      AMP "&"
+      ARRAY_EXPR
+        L_BRACK "["
+        LITERAL
+          INT_NUMBER "1"
+        COMMA ","
+        WHITESPACE " "
+        LITERAL
+          ATTR
+            POUND "#"
+            L_BRACK "["
+            META
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "cfg"
+              TOKEN_TREE
+                L_PAREN "("
+                IDENT "test"
+                R_PAREN ")"
+            R_BRACK "]"
+          WHITESPACE " "
+          INT_NUMBER "2"
+        R_BRACK "]"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0150_array_attrs.txt b/crates/parser/test_data/parser/inline/ok/0150_array_attrs.txt
deleted file mode 100644
index 6eb8af33119..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0150_array_attrs.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-SOURCE_FILE
-  CONST
-    CONST_KW "const"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    COLON ":"
-    WHITESPACE " "
-    REF_TYPE
-      AMP "&"
-      SLICE_TYPE
-        L_BRACK "["
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i64"
-        R_BRACK "]"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    REF_EXPR
-      AMP "&"
-      ARRAY_EXPR
-        L_BRACK "["
-        LITERAL
-          INT_NUMBER "1"
-        COMMA ","
-        WHITESPACE " "
-        LITERAL
-          ATTR
-            POUND "#"
-            L_BRACK "["
-            META
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "cfg"
-              TOKEN_TREE
-                L_PAREN "("
-                IDENT "test"
-                R_PAREN ")"
-            R_BRACK "]"
-          WHITESPACE " "
-          INT_NUMBER "2"
-        R_BRACK "]"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0150_impl_type_params.rast b/crates/parser/test_data/parser/inline/ok/0150_impl_type_params.rast
index 12194abdafe..24977a22a5f 100644
--- a/crates/parser/test_data/parser/inline/ok/0150_impl_type_params.rast
+++ b/crates/parser/test_data/parser/inline/ok/0150_impl_type_params.rast
@@ -1,38 +1,38 @@
-SOURCE_FILE@0..29
-  IMPL@0..28
-    IMPL_KW@0..4 "impl"
-    GENERIC_PARAM_LIST@4..18
-      L_ANGLE@4..5 "<"
-      CONST_PARAM@5..17
-        CONST_KW@5..10 "const"
-        WHITESPACE@10..11 " "
-        NAME@11..12
-          IDENT@11..12 "N"
-        COLON@12..13 ":"
-        WHITESPACE@13..14 " "
-        PATH_TYPE@14..17
-          PATH@14..17
-            PATH_SEGMENT@14..17
-              NAME_REF@14..17
-                IDENT@14..17 "u32"
-      R_ANGLE@17..18 ">"
-    WHITESPACE@18..19 " "
-    PATH_TYPE@19..25
-      PATH@19..25
-        PATH_SEGMENT@19..25
-          NAME_REF@19..22
-            IDENT@19..22 "Bar"
-          GENERIC_ARG_LIST@22..25
-            L_ANGLE@22..23 "<"
-            TYPE_ARG@23..24
-              PATH_TYPE@23..24
-                PATH@23..24
-                  PATH_SEGMENT@23..24
-                    NAME_REF@23..24
-                      IDENT@23..24 "N"
-            R_ANGLE@24..25 ">"
-    WHITESPACE@25..26 " "
-    ASSOC_ITEM_LIST@26..28
-      L_CURLY@26..27 "{"
-      R_CURLY@27..28 "}"
-  WHITESPACE@28..29 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      CONST_PARAM
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "N"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      R_ANGLE ">"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Bar"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            TYPE_ARG
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "N"
+            R_ANGLE ">"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0150_impl_type_params.txt b/crates/parser/test_data/parser/inline/ok/0150_impl_type_params.txt
deleted file mode 100644
index 24977a22a5f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0150_impl_type_params.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      CONST_PARAM
-        CONST_KW "const"
-        WHITESPACE " "
-        NAME
-          IDENT "N"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      R_ANGLE ">"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Bar"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            TYPE_ARG
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "N"
-            R_ANGLE ">"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0151_fn.rast b/crates/parser/test_data/parser/inline/ok/0151_fn.rast
index ec93d4a1c75..a88b3393f29 100644
--- a/crates/parser/test_data/parser/inline/ok/0151_fn.rast
+++ b/crates/parser/test_data/parser/inline/ok/0151_fn.rast
@@ -1,15 +1,15 @@
-SOURCE_FILE@0..12
-  FN@0..11
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..11
-      STMT_LIST@9..11
-        L_CURLY@9..10 "{"
-        R_CURLY@10..11 "}"
-  WHITESPACE@11..12 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0151_fn.txt b/crates/parser/test_data/parser/inline/ok/0151_fn.txt
deleted file mode 100644
index a88b3393f29..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0151_fn.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0151_trait_alias.rast b/crates/parser/test_data/parser/inline/ok/0151_trait_alias.rast
index 6bcbd0f1c64..2ef66484ae4 100644
--- a/crates/parser/test_data/parser/inline/ok/0151_trait_alias.rast
+++ b/crates/parser/test_data/parser/inline/ok/0151_trait_alias.rast
@@ -1,33 +1,33 @@
-SOURCE_FILE@0..19
-  TRAIT@0..18
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "Z"
-    GENERIC_PARAM_LIST@7..10
-      L_ANGLE@7..8 "<"
-      TYPE_PARAM@8..9
-        NAME@8..9
-          IDENT@8..9 "U"
-      R_ANGLE@9..10 ">"
-    WHITESPACE@10..11 " "
-    EQ@11..12 "="
-    WHITESPACE@12..13 " "
-    TYPE_BOUND_LIST@13..17
-      TYPE_BOUND@13..17
-        PATH_TYPE@13..17
-          PATH@13..17
-            PATH_SEGMENT@13..17
-              NAME_REF@13..14
-                IDENT@13..14 "T"
-              GENERIC_ARG_LIST@14..17
-                L_ANGLE@14..15 "<"
-                TYPE_ARG@15..16
-                  PATH_TYPE@15..16
-                    PATH@15..16
-                      PATH_SEGMENT@15..16
-                        NAME_REF@15..16
-                          IDENT@15..16 "U"
-                R_ANGLE@16..17 ">"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "Z"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "U"
+      R_ANGLE ">"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TYPE_BOUND_LIST
+      TYPE_BOUND
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+              GENERIC_ARG_LIST
+                L_ANGLE "<"
+                TYPE_ARG
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "U"
+                R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0151_trait_alias.txt b/crates/parser/test_data/parser/inline/ok/0151_trait_alias.txt
deleted file mode 100644
index 2ef66484ae4..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0151_trait_alias.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "Z"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "U"
-      R_ANGLE ">"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TYPE_BOUND_LIST
-      TYPE_BOUND
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-              GENERIC_ARG_LIST
-                L_ANGLE "<"
-                TYPE_ARG
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "U"
-                R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.rast b/crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.rast
index 7a6d2daa38f..ae1074c3680 100644
--- a/crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.rast
@@ -1,38 +1,38 @@
-SOURCE_FILE@0..34
-  FN@0..33
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..33
-      STMT_LIST@10..33
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        CALL_EXPR@16..31
-          PATH_EXPR@16..19
-            PATH@16..19
-              PATH_SEGMENT@16..19
-                NAME_REF@16..19
-                  IDENT@16..19 "foo"
-          ARG_LIST@19..31
-            L_PAREN@19..20 "("
-            LITERAL@20..30
-              ATTR@20..27
-                POUND@20..21 "#"
-                L_BRACK@21..22 "["
-                META@22..26
-                  PATH@22..26
-                    PATH_SEGMENT@22..26
-                      NAME_REF@22..26
-                        IDENT@22..26 "attr"
-                R_BRACK@26..27 "]"
-              WHITESPACE@27..28 " "
-              INT_NUMBER@28..30 "92"
-            R_PAREN@30..31 ")"
-        WHITESPACE@31..32 "\n"
-        R_CURLY@32..33 "}"
-  WHITESPACE@33..34 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        CALL_EXPR
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "foo"
+          ARG_LIST
+            L_PAREN "("
+            LITERAL
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "attr"
+                R_BRACK "]"
+              WHITESPACE " "
+              INT_NUMBER "92"
+            R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.txt b/crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.txt
deleted file mode 100644
index ae1074c3680..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0152_arg_with_attr.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        CALL_EXPR
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "foo"
-          ARG_LIST
-            L_PAREN "("
-            LITERAL
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "attr"
-                R_BRACK "]"
-              WHITESPACE " "
-              INT_NUMBER "92"
-            R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.rast b/crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.rast
index a5ee07499eb..2dede835987 100644
--- a/crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.rast
+++ b/crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.rast
@@ -1,56 +1,56 @@
-SOURCE_FILE@0..53
-  STRUCT@0..25
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "B"
-    TUPLE_FIELD_LIST@8..24
-      L_PAREN@8..9 "("
-      TUPLE_FIELD@9..23
-        VISIBILITY@9..12
-          PUB_KW@9..12 "pub"
-        WHITESPACE@12..13 " "
-        PAREN_TYPE@13..23
-          L_PAREN@13..14 "("
-          PATH_TYPE@14..22
-            PATH@14..22
-              PATH@14..19
-                PATH_SEGMENT@14..19
-                  NAME_REF@14..19
-                    SUPER_KW@14..19 "super"
-              COLON2@19..21 "::"
-              PATH_SEGMENT@21..22
-                NAME_REF@21..22
-                  IDENT@21..22 "A"
-          R_PAREN@22..23 ")"
-      R_PAREN@23..24 ")"
-    SEMICOLON@24..25 ";"
-  WHITESPACE@25..26 "\n"
-  STRUCT@26..52
-    STRUCT_KW@26..32 "struct"
-    WHITESPACE@32..33 " "
-    NAME@33..34
-      IDENT@33..34 "B"
-    TUPLE_FIELD_LIST@34..51
-      L_PAREN@34..35 "("
-      TUPLE_FIELD@35..50
-        VISIBILITY@35..38
-          PUB_KW@35..38 "pub"
-        WHITESPACE@38..39 " "
-        TUPLE_TYPE@39..50
-          L_PAREN@39..40 "("
-          PATH_TYPE@40..48
-            PATH@40..48
-              PATH@40..45
-                PATH_SEGMENT@40..45
-                  NAME_REF@40..45
-                    CRATE_KW@40..45 "crate"
-              COLON2@45..47 "::"
-              PATH_SEGMENT@47..48
-                NAME_REF@47..48
-                  IDENT@47..48 "A"
-          COMMA@48..49 ","
-          R_PAREN@49..50 ")"
-      R_PAREN@50..51 ")"
-    SEMICOLON@51..52 ";"
-  WHITESPACE@52..53 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        PAREN_TYPE
+          L_PAREN "("
+          PATH_TYPE
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    SUPER_KW "super"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "A"
+          R_PAREN ")"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        TUPLE_TYPE
+          L_PAREN "("
+          PATH_TYPE
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    CRATE_KW "crate"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "A"
+          COMMA ","
+          R_PAREN ")"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.txt b/crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.txt
deleted file mode 100644
index 2dede835987..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0153_pub_parens_typepath.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        PAREN_TYPE
-          L_PAREN "("
-          PATH_TYPE
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    SUPER_KW "super"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "A"
-          R_PAREN ")"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        TUPLE_TYPE
-          L_PAREN "("
-          PATH_TYPE
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    CRATE_KW "crate"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "A"
-          COMMA ","
-          R_PAREN ")"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast b/crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast
index e6aff7b3735..ee8465e6ca9 100644
--- a/crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast
+++ b/crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast
@@ -1,58 +1,58 @@
-SOURCE_FILE@0..55
-  TYPE_ALIAS@0..24
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..8
-      IDENT@5..8 "Foo"
-    WHITESPACE@8..9 " "
-    EQ@9..10 "="
-    WHITESPACE@10..11 " "
-    FN_PTR_TYPE@11..23
-      FN_KW@11..13 "fn"
-      PARAM_LIST@13..23
-        L_PAREN@13..14 "("
-        PARAM@14..22
-          PATH_TYPE@14..22
-            PATH@14..22
-              PATH@14..17
-                PATH_SEGMENT@14..17
-                  NAME_REF@14..17
-                    IDENT@14..17 "Bar"
-              COLON2@17..19 "::"
-              PATH_SEGMENT@19..22
-                NAME_REF@19..22
-                  IDENT@19..22 "Baz"
-        R_PAREN@22..23 ")"
-    SEMICOLON@23..24 ";"
-  WHITESPACE@24..25 "\n"
-  TYPE_ALIAS@25..54
-    TYPE_KW@25..29 "type"
-    WHITESPACE@29..30 " "
-    NAME@30..33
-      IDENT@30..33 "Qux"
-    WHITESPACE@33..34 " "
-    EQ@34..35 "="
-    WHITESPACE@35..36 " "
-    FN_PTR_TYPE@36..53
-      FN_KW@36..38 "fn"
-      PARAM_LIST@38..53
-        L_PAREN@38..39 "("
-        PARAM@39..52
-          IDENT_PAT@39..42
-            NAME@39..42
-              IDENT@39..42 "baz"
-          COLON@42..43 ":"
-          WHITESPACE@43..44 " "
-          PATH_TYPE@44..52
-            PATH@44..52
-              PATH@44..47
-                PATH_SEGMENT@44..47
-                  NAME_REF@44..47
-                    IDENT@44..47 "Bar"
-              COLON2@47..49 "::"
-              PATH_SEGMENT@49..52
-                NAME_REF@49..52
-                  IDENT@49..52 "Baz"
-        R_PAREN@52..53 ")"
-    SEMICOLON@53..54 ";"
-  WHITESPACE@54..55 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        PARAM
+          PATH_TYPE
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Bar"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Baz"
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Qux"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        PARAM
+          IDENT_PAT
+            NAME
+              IDENT "baz"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Bar"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Baz"
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.txt b/crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.txt
deleted file mode 100644
index ee8465e6ca9..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        PARAM
-          PATH_TYPE
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Bar"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Baz"
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Qux"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        PARAM
-          IDENT_PAT
-            NAME
-              IDENT "baz"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Bar"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Baz"
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.rast b/crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.rast
index 860684b29ae..30a2842e538 100644
--- a/crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.rast
+++ b/crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.rast
@@ -1,43 +1,43 @@
-SOURCE_FILE@0..34
-  TYPE_ALIAS@0..33
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    DYN_TRAIT_TYPE@9..32
-      TYPE_BOUND_LIST@9..32
-        TYPE_BOUND@9..25
-          FOR_TYPE@9..25
-            FOR_KW@9..12 "for"
-            GENERIC_PARAM_LIST@12..16
-              L_ANGLE@12..13 "<"
-              LIFETIME_PARAM@13..15
-                LIFETIME@13..15
-                  LIFETIME_IDENT@13..15 "'a"
-              R_ANGLE@15..16 ">"
-            WHITESPACE@16..17 " "
-            PATH_TYPE@17..25
-              PATH@17..25
-                PATH_SEGMENT@17..25
-                  NAME_REF@17..21
-                    IDENT@17..21 "Test"
-                  GENERIC_ARG_LIST@21..25
-                    L_ANGLE@21..22 "<"
-                    LIFETIME_ARG@22..24
-                      LIFETIME@22..24
-                        LIFETIME_IDENT@22..24 "'a"
-                    R_ANGLE@24..25 ">"
-        WHITESPACE@25..26 " "
-        PLUS@26..27 "+"
-        WHITESPACE@27..28 " "
-        TYPE_BOUND@28..32
-          PATH_TYPE@28..32
-            PATH@28..32
-              PATH_SEGMENT@28..32
-                NAME_REF@28..32
-                  IDENT@28..32 "Send"
-    SEMICOLON@32..33 ";"
-  WHITESPACE@33..34 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    DYN_TRAIT_TYPE
+      TYPE_BOUND_LIST
+        TYPE_BOUND
+          FOR_TYPE
+            FOR_KW "for"
+            GENERIC_PARAM_LIST
+              L_ANGLE "<"
+              LIFETIME_PARAM
+                LIFETIME
+                  LIFETIME_IDENT "'a"
+              R_ANGLE ">"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Test"
+                  GENERIC_ARG_LIST
+                    L_ANGLE "<"
+                    LIFETIME_ARG
+                      LIFETIME
+                        LIFETIME_IDENT "'a"
+                    R_ANGLE ">"
+        WHITESPACE " "
+        PLUS "+"
+        WHITESPACE " "
+        TYPE_BOUND
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Send"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.txt b/crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.txt
deleted file mode 100644
index 30a2842e538..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0154_no_dyn_trait_leading_for.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    DYN_TRAIT_TYPE
-      TYPE_BOUND_LIST
-        TYPE_BOUND
-          FOR_TYPE
-            FOR_KW "for"
-            GENERIC_PARAM_LIST
-              L_ANGLE "<"
-              LIFETIME_PARAM
-                LIFETIME
-                  LIFETIME_IDENT "'a"
-              R_ANGLE ">"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Test"
-                  GENERIC_ARG_LIST
-                    L_ANGLE "<"
-                    LIFETIME_ARG
-                      LIFETIME
-                        LIFETIME_IDENT "'a"
-                    R_ANGLE ">"
-        WHITESPACE " "
-        PLUS "+"
-        WHITESPACE " "
-        TYPE_BOUND
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Send"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.rast b/crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.rast
index 3b6612677fa..39857b23c6e 100644
--- a/crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.rast
+++ b/crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.rast
@@ -1,51 +1,51 @@
-SOURCE_FILE@0..43
-  CONST@0..42
-    CONST_KW@0..5 "const"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "A"
-    COLON@7..8 ":"
-    WHITESPACE@8..9 " "
-    TUPLE_TYPE@9..19
-      L_PAREN@9..10 "("
-      PATH_TYPE@10..13
-        PATH@10..13
-          PATH_SEGMENT@10..13
-            NAME_REF@10..13
-              IDENT@10..13 "i64"
-      COMMA@13..14 ","
-      WHITESPACE@14..15 " "
-      PATH_TYPE@15..18
-        PATH@15..18
-          PATH_SEGMENT@15..18
-            NAME_REF@15..18
-              IDENT@15..18 "i64"
-      R_PAREN@18..19 ")"
-    WHITESPACE@19..20 " "
-    EQ@20..21 "="
-    WHITESPACE@21..22 " "
-    TUPLE_EXPR@22..41
-      L_PAREN@22..23 "("
-      LITERAL@23..24
-        INT_NUMBER@23..24 "1"
-      COMMA@24..25 ","
-      WHITESPACE@25..26 " "
-      LITERAL@26..40
-        ATTR@26..38
-          POUND@26..27 "#"
-          L_BRACK@27..28 "["
-          META@28..37
-            PATH@28..31
-              PATH_SEGMENT@28..31
-                NAME_REF@28..31
-                  IDENT@28..31 "cfg"
-            TOKEN_TREE@31..37
-              L_PAREN@31..32 "("
-              IDENT@32..36 "test"
-              R_PAREN@36..37 ")"
-          R_BRACK@37..38 "]"
-        WHITESPACE@38..39 " "
-        INT_NUMBER@39..40 "2"
-      R_PAREN@40..41 ")"
-    SEMICOLON@41..42 ";"
-  WHITESPACE@42..43 "\n"
+SOURCE_FILE
+  CONST
+    CONST_KW "const"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    COLON ":"
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "i64"
+      COMMA ","
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "i64"
+      R_PAREN ")"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TUPLE_EXPR
+      L_PAREN "("
+      LITERAL
+        INT_NUMBER "1"
+      COMMA ","
+      WHITESPACE " "
+      LITERAL
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "cfg"
+            TOKEN_TREE
+              L_PAREN "("
+              IDENT "test"
+              R_PAREN ")"
+          R_BRACK "]"
+        WHITESPACE " "
+        INT_NUMBER "2"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.txt b/crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.txt
deleted file mode 100644
index 39857b23c6e..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0154_tuple_attrs.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-SOURCE_FILE
-  CONST
-    CONST_KW "const"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    COLON ":"
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "i64"
-      COMMA ","
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "i64"
-      R_PAREN ")"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TUPLE_EXPR
-      L_PAREN "("
-      LITERAL
-        INT_NUMBER "1"
-      COMMA ","
-      WHITESPACE " "
-      LITERAL
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "cfg"
-            TOKEN_TREE
-              L_PAREN "("
-              IDENT "test"
-              R_PAREN ")"
-          R_BRACK "]"
-        WHITESPACE " "
-        INT_NUMBER "2"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0155_closure_params.rast b/crates/parser/test_data/parser/inline/ok/0155_closure_params.rast
index ca5fb62a854..318eb89deaa 100644
--- a/crates/parser/test_data/parser/inline/ok/0155_closure_params.rast
+++ b/crates/parser/test_data/parser/inline/ok/0155_closure_params.rast
@@ -1,70 +1,70 @@
-SOURCE_FILE@0..63
-  FN@0..62
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..62
-      STMT_LIST@10..62
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..15 "\n   "
-        LET_STMT@15..60
-          LET_KW@15..18 "let"
-          WHITESPACE@18..19 " "
-          IDENT_PAT@19..22
-            NAME@19..22
-              IDENT@19..22 "foo"
-          WHITESPACE@22..23 " "
-          EQ@23..24 "="
-          WHITESPACE@24..25 " "
-          CLOSURE_EXPR@25..59
-            PARAM_LIST@25..56
-              PIPE@25..26 "|"
-              PARAM@26..29
-                IDENT_PAT@26..29
-                  NAME@26..29
-                    IDENT@26..29 "bar"
-              COMMA@29..30 ","
-              WHITESPACE@30..31 " "
-              PARAM@31..39
-                IDENT_PAT@31..34
-                  NAME@31..34
-                    IDENT@31..34 "baz"
-                COLON@34..35 ":"
-                WHITESPACE@35..36 " "
-                PATH_TYPE@36..39
-                  PATH@36..39
-                    PATH_SEGMENT@36..39
-                      NAME_REF@36..39
-                        IDENT@36..39 "Baz"
-              COMMA@39..40 ","
-              WHITESPACE@40..41 " "
-              PARAM@41..55
-                IDENT_PAT@41..44
-                  NAME@41..44
-                    IDENT@41..44 "qux"
-                COLON@44..45 ":"
-                WHITESPACE@45..46 " "
-                PATH_TYPE@46..55
-                  PATH@46..55
-                    PATH@46..49
-                      PATH_SEGMENT@46..49
-                        NAME_REF@46..49
-                          IDENT@46..49 "Qux"
-                    COLON2@49..51 "::"
-                    PATH_SEGMENT@51..55
-                      NAME_REF@51..55
-                        IDENT@51..55 "Quux"
-              PIPE@55..56 "|"
-            WHITESPACE@56..57 " "
-            TUPLE_EXPR@57..59
-              L_PAREN@57..58 "("
-              R_PAREN@58..59 ")"
-          SEMICOLON@59..60 ";"
-        WHITESPACE@60..61 "\n"
-        R_CURLY@61..62 "}"
-  WHITESPACE@62..63 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n   "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "foo"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CLOSURE_EXPR
+            PARAM_LIST
+              PIPE "|"
+              PARAM
+                IDENT_PAT
+                  NAME
+                    IDENT "bar"
+              COMMA ","
+              WHITESPACE " "
+              PARAM
+                IDENT_PAT
+                  NAME
+                    IDENT "baz"
+                COLON ":"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Baz"
+              COMMA ","
+              WHITESPACE " "
+              PARAM
+                IDENT_PAT
+                  NAME
+                    IDENT "qux"
+                COLON ":"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Qux"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Quux"
+              PIPE "|"
+            WHITESPACE " "
+            TUPLE_EXPR
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0155_closure_params.txt b/crates/parser/test_data/parser/inline/ok/0155_closure_params.txt
deleted file mode 100644
index 318eb89deaa..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0155_closure_params.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n   "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "foo"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CLOSURE_EXPR
-            PARAM_LIST
-              PIPE "|"
-              PARAM
-                IDENT_PAT
-                  NAME
-                    IDENT "bar"
-              COMMA ","
-              WHITESPACE " "
-              PARAM
-                IDENT_PAT
-                  NAME
-                    IDENT "baz"
-                COLON ":"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Baz"
-              COMMA ","
-              WHITESPACE " "
-              PARAM
-                IDENT_PAT
-                  NAME
-                    IDENT "qux"
-                COLON ":"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Qux"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Quux"
-              PIPE "|"
-            WHITESPACE " "
-            TUPLE_EXPR
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0156_const_block_pat.rast b/crates/parser/test_data/parser/inline/ok/0156_const_block_pat.rast
index 1144d5684d3..59de2b9f163 100644
--- a/crates/parser/test_data/parser/inline/ok/0156_const_block_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0156_const_block_pat.rast
@@ -1,79 +1,79 @@
-SOURCE_FILE@0..78
-  FN@0..77
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..77
-      STMT_LIST@10..77
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..38
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          CONST_BLOCK_PAT@20..32
-            CONST_KW@20..25 "const"
-            WHITESPACE@25..26 " "
-            BLOCK_EXPR@26..32
-              STMT_LIST@26..32
-                L_CURLY@26..27 "{"
-                WHITESPACE@27..28 " "
-                LITERAL@28..30
-                  INT_NUMBER@28..30 "15"
-                WHITESPACE@30..31 " "
-                R_CURLY@31..32 "}"
-          WHITESPACE@32..33 " "
-          EQ@33..34 "="
-          WHITESPACE@34..35 " "
-          TUPLE_EXPR@35..37
-            L_PAREN@35..36 "("
-            R_PAREN@36..37 ")"
-          SEMICOLON@37..38 ";"
-        WHITESPACE@38..43 "\n    "
-        LET_STMT@43..75
-          LET_KW@43..46 "let"
-          WHITESPACE@46..47 " "
-          CONST_BLOCK_PAT@47..69
-            CONST_KW@47..52 "const"
-            WHITESPACE@52..53 " "
-            BLOCK_EXPR@53..69
-              STMT_LIST@53..69
-                L_CURLY@53..54 "{"
-                WHITESPACE@54..55 " "
-                EXPR_STMT@55..61
-                  CALL_EXPR@55..60
-                    PATH_EXPR@55..58
-                      PATH@55..58
-                        PATH_SEGMENT@55..58
-                          NAME_REF@55..58
-                            IDENT@55..58 "foo"
-                    ARG_LIST@58..60
-                      L_PAREN@58..59 "("
-                      R_PAREN@59..60 ")"
-                  SEMICOLON@60..61 ";"
-                WHITESPACE@61..62 " "
-                CALL_EXPR@62..67
-                  PATH_EXPR@62..65
-                    PATH@62..65
-                      PATH_SEGMENT@62..65
-                        NAME_REF@62..65
-                          IDENT@62..65 "bar"
-                  ARG_LIST@65..67
-                    L_PAREN@65..66 "("
-                    R_PAREN@66..67 ")"
-                WHITESPACE@67..68 " "
-                R_CURLY@68..69 "}"
-          WHITESPACE@69..70 " "
-          EQ@70..71 "="
-          WHITESPACE@71..72 " "
-          TUPLE_EXPR@72..74
-            L_PAREN@72..73 "("
-            R_PAREN@73..74 ")"
-          SEMICOLON@74..75 ";"
-        WHITESPACE@75..76 "\n"
-        R_CURLY@76..77 "}"
-  WHITESPACE@77..78 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          CONST_BLOCK_PAT
+            CONST_KW "const"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "15"
+                WHITESPACE " "
+                R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          CONST_BLOCK_PAT
+            CONST_KW "const"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                EXPR_STMT
+                  CALL_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "foo"
+                    ARG_LIST
+                      L_PAREN "("
+                      R_PAREN ")"
+                  SEMICOLON ";"
+                WHITESPACE " "
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "bar"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+                WHITESPACE " "
+                R_CURLY "}"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0156_const_block_pat.txt b/crates/parser/test_data/parser/inline/ok/0156_const_block_pat.txt
deleted file mode 100644
index 59de2b9f163..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0156_const_block_pat.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          CONST_BLOCK_PAT
-            CONST_KW "const"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "15"
-                WHITESPACE " "
-                R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          CONST_BLOCK_PAT
-            CONST_KW "const"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                EXPR_STMT
-                  CALL_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "foo"
-                    ARG_LIST
-                      L_PAREN "("
-                      R_PAREN ")"
-                  SEMICOLON ";"
-                WHITESPACE " "
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "bar"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-                WHITESPACE " "
-                R_CURLY "}"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0156_fn_def_param.rast b/crates/parser/test_data/parser/inline/ok/0156_fn_def_param.rast
index 241ae090a77..7511877aa8d 100644
--- a/crates/parser/test_data/parser/inline/ok/0156_fn_def_param.rast
+++ b/crates/parser/test_data/parser/inline/ok/0156_fn_def_param.rast
@@ -1,44 +1,44 @@
-SOURCE_FILE@0..30
-  FN@0..29
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..26
-      L_PAREN@6..7 "("
-      PARAM@7..25
-        TUPLE_PAT@7..13
-          L_PAREN@7..8 "("
-          IDENT_PAT@8..9
-            NAME@8..9
-              IDENT@8..9 "x"
-          COMMA@9..10 ","
-          WHITESPACE@10..11 " "
-          IDENT_PAT@11..12
-            NAME@11..12
-              IDENT@11..12 "y"
-          R_PAREN@12..13 ")"
-        COLON@13..14 ":"
-        WHITESPACE@14..15 " "
-        TUPLE_TYPE@15..25
-          L_PAREN@15..16 "("
-          PATH_TYPE@16..19
-            PATH@16..19
-              PATH_SEGMENT@16..19
-                NAME_REF@16..19
-                  IDENT@16..19 "i32"
-          COMMA@19..20 ","
-          WHITESPACE@20..21 " "
-          PATH_TYPE@21..24
-            PATH@21..24
-              PATH_SEGMENT@21..24
-                NAME_REF@21..24
-                  IDENT@21..24 "i32"
-          R_PAREN@24..25 ")"
-      R_PAREN@25..26 ")"
-    WHITESPACE@26..27 " "
-    BLOCK_EXPR@27..29
-      STMT_LIST@27..29
-        L_CURLY@27..28 "{"
-        R_CURLY@28..29 "}"
-  WHITESPACE@29..30 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        TUPLE_PAT
+          L_PAREN "("
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          COMMA ","
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "y"
+          R_PAREN ")"
+        COLON ":"
+        WHITESPACE " "
+        TUPLE_TYPE
+          L_PAREN "("
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "i32"
+          COMMA ","
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "i32"
+          R_PAREN ")"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0156_fn_def_param.txt b/crates/parser/test_data/parser/inline/ok/0156_fn_def_param.txt
deleted file mode 100644
index 7511877aa8d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0156_fn_def_param.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        TUPLE_PAT
-          L_PAREN "("
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          COMMA ","
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "y"
-          R_PAREN ")"
-        COLON ":"
-        WHITESPACE " "
-        TUPLE_TYPE
-          L_PAREN "("
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "i32"
-          COMMA ","
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "i32"
-          R_PAREN ")"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0156_or_pattern.rast b/crates/parser/test_data/parser/inline/ok/0156_or_pattern.rast
index e41bf541108..6a2046d9e99 100644
--- a/crates/parser/test_data/parser/inline/ok/0156_or_pattern.rast
+++ b/crates/parser/test_data/parser/inline/ok/0156_or_pattern.rast
@@ -1,112 +1,112 @@
-SOURCE_FILE@0..130
-  FN@0..129
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..129
-      STMT_LIST@10..129
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        MATCH_EXPR@16..127
-          MATCH_KW@16..21 "match"
-          WHITESPACE@21..22 " "
-          TUPLE_EXPR@22..24
-            L_PAREN@22..23 "("
-            R_PAREN@23..24 ")"
-          WHITESPACE@24..25 " "
-          MATCH_ARM_LIST@25..127
-            L_CURLY@25..26 "{"
-            WHITESPACE@26..35 "\n        "
-            MATCH_ARM@35..49
-              PAREN_PAT@35..42
-                L_PAREN@35..36 "("
-                OR_PAT@36..41
-                  WILDCARD_PAT@36..37
-                    UNDERSCORE@36..37 "_"
-                  WHITESPACE@37..38 " "
-                  PIPE@38..39 "|"
-                  WHITESPACE@39..40 " "
-                  WILDCARD_PAT@40..41
-                    UNDERSCORE@40..41 "_"
-                R_PAREN@41..42 ")"
-              WHITESPACE@42..43 " "
-              FAT_ARROW@43..45 "=>"
-              WHITESPACE@45..46 " "
-              TUPLE_EXPR@46..48
-                L_PAREN@46..47 "("
-                R_PAREN@47..48 ")"
-              COMMA@48..49 ","
-            WHITESPACE@49..58 "\n        "
-            MATCH_ARM@58..73
-              REF_PAT@58..66
-                AMP@58..59 "&"
-                PAREN_PAT@59..66
-                  L_PAREN@59..60 "("
-                  OR_PAT@60..65
-                    WILDCARD_PAT@60..61
-                      UNDERSCORE@60..61 "_"
-                    WHITESPACE@61..62 " "
-                    PIPE@62..63 "|"
-                    WHITESPACE@63..64 " "
-                    WILDCARD_PAT@64..65
-                      UNDERSCORE@64..65 "_"
-                  R_PAREN@65..66 ")"
-              WHITESPACE@66..67 " "
-              FAT_ARROW@67..69 "=>"
-              WHITESPACE@69..70 " "
-              TUPLE_EXPR@70..72
-                L_PAREN@70..71 "("
-                R_PAREN@71..72 ")"
-              COMMA@72..73 ","
-            WHITESPACE@73..82 "\n        "
-            MATCH_ARM@82..97
-              TUPLE_PAT@82..90
-                L_PAREN@82..83 "("
-                OR_PAT@83..88
-                  WILDCARD_PAT@83..84
-                    UNDERSCORE@83..84 "_"
-                  WHITESPACE@84..85 " "
-                  PIPE@85..86 "|"
-                  WHITESPACE@86..87 " "
-                  WILDCARD_PAT@87..88
-                    UNDERSCORE@87..88 "_"
-                COMMA@88..89 ","
-                R_PAREN@89..90 ")"
-              WHITESPACE@90..91 " "
-              FAT_ARROW@91..93 "=>"
-              WHITESPACE@93..94 " "
-              TUPLE_EXPR@94..96
-                L_PAREN@94..95 "("
-                R_PAREN@95..96 ")"
-              COMMA@96..97 ","
-            WHITESPACE@97..106 "\n        "
-            MATCH_ARM@106..121
-              SLICE_PAT@106..114
-                L_BRACK@106..107 "["
-                OR_PAT@107..112
-                  WILDCARD_PAT@107..108
-                    UNDERSCORE@107..108 "_"
-                  WHITESPACE@108..109 " "
-                  PIPE@109..110 "|"
-                  WHITESPACE@110..111 " "
-                  WILDCARD_PAT@111..112
-                    UNDERSCORE@111..112 "_"
-                COMMA@112..113 ","
-                R_BRACK@113..114 "]"
-              WHITESPACE@114..115 " "
-              FAT_ARROW@115..117 "=>"
-              WHITESPACE@117..118 " "
-              TUPLE_EXPR@118..120
-                L_PAREN@118..119 "("
-                R_PAREN@119..120 ")"
-              COMMA@120..121 ","
-            WHITESPACE@121..126 "\n    "
-            R_CURLY@126..127 "}"
-        WHITESPACE@127..128 "\n"
-        R_CURLY@128..129 "}"
-  WHITESPACE@129..130 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MATCH_ARM
+              PAREN_PAT
+                L_PAREN "("
+                OR_PAT
+                  WILDCARD_PAT
+                    UNDERSCORE "_"
+                  WHITESPACE " "
+                  PIPE "|"
+                  WHITESPACE " "
+                  WILDCARD_PAT
+                    UNDERSCORE "_"
+                R_PAREN ")"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              REF_PAT
+                AMP "&"
+                PAREN_PAT
+                  L_PAREN "("
+                  OR_PAT
+                    WILDCARD_PAT
+                      UNDERSCORE "_"
+                    WHITESPACE " "
+                    PIPE "|"
+                    WHITESPACE " "
+                    WILDCARD_PAT
+                      UNDERSCORE "_"
+                  R_PAREN ")"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              TUPLE_PAT
+                L_PAREN "("
+                OR_PAT
+                  WILDCARD_PAT
+                    UNDERSCORE "_"
+                  WHITESPACE " "
+                  PIPE "|"
+                  WHITESPACE " "
+                  WILDCARD_PAT
+                    UNDERSCORE "_"
+                COMMA ","
+                R_PAREN ")"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n        "
+            MATCH_ARM
+              SLICE_PAT
+                L_BRACK "["
+                OR_PAT
+                  WILDCARD_PAT
+                    UNDERSCORE "_"
+                  WHITESPACE " "
+                  PIPE "|"
+                  WHITESPACE " "
+                  WILDCARD_PAT
+                    UNDERSCORE "_"
+                COMMA ","
+                R_BRACK "]"
+              WHITESPACE " "
+              FAT_ARROW "=>"
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+              COMMA ","
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0156_or_pattern.txt b/crates/parser/test_data/parser/inline/ok/0156_or_pattern.txt
deleted file mode 100644
index 6a2046d9e99..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0156_or_pattern.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MATCH_ARM
-              PAREN_PAT
-                L_PAREN "("
-                OR_PAT
-                  WILDCARD_PAT
-                    UNDERSCORE "_"
-                  WHITESPACE " "
-                  PIPE "|"
-                  WHITESPACE " "
-                  WILDCARD_PAT
-                    UNDERSCORE "_"
-                R_PAREN ")"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              REF_PAT
-                AMP "&"
-                PAREN_PAT
-                  L_PAREN "("
-                  OR_PAT
-                    WILDCARD_PAT
-                      UNDERSCORE "_"
-                    WHITESPACE " "
-                    PIPE "|"
-                    WHITESPACE " "
-                    WILDCARD_PAT
-                      UNDERSCORE "_"
-                  R_PAREN ")"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              TUPLE_PAT
-                L_PAREN "("
-                OR_PAT
-                  WILDCARD_PAT
-                    UNDERSCORE "_"
-                  WHITESPACE " "
-                  PIPE "|"
-                  WHITESPACE " "
-                  WILDCARD_PAT
-                    UNDERSCORE "_"
-                COMMA ","
-                R_PAREN ")"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n        "
-            MATCH_ARM
-              SLICE_PAT
-                L_BRACK "["
-                OR_PAT
-                  WILDCARD_PAT
-                    UNDERSCORE "_"
-                  WHITESPACE " "
-                  PIPE "|"
-                  WHITESPACE " "
-                  WILDCARD_PAT
-                    UNDERSCORE "_"
-                COMMA ","
-                R_BRACK "]"
-              WHITESPACE " "
-              FAT_ARROW "=>"
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-              COMMA ","
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0157_const_block.rast b/crates/parser/test_data/parser/inline/ok/0157_const_block.rast
index 82e06d3b301..d2025b895dc 100644
--- a/crates/parser/test_data/parser/inline/ok/0157_const_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0157_const_block.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..21
-  FN@0..20
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..20
-      STMT_LIST@7..20
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        BLOCK_EXPR@9..18
-          CONST_KW@9..14 "const"
-          WHITESPACE@14..15 " "
-          STMT_LIST@15..18
-            L_CURLY@15..16 "{"
-            WHITESPACE@16..17 " "
-            R_CURLY@17..18 "}"
-        WHITESPACE@18..19 " "
-        R_CURLY@19..20 "}"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        BLOCK_EXPR
+          CONST_KW "const"
+          WHITESPACE " "
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE " "
+            R_CURLY "}"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0157_const_block.txt b/crates/parser/test_data/parser/inline/ok/0157_const_block.txt
deleted file mode 100644
index d2025b895dc..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0157_const_block.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        BLOCK_EXPR
-          CONST_KW "const"
-          WHITESPACE " "
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE " "
-            R_CURLY "}"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast b/crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast
index 6abb4fe5ac4..8a525c6e05e 100644
--- a/crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast
@@ -1,26 +1,26 @@
-SOURCE_FILE@0..23
-  TYPE_ALIAS@0..22
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..8
-      IDENT@5..8 "Foo"
-    WHITESPACE@8..9 " "
-    EQ@9..10 "="
-    WHITESPACE@10..11 " "
-    FN_PTR_TYPE@11..21
-      FN_KW@11..13 "fn"
-      PARAM_LIST@13..21
-        L_PAREN@13..14 "("
-        PARAM@14..20
-          WILDCARD_PAT@14..15
-            UNDERSCORE@14..15 "_"
-          COLON@15..16 ":"
-          WHITESPACE@16..17 " "
-          PATH_TYPE@17..20
-            PATH@17..20
-              PATH_SEGMENT@17..20
-                NAME_REF@17..20
-                  IDENT@17..20 "bar"
-        R_PAREN@20..21 ")"
-    SEMICOLON@21..22 ";"
-  WHITESPACE@22..23 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        PARAM
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "bar"
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.txt b/crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.txt
deleted file mode 100644
index 8a525c6e05e..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        PARAM
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "bar"
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.rast b/crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.rast
index a2e05eb2e2a..9f0c5a76108 100644
--- a/crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.rast
+++ b/crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..23
-  ENUM@0..22
-    ENUM_KW@0..4 "enum"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "E"
-    WHITESPACE@6..7 " "
-    VARIANT_LIST@7..22
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..9 " "
-      VARIANT@9..20
-        NAME@9..10
-          IDENT@9..10 "X"
-        TUPLE_FIELD_LIST@10..15
-          L_PAREN@10..11 "("
-          TUPLE_FIELD@11..14
-            PATH_TYPE@11..14
-              PATH@11..14
-                PATH_SEGMENT@11..14
-                  NAME_REF@11..14
-                    IDENT@11..14 "i32"
-          R_PAREN@14..15 ")"
-        WHITESPACE@15..16 " "
-        EQ@16..17 "="
-        WHITESPACE@17..18 " "
-        LITERAL@18..20
-          INT_NUMBER@18..20 "10"
-      WHITESPACE@20..21 " "
-      R_CURLY@21..22 "}"
-  WHITESPACE@22..23 "\n"
+SOURCE_FILE
+  ENUM
+    ENUM_KW "enum"
+    WHITESPACE " "
+    NAME
+      IDENT "E"
+    WHITESPACE " "
+    VARIANT_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      VARIANT
+        NAME
+          IDENT "X"
+        TUPLE_FIELD_LIST
+          L_PAREN "("
+          TUPLE_FIELD
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i32"
+          R_PAREN ")"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        LITERAL
+          INT_NUMBER "10"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.txt b/crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.txt
deleted file mode 100644
index 9f0c5a76108..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0157_variant_discriminant.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  ENUM
-    ENUM_KW "enum"
-    WHITESPACE " "
-    NAME
-      IDENT "E"
-    WHITESPACE " "
-    VARIANT_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      VARIANT
-        NAME
-          IDENT "X"
-        TUPLE_FIELD_LIST
-          L_PAREN "("
-          TUPLE_FIELD
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i32"
-          R_PAREN ")"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        LITERAL
-          INT_NUMBER "10"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.rast b/crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.rast
index da705ad9c14..f667c1972dd 100644
--- a/crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.rast
+++ b/crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.rast
@@ -1,38 +1,38 @@
-SOURCE_FILE@0..22
-  FN@0..21
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..21
-      STMT_LIST@7..21
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        EXPR_STMT@9..19
-          BIN_EXPR@9..18
-            PATH_EXPR@9..10
-              PATH@9..10
-                PATH_SEGMENT@9..10
-                  NAME_REF@9..10
-                    IDENT@9..10 "v"
-            WHITESPACE@10..11 " "
-            EQ@11..12 "="
-            WHITESPACE@12..13 " "
-            BIN_EXPR@13..18
-              BLOCK_EXPR@13..16
-                STMT_LIST@13..16
-                  L_CURLY@13..14 "{"
-                  LITERAL@14..15
-                    INT_NUMBER@14..15 "1"
-                  R_CURLY@15..16 "}"
-              AMP@16..17 "&"
-              LITERAL@17..18
-                INT_NUMBER@17..18 "2"
-          SEMICOLON@18..19 ";"
-        WHITESPACE@19..20 " "
-        R_CURLY@20..21 "}"
-  WHITESPACE@21..22 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "v"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            BIN_EXPR
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  LITERAL
+                    INT_NUMBER "1"
+                  R_CURLY "}"
+              AMP "&"
+              LITERAL
+                INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.txt b/crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.txt
deleted file mode 100644
index f667c1972dd..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0158_binop_resets_statementness.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "v"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            BIN_EXPR
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  LITERAL
-                    INT_NUMBER "1"
-                  R_CURLY "}"
-              AMP "&"
-              LITERAL
-                INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.rast b/crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.rast
index 3272b0b9da4..93238bd8f17 100644
--- a/crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.rast
@@ -1,45 +1,45 @@
-SOURCE_FILE@0..34
-  FN@0..33
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..33
-      STMT_LIST@10..33
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..12 " "
-        EXPR_STMT@12..31
-          CALL_EXPR@12..30
-            CLOSURE_EXPR@12..28
-              PARAM_LIST@12..14
-                PIPE@12..13 "|"
-                PIPE@13..14 "|"
-              WHITESPACE@14..15 " "
-              RET_TYPE@15..21
-                THIN_ARROW@15..17 "->"
-                WHITESPACE@17..18 " "
-                PATH_TYPE@18..21
-                  PATH@18..21
-                    PATH_SEGMENT@18..21
-                      NAME_REF@18..21
-                        IDENT@18..21 "i32"
-              WHITESPACE@21..22 " "
-              BLOCK_EXPR@22..28
-                STMT_LIST@22..28
-                  L_CURLY@22..23 "{"
-                  WHITESPACE@23..24 " "
-                  LITERAL@24..26
-                    INT_NUMBER@24..26 "92"
-                  WHITESPACE@26..27 " "
-                  R_CURLY@27..28 "}"
-            ARG_LIST@28..30
-              L_PAREN@28..29 "("
-              R_PAREN@29..30 ")"
-          SEMICOLON@30..31 ";"
-        WHITESPACE@31..32 " "
-        R_CURLY@32..33 "}"
-  WHITESPACE@33..34 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          CALL_EXPR
+            CLOSURE_EXPR
+              PARAM_LIST
+                PIPE "|"
+                PIPE "|"
+              WHITESPACE " "
+              RET_TYPE
+                THIN_ARROW "->"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "i32"
+              WHITESPACE " "
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "92"
+                  WHITESPACE " "
+                  R_CURLY "}"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.txt b/crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.txt
deleted file mode 100644
index 93238bd8f17..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0158_lambda_ret_block.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          CALL_EXPR
-            CLOSURE_EXPR
-              PARAM_LIST
-                PIPE "|"
-                PIPE "|"
-              WHITESPACE " "
-              RET_TYPE
-                THIN_ARROW "->"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "i32"
-              WHITESPACE " "
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "92"
-                  WHITESPACE " "
-                  R_CURLY "}"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.rast b/crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.rast
index 4a1f712aa73..45cd4d2aa12 100644
--- a/crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.rast
+++ b/crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.rast
@@ -1,57 +1,57 @@
-SOURCE_FILE@0..74
-  MACRO_RULES@0..36
-    MACRO_RULES_KW@0..11 "macro_rules"
-    BANG@11..12 "!"
-    WHITESPACE@12..13 " "
-    NAME@13..14
-      IDENT@13..14 "m"
-    WHITESPACE@14..15 " "
-    TOKEN_TREE@15..35
-      L_PAREN@15..16 "("
-      WHITESPACE@16..17 " "
-      TOKEN_TREE@17..27
-        L_PAREN@17..18 "("
-        DOLLAR@18..19 "$"
-        IDENT@19..20 "i"
-        COLON@20..21 ":"
-        IDENT@21..26 "ident"
-        R_PAREN@26..27 ")"
-      WHITESPACE@27..28 " "
-      EQ@28..29 "="
-      R_ANGLE@29..30 ">"
-      WHITESPACE@30..31 " "
-      TOKEN_TREE@31..33
-        L_CURLY@31..32 "{"
-        R_CURLY@32..33 "}"
-      WHITESPACE@33..34 " "
-      R_PAREN@34..35 ")"
-    SEMICOLON@35..36 ";"
-  WHITESPACE@36..37 "\n"
-  MACRO_RULES@37..73
-    MACRO_RULES_KW@37..48 "macro_rules"
-    BANG@48..49 "!"
-    WHITESPACE@49..50 " "
-    NAME@50..51
-      IDENT@50..51 "m"
-    WHITESPACE@51..52 " "
-    TOKEN_TREE@52..72
-      L_BRACK@52..53 "["
-      WHITESPACE@53..54 " "
-      TOKEN_TREE@54..64
-        L_PAREN@54..55 "("
-        DOLLAR@55..56 "$"
-        IDENT@56..57 "i"
-        COLON@57..58 ":"
-        IDENT@58..63 "ident"
-        R_PAREN@63..64 ")"
-      WHITESPACE@64..65 " "
-      EQ@65..66 "="
-      R_ANGLE@66..67 ">"
-      WHITESPACE@67..68 " "
-      TOKEN_TREE@68..70
-        L_CURLY@68..69 "{"
-        R_CURLY@69..70 "}"
-      WHITESPACE@70..71 " "
-      R_BRACK@71..72 "]"
-    SEMICOLON@72..73 ";"
-  WHITESPACE@73..74 "\n"
+SOURCE_FILE
+  MACRO_RULES
+    MACRO_RULES_KW "macro_rules"
+    BANG "!"
+    WHITESPACE " "
+    NAME
+      IDENT "m"
+    WHITESPACE " "
+    TOKEN_TREE
+      L_PAREN "("
+      WHITESPACE " "
+      TOKEN_TREE
+        L_PAREN "("
+        DOLLAR "$"
+        IDENT "i"
+        COLON ":"
+        IDENT "ident"
+        R_PAREN ")"
+      WHITESPACE " "
+      EQ "="
+      R_ANGLE ">"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        R_CURLY "}"
+      WHITESPACE " "
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  MACRO_RULES
+    MACRO_RULES_KW "macro_rules"
+    BANG "!"
+    WHITESPACE " "
+    NAME
+      IDENT "m"
+    WHITESPACE " "
+    TOKEN_TREE
+      L_BRACK "["
+      WHITESPACE " "
+      TOKEN_TREE
+        L_PAREN "("
+        DOLLAR "$"
+        IDENT "i"
+        COLON ":"
+        IDENT "ident"
+        R_PAREN ")"
+      WHITESPACE " "
+      EQ "="
+      R_ANGLE ">"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        R_CURLY "}"
+      WHITESPACE " "
+      R_BRACK "]"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.txt b/crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.txt
deleted file mode 100644
index 45cd4d2aa12..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0158_macro_rules_non_brace.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-SOURCE_FILE
-  MACRO_RULES
-    MACRO_RULES_KW "macro_rules"
-    BANG "!"
-    WHITESPACE " "
-    NAME
-      IDENT "m"
-    WHITESPACE " "
-    TOKEN_TREE
-      L_PAREN "("
-      WHITESPACE " "
-      TOKEN_TREE
-        L_PAREN "("
-        DOLLAR "$"
-        IDENT "i"
-        COLON ":"
-        IDENT "ident"
-        R_PAREN ")"
-      WHITESPACE " "
-      EQ "="
-      R_ANGLE ">"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        R_CURLY "}"
-      WHITESPACE " "
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  MACRO_RULES
-    MACRO_RULES_KW "macro_rules"
-    BANG "!"
-    WHITESPACE " "
-    NAME
-      IDENT "m"
-    WHITESPACE " "
-    TOKEN_TREE
-      L_BRACK "["
-      WHITESPACE " "
-      TOKEN_TREE
-        L_PAREN "("
-        DOLLAR "$"
-        IDENT "i"
-        COLON ":"
-        IDENT "ident"
-        R_PAREN ")"
-      WHITESPACE " "
-      EQ "="
-      R_ANGLE ">"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        R_CURLY "}"
-      WHITESPACE " "
-      R_BRACK "]"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.rast b/crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.rast
index 25665dfd8d3..d11ac22efa6 100644
--- a/crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.rast
+++ b/crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.rast
@@ -1,35 +1,35 @@
-SOURCE_FILE@0..27
-  FN@0..26
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..26
-      STMT_LIST@9..26
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 " "
-        EXPR_STMT@11..24
-          MACRO_CALL@11..23
-            PATH@11..14
-              PATH_SEGMENT@11..14
-                NAME_REF@11..14
-                  IDENT@11..14 "try"
-            BANG@14..15 "!"
-            TOKEN_TREE@15..23
-              L_PAREN@15..16 "("
-              IDENT@16..18 "Ok"
-              TOKEN_TREE@18..22
-                L_PAREN@18..19 "("
-                TOKEN_TREE@19..21
-                  L_PAREN@19..20 "("
-                  R_PAREN@20..21 ")"
-                R_PAREN@21..22 ")"
-              R_PAREN@22..23 ")"
-          SEMICOLON@23..24 ";"
-        WHITESPACE@24..25 " "
-        R_CURLY@25..26 "}"
-  WHITESPACE@26..27 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          MACRO_CALL
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "try"
+            BANG "!"
+            TOKEN_TREE
+              L_PAREN "("
+              IDENT "Ok"
+              TOKEN_TREE
+                L_PAREN "("
+                TOKEN_TREE
+                  L_PAREN "("
+                  R_PAREN ")"
+                R_PAREN ")"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.txt b/crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.txt
deleted file mode 100644
index d11ac22efa6..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0159_try_macro_fallback.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          MACRO_CALL
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "try"
-            BANG "!"
-            TOKEN_TREE
-              L_PAREN "("
-              IDENT "Ok"
-              TOKEN_TREE
-                L_PAREN "("
-                TOKEN_TREE
-                  L_PAREN "("
-                  R_PAREN ")"
-                R_PAREN ")"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0159_yield_expr.rast b/crates/parser/test_data/parser/inline/ok/0159_yield_expr.rast
index bdc880972be..31aa58de299 100644
--- a/crates/parser/test_data/parser/inline/ok/0159_yield_expr.rast
+++ b/crates/parser/test_data/parser/inline/ok/0159_yield_expr.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..37
-  FN@0..36
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..36
-      STMT_LIST@9..36
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..21
-          YIELD_EXPR@15..20
-            YIELD_KW@15..20 "yield"
-          SEMICOLON@20..21 ";"
-        WHITESPACE@21..26 "\n    "
-        EXPR_STMT@26..34
-          YIELD_EXPR@26..33
-            YIELD_KW@26..31 "yield"
-            WHITESPACE@31..32 " "
-            LITERAL@32..33
-              INT_NUMBER@32..33 "1"
-          SEMICOLON@33..34 ";"
-        WHITESPACE@34..35 "\n"
-        R_CURLY@35..36 "}"
-  WHITESPACE@36..37 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          YIELD_EXPR
+            YIELD_KW "yield"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          YIELD_EXPR
+            YIELD_KW "yield"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0159_yield_expr.txt b/crates/parser/test_data/parser/inline/ok/0159_yield_expr.txt
deleted file mode 100644
index 31aa58de299..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0159_yield_expr.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          YIELD_EXPR
-            YIELD_KW "yield"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          YIELD_EXPR
-            YIELD_KW "yield"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.rast b/crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.rast
index 3d855fc6b1c..ac45c569567 100644
--- a/crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.rast
+++ b/crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.rast
@@ -1,42 +1,42 @@
-SOURCE_FILE@0..51
-  STRUCT@0..26
-    VISIBILITY@0..16
-      PUB_KW@0..3 "pub"
-      L_PAREN@3..4 "("
-      IN_KW@4..6 "in"
-      WHITESPACE@6..7 " "
-      PATH@7..15
-        PATH@7..12
-          PATH_SEGMENT@7..12
-            NAME_REF@7..12
-              SUPER_KW@7..12 "super"
-        COLON2@12..14 "::"
-        PATH_SEGMENT@14..15
-          NAME_REF@14..15
-            IDENT@14..15 "A"
-      R_PAREN@15..16 ")"
-    WHITESPACE@16..17 " "
-    STRUCT_KW@17..23 "struct"
-    WHITESPACE@23..24 " "
-    NAME@24..25
-      IDENT@24..25 "S"
-    SEMICOLON@25..26 ";"
-  WHITESPACE@26..27 "\n"
-  STRUCT@27..50
-    VISIBILITY@27..40
-      PUB_KW@27..30 "pub"
-      L_PAREN@30..31 "("
-      IN_KW@31..33 "in"
-      WHITESPACE@33..34 " "
-      PATH@34..39
-        PATH_SEGMENT@34..39
-          NAME_REF@34..39
-            CRATE_KW@34..39 "crate"
-      R_PAREN@39..40 ")"
-    WHITESPACE@40..41 " "
-    STRUCT_KW@41..47 "struct"
-    WHITESPACE@47..48 " "
-    NAME@48..49
-      IDENT@48..49 "S"
-    SEMICOLON@49..50 ";"
-  WHITESPACE@50..51 "\n"
+SOURCE_FILE
+  STRUCT
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      IN_KW "in"
+      WHITESPACE " "
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              SUPER_KW "super"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "A"
+      R_PAREN ")"
+    WHITESPACE " "
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      IN_KW "in"
+      WHITESPACE " "
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            CRATE_KW "crate"
+      R_PAREN ")"
+    WHITESPACE " "
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.txt b/crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.txt
deleted file mode 100644
index ac45c569567..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0160_crate_visibility_in.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      IN_KW "in"
-      WHITESPACE " "
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              SUPER_KW "super"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "A"
-      R_PAREN ")"
-    WHITESPACE " "
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      IN_KW "in"
-      WHITESPACE " "
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            CRATE_KW "crate"
-      R_PAREN ")"
-    WHITESPACE " "
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.rast b/crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.rast
index d1c22947b5e..e6916ae976e 100644
--- a/crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.rast
+++ b/crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..30
-  MACRO_RULES@0..29
-    MACRO_RULES_KW@0..11 "macro_rules"
-    BANG@11..12 "!"
-    WHITESPACE@12..13 " "
-    NAME@13..16
-      IDENT@13..16 "try"
-    WHITESPACE@16..17 " "
-    TOKEN_TREE@17..29
-      L_CURLY@17..18 "{"
-      WHITESPACE@18..19 " "
-      TOKEN_TREE@19..21
-        L_PAREN@19..20 "("
-        R_PAREN@20..21 ")"
-      WHITESPACE@21..22 " "
-      EQ@22..23 "="
-      R_ANGLE@23..24 ">"
-      WHITESPACE@24..25 " "
-      TOKEN_TREE@25..27
-        L_CURLY@25..26 "{"
-        R_CURLY@26..27 "}"
-      WHITESPACE@27..28 " "
-      R_CURLY@28..29 "}"
-  WHITESPACE@29..30 "\n"
+SOURCE_FILE
+  MACRO_RULES
+    MACRO_RULES_KW "macro_rules"
+    BANG "!"
+    WHITESPACE " "
+    NAME
+      IDENT "try"
+    WHITESPACE " "
+    TOKEN_TREE
+      L_CURLY "{"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_PAREN "("
+        R_PAREN ")"
+      WHITESPACE " "
+      EQ "="
+      R_ANGLE ">"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        R_CURLY "}"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.txt b/crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.txt
deleted file mode 100644
index e6916ae976e..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0160_try_macro_rules.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  MACRO_RULES
-    MACRO_RULES_KW "macro_rules"
-    BANG "!"
-    WHITESPACE " "
-    NAME
-      IDENT "try"
-    WHITESPACE " "
-    TOKEN_TREE
-      L_CURLY "{"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_PAREN "("
-        R_PAREN ")"
-      WHITESPACE " "
-      EQ "="
-      R_ANGLE ">"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        R_CURLY "}"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0161_impl_item_const.rast b/crates/parser/test_data/parser/inline/ok/0161_impl_item_const.rast
index 925dfa2f113..f7c7aaabc7c 100644
--- a/crates/parser/test_data/parser/inline/ok/0161_impl_item_const.rast
+++ b/crates/parser/test_data/parser/inline/ok/0161_impl_item_const.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..25
-  IMPL@0..24
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    CONST_KW@5..10 "const"
-    WHITESPACE@10..11 " "
-    PATH_TYPE@11..15
-      PATH@11..15
-        PATH_SEGMENT@11..15
-          NAME_REF@11..15
-            IDENT@11..15 "Send"
-    WHITESPACE@15..16 " "
-    FOR_KW@16..19 "for"
-    WHITESPACE@19..20 " "
-    PATH_TYPE@20..21
-      PATH@20..21
-        PATH_SEGMENT@20..21
-          NAME_REF@20..21
-            IDENT@20..21 "S"
-    WHITESPACE@21..22 " "
-    ASSOC_ITEM_LIST@22..24
-      L_CURLY@22..23 "{"
-      R_CURLY@23..24 "}"
-  WHITESPACE@24..25 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    CONST_KW "const"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Send"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0161_impl_item_const.txt b/crates/parser/test_data/parser/inline/ok/0161_impl_item_const.txt
deleted file mode 100644
index f7c7aaabc7c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0161_impl_item_const.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    CONST_KW "const"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Send"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0161_labeled_block.rast b/crates/parser/test_data/parser/inline/ok/0161_labeled_block.rast
index b5f9d22951a..181251d4f4f 100644
--- a/crates/parser/test_data/parser/inline/ok/0161_labeled_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0161_labeled_block.rast
@@ -1,28 +1,28 @@
-SOURCE_FILE@0..23
-  FN@0..22
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..22
-      STMT_LIST@7..22
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        EXPR_STMT@9..20
-          BLOCK_EXPR@9..19
-            LABEL@9..16
-              LIFETIME@9..15
-                LIFETIME_IDENT@9..15 "'label"
-              COLON@15..16 ":"
-            WHITESPACE@16..17 " "
-            STMT_LIST@17..19
-              L_CURLY@17..18 "{"
-              R_CURLY@18..19 "}"
-          SEMICOLON@19..20 ";"
-        WHITESPACE@20..21 " "
-        R_CURLY@21..22 "}"
-  WHITESPACE@22..23 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        EXPR_STMT
+          BLOCK_EXPR
+            LABEL
+              LIFETIME
+                LIFETIME_IDENT "'label"
+              COLON ":"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0161_labeled_block.txt b/crates/parser/test_data/parser/inline/ok/0161_labeled_block.txt
deleted file mode 100644
index 181251d4f4f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0161_labeled_block.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        EXPR_STMT
-          BLOCK_EXPR
-            LABEL
-              LIFETIME
-                LIFETIME_IDENT "'label"
-              COLON ":"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.rast b/crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.rast
index e3f655b9b0a..7c2f7b34c74 100644
--- a/crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.rast
+++ b/crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.rast
@@ -1,43 +1,43 @@
-SOURCE_FILE@0..56
-  IMPL@0..55
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    FOR_KW@7..10 "for"
-    WHITESPACE@10..11 " "
-    PATH_TYPE@11..14
-      PATH@11..14
-        PATH_SEGMENT@11..14
-          NAME_REF@11..14
-            IDENT@11..14 "Foo"
-    WHITESPACE@14..15 " "
-    ASSOC_ITEM_LIST@15..55
-      L_CURLY@15..16 "{"
-      WHITESPACE@16..21 "\n    "
-      FN@21..53
-        DEFAULT_KW@21..28 "default"
-        WHITESPACE@28..29 " "
-        ASYNC_KW@29..34 "async"
-        WHITESPACE@34..35 " "
-        UNSAFE_KW@35..41 "unsafe"
-        WHITESPACE@41..42 " "
-        FN_KW@42..44 "fn"
-        WHITESPACE@44..45 " "
-        NAME@45..48
-          IDENT@45..48 "foo"
-        PARAM_LIST@48..50
-          L_PAREN@48..49 "("
-          R_PAREN@49..50 ")"
-        WHITESPACE@50..51 " "
-        BLOCK_EXPR@51..53
-          STMT_LIST@51..53
-            L_CURLY@51..52 "{"
-            R_CURLY@52..53 "}"
-      WHITESPACE@53..54 "\n"
-      R_CURLY@54..55 "}"
-  WHITESPACE@55..56 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        ASYNC_KW "async"
+        WHITESPACE " "
+        UNSAFE_KW "unsafe"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.txt b/crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.txt
deleted file mode 100644
index 7c2f7b34c74..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0162_default_async_unsafe_fn.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        ASYNC_KW "async"
-        WHITESPACE " "
-        UNSAFE_KW "unsafe"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0162_unsafe_block.rast b/crates/parser/test_data/parser/inline/ok/0162_unsafe_block.rast
index 6274f78fe84..2149676dedb 100644
--- a/crates/parser/test_data/parser/inline/ok/0162_unsafe_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0162_unsafe_block.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..22
-  FN@0..21
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..21
-      STMT_LIST@7..21
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        BLOCK_EXPR@9..19
-          UNSAFE_KW@9..15 "unsafe"
-          WHITESPACE@15..16 " "
-          STMT_LIST@16..19
-            L_CURLY@16..17 "{"
-            WHITESPACE@17..18 " "
-            R_CURLY@18..19 "}"
-        WHITESPACE@19..20 " "
-        R_CURLY@20..21 "}"
-  WHITESPACE@21..22 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        BLOCK_EXPR
+          UNSAFE_KW "unsafe"
+          WHITESPACE " "
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE " "
+            R_CURLY "}"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0162_unsafe_block.txt b/crates/parser/test_data/parser/inline/ok/0162_unsafe_block.txt
deleted file mode 100644
index 2149676dedb..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0162_unsafe_block.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        BLOCK_EXPR
-          UNSAFE_KW "unsafe"
-          WHITESPACE " "
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE " "
-            R_CURLY "}"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0163_default_async_fn.rast b/crates/parser/test_data/parser/inline/ok/0163_default_async_fn.rast
index 9af407cdd65..06b37e23938 100644
--- a/crates/parser/test_data/parser/inline/ok/0163_default_async_fn.rast
+++ b/crates/parser/test_data/parser/inline/ok/0163_default_async_fn.rast
@@ -1,41 +1,41 @@
-SOURCE_FILE@0..49
-  IMPL@0..48
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    FOR_KW@7..10 "for"
-    WHITESPACE@10..11 " "
-    PATH_TYPE@11..14
-      PATH@11..14
-        PATH_SEGMENT@11..14
-          NAME_REF@11..14
-            IDENT@11..14 "Foo"
-    WHITESPACE@14..15 " "
-    ASSOC_ITEM_LIST@15..48
-      L_CURLY@15..16 "{"
-      WHITESPACE@16..21 "\n    "
-      FN@21..46
-        DEFAULT_KW@21..28 "default"
-        WHITESPACE@28..29 " "
-        ASYNC_KW@29..34 "async"
-        WHITESPACE@34..35 " "
-        FN_KW@35..37 "fn"
-        WHITESPACE@37..38 " "
-        NAME@38..41
-          IDENT@38..41 "foo"
-        PARAM_LIST@41..43
-          L_PAREN@41..42 "("
-          R_PAREN@42..43 ")"
-        WHITESPACE@43..44 " "
-        BLOCK_EXPR@44..46
-          STMT_LIST@44..46
-            L_CURLY@44..45 "{"
-            R_CURLY@45..46 "}"
-      WHITESPACE@46..47 "\n"
-      R_CURLY@47..48 "}"
-  WHITESPACE@48..49 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        ASYNC_KW "async"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0163_default_async_fn.txt b/crates/parser/test_data/parser/inline/ok/0163_default_async_fn.txt
deleted file mode 100644
index 06b37e23938..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0163_default_async_fn.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        ASYNC_KW "async"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.rast b/crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.rast
index ee05ab0fe97..b180d0b72cc 100644
--- a/crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.rast
@@ -1,45 +1,45 @@
-SOURCE_FILE@0..65
-  IMPL@0..64
-    DEFAULT_KW@0..7 "default"
-    WHITESPACE@7..8 " "
-    UNSAFE_KW@8..14 "unsafe"
-    WHITESPACE@14..15 " "
-    IMPL_KW@15..19 "impl"
-    WHITESPACE@19..20 " "
-    PATH_TYPE@20..21
-      PATH@20..21
-        PATH_SEGMENT@20..21
-          NAME_REF@20..21
-            IDENT@20..21 "T"
-    WHITESPACE@21..22 " "
-    FOR_KW@22..25 "for"
-    WHITESPACE@25..26 " "
-    PATH_TYPE@26..29
-      PATH@26..29
-        PATH_SEGMENT@26..29
-          NAME_REF@26..29
-            IDENT@26..29 "Foo"
-    WHITESPACE@29..30 " "
-    ASSOC_ITEM_LIST@30..64
-      L_CURLY@30..31 "{"
-      WHITESPACE@31..36 "\n    "
-      FN@36..62
-        DEFAULT_KW@36..43 "default"
-        WHITESPACE@43..44 " "
-        UNSAFE_KW@44..50 "unsafe"
-        WHITESPACE@50..51 " "
-        FN_KW@51..53 "fn"
-        WHITESPACE@53..54 " "
-        NAME@54..57
-          IDENT@54..57 "foo"
-        PARAM_LIST@57..59
-          L_PAREN@57..58 "("
-          R_PAREN@58..59 ")"
-        WHITESPACE@59..60 " "
-        BLOCK_EXPR@60..62
-          STMT_LIST@60..62
-            L_CURLY@60..61 "{"
-            R_CURLY@61..62 "}"
-      WHITESPACE@62..63 "\n"
-      R_CURLY@63..64 "}"
-  WHITESPACE@64..65 "\n"
+SOURCE_FILE
+  IMPL
+    DEFAULT_KW "default"
+    WHITESPACE " "
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        UNSAFE_KW "unsafe"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.txt b/crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.txt
deleted file mode 100644
index b180d0b72cc..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0163_default_unsafe_item.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE
-  IMPL
-    DEFAULT_KW "default"
-    WHITESPACE " "
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        UNSAFE_KW "unsafe"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0164_default_item.rast b/crates/parser/test_data/parser/inline/ok/0164_default_item.rast
index 9282772f34d..7a8e8cf1dd2 100644
--- a/crates/parser/test_data/parser/inline/ok/0164_default_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0164_default_item.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..26
-  IMPL@0..25
-    DEFAULT_KW@0..7 "default"
-    WHITESPACE@7..8 " "
-    IMPL_KW@8..12 "impl"
-    WHITESPACE@12..13 " "
-    PATH_TYPE@13..14
-      PATH@13..14
-        PATH_SEGMENT@13..14
-          NAME_REF@13..14
-            IDENT@13..14 "T"
-    WHITESPACE@14..15 " "
-    FOR_KW@15..18 "for"
-    WHITESPACE@18..19 " "
-    PATH_TYPE@19..22
-      PATH@19..22
-        PATH_SEGMENT@19..22
-          NAME_REF@19..22
-            IDENT@19..22 "Foo"
-    WHITESPACE@22..23 " "
-    ASSOC_ITEM_LIST@23..25
-      L_CURLY@23..24 "{"
-      R_CURLY@24..25 "}"
-  WHITESPACE@25..26 "\n"
+SOURCE_FILE
+  IMPL
+    DEFAULT_KW "default"
+    WHITESPACE " "
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0164_default_item.txt b/crates/parser/test_data/parser/inline/ok/0164_default_item.txt
deleted file mode 100644
index 7a8e8cf1dd2..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0164_default_item.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  IMPL
-    DEFAULT_KW "default"
-    WHITESPACE " "
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.rast b/crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.rast
index 8eb64ccb177..297f7575ca6 100644
--- a/crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.rast
+++ b/crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.rast
@@ -1,39 +1,39 @@
-SOURCE_FILE@0..33
-  FN@0..32
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..32
-      STMT_LIST@10..32
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..12 " "
-        LET_STMT@12..30
-          LET_KW@12..15 "let"
-          WHITESPACE@15..16 " "
-          PATH_PAT@16..24
-            PATH@16..24
-              PATH@16..19
-                PATH_SEGMENT@16..19
-                  L_ANGLE@16..17 "<"
-                  INFER_TYPE@17..18
-                    UNDERSCORE@17..18 "_"
-                  R_ANGLE@18..19 ">"
-              COLON2@19..21 "::"
-              PATH_SEGMENT@21..24
-                NAME_REF@21..24
-                  IDENT@21..24 "Foo"
-          WHITESPACE@24..25 " "
-          EQ@25..26 "="
-          WHITESPACE@26..27 " "
-          TUPLE_EXPR@27..29
-            L_PAREN@27..28 "("
-            R_PAREN@28..29 ")"
-          SEMICOLON@29..30 ";"
-        WHITESPACE@30..31 " "
-        R_CURLY@31..32 "}"
-  WHITESPACE@32..33 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          PATH_PAT
+            PATH
+              PATH
+                PATH_SEGMENT
+                  L_ANGLE "<"
+                  INFER_TYPE
+                    UNDERSCORE "_"
+                  R_ANGLE ">"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Foo"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.txt b/crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.txt
deleted file mode 100644
index 297f7575ca6..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0164_type_path_in_pattern.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          PATH_PAT
-            PATH
-              PATH
-                PATH_SEGMENT
-                  L_ANGLE "<"
-                  INFER_TYPE
-                    UNDERSCORE "_"
-                  R_ANGLE ">"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Foo"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.rast b/crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.rast
index 8677f8ae2c8..6de10353bf0 100644
--- a/crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.rast
+++ b/crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.rast
@@ -1,31 +1,31 @@
-SOURCE_FILE@0..29
-  STRUCT@0..28
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "A"
-    GENERIC_PARAM_LIST@8..27
-      L_ANGLE@8..9 "<"
-      CONST_PARAM@9..26
-        CONST_KW@9..14 "const"
-        WHITESPACE@14..15 " "
-        NAME@15..16
-          IDENT@15..16 "N"
-        COLON@16..17 ":"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "i32"
-        WHITESPACE@21..22 " "
-        EQ@22..23 "="
-        WHITESPACE@23..24 " "
-        CONST_ARG@24..26
-          PREFIX_EXPR@24..26
-            MINUS@24..25 "-"
-            LITERAL@25..26
-              INT_NUMBER@25..26 "1"
-      R_ANGLE@26..27 ">"
-    SEMICOLON@27..28 ";"
-  WHITESPACE@28..29 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      CONST_PARAM
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "N"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        CONST_ARG
+          PREFIX_EXPR
+            MINUS "-"
+            LITERAL
+              INT_NUMBER "1"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.txt b/crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.txt
deleted file mode 100644
index 6de10353bf0..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0165_const_param_defaults.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      CONST_PARAM
-        CONST_KW "const"
-        WHITESPACE " "
-        NAME
-          IDENT "N"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        CONST_ARG
-          PREFIX_EXPR
-            MINUS "-"
-            LITERAL
-              INT_NUMBER "1"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast
index f0cc6b3441f..3d3587a7063 100644
--- a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast
+++ b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.rast
@@ -1,32 +1,32 @@
-SOURCE_FILE@0..28
-  FN@0..27
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..27
-      STMT_LIST@7..27
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        LET_STMT@9..25
-          LET_KW@9..12 "let"
-          WHITESPACE@12..13 " "
-          RANGE_PAT@13..17
-            LITERAL_PAT@13..14
-              LITERAL@13..14
-                INT_NUMBER@13..14 "0"
-            WHITESPACE@14..15 " "
-            DOT2@15..17 ".."
-          WHITESPACE@17..18 " "
-          EQ@18..19 "="
-          WHITESPACE@19..20 " "
-          LITERAL@20..24
-            INT_NUMBER@20..24 "1u32"
-          SEMICOLON@24..25 ";"
-        WHITESPACE@25..26 " "
-        R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          RANGE_PAT
+            LITERAL_PAT
+              LITERAL
+                INT_NUMBER "0"
+            WHITESPACE " "
+            DOT2 ".."
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "1u32"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.txt b/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.txt
deleted file mode 100644
index 3d3587a7063..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0166_half_open_range_pat.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          RANGE_PAT
-            LITERAL_PAT
-              LITERAL
-                INT_NUMBER "0"
-            WHITESPACE " "
-            DOT2 ".."
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "1u32"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.rast b/crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.rast
index 87516e9fc40..5a5aca96f91 100644
--- a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.rast
+++ b/crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.rast
@@ -1,16 +1,16 @@
-SOURCE_FILE@0..25
-  EXTERN_CRATE@0..24
-    EXTERN_KW@0..6 "extern"
-    WHITESPACE@6..7 " "
-    CRATE_KW@7..12 "crate"
-    WHITESPACE@12..13 " "
-    NAME_REF@13..16
-      IDENT@13..16 "foo"
-    WHITESPACE@16..17 " "
-    RENAME@17..23
-      AS_KW@17..19 "as"
-      WHITESPACE@19..20 " "
-      NAME@20..23
-        IDENT@20..23 "bar"
-    SEMICOLON@23..24 ";"
-  WHITESPACE@24..25 "\n"
+SOURCE_FILE
+  EXTERN_CRATE
+    EXTERN_KW "extern"
+    WHITESPACE " "
+    CRATE_KW "crate"
+    WHITESPACE " "
+    NAME_REF
+      IDENT "foo"
+    WHITESPACE " "
+    RENAME
+      AS_KW "as"
+      WHITESPACE " "
+      NAME
+        IDENT "bar"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.txt b/crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.txt
deleted file mode 100644
index 5a5aca96f91..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_rename.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE
-  EXTERN_CRATE
-    EXTERN_KW "extern"
-    WHITESPACE " "
-    CRATE_KW "crate"
-    WHITESPACE " "
-    NAME_REF
-      IDENT "foo"
-    WHITESPACE " "
-    RENAME
-      AS_KW "as"
-      WHITESPACE " "
-      NAME
-        IDENT "bar"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.rast b/crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.rast
index 26b4c0f1959..edea4245f20 100644
--- a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.rast
+++ b/crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.rast
@@ -1,10 +1,10 @@
-SOURCE_FILE@0..19
-  EXTERN_CRATE@0..18
-    EXTERN_KW@0..6 "extern"
-    WHITESPACE@6..7 " "
-    CRATE_KW@7..12 "crate"
-    WHITESPACE@12..13 " "
-    NAME_REF@13..17
-      SELF_KW@13..17 "self"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
+SOURCE_FILE
+  EXTERN_CRATE
+    EXTERN_KW "extern"
+    WHITESPACE " "
+    CRATE_KW "crate"
+    WHITESPACE " "
+    NAME_REF
+      SELF_KW "self"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.txt b/crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.txt
deleted file mode 100644
index edea4245f20..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0168_extern_crate_self.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-SOURCE_FILE
-  EXTERN_CRATE
-    EXTERN_KW "extern"
-    WHITESPACE " "
-    CRATE_KW "crate"
-    WHITESPACE " "
-    NAME_REF
-      SELF_KW "self"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0169_mod_item.rast b/crates/parser/test_data/parser/inline/ok/0169_mod_item.rast
index 423eacf92e2..4d505916cf6 100644
--- a/crates/parser/test_data/parser/inline/ok/0169_mod_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0169_mod_item.rast
@@ -1,8 +1,8 @@
-SOURCE_FILE@0..7
-  MODULE@0..6
-    MOD_KW@0..3 "mod"
-    WHITESPACE@3..4 " "
-    NAME@4..5
-      IDENT@4..5 "a"
-    SEMICOLON@5..6 ";"
-  WHITESPACE@6..7 "\n"
+SOURCE_FILE
+  MODULE
+    MOD_KW "mod"
+    WHITESPACE " "
+    NAME
+      IDENT "a"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0169_mod_item.txt b/crates/parser/test_data/parser/inline/ok/0169_mod_item.txt
deleted file mode 100644
index 4d505916cf6..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0169_mod_item.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-SOURCE_FILE
-  MODULE
-    MOD_KW "mod"
-    WHITESPACE " "
-    NAME
-      IDENT "a"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.rast b/crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.rast
index 33ad9c44f5c..d5e3f3493c3 100644
--- a/crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.rast
+++ b/crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.rast
@@ -1,12 +1,12 @@
-SOURCE_FILE@0..10
-  MODULE@0..9
-    MOD_KW@0..3 "mod"
-    WHITESPACE@3..4 " "
-    NAME@4..5
-      IDENT@4..5 "b"
-    WHITESPACE@5..6 " "
-    ITEM_LIST@6..9
-      L_CURLY@6..7 "{"
-      WHITESPACE@7..8 " "
-      R_CURLY@8..9 "}"
-  WHITESPACE@9..10 "\n"
+SOURCE_FILE
+  MODULE
+    MOD_KW "mod"
+    WHITESPACE " "
+    NAME
+      IDENT "b"
+    WHITESPACE " "
+    ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.txt b/crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.txt
deleted file mode 100644
index d5e3f3493c3..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0170_mod_item_curly.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-SOURCE_FILE
-  MODULE
-    MOD_KW "mod"
-    WHITESPACE " "
-    NAME
-      IDENT "b"
-    WHITESPACE " "
-    ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0170_tuple_struct.rast b/crates/parser/test_data/parser/inline/ok/0170_tuple_struct.rast
index 935fd6e07be..6e5f6c2d2bb 100644
--- a/crates/parser/test_data/parser/inline/ok/0170_tuple_struct.rast
+++ b/crates/parser/test_data/parser/inline/ok/0170_tuple_struct.rast
@@ -1,25 +1,25 @@
-SOURCE_FILE@0..25
-  STRUCT@0..24
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    TUPLE_FIELD_LIST@8..23
-      L_PAREN@8..9 "("
-      TUPLE_FIELD@9..15
-        PATH_TYPE@9..15
-          PATH@9..15
-            PATH_SEGMENT@9..15
-              NAME_REF@9..15
-                IDENT@9..15 "String"
-      COMMA@15..16 ","
-      WHITESPACE@16..17 " "
-      TUPLE_FIELD@17..22
-        PATH_TYPE@17..22
-          PATH@17..22
-            PATH_SEGMENT@17..22
-              NAME_REF@17..22
-                IDENT@17..22 "usize"
-      R_PAREN@22..23 ")"
-    SEMICOLON@23..24 ";"
-  WHITESPACE@24..25 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "String"
+      COMMA ","
+      WHITESPACE " "
+      TUPLE_FIELD
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "usize"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0170_tuple_struct.txt b/crates/parser/test_data/parser/inline/ok/0170_tuple_struct.txt
deleted file mode 100644
index 6e5f6c2d2bb..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0170_tuple_struct.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "String"
-      COMMA ","
-      WHITESPACE " "
-      TUPLE_FIELD
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "usize"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0171_struct_item.rast b/crates/parser/test_data/parser/inline/ok/0171_struct_item.rast
index 3134482f0de..78f96820723 100644
--- a/crates/parser/test_data/parser/inline/ok/0171_struct_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0171_struct_item.rast
@@ -1,11 +1,11 @@
-SOURCE_FILE@0..12
-  STRUCT@0..11
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..11
-      L_CURLY@9..10 "{"
-      R_CURLY@10..11 "}"
-  WHITESPACE@11..12 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0171_struct_item.txt b/crates/parser/test_data/parser/inline/ok/0171_struct_item.txt
deleted file mode 100644
index 78f96820723..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0171_struct_item.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0172_const_item.rast b/crates/parser/test_data/parser/inline/ok/0172_const_item.rast
index 8a61d5e5668..909983c9a2a 100644
--- a/crates/parser/test_data/parser/inline/ok/0172_const_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0172_const_item.rast
@@ -1,20 +1,20 @@
-SOURCE_FILE@0..19
-  CONST@0..18
-    CONST_KW@0..5 "const"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "C"
-    COLON@7..8 ":"
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..12
-      PATH@9..12
-        PATH_SEGMENT@9..12
-          NAME_REF@9..12
-            IDENT@9..12 "u32"
-    WHITESPACE@12..13 " "
-    EQ@13..14 "="
-    WHITESPACE@14..15 " "
-    LITERAL@15..17
-      INT_NUMBER@15..17 "92"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
+SOURCE_FILE
+  CONST
+    CONST_KW "const"
+    WHITESPACE " "
+    NAME
+      IDENT "C"
+    COLON ":"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "u32"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    LITERAL
+      INT_NUMBER "92"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0172_const_item.txt b/crates/parser/test_data/parser/inline/ok/0172_const_item.txt
deleted file mode 100644
index 909983c9a2a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0172_const_item.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-SOURCE_FILE
-  CONST
-    CONST_KW "const"
-    WHITESPACE " "
-    NAME
-      IDENT "C"
-    COLON ":"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "u32"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    LITERAL
-      INT_NUMBER "92"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0172_record_field_list.rast b/crates/parser/test_data/parser/inline/ok/0172_record_field_list.rast
index ce1135c597d..065d7e7e81f 100644
--- a/crates/parser/test_data/parser/inline/ok/0172_record_field_list.rast
+++ b/crates/parser/test_data/parser/inline/ok/0172_record_field_list.rast
@@ -1,35 +1,35 @@
-SOURCE_FILE@0..28
-  STRUCT@0..27
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..27
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..11 " "
-      RECORD_FIELD@11..17
-        NAME@11..12
-          IDENT@11..12 "a"
-        COLON@12..13 ":"
-        WHITESPACE@13..14 " "
-        PATH_TYPE@14..17
-          PATH@14..17
-            PATH_SEGMENT@14..17
-              NAME_REF@14..17
-                IDENT@14..17 "i32"
-      COMMA@17..18 ","
-      WHITESPACE@18..19 " "
-      RECORD_FIELD@19..25
-        NAME@19..20
-          IDENT@19..20 "b"
-        COLON@20..21 ":"
-        WHITESPACE@21..22 " "
-        PATH_TYPE@22..25
-          PATH@22..25
-            PATH_SEGMENT@22..25
-              NAME_REF@22..25
-                IDENT@22..25 "f32"
-      WHITESPACE@25..26 " "
-      R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      RECORD_FIELD
+        NAME
+          IDENT "a"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      COMMA ","
+      WHITESPACE " "
+      RECORD_FIELD
+        NAME
+          IDENT "b"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "f32"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0172_record_field_list.txt b/crates/parser/test_data/parser/inline/ok/0172_record_field_list.txt
deleted file mode 100644
index 065d7e7e81f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0172_record_field_list.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      RECORD_FIELD
-        NAME
-          IDENT "a"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      COMMA ","
-      WHITESPACE " "
-      RECORD_FIELD
-        NAME
-          IDENT "b"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "f32"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0173_anonymous_const.rast b/crates/parser/test_data/parser/inline/ok/0173_anonymous_const.rast
index 68ce503c39d..d81b4ff2670 100644
--- a/crates/parser/test_data/parser/inline/ok/0173_anonymous_const.rast
+++ b/crates/parser/test_data/parser/inline/ok/0173_anonymous_const.rast
@@ -1,19 +1,19 @@
-SOURCE_FILE@0..18
-  CONST@0..17
-    CONST_KW@0..5 "const"
-    WHITESPACE@5..6 " "
-    UNDERSCORE@6..7 "_"
-    COLON@7..8 ":"
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..12
-      PATH@9..12
-        PATH_SEGMENT@9..12
-          NAME_REF@9..12
-            IDENT@9..12 "u32"
-    WHITESPACE@12..13 " "
-    EQ@13..14 "="
-    WHITESPACE@14..15 " "
-    LITERAL@15..16
-      INT_NUMBER@15..16 "0"
-    SEMICOLON@16..17 ";"
-  WHITESPACE@17..18 "\n"
+SOURCE_FILE
+  CONST
+    CONST_KW "const"
+    WHITESPACE " "
+    UNDERSCORE "_"
+    COLON ":"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "u32"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    LITERAL
+      INT_NUMBER "0"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0173_anonymous_const.txt b/crates/parser/test_data/parser/inline/ok/0173_anonymous_const.txt
deleted file mode 100644
index d81b4ff2670..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0173_anonymous_const.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-SOURCE_FILE
-  CONST
-    CONST_KW "const"
-    WHITESPACE " "
-    UNDERSCORE "_"
-    COLON ":"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "u32"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    LITERAL
-      INT_NUMBER "0"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.rast b/crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.rast
index 3ec00bf55a0..5cf305d2658 100644
--- a/crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.rast
+++ b/crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.rast
@@ -1,27 +1,27 @@
-SOURCE_FILE@0..29
-  MACRO_DEF@0..28
-    MACRO_KW@0..5 "macro"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "m"
-    WHITESPACE@7..8 " "
-    TOKEN_TREE@8..28
-      L_CURLY@8..9 "{"
-      WHITESPACE@9..10 " "
-      TOKEN_TREE@10..20
-        L_PAREN@10..11 "("
-        DOLLAR@11..12 "$"
-        IDENT@12..13 "i"
-        COLON@13..14 ":"
-        IDENT@14..19 "ident"
-        R_PAREN@19..20 ")"
-      WHITESPACE@20..21 " "
-      EQ@21..22 "="
-      R_ANGLE@22..23 ">"
-      WHITESPACE@23..24 " "
-      TOKEN_TREE@24..26
-        L_CURLY@24..25 "{"
-        R_CURLY@25..26 "}"
-      WHITESPACE@26..27 " "
-      R_CURLY@27..28 "}"
-  WHITESPACE@28..29 "\n"
+SOURCE_FILE
+  MACRO_DEF
+    MACRO_KW "macro"
+    WHITESPACE " "
+    NAME
+      IDENT "m"
+    WHITESPACE " "
+    TOKEN_TREE
+      L_CURLY "{"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_PAREN "("
+        DOLLAR "$"
+        IDENT "i"
+        COLON ":"
+        IDENT "ident"
+        R_PAREN ")"
+      WHITESPACE " "
+      EQ "="
+      R_ANGLE ">"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        R_CURLY "}"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.txt b/crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.txt
deleted file mode 100644
index 5cf305d2658..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0173_macro_def_curly.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-SOURCE_FILE
-  MACRO_DEF
-    MACRO_KW "macro"
-    WHITESPACE " "
-    NAME
-      IDENT "m"
-    WHITESPACE " "
-    TOKEN_TREE
-      L_CURLY "{"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_PAREN "("
-        DOLLAR "$"
-        IDENT "i"
-        COLON ":"
-        IDENT "ident"
-        R_PAREN ")"
-      WHITESPACE " "
-      EQ "="
-      R_ANGLE ">"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        R_CURLY "}"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0173_union_item.rast b/crates/parser/test_data/parser/inline/ok/0173_union_item.rast
index 5d5c0d69bc0..af608fc4acb 100644
--- a/crates/parser/test_data/parser/inline/ok/0173_union_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0173_union_item.rast
@@ -1,35 +1,35 @@
-SOURCE_FILE@0..28
-  STRUCT@0..27
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "U"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..27
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..11 " "
-      RECORD_FIELD@11..17
-        NAME@11..12
-          IDENT@11..12 "i"
-        COLON@12..13 ":"
-        WHITESPACE@13..14 " "
-        PATH_TYPE@14..17
-          PATH@14..17
-            PATH_SEGMENT@14..17
-              NAME_REF@14..17
-                IDENT@14..17 "i32"
-      COMMA@17..18 ","
-      WHITESPACE@18..19 " "
-      RECORD_FIELD@19..25
-        NAME@19..20
-          IDENT@19..20 "f"
-        COLON@20..21 ":"
-        WHITESPACE@21..22 " "
-        PATH_TYPE@22..25
-          PATH@22..25
-            PATH_SEGMENT@22..25
-              NAME_REF@22..25
-                IDENT@22..25 "f32"
-      WHITESPACE@25..26 " "
-      R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "U"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      RECORD_FIELD
+        NAME
+          IDENT "i"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      COMMA ","
+      WHITESPACE " "
+      RECORD_FIELD
+        NAME
+          IDENT "f"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "f32"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0173_union_item.txt b/crates/parser/test_data/parser/inline/ok/0173_union_item.txt
deleted file mode 100644
index af608fc4acb..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0173_union_item.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "U"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      RECORD_FIELD
-        NAME
-          IDENT "i"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      COMMA ","
-      WHITESPACE " "
-      RECORD_FIELD
-        NAME
-          IDENT "f"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "f32"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.rast b/crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.rast
index f7af2e30e85..01f212e7184 100644
--- a/crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.rast
+++ b/crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.rast
@@ -1,35 +1,35 @@
-SOURCE_FILE@0..31
-  TRAIT@0..30
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "X"
-    GENERIC_PARAM_LIST@7..27
-      L_ANGLE@7..8 "<"
-      TYPE_PARAM@8..26
-        NAME@8..9
-          IDENT@8..9 "U"
-        COLON@9..10 ":"
-        WHITESPACE@10..11 " "
-        TYPE_BOUND_LIST@11..26
-          TYPE_BOUND@11..16
-            PATH_TYPE@11..16
-              PATH@11..16
-                PATH_SEGMENT@11..16
-                  NAME_REF@11..16
-                    IDENT@11..16 "Debug"
-          WHITESPACE@16..17 " "
-          PLUS@17..18 "+"
-          WHITESPACE@18..19 " "
-          TYPE_BOUND@19..26
-            PATH_TYPE@19..26
-              PATH@19..26
-                PATH_SEGMENT@19..26
-                  NAME_REF@19..26
-                    IDENT@19..26 "Display"
-      R_ANGLE@26..27 ">"
-    WHITESPACE@27..28 " "
-    ASSOC_ITEM_LIST@28..30
-      L_CURLY@28..29 "{"
-      R_CURLY@29..30 "}"
-  WHITESPACE@30..31 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "X"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "U"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Debug"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Display"
+      R_ANGLE ">"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.txt b/crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.txt
deleted file mode 100644
index 01f212e7184..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0174_trait_item_generic_params.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "X"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "U"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Debug"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Display"
-      R_ANGLE ">"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0174_unit_struct.rast b/crates/parser/test_data/parser/inline/ok/0174_unit_struct.rast
index b20235889fc..438dea6f408 100644
--- a/crates/parser/test_data/parser/inline/ok/0174_unit_struct.rast
+++ b/crates/parser/test_data/parser/inline/ok/0174_unit_struct.rast
@@ -1,8 +1,8 @@
-SOURCE_FILE@0..10
-  STRUCT@0..9
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    SEMICOLON@8..9 ";"
-  WHITESPACE@9..10 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0174_unit_struct.txt b/crates/parser/test_data/parser/inline/ok/0174_unit_struct.txt
deleted file mode 100644
index 438dea6f408..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0174_unit_struct.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0174_use_tree_star.rast b/crates/parser/test_data/parser/inline/ok/0174_use_tree_star.rast
index b9c6a3bed8c..8662423f5d2 100644
--- a/crates/parser/test_data/parser/inline/ok/0174_use_tree_star.rast
+++ b/crates/parser/test_data/parser/inline/ok/0174_use_tree_star.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..21
-  USE@0..6
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..5
-      STAR@4..5 "*"
-    SEMICOLON@5..6 ";"
-  WHITESPACE@6..7 "\n"
-  USE@7..20
-    USE_KW@7..10 "use"
-    WHITESPACE@10..11 " "
-    USE_TREE@11..19
-      PATH@11..14
-        PATH_SEGMENT@11..14
-          NAME_REF@11..14
-            IDENT@11..14 "std"
-      COLON2@14..16 "::"
-      USE_TREE_LIST@16..19
-        L_CURLY@16..17 "{"
-        USE_TREE@17..18
-          STAR@17..18 "*"
-        R_CURLY@18..19 "}"
-    SEMICOLON@19..20 ";"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      STAR "*"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "std"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          STAR "*"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0174_use_tree_star.txt b/crates/parser/test_data/parser/inline/ok/0174_use_tree_star.txt
deleted file mode 100644
index 8662423f5d2..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0174_use_tree_star.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      STAR "*"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "std"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          STAR "*"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.rast b/crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.rast
index f025e325209..bab83145622 100644
--- a/crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.rast
+++ b/crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..25
-  TRAIT@0..24
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "T"
-    COLON@7..8 ":"
-    WHITESPACE@8..9 " "
-    TYPE_BOUND_LIST@9..21
-      TYPE_BOUND@9..13
-        PATH_TYPE@9..13
-          PATH@9..13
-            PATH_SEGMENT@9..13
-              NAME_REF@9..13
-                IDENT@9..13 "Hash"
-      WHITESPACE@13..14 " "
-      PLUS@14..15 "+"
-      WHITESPACE@15..16 " "
-      TYPE_BOUND@16..21
-        PATH_TYPE@16..21
-          PATH@16..21
-            PATH_SEGMENT@16..21
-              NAME_REF@16..21
-                IDENT@16..21 "Clone"
-    WHITESPACE@21..22 " "
-    ASSOC_ITEM_LIST@22..24
-      L_CURLY@22..23 "{"
-      R_CURLY@23..24 "}"
-  WHITESPACE@24..25 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    COLON ":"
+    WHITESPACE " "
+    TYPE_BOUND_LIST
+      TYPE_BOUND
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Hash"
+      WHITESPACE " "
+      PLUS "+"
+      WHITESPACE " "
+      TYPE_BOUND
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Clone"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.txt b/crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.txt
deleted file mode 100644
index bab83145622..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0175_trait_item_bounds.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    COLON ":"
-    WHITESPACE " "
-    TYPE_BOUND_LIST
-      TYPE_BOUND
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Hash"
-      WHITESPACE " "
-      PLUS "+"
-      WHITESPACE " "
-      TYPE_BOUND
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Clone"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.rast b/crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.rast
index 85105b40436..46cd8ee6654 100644
--- a/crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.rast
+++ b/crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..28
-  TRAIT@0..27
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "T"
-    WHITESPACE@7..8 " "
-    WHERE_CLAUSE@8..24
-      WHERE_KW@8..13 "where"
-      WHITESPACE@13..14 " "
-      WHERE_PRED@14..24
-        PATH_TYPE@14..18
-          PATH@14..18
-            PATH_SEGMENT@14..18
-              NAME_REF@14..18
-                IDENT@14..18 "Self"
-        COLON@18..19 ":"
-        WHITESPACE@19..20 " "
-        TYPE_BOUND_LIST@20..24
-          TYPE_BOUND@20..24
-            PATH_TYPE@20..24
-              PATH@20..24
-                PATH_SEGMENT@20..24
-                  NAME_REF@20..24
-                    IDENT@20..24 "Copy"
-    WHITESPACE@24..25 " "
-    ASSOC_ITEM_LIST@25..27
-      L_CURLY@25..26 "{"
-      R_CURLY@26..27 "}"
-  WHITESPACE@27..28 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                SELF_TYPE_KW "Self"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.txt b/crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.txt
deleted file mode 100644
index 46cd8ee6654..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0176_trait_item_where_clause.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                SELF_TYPE_KW "Self"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.rast b/crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.rast
index 210ff1f9816..ef0dd6ba11c 100644
--- a/crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.rast
+++ b/crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.rast
@@ -1,32 +1,32 @@
-SOURCE_FILE@0..35
-  USE@0..18
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..17
-      PATH@4..7
-        PATH_SEGMENT@4..7
-          NAME_REF@4..7
-            IDENT@4..7 "std"
-      WHITESPACE@7..8 " "
-      RENAME@8..17
-        AS_KW@8..10 "as"
-        WHITESPACE@10..11 " "
-        NAME@11..17
-          IDENT@11..17 "stdlib"
-    SEMICOLON@17..18 ";"
-  WHITESPACE@18..19 "\n"
-  USE@19..34
-    USE_KW@19..22 "use"
-    WHITESPACE@22..23 " "
-    USE_TREE@23..33
-      PATH@23..28
-        PATH_SEGMENT@23..28
-          NAME_REF@23..28
-            IDENT@23..28 "Trait"
-      WHITESPACE@28..29 " "
-      RENAME@29..33
-        AS_KW@29..31 "as"
-        WHITESPACE@31..32 " "
-        UNDERSCORE@32..33 "_"
-    SEMICOLON@33..34 ";"
-  WHITESPACE@34..35 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "std"
+      WHITESPACE " "
+      RENAME
+        AS_KW "as"
+        WHITESPACE " "
+        NAME
+          IDENT "stdlib"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Trait"
+      WHITESPACE " "
+      RENAME
+        AS_KW "as"
+        WHITESPACE " "
+        UNDERSCORE "_"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.txt b/crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.txt
deleted file mode 100644
index ef0dd6ba11c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0176_use_tree_alias.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "std"
-      WHITESPACE " "
-      RENAME
-        AS_KW "as"
-        WHITESPACE " "
-        NAME
-          IDENT "stdlib"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Trait"
-      WHITESPACE " "
-      RENAME
-        AS_KW "as"
-        WHITESPACE " "
-        UNDERSCORE "_"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.rast b/crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.rast
index 65b4743d141..9cb3c8a5c3b 100644
--- a/crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.rast
+++ b/crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.rast
@@ -1,26 +1,26 @@
-SOURCE_FILE@0..20
-  IMPL@0..19
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "S"
-    WHITESPACE@6..7 " "
-    ASSOC_ITEM_LIST@7..19
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..9 " "
-      ATTR@9..17
-        POUND@9..10 "#"
-        BANG@10..11 "!"
-        L_BRACK@11..12 "["
-        META@12..16
-          PATH@12..16
-            PATH_SEGMENT@12..16
-              NAME_REF@12..16
-                IDENT@12..16 "attr"
-        R_BRACK@16..17 "]"
-      WHITESPACE@17..18 " "
-      R_CURLY@18..19 "}"
-  WHITESPACE@19..20 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      ATTR
+        POUND "#"
+        BANG "!"
+        L_BRACK "["
+        META
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "attr"
+        R_BRACK "]"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.txt b/crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.txt
deleted file mode 100644
index 9cb3c8a5c3b..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0177_assoc_item_list_inner_attrs.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      ATTR
-        POUND "#"
-        BANG "!"
-        L_BRACK "["
-        META
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "attr"
-        R_BRACK "]"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.rast b/crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.rast
index 929182f8ee7..4443d9d1426 100644
--- a/crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.rast
+++ b/crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.rast
@@ -1,96 +1,96 @@
-SOURCE_FILE@0..64
-  TRAIT@0..32
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "Z"
-    GENERIC_PARAM_LIST@7..10
-      L_ANGLE@7..8 "<"
-      TYPE_PARAM@8..9
-        NAME@8..9
-          IDENT@8..9 "U"
-      R_ANGLE@9..10 ">"
-    WHITESPACE@10..11 " "
-    EQ@11..12 "="
-    WHITESPACE@12..13 " "
-    TYPE_BOUND_LIST@13..17
-      TYPE_BOUND@13..17
-        PATH_TYPE@13..17
-          PATH@13..17
-            PATH_SEGMENT@13..17
-              NAME_REF@13..14
-                IDENT@13..14 "T"
-              GENERIC_ARG_LIST@14..17
-                L_ANGLE@14..15 "<"
-                TYPE_ARG@15..16
-                  PATH_TYPE@15..16
-                    PATH@15..16
-                      PATH_SEGMENT@15..16
-                        NAME_REF@15..16
-                          IDENT@15..16 "U"
-                R_ANGLE@16..17 ">"
-    WHITESPACE@17..18 " "
-    WHERE_CLAUSE@18..31
-      WHERE_KW@18..23 "where"
-      WHITESPACE@23..24 " "
-      WHERE_PRED@24..31
-        PATH_TYPE@24..25
-          PATH@24..25
-            PATH_SEGMENT@24..25
-              NAME_REF@24..25
-                IDENT@24..25 "U"
-        COLON@25..26 ":"
-        WHITESPACE@26..27 " "
-        TYPE_BOUND_LIST@27..31
-          TYPE_BOUND@27..31
-            PATH_TYPE@27..31
-              PATH@27..31
-                PATH_SEGMENT@27..31
-                  NAME_REF@27..31
-                    IDENT@27..31 "Copy"
-    SEMICOLON@31..32 ";"
-  WHITESPACE@32..33 "\n"
-  TRAIT@33..63
-    TRAIT_KW@33..38 "trait"
-    WHITESPACE@38..39 " "
-    NAME@39..40
-      IDENT@39..40 "Z"
-    GENERIC_PARAM_LIST@40..43
-      L_ANGLE@40..41 "<"
-      TYPE_PARAM@41..42
-        NAME@41..42
-          IDENT@41..42 "U"
-      R_ANGLE@42..43 ">"
-    WHITESPACE@43..44 " "
-    EQ@44..45 "="
-    WHITESPACE@45..46 " "
-    TYPE_BOUND_LIST@46..46
-    WHERE_CLAUSE@46..62
-      WHERE_KW@46..51 "where"
-      WHITESPACE@51..52 " "
-      WHERE_PRED@52..62
-        PATH_TYPE@52..56
-          PATH@52..56
-            PATH_SEGMENT@52..56
-              NAME_REF@52..56
-                IDENT@52..56 "Self"
-        COLON@56..57 ":"
-        WHITESPACE@57..58 " "
-        TYPE_BOUND_LIST@58..62
-          TYPE_BOUND@58..62
-            PATH_TYPE@58..62
-              PATH@58..62
-                PATH_SEGMENT@58..62
-                  NAME_REF@58..59
-                    IDENT@58..59 "T"
-                  GENERIC_ARG_LIST@59..62
-                    L_ANGLE@59..60 "<"
-                    TYPE_ARG@60..61
-                      PATH_TYPE@60..61
-                        PATH@60..61
-                          PATH_SEGMENT@60..61
-                            NAME_REF@60..61
-                              IDENT@60..61 "U"
-                    R_ANGLE@61..62 ">"
-    SEMICOLON@62..63 ";"
-  WHITESPACE@63..64 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "Z"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "U"
+      R_ANGLE ">"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TYPE_BOUND_LIST
+      TYPE_BOUND
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+              GENERIC_ARG_LIST
+                L_ANGLE "<"
+                TYPE_ARG
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "U"
+                R_ANGLE ">"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "U"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "Z"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "U"
+      R_ANGLE ">"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TYPE_BOUND_LIST
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                SELF_TYPE_KW "Self"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "T"
+                  GENERIC_ARG_LIST
+                    L_ANGLE "<"
+                    TYPE_ARG
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "U"
+                    R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.txt b/crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.txt
deleted file mode 100644
index 4443d9d1426..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0177_trait_alias_where_clause.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "Z"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "U"
-      R_ANGLE ">"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TYPE_BOUND_LIST
-      TYPE_BOUND
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-              GENERIC_ARG_LIST
-                L_ANGLE "<"
-                TYPE_ARG
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "U"
-                R_ANGLE ">"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "U"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "Z"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "U"
-      R_ANGLE ">"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TYPE_BOUND_LIST
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                SELF_TYPE_KW "Self"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "T"
-                  GENERIC_ARG_LIST
-                    L_ANGLE "<"
-                    TYPE_ARG
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "U"
-                    R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_use_tree.rast b/crates/parser/test_data/parser/inline/ok/0177_use_tree.rast
index 978d2963e84..98231cdc217 100644
--- a/crates/parser/test_data/parser/inline/ok/0177_use_tree.rast
+++ b/crates/parser/test_data/parser/inline/ok/0177_use_tree.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..32
-  USE@0..31
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..30
-      PATH@4..15
-        PATH@4..9
-          PATH_SEGMENT@4..9
-            NAME_REF@4..9
-              IDENT@4..9 "outer"
-        COLON2@9..11 "::"
-        PATH_SEGMENT@11..15
-          NAME_REF@11..15
-            IDENT@11..15 "tree"
-      COLON2@15..17 "::"
-      USE_TREE_LIST@17..30
-        L_CURLY@17..18 "{"
-        USE_TREE@18..29
-          PATH@18..29
-            PATH@18..23
-              PATH_SEGMENT@18..23
-                NAME_REF@18..23
-                  IDENT@18..23 "inner"
-            COLON2@23..25 "::"
-            PATH_SEGMENT@25..29
-              NAME_REF@25..29
-                IDENT@25..29 "tree"
-        R_CURLY@29..30 "}"
-    SEMICOLON@30..31 ";"
-  WHITESPACE@31..32 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "outer"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "tree"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          PATH
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "inner"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "tree"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_use_tree.txt b/crates/parser/test_data/parser/inline/ok/0177_use_tree.txt
deleted file mode 100644
index 98231cdc217..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0177_use_tree.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "outer"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "tree"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          PATH
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "inner"
-            COLON2 "::"
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "tree"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_use_tree_path.rast b/crates/parser/test_data/parser/inline/ok/0177_use_tree_path.rast
index 24086b5a1df..ede22dbaf5d 100644
--- a/crates/parser/test_data/parser/inline/ok/0177_use_tree_path.rast
+++ b/crates/parser/test_data/parser/inline/ok/0177_use_tree_path.rast
@@ -1,72 +1,72 @@
-SOURCE_FILE@0..75
-  USE@0..10
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..9
-      PATH@4..9
-        PATH_SEGMENT@4..9
-          COLON2@4..6 "::"
-          NAME_REF@6..9
-            IDENT@6..9 "std"
-    SEMICOLON@9..10 ";"
-  WHITESPACE@10..11 "\n"
-  USE@11..32
-    USE_KW@11..14 "use"
-    WHITESPACE@14..15 " "
-    USE_TREE@15..31
-      PATH@15..31
-        PATH@15..18
-          PATH_SEGMENT@15..18
-            NAME_REF@15..18
-              IDENT@15..18 "std"
-        COLON2@18..20 "::"
-        PATH_SEGMENT@20..31
-          NAME_REF@20..31
-            IDENT@20..31 "collections"
-    SEMICOLON@31..32 ";"
-  WHITESPACE@32..34 "\n\n"
-  USE@34..46
-    USE_KW@34..37 "use"
-    WHITESPACE@37..38 " "
-    USE_TREE@38..45
-      PATH@38..45
-        PATH@38..42
-          PATH_SEGMENT@38..42
-            NAME_REF@38..42
-              SELF_KW@38..42 "self"
-        COLON2@42..44 "::"
-        PATH_SEGMENT@44..45
-          NAME_REF@44..45
-            IDENT@44..45 "m"
-    SEMICOLON@45..46 ";"
-  WHITESPACE@46..47 "\n"
-  USE@47..60
-    USE_KW@47..50 "use"
-    WHITESPACE@50..51 " "
-    USE_TREE@51..59
-      PATH@51..59
-        PATH@51..56
-          PATH_SEGMENT@51..56
-            NAME_REF@51..56
-              SUPER_KW@51..56 "super"
-        COLON2@56..58 "::"
-        PATH_SEGMENT@58..59
-          NAME_REF@58..59
-            IDENT@58..59 "m"
-    SEMICOLON@59..60 ";"
-  WHITESPACE@60..61 "\n"
-  USE@61..74
-    USE_KW@61..64 "use"
-    WHITESPACE@64..65 " "
-    USE_TREE@65..73
-      PATH@65..73
-        PATH@65..70
-          PATH_SEGMENT@65..70
-            NAME_REF@65..70
-              CRATE_KW@65..70 "crate"
-        COLON2@70..72 "::"
-        PATH_SEGMENT@72..73
-          NAME_REF@72..73
-            IDENT@72..73 "m"
-    SEMICOLON@73..74 ";"
-  WHITESPACE@74..75 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          COLON2 "::"
+          NAME_REF
+            IDENT "std"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "std"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "collections"
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              SELF_KW "self"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "m"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              SUPER_KW "super"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "m"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              CRATE_KW "crate"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "m"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0177_use_tree_path.txt b/crates/parser/test_data/parser/inline/ok/0177_use_tree_path.txt
deleted file mode 100644
index ede22dbaf5d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0177_use_tree_path.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          COLON2 "::"
-          NAME_REF
-            IDENT "std"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "std"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "collections"
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              SELF_KW "self"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "m"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              SUPER_KW "super"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "m"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              CRATE_KW "crate"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "m"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast b/crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast
index 620a792306f..ed3cafae13b 100644
--- a/crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast
+++ b/crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast
@@ -1,20 +1,20 @@
-SOURCE_FILE@0..24
-  USE@0..23
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..22
-      PATH@4..7
-        PATH_SEGMENT@4..7
-          NAME_REF@4..7
-            IDENT@4..7 "std"
-      COLON2@7..9 "::"
-      USE_TREE_LIST@9..22
-        L_CURLY@9..10 "{"
-        USE_TREE@10..21
-          PATH@10..21
-            PATH_SEGMENT@10..21
-              NAME_REF@10..21
-                IDENT@10..21 "collections"
-        R_CURLY@21..22 "}"
-    SEMICOLON@22..23 ";"
-  WHITESPACE@23..24 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "std"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "collections"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.txt b/crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.txt
deleted file mode 100644
index ed3cafae13b..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0178_use_tree_path_use_tree.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "std"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "collections"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.rast b/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.rast
index 4b132f2ded5..b4dc1f25d9a 100644
--- a/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.rast
+++ b/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.rast
@@ -1,26 +1,26 @@
-SOURCE_FILE@0..25
-  USE@0..8
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..7
-      COLON2@4..6 "::"
-      STAR@6..7 "*"
-    SEMICOLON@7..8 ";"
-  WHITESPACE@8..9 "\n"
-  USE@9..24
-    USE_KW@9..12 "use"
-    WHITESPACE@12..13 " "
-    USE_TREE@13..23
-      PATH@13..16
-        PATH_SEGMENT@13..16
-          NAME_REF@13..16
-            IDENT@13..16 "std"
-      COLON2@16..18 "::"
-      USE_TREE_LIST@18..23
-        L_CURLY@18..19 "{"
-        USE_TREE@19..22
-          COLON2@19..21 "::"
-          STAR@21..22 "*"
-        R_CURLY@22..23 "}"
-    SEMICOLON@23..24 ";"
-  WHITESPACE@24..25 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      COLON2 "::"
+      STAR "*"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "std"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          COLON2 "::"
+          STAR "*"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.txt b/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.txt
deleted file mode 100644
index b4dc1f25d9a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      COLON2 "::"
-      STAR "*"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "std"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          COLON2 "::"
-          STAR "*"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.rast b/crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.rast
index 93384d6ed7f..d255adb5a47 100644
--- a/crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.rast
+++ b/crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.rast
@@ -1,13 +1,13 @@
-SOURCE_FILE@0..12
-  USE@0..11
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..10
-      PATH@4..7
-        PATH_SEGMENT@4..7
-          NAME_REF@4..7
-            IDENT@4..7 "std"
-      COLON2@7..9 "::"
-      STAR@9..10 "*"
-    SEMICOLON@10..11 ";"
-  WHITESPACE@11..12 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "std"
+      COLON2 "::"
+      STAR "*"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.txt b/crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.txt
deleted file mode 100644
index d255adb5a47..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0180_use_tree_path_star.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "std"
-      COLON2 "::"
-      STAR "*"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.rast b/crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.rast
index 4564f43e0fa..28a216e8730 100644
--- a/crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.rast
+++ b/crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.rast
@@ -1,46 +1,46 @@
-SOURCE_FILE@0..40
-  FN@0..39
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    GENERIC_PARAM_LIST@6..34
-      L_ANGLE@6..7 "<"
-      LIFETIME_PARAM@7..20
-        ATTR@7..17
-          POUND@7..8 "#"
-          L_BRACK@8..9 "["
-          META@9..16
-            PATH@9..16
-              PATH_SEGMENT@9..16
-                NAME_REF@9..16
-                  IDENT@9..16 "lt_attr"
-          R_BRACK@16..17 "]"
-        WHITESPACE@17..18 " "
-        LIFETIME@18..20
-          LIFETIME_IDENT@18..20 "'a"
-      COMMA@20..21 ","
-      WHITESPACE@21..22 " "
-      TYPE_PARAM@22..33
-        ATTR@22..31
-          POUND@22..23 "#"
-          L_BRACK@23..24 "["
-          META@24..30
-            PATH@24..30
-              PATH_SEGMENT@24..30
-                NAME_REF@24..30
-                  IDENT@24..30 "t_attr"
-          R_BRACK@30..31 "]"
-        WHITESPACE@31..32 " "
-        NAME@32..33
-          IDENT@32..33 "T"
-      R_ANGLE@33..34 ">"
-    PARAM_LIST@34..36
-      L_PAREN@34..35 "("
-      R_PAREN@35..36 ")"
-    WHITESPACE@36..37 " "
-    BLOCK_EXPR@37..39
-      STMT_LIST@37..39
-        L_CURLY@37..38 "{"
-        R_CURLY@38..39 "}"
-  WHITESPACE@39..40 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "lt_attr"
+          R_BRACK "]"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'a"
+      COMMA ","
+      WHITESPACE " "
+      TYPE_PARAM
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "t_attr"
+          R_BRACK "]"
+        WHITESPACE " "
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.txt b/crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.txt
deleted file mode 100644
index 28a216e8730..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0181_generic_param_attribute.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "lt_attr"
-          R_BRACK "]"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'a"
-      COMMA ","
-      WHITESPACE " "
-      TYPE_PARAM
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "t_attr"
-          R_BRACK "]"
-        WHITESPACE " "
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0181_use_item.rast b/crates/parser/test_data/parser/inline/ok/0181_use_item.rast
index 3952fcf09e3..25761ed8c77 100644
--- a/crates/parser/test_data/parser/inline/ok/0181_use_item.rast
+++ b/crates/parser/test_data/parser/inline/ok/0181_use_item.rast
@@ -1,16 +1,16 @@
-SOURCE_FILE@0..22
-  USE@0..21
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..20
-      PATH@4..20
-        PATH@4..7
-          PATH_SEGMENT@4..7
-            NAME_REF@4..7
-              IDENT@4..7 "std"
-        COLON2@7..9 "::"
-        PATH_SEGMENT@9..20
-          NAME_REF@9..20
-            IDENT@9..20 "collections"
-    SEMICOLON@20..21 ";"
-  WHITESPACE@21..22 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "std"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "collections"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0181_use_item.txt b/crates/parser/test_data/parser/inline/ok/0181_use_item.txt
deleted file mode 100644
index 25761ed8c77..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0181_use_item.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "std"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "collections"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0182_lifetime_param.rast b/crates/parser/test_data/parser/inline/ok/0182_lifetime_param.rast
index 704c991fe14..c595031f358 100644
--- a/crates/parser/test_data/parser/inline/ok/0182_lifetime_param.rast
+++ b/crates/parser/test_data/parser/inline/ok/0182_lifetime_param.rast
@@ -1,25 +1,25 @@
-SOURCE_FILE@0..18
-  FN@0..17
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    GENERIC_PARAM_LIST@4..12
-      L_ANGLE@4..5 "<"
-      LIFETIME_PARAM@5..11
-        LIFETIME@5..7
-          LIFETIME_IDENT@5..7 "'a"
-        COLON@7..8 ":"
-        WHITESPACE@8..9 " "
-        LIFETIME@9..11
-          LIFETIME_IDENT@9..11 "'b"
-      R_ANGLE@11..12 ">"
-    PARAM_LIST@12..14
-      L_PAREN@12..13 "("
-      R_PAREN@13..14 ")"
-    WHITESPACE@14..15 " "
-    BLOCK_EXPR@15..17
-      STMT_LIST@15..17
-        L_CURLY@15..16 "{"
-        R_CURLY@16..17 "}"
-  WHITESPACE@17..18 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'b"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0182_lifetime_param.txt b/crates/parser/test_data/parser/inline/ok/0182_lifetime_param.txt
deleted file mode 100644
index c595031f358..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0182_lifetime_param.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'b"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0183_const_arg_block.rast b/crates/parser/test_data/parser/inline/ok/0183_const_arg_block.rast
index 6bbb6c40dde..ea8866da277 100644
--- a/crates/parser/test_data/parser/inline/ok/0183_const_arg_block.rast
+++ b/crates/parser/test_data/parser/inline/ok/0183_const_arg_block.rast
@@ -1,32 +1,32 @@
-SOURCE_FILE@0..22
-  TYPE_ALIAS@0..21
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..20
-      PATH@9..20
-        PATH_SEGMENT@9..20
-          NAME_REF@9..10
-            IDENT@9..10 "S"
-          GENERIC_ARG_LIST@10..20
-            L_ANGLE@10..11 "<"
-            CONST_ARG@11..19
-              BLOCK_EXPR@11..19
-                STMT_LIST@11..19
-                  L_CURLY@11..12 "{"
-                  BIN_EXPR@12..18
-                    LITERAL@12..14
-                      INT_NUMBER@12..14 "90"
-                    WHITESPACE@14..15 " "
-                    PLUS@15..16 "+"
-                    WHITESPACE@16..17 " "
-                    LITERAL@17..18
-                      INT_NUMBER@17..18 "2"
-                  R_CURLY@18..19 "}"
-            R_ANGLE@19..20 ">"
-    SEMICOLON@20..21 ";"
-  WHITESPACE@21..22 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            CONST_ARG
+              BLOCK_EXPR
+                STMT_LIST
+                  L_CURLY "{"
+                  BIN_EXPR
+                    LITERAL
+                      INT_NUMBER "90"
+                    WHITESPACE " "
+                    PLUS "+"
+                    WHITESPACE " "
+                    LITERAL
+                      INT_NUMBER "2"
+                  R_CURLY "}"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0183_const_arg_block.txt b/crates/parser/test_data/parser/inline/ok/0183_const_arg_block.txt
deleted file mode 100644
index ea8866da277..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0183_const_arg_block.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            CONST_ARG
-              BLOCK_EXPR
-                STMT_LIST
-                  L_CURLY "{"
-                  BIN_EXPR
-                    LITERAL
-                      INT_NUMBER "90"
-                    WHITESPACE " "
-                    PLUS "+"
-                    WHITESPACE " "
-                    LITERAL
-                      INT_NUMBER "2"
-                  R_CURLY "}"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0183_type_param.rast b/crates/parser/test_data/parser/inline/ok/0183_type_param.rast
index 450bccff330..becb77e042f 100644
--- a/crates/parser/test_data/parser/inline/ok/0183_type_param.rast
+++ b/crates/parser/test_data/parser/inline/ok/0183_type_param.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..20
-  FN@0..19
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    GENERIC_PARAM_LIST@4..14
-      L_ANGLE@4..5 "<"
-      TYPE_PARAM@5..13
-        NAME@5..6
-          IDENT@5..6 "T"
-        COLON@6..7 ":"
-        WHITESPACE@7..8 " "
-        TYPE_BOUND_LIST@8..13
-          TYPE_BOUND@8..13
-            PATH_TYPE@8..13
-              PATH@8..13
-                PATH_SEGMENT@8..13
-                  NAME_REF@8..13
-                    IDENT@8..13 "Clone"
-      R_ANGLE@13..14 ">"
-    PARAM_LIST@14..16
-      L_PAREN@14..15 "("
-      R_PAREN@15..16 ")"
-    WHITESPACE@16..17 " "
-    BLOCK_EXPR@17..19
-      STMT_LIST@17..19
-        L_CURLY@17..18 "{"
-        R_CURLY@18..19 "}"
-  WHITESPACE@19..20 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0183_type_param.txt b/crates/parser/test_data/parser/inline/ok/0183_type_param.txt
deleted file mode 100644
index becb77e042f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0183_type_param.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0184_const_arg.rast b/crates/parser/test_data/parser/inline/ok/0184_const_arg.rast
index 15bfcb26efb..1e030071723 100644
--- a/crates/parser/test_data/parser/inline/ok/0184_const_arg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0184_const_arg.rast
@@ -1,22 +1,22 @@
-SOURCE_FILE@0..16
-  TYPE_ALIAS@0..15
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..14
-      PATH@9..14
-        PATH_SEGMENT@9..14
-          NAME_REF@9..10
-            IDENT@9..10 "S"
-          GENERIC_ARG_LIST@10..14
-            L_ANGLE@10..11 "<"
-            CONST_ARG@11..13
-              LITERAL@11..13
-                INT_NUMBER@11..13 "92"
-            R_ANGLE@13..14 ">"
-    SEMICOLON@14..15 ";"
-  WHITESPACE@15..16 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            CONST_ARG
+              LITERAL
+                INT_NUMBER "92"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0184_const_arg.txt b/crates/parser/test_data/parser/inline/ok/0184_const_arg.txt
deleted file mode 100644
index 1e030071723..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0184_const_arg.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            CONST_ARG
-              LITERAL
-                INT_NUMBER "92"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0184_generic_param_list.rast b/crates/parser/test_data/parser/inline/ok/0184_generic_param_list.rast
index 450bccff330..becb77e042f 100644
--- a/crates/parser/test_data/parser/inline/ok/0184_generic_param_list.rast
+++ b/crates/parser/test_data/parser/inline/ok/0184_generic_param_list.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..20
-  FN@0..19
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    GENERIC_PARAM_LIST@4..14
-      L_ANGLE@4..5 "<"
-      TYPE_PARAM@5..13
-        NAME@5..6
-          IDENT@5..6 "T"
-        COLON@6..7 ":"
-        WHITESPACE@7..8 " "
-        TYPE_BOUND_LIST@8..13
-          TYPE_BOUND@8..13
-            PATH_TYPE@8..13
-              PATH@8..13
-                PATH_SEGMENT@8..13
-                  NAME_REF@8..13
-                    IDENT@8..13 "Clone"
-      R_ANGLE@13..14 ">"
-    PARAM_LIST@14..16
-      L_PAREN@14..15 "("
-      R_PAREN@15..16 ")"
-    WHITESPACE@16..17 " "
-    BLOCK_EXPR@17..19
-      STMT_LIST@17..19
-        L_CURLY@17..18 "{"
-        R_CURLY@18..19 "}"
-  WHITESPACE@19..20 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0184_generic_param_list.txt b/crates/parser/test_data/parser/inline/ok/0184_generic_param_list.txt
deleted file mode 100644
index becb77e042f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0184_generic_param_list.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.rast b/crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.rast
index 24519dc8419..f2e4e01069c 100644
--- a/crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.rast
+++ b/crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.rast
@@ -1,37 +1,37 @@
-SOURCE_FILE@0..45
-  TYPE_ALIAS@0..44
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..43
-      PATH@9..43
-        PATH_SEGMENT@9..43
-          NAME_REF@9..26
-            IDENT@9..26 "StreamingIterator"
-          GENERIC_ARG_LIST@26..43
-            L_ANGLE@26..27 "<"
-            ASSOC_TYPE_ARG@27..42
-              NAME_REF@27..31
-                IDENT@27..31 "Item"
-              GENERIC_ARG_LIST@31..35
-                L_ANGLE@31..32 "<"
-                LIFETIME_ARG@32..34
-                  LIFETIME@32..34
-                    LIFETIME_IDENT@32..34 "'a"
-                R_ANGLE@34..35 ">"
-              COLON@35..36 ":"
-              WHITESPACE@36..37 " "
-              TYPE_BOUND_LIST@37..42
-                TYPE_BOUND@37..42
-                  PATH_TYPE@37..42
-                    PATH@37..42
-                      PATH_SEGMENT@37..42
-                        NAME_REF@37..42
-                          IDENT@37..42 "Clone"
-            R_ANGLE@42..43 ">"
-    SEMICOLON@43..44 ";"
-  WHITESPACE@44..45 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "StreamingIterator"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            ASSOC_TYPE_ARG
+              NAME_REF
+                IDENT "Item"
+              GENERIC_ARG_LIST
+                L_ANGLE "<"
+                LIFETIME_ARG
+                  LIFETIME
+                    LIFETIME_IDENT "'a"
+                R_ANGLE ">"
+              COLON ":"
+              WHITESPACE " "
+              TYPE_BOUND_LIST
+                TYPE_BOUND
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Clone"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.txt b/crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.txt
deleted file mode 100644
index f2e4e01069c..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0185_assoc_type_bound.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "StreamingIterator"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            ASSOC_TYPE_ARG
-              NAME_REF
-                IDENT "Item"
-              GENERIC_ARG_LIST
-                L_ANGLE "<"
-                LIFETIME_ARG
-                  LIFETIME
-                    LIFETIME_IDENT "'a"
-                R_ANGLE ">"
-              COLON ":"
-              WHITESPACE " "
-              TYPE_BOUND_LIST
-                TYPE_BOUND
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Clone"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.rast b/crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.rast
index 812d222211c..dbd7ff3061a 100644
--- a/crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.rast
@@ -1,22 +1,22 @@
-SOURCE_FILE@0..21
-  TYPE_ALIAS@0..20
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..19
-      PATH@9..19
-        PATH_SEGMENT@9..19
-          NAME_REF@9..10
-            IDENT@9..10 "S"
-          GENERIC_ARG_LIST@10..19
-            L_ANGLE@10..11 "<"
-            LIFETIME_ARG@11..18
-              LIFETIME@11..18
-                LIFETIME_IDENT@11..18 "'static"
-            R_ANGLE@18..19 ">"
-    SEMICOLON@19..20 ";"
-  WHITESPACE@20..21 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            LIFETIME_ARG
+              LIFETIME
+                LIFETIME_IDENT "'static"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.txt b/crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.txt
deleted file mode 100644
index dbd7ff3061a..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0186_lifetime_arg.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            LIFETIME_ARG
-              LIFETIME
-                LIFETIME_IDENT "'static"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.rast b/crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.rast
index 308cea77f55..97043184036 100644
--- a/crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.rast
+++ b/crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.rast
@@ -1,41 +1,41 @@
-SOURCE_FILE@0..46
-  TYPE_ALIAS@0..45
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..44
-      PATH@9..44
-        PATH_SEGMENT@9..44
-          NAME_REF@9..26
-            IDENT@9..26 "StreamingIterator"
-          GENERIC_ARG_LIST@26..44
-            L_ANGLE@26..27 "<"
-            ASSOC_TYPE_ARG@27..43
-              NAME_REF@27..31
-                IDENT@27..31 "Item"
-              GENERIC_ARG_LIST@31..35
-                L_ANGLE@31..32 "<"
-                LIFETIME_ARG@32..34
-                  LIFETIME@32..34
-                    LIFETIME_IDENT@32..34 "'a"
-                R_ANGLE@34..35 ">"
-              WHITESPACE@35..36 " "
-              EQ@36..37 "="
-              WHITESPACE@37..38 " "
-              REF_TYPE@38..43
-                AMP@38..39 "&"
-                LIFETIME@39..41
-                  LIFETIME_IDENT@39..41 "'a"
-                WHITESPACE@41..42 " "
-                PATH_TYPE@42..43
-                  PATH@42..43
-                    PATH_SEGMENT@42..43
-                      NAME_REF@42..43
-                        IDENT@42..43 "T"
-            R_ANGLE@43..44 ">"
-    SEMICOLON@44..45 ";"
-  WHITESPACE@45..46 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "StreamingIterator"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            ASSOC_TYPE_ARG
+              NAME_REF
+                IDENT "Item"
+              GENERIC_ARG_LIST
+                L_ANGLE "<"
+                LIFETIME_ARG
+                  LIFETIME
+                    LIFETIME_IDENT "'a"
+                R_ANGLE ">"
+              WHITESPACE " "
+              EQ "="
+              WHITESPACE " "
+              REF_TYPE
+                AMP "&"
+                LIFETIME
+                  LIFETIME_IDENT "'a"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "T"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.txt b/crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.txt
deleted file mode 100644
index 97043184036..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0187_assoc_type_eq.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "StreamingIterator"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            ASSOC_TYPE_ARG
-              NAME_REF
-                IDENT "Item"
-              GENERIC_ARG_LIST
-                L_ANGLE "<"
-                LIFETIME_ARG
-                  LIFETIME
-                    LIFETIME_IDENT "'a"
-                R_ANGLE ">"
-              WHITESPACE " "
-              EQ "="
-              WHITESPACE " "
-              REF_TYPE
-                AMP "&"
-                LIFETIME
-                  LIFETIME_IDENT "'a"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "T"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast b/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast
index 8da0121001e..440dfb06a38 100644
--- a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast
+++ b/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast
@@ -1,37 +1,37 @@
-SOURCE_FILE@0..35
-  STRUCT@0..34
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    GENERIC_PARAM_LIST@8..33
-      L_ANGLE@8..9 "<"
-      CONST_PARAM@9..32
-        CONST_KW@9..14 "const"
-        WHITESPACE@14..15 " "
-        NAME@15..16
-          IDENT@15..16 "N"
-        COLON@16..17 ":"
-        WHITESPACE@17..18 " "
-        PATH_TYPE@18..21
-          PATH@18..21
-            PATH_SEGMENT@18..21
-              NAME_REF@18..21
-                IDENT@18..21 "u32"
-        WHITESPACE@21..22 " "
-        EQ@22..23 "="
-        WHITESPACE@23..24 " "
-        CONST_ARG@24..32
-          PATH_EXPR@24..32
-            PATH@24..32
-              PATH@24..27
-                PATH_SEGMENT@24..27
-                  NAME_REF@24..27
-                    IDENT@24..27 "u32"
-              COLON2@27..29 "::"
-              PATH_SEGMENT@29..32
-                NAME_REF@29..32
-                  IDENT@29..32 "MAX"
-      R_ANGLE@32..33 ">"
-    SEMICOLON@33..34 ";"
-  WHITESPACE@34..35 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      CONST_PARAM
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "N"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        CONST_ARG
+          PATH_EXPR
+            PATH
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u32"
+              COLON2 "::"
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "MAX"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.txt b/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.txt
deleted file mode 100644
index 440dfb06a38..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      CONST_PARAM
-        CONST_KW "const"
-        WHITESPACE " "
-        NAME
-          IDENT "N"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        CONST_ARG
-          PATH_EXPR
-            PATH
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u32"
-              COLON2 "::"
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "MAX"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.rast b/crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.rast
index a94cd256aaa..03d414e3366 100644
--- a/crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.rast
+++ b/crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.rast
@@ -1,27 +1,27 @@
-SOURCE_FILE@0..33
-  TYPE_ALIAS@0..32
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..31
-      PATH@9..31
-        PATH_SEGMENT@9..31
-          NAME_REF@9..10
-            IDENT@9..10 "S"
-          GENERIC_ARG_LIST@10..31
-            L_ANGLE@10..11 "<"
-            CONST_ARG@11..18
-              LITERAL@11..18
-                STRING@11..18 "\"hello\""
-            COMMA@18..19 ","
-            WHITESPACE@19..20 " "
-            CONST_ARG@20..30
-              LITERAL@20..30
-                INT_NUMBER@20..30 "0xdeadbeef"
-            R_ANGLE@30..31 ">"
-    SEMICOLON@31..32 ";"
-  WHITESPACE@32..33 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            CONST_ARG
+              LITERAL
+                STRING "\"hello\""
+            COMMA ","
+            WHITESPACE " "
+            CONST_ARG
+              LITERAL
+                INT_NUMBER "0xdeadbeef"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.txt b/crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.txt
deleted file mode 100644
index 03d414e3366..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0189_const_arg_literal.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            CONST_ARG
-              LITERAL
-                STRING "\"hello\""
-            COMMA ","
-            WHITESPACE " "
-            CONST_ARG
-              LITERAL
-                INT_NUMBER "0xdeadbeef"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0190_generic_arg.rast b/crates/parser/test_data/parser/inline/ok/0190_generic_arg.rast
index c41d29071bd..5a01f154bad 100644
--- a/crates/parser/test_data/parser/inline/ok/0190_generic_arg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0190_generic_arg.rast
@@ -1,25 +1,25 @@
-SOURCE_FILE@0..17
-  TYPE_ALIAS@0..16
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..15
-      PATH@9..15
-        PATH_SEGMENT@9..15
-          NAME_REF@9..10
-            IDENT@9..10 "S"
-          GENERIC_ARG_LIST@10..15
-            L_ANGLE@10..11 "<"
-            TYPE_ARG@11..14
-              PATH_TYPE@11..14
-                PATH@11..14
-                  PATH_SEGMENT@11..14
-                    NAME_REF@11..14
-                      IDENT@11..14 "i32"
-            R_ANGLE@14..15 ">"
-    SEMICOLON@15..16 ";"
-  WHITESPACE@16..17 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            TYPE_ARG
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i32"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0190_generic_arg.txt b/crates/parser/test_data/parser/inline/ok/0190_generic_arg.txt
deleted file mode 100644
index 5a01f154bad..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0190_generic_arg.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            TYPE_ARG
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i32"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.rast b/crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.rast
index 87ff6cb7bf2..e504badbd3d 100644
--- a/crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.rast
+++ b/crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.rast
@@ -1,24 +1,24 @@
-SOURCE_FILE@0..17
-  TYPE_ALIAS@0..16
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..15
-      PATH@9..15
-        PATH_SEGMENT@9..15
-          NAME_REF@9..10
-            IDENT@9..10 "S"
-          GENERIC_ARG_LIST@10..15
-            L_ANGLE@10..11 "<"
-            CONST_ARG@11..14
-              PREFIX_EXPR@11..14
-                MINUS@11..12 "-"
-                LITERAL@12..14
-                  INT_NUMBER@12..14 "92"
-            R_ANGLE@14..15 ">"
-    SEMICOLON@15..16 ";"
-  WHITESPACE@16..17 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            CONST_ARG
+              PREFIX_EXPR
+                MINUS "-"
+                LITERAL
+                  INT_NUMBER "92"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.txt b/crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.txt
deleted file mode 100644
index e504badbd3d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0191_const_arg_negative_number.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            CONST_ARG
-              PREFIX_EXPR
-                MINUS "-"
-                LITERAL
-                  INT_NUMBER "92"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.rast b/crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.rast
index 7c44c6b82d4..aea23e463da 100644
--- a/crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.rast
+++ b/crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.rast
@@ -1,22 +1,22 @@
-SOURCE_FILE@0..18
-  TYPE_ALIAS@0..17
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "T"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..16
-      PATH@9..16
-        PATH_SEGMENT@9..16
-          NAME_REF@9..10
-            IDENT@9..10 "S"
-          GENERIC_ARG_LIST@10..16
-            L_ANGLE@10..11 "<"
-            CONST_ARG@11..15
-              LITERAL@11..15
-                TRUE_KW@11..15 "true"
-            R_ANGLE@15..16 ">"
-    SEMICOLON@16..17 ";"
-  WHITESPACE@17..18 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            CONST_ARG
+              LITERAL
+                TRUE_KW "true"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.txt b/crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.txt
deleted file mode 100644
index aea23e463da..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0192_const_arg_bool_literal.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            CONST_ARG
-              LITERAL
-                TRUE_KW "true"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.rast b/crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.rast
index dcb7b1c4593..1b639915878 100644
--- a/crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.rast
+++ b/crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..23
-  FN@0..22
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..22
-      STMT_LIST@7..22
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        LET_STMT@9..20
-          LET_KW@9..12 "let"
-          WHITESPACE@12..13 " "
-          IDENT_PAT@13..14
-            NAME@13..14
-              IDENT@13..14 "x"
-          WHITESPACE@14..15 " "
-          EQ@15..16 "="
-          WHITESPACE@16..17 " "
-          LITERAL@17..19
-            INT_NUMBER@17..19 "92"
-          SEMICOLON@19..20 ";"
-        WHITESPACE@20..21 " "
-        R_CURLY@21..22 "}"
-  WHITESPACE@22..23 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.txt b/crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.txt
deleted file mode 100644
index 1b639915878..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0193_let_stmt_init.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0194_let_else.rast b/crates/parser/test_data/parser/inline/ok/0194_let_else.rast
index ed0613a38f9..ce7f1a35e8d 100644
--- a/crates/parser/test_data/parser/inline/ok/0194_let_else.rast
+++ b/crates/parser/test_data/parser/inline/ok/0194_let_else.rast
@@ -1,51 +1,51 @@
-SOURCE_FILE@0..46
-  FN@0..45
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..45
-      STMT_LIST@7..45
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        LET_STMT@9..43
-          LET_KW@9..12 "let"
-          WHITESPACE@12..13 " "
-          TUPLE_STRUCT_PAT@13..20
-            PATH@13..17
-              PATH_SEGMENT@13..17
-                NAME_REF@13..17
-                  IDENT@13..17 "Some"
-            L_PAREN@17..18 "("
-            IDENT_PAT@18..19
-              NAME@18..19
-                IDENT@18..19 "x"
-            R_PAREN@19..20 ")"
-          WHITESPACE@20..21 " "
-          EQ@21..22 "="
-          WHITESPACE@22..23 " "
-          PATH_EXPR@23..26
-            PATH@23..26
-              PATH_SEGMENT@23..26
-                NAME_REF@23..26
-                  IDENT@23..26 "opt"
-          WHITESPACE@26..27 " "
-          LET_ELSE@27..42
-            ELSE_KW@27..31 "else"
-            WHITESPACE@31..32 " "
-            BLOCK_EXPR@32..42
-              STMT_LIST@32..42
-                L_CURLY@32..33 "{"
-                WHITESPACE@33..34 " "
-                RETURN_EXPR@34..40
-                  RETURN_KW@34..40 "return"
-                WHITESPACE@40..41 " "
-                R_CURLY@41..42 "}"
-          SEMICOLON@42..43 ";"
-        WHITESPACE@43..44 " "
-        R_CURLY@44..45 "}"
-  WHITESPACE@45..46 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_STRUCT_PAT
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "Some"
+            L_PAREN "("
+            IDENT_PAT
+              NAME
+                IDENT "x"
+            R_PAREN ")"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "opt"
+          WHITESPACE " "
+          LET_ELSE
+            ELSE_KW "else"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                RETURN_EXPR
+                  RETURN_KW "return"
+                WHITESPACE " "
+                R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0194_let_else.txt b/crates/parser/test_data/parser/inline/ok/0194_let_else.txt
deleted file mode 100644
index ce7f1a35e8d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0194_let_else.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_STRUCT_PAT
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "Some"
-            L_PAREN "("
-            IDENT_PAT
-              NAME
-                IDENT "x"
-            R_PAREN ")"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "opt"
-          WHITESPACE " "
-          LET_ELSE
-            ELSE_KW "else"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                RETURN_EXPR
-                  RETURN_KW "return"
-                WHITESPACE " "
-                R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.rast b/crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.rast
index 679b0c4ce94..ac8e1d93cb6 100644
--- a/crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.rast
+++ b/crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.rast
@@ -1,31 +1,31 @@
-SOURCE_FILE@0..23
-  FN@0..22
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..22
-      STMT_LIST@7..22
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..9 " "
-        LET_STMT@9..20
-          LET_KW@9..12 "let"
-          WHITESPACE@12..13 " "
-          IDENT_PAT@13..14
-            NAME@13..14
-              IDENT@13..14 "x"
-          COLON@14..15 ":"
-          WHITESPACE@15..16 " "
-          PATH_TYPE@16..19
-            PATH@16..19
-              PATH_SEGMENT@16..19
-                NAME_REF@16..19
-                  IDENT@16..19 "i32"
-          SEMICOLON@19..20 ";"
-        WHITESPACE@20..21 " "
-        R_CURLY@21..22 "}"
-  WHITESPACE@22..23 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "i32"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.txt b/crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.txt
deleted file mode 100644
index ac8e1d93cb6..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0194_let_stmt_ascription.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "i32"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.rast b/crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.rast
index 37306ba6ac0..88f8a73450f 100644
--- a/crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.rast
+++ b/crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..30
-  TYPE_ALIAS@0..29
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "A"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    PATH_TYPE@9..28
-      PATH@9..28
-        PATH_SEGMENT@9..28
-          NAME_REF@9..12
-            IDENT@9..12 "Foo"
-          GENERIC_ARG_LIST@12..28
-            L_ANGLE@12..13 "<"
-            TYPE_ARG@13..27
-              MACRO_TYPE@13..27
-                MACRO_CALL@13..27
-                  PATH@13..23
-                    PATH@13..16
-                      PATH_SEGMENT@13..16
-                        NAME_REF@13..16
-                          IDENT@13..16 "syn"
-                    COLON2@16..18 "::"
-                    PATH_SEGMENT@18..23
-                      NAME_REF@18..23
-                        IDENT@18..23 "Token"
-                  BANG@23..24 "!"
-                  TOKEN_TREE@24..27
-                    L_BRACK@24..25 "["
-                    UNDERSCORE@25..26 "_"
-                    R_BRACK@26..27 "]"
-            R_ANGLE@27..28 ">"
-    SEMICOLON@28..29 ";"
-  WHITESPACE@29..30 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+          GENERIC_ARG_LIST
+            L_ANGLE "<"
+            TYPE_ARG
+              MACRO_TYPE
+                MACRO_CALL
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "syn"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Token"
+                  BANG "!"
+                  TOKEN_TREE
+                    L_BRACK "["
+                    UNDERSCORE "_"
+                    R_BRACK "]"
+            R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.txt b/crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.txt
deleted file mode 100644
index 88f8a73450f..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0194_macro_inside_generic_arg.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            TYPE_ARG
-              MACRO_TYPE
-                MACRO_CALL
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "syn"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Token"
-                  BANG "!"
-                  TOKEN_TREE
-                    L_BRACK "["
-                    UNDERSCORE "_"
-                    R_BRACK "]"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.rast b/crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.rast
index 8a1f5903d20..a23ddf69f25 100644
--- a/crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.rast
+++ b/crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..33
-  STRUCT@0..32
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..15
-      IDENT@7..15 "MyStruct"
-    TUPLE_FIELD_LIST@15..31
-      L_PAREN@15..16 "("
-      TUPLE_FIELD@16..30
-        VISIBILITY@16..19
-          PUB_KW@16..19 "pub"
-        WHITESPACE@19..20 " "
-        TUPLE_TYPE@20..30
-          L_PAREN@20..21 "("
-          PATH_TYPE@21..24
-            PATH@21..24
-              PATH_SEGMENT@21..24
-                NAME_REF@21..24
-                  IDENT@21..24 "u32"
-          COMMA@24..25 ","
-          WHITESPACE@25..26 " "
-          PATH_TYPE@26..29
-            PATH@26..29
-              PATH_SEGMENT@26..29
-                NAME_REF@26..29
-                  IDENT@26..29 "u32"
-          R_PAREN@29..30 ")"
-      R_PAREN@30..31 ")"
-    SEMICOLON@31..32 ";"
-  WHITESPACE@32..33 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "MyStruct"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        TUPLE_TYPE
+          L_PAREN "("
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "u32"
+          COMMA ","
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "u32"
+          R_PAREN ")"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.txt b/crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.txt
deleted file mode 100644
index a23ddf69f25..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0196_pub_tuple_field.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "MyStruct"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        TUPLE_TYPE
-          L_PAREN "("
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "u32"
-          COMMA ","
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "u32"
-          R_PAREN ")"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0197_destructuring_assignment_struct_rest_pattern.txt b/crates/parser/test_data/parser/inline/ok/0197_destructuring_assignment_struct_rest_pattern.rast
similarity index 100%
rename from crates/parser/test_data/parser/inline/ok/0197_destructuring_assignment_struct_rest_pattern.txt
rename to crates/parser/test_data/parser/inline/ok/0197_destructuring_assignment_struct_rest_pattern.rast
diff --git a/crates/parser/test_data/parser/inline/ok/0198_destructuring_assignment_wildcard_pat.txt b/crates/parser/test_data/parser/inline/ok/0198_destructuring_assignment_wildcard_pat.rast
similarity index 100%
rename from crates/parser/test_data/parser/inline/ok/0198_destructuring_assignment_wildcard_pat.txt
rename to crates/parser/test_data/parser/inline/ok/0198_destructuring_assignment_wildcard_pat.rast
diff --git a/crates/parser/test_data/parser/ok/0000_empty.rast b/crates/parser/test_data/parser/ok/0000_empty.rast
index 6b234b0b241..40b9ef804c2 100644
--- a/crates/parser/test_data/parser/ok/0000_empty.rast
+++ b/crates/parser/test_data/parser/ok/0000_empty.rast
@@ -1 +1 @@
-SOURCE_FILE@0..0
+SOURCE_FILE
diff --git a/crates/parser/test_data/parser/ok/0000_empty.txt b/crates/parser/test_data/parser/ok/0000_empty.txt
deleted file mode 100644
index 40b9ef804c2..00000000000
--- a/crates/parser/test_data/parser/ok/0000_empty.txt
+++ /dev/null
@@ -1 +0,0 @@
-SOURCE_FILE
diff --git a/crates/parser/test_data/parser/ok/0001_struct_item.rast b/crates/parser/test_data/parser/ok/0001_struct_item.rast
index a171fe7a86d..0e9639f23db 100644
--- a/crates/parser/test_data/parser/ok/0001_struct_item.rast
+++ b/crates/parser/test_data/parser/ok/0001_struct_item.rast
@@ -1,39 +1,39 @@
-SOURCE_FILE@0..32
-  STRUCT@0..31
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    GENERIC_PARAM_LIST@8..17
-      L_ANGLE@8..9 "<"
-      TYPE_PARAM@9..16
-        NAME@9..10
-          IDENT@9..10 "T"
-        COLON@10..11 ":"
-        WHITESPACE@11..12 " "
-        TYPE_BOUND_LIST@12..16
-          TYPE_BOUND@12..16
-            PATH_TYPE@12..16
-              PATH@12..16
-                PATH_SEGMENT@12..16
-                  NAME_REF@12..16
-                    IDENT@12..16 "Copy"
-      R_ANGLE@16..17 ">"
-    WHITESPACE@17..18 " "
-    RECORD_FIELD_LIST@18..31
-      L_CURLY@18..19 "{"
-      WHITESPACE@19..24 "\n    "
-      RECORD_FIELD@24..28
-        NAME@24..25
-          IDENT@24..25 "f"
-        COLON@25..26 ":"
-        WHITESPACE@26..27 " "
-        PATH_TYPE@27..28
-          PATH@27..28
-            PATH_SEGMENT@27..28
-              NAME_REF@27..28
-                IDENT@27..28 "T"
-      COMMA@28..29 ","
-      WHITESPACE@29..30 "\n"
-      R_CURLY@30..31 "}"
-  WHITESPACE@31..32 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+      R_ANGLE ">"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "f"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+      COMMA ","
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0001_struct_item.txt b/crates/parser/test_data/parser/ok/0001_struct_item.txt
deleted file mode 100644
index 0e9639f23db..00000000000
--- a/crates/parser/test_data/parser/ok/0001_struct_item.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-      R_ANGLE ">"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "f"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-      COMMA ","
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0002_struct_item_field.rast b/crates/parser/test_data/parser/ok/0002_struct_item_field.rast
index 362892b91f1..dd52e5850e5 100644
--- a/crates/parser/test_data/parser/ok/0002_struct_item_field.rast
+++ b/crates/parser/test_data/parser/ok/0002_struct_item_field.rast
@@ -1,22 +1,22 @@
-SOURCE_FILE@0..25
-  STRUCT@0..25
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..25
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..15 "\n    "
-      RECORD_FIELD@15..23
-        NAME@15..18
-          IDENT@15..18 "foo"
-        COLON@18..19 ":"
-        WHITESPACE@19..20 " "
-        PATH_TYPE@20..23
-          PATH@20..23
-            PATH_SEGMENT@20..23
-              NAME_REF@20..23
-                IDENT@20..23 "u32"
-      WHITESPACE@23..24 "\n"
-      R_CURLY@24..25 "}"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "foo"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      WHITESPACE "\n"
+      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0002_struct_item_field.txt b/crates/parser/test_data/parser/ok/0002_struct_item_field.txt
deleted file mode 100644
index dd52e5850e5..00000000000
--- a/crates/parser/test_data/parser/ok/0002_struct_item_field.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "foo"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      WHITESPACE "\n"
-      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0004_file_shebang.rast b/crates/parser/test_data/parser/ok/0004_file_shebang.rast
index 67e21df13a1..698957189fe 100644
--- a/crates/parser/test_data/parser/ok/0004_file_shebang.rast
+++ b/crates/parser/test_data/parser/ok/0004_file_shebang.rast
@@ -1,2 +1,2 @@
-SOURCE_FILE@0..20
-  SHEBANG@0..20 "#!/use/bin/env rusti"
+SOURCE_FILE
+  SHEBANG "#!/use/bin/env rusti"
diff --git a/crates/parser/test_data/parser/ok/0004_file_shebang.txt b/crates/parser/test_data/parser/ok/0004_file_shebang.txt
deleted file mode 100644
index 698957189fe..00000000000
--- a/crates/parser/test_data/parser/ok/0004_file_shebang.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-SOURCE_FILE
-  SHEBANG "#!/use/bin/env rusti"
diff --git a/crates/parser/test_data/parser/ok/0005_fn_item.rast b/crates/parser/test_data/parser/ok/0005_fn_item.rast
index 845f9a6f357..756d20e4d6d 100644
--- a/crates/parser/test_data/parser/ok/0005_fn_item.rast
+++ b/crates/parser/test_data/parser/ok/0005_fn_item.rast
@@ -1,16 +1,16 @@
-SOURCE_FILE@0..13
-  FN@0..12
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..12
-      STMT_LIST@9..12
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 "\n"
-        R_CURLY@11..12 "}"
-  WHITESPACE@12..13 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0005_fn_item.txt b/crates/parser/test_data/parser/ok/0005_fn_item.txt
deleted file mode 100644
index 756d20e4d6d..00000000000
--- a/crates/parser/test_data/parser/ok/0005_fn_item.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0006_inner_attributes.rast b/crates/parser/test_data/parser/ok/0006_inner_attributes.rast
index be2d1dc123e..cb63ba80e77 100644
--- a/crates/parser/test_data/parser/ok/0006_inner_attributes.rast
+++ b/crates/parser/test_data/parser/ok/0006_inner_attributes.rast
@@ -1,194 +1,194 @@
-SOURCE_FILE@0..236
-  ATTR@0..8
-    POUND@0..1 "#"
-    BANG@1..2 "!"
-    L_BRACK@2..3 "["
-    META@3..7
-      PATH@3..7
-        PATH_SEGMENT@3..7
-          NAME_REF@3..7
-            IDENT@3..7 "attr"
-    R_BRACK@7..8 "]"
-  WHITESPACE@8..9 "\n"
-  ATTR@9..23
-    POUND@9..10 "#"
-    BANG@10..11 "!"
-    L_BRACK@11..12 "["
-    META@12..22
-      PATH@12..16
-        PATH_SEGMENT@12..16
-          NAME_REF@12..16
-            IDENT@12..16 "attr"
-      TOKEN_TREE@16..22
-        L_PAREN@16..17 "("
-        TRUE_KW@17..21 "true"
-        R_PAREN@21..22 ")"
-    R_BRACK@22..23 "]"
-  WHITESPACE@23..24 "\n"
-  ATTR@24..39
-    POUND@24..25 "#"
-    BANG@25..26 "!"
-    L_BRACK@26..27 "["
-    META@27..38
-      PATH@27..31
-        PATH_SEGMENT@27..31
-          NAME_REF@27..31
-            IDENT@27..31 "attr"
-      TOKEN_TREE@31..38
-        L_PAREN@31..32 "("
-        IDENT@32..37 "ident"
-        R_PAREN@37..38 ")"
-    R_BRACK@38..39 "]"
-  WHITESPACE@39..40 "\n"
-  ATTR@40..116
-    POUND@40..41 "#"
-    BANG@41..42 "!"
-    L_BRACK@42..43 "["
-    META@43..115
-      PATH@43..47
-        PATH_SEGMENT@43..47
-          NAME_REF@43..47
-            IDENT@43..47 "attr"
-      TOKEN_TREE@47..115
-        L_PAREN@47..48 "("
-        IDENT@48..53 "ident"
-        COMMA@53..54 ","
-        WHITESPACE@54..55 " "
-        INT_NUMBER@55..58 "100"
-        COMMA@58..59 ","
-        WHITESPACE@59..60 " "
-        TRUE_KW@60..64 "true"
-        COMMA@64..65 ","
-        WHITESPACE@65..66 " "
-        STRING@66..72 "\"true\""
-        COMMA@72..73 ","
-        WHITESPACE@73..74 " "
-        IDENT@74..79 "ident"
-        WHITESPACE@79..80 " "
-        EQ@80..81 "="
-        WHITESPACE@81..82 " "
-        INT_NUMBER@82..85 "100"
-        COMMA@85..86 ","
-        WHITESPACE@86..87 " "
-        IDENT@87..92 "ident"
-        WHITESPACE@92..93 " "
-        EQ@93..94 "="
-        WHITESPACE@94..95 " "
-        STRING@95..102 "\"hello\""
-        COMMA@102..103 ","
-        WHITESPACE@103..104 " "
-        IDENT@104..109 "ident"
-        TOKEN_TREE@109..114
-          L_PAREN@109..110 "("
-          INT_NUMBER@110..113 "100"
-          R_PAREN@113..114 ")"
-        R_PAREN@114..115 ")"
-    R_BRACK@115..116 "]"
-  WHITESPACE@116..117 "\n"
-  ATTR@117..130
-    POUND@117..118 "#"
-    BANG@118..119 "!"
-    L_BRACK@119..120 "["
-    META@120..129
-      PATH@120..124
-        PATH_SEGMENT@120..124
-          NAME_REF@120..124
-            IDENT@120..124 "attr"
-      TOKEN_TREE@124..129
-        L_PAREN@124..125 "("
-        INT_NUMBER@125..128 "100"
-        R_PAREN@128..129 ")"
-    R_BRACK@129..130 "]"
-  WHITESPACE@130..131 "\n"
-  ATTR@131..155
-    POUND@131..132 "#"
-    BANG@132..133 "!"
-    L_BRACK@133..134 "["
-    META@134..154
-      PATH@134..138
-        PATH_SEGMENT@134..138
-          NAME_REF@134..138
-            IDENT@134..138 "attr"
-      TOKEN_TREE@138..154
-        L_PAREN@138..139 "("
-        IDENT@139..146 "enabled"
-        WHITESPACE@146..147 " "
-        EQ@147..148 "="
-        WHITESPACE@148..149 " "
-        TRUE_KW@149..153 "true"
-        R_PAREN@153..154 ")"
-    R_BRACK@154..155 "]"
-  WHITESPACE@155..156 "\n"
-  ATTR@156..173
-    POUND@156..157 "#"
-    BANG@157..158 "!"
-    L_BRACK@158..159 "["
-    META@159..172
-      PATH@159..166
-        PATH_SEGMENT@159..166
-          NAME_REF@159..166
-            IDENT@159..166 "enabled"
-      TOKEN_TREE@166..172
-        L_PAREN@166..167 "("
-        TRUE_KW@167..171 "true"
-        R_PAREN@171..172 ")"
-    R_BRACK@172..173 "]"
-  WHITESPACE@173..174 "\n"
-  ATTR@174..191
-    POUND@174..175 "#"
-    BANG@175..176 "!"
-    L_BRACK@176..177 "["
-    META@177..190
-      PATH@177..181
-        PATH_SEGMENT@177..181
-          NAME_REF@177..181
-            IDENT@177..181 "attr"
-      TOKEN_TREE@181..190
-        L_PAREN@181..182 "("
-        STRING@182..189 "\"hello\""
-        R_PAREN@189..190 ")"
-    R_BRACK@190..191 "]"
-  WHITESPACE@191..192 "\n"
-  ATTR@192..214
-    POUND@192..193 "#"
-    BANG@193..194 "!"
-    L_BRACK@194..195 "["
-    META@195..213
-      PATH@195..199
-        PATH_SEGMENT@195..199
-          NAME_REF@195..199
-            IDENT@195..199 "repr"
-      TOKEN_TREE@199..213
-        L_PAREN@199..200 "("
-        IDENT@200..201 "C"
-        COMMA@201..202 ","
-        WHITESPACE@202..203 " "
-        IDENT@203..208 "align"
-        WHITESPACE@208..209 " "
-        EQ@209..210 "="
-        WHITESPACE@210..211 " "
-        INT_NUMBER@211..212 "4"
-        R_PAREN@212..213 ")"
-    R_BRACK@213..214 "]"
-  WHITESPACE@214..215 "\n"
-  ATTR@215..236
-    POUND@215..216 "#"
-    BANG@216..217 "!"
-    L_BRACK@217..218 "["
-    META@218..235
-      PATH@218..222
-        PATH_SEGMENT@218..222
-          NAME_REF@218..222
-            IDENT@218..222 "repr"
-      TOKEN_TREE@222..235
-        L_PAREN@222..223 "("
-        IDENT@223..224 "C"
-        COMMA@224..225 ","
-        WHITESPACE@225..226 " "
-        IDENT@226..231 "align"
-        TOKEN_TREE@231..234
-          L_PAREN@231..232 "("
-          INT_NUMBER@232..233 "4"
-          R_PAREN@233..234 ")"
-        R_PAREN@234..235 ")"
-    R_BRACK@235..236 "]"
+SOURCE_FILE
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "attr"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "attr"
+      TOKEN_TREE
+        L_PAREN "("
+        TRUE_KW "true"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "attr"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "ident"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "attr"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "ident"
+        COMMA ","
+        WHITESPACE " "
+        INT_NUMBER "100"
+        COMMA ","
+        WHITESPACE " "
+        TRUE_KW "true"
+        COMMA ","
+        WHITESPACE " "
+        STRING "\"true\""
+        COMMA ","
+        WHITESPACE " "
+        IDENT "ident"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        INT_NUMBER "100"
+        COMMA ","
+        WHITESPACE " "
+        IDENT "ident"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        STRING "\"hello\""
+        COMMA ","
+        WHITESPACE " "
+        IDENT "ident"
+        TOKEN_TREE
+          L_PAREN "("
+          INT_NUMBER "100"
+          R_PAREN ")"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "attr"
+      TOKEN_TREE
+        L_PAREN "("
+        INT_NUMBER "100"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "attr"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "enabled"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        TRUE_KW "true"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "enabled"
+      TOKEN_TREE
+        L_PAREN "("
+        TRUE_KW "true"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "attr"
+      TOKEN_TREE
+        L_PAREN "("
+        STRING "\"hello\""
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "repr"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "C"
+        COMMA ","
+        WHITESPACE " "
+        IDENT "align"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        INT_NUMBER "4"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "repr"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "C"
+        COMMA ","
+        WHITESPACE " "
+        IDENT "align"
+        TOKEN_TREE
+          L_PAREN "("
+          INT_NUMBER "4"
+          R_PAREN ")"
+        R_PAREN ")"
+    R_BRACK "]"
diff --git a/crates/parser/test_data/parser/ok/0006_inner_attributes.txt b/crates/parser/test_data/parser/ok/0006_inner_attributes.txt
deleted file mode 100644
index cb63ba80e77..00000000000
--- a/crates/parser/test_data/parser/ok/0006_inner_attributes.txt
+++ /dev/null
@@ -1,194 +0,0 @@
-SOURCE_FILE
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "attr"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "attr"
-      TOKEN_TREE
-        L_PAREN "("
-        TRUE_KW "true"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "attr"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "ident"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "attr"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "ident"
-        COMMA ","
-        WHITESPACE " "
-        INT_NUMBER "100"
-        COMMA ","
-        WHITESPACE " "
-        TRUE_KW "true"
-        COMMA ","
-        WHITESPACE " "
-        STRING "\"true\""
-        COMMA ","
-        WHITESPACE " "
-        IDENT "ident"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        INT_NUMBER "100"
-        COMMA ","
-        WHITESPACE " "
-        IDENT "ident"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        STRING "\"hello\""
-        COMMA ","
-        WHITESPACE " "
-        IDENT "ident"
-        TOKEN_TREE
-          L_PAREN "("
-          INT_NUMBER "100"
-          R_PAREN ")"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "attr"
-      TOKEN_TREE
-        L_PAREN "("
-        INT_NUMBER "100"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "attr"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "enabled"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        TRUE_KW "true"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "enabled"
-      TOKEN_TREE
-        L_PAREN "("
-        TRUE_KW "true"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "attr"
-      TOKEN_TREE
-        L_PAREN "("
-        STRING "\"hello\""
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "repr"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "C"
-        COMMA ","
-        WHITESPACE " "
-        IDENT "align"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        INT_NUMBER "4"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "repr"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "C"
-        COMMA ","
-        WHITESPACE " "
-        IDENT "align"
-        TOKEN_TREE
-          L_PAREN "("
-          INT_NUMBER "4"
-          R_PAREN ")"
-        R_PAREN ")"
-    R_BRACK "]"
diff --git a/crates/parser/test_data/parser/ok/0007_extern_crate.rast b/crates/parser/test_data/parser/ok/0007_extern_crate.rast
index 4babdba9279..8b9259fd6b9 100644
--- a/crates/parser/test_data/parser/ok/0007_extern_crate.rast
+++ b/crates/parser/test_data/parser/ok/0007_extern_crate.rast
@@ -1,40 +1,40 @@
-SOURCE_FILE@0..69
-  EXTERN_CRATE@0..17
-    EXTERN_KW@0..6 "extern"
-    WHITESPACE@6..7 " "
-    CRATE_KW@7..12 "crate"
-    WHITESPACE@12..13 " "
-    NAME_REF@13..16
-      IDENT@13..16 "foo"
-    SEMICOLON@16..17 ";"
-  WHITESPACE@17..18 "\n"
-  EXTERN_CRATE@18..42
-    EXTERN_KW@18..24 "extern"
-    WHITESPACE@24..25 " "
-    CRATE_KW@25..30 "crate"
-    WHITESPACE@30..31 " "
-    NAME_REF@31..34
-      IDENT@31..34 "foo"
-    WHITESPACE@34..35 " "
-    RENAME@35..41
-      AS_KW@35..37 "as"
-      WHITESPACE@37..38 " "
-      NAME@38..41
-        IDENT@38..41 "bar"
-    SEMICOLON@41..42 ";"
-  WHITESPACE@42..43 "\n"
-  EXTERN_CRATE@43..68
-    EXTERN_KW@43..49 "extern"
-    WHITESPACE@49..50 " "
-    CRATE_KW@50..55 "crate"
-    WHITESPACE@55..56 " "
-    NAME_REF@56..60
-      SELF_KW@56..60 "self"
-    WHITESPACE@60..61 " "
-    RENAME@61..67
-      AS_KW@61..63 "as"
-      WHITESPACE@63..64 " "
-      NAME@64..67
-        IDENT@64..67 "baz"
-    SEMICOLON@67..68 ";"
-  WHITESPACE@68..69 "\n"
+SOURCE_FILE
+  EXTERN_CRATE
+    EXTERN_KW "extern"
+    WHITESPACE " "
+    CRATE_KW "crate"
+    WHITESPACE " "
+    NAME_REF
+      IDENT "foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  EXTERN_CRATE
+    EXTERN_KW "extern"
+    WHITESPACE " "
+    CRATE_KW "crate"
+    WHITESPACE " "
+    NAME_REF
+      IDENT "foo"
+    WHITESPACE " "
+    RENAME
+      AS_KW "as"
+      WHITESPACE " "
+      NAME
+        IDENT "bar"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  EXTERN_CRATE
+    EXTERN_KW "extern"
+    WHITESPACE " "
+    CRATE_KW "crate"
+    WHITESPACE " "
+    NAME_REF
+      SELF_KW "self"
+    WHITESPACE " "
+    RENAME
+      AS_KW "as"
+      WHITESPACE " "
+      NAME
+        IDENT "baz"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0007_extern_crate.txt b/crates/parser/test_data/parser/ok/0007_extern_crate.txt
deleted file mode 100644
index 8b9259fd6b9..00000000000
--- a/crates/parser/test_data/parser/ok/0007_extern_crate.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-SOURCE_FILE
-  EXTERN_CRATE
-    EXTERN_KW "extern"
-    WHITESPACE " "
-    CRATE_KW "crate"
-    WHITESPACE " "
-    NAME_REF
-      IDENT "foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  EXTERN_CRATE
-    EXTERN_KW "extern"
-    WHITESPACE " "
-    CRATE_KW "crate"
-    WHITESPACE " "
-    NAME_REF
-      IDENT "foo"
-    WHITESPACE " "
-    RENAME
-      AS_KW "as"
-      WHITESPACE " "
-      NAME
-        IDENT "bar"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  EXTERN_CRATE
-    EXTERN_KW "extern"
-    WHITESPACE " "
-    CRATE_KW "crate"
-    WHITESPACE " "
-    NAME_REF
-      SELF_KW "self"
-    WHITESPACE " "
-    RENAME
-      AS_KW "as"
-      WHITESPACE " "
-      NAME
-        IDENT "baz"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0008_mod_item.rast b/crates/parser/test_data/parser/ok/0008_mod_item.rast
index e864641834f..adee67181b1 100644
--- a/crates/parser/test_data/parser/ok/0008_mod_item.rast
+++ b/crates/parser/test_data/parser/ok/0008_mod_item.rast
@@ -1,77 +1,77 @@
-SOURCE_FILE@0..100
-  MODULE@0..46
-    MOD_KW@0..3 "mod"
-    WHITESPACE@3..4 " "
-    NAME@4..5
-      IDENT@4..5 "c"
-    WHITESPACE@5..6 " "
-    ITEM_LIST@6..46
-      L_CURLY@6..7 "{"
-      WHITESPACE@7..12 "\n    "
-      FN@12..28
-        FN_KW@12..14 "fn"
-        WHITESPACE@14..15 " "
-        NAME@15..18
-          IDENT@15..18 "foo"
-        PARAM_LIST@18..20
-          L_PAREN@18..19 "("
-          R_PAREN@19..20 ")"
-        WHITESPACE@20..21 " "
-        BLOCK_EXPR@21..28
-          STMT_LIST@21..28
-            L_CURLY@21..22 "{"
-            WHITESPACE@22..27 "\n    "
-            R_CURLY@27..28 "}"
-      WHITESPACE@28..33 "\n    "
-      STRUCT@33..44
-        STRUCT_KW@33..39 "struct"
-        WHITESPACE@39..40 " "
-        NAME@40..41
-          IDENT@40..41 "S"
-        WHITESPACE@41..42 " "
-        RECORD_FIELD_LIST@42..44
-          L_CURLY@42..43 "{"
-          R_CURLY@43..44 "}"
-      WHITESPACE@44..45 "\n"
-      R_CURLY@45..46 "}"
-  WHITESPACE@46..48 "\n\n"
-  MODULE@48..99
-    MOD_KW@48..51 "mod"
-    WHITESPACE@51..52 " "
-    NAME@52..53
-      IDENT@52..53 "d"
-    WHITESPACE@53..54 " "
-    ITEM_LIST@54..99
-      L_CURLY@54..55 "{"
-      WHITESPACE@55..60 "\n    "
-      ATTR@60..68
-        POUND@60..61 "#"
-        BANG@61..62 "!"
-        L_BRACK@62..63 "["
-        META@63..67
-          PATH@63..67
-            PATH_SEGMENT@63..67
-              NAME_REF@63..67
-                IDENT@63..67 "attr"
-        R_BRACK@67..68 "]"
-      WHITESPACE@68..73 "\n    "
-      MODULE@73..79
-        MOD_KW@73..76 "mod"
-        WHITESPACE@76..77 " "
-        NAME@77..78
-          IDENT@77..78 "e"
-        SEMICOLON@78..79 ";"
-      WHITESPACE@79..84 "\n    "
-      MODULE@84..97
-        MOD_KW@84..87 "mod"
-        WHITESPACE@87..88 " "
-        NAME@88..89
-          IDENT@88..89 "f"
-        WHITESPACE@89..90 " "
-        ITEM_LIST@90..97
-          L_CURLY@90..91 "{"
-          WHITESPACE@91..96 "\n    "
-          R_CURLY@96..97 "}"
-      WHITESPACE@97..98 "\n"
-      R_CURLY@98..99 "}"
-  WHITESPACE@99..100 "\n"
+SOURCE_FILE
+  MODULE
+    MOD_KW "mod"
+    WHITESPACE " "
+    NAME
+      IDENT "c"
+    WHITESPACE " "
+    ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      STRUCT
+        STRUCT_KW "struct"
+        WHITESPACE " "
+        NAME
+          IDENT "S"
+        WHITESPACE " "
+        RECORD_FIELD_LIST
+          L_CURLY "{"
+          R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  MODULE
+    MOD_KW "mod"
+    WHITESPACE " "
+    NAME
+      IDENT "d"
+    WHITESPACE " "
+    ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      ATTR
+        POUND "#"
+        BANG "!"
+        L_BRACK "["
+        META
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "attr"
+        R_BRACK "]"
+      WHITESPACE "\n    "
+      MODULE
+        MOD_KW "mod"
+        WHITESPACE " "
+        NAME
+          IDENT "e"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      MODULE
+        MOD_KW "mod"
+        WHITESPACE " "
+        NAME
+          IDENT "f"
+        WHITESPACE " "
+        ITEM_LIST
+          L_CURLY "{"
+          WHITESPACE "\n    "
+          R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0008_mod_item.txt b/crates/parser/test_data/parser/ok/0008_mod_item.txt
deleted file mode 100644
index adee67181b1..00000000000
--- a/crates/parser/test_data/parser/ok/0008_mod_item.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-SOURCE_FILE
-  MODULE
-    MOD_KW "mod"
-    WHITESPACE " "
-    NAME
-      IDENT "c"
-    WHITESPACE " "
-    ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      STRUCT
-        STRUCT_KW "struct"
-        WHITESPACE " "
-        NAME
-          IDENT "S"
-        WHITESPACE " "
-        RECORD_FIELD_LIST
-          L_CURLY "{"
-          R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  MODULE
-    MOD_KW "mod"
-    WHITESPACE " "
-    NAME
-      IDENT "d"
-    WHITESPACE " "
-    ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      ATTR
-        POUND "#"
-        BANG "!"
-        L_BRACK "["
-        META
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "attr"
-        R_BRACK "]"
-      WHITESPACE "\n    "
-      MODULE
-        MOD_KW "mod"
-        WHITESPACE " "
-        NAME
-          IDENT "e"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      MODULE
-        MOD_KW "mod"
-        WHITESPACE " "
-        NAME
-          IDENT "f"
-        WHITESPACE " "
-        ITEM_LIST
-          L_CURLY "{"
-          WHITESPACE "\n    "
-          R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0009_use_item.rast b/crates/parser/test_data/parser/ok/0009_use_item.rast
index 6be1cf9fc83..04a44ef7e4b 100644
--- a/crates/parser/test_data/parser/ok/0009_use_item.rast
+++ b/crates/parser/test_data/parser/ok/0009_use_item.rast
@@ -1,21 +1,21 @@
-SOURCE_FILE@0..19
-  USE@0..8
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..7
-      PATH@4..7
-        PATH_SEGMENT@4..7
-          NAME_REF@4..7
-            IDENT@4..7 "foo"
-    SEMICOLON@7..8 ";"
-  WHITESPACE@8..9 "\n"
-  USE@9..19
-    USE_KW@9..12 "use"
-    WHITESPACE@12..13 " "
-    USE_TREE@13..18
-      PATH@13..18
-        PATH_SEGMENT@13..18
-          COLON2@13..15 "::"
-          NAME_REF@15..18
-            IDENT@15..18 "bar"
-    SEMICOLON@18..19 ";"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          COLON2 "::"
+          NAME_REF
+            IDENT "bar"
+    SEMICOLON ";"
diff --git a/crates/parser/test_data/parser/ok/0009_use_item.txt b/crates/parser/test_data/parser/ok/0009_use_item.txt
deleted file mode 100644
index 04a44ef7e4b..00000000000
--- a/crates/parser/test_data/parser/ok/0009_use_item.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          COLON2 "::"
-          NAME_REF
-            IDENT "bar"
-    SEMICOLON ";"
diff --git a/crates/parser/test_data/parser/ok/0010_use_path_segments.rast b/crates/parser/test_data/parser/ok/0010_use_path_segments.rast
index 4d49e793374..ddadec817b8 100644
--- a/crates/parser/test_data/parser/ok/0010_use_path_segments.rast
+++ b/crates/parser/test_data/parser/ok/0010_use_path_segments.rast
@@ -1,42 +1,42 @@
-SOURCE_FILE@0..40
-  USE@0..20
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..19
-      PATH@4..19
-        PATH@4..14
-          PATH@4..9
-            PATH_SEGMENT@4..9
-              COLON2@4..6 "::"
-              NAME_REF@6..9
-                IDENT@6..9 "foo"
-          COLON2@9..11 "::"
-          PATH_SEGMENT@11..14
-            NAME_REF@11..14
-              IDENT@11..14 "bar"
-        COLON2@14..16 "::"
-        PATH_SEGMENT@16..19
-          NAME_REF@16..19
-            IDENT@16..19 "baz"
-    SEMICOLON@19..20 ";"
-  WHITESPACE@20..21 "\n"
-  USE@21..39
-    USE_KW@21..24 "use"
-    WHITESPACE@24..25 " "
-    USE_TREE@25..38
-      PATH@25..38
-        PATH@25..33
-          PATH@25..28
-            PATH_SEGMENT@25..28
-              NAME_REF@25..28
-                IDENT@25..28 "foo"
-          COLON2@28..30 "::"
-          PATH_SEGMENT@30..33
-            NAME_REF@30..33
-              IDENT@30..33 "bar"
-        COLON2@33..35 "::"
-        PATH_SEGMENT@35..38
-          NAME_REF@35..38
-            IDENT@35..38 "baz"
-    SEMICOLON@38..39 ";"
-  WHITESPACE@39..40 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH
+            PATH_SEGMENT
+              COLON2 "::"
+              NAME_REF
+                IDENT "foo"
+          COLON2 "::"
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "bar"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "baz"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "foo"
+          COLON2 "::"
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "bar"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "baz"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0010_use_path_segments.txt b/crates/parser/test_data/parser/ok/0010_use_path_segments.txt
deleted file mode 100644
index ddadec817b8..00000000000
--- a/crates/parser/test_data/parser/ok/0010_use_path_segments.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH
-            PATH_SEGMENT
-              COLON2 "::"
-              NAME_REF
-                IDENT "foo"
-          COLON2 "::"
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "bar"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "baz"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "foo"
-          COLON2 "::"
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "bar"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "baz"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0011_outer_attribute.rast b/crates/parser/test_data/parser/ok/0011_outer_attribute.rast
index bb35b40f4e7..dbb9bc54da8 100644
--- a/crates/parser/test_data/parser/ok/0011_outer_attribute.rast
+++ b/crates/parser/test_data/parser/ok/0011_outer_attribute.rast
@@ -1,61 +1,61 @@
-SOURCE_FILE@0..60
-  FN@0..34
-    ATTR@0..12
-      POUND@0..1 "#"
-      L_BRACK@1..2 "["
-      META@2..11
-        PATH@2..5
-          PATH_SEGMENT@2..5
-            NAME_REF@2..5
-              IDENT@2..5 "cfg"
-        TOKEN_TREE@5..11
-          L_PAREN@5..6 "("
-          IDENT@6..10 "test"
-          R_PAREN@10..11 ")"
-      R_BRACK@11..12 "]"
-    WHITESPACE@12..13 "\n"
-    ATTR@13..22
-      POUND@13..14 "#"
-      L_BRACK@14..15 "["
-      META@15..21
-        PATH@15..21
-          PATH_SEGMENT@15..21
-            NAME_REF@15..21
-              IDENT@15..21 "Ignore"
-      R_BRACK@21..22 "]"
-    WHITESPACE@22..23 "\n"
-    FN_KW@23..25 "fn"
-    WHITESPACE@25..26 " "
-    NAME@26..29
-      IDENT@26..29 "foo"
-    PARAM_LIST@29..31
-      L_PAREN@29..30 "("
-      R_PAREN@30..31 ")"
-    WHITESPACE@31..32 " "
-    BLOCK_EXPR@32..34
-      STMT_LIST@32..34
-        L_CURLY@32..33 "{"
-        R_CURLY@33..34 "}"
-  WHITESPACE@34..36 "\n\n"
-  MODULE@36..59
-    ATTR@36..52
-      POUND@36..37 "#"
-      L_BRACK@37..38 "["
-      META@38..51
-        PATH@38..42
-          PATH_SEGMENT@38..42
-            NAME_REF@38..42
-              IDENT@38..42 "path"
-        WHITESPACE@42..43 " "
-        EQ@43..44 "="
-        WHITESPACE@44..45 " "
-        LITERAL@45..51
-          STRING@45..51 "\"a.rs\""
-      R_BRACK@51..52 "]"
-    WHITESPACE@52..53 "\n"
-    MOD_KW@53..56 "mod"
-    WHITESPACE@56..57 " "
-    NAME@57..58
-      IDENT@57..58 "b"
-    SEMICOLON@58..59 ";"
-  WHITESPACE@59..60 "\n"
+SOURCE_FILE
+  FN
+    ATTR
+      POUND "#"
+      L_BRACK "["
+      META
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "cfg"
+        TOKEN_TREE
+          L_PAREN "("
+          IDENT "test"
+          R_PAREN ")"
+      R_BRACK "]"
+    WHITESPACE "\n"
+    ATTR
+      POUND "#"
+      L_BRACK "["
+      META
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "Ignore"
+      R_BRACK "]"
+    WHITESPACE "\n"
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  MODULE
+    ATTR
+      POUND "#"
+      L_BRACK "["
+      META
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "path"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        LITERAL
+          STRING "\"a.rs\""
+      R_BRACK "]"
+    WHITESPACE "\n"
+    MOD_KW "mod"
+    WHITESPACE " "
+    NAME
+      IDENT "b"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0011_outer_attribute.txt b/crates/parser/test_data/parser/ok/0011_outer_attribute.txt
deleted file mode 100644
index dbb9bc54da8..00000000000
--- a/crates/parser/test_data/parser/ok/0011_outer_attribute.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-SOURCE_FILE
-  FN
-    ATTR
-      POUND "#"
-      L_BRACK "["
-      META
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "cfg"
-        TOKEN_TREE
-          L_PAREN "("
-          IDENT "test"
-          R_PAREN ")"
-      R_BRACK "]"
-    WHITESPACE "\n"
-    ATTR
-      POUND "#"
-      L_BRACK "["
-      META
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "Ignore"
-      R_BRACK "]"
-    WHITESPACE "\n"
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  MODULE
-    ATTR
-      POUND "#"
-      L_BRACK "["
-      META
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "path"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        LITERAL
-          STRING "\"a.rs\""
-      R_BRACK "]"
-    WHITESPACE "\n"
-    MOD_KW "mod"
-    WHITESPACE " "
-    NAME
-      IDENT "b"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0012_visibility.rast b/crates/parser/test_data/parser/ok/0012_visibility.rast
index e046b0bb1c8..a95bc23016b 100644
--- a/crates/parser/test_data/parser/ok/0012_visibility.rast
+++ b/crates/parser/test_data/parser/ok/0012_visibility.rast
@@ -1,133 +1,133 @@
-SOURCE_FILE@0..122
-  FN@0..9
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "a"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..9
-      STMT_LIST@7..9
-        L_CURLY@7..8 "{"
-        R_CURLY@8..9 "}"
-  WHITESPACE@9..10 "\n"
-  FN@10..23
-    VISIBILITY@10..13
-      PUB_KW@10..13 "pub"
-    WHITESPACE@13..14 " "
-    FN_KW@14..16 "fn"
-    WHITESPACE@16..17 " "
-    NAME@17..18
-      IDENT@17..18 "b"
-    PARAM_LIST@18..20
-      L_PAREN@18..19 "("
-      R_PAREN@19..20 ")"
-    WHITESPACE@20..21 " "
-    BLOCK_EXPR@21..23
-      STMT_LIST@21..23
-        L_CURLY@21..22 "{"
-        R_CURLY@22..23 "}"
-  WHITESPACE@23..24 "\n"
-  MACRO_DEF@24..47
-    VISIBILITY@24..27
-      PUB_KW@24..27 "pub"
-    WHITESPACE@27..28 " "
-    MACRO_KW@28..33 "macro"
-    WHITESPACE@33..34 " "
-    NAME@34..35
-      IDENT@34..35 "m"
-    TOKEN_TREE@35..47
-      TOKEN_TREE@35..44
-        L_PAREN@35..36 "("
-        DOLLAR@36..37 "$"
-        COLON@37..38 ":"
-        IDENT@38..43 "ident"
-        R_PAREN@43..44 ")"
-      WHITESPACE@44..45 " "
-      TOKEN_TREE@45..47
-        L_CURLY@45..46 "{"
-        R_CURLY@46..47 "}"
-  WHITESPACE@47..48 "\n"
-  FN@48..68
-    VISIBILITY@48..58
-      PUB_KW@48..51 "pub"
-      L_PAREN@51..52 "("
-      PATH@52..57
-        PATH_SEGMENT@52..57
-          NAME_REF@52..57
-            CRATE_KW@52..57 "crate"
-      R_PAREN@57..58 ")"
-    WHITESPACE@58..59 " "
-    FN_KW@59..61 "fn"
-    WHITESPACE@61..62 " "
-    NAME@62..63
-      IDENT@62..63 "c"
-    PARAM_LIST@63..65
-      L_PAREN@63..64 "("
-      R_PAREN@64..65 ")"
-    WHITESPACE@65..66 " "
-    BLOCK_EXPR@66..68
-      STMT_LIST@66..68
-        L_CURLY@66..67 "{"
-        R_CURLY@67..68 "}"
-  WHITESPACE@68..69 "\n"
-  FN@69..89
-    VISIBILITY@69..79
-      PUB_KW@69..72 "pub"
-      L_PAREN@72..73 "("
-      PATH@73..78
-        PATH_SEGMENT@73..78
-          NAME_REF@73..78
-            SUPER_KW@73..78 "super"
-      R_PAREN@78..79 ")"
-    WHITESPACE@79..80 " "
-    FN_KW@80..82 "fn"
-    WHITESPACE@82..83 " "
-    NAME@83..84
-      IDENT@83..84 "d"
-    PARAM_LIST@84..86
-      L_PAREN@84..85 "("
-      R_PAREN@85..86 ")"
-    WHITESPACE@86..87 " "
-    BLOCK_EXPR@87..89
-      STMT_LIST@87..89
-        L_CURLY@87..88 "{"
-        R_CURLY@88..89 "}"
-  WHITESPACE@89..90 "\n"
-  FN@90..121
-    VISIBILITY@90..111
-      PUB_KW@90..93 "pub"
-      L_PAREN@93..94 "("
-      IN_KW@94..96 "in"
-      WHITESPACE@96..97 " "
-      PATH@97..110
-        PATH@97..105
-          PATH@97..100
-            PATH_SEGMENT@97..100
-              NAME_REF@97..100
-                IDENT@97..100 "foo"
-          COLON2@100..102 "::"
-          PATH_SEGMENT@102..105
-            NAME_REF@102..105
-              IDENT@102..105 "bar"
-        COLON2@105..107 "::"
-        PATH_SEGMENT@107..110
-          NAME_REF@107..110
-            IDENT@107..110 "baz"
-      R_PAREN@110..111 ")"
-    WHITESPACE@111..112 " "
-    FN_KW@112..114 "fn"
-    WHITESPACE@114..115 " "
-    NAME@115..116
-      IDENT@115..116 "e"
-    PARAM_LIST@116..118
-      L_PAREN@116..117 "("
-      R_PAREN@117..118 ")"
-    WHITESPACE@118..119 " "
-    BLOCK_EXPR@119..121
-      STMT_LIST@119..121
-        L_CURLY@119..120 "{"
-        R_CURLY@120..121 "}"
-  WHITESPACE@121..122 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "a"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    VISIBILITY
+      PUB_KW "pub"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "b"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  MACRO_DEF
+    VISIBILITY
+      PUB_KW "pub"
+    WHITESPACE " "
+    MACRO_KW "macro"
+    WHITESPACE " "
+    NAME
+      IDENT "m"
+    TOKEN_TREE
+      TOKEN_TREE
+        L_PAREN "("
+        DOLLAR "$"
+        COLON ":"
+        IDENT "ident"
+        R_PAREN ")"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            CRATE_KW "crate"
+      R_PAREN ")"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "c"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            SUPER_KW "super"
+      R_PAREN ")"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "d"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    VISIBILITY
+      PUB_KW "pub"
+      L_PAREN "("
+      IN_KW "in"
+      WHITESPACE " "
+      PATH
+        PATH
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "foo"
+          COLON2 "::"
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "bar"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "baz"
+      R_PAREN ")"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "e"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0012_visibility.txt b/crates/parser/test_data/parser/ok/0012_visibility.txt
deleted file mode 100644
index a95bc23016b..00000000000
--- a/crates/parser/test_data/parser/ok/0012_visibility.txt
+++ /dev/null
@@ -1,133 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "a"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    VISIBILITY
-      PUB_KW "pub"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "b"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  MACRO_DEF
-    VISIBILITY
-      PUB_KW "pub"
-    WHITESPACE " "
-    MACRO_KW "macro"
-    WHITESPACE " "
-    NAME
-      IDENT "m"
-    TOKEN_TREE
-      TOKEN_TREE
-        L_PAREN "("
-        DOLLAR "$"
-        COLON ":"
-        IDENT "ident"
-        R_PAREN ")"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            CRATE_KW "crate"
-      R_PAREN ")"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "c"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            SUPER_KW "super"
-      R_PAREN ")"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "d"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    VISIBILITY
-      PUB_KW "pub"
-      L_PAREN "("
-      IN_KW "in"
-      WHITESPACE " "
-      PATH
-        PATH
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "foo"
-          COLON2 "::"
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "bar"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "baz"
-      R_PAREN ")"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "e"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0013_use_path_self_super.rast b/crates/parser/test_data/parser/ok/0013_use_path_self_super.rast
index dba74e222eb..8a0149caca1 100644
--- a/crates/parser/test_data/parser/ok/0013_use_path_self_super.rast
+++ b/crates/parser/test_data/parser/ok/0013_use_path_self_super.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..38
-  USE@0..14
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..13
-      PATH@4..13
-        PATH@4..8
-          PATH_SEGMENT@4..8
-            NAME_REF@4..8
-              SELF_KW@4..8 "self"
-        COLON2@8..10 "::"
-        PATH_SEGMENT@10..13
-          NAME_REF@10..13
-            IDENT@10..13 "foo"
-    SEMICOLON@13..14 ";"
-  WHITESPACE@14..15 "\n"
-  USE@15..37
-    USE_KW@15..18 "use"
-    WHITESPACE@18..19 " "
-    USE_TREE@19..36
-      PATH@19..36
-        PATH@19..31
-          PATH@19..24
-            PATH_SEGMENT@19..24
-              NAME_REF@19..24
-                SUPER_KW@19..24 "super"
-          COLON2@24..26 "::"
-          PATH_SEGMENT@26..31
-            NAME_REF@26..31
-              SUPER_KW@26..31 "super"
-        COLON2@31..33 "::"
-        PATH_SEGMENT@33..36
-          NAME_REF@33..36
-            IDENT@33..36 "bar"
-    SEMICOLON@36..37 ";"
-  WHITESPACE@37..38 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              SELF_KW "self"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                SUPER_KW "super"
+          COLON2 "::"
+          PATH_SEGMENT
+            NAME_REF
+              SUPER_KW "super"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "bar"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0013_use_path_self_super.txt b/crates/parser/test_data/parser/ok/0013_use_path_self_super.txt
deleted file mode 100644
index 8a0149caca1..00000000000
--- a/crates/parser/test_data/parser/ok/0013_use_path_self_super.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              SELF_KW "self"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                SUPER_KW "super"
-          COLON2 "::"
-          PATH_SEGMENT
-            NAME_REF
-              SUPER_KW "super"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "bar"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0014_use_tree.rast b/crates/parser/test_data/parser/ok/0014_use_tree.rast
index 4389d2d4bce..b37edc365b4 100644
--- a/crates/parser/test_data/parser/ok/0014_use_tree.rast
+++ b/crates/parser/test_data/parser/ok/0014_use_tree.rast
@@ -1,95 +1,95 @@
-SOURCE_FILE@0..81
-  USE@0..6
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..5
-      STAR@4..5 "*"
-    SEMICOLON@5..6 ";"
-  WHITESPACE@6..7 "\n"
-  USE@7..15
-    USE_KW@7..10 "use"
-    WHITESPACE@10..11 " "
-    USE_TREE@11..14
-      COLON2@11..13 "::"
-      STAR@13..14 "*"
-    SEMICOLON@14..15 ";"
-  WHITESPACE@15..16 "\n"
-  USE@16..25
-    USE_KW@16..19 "use"
-    WHITESPACE@19..20 " "
-    USE_TREE@20..24
-      COLON2@20..22 "::"
-      USE_TREE_LIST@22..24
-        L_CURLY@22..23 "{"
-        R_CURLY@23..24 "}"
-    SEMICOLON@24..25 ";"
-  WHITESPACE@25..26 "\n"
-  USE@26..33
-    USE_KW@26..29 "use"
-    WHITESPACE@29..30 " "
-    USE_TREE@30..32
-      USE_TREE_LIST@30..32
-        L_CURLY@30..31 "{"
-        R_CURLY@31..32 "}"
-    SEMICOLON@32..33 ";"
-  WHITESPACE@33..34 "\n"
-  USE@34..45
-    USE_KW@34..37 "use"
-    WHITESPACE@37..38 " "
-    USE_TREE@38..44
-      PATH@38..41
-        PATH_SEGMENT@38..41
-          NAME_REF@38..41
-            IDENT@38..41 "foo"
-      COLON2@41..43 "::"
-      STAR@43..44 "*"
-    SEMICOLON@44..45 ";"
-  WHITESPACE@45..46 "\n"
-  USE@46..58
-    USE_KW@46..49 "use"
-    WHITESPACE@49..50 " "
-    USE_TREE@50..57
-      PATH@50..53
-        PATH_SEGMENT@50..53
-          NAME_REF@50..53
-            IDENT@50..53 "foo"
-      COLON2@53..55 "::"
-      USE_TREE_LIST@55..57
-        L_CURLY@55..56 "{"
-        R_CURLY@56..57 "}"
-    SEMICOLON@57..58 ";"
-  WHITESPACE@58..59 "\n"
-  USE@59..80
-    USE_KW@59..62 "use"
-    WHITESPACE@62..63 " "
-    USE_TREE@63..79
-      PATH@63..68
-        PATH_SEGMENT@63..68
-          COLON2@63..65 "::"
-          NAME_REF@65..68
-            IDENT@65..68 "foo"
-      COLON2@68..70 "::"
-      USE_TREE_LIST@70..79
-        L_CURLY@70..71 "{"
-        USE_TREE@71..72
-          PATH@71..72
-            PATH_SEGMENT@71..72
-              NAME_REF@71..72
-                IDENT@71..72 "a"
-        COMMA@72..73 ","
-        WHITESPACE@73..74 " "
-        USE_TREE@74..75
-          PATH@74..75
-            PATH_SEGMENT@74..75
-              NAME_REF@74..75
-                IDENT@74..75 "b"
-        COMMA@75..76 ","
-        WHITESPACE@76..77 " "
-        USE_TREE@77..78
-          PATH@77..78
-            PATH_SEGMENT@77..78
-              NAME_REF@77..78
-                IDENT@77..78 "c"
-        R_CURLY@78..79 "}"
-    SEMICOLON@79..80 ";"
-  WHITESPACE@80..81 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      STAR "*"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      COLON2 "::"
+      STAR "*"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      USE_TREE_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+      COLON2 "::"
+      STAR "*"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          COLON2 "::"
+          NAME_REF
+            IDENT "foo"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "a"
+        COMMA ","
+        WHITESPACE " "
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "b"
+        COMMA ","
+        WHITESPACE " "
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "c"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0014_use_tree.txt b/crates/parser/test_data/parser/ok/0014_use_tree.txt
deleted file mode 100644
index b37edc365b4..00000000000
--- a/crates/parser/test_data/parser/ok/0014_use_tree.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      STAR "*"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      COLON2 "::"
-      STAR "*"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      USE_TREE_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-      COLON2 "::"
-      STAR "*"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          COLON2 "::"
-          NAME_REF
-            IDENT "foo"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "a"
-        COMMA ","
-        WHITESPACE " "
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "b"
-        COMMA ","
-        WHITESPACE " "
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "c"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0015_use_tree.rast b/crates/parser/test_data/parser/ok/0015_use_tree.rast
index d7e93f7eb75..ddf8aad6fcd 100644
--- a/crates/parser/test_data/parser/ok/0015_use_tree.rast
+++ b/crates/parser/test_data/parser/ok/0015_use_tree.rast
@@ -1,65 +1,65 @@
-SOURCE_FILE@0..55
-  USE@0..15
-    USE_KW@0..3 "use"
-    WHITESPACE@3..4 " "
-    USE_TREE@4..14
-      PATH@4..7
-        PATH_SEGMENT@4..7
-          NAME_REF@4..7
-            IDENT@4..7 "foo"
-      WHITESPACE@7..8 " "
-      RENAME@8..14
-        AS_KW@8..10 "as"
-        WHITESPACE@10..11 " "
-        NAME@11..14
-          IDENT@11..14 "bar"
-    SEMICOLON@14..15 ";"
-  WHITESPACE@15..16 "\n"
-  USE@16..54
-    USE_KW@16..19 "use"
-    WHITESPACE@19..20 " "
-    USE_TREE@20..53
-      PATH@20..23
-        PATH_SEGMENT@20..23
-          NAME_REF@20..23
-            IDENT@20..23 "foo"
-      COLON2@23..25 "::"
-      USE_TREE_LIST@25..53
-        L_CURLY@25..26 "{"
-        USE_TREE@26..32
-          PATH@26..27
-            PATH_SEGMENT@26..27
-              NAME_REF@26..27
-                IDENT@26..27 "a"
-          WHITESPACE@27..28 " "
-          RENAME@28..32
-            AS_KW@28..30 "as"
-            WHITESPACE@30..31 " "
-            NAME@31..32
-              IDENT@31..32 "b"
-        COMMA@32..33 ","
-        WHITESPACE@33..34 " "
-        USE_TREE@34..35
-          STAR@34..35 "*"
-        COMMA@35..36 ","
-        WHITESPACE@36..37 " "
-        USE_TREE@37..40
-          COLON2@37..39 "::"
-          STAR@39..40 "*"
-        COMMA@40..41 ","
-        WHITESPACE@41..42 " "
-        USE_TREE@42..52
-          PATH@42..47
-            PATH_SEGMENT@42..47
-              COLON2@42..44 "::"
-              NAME_REF@44..47
-                IDENT@44..47 "foo"
-          WHITESPACE@47..48 " "
-          RENAME@48..52
-            AS_KW@48..50 "as"
-            WHITESPACE@50..51 " "
-            NAME@51..52
-              IDENT@51..52 "x"
-        R_CURLY@52..53 "}"
-    SEMICOLON@53..54 ";"
-  WHITESPACE@54..55 "\n"
+SOURCE_FILE
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+      WHITESPACE " "
+      RENAME
+        AS_KW "as"
+        WHITESPACE " "
+        NAME
+          IDENT "bar"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "foo"
+      COLON2 "::"
+      USE_TREE_LIST
+        L_CURLY "{"
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "a"
+          WHITESPACE " "
+          RENAME
+            AS_KW "as"
+            WHITESPACE " "
+            NAME
+              IDENT "b"
+        COMMA ","
+        WHITESPACE " "
+        USE_TREE
+          STAR "*"
+        COMMA ","
+        WHITESPACE " "
+        USE_TREE
+          COLON2 "::"
+          STAR "*"
+        COMMA ","
+        WHITESPACE " "
+        USE_TREE
+          PATH
+            PATH_SEGMENT
+              COLON2 "::"
+              NAME_REF
+                IDENT "foo"
+          WHITESPACE " "
+          RENAME
+            AS_KW "as"
+            WHITESPACE " "
+            NAME
+              IDENT "x"
+        R_CURLY "}"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0015_use_tree.txt b/crates/parser/test_data/parser/ok/0015_use_tree.txt
deleted file mode 100644
index ddf8aad6fcd..00000000000
--- a/crates/parser/test_data/parser/ok/0015_use_tree.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-SOURCE_FILE
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-      WHITESPACE " "
-      RENAME
-        AS_KW "as"
-        WHITESPACE " "
-        NAME
-          IDENT "bar"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "foo"
-      COLON2 "::"
-      USE_TREE_LIST
-        L_CURLY "{"
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "a"
-          WHITESPACE " "
-          RENAME
-            AS_KW "as"
-            WHITESPACE " "
-            NAME
-              IDENT "b"
-        COMMA ","
-        WHITESPACE " "
-        USE_TREE
-          STAR "*"
-        COMMA ","
-        WHITESPACE " "
-        USE_TREE
-          COLON2 "::"
-          STAR "*"
-        COMMA ","
-        WHITESPACE " "
-        USE_TREE
-          PATH
-            PATH_SEGMENT
-              COLON2 "::"
-              NAME_REF
-                IDENT "foo"
-          WHITESPACE " "
-          RENAME
-            AS_KW "as"
-            WHITESPACE " "
-            NAME
-              IDENT "x"
-        R_CURLY "}"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0016_struct_flavors.rast b/crates/parser/test_data/parser/ok/0016_struct_flavors.rast
index b15f41dd7e9..eb2724e2f36 100644
--- a/crates/parser/test_data/parser/ok/0016_struct_flavors.rast
+++ b/crates/parser/test_data/parser/ok/0016_struct_flavors.rast
@@ -1,93 +1,93 @@
-SOURCE_FILE@0..97
-  STRUCT@0..9
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "A"
-    SEMICOLON@8..9 ";"
-  WHITESPACE@9..10 "\n"
-  STRUCT@10..21
-    STRUCT_KW@10..16 "struct"
-    WHITESPACE@16..17 " "
-    NAME@17..18
-      IDENT@17..18 "B"
-    WHITESPACE@18..19 " "
-    RECORD_FIELD_LIST@19..21
-      L_CURLY@19..20 "{"
-      R_CURLY@20..21 "}"
-  WHITESPACE@21..22 "\n"
-  STRUCT@22..33
-    STRUCT_KW@22..28 "struct"
-    WHITESPACE@28..29 " "
-    NAME@29..30
-      IDENT@29..30 "C"
-    TUPLE_FIELD_LIST@30..32
-      L_PAREN@30..31 "("
-      R_PAREN@31..32 ")"
-    SEMICOLON@32..33 ";"
-  WHITESPACE@33..35 "\n\n"
-  STRUCT@35..74
-    STRUCT_KW@35..41 "struct"
-    WHITESPACE@41..42 " "
-    NAME@42..43
-      IDENT@42..43 "D"
-    WHITESPACE@43..44 " "
-    RECORD_FIELD_LIST@44..74
-      L_CURLY@44..45 "{"
-      WHITESPACE@45..50 "\n    "
-      RECORD_FIELD@50..56
-        NAME@50..51
-          IDENT@50..51 "a"
-        COLON@51..52 ":"
-        WHITESPACE@52..53 " "
-        PATH_TYPE@53..56
-          PATH@53..56
-            PATH_SEGMENT@53..56
-              NAME_REF@53..56
-                IDENT@53..56 "u32"
-      COMMA@56..57 ","
-      WHITESPACE@57..62 "\n    "
-      RECORD_FIELD@62..72
-        VISIBILITY@62..65
-          PUB_KW@62..65 "pub"
-        WHITESPACE@65..66 " "
-        NAME@66..67
-          IDENT@66..67 "b"
-        COLON@67..68 ":"
-        WHITESPACE@68..69 " "
-        PATH_TYPE@69..72
-          PATH@69..72
-            PATH_SEGMENT@69..72
-              NAME_REF@69..72
-                IDENT@69..72 "u32"
-      WHITESPACE@72..73 "\n"
-      R_CURLY@73..74 "}"
-  WHITESPACE@74..76 "\n\n"
-  STRUCT@76..96
-    STRUCT_KW@76..82 "struct"
-    WHITESPACE@82..83 " "
-    NAME@83..84
-      IDENT@83..84 "E"
-    TUPLE_FIELD_LIST@84..95
-      L_PAREN@84..85 "("
-      TUPLE_FIELD@85..90
-        VISIBILITY@85..88
-          PUB_KW@85..88 "pub"
-        WHITESPACE@88..89 " "
-        PATH_TYPE@89..90
-          PATH@89..90
-            PATH_SEGMENT@89..90
-              NAME_REF@89..90
-                IDENT@89..90 "x"
-      COMMA@90..91 ","
-      WHITESPACE@91..92 " "
-      TUPLE_FIELD@92..93
-        PATH_TYPE@92..93
-          PATH@92..93
-            PATH_SEGMENT@92..93
-              NAME_REF@92..93
-                IDENT@92..93 "y"
-      COMMA@93..94 ","
-      R_PAREN@94..95 ")"
-    SEMICOLON@95..96 ";"
-  WHITESPACE@96..97 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "C"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "D"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "a"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      COMMA ","
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        NAME
+          IDENT "b"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "E"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "x"
+      COMMA ","
+      WHITESPACE " "
+      TUPLE_FIELD
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "y"
+      COMMA ","
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0016_struct_flavors.txt b/crates/parser/test_data/parser/ok/0016_struct_flavors.txt
deleted file mode 100644
index eb2724e2f36..00000000000
--- a/crates/parser/test_data/parser/ok/0016_struct_flavors.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "C"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "D"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "a"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      COMMA ","
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        NAME
-          IDENT "b"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "E"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "x"
-      COMMA ","
-      WHITESPACE " "
-      TUPLE_FIELD
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "y"
-      COMMA ","
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0017_attr_trailing_comma.rast b/crates/parser/test_data/parser/ok/0017_attr_trailing_comma.rast
index 938a3f17b68..7c914e2542e 100644
--- a/crates/parser/test_data/parser/ok/0017_attr_trailing_comma.rast
+++ b/crates/parser/test_data/parser/ok/0017_attr_trailing_comma.rast
@@ -1,30 +1,30 @@
-SOURCE_FILE@0..23
-  FN@0..22
-    ATTR@0..10
-      POUND@0..1 "#"
-      L_BRACK@1..2 "["
-      META@2..9
-        PATH@2..5
-          PATH_SEGMENT@2..5
-            NAME_REF@2..5
-              IDENT@2..5 "foo"
-        TOKEN_TREE@5..9
-          L_PAREN@5..6 "("
-          IDENT@6..7 "a"
-          COMMA@7..8 ","
-          R_PAREN@8..9 ")"
-      R_BRACK@9..10 "]"
-    WHITESPACE@10..11 "\n"
-    FN_KW@11..13 "fn"
-    WHITESPACE@13..14 " "
-    NAME@14..17
-      IDENT@14..17 "foo"
-    PARAM_LIST@17..19
-      L_PAREN@17..18 "("
-      R_PAREN@18..19 ")"
-    WHITESPACE@19..20 " "
-    BLOCK_EXPR@20..22
-      STMT_LIST@20..22
-        L_CURLY@20..21 "{"
-        R_CURLY@21..22 "}"
-  WHITESPACE@22..23 "\n"
+SOURCE_FILE
+  FN
+    ATTR
+      POUND "#"
+      L_BRACK "["
+      META
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "foo"
+        TOKEN_TREE
+          L_PAREN "("
+          IDENT "a"
+          COMMA ","
+          R_PAREN ")"
+      R_BRACK "]"
+    WHITESPACE "\n"
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0017_attr_trailing_comma.txt b/crates/parser/test_data/parser/ok/0017_attr_trailing_comma.txt
deleted file mode 100644
index 7c914e2542e..00000000000
--- a/crates/parser/test_data/parser/ok/0017_attr_trailing_comma.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  FN
-    ATTR
-      POUND "#"
-      L_BRACK "["
-      META
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "foo"
-        TOKEN_TREE
-          L_PAREN "("
-          IDENT "a"
-          COMMA ","
-          R_PAREN ")"
-      R_BRACK "]"
-    WHITESPACE "\n"
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0018_struct_type_params.rast b/crates/parser/test_data/parser/ok/0018_struct_type_params.rast
index f845d5cffa8..11ebc7efb9f 100644
--- a/crates/parser/test_data/parser/ok/0018_struct_type_params.rast
+++ b/crates/parser/test_data/parser/ok/0018_struct_type_params.rast
@@ -1,274 +1,274 @@
-SOURCE_FILE@0..290
-  STRUCT@0..13
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..9
-      IDENT@7..9 "S1"
-    GENERIC_PARAM_LIST@9..12
-      L_ANGLE@9..10 "<"
-      TYPE_PARAM@10..11
-        NAME@10..11
-          IDENT@10..11 "T"
-      R_ANGLE@11..12 ">"
-    SEMICOLON@12..13 ";"
-  WHITESPACE@13..14 "\n"
-  STRUCT@14..32
-    STRUCT_KW@14..20 "struct"
-    WHITESPACE@20..21 " "
-    NAME@21..23
-      IDENT@21..23 "S2"
-    GENERIC_PARAM_LIST@23..26
-      L_ANGLE@23..24 "<"
-      TYPE_PARAM@24..25
-        NAME@24..25
-          IDENT@24..25 "T"
-      R_ANGLE@25..26 ">"
-    TUPLE_FIELD_LIST@26..31
-      L_PAREN@26..27 "("
-      TUPLE_FIELD@27..30
-        PATH_TYPE@27..30
-          PATH@27..30
-            PATH_SEGMENT@27..30
-              NAME_REF@27..30
-                IDENT@27..30 "u32"
-      R_PAREN@30..31 ")"
-    SEMICOLON@31..32 ";"
-  WHITESPACE@32..33 "\n"
-  STRUCT@33..56
-    STRUCT_KW@33..39 "struct"
-    WHITESPACE@39..40 " "
-    NAME@40..42
-      IDENT@40..42 "S3"
-    GENERIC_PARAM_LIST@42..45
-      L_ANGLE@42..43 "<"
-      TYPE_PARAM@43..44
-        NAME@43..44
-          IDENT@43..44 "T"
-      R_ANGLE@44..45 ">"
-    WHITESPACE@45..46 " "
-    RECORD_FIELD_LIST@46..56
-      L_CURLY@46..47 "{"
-      WHITESPACE@47..48 " "
-      RECORD_FIELD@48..54
-        NAME@48..49
-          IDENT@48..49 "u"
-        COLON@49..50 ":"
-        WHITESPACE@50..51 " "
-        PATH_TYPE@51..54
-          PATH@51..54
-            PATH_SEGMENT@51..54
-              NAME_REF@51..54
-                IDENT@51..54 "u32"
-      WHITESPACE@54..55 " "
-      R_CURLY@55..56 "}"
-  WHITESPACE@56..58 "\n\n"
-  STRUCT@58..70
-    STRUCT_KW@58..64 "struct"
-    WHITESPACE@64..65 " "
-    NAME@65..67
-      IDENT@65..67 "S4"
-    GENERIC_PARAM_LIST@67..69
-      L_ANGLE@67..68 "<"
-      R_ANGLE@68..69 ">"
-    SEMICOLON@69..70 ";"
-  WHITESPACE@70..71 "\n"
-  STRUCT@71..85
-    STRUCT_KW@71..77 "struct"
-    WHITESPACE@77..78 " "
-    NAME@78..80
-      IDENT@78..80 "S5"
-    GENERIC_PARAM_LIST@80..84
-      L_ANGLE@80..81 "<"
-      LIFETIME_PARAM@81..83
-        LIFETIME@81..83
-          LIFETIME_IDENT@81..83 "'a"
-      R_ANGLE@83..84 ">"
-    SEMICOLON@84..85 ";"
-  WHITESPACE@85..86 "\n"
-  STRUCT@86..101
-    STRUCT_KW@86..92 "struct"
-    WHITESPACE@92..93 " "
-    NAME@93..95
-      IDENT@93..95 "S6"
-    GENERIC_PARAM_LIST@95..100
-      L_ANGLE@95..96 "<"
-      LIFETIME_PARAM@96..99
-        LIFETIME@96..98
-          LIFETIME_IDENT@96..98 "'a"
-        COLON@98..99 ":"
-      R_ANGLE@99..100 ">"
-    SEMICOLON@100..101 ";"
-  WHITESPACE@101..102 "\n"
-  STRUCT@102..120
-    STRUCT_KW@102..108 "struct"
-    WHITESPACE@108..109 " "
-    NAME@109..111
-      IDENT@109..111 "S7"
-    GENERIC_PARAM_LIST@111..119
-      L_ANGLE@111..112 "<"
-      LIFETIME_PARAM@112..118
-        LIFETIME@112..114
-          LIFETIME_IDENT@112..114 "'a"
-        COLON@114..115 ":"
-        WHITESPACE@115..116 " "
-        LIFETIME@116..118
-          LIFETIME_IDENT@116..118 "'b"
-      R_ANGLE@118..119 ">"
-    SEMICOLON@119..120 ";"
-  WHITESPACE@120..121 "\n"
-  STRUCT@121..142
-    STRUCT_KW@121..127 "struct"
-    WHITESPACE@127..128 " "
-    NAME@128..130
-      IDENT@128..130 "S8"
-    GENERIC_PARAM_LIST@130..141
-      L_ANGLE@130..131 "<"
-      LIFETIME_PARAM@131..139
-        LIFETIME@131..133
-          LIFETIME_IDENT@131..133 "'a"
-        COLON@133..134 ":"
-        WHITESPACE@134..135 " "
-        LIFETIME@135..137
-          LIFETIME_IDENT@135..137 "'b"
-        WHITESPACE@137..138 " "
-        PLUS@138..139 "+"
-      WHITESPACE@139..140 " "
-      R_ANGLE@140..141 ">"
-    SEMICOLON@141..142 ";"
-  WHITESPACE@142..143 "\n"
-  STRUCT@143..166
-    STRUCT_KW@143..149 "struct"
-    WHITESPACE@149..150 " "
-    NAME@150..152
-      IDENT@150..152 "S9"
-    GENERIC_PARAM_LIST@152..165
-      L_ANGLE@152..153 "<"
-      LIFETIME_PARAM@153..164
-        LIFETIME@153..155
-          LIFETIME_IDENT@153..155 "'a"
-        COLON@155..156 ":"
-        WHITESPACE@156..157 " "
-        LIFETIME@157..159
-          LIFETIME_IDENT@157..159 "'b"
-        WHITESPACE@159..160 " "
-        PLUS@160..161 "+"
-        WHITESPACE@161..162 " "
-        LIFETIME@162..164
-          LIFETIME_IDENT@162..164 "'c"
-      R_ANGLE@164..165 ">"
-    SEMICOLON@165..166 ";"
-  WHITESPACE@166..167 "\n"
-  STRUCT@167..183
-    STRUCT_KW@167..173 "struct"
-    WHITESPACE@173..174 " "
-    NAME@174..177
-      IDENT@174..177 "S10"
-    GENERIC_PARAM_LIST@177..182
-      L_ANGLE@177..178 "<"
-      LIFETIME_PARAM@178..180
-        LIFETIME@178..180
-          LIFETIME_IDENT@178..180 "'a"
-      COMMA@180..181 ","
-      R_ANGLE@181..182 ">"
-    SEMICOLON@182..183 ";"
-  WHITESPACE@183..184 "\n"
-  STRUCT@184..203
-    STRUCT_KW@184..190 "struct"
-    WHITESPACE@190..191 " "
-    NAME@191..194
-      IDENT@191..194 "S11"
-    GENERIC_PARAM_LIST@194..202
-      L_ANGLE@194..195 "<"
-      LIFETIME_PARAM@195..197
-        LIFETIME@195..197
-          LIFETIME_IDENT@195..197 "'a"
-      COMMA@197..198 ","
-      WHITESPACE@198..199 " "
-      LIFETIME_PARAM@199..201
-        LIFETIME@199..201
-          LIFETIME_IDENT@199..201 "'b"
-      R_ANGLE@201..202 ">"
-    SEMICOLON@202..203 ";"
-  WHITESPACE@203..204 "\n"
-  STRUCT@204..233
-    STRUCT_KW@204..210 "struct"
-    WHITESPACE@210..211 " "
-    NAME@211..214
-      IDENT@211..214 "S12"
-    GENERIC_PARAM_LIST@214..232
-      L_ANGLE@214..215 "<"
-      LIFETIME_PARAM@215..222
-        LIFETIME@215..217
-          LIFETIME_IDENT@215..217 "'a"
-        COLON@217..218 ":"
-        WHITESPACE@218..219 " "
-        LIFETIME@219..221
-          LIFETIME_IDENT@219..221 "'b"
-        PLUS@221..222 "+"
-      COMMA@222..223 ","
-      WHITESPACE@223..224 " "
-      LIFETIME_PARAM@224..230
-        LIFETIME@224..226
-          LIFETIME_IDENT@224..226 "'b"
-        COLON@226..227 ":"
-        WHITESPACE@227..228 " "
-        LIFETIME@228..230
-          LIFETIME_IDENT@228..230 "'c"
-      COMMA@230..231 ","
-      R_ANGLE@231..232 ">"
-    SEMICOLON@232..233 ";"
-  WHITESPACE@233..235 "\n\n"
-  STRUCT@235..249
-    STRUCT_KW@235..241 "struct"
-    WHITESPACE@241..242 " "
-    NAME@242..245
-      IDENT@242..245 "S13"
-    GENERIC_PARAM_LIST@245..248
-      L_ANGLE@245..246 "<"
-      TYPE_PARAM@246..247
-        NAME@246..247
-          IDENT@246..247 "T"
-      R_ANGLE@247..248 ">"
-    SEMICOLON@248..249 ";"
-  WHITESPACE@249..250 "\n"
-  STRUCT@250..267
-    STRUCT_KW@250..256 "struct"
-    WHITESPACE@256..257 " "
-    NAME@257..260
-      IDENT@257..260 "S14"
-    GENERIC_PARAM_LIST@260..266
-      L_ANGLE@260..261 "<"
-      TYPE_PARAM@261..262
-        NAME@261..262
-          IDENT@261..262 "T"
-      COMMA@262..263 ","
-      WHITESPACE@263..264 " "
-      TYPE_PARAM@264..265
-        NAME@264..265
-          IDENT@264..265 "U"
-      R_ANGLE@265..266 ">"
-    SEMICOLON@266..267 ";"
-  WHITESPACE@267..268 "\n"
-  STRUCT@268..289
-    STRUCT_KW@268..274 "struct"
-    WHITESPACE@274..275 " "
-    NAME@275..278
-      IDENT@275..278 "S15"
-    GENERIC_PARAM_LIST@278..288
-      L_ANGLE@278..279 "<"
-      LIFETIME_PARAM@279..281
-        LIFETIME@279..281
-          LIFETIME_IDENT@279..281 "'a"
-      COMMA@281..282 ","
-      WHITESPACE@282..283 " "
-      TYPE_PARAM@283..284
-        NAME@283..284
-          IDENT@283..284 "T"
-      COMMA@284..285 ","
-      WHITESPACE@285..286 " "
-      TYPE_PARAM@286..287
-        NAME@286..287
-          IDENT@286..287 "U"
-      R_ANGLE@287..288 ">"
-    SEMICOLON@288..289 ";"
-  WHITESPACE@289..290 "\n"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S1"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S2"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    TUPLE_FIELD_LIST
+      L_PAREN "("
+      TUPLE_FIELD
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S3"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      RECORD_FIELD
+        NAME
+          IDENT "u"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S4"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S5"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S6"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S7"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'b"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S8"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'b"
+        WHITESPACE " "
+        PLUS "+"
+      WHITESPACE " "
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S9"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'b"
+        WHITESPACE " "
+        PLUS "+"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'c"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S10"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+      COMMA ","
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S11"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+      COMMA ","
+      WHITESPACE " "
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'b"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S12"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'b"
+        PLUS "+"
+      COMMA ","
+      WHITESPACE " "
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'b"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'c"
+      COMMA ","
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S13"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S14"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      COMMA ","
+      WHITESPACE " "
+      TYPE_PARAM
+        NAME
+          IDENT "U"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S15"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+      COMMA ","
+      WHITESPACE " "
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      COMMA ","
+      WHITESPACE " "
+      TYPE_PARAM
+        NAME
+          IDENT "U"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0018_struct_type_params.txt b/crates/parser/test_data/parser/ok/0018_struct_type_params.txt
deleted file mode 100644
index 11ebc7efb9f..00000000000
--- a/crates/parser/test_data/parser/ok/0018_struct_type_params.txt
+++ /dev/null
@@ -1,274 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S1"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S2"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    TUPLE_FIELD_LIST
-      L_PAREN "("
-      TUPLE_FIELD
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S3"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      RECORD_FIELD
-        NAME
-          IDENT "u"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S4"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S5"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S6"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S7"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'b"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S8"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'b"
-        WHITESPACE " "
-        PLUS "+"
-      WHITESPACE " "
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S9"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'b"
-        WHITESPACE " "
-        PLUS "+"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'c"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S10"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-      COMMA ","
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S11"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-      COMMA ","
-      WHITESPACE " "
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'b"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S12"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'b"
-        PLUS "+"
-      COMMA ","
-      WHITESPACE " "
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'b"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'c"
-      COMMA ","
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S13"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S14"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      COMMA ","
-      WHITESPACE " "
-      TYPE_PARAM
-        NAME
-          IDENT "U"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S15"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-      COMMA ","
-      WHITESPACE " "
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      COMMA ","
-      WHITESPACE " "
-      TYPE_PARAM
-        NAME
-          IDENT "U"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0019_enums.rast b/crates/parser/test_data/parser/ok/0019_enums.rast
index c3df008146d..dd47e3aa47a 100644
--- a/crates/parser/test_data/parser/ok/0019_enums.rast
+++ b/crates/parser/test_data/parser/ok/0019_enums.rast
@@ -1,155 +1,155 @@
-SOURCE_FILE@0..182
-  ENUM@0..11
-    ENUM_KW@0..4 "enum"
-    WHITESPACE@4..5 " "
-    NAME@5..7
-      IDENT@5..7 "E1"
-    WHITESPACE@7..8 " "
-    VARIANT_LIST@8..11
-      L_CURLY@8..9 "{"
-      WHITESPACE@9..10 "\n"
-      R_CURLY@10..11 "}"
-  WHITESPACE@11..13 "\n\n"
-  ENUM@13..27
-    ENUM_KW@13..17 "enum"
-    WHITESPACE@17..18 " "
-    NAME@18..20
-      IDENT@18..20 "E2"
-    GENERIC_PARAM_LIST@20..23
-      L_ANGLE@20..21 "<"
-      TYPE_PARAM@21..22
-        NAME@21..22
-          IDENT@21..22 "T"
-      R_ANGLE@22..23 ">"
-    WHITESPACE@23..24 " "
-    VARIANT_LIST@24..27
-      L_CURLY@24..25 "{"
-      WHITESPACE@25..26 "\n"
-      R_CURLY@26..27 "}"
-  WHITESPACE@27..29 "\n\n"
-  ENUM@29..46
-    ENUM_KW@29..33 "enum"
-    WHITESPACE@33..34 " "
-    NAME@34..36
-      IDENT@34..36 "E3"
-    WHITESPACE@36..37 " "
-    VARIANT_LIST@37..46
-      L_CURLY@37..38 "{"
-      WHITESPACE@38..43 "\n    "
-      VARIANT@43..44
-        NAME@43..44
-          IDENT@43..44 "X"
-      WHITESPACE@44..45 "\n"
-      R_CURLY@45..46 "}"
-  WHITESPACE@46..48 "\n\n"
-  ENUM@48..66
-    ENUM_KW@48..52 "enum"
-    WHITESPACE@52..53 " "
-    NAME@53..55
-      IDENT@53..55 "E4"
-    WHITESPACE@55..56 " "
-    VARIANT_LIST@56..66
-      L_CURLY@56..57 "{"
-      WHITESPACE@57..62 "\n    "
-      VARIANT@62..63
-        NAME@62..63
-          IDENT@62..63 "X"
-      COMMA@63..64 ","
-      WHITESPACE@64..65 "\n"
-      R_CURLY@65..66 "}"
-  WHITESPACE@66..68 "\n\n"
-  ENUM@68..181
-    ENUM_KW@68..72 "enum"
-    WHITESPACE@72..73 " "
-    NAME@73..75
-      IDENT@73..75 "E5"
-    WHITESPACE@75..76 " "
-    VARIANT_LIST@76..181
-      L_CURLY@76..77 "{"
-      WHITESPACE@77..82 "\n    "
-      VARIANT@82..83
-        NAME@82..83
-          IDENT@82..83 "A"
-      COMMA@83..84 ","
-      WHITESPACE@84..89 "\n    "
-      VARIANT@89..95
-        NAME@89..90
-          IDENT@89..90 "B"
-        WHITESPACE@90..91 " "
-        EQ@91..92 "="
-        WHITESPACE@92..93 " "
-        LITERAL@93..95
-          INT_NUMBER@93..95 "92"
-      COMMA@95..96 ","
-      WHITESPACE@96..101 "\n    "
-      VARIANT@101..146
-        NAME@101..102
-          IDENT@101..102 "C"
-        WHITESPACE@102..103 " "
-        RECORD_FIELD_LIST@103..146
-          L_CURLY@103..104 "{"
-          WHITESPACE@104..113 "\n        "
-          RECORD_FIELD@113..119
-            NAME@113..114
-              IDENT@113..114 "a"
-            COLON@114..115 ":"
-            WHITESPACE@115..116 " "
-            PATH_TYPE@116..119
-              PATH@116..119
-                PATH_SEGMENT@116..119
-                  NAME_REF@116..119
-                    IDENT@116..119 "u32"
-          COMMA@119..120 ","
-          WHITESPACE@120..129 "\n        "
-          RECORD_FIELD@129..139
-            VISIBILITY@129..132
-              PUB_KW@129..132 "pub"
-            WHITESPACE@132..133 " "
-            NAME@133..134
-              IDENT@133..134 "b"
-            COLON@134..135 ":"
-            WHITESPACE@135..136 " "
-            PATH_TYPE@136..139
-              PATH@136..139
-                PATH_SEGMENT@136..139
-                  NAME_REF@136..139
-                    IDENT@136..139 "f64"
-          COMMA@139..140 ","
-          WHITESPACE@140..145 "\n    "
-          R_CURLY@145..146 "}"
-      COMMA@146..147 ","
-      WHITESPACE@147..152 "\n    "
-      VARIANT@152..156
-        NAME@152..153
-          IDENT@152..153 "F"
-        WHITESPACE@153..154 " "
-        RECORD_FIELD_LIST@154..156
-          L_CURLY@154..155 "{"
-          R_CURLY@155..156 "}"
-      COMMA@156..157 ","
-      WHITESPACE@157..162 "\n    "
-      VARIANT@162..169
-        NAME@162..163
-          IDENT@162..163 "D"
-        TUPLE_FIELD_LIST@163..169
-          L_PAREN@163..164 "("
-          TUPLE_FIELD@164..167
-            PATH_TYPE@164..167
-              PATH@164..167
-                PATH_SEGMENT@164..167
-                  NAME_REF@164..167
-                    IDENT@164..167 "u32"
-          COMMA@167..168 ","
-          R_PAREN@168..169 ")"
-      COMMA@169..170 ","
-      WHITESPACE@170..175 "\n    "
-      VARIANT@175..178
-        NAME@175..176
-          IDENT@175..176 "E"
-        TUPLE_FIELD_LIST@176..178
-          L_PAREN@176..177 "("
-          R_PAREN@177..178 ")"
-      COMMA@178..179 ","
-      WHITESPACE@179..180 "\n"
-      R_CURLY@180..181 "}"
-  WHITESPACE@181..182 "\n"
+SOURCE_FILE
+  ENUM
+    ENUM_KW "enum"
+    WHITESPACE " "
+    NAME
+      IDENT "E1"
+    WHITESPACE " "
+    VARIANT_LIST
+      L_CURLY "{"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  ENUM
+    ENUM_KW "enum"
+    WHITESPACE " "
+    NAME
+      IDENT "E2"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    WHITESPACE " "
+    VARIANT_LIST
+      L_CURLY "{"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  ENUM
+    ENUM_KW "enum"
+    WHITESPACE " "
+    NAME
+      IDENT "E3"
+    WHITESPACE " "
+    VARIANT_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "X"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  ENUM
+    ENUM_KW "enum"
+    WHITESPACE " "
+    NAME
+      IDENT "E4"
+    WHITESPACE " "
+    VARIANT_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "X"
+      COMMA ","
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  ENUM
+    ENUM_KW "enum"
+    WHITESPACE " "
+    NAME
+      IDENT "E5"
+    WHITESPACE " "
+    VARIANT_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "A"
+      COMMA ","
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "B"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        LITERAL
+          INT_NUMBER "92"
+      COMMA ","
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "C"
+        WHITESPACE " "
+        RECORD_FIELD_LIST
+          L_CURLY "{"
+          WHITESPACE "\n        "
+          RECORD_FIELD
+            NAME
+              IDENT "a"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u32"
+          COMMA ","
+          WHITESPACE "\n        "
+          RECORD_FIELD
+            VISIBILITY
+              PUB_KW "pub"
+            WHITESPACE " "
+            NAME
+              IDENT "b"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "f64"
+          COMMA ","
+          WHITESPACE "\n    "
+          R_CURLY "}"
+      COMMA ","
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "F"
+        WHITESPACE " "
+        RECORD_FIELD_LIST
+          L_CURLY "{"
+          R_CURLY "}"
+      COMMA ","
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "D"
+        TUPLE_FIELD_LIST
+          L_PAREN "("
+          TUPLE_FIELD
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u32"
+          COMMA ","
+          R_PAREN ")"
+      COMMA ","
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "E"
+        TUPLE_FIELD_LIST
+          L_PAREN "("
+          R_PAREN ")"
+      COMMA ","
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0019_enums.txt b/crates/parser/test_data/parser/ok/0019_enums.txt
deleted file mode 100644
index dd47e3aa47a..00000000000
--- a/crates/parser/test_data/parser/ok/0019_enums.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-SOURCE_FILE
-  ENUM
-    ENUM_KW "enum"
-    WHITESPACE " "
-    NAME
-      IDENT "E1"
-    WHITESPACE " "
-    VARIANT_LIST
-      L_CURLY "{"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  ENUM
-    ENUM_KW "enum"
-    WHITESPACE " "
-    NAME
-      IDENT "E2"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    WHITESPACE " "
-    VARIANT_LIST
-      L_CURLY "{"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  ENUM
-    ENUM_KW "enum"
-    WHITESPACE " "
-    NAME
-      IDENT "E3"
-    WHITESPACE " "
-    VARIANT_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "X"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  ENUM
-    ENUM_KW "enum"
-    WHITESPACE " "
-    NAME
-      IDENT "E4"
-    WHITESPACE " "
-    VARIANT_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "X"
-      COMMA ","
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  ENUM
-    ENUM_KW "enum"
-    WHITESPACE " "
-    NAME
-      IDENT "E5"
-    WHITESPACE " "
-    VARIANT_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "A"
-      COMMA ","
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "B"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        LITERAL
-          INT_NUMBER "92"
-      COMMA ","
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "C"
-        WHITESPACE " "
-        RECORD_FIELD_LIST
-          L_CURLY "{"
-          WHITESPACE "\n        "
-          RECORD_FIELD
-            NAME
-              IDENT "a"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u32"
-          COMMA ","
-          WHITESPACE "\n        "
-          RECORD_FIELD
-            VISIBILITY
-              PUB_KW "pub"
-            WHITESPACE " "
-            NAME
-              IDENT "b"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "f64"
-          COMMA ","
-          WHITESPACE "\n    "
-          R_CURLY "}"
-      COMMA ","
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "F"
-        WHITESPACE " "
-        RECORD_FIELD_LIST
-          L_CURLY "{"
-          R_CURLY "}"
-      COMMA ","
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "D"
-        TUPLE_FIELD_LIST
-          L_PAREN "("
-          TUPLE_FIELD
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u32"
-          COMMA ","
-          R_PAREN ")"
-      COMMA ","
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "E"
-        TUPLE_FIELD_LIST
-          L_PAREN "("
-          R_PAREN ")"
-      COMMA ","
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0020_type_param_bounds.rast b/crates/parser/test_data/parser/ok/0020_type_param_bounds.rast
index 9d4b001aed9..043a966ff97 100644
--- a/crates/parser/test_data/parser/ok/0020_type_param_bounds.rast
+++ b/crates/parser/test_data/parser/ok/0020_type_param_bounds.rast
@@ -1,283 +1,283 @@
-SOURCE_FILE@0..250
-  STRUCT@0..12
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "A"
-    GENERIC_PARAM_LIST@8..11
-      L_ANGLE@8..9 "<"
-      TYPE_PARAM@9..10
-        NAME@9..10
-          IDENT@9..10 "T"
-      R_ANGLE@10..11 ">"
-    SEMICOLON@11..12 ";"
-  WHITESPACE@12..13 "\n"
-  STRUCT@13..26
-    STRUCT_KW@13..19 "struct"
-    WHITESPACE@19..20 " "
-    NAME@20..21
-      IDENT@20..21 "B"
-    GENERIC_PARAM_LIST@21..25
-      L_ANGLE@21..22 "<"
-      TYPE_PARAM@22..24
-        NAME@22..23
-          IDENT@22..23 "T"
-        COLON@23..24 ":"
-        TYPE_BOUND_LIST@24..24
-      R_ANGLE@24..25 ">"
-    SEMICOLON@25..26 ";"
-  WHITESPACE@26..27 "\n"
-  STRUCT@27..43
-    STRUCT_KW@27..33 "struct"
-    WHITESPACE@33..34 " "
-    NAME@34..35
-      IDENT@34..35 "C"
-    GENERIC_PARAM_LIST@35..42
-      L_ANGLE@35..36 "<"
-      TYPE_PARAM@36..41
-        NAME@36..37
-          IDENT@36..37 "T"
-        COLON@37..38 ":"
-        WHITESPACE@38..39 " "
-        TYPE_BOUND_LIST@39..41
-          TYPE_BOUND@39..41
-            LIFETIME@39..41
-              LIFETIME_IDENT@39..41 "'a"
-      R_ANGLE@41..42 ">"
-    SEMICOLON@42..43 ";"
-  WHITESPACE@43..44 "\n"
-  STRUCT@44..63
-    STRUCT_KW@44..50 "struct"
-    WHITESPACE@50..51 " "
-    NAME@51..52
-      IDENT@51..52 "D"
-    GENERIC_PARAM_LIST@52..62
-      L_ANGLE@52..53 "<"
-      TYPE_PARAM@53..60
-        NAME@53..54
-          IDENT@53..54 "T"
-        COLON@54..55 ":"
-        WHITESPACE@55..56 " "
-        TYPE_BOUND_LIST@56..60
-          TYPE_BOUND@56..58
-            LIFETIME@56..58
-              LIFETIME_IDENT@56..58 "'a"
-          WHITESPACE@58..59 " "
-          PLUS@59..60 "+"
-      WHITESPACE@60..61 " "
-      R_ANGLE@61..62 ">"
-    SEMICOLON@62..63 ";"
-  WHITESPACE@63..64 "\n"
-  STRUCT@64..86
-    STRUCT_KW@64..70 "struct"
-    WHITESPACE@70..71 " "
-    NAME@71..72
-      IDENT@71..72 "E"
-    GENERIC_PARAM_LIST@72..85
-      L_ANGLE@72..73 "<"
-      TYPE_PARAM@73..83
-        NAME@73..74
-          IDENT@73..74 "T"
-        COLON@74..75 ":"
-        WHITESPACE@75..76 " "
-        TYPE_BOUND_LIST@76..83
-          TYPE_BOUND@76..78
-            LIFETIME@76..78
-              LIFETIME_IDENT@76..78 "'a"
-          WHITESPACE@78..79 " "
-          PLUS@79..80 "+"
-          WHITESPACE@80..81 " "
-          TYPE_BOUND@81..83
-            LIFETIME@81..83
-              LIFETIME_IDENT@81..83 "'d"
-      WHITESPACE@83..84 " "
-      R_ANGLE@84..85 ">"
-    SEMICOLON@85..86 ";"
-  WHITESPACE@86..87 "\n"
-  STRUCT@87..116
-    STRUCT_KW@87..93 "struct"
-    WHITESPACE@93..94 " "
-    NAME@94..95
-      IDENT@94..95 "F"
-    GENERIC_PARAM_LIST@95..115
-      L_ANGLE@95..96 "<"
-      TYPE_PARAM@96..114
-        NAME@96..97
-          IDENT@96..97 "T"
-        COLON@97..98 ":"
-        WHITESPACE@98..99 " "
-        TYPE_BOUND_LIST@99..114
-          TYPE_BOUND@99..101
-            LIFETIME@99..101
-              LIFETIME_IDENT@99..101 "'a"
-          WHITESPACE@101..102 " "
-          PLUS@102..103 "+"
-          WHITESPACE@103..104 " "
-          TYPE_BOUND@104..106
-            LIFETIME@104..106
-              LIFETIME_IDENT@104..106 "'d"
-          WHITESPACE@106..107 " "
-          PLUS@107..108 "+"
-          WHITESPACE@108..109 " "
-          TYPE_BOUND@109..114
-            PATH_TYPE@109..114
-              PATH@109..114
-                PATH_SEGMENT@109..114
-                  NAME_REF@109..114
-                    IDENT@109..114 "Clone"
-      R_ANGLE@114..115 ">"
-    SEMICOLON@115..116 ";"
-  WHITESPACE@116..117 "\n"
-  STRUCT@117..143
-    STRUCT_KW@117..123 "struct"
-    WHITESPACE@123..124 " "
-    NAME@124..125
-      IDENT@124..125 "G"
-    GENERIC_PARAM_LIST@125..142
-      L_ANGLE@125..126 "<"
-      TYPE_PARAM@126..141
-        NAME@126..127
-          IDENT@126..127 "T"
-        COLON@127..128 ":"
-        WHITESPACE@128..129 " "
-        TYPE_BOUND_LIST@129..141
-          TYPE_BOUND@129..134
-            PATH_TYPE@129..134
-              PATH@129..134
-                PATH_SEGMENT@129..134
-                  NAME_REF@129..134
-                    IDENT@129..134 "Clone"
-          WHITESPACE@134..135 " "
-          PLUS@135..136 "+"
-          WHITESPACE@136..137 " "
-          TYPE_BOUND@137..141
-            PATH_TYPE@137..141
-              PATH@137..141
-                PATH_SEGMENT@137..141
-                  NAME_REF@137..141
-                    IDENT@137..141 "Copy"
-      R_ANGLE@141..142 ">"
-    SEMICOLON@142..143 ";"
-  WHITESPACE@143..144 "\n"
-  STRUCT@144..180
-    STRUCT_KW@144..150 "struct"
-    WHITESPACE@150..151 " "
-    NAME@151..152
-      IDENT@151..152 "H"
-    GENERIC_PARAM_LIST@152..179
-      L_ANGLE@152..153 "<"
-      TYPE_PARAM@153..178
-        NAME@153..154
-          IDENT@153..154 "T"
-        COLON@154..155 ":"
-        WHITESPACE@155..156 " "
-        TYPE_BOUND_LIST@156..178
-          TYPE_BOUND@156..161
-            PATH_TYPE@156..161
-              PATH@156..161
-                PATH_SEGMENT@156..161
-                  COLON2@156..158 "::"
-                  NAME_REF@158..161
-                    IDENT@158..161 "Foo"
-          WHITESPACE@161..162 " "
-          PLUS@162..163 "+"
-          WHITESPACE@163..164 " "
-          TYPE_BOUND@164..173
-            PATH_TYPE@164..173
-              PATH@164..173
-                PATH@164..168
-                  PATH_SEGMENT@164..168
-                    NAME_REF@164..168
-                      SELF_KW@164..168 "self"
-                COLON2@168..170 "::"
-                PATH_SEGMENT@170..173
-                  NAME_REF@170..173
-                    IDENT@170..173 "Bar"
-          WHITESPACE@173..174 " "
-          PLUS@174..175 "+"
-          WHITESPACE@175..176 " "
-          TYPE_BOUND@176..178
-            LIFETIME@176..178
-              LIFETIME_IDENT@176..178 "'a"
-      R_ANGLE@178..179 ">"
-    SEMICOLON@179..180 ";"
-  WHITESPACE@180..181 "\n"
-  STRUCT@181..199
-    STRUCT_KW@181..187 "struct"
-    WHITESPACE@187..188 " "
-    NAME@188..189
-      IDENT@188..189 "I"
-    GENERIC_PARAM_LIST@189..198
-      L_ANGLE@189..190 "<"
-      TYPE_PARAM@190..192
-        NAME@190..191
-          IDENT@190..191 "T"
-        COLON@191..192 ":"
-        TYPE_BOUND_LIST@192..192
-      COMMA@192..193 ","
-      WHITESPACE@193..194 " "
-      TYPE_PARAM@194..196
-        NAME@194..195
-          IDENT@194..195 "U"
-        COLON@195..196 ":"
-        TYPE_BOUND_LIST@196..196
-      COMMA@196..197 ","
-      R_ANGLE@197..198 ">"
-    SEMICOLON@198..199 ";"
-  WHITESPACE@199..200 "\n"
-  STRUCT@200..250
-    STRUCT_KW@200..206 "struct"
-    WHITESPACE@206..207 " "
-    NAME@207..208
-      IDENT@207..208 "K"
-    GENERIC_PARAM_LIST@208..249
-      L_ANGLE@208..209 "<"
-      LIFETIME_PARAM@209..215
-        LIFETIME@209..211
-          LIFETIME_IDENT@209..211 "'a"
-        COLON@211..212 ":"
-        WHITESPACE@212..213 " "
-        LIFETIME@213..215
-          LIFETIME_IDENT@213..215 "'d"
-      COMMA@215..216 ","
-      WHITESPACE@216..217 " "
-      LIFETIME_PARAM@217..228
-        LIFETIME@217..219
-          LIFETIME_IDENT@217..219 "'d"
-        COLON@219..220 ":"
-        WHITESPACE@220..221 " "
-        LIFETIME@221..223
-          LIFETIME_IDENT@221..223 "'a"
-        WHITESPACE@223..224 " "
-        PLUS@224..225 "+"
-        WHITESPACE@225..226 " "
-        LIFETIME@226..228
-          LIFETIME_IDENT@226..228 "'b"
-      COMMA@228..229 ","
-      WHITESPACE@229..230 " "
-      TYPE_PARAM@230..248
-        NAME@230..231
-          IDENT@230..231 "T"
-        COLON@231..232 ":"
-        WHITESPACE@232..233 " "
-        TYPE_BOUND_LIST@233..248
-          TYPE_BOUND@233..235
-            LIFETIME@233..235
-              LIFETIME_IDENT@233..235 "'a"
-          WHITESPACE@235..236 " "
-          PLUS@236..237 "+"
-          WHITESPACE@237..238 " "
-          TYPE_BOUND@238..240
-            LIFETIME@238..240
-              LIFETIME_IDENT@238..240 "'d"
-          WHITESPACE@240..241 " "
-          PLUS@241..242 "+"
-          WHITESPACE@242..243 " "
-          TYPE_BOUND@243..248
-            PATH_TYPE@243..248
-              PATH@243..248
-                PATH_SEGMENT@243..248
-                  NAME_REF@243..248
-                    IDENT@243..248 "Clone"
-      R_ANGLE@248..249 ">"
-    SEMICOLON@249..250 ";"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "B"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        TYPE_BOUND_LIST
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "C"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "D"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          WHITESPACE " "
+          PLUS "+"
+      WHITESPACE " "
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "E"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'d"
+      WHITESPACE " "
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "F"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'d"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "G"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "H"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "Foo"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      SELF_KW "self"
+                COLON2 "::"
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Bar"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "I"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        TYPE_BOUND_LIST
+      COMMA ","
+      WHITESPACE " "
+      TYPE_PARAM
+        NAME
+          IDENT "U"
+        COLON ":"
+        TYPE_BOUND_LIST
+      COMMA ","
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "K"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'d"
+      COMMA ","
+      WHITESPACE " "
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'d"
+        COLON ":"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'a"
+        WHITESPACE " "
+        PLUS "+"
+        WHITESPACE " "
+        LIFETIME
+          LIFETIME_IDENT "'b"
+      COMMA ","
+      WHITESPACE " "
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            LIFETIME
+              LIFETIME_IDENT "'d"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Clone"
+      R_ANGLE ">"
+    SEMICOLON ";"
diff --git a/crates/parser/test_data/parser/ok/0020_type_param_bounds.txt b/crates/parser/test_data/parser/ok/0020_type_param_bounds.txt
deleted file mode 100644
index 043a966ff97..00000000000
--- a/crates/parser/test_data/parser/ok/0020_type_param_bounds.txt
+++ /dev/null
@@ -1,283 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "B"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        TYPE_BOUND_LIST
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "C"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "D"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          WHITESPACE " "
-          PLUS "+"
-      WHITESPACE " "
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "E"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'d"
-      WHITESPACE " "
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "F"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'d"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "G"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "H"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "Foo"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      SELF_KW "self"
-                COLON2 "::"
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Bar"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "I"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        TYPE_BOUND_LIST
-      COMMA ","
-      WHITESPACE " "
-      TYPE_PARAM
-        NAME
-          IDENT "U"
-        COLON ":"
-        TYPE_BOUND_LIST
-      COMMA ","
-      R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "K"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'d"
-      COMMA ","
-      WHITESPACE " "
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'d"
-        COLON ":"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'a"
-        WHITESPACE " "
-        PLUS "+"
-        WHITESPACE " "
-        LIFETIME
-          LIFETIME_IDENT "'b"
-      COMMA ","
-      WHITESPACE " "
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            LIFETIME
-              LIFETIME_IDENT "'d"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Clone"
-      R_ANGLE ">"
-    SEMICOLON ";"
diff --git a/crates/parser/test_data/parser/ok/0022_empty_extern_block.rast b/crates/parser/test_data/parser/ok/0022_empty_extern_block.rast
index 26abae3b29d..ef2fb66dd52 100644
--- a/crates/parser/test_data/parser/ok/0022_empty_extern_block.rast
+++ b/crates/parser/test_data/parser/ok/0022_empty_extern_block.rast
@@ -1,21 +1,21 @@
-SOURCE_FILE@0..27
-  EXTERN_BLOCK@0..10
-    ABI@0..6
-      EXTERN_KW@0..6 "extern"
-    WHITESPACE@6..7 " "
-    EXTERN_ITEM_LIST@7..10
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..9 "\n"
-      R_CURLY@9..10 "}"
-  WHITESPACE@10..12 "\n\n"
-  EXTERN_BLOCK@12..26
-    ABI@12..22
-      EXTERN_KW@12..18 "extern"
-      WHITESPACE@18..19 " "
-      STRING@19..22 "\"C\""
-    WHITESPACE@22..23 " "
-    EXTERN_ITEM_LIST@23..26
-      L_CURLY@23..24 "{"
-      WHITESPACE@24..25 "\n"
-      R_CURLY@25..26 "}"
-  WHITESPACE@26..27 "\n"
+SOURCE_FILE
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0022_empty_extern_block.txt b/crates/parser/test_data/parser/ok/0022_empty_extern_block.txt
deleted file mode 100644
index ef2fb66dd52..00000000000
--- a/crates/parser/test_data/parser/ok/0022_empty_extern_block.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0023_static_items.rast b/crates/parser/test_data/parser/ok/0023_static_items.rast
index 9374cf5e965..b164e828e30 100644
--- a/crates/parser/test_data/parser/ok/0023_static_items.rast
+++ b/crates/parser/test_data/parser/ok/0023_static_items.rast
@@ -1,41 +1,41 @@
-SOURCE_FILE@0..47
-  STATIC@0..20
-    STATIC_KW@0..6 "static"
-    WHITESPACE@6..7 " "
-    NAME@7..10
-      IDENT@7..10 "FOO"
-    COLON@10..11 ":"
-    WHITESPACE@11..12 " "
-    PATH_TYPE@12..15
-      PATH@12..15
-        PATH_SEGMENT@12..15
-          NAME_REF@12..15
-            IDENT@12..15 "u32"
-    WHITESPACE@15..16 " "
-    EQ@16..17 "="
-    WHITESPACE@17..18 " "
-    LITERAL@18..19
-      INT_NUMBER@18..19 "1"
-    SEMICOLON@19..20 ";"
-  WHITESPACE@20..21 "\n"
-  STATIC@21..46
-    STATIC_KW@21..27 "static"
-    WHITESPACE@27..28 " "
-    MUT_KW@28..31 "mut"
-    WHITESPACE@31..32 " "
-    NAME@32..35
-      IDENT@32..35 "BAR"
-    COLON@35..36 ":"
-    WHITESPACE@36..37 " "
-    PATH_TYPE@37..40
-      PATH@37..40
-        PATH_SEGMENT@37..40
-          NAME_REF@37..40
-            IDENT@37..40 "i32"
-    WHITESPACE@40..41 " "
-    EQ@41..42 "="
-    WHITESPACE@42..43 " "
-    LITERAL@43..45
-      INT_NUMBER@43..45 "92"
-    SEMICOLON@45..46 ";"
-  WHITESPACE@46..47 "\n"
+SOURCE_FILE
+  STATIC
+    STATIC_KW "static"
+    WHITESPACE " "
+    NAME
+      IDENT "FOO"
+    COLON ":"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "u32"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    LITERAL
+      INT_NUMBER "1"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  STATIC
+    STATIC_KW "static"
+    WHITESPACE " "
+    MUT_KW "mut"
+    WHITESPACE " "
+    NAME
+      IDENT "BAR"
+    COLON ":"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "i32"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    LITERAL
+      INT_NUMBER "92"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0023_static_items.txt b/crates/parser/test_data/parser/ok/0023_static_items.txt
deleted file mode 100644
index b164e828e30..00000000000
--- a/crates/parser/test_data/parser/ok/0023_static_items.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE
-  STATIC
-    STATIC_KW "static"
-    WHITESPACE " "
-    NAME
-      IDENT "FOO"
-    COLON ":"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "u32"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    LITERAL
-      INT_NUMBER "1"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  STATIC
-    STATIC_KW "static"
-    WHITESPACE " "
-    MUT_KW "mut"
-    WHITESPACE " "
-    NAME
-      IDENT "BAR"
-    COLON ":"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "i32"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    LITERAL
-      INT_NUMBER "92"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0024_const_item.rast b/crates/parser/test_data/parser/ok/0024_const_item.rast
index 6b234b0b241..40b9ef804c2 100644
--- a/crates/parser/test_data/parser/ok/0024_const_item.rast
+++ b/crates/parser/test_data/parser/ok/0024_const_item.rast
@@ -1 +1 @@
-SOURCE_FILE@0..0
+SOURCE_FILE
diff --git a/crates/parser/test_data/parser/ok/0024_const_item.txt b/crates/parser/test_data/parser/ok/0024_const_item.txt
deleted file mode 100644
index 40b9ef804c2..00000000000
--- a/crates/parser/test_data/parser/ok/0024_const_item.txt
+++ /dev/null
@@ -1 +0,0 @@
-SOURCE_FILE
diff --git a/crates/parser/test_data/parser/ok/0025_extern_fn_in_block.rast b/crates/parser/test_data/parser/ok/0025_extern_fn_in_block.rast
index 21ed8ebfa48..9c5f5ac64e9 100644
--- a/crates/parser/test_data/parser/ok/0025_extern_fn_in_block.rast
+++ b/crates/parser/test_data/parser/ok/0025_extern_fn_in_block.rast
@@ -1,33 +1,33 @@
-SOURCE_FILE@0..35
-  FN@0..34
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..34
-      STMT_LIST@10..34
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        FN@16..32
-          ABI@16..22
-            EXTERN_KW@16..22 "extern"
-          WHITESPACE@22..23 " "
-          FN_KW@23..25 "fn"
-          WHITESPACE@25..26 " "
-          NAME@26..27
-            IDENT@26..27 "f"
-          PARAM_LIST@27..29
-            L_PAREN@27..28 "("
-            R_PAREN@28..29 ")"
-          WHITESPACE@29..30 " "
-          BLOCK_EXPR@30..32
-            STMT_LIST@30..32
-              L_CURLY@30..31 "{"
-              R_CURLY@31..32 "}"
-        WHITESPACE@32..33 "\n"
-        R_CURLY@33..34 "}"
-  WHITESPACE@34..35 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        FN
+          ABI
+            EXTERN_KW "extern"
+          WHITESPACE " "
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "f"
+          PARAM_LIST
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0025_extern_fn_in_block.txt b/crates/parser/test_data/parser/ok/0025_extern_fn_in_block.txt
deleted file mode 100644
index 9c5f5ac64e9..00000000000
--- a/crates/parser/test_data/parser/ok/0025_extern_fn_in_block.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        FN
-          ABI
-            EXTERN_KW "extern"
-          WHITESPACE " "
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "f"
-          PARAM_LIST
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0026_const_fn_in_block.rast b/crates/parser/test_data/parser/ok/0026_const_fn_in_block.rast
index ad4cd31cb65..ca9a3df86f6 100644
--- a/crates/parser/test_data/parser/ok/0026_const_fn_in_block.rast
+++ b/crates/parser/test_data/parser/ok/0026_const_fn_in_block.rast
@@ -1,32 +1,32 @@
-SOURCE_FILE@0..34
-  FN@0..33
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..33
-      STMT_LIST@10..33
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        FN@16..31
-          CONST_KW@16..21 "const"
-          WHITESPACE@21..22 " "
-          FN_KW@22..24 "fn"
-          WHITESPACE@24..25 " "
-          NAME@25..26
-            IDENT@25..26 "f"
-          PARAM_LIST@26..28
-            L_PAREN@26..27 "("
-            R_PAREN@27..28 ")"
-          WHITESPACE@28..29 " "
-          BLOCK_EXPR@29..31
-            STMT_LIST@29..31
-              L_CURLY@29..30 "{"
-              R_CURLY@30..31 "}"
-        WHITESPACE@31..32 "\n"
-        R_CURLY@32..33 "}"
-  WHITESPACE@33..34 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        FN
+          CONST_KW "const"
+          WHITESPACE " "
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "f"
+          PARAM_LIST
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0026_const_fn_in_block.txt b/crates/parser/test_data/parser/ok/0026_const_fn_in_block.txt
deleted file mode 100644
index ca9a3df86f6..00000000000
--- a/crates/parser/test_data/parser/ok/0026_const_fn_in_block.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        FN
-          CONST_KW "const"
-          WHITESPACE " "
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "f"
-          PARAM_LIST
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.rast b/crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.rast
index eb1fa2819c0..88ebd109520 100644
--- a/crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.rast
+++ b/crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.rast
@@ -1,43 +1,43 @@
-SOURCE_FILE@0..53
-  FN@0..52
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..52
-      STMT_LIST@10..52
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        FN@16..32
-          UNSAFE_KW@16..22 "unsafe"
-          WHITESPACE@22..23 " "
-          FN_KW@23..25 "fn"
-          WHITESPACE@25..26 " "
-          NAME@26..27
-            IDENT@26..27 "f"
-          PARAM_LIST@27..29
-            L_PAREN@27..28 "("
-            R_PAREN@28..29 ")"
-          WHITESPACE@29..30 " "
-          BLOCK_EXPR@30..32
-            STMT_LIST@30..32
-              L_CURLY@30..31 "{"
-              R_CURLY@31..32 "}"
-        WHITESPACE@32..37 "\n    "
-        BLOCK_EXPR@37..50
-          UNSAFE_KW@37..43 "unsafe"
-          WHITESPACE@43..44 " "
-          STMT_LIST@44..50
-            L_CURLY@44..45 "{"
-            WHITESPACE@45..46 " "
-            LITERAL@46..48
-              INT_NUMBER@46..48 "92"
-            WHITESPACE@48..49 " "
-            R_CURLY@49..50 "}"
-        WHITESPACE@50..51 "\n"
-        R_CURLY@51..52 "}"
-  WHITESPACE@52..53 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        FN
+          UNSAFE_KW "unsafe"
+          WHITESPACE " "
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "f"
+          PARAM_LIST
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        BLOCK_EXPR
+          UNSAFE_KW "unsafe"
+          WHITESPACE " "
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "92"
+            WHITESPACE " "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.txt b/crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.txt
deleted file mode 100644
index 88ebd109520..00000000000
--- a/crates/parser/test_data/parser/ok/0027_unsafe_fn_in_block.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        FN
-          UNSAFE_KW "unsafe"
-          WHITESPACE " "
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "f"
-          PARAM_LIST
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        BLOCK_EXPR
-          UNSAFE_KW "unsafe"
-          WHITESPACE " "
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "92"
-            WHITESPACE " "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0028_operator_binding_power.rast b/crates/parser/test_data/parser/ok/0028_operator_binding_power.rast
index 96c75052fa8..ae08c0756aa 100644
--- a/crates/parser/test_data/parser/ok/0028_operator_binding_power.rast
+++ b/crates/parser/test_data/parser/ok/0028_operator_binding_power.rast
@@ -1,186 +1,186 @@
-SOURCE_FILE@0..248
-  FN@0..247
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..16
-      IDENT@3..16 "binding_power"
-    PARAM_LIST@16..18
-      L_PAREN@16..17 "("
-      R_PAREN@17..18 ")"
-    WHITESPACE@18..19 " "
-    BLOCK_EXPR@19..247
-      STMT_LIST@19..247
-        L_CURLY@19..20 "{"
-        WHITESPACE@20..25 "\n    "
-        LET_STMT@25..55
-          LET_KW@25..28 "let"
-          WHITESPACE@28..29 " "
-          IDENT_PAT@29..30
-            NAME@29..30
-              IDENT@29..30 "x"
-          WHITESPACE@30..31 " "
-          EQ@31..32 "="
-          WHITESPACE@32..33 " "
-          BIN_EXPR@33..54
-            BIN_EXPR@33..46
-              LITERAL@33..34
-                INT_NUMBER@33..34 "1"
-              WHITESPACE@34..35 " "
-              PLUS@35..36 "+"
-              WHITESPACE@36..37 " "
-              BIN_EXPR@37..46
-                BIN_EXPR@37..42
-                  LITERAL@37..38
-                    INT_NUMBER@37..38 "2"
-                  WHITESPACE@38..39 " "
-                  STAR@39..40 "*"
-                  WHITESPACE@40..41 " "
-                  LITERAL@41..42
-                    INT_NUMBER@41..42 "3"
-                WHITESPACE@42..43 " "
-                PERCENT@43..44 "%"
-                WHITESPACE@44..45 " "
-                LITERAL@45..46
-                  INT_NUMBER@45..46 "4"
-            WHITESPACE@46..47 " "
-            MINUS@47..48 "-"
-            WHITESPACE@48..49 " "
-            BIN_EXPR@49..54
-              LITERAL@49..50
-                INT_NUMBER@49..50 "5"
-              WHITESPACE@50..51 " "
-              SLASH@51..52 "/"
-              WHITESPACE@52..53 " "
-              LITERAL@53..54
-                INT_NUMBER@53..54 "6"
-          SEMICOLON@54..55 ";"
-        WHITESPACE@55..60 "\n    "
-        EXPR_STMT@60..70
-          BIN_EXPR@60..69
-            LITERAL@60..61
-              INT_NUMBER@60..61 "1"
-            WHITESPACE@61..62 " "
-            PLUS@62..63 "+"
-            WHITESPACE@63..64 " "
-            BIN_EXPR@64..69
-              LITERAL@64..65
-                INT_NUMBER@64..65 "2"
-              WHITESPACE@65..66 " "
-              STAR@66..67 "*"
-              WHITESPACE@67..68 " "
-              LITERAL@68..69
-                INT_NUMBER@68..69 "3"
-          SEMICOLON@69..70 ";"
-        WHITESPACE@70..75 "\n    "
-        EXPR_STMT@75..86
-          BIN_EXPR@75..85
-            LITERAL@75..76
-              INT_NUMBER@75..76 "1"
-            WHITESPACE@76..77 " "
-            SHL@77..79 "<<"
-            WHITESPACE@79..80 " "
-            BIN_EXPR@80..85
-              LITERAL@80..81
-                INT_NUMBER@80..81 "2"
-              WHITESPACE@81..82 " "
-              PLUS@82..83 "+"
-              WHITESPACE@83..84 " "
-              LITERAL@84..85
-                INT_NUMBER@84..85 "3"
-          SEMICOLON@85..86 ";"
-        WHITESPACE@86..91 "\n    "
-        EXPR_STMT@91..102
-          BIN_EXPR@91..101
-            LITERAL@91..92
-              INT_NUMBER@91..92 "1"
-            WHITESPACE@92..93 " "
-            AMP@93..94 "&"
-            WHITESPACE@94..95 " "
-            BIN_EXPR@95..101
-              LITERAL@95..96
-                INT_NUMBER@95..96 "2"
-              WHITESPACE@96..97 " "
-              SHR@97..99 ">>"
-              WHITESPACE@99..100 " "
-              LITERAL@100..101
-                INT_NUMBER@100..101 "3"
-          SEMICOLON@101..102 ";"
-        WHITESPACE@102..107 "\n    "
-        EXPR_STMT@107..117
-          BIN_EXPR@107..116
-            LITERAL@107..108
-              INT_NUMBER@107..108 "1"
-            WHITESPACE@108..109 " "
-            CARET@109..110 "^"
-            WHITESPACE@110..111 " "
-            BIN_EXPR@111..116
-              LITERAL@111..112
-                INT_NUMBER@111..112 "2"
-              WHITESPACE@112..113 " "
-              AMP@113..114 "&"
-              WHITESPACE@114..115 " "
-              LITERAL@115..116
-                INT_NUMBER@115..116 "3"
-          SEMICOLON@116..117 ";"
-        WHITESPACE@117..122 "\n    "
-        EXPR_STMT@122..132
-          BIN_EXPR@122..131
-            LITERAL@122..123
-              INT_NUMBER@122..123 "1"
-            WHITESPACE@123..124 " "
-            PIPE@124..125 "|"
-            WHITESPACE@125..126 " "
-            BIN_EXPR@126..131
-              LITERAL@126..127
-                INT_NUMBER@126..127 "2"
-              WHITESPACE@127..128 " "
-              CARET@128..129 "^"
-              WHITESPACE@129..130 " "
-              LITERAL@130..131
-                INT_NUMBER@130..131 "3"
-          SEMICOLON@131..132 ";"
-        WHITESPACE@132..137 "\n    "
-        EXPR_STMT@137..148
-          BIN_EXPR@137..147
-            LITERAL@137..138
-              INT_NUMBER@137..138 "1"
-            WHITESPACE@138..139 " "
-            EQ2@139..141 "=="
-            WHITESPACE@141..142 " "
-            BIN_EXPR@142..147
-              LITERAL@142..143
-                INT_NUMBER@142..143 "2"
-              WHITESPACE@143..144 " "
-              PIPE@144..145 "|"
-              WHITESPACE@145..146 " "
-              LITERAL@146..147
-                INT_NUMBER@146..147 "3"
-          SEMICOLON@147..148 ";"
-        WHITESPACE@148..153 "\n    "
-        EXPR_STMT@153..165
-          BIN_EXPR@153..164
-            LITERAL@153..154
-              INT_NUMBER@153..154 "1"
-            WHITESPACE@154..155 " "
-            AMP2@155..157 "&&"
-            WHITESPACE@157..158 " "
-            BIN_EXPR@158..164
-              LITERAL@158..159
-                INT_NUMBER@158..159 "2"
-              WHITESPACE@159..160 " "
-              EQ2@160..162 "=="
-              WHITESPACE@162..163 " "
-              LITERAL@163..164
-                INT_NUMBER@163..164 "3"
-          SEMICOLON@164..165 ";"
-        WHITESPACE@165..170 "\n    "
-        COMMENT@170..184 "//1 || 2 && 2;"
-        WHITESPACE@184..189 "\n    "
-        COMMENT@189..203 "//1 .. 2 || 3;"
-        WHITESPACE@203..208 "\n    "
-        COMMENT@208..221 "//1 = 2 .. 3;"
-        WHITESPACE@221..226 "\n    "
-        COMMENT@226..245 "//---&*1 - --2 * 9;"
-        WHITESPACE@245..246 "\n"
-        R_CURLY@246..247 "}"
-  WHITESPACE@247..248 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "binding_power"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BIN_EXPR
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "1"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              BIN_EXPR
+                BIN_EXPR
+                  LITERAL
+                    INT_NUMBER "2"
+                  WHITESPACE " "
+                  STAR "*"
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "3"
+                WHITESPACE " "
+                PERCENT "%"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "4"
+            WHITESPACE " "
+            MINUS "-"
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "5"
+              WHITESPACE " "
+              SLASH "/"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "6"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            WHITESPACE " "
+            PLUS "+"
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE " "
+              STAR "*"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            WHITESPACE " "
+            SHL "<<"
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            WHITESPACE " "
+            AMP "&"
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE " "
+              SHR ">>"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            WHITESPACE " "
+            CARET "^"
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE " "
+              AMP "&"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            WHITESPACE " "
+            PIPE "|"
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE " "
+              CARET "^"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            WHITESPACE " "
+            EQ2 "=="
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE " "
+              PIPE "|"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            WHITESPACE " "
+            AMP2 "&&"
+            WHITESPACE " "
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "2"
+              WHITESPACE " "
+              EQ2 "=="
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        COMMENT "//1 || 2 && 2;"
+        WHITESPACE "\n    "
+        COMMENT "//1 .. 2 || 3;"
+        WHITESPACE "\n    "
+        COMMENT "//1 = 2 .. 3;"
+        WHITESPACE "\n    "
+        COMMENT "//---&*1 - --2 * 9;"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0028_operator_binding_power.txt b/crates/parser/test_data/parser/ok/0028_operator_binding_power.txt
deleted file mode 100644
index ae08c0756aa..00000000000
--- a/crates/parser/test_data/parser/ok/0028_operator_binding_power.txt
+++ /dev/null
@@ -1,186 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "binding_power"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BIN_EXPR
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "1"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              BIN_EXPR
-                BIN_EXPR
-                  LITERAL
-                    INT_NUMBER "2"
-                  WHITESPACE " "
-                  STAR "*"
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "3"
-                WHITESPACE " "
-                PERCENT "%"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "4"
-            WHITESPACE " "
-            MINUS "-"
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "5"
-              WHITESPACE " "
-              SLASH "/"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "6"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            WHITESPACE " "
-            PLUS "+"
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE " "
-              STAR "*"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            WHITESPACE " "
-            SHL "<<"
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            WHITESPACE " "
-            AMP "&"
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE " "
-              SHR ">>"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            WHITESPACE " "
-            CARET "^"
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE " "
-              AMP "&"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            WHITESPACE " "
-            PIPE "|"
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE " "
-              CARET "^"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            WHITESPACE " "
-            EQ2 "=="
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE " "
-              PIPE "|"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            WHITESPACE " "
-            AMP2 "&&"
-            WHITESPACE " "
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "2"
-              WHITESPACE " "
-              EQ2 "=="
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        COMMENT "//1 || 2 && 2;"
-        WHITESPACE "\n    "
-        COMMENT "//1 .. 2 || 3;"
-        WHITESPACE "\n    "
-        COMMENT "//1 = 2 .. 3;"
-        WHITESPACE "\n    "
-        COMMENT "//---&*1 - --2 * 9;"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0029_range_forms.rast b/crates/parser/test_data/parser/ok/0029_range_forms.rast
index 486bab8df10..5acc54e713e 100644
--- a/crates/parser/test_data/parser/ok/0029_range_forms.rast
+++ b/crates/parser/test_data/parser/ok/0029_range_forms.rast
@@ -1,152 +1,152 @@
-SOURCE_FILE@0..153
-  FN@0..152
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..152
-      STMT_LIST@9..152
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..23
-          RANGE_EXPR@15..22
-            DOT2@15..17 ".."
-            BIN_EXPR@17..22
-              LITERAL@17..18
-                INT_NUMBER@17..18 "1"
-              WHITESPACE@18..19 " "
-              PLUS@19..20 "+"
-              WHITESPACE@20..21 " "
-              LITERAL@21..22
-                INT_NUMBER@21..22 "1"
-          SEMICOLON@22..23 ";"
-        WHITESPACE@23..28 "\n    "
-        EXPR_STMT@28..36
-          BIN_EXPR@28..35
-            RANGE_EXPR@28..31
-              DOT2@28..30 ".."
-              PATH_EXPR@30..31
-                PATH@30..31
-                  PATH_SEGMENT@30..31
-                    NAME_REF@30..31
-                      IDENT@30..31 "z"
-            WHITESPACE@31..32 " "
-            EQ@32..33 "="
-            WHITESPACE@33..34 " "
-            LITERAL@34..35
-              INT_NUMBER@34..35 "2"
-          SEMICOLON@35..36 ";"
-        WHITESPACE@36..41 "\n    "
-        EXPR_STMT@41..59
-          BIN_EXPR@41..58
-            PATH_EXPR@41..42
-              PATH@41..42
-                PATH_SEGMENT@41..42
-                  NAME_REF@41..42
-                    IDENT@41..42 "x"
-            WHITESPACE@42..43 " "
-            EQ@43..44 "="
-            WHITESPACE@44..45 " "
-            RANGE_EXPR@45..58
-              LITERAL@45..50
-                FALSE_KW@45..50 "false"
-              DOT2@50..52 ".."
-              BIN_EXPR@52..58
-                LITERAL@52..53
-                  INT_NUMBER@52..53 "1"
-                WHITESPACE@53..54 " "
-                EQ2@54..56 "=="
-                WHITESPACE@56..57 " "
-                LITERAL@57..58
-                  INT_NUMBER@57..58 "1"
-          SEMICOLON@58..59 ";"
-        WHITESPACE@59..64 "\n    "
-        LET_STMT@64..76
-          LET_KW@64..67 "let"
-          WHITESPACE@67..68 " "
-          IDENT_PAT@68..69
-            NAME@68..69
-              IDENT@68..69 "x"
-          WHITESPACE@69..70 " "
-          EQ@70..71 "="
-          WHITESPACE@71..72 " "
-          RANGE_EXPR@72..75
-            LITERAL@72..73
-              INT_NUMBER@72..73 "1"
-            DOT2@73..75 ".."
-          SEMICOLON@75..76 ";"
-        WHITESPACE@76..86 "\n    \n    "
-        EXPR_STMT@86..95
-          RANGE_EXPR@86..94
-            DOT2EQ@86..89 "..="
-            BIN_EXPR@89..94
-              LITERAL@89..90
-                INT_NUMBER@89..90 "1"
-              WHITESPACE@90..91 " "
-              PLUS@91..92 "+"
-              WHITESPACE@92..93 " "
-              LITERAL@93..94
-                INT_NUMBER@93..94 "1"
-          SEMICOLON@94..95 ";"
-        WHITESPACE@95..100 "\n    "
-        EXPR_STMT@100..109
-          BIN_EXPR@100..108
-            RANGE_EXPR@100..104
-              DOT2EQ@100..103 "..="
-              PATH_EXPR@103..104
-                PATH@103..104
-                  PATH_SEGMENT@103..104
-                    NAME_REF@103..104
-                      IDENT@103..104 "z"
-            WHITESPACE@104..105 " "
-            EQ@105..106 "="
-            WHITESPACE@106..107 " "
-            LITERAL@107..108
-              INT_NUMBER@107..108 "2"
-          SEMICOLON@108..109 ";"
-        WHITESPACE@109..114 "\n    "
-        EXPR_STMT@114..133
-          BIN_EXPR@114..132
-            PATH_EXPR@114..115
-              PATH@114..115
-                PATH_SEGMENT@114..115
-                  NAME_REF@114..115
-                    IDENT@114..115 "x"
-            WHITESPACE@115..116 " "
-            EQ@116..117 "="
-            WHITESPACE@117..118 " "
-            RANGE_EXPR@118..132
-              LITERAL@118..123
-                FALSE_KW@118..123 "false"
-              DOT2EQ@123..126 "..="
-              BIN_EXPR@126..132
-                LITERAL@126..127
-                  INT_NUMBER@126..127 "1"
-                WHITESPACE@127..128 " "
-                EQ2@128..130 "=="
-                WHITESPACE@130..131 " "
-                LITERAL@131..132
-                  INT_NUMBER@131..132 "1"
-          SEMICOLON@132..133 ";"
-        WHITESPACE@133..138 "\n    "
-        LET_STMT@138..150
-          LET_KW@138..141 "let"
-          WHITESPACE@141..142 " "
-          IDENT_PAT@142..143
-            NAME@142..143
-              IDENT@142..143 "x"
-          WHITESPACE@143..144 " "
-          EQ@144..145 "="
-          WHITESPACE@145..146 " "
-          RANGE_EXPR@146..149
-            LITERAL@146..147
-              INT_NUMBER@146..147 "1"
-            DOT2@147..149 ".."
-          SEMICOLON@149..150 ";"
-        WHITESPACE@150..151 "\n"
-        R_CURLY@151..152 "}"
-  WHITESPACE@152..153 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RANGE_EXPR
+            DOT2 ".."
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "1"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            RANGE_EXPR
+              DOT2 ".."
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "z"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            RANGE_EXPR
+              LITERAL
+                FALSE_KW "false"
+              DOT2 ".."
+              BIN_EXPR
+                LITERAL
+                  INT_NUMBER "1"
+                WHITESPACE " "
+                EQ2 "=="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          RANGE_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            DOT2 ".."
+          SEMICOLON ";"
+        WHITESPACE "\n    \n    "
+        EXPR_STMT
+          RANGE_EXPR
+            DOT2EQ "..="
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "1"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            RANGE_EXPR
+              DOT2EQ "..="
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "z"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "x"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            RANGE_EXPR
+              LITERAL
+                FALSE_KW "false"
+              DOT2EQ "..="
+              BIN_EXPR
+                LITERAL
+                  INT_NUMBER "1"
+                WHITESPACE " "
+                EQ2 "=="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "x"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          RANGE_EXPR
+            LITERAL
+              INT_NUMBER "1"
+            DOT2 ".."
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0029_range_forms.txt b/crates/parser/test_data/parser/ok/0029_range_forms.txt
deleted file mode 100644
index 5acc54e713e..00000000000
--- a/crates/parser/test_data/parser/ok/0029_range_forms.txt
+++ /dev/null
@@ -1,152 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RANGE_EXPR
-            DOT2 ".."
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "1"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            RANGE_EXPR
-              DOT2 ".."
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "z"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            RANGE_EXPR
-              LITERAL
-                FALSE_KW "false"
-              DOT2 ".."
-              BIN_EXPR
-                LITERAL
-                  INT_NUMBER "1"
-                WHITESPACE " "
-                EQ2 "=="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          RANGE_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            DOT2 ".."
-          SEMICOLON ";"
-        WHITESPACE "\n    \n    "
-        EXPR_STMT
-          RANGE_EXPR
-            DOT2EQ "..="
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "1"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            RANGE_EXPR
-              DOT2EQ "..="
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "z"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "x"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            RANGE_EXPR
-              LITERAL
-                FALSE_KW "false"
-              DOT2EQ "..="
-              BIN_EXPR
-                LITERAL
-                  INT_NUMBER "1"
-                WHITESPACE " "
-                EQ2 "=="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "x"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          RANGE_EXPR
-            LITERAL
-              INT_NUMBER "1"
-            DOT2 ".."
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0030_string_suffixes.rast b/crates/parser/test_data/parser/ok/0030_string_suffixes.rast
index 9f59c0ecb69..44211c7c420 100644
--- a/crates/parser/test_data/parser/ok/0030_string_suffixes.rast
+++ b/crates/parser/test_data/parser/ok/0030_string_suffixes.rast
@@ -1,64 +1,64 @@
-SOURCE_FILE@0..112
-  FN@0..111
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..111
-      STMT_LIST@10..111
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        LET_STMT@16..31
-          LET_KW@16..19 "let"
-          WHITESPACE@19..20 " "
-          WILDCARD_PAT@20..21
-            UNDERSCORE@20..21 "_"
-          WHITESPACE@21..22 " "
-          EQ@22..23 "="
-          WHITESPACE@23..24 " "
-          LITERAL@24..30
-            CHAR@24..30 "'c'u32"
-          SEMICOLON@30..31 ";"
-        WHITESPACE@31..36 "\n    "
-        LET_STMT@36..60
-          LET_KW@36..39 "let"
-          WHITESPACE@39..40 " "
-          WILDCARD_PAT@40..41
-            UNDERSCORE@40..41 "_"
-          WHITESPACE@41..42 " "
-          EQ@42..43 "="
-          WHITESPACE@43..44 " "
-          LITERAL@44..59
-            STRING@44..59 "\"string\"invalid"
-          SEMICOLON@59..60 ";"
-        WHITESPACE@60..65 "\n    "
-        LET_STMT@65..83
-          LET_KW@65..68 "let"
-          WHITESPACE@68..69 " "
-          WILDCARD_PAT@69..70
-            UNDERSCORE@69..70 "_"
-          WHITESPACE@70..71 " "
-          EQ@71..72 "="
-          WHITESPACE@72..73 " "
-          LITERAL@73..82
-            BYTE@73..82 "b'b'_suff"
-          SEMICOLON@82..83 ";"
-        WHITESPACE@83..88 "\n    "
-        LET_STMT@88..109
-          LET_KW@88..91 "let"
-          WHITESPACE@91..92 " "
-          WILDCARD_PAT@92..93
-            UNDERSCORE@92..93 "_"
-          WHITESPACE@93..94 " "
-          EQ@94..95 "="
-          WHITESPACE@95..96 " "
-          LITERAL@96..108
-            BYTE_STRING@96..108 "b\"bs\"invalid"
-          SEMICOLON@108..109 ";"
-        WHITESPACE@109..110 "\n"
-        R_CURLY@110..111 "}"
-  WHITESPACE@111..112 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            CHAR "'c'u32"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            STRING "\"string\"invalid"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            BYTE "b'b'_suff"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            BYTE_STRING "b\"bs\"invalid"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0030_string_suffixes.txt b/crates/parser/test_data/parser/ok/0030_string_suffixes.txt
deleted file mode 100644
index 44211c7c420..00000000000
--- a/crates/parser/test_data/parser/ok/0030_string_suffixes.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            CHAR "'c'u32"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            STRING "\"string\"invalid"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            BYTE "b'b'_suff"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            BYTE_STRING "b\"bs\"invalid"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0030_traits.rast b/crates/parser/test_data/parser/ok/0030_traits.rast
index d07c6683a3d..44423581e6a 100644
--- a/crates/parser/test_data/parser/ok/0030_traits.rast
+++ b/crates/parser/test_data/parser/ok/0030_traits.rast
@@ -1,61 +1,61 @@
-SOURCE_FILE@0..96
-  TRAIT@0..36
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..14
-      IDENT@6..14 "Runnable"
-    WHITESPACE@14..15 " "
-    ASSOC_ITEM_LIST@15..36
-      L_CURLY@15..16 "{"
-      WHITESPACE@16..21 "\n    "
-      FN@21..34
-        FN_KW@21..23 "fn"
-        WHITESPACE@23..24 " "
-        NAME@24..31
-          IDENT@24..31 "handler"
-        PARAM_LIST@31..33
-          L_PAREN@31..32 "("
-          R_PAREN@32..33 ")"
-        SEMICOLON@33..34 ";"
-      WHITESPACE@34..35 "\n"
-      R_CURLY@35..36 "}"
-  WHITESPACE@36..38 "\n\n"
-  TRAIT@38..95
-    TRAIT_KW@38..43 "trait"
-    WHITESPACE@43..44 " "
-    NAME@44..57
-      IDENT@44..57 "TraitWithExpr"
-    WHITESPACE@57..58 " "
-    ASSOC_ITEM_LIST@58..95
-      L_CURLY@58..59 "{"
-      WHITESPACE@59..64 "\n    "
-      FN@64..93
-        FN_KW@64..66 "fn"
-        WHITESPACE@66..67 " "
-        NAME@67..79
-          IDENT@67..79 "fn_with_expr"
-        PARAM_LIST@79..92
-          L_PAREN@79..80 "("
-          PARAM@80..91
-            IDENT_PAT@80..81
-              NAME@80..81
-                IDENT@80..81 "x"
-            COLON@81..82 ":"
-            WHITESPACE@82..83 " "
-            ARRAY_TYPE@83..91
-              L_BRACK@83..84 "["
-              PATH_TYPE@84..87
-                PATH@84..87
-                  PATH_SEGMENT@84..87
-                    NAME_REF@84..87
-                      IDENT@84..87 "i32"
-              SEMICOLON@87..88 ";"
-              WHITESPACE@88..89 " "
-              LITERAL@89..90
-                INT_NUMBER@89..90 "1"
-              R_BRACK@90..91 "]"
-          R_PAREN@91..92 ")"
-        SEMICOLON@92..93 ";"
-      WHITESPACE@93..94 "\n"
-      R_CURLY@94..95 "}"
-  WHITESPACE@95..96 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "Runnable"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "handler"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "TraitWithExpr"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "fn_with_expr"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "x"
+            COLON ":"
+            WHITESPACE " "
+            ARRAY_TYPE
+              L_BRACK "["
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i32"
+              SEMICOLON ";"
+              WHITESPACE " "
+              LITERAL
+                INT_NUMBER "1"
+              R_BRACK "]"
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0030_traits.txt b/crates/parser/test_data/parser/ok/0030_traits.txt
deleted file mode 100644
index 44423581e6a..00000000000
--- a/crates/parser/test_data/parser/ok/0030_traits.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "Runnable"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "handler"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "TraitWithExpr"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "fn_with_expr"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "x"
-            COLON ":"
-            WHITESPACE " "
-            ARRAY_TYPE
-              L_BRACK "["
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i32"
-              SEMICOLON ";"
-              WHITESPACE " "
-              LITERAL
-                INT_NUMBER "1"
-              R_BRACK "]"
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0031_extern.rast b/crates/parser/test_data/parser/ok/0031_extern.rast
index 8150d445f37..70b52780862 100644
--- a/crates/parser/test_data/parser/ok/0031_extern.rast
+++ b/crates/parser/test_data/parser/ok/0031_extern.rast
@@ -1,973 +1,973 @@
-SOURCE_FILE@0..1598
-  EXTERN_BLOCK@0..1597
-    ABI@0..6
-      EXTERN_KW@0..6 "extern"
-    WHITESPACE@6..7 " "
-    EXTERN_ITEM_LIST@7..1597
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..13 "\n    "
-      FN@13..87
-        VISIBILITY@13..16
-          PUB_KW@13..16 "pub"
-        WHITESPACE@16..17 " "
-        FN_KW@17..19 "fn"
-        WHITESPACE@19..20 " "
-        NAME@20..26
-          IDENT@20..26 "socket"
-        PARAM_LIST@26..75
-          L_PAREN@26..27 "("
-          PARAM@27..42
-            IDENT_PAT@27..33
-              NAME@27..33
-                IDENT@27..33 "domain"
-            COLON@33..34 ":"
-            WHITESPACE@34..35 " "
-            PATH_TYPE@35..42
-              PATH@35..42
-                PATH_SEGMENT@35..42
-                  COLON2@35..37 "::"
-                  NAME_REF@37..42
-                    IDENT@37..42 "c_int"
-          COMMA@42..43 ","
-          WHITESPACE@43..44 " "
-          PARAM@44..55
-            IDENT_PAT@44..46
-              NAME@44..46
-                IDENT@44..46 "ty"
-            COLON@46..47 ":"
-            WHITESPACE@47..48 " "
-            PATH_TYPE@48..55
-              PATH@48..55
-                PATH_SEGMENT@48..55
-                  COLON2@48..50 "::"
-                  NAME_REF@50..55
-                    IDENT@50..55 "c_int"
-          COMMA@55..56 ","
-          WHITESPACE@56..57 " "
-          PARAM@57..74
-            IDENT_PAT@57..65
-              NAME@57..65
-                IDENT@57..65 "protocol"
-            COLON@65..66 ":"
-            WHITESPACE@66..67 " "
-            PATH_TYPE@67..74
-              PATH@67..74
-                PATH_SEGMENT@67..74
-                  COLON2@67..69 "::"
-                  NAME_REF@69..74
-                    IDENT@69..74 "c_int"
-          R_PAREN@74..75 ")"
-        WHITESPACE@75..76 " "
-        RET_TYPE@76..86
-          THIN_ARROW@76..78 "->"
-          WHITESPACE@78..79 " "
-          PATH_TYPE@79..86
-            PATH@79..86
-              PATH_SEGMENT@79..86
-                COLON2@79..81 "::"
-                NAME_REF@81..86
-                  IDENT@81..86 "c_int"
-        SEMICOLON@86..87 ";"
-      WHITESPACE@87..92 "\n    "
-      FN@92..167
-        VISIBILITY@92..95
-          PUB_KW@92..95 "pub"
-        WHITESPACE@95..96 " "
-        FN_KW@96..98 "fn"
-        WHITESPACE@98..99 " "
-        NAME@99..103
-          IDENT@99..103 "bind"
-        PARAM_LIST@103..155
-          L_PAREN@103..104 "("
-          PARAM@104..115
-            IDENT_PAT@104..106
-              NAME@104..106
-                IDENT@104..106 "fd"
-            COLON@106..107 ":"
-            WHITESPACE@107..108 " "
-            PATH_TYPE@108..115
-              PATH@108..115
-                PATH_SEGMENT@108..115
-                  COLON2@108..110 "::"
-                  NAME_REF@110..115
-                    IDENT@110..115 "c_int"
-          COMMA@115..116 ","
-          WHITESPACE@116..117 " "
-          PARAM@117..138
-            IDENT_PAT@117..121
-              NAME@117..121
-                IDENT@117..121 "addr"
-            COLON@121..122 ":"
-            WHITESPACE@122..123 " "
-            PTR_TYPE@123..138
-              STAR@123..124 "*"
-              CONST_KW@124..129 "const"
-              WHITESPACE@129..130 " "
-              PATH_TYPE@130..138
-                PATH@130..138
-                  PATH_SEGMENT@130..138
-                    NAME_REF@130..138
-                      IDENT@130..138 "sockaddr"
-          COMMA@138..139 ","
-          WHITESPACE@139..140 " "
-          PARAM@140..154
-            IDENT_PAT@140..143
-              NAME@140..143
-                IDENT@140..143 "len"
-            COLON@143..144 ":"
-            WHITESPACE@144..145 " "
-            PATH_TYPE@145..154
-              PATH@145..154
-                PATH_SEGMENT@145..154
-                  NAME_REF@145..154
-                    IDENT@145..154 "socklen_t"
-          R_PAREN@154..155 ")"
-        WHITESPACE@155..156 " "
-        RET_TYPE@156..166
-          THIN_ARROW@156..158 "->"
-          WHITESPACE@158..159 " "
-          PATH_TYPE@159..166
-            PATH@159..166
-              PATH_SEGMENT@159..166
-                COLON2@159..161 "::"
-                NAME_REF@161..166
-                  IDENT@161..166 "c_int"
-        SEMICOLON@166..167 ";"
-      WHITESPACE@167..172 "\n    "
-      FN@172..276
-        VISIBILITY@172..175
-          PUB_KW@172..175 "pub"
-        WHITESPACE@175..176 " "
-        FN_KW@176..178 "fn"
-        WHITESPACE@178..179 " "
-        NAME@179..186
-          IDENT@179..186 "connect"
-        PARAM_LIST@186..264
-          L_PAREN@186..187 "("
-          PARAM@187..202
-            IDENT_PAT@187..193
-              NAME@187..193
-                IDENT@187..193 "socket"
-            COLON@193..194 ":"
-            WHITESPACE@194..195 " "
-            PATH_TYPE@195..202
-              PATH@195..202
-                PATH_SEGMENT@195..202
-                  COLON2@195..197 "::"
-                  NAME_REF@197..202
-                    IDENT@197..202 "c_int"
-          COMMA@202..203 ","
-          WHITESPACE@203..204 " "
-          PARAM@204..228
-            IDENT_PAT@204..211
-              NAME@204..211
-                IDENT@204..211 "address"
-            COLON@211..212 ":"
-            WHITESPACE@212..213 " "
-            PTR_TYPE@213..228
-              STAR@213..214 "*"
-              CONST_KW@214..219 "const"
-              WHITESPACE@219..220 " "
-              PATH_TYPE@220..228
-                PATH@220..228
-                  PATH_SEGMENT@220..228
-                    NAME_REF@220..228
-                      IDENT@220..228 "sockaddr"
-          COMMA@228..229 ","
-          WHITESPACE@229..249 "\n                   "
-          PARAM@249..263
-            IDENT_PAT@249..252
-              NAME@249..252
-                IDENT@249..252 "len"
-            COLON@252..253 ":"
-            WHITESPACE@253..254 " "
-            PATH_TYPE@254..263
-              PATH@254..263
-                PATH_SEGMENT@254..263
-                  NAME_REF@254..263
-                    IDENT@254..263 "socklen_t"
-          R_PAREN@263..264 ")"
-        WHITESPACE@264..265 " "
-        RET_TYPE@265..275
-          THIN_ARROW@265..267 "->"
-          WHITESPACE@267..268 " "
-          PATH_TYPE@268..275
-            PATH@268..275
-              PATH_SEGMENT@268..275
-                COLON2@268..270 "::"
-                NAME_REF@270..275
-                  IDENT@270..275 "c_int"
-        SEMICOLON@275..276 ";"
-      WHITESPACE@276..281 "\n    "
-      FN@281..341
-        VISIBILITY@281..284
-          PUB_KW@281..284 "pub"
-        WHITESPACE@284..285 " "
-        FN_KW@285..287 "fn"
-        WHITESPACE@287..288 " "
-        NAME@288..294
-          IDENT@288..294 "listen"
-        PARAM_LIST@294..329
-          L_PAREN@294..295 "("
-          PARAM@295..310
-            IDENT_PAT@295..301
-              NAME@295..301
-                IDENT@295..301 "socket"
-            COLON@301..302 ":"
-            WHITESPACE@302..303 " "
-            PATH_TYPE@303..310
-              PATH@303..310
-                PATH_SEGMENT@303..310
-                  COLON2@303..305 "::"
-                  NAME_REF@305..310
-                    IDENT@305..310 "c_int"
-          COMMA@310..311 ","
-          WHITESPACE@311..312 " "
-          PARAM@312..328
-            IDENT_PAT@312..319
-              NAME@312..319
-                IDENT@312..319 "backlog"
-            COLON@319..320 ":"
-            WHITESPACE@320..321 " "
-            PATH_TYPE@321..328
-              PATH@321..328
-                PATH_SEGMENT@321..328
-                  COLON2@321..323 "::"
-                  NAME_REF@323..328
-                    IDENT@323..328 "c_int"
-          R_PAREN@328..329 ")"
-        WHITESPACE@329..330 " "
-        RET_TYPE@330..340
-          THIN_ARROW@330..332 "->"
-          WHITESPACE@332..333 " "
-          PATH_TYPE@333..340
-            PATH@333..340
-              PATH_SEGMENT@333..340
-                COLON2@333..335 "::"
-                NAME_REF@335..340
-                  IDENT@335..340 "c_int"
-        SEMICOLON@340..341 ";"
-      WHITESPACE@341..346 "\n    "
-      FN@346..469
-        VISIBILITY@346..349
-          PUB_KW@346..349 "pub"
-        WHITESPACE@349..350 " "
-        FN_KW@350..352 "fn"
-        WHITESPACE@352..353 " "
-        NAME@353..364
-          IDENT@353..364 "getsockname"
-        PARAM_LIST@364..457
-          L_PAREN@364..365 "("
-          PARAM@365..380
-            IDENT_PAT@365..371
-              NAME@365..371
-                IDENT@365..371 "socket"
-            COLON@371..372 ":"
-            WHITESPACE@372..373 " "
-            PATH_TYPE@373..380
-              PATH@373..380
-                PATH_SEGMENT@373..380
-                  COLON2@373..375 "::"
-                  NAME_REF@375..380
-                    IDENT@375..380 "c_int"
-          COMMA@380..381 ","
-          WHITESPACE@381..382 " "
-          PARAM@382..404
-            IDENT_PAT@382..389
-              NAME@382..389
-                IDENT@382..389 "address"
-            COLON@389..390 ":"
-            WHITESPACE@390..391 " "
-            PTR_TYPE@391..404
-              STAR@391..392 "*"
-              MUT_KW@392..395 "mut"
-              WHITESPACE@395..396 " "
-              PATH_TYPE@396..404
-                PATH@396..404
-                  PATH_SEGMENT@396..404
-                    NAME_REF@396..404
-                      IDENT@396..404 "sockaddr"
-          COMMA@404..405 ","
-          WHITESPACE@405..429 "\n                       "
-          PARAM@429..456
-            IDENT_PAT@429..440
-              NAME@429..440
-                IDENT@429..440 "address_len"
-            COLON@440..441 ":"
-            WHITESPACE@441..442 " "
-            PTR_TYPE@442..456
-              STAR@442..443 "*"
-              MUT_KW@443..446 "mut"
-              WHITESPACE@446..447 " "
-              PATH_TYPE@447..456
-                PATH@447..456
-                  PATH_SEGMENT@447..456
-                    NAME_REF@447..456
-                      IDENT@447..456 "socklen_t"
-          R_PAREN@456..457 ")"
-        WHITESPACE@457..458 " "
-        RET_TYPE@458..468
-          THIN_ARROW@458..460 "->"
-          WHITESPACE@460..461 " "
-          PATH_TYPE@461..468
-            PATH@461..468
-              PATH_SEGMENT@461..468
-                COLON2@461..463 "::"
-                NAME_REF@463..468
-                  IDENT@463..468 "c_int"
-        SEMICOLON@468..469 ";"
-      WHITESPACE@469..474 "\n    "
-      FN@474..691
-        VISIBILITY@474..477
-          PUB_KW@474..477 "pub"
-        WHITESPACE@477..478 " "
-        FN_KW@478..480 "fn"
-        WHITESPACE@480..481 " "
-        NAME@481..491
-          IDENT@481..491 "getsockopt"
-        PARAM_LIST@491..679
-          L_PAREN@491..492 "("
-          PARAM@492..507
-            IDENT_PAT@492..498
-              NAME@492..498
-                IDENT@492..498 "sockfd"
-            COLON@498..499 ":"
-            WHITESPACE@499..500 " "
-            PATH_TYPE@500..507
-              PATH@500..507
-                PATH_SEGMENT@500..507
-                  COLON2@500..502 "::"
-                  NAME_REF@502..507
-                    IDENT@502..507 "c_int"
-          COMMA@507..508 ","
-          WHITESPACE@508..531 "\n                      "
-          PARAM@531..545
-            IDENT_PAT@531..536
-              NAME@531..536
-                IDENT@531..536 "level"
-            COLON@536..537 ":"
-            WHITESPACE@537..538 " "
-            PATH_TYPE@538..545
-              PATH@538..545
-                PATH_SEGMENT@538..545
-                  COLON2@538..540 "::"
-                  NAME_REF@540..545
-                    IDENT@540..545 "c_int"
-          COMMA@545..546 ","
-          WHITESPACE@546..569 "\n                      "
-          PARAM@569..585
-            IDENT_PAT@569..576
-              NAME@569..576
-                IDENT@569..576 "optname"
-            COLON@576..577 ":"
-            WHITESPACE@577..578 " "
-            PATH_TYPE@578..585
-              PATH@578..585
-                PATH_SEGMENT@578..585
-                  COLON2@578..580 "::"
-                  NAME_REF@580..585
-                    IDENT@580..585 "c_int"
-          COMMA@585..586 ","
-          WHITESPACE@586..609 "\n                      "
-          PARAM@609..630
-            IDENT_PAT@609..615
-              NAME@609..615
-                IDENT@609..615 "optval"
-            COLON@615..616 ":"
-            WHITESPACE@616..617 " "
-            PTR_TYPE@617..630
-              STAR@617..618 "*"
-              MUT_KW@618..621 "mut"
-              WHITESPACE@621..622 " "
-              PATH_TYPE@622..630
-                PATH@622..630
-                  PATH_SEGMENT@622..630
-                    COLON2@622..624 "::"
-                    NAME_REF@624..630
-                      IDENT@624..630 "c_void"
-          COMMA@630..631 ","
-          WHITESPACE@631..654 "\n                      "
-          PARAM@654..678
-            IDENT_PAT@654..660
-              NAME@654..660
-                IDENT@654..660 "optlen"
-            COLON@660..661 ":"
-            WHITESPACE@661..662 " "
-            PTR_TYPE@662..678
-              STAR@662..663 "*"
-              MUT_KW@663..666 "mut"
-              WHITESPACE@666..667 " "
-              PATH_TYPE@667..678
-                PATH@667..678
-                  PATH_SEGMENT@667..678
-                    COLON2@667..669 "::"
-                    NAME_REF@669..678
-                      IDENT@669..678 "socklen_t"
-          R_PAREN@678..679 ")"
-        WHITESPACE@679..680 " "
-        RET_TYPE@680..690
-          THIN_ARROW@680..682 "->"
-          WHITESPACE@682..683 " "
-          PATH_TYPE@683..690
-            PATH@683..690
-              PATH_SEGMENT@683..690
-                COLON2@683..685 "::"
-                NAME_REF@685..690
-                  IDENT@685..690 "c_int"
-        SEMICOLON@690..691 ";"
-      WHITESPACE@691..696 "\n    "
-      FN@696..864
-        VISIBILITY@696..699
-          PUB_KW@696..699 "pub"
-        WHITESPACE@699..700 " "
-        FN_KW@700..702 "fn"
-        WHITESPACE@702..703 " "
-        NAME@703..713
-          IDENT@703..713 "setsockopt"
-        PARAM_LIST@713..852
-          L_PAREN@713..714 "("
-          PARAM@714..729
-            IDENT_PAT@714..720
-              NAME@714..720
-                IDENT@714..720 "socket"
-            COLON@720..721 ":"
-            WHITESPACE@721..722 " "
-            PATH_TYPE@722..729
-              PATH@722..729
-                PATH_SEGMENT@722..729
-                  COLON2@722..724 "::"
-                  NAME_REF@724..729
-                    IDENT@724..729 "c_int"
-          COMMA@729..730 ","
-          WHITESPACE@730..731 " "
-          PARAM@731..745
-            IDENT_PAT@731..736
-              NAME@731..736
-                IDENT@731..736 "level"
-            COLON@736..737 ":"
-            WHITESPACE@737..738 " "
-            PATH_TYPE@738..745
-              PATH@738..745
-                PATH_SEGMENT@738..745
-                  COLON2@738..740 "::"
-                  NAME_REF@740..745
-                    IDENT@740..745 "c_int"
-          COMMA@745..746 ","
-          WHITESPACE@746..747 " "
-          PARAM@747..760
-            IDENT_PAT@747..751
-              NAME@747..751
-                IDENT@747..751 "name"
-            COLON@751..752 ":"
-            WHITESPACE@752..753 " "
-            PATH_TYPE@753..760
-              PATH@753..760
-                PATH_SEGMENT@753..760
-                  COLON2@753..755 "::"
-                  NAME_REF@755..760
-                    IDENT@755..760 "c_int"
-          COMMA@760..761 ","
-          WHITESPACE@761..784 "\n                      "
-          PARAM@784..806
-            IDENT_PAT@784..789
-              NAME@784..789
-                IDENT@784..789 "value"
-            COLON@789..790 ":"
-            WHITESPACE@790..791 " "
-            PTR_TYPE@791..806
-              STAR@791..792 "*"
-              CONST_KW@792..797 "const"
-              WHITESPACE@797..798 " "
-              PATH_TYPE@798..806
-                PATH@798..806
-                  PATH_SEGMENT@798..806
-                    COLON2@798..800 "::"
-                    NAME_REF@800..806
-                      IDENT@800..806 "c_void"
-          COMMA@806..807 ","
-          WHITESPACE@807..830 "\n                      "
-          PARAM@830..851
-            IDENT_PAT@830..840
-              NAME@830..840
-                IDENT@830..840 "option_len"
-            COLON@840..841 ":"
-            WHITESPACE@841..842 " "
-            PATH_TYPE@842..851
-              PATH@842..851
-                PATH_SEGMENT@842..851
-                  NAME_REF@842..851
-                    IDENT@842..851 "socklen_t"
-          R_PAREN@851..852 ")"
-        WHITESPACE@852..853 " "
-        RET_TYPE@853..863
-          THIN_ARROW@853..855 "->"
-          WHITESPACE@855..856 " "
-          PATH_TYPE@856..863
-            PATH@856..863
-              PATH_SEGMENT@856..863
-                COLON2@856..858 "::"
-                NAME_REF@858..863
-                  IDENT@858..863 "c_int"
-        SEMICOLON@863..864 ";"
-      WHITESPACE@864..869 "\n    "
-      FN@869..992
-        VISIBILITY@869..872
-          PUB_KW@869..872 "pub"
-        WHITESPACE@872..873 " "
-        FN_KW@873..875 "fn"
-        WHITESPACE@875..876 " "
-        NAME@876..887
-          IDENT@876..887 "getpeername"
-        PARAM_LIST@887..980
-          L_PAREN@887..888 "("
-          PARAM@888..903
-            IDENT_PAT@888..894
-              NAME@888..894
-                IDENT@888..894 "socket"
-            COLON@894..895 ":"
-            WHITESPACE@895..896 " "
-            PATH_TYPE@896..903
-              PATH@896..903
-                PATH_SEGMENT@896..903
-                  COLON2@896..898 "::"
-                  NAME_REF@898..903
-                    IDENT@898..903 "c_int"
-          COMMA@903..904 ","
-          WHITESPACE@904..905 " "
-          PARAM@905..927
-            IDENT_PAT@905..912
-              NAME@905..912
-                IDENT@905..912 "address"
-            COLON@912..913 ":"
-            WHITESPACE@913..914 " "
-            PTR_TYPE@914..927
-              STAR@914..915 "*"
-              MUT_KW@915..918 "mut"
-              WHITESPACE@918..919 " "
-              PATH_TYPE@919..927
-                PATH@919..927
-                  PATH_SEGMENT@919..927
-                    NAME_REF@919..927
-                      IDENT@919..927 "sockaddr"
-          COMMA@927..928 ","
-          WHITESPACE@928..952 "\n                       "
-          PARAM@952..979
-            IDENT_PAT@952..963
-              NAME@952..963
-                IDENT@952..963 "address_len"
-            COLON@963..964 ":"
-            WHITESPACE@964..965 " "
-            PTR_TYPE@965..979
-              STAR@965..966 "*"
-              MUT_KW@966..969 "mut"
-              WHITESPACE@969..970 " "
-              PATH_TYPE@970..979
-                PATH@970..979
-                  PATH_SEGMENT@970..979
-                    NAME_REF@970..979
-                      IDENT@970..979 "socklen_t"
-          R_PAREN@979..980 ")"
-        WHITESPACE@980..981 " "
-        RET_TYPE@981..991
-          THIN_ARROW@981..983 "->"
-          WHITESPACE@983..984 " "
-          PATH_TYPE@984..991
-            PATH@984..991
-              PATH_SEGMENT@984..991
-                COLON2@984..986 "::"
-                NAME_REF@986..991
-                  IDENT@986..991 "c_int"
-        SEMICOLON@991..992 ";"
-      WHITESPACE@992..997 "\n    "
-      FN@997..1173
-        VISIBILITY@997..1000
-          PUB_KW@997..1000 "pub"
-        WHITESPACE@1000..1001 " "
-        FN_KW@1001..1003 "fn"
-        WHITESPACE@1003..1004 " "
-        NAME@1004..1010
-          IDENT@1004..1010 "sendto"
-        PARAM_LIST@1010..1159
-          L_PAREN@1010..1011 "("
-          PARAM@1011..1026
-            IDENT_PAT@1011..1017
-              NAME@1011..1017
-                IDENT@1011..1017 "socket"
-            COLON@1017..1018 ":"
-            WHITESPACE@1018..1019 " "
-            PATH_TYPE@1019..1026
-              PATH@1019..1026
-                PATH_SEGMENT@1019..1026
-                  COLON2@1019..1021 "::"
-                  NAME_REF@1021..1026
-                    IDENT@1021..1026 "c_int"
-          COMMA@1026..1027 ","
-          WHITESPACE@1027..1028 " "
-          PARAM@1028..1048
-            IDENT_PAT@1028..1031
-              NAME@1028..1031
-                IDENT@1028..1031 "buf"
-            COLON@1031..1032 ":"
-            WHITESPACE@1032..1033 " "
-            PTR_TYPE@1033..1048
-              STAR@1033..1034 "*"
-              CONST_KW@1034..1039 "const"
-              WHITESPACE@1039..1040 " "
-              PATH_TYPE@1040..1048
-                PATH@1040..1048
-                  PATH_SEGMENT@1040..1048
-                    COLON2@1040..1042 "::"
-                    NAME_REF@1042..1048
-                      IDENT@1042..1048 "c_void"
-          COMMA@1048..1049 ","
-          WHITESPACE@1049..1050 " "
-          PARAM@1050..1063
-            IDENT_PAT@1050..1053
-              NAME@1050..1053
-                IDENT@1050..1053 "len"
-            COLON@1053..1054 ":"
-            WHITESPACE@1054..1055 " "
-            PATH_TYPE@1055..1063
-              PATH@1055..1063
-                PATH_SEGMENT@1055..1063
-                  COLON2@1055..1057 "::"
-                  NAME_REF@1057..1063
-                    IDENT@1057..1063 "size_t"
-          COMMA@1063..1064 ","
-          WHITESPACE@1064..1083 "\n                  "
-          PARAM@1083..1097
-            IDENT_PAT@1083..1088
-              NAME@1083..1088
-                IDENT@1083..1088 "flags"
-            COLON@1088..1089 ":"
-            WHITESPACE@1089..1090 " "
-            PATH_TYPE@1090..1097
-              PATH@1090..1097
-                PATH_SEGMENT@1090..1097
-                  COLON2@1090..1092 "::"
-                  NAME_REF@1092..1097
-                    IDENT@1092..1097 "c_int"
-          COMMA@1097..1098 ","
-          WHITESPACE@1098..1099 " "
-          PARAM@1099..1120
-            IDENT_PAT@1099..1103
-              NAME@1099..1103
-                IDENT@1099..1103 "addr"
-            COLON@1103..1104 ":"
-            WHITESPACE@1104..1105 " "
-            PTR_TYPE@1105..1120
-              STAR@1105..1106 "*"
-              CONST_KW@1106..1111 "const"
-              WHITESPACE@1111..1112 " "
-              PATH_TYPE@1112..1120
-                PATH@1112..1120
-                  PATH_SEGMENT@1112..1120
-                    NAME_REF@1112..1120
-                      IDENT@1112..1120 "sockaddr"
-          COMMA@1120..1121 ","
-          WHITESPACE@1121..1140 "\n                  "
-          PARAM@1140..1158
-            IDENT_PAT@1140..1147
-              NAME@1140..1147
-                IDENT@1140..1147 "addrlen"
-            COLON@1147..1148 ":"
-            WHITESPACE@1148..1149 " "
-            PATH_TYPE@1149..1158
-              PATH@1149..1158
-                PATH_SEGMENT@1149..1158
-                  NAME_REF@1149..1158
-                    IDENT@1149..1158 "socklen_t"
-          R_PAREN@1158..1159 ")"
-        WHITESPACE@1159..1160 " "
-        RET_TYPE@1160..1172
-          THIN_ARROW@1160..1162 "->"
-          WHITESPACE@1162..1163 " "
-          PATH_TYPE@1163..1172
-            PATH@1163..1172
-              PATH_SEGMENT@1163..1172
-                COLON2@1163..1165 "::"
-                NAME_REF@1165..1172
-                  IDENT@1165..1172 "ssize_t"
-        SEMICOLON@1172..1173 ";"
-      WHITESPACE@1173..1178 "\n    "
-      FN@1178..1289
-        VISIBILITY@1178..1181
-          PUB_KW@1178..1181 "pub"
-        WHITESPACE@1181..1182 " "
-        FN_KW@1182..1184 "fn"
-        WHITESPACE@1184..1185 " "
-        NAME@1185..1189
-          IDENT@1185..1189 "send"
-        PARAM_LIST@1189..1275
-          L_PAREN@1189..1190 "("
-          PARAM@1190..1205
-            IDENT_PAT@1190..1196
-              NAME@1190..1196
-                IDENT@1190..1196 "socket"
-            COLON@1196..1197 ":"
-            WHITESPACE@1197..1198 " "
-            PATH_TYPE@1198..1205
-              PATH@1198..1205
-                PATH_SEGMENT@1198..1205
-                  COLON2@1198..1200 "::"
-                  NAME_REF@1200..1205
-                    IDENT@1200..1205 "c_int"
-          COMMA@1205..1206 ","
-          WHITESPACE@1206..1207 " "
-          PARAM@1207..1227
-            IDENT_PAT@1207..1210
-              NAME@1207..1210
-                IDENT@1207..1210 "buf"
-            COLON@1210..1211 ":"
-            WHITESPACE@1211..1212 " "
-            PTR_TYPE@1212..1227
-              STAR@1212..1213 "*"
-              CONST_KW@1213..1218 "const"
-              WHITESPACE@1218..1219 " "
-              PATH_TYPE@1219..1227
-                PATH@1219..1227
-                  PATH_SEGMENT@1219..1227
-                    COLON2@1219..1221 "::"
-                    NAME_REF@1221..1227
-                      IDENT@1221..1227 "c_void"
-          COMMA@1227..1228 ","
-          WHITESPACE@1228..1229 " "
-          PARAM@1229..1242
-            IDENT_PAT@1229..1232
-              NAME@1229..1232
-                IDENT@1229..1232 "len"
-            COLON@1232..1233 ":"
-            WHITESPACE@1233..1234 " "
-            PATH_TYPE@1234..1242
-              PATH@1234..1242
-                PATH_SEGMENT@1234..1242
-                  COLON2@1234..1236 "::"
-                  NAME_REF@1236..1242
-                    IDENT@1236..1242 "size_t"
-          COMMA@1242..1243 ","
-          WHITESPACE@1243..1260 "\n                "
-          PARAM@1260..1274
-            IDENT_PAT@1260..1265
-              NAME@1260..1265
-                IDENT@1260..1265 "flags"
-            COLON@1265..1266 ":"
-            WHITESPACE@1266..1267 " "
-            PATH_TYPE@1267..1274
-              PATH@1267..1274
-                PATH_SEGMENT@1267..1274
-                  COLON2@1267..1269 "::"
-                  NAME_REF@1269..1274
-                    IDENT@1269..1274 "c_int"
-          R_PAREN@1274..1275 ")"
-        WHITESPACE@1275..1276 " "
-        RET_TYPE@1276..1288
-          THIN_ARROW@1276..1278 "->"
-          WHITESPACE@1278..1279 " "
-          PATH_TYPE@1279..1288
-            PATH@1279..1288
-              PATH_SEGMENT@1279..1288
-                COLON2@1279..1281 "::"
-                NAME_REF@1281..1288
-                  IDENT@1281..1288 "ssize_t"
-        SEMICOLON@1288..1289 ";"
-      WHITESPACE@1289..1294 "\n    "
-      FN@1294..1481
-        VISIBILITY@1294..1297
-          PUB_KW@1294..1297 "pub"
-        WHITESPACE@1297..1298 " "
-        FN_KW@1298..1300 "fn"
-        WHITESPACE@1300..1301 " "
-        NAME@1301..1309
-          IDENT@1301..1309 "recvfrom"
-        PARAM_LIST@1309..1467
-          L_PAREN@1309..1310 "("
-          PARAM@1310..1325
-            IDENT_PAT@1310..1316
-              NAME@1310..1316
-                IDENT@1310..1316 "socket"
-            COLON@1316..1317 ":"
-            WHITESPACE@1317..1318 " "
-            PATH_TYPE@1318..1325
-              PATH@1318..1325
-                PATH_SEGMENT@1318..1325
-                  COLON2@1318..1320 "::"
-                  NAME_REF@1320..1325
-                    IDENT@1320..1325 "c_int"
-          COMMA@1325..1326 ","
-          WHITESPACE@1326..1327 " "
-          PARAM@1327..1345
-            IDENT_PAT@1327..1330
-              NAME@1327..1330
-                IDENT@1327..1330 "buf"
-            COLON@1330..1331 ":"
-            WHITESPACE@1331..1332 " "
-            PTR_TYPE@1332..1345
-              STAR@1332..1333 "*"
-              MUT_KW@1333..1336 "mut"
-              WHITESPACE@1336..1337 " "
-              PATH_TYPE@1337..1345
-                PATH@1337..1345
-                  PATH_SEGMENT@1337..1345
-                    COLON2@1337..1339 "::"
-                    NAME_REF@1339..1345
-                      IDENT@1339..1345 "c_void"
-          COMMA@1345..1346 ","
-          WHITESPACE@1346..1347 " "
-          PARAM@1347..1360
-            IDENT_PAT@1347..1350
-              NAME@1347..1350
-                IDENT@1347..1350 "len"
-            COLON@1350..1351 ":"
-            WHITESPACE@1351..1352 " "
-            PATH_TYPE@1352..1360
-              PATH@1352..1360
-                PATH_SEGMENT@1352..1360
-                  COLON2@1352..1354 "::"
-                  NAME_REF@1354..1360
-                    IDENT@1354..1360 "size_t"
-          COMMA@1360..1361 ","
-          WHITESPACE@1361..1382 "\n                    "
-          PARAM@1382..1396
-            IDENT_PAT@1382..1387
-              NAME@1382..1387
-                IDENT@1382..1387 "flags"
-            COLON@1387..1388 ":"
-            WHITESPACE@1388..1389 " "
-            PATH_TYPE@1389..1396
-              PATH@1389..1396
-                PATH_SEGMENT@1389..1396
-                  COLON2@1389..1391 "::"
-                  NAME_REF@1391..1396
-                    IDENT@1391..1396 "c_int"
-          COMMA@1396..1397 ","
-          WHITESPACE@1397..1398 " "
-          PARAM@1398..1419
-            IDENT_PAT@1398..1402
-              NAME@1398..1402
-                IDENT@1398..1402 "addr"
-            COLON@1402..1403 ":"
-            WHITESPACE@1403..1404 " "
-            PTR_TYPE@1404..1419
-              STAR@1404..1405 "*"
-              MUT_KW@1405..1408 "mut"
-              WHITESPACE@1408..1409 " "
-              PATH_TYPE@1409..1419
-                PATH@1409..1419
-                  PATH_SEGMENT@1409..1419
-                    COLON2@1409..1411 "::"
-                    NAME_REF@1411..1419
-                      IDENT@1411..1419 "sockaddr"
-          COMMA@1419..1420 ","
-          WHITESPACE@1420..1441 "\n                    "
-          PARAM@1441..1466
-            IDENT_PAT@1441..1448
-              NAME@1441..1448
-                IDENT@1441..1448 "addrlen"
-            COLON@1448..1449 ":"
-            WHITESPACE@1449..1450 " "
-            PTR_TYPE@1450..1466
-              STAR@1450..1451 "*"
-              MUT_KW@1451..1454 "mut"
-              WHITESPACE@1454..1455 " "
-              PATH_TYPE@1455..1466
-                PATH@1455..1466
-                  PATH_SEGMENT@1455..1466
-                    COLON2@1455..1457 "::"
-                    NAME_REF@1457..1466
-                      IDENT@1457..1466 "socklen_t"
-          R_PAREN@1466..1467 ")"
-        WHITESPACE@1467..1468 " "
-        RET_TYPE@1468..1480
-          THIN_ARROW@1468..1470 "->"
-          WHITESPACE@1470..1471 " "
-          PATH_TYPE@1471..1480
-            PATH@1471..1480
-              PATH_SEGMENT@1471..1480
-                COLON2@1471..1473 "::"
-                NAME_REF@1473..1480
-                  IDENT@1473..1480 "ssize_t"
-        SEMICOLON@1480..1481 ";"
-      WHITESPACE@1481..1486 "\n    "
-      FN@1486..1595
-        VISIBILITY@1486..1489
-          PUB_KW@1486..1489 "pub"
-        WHITESPACE@1489..1490 " "
-        FN_KW@1490..1492 "fn"
-        WHITESPACE@1492..1493 " "
-        NAME@1493..1497
-          IDENT@1493..1497 "recv"
-        PARAM_LIST@1497..1581
-          L_PAREN@1497..1498 "("
-          PARAM@1498..1513
-            IDENT_PAT@1498..1504
-              NAME@1498..1504
-                IDENT@1498..1504 "socket"
-            COLON@1504..1505 ":"
-            WHITESPACE@1505..1506 " "
-            PATH_TYPE@1506..1513
-              PATH@1506..1513
-                PATH_SEGMENT@1506..1513
-                  COLON2@1506..1508 "::"
-                  NAME_REF@1508..1513
-                    IDENT@1508..1513 "c_int"
-          COMMA@1513..1514 ","
-          WHITESPACE@1514..1515 " "
-          PARAM@1515..1533
-            IDENT_PAT@1515..1518
-              NAME@1515..1518
-                IDENT@1515..1518 "buf"
-            COLON@1518..1519 ":"
-            WHITESPACE@1519..1520 " "
-            PTR_TYPE@1520..1533
-              STAR@1520..1521 "*"
-              MUT_KW@1521..1524 "mut"
-              WHITESPACE@1524..1525 " "
-              PATH_TYPE@1525..1533
-                PATH@1525..1533
-                  PATH_SEGMENT@1525..1533
-                    COLON2@1525..1527 "::"
-                    NAME_REF@1527..1533
-                      IDENT@1527..1533 "c_void"
-          COMMA@1533..1534 ","
-          WHITESPACE@1534..1535 " "
-          PARAM@1535..1548
-            IDENT_PAT@1535..1538
-              NAME@1535..1538
-                IDENT@1535..1538 "len"
-            COLON@1538..1539 ":"
-            WHITESPACE@1539..1540 " "
-            PATH_TYPE@1540..1548
-              PATH@1540..1548
-                PATH_SEGMENT@1540..1548
-                  COLON2@1540..1542 "::"
-                  NAME_REF@1542..1548
-                    IDENT@1542..1548 "size_t"
-          COMMA@1548..1549 ","
-          WHITESPACE@1549..1566 "\n                "
-          PARAM@1566..1580
-            IDENT_PAT@1566..1571
-              NAME@1566..1571
-                IDENT@1566..1571 "flags"
-            COLON@1571..1572 ":"
-            WHITESPACE@1572..1573 " "
-            PATH_TYPE@1573..1580
-              PATH@1573..1580
-                PATH_SEGMENT@1573..1580
-                  COLON2@1573..1575 "::"
-                  NAME_REF@1575..1580
-                    IDENT@1575..1580 "c_int"
-          R_PAREN@1580..1581 ")"
-        WHITESPACE@1581..1582 " "
-        RET_TYPE@1582..1594
-          THIN_ARROW@1582..1584 "->"
-          WHITESPACE@1584..1585 " "
-          PATH_TYPE@1585..1594
-            PATH@1585..1594
-              PATH_SEGMENT@1585..1594
-                COLON2@1585..1587 "::"
-                NAME_REF@1587..1594
-                  IDENT@1587..1594 "ssize_t"
-        SEMICOLON@1594..1595 ";"
-      WHITESPACE@1595..1596 "\n"
-      R_CURLY@1596..1597 "}"
-  WHITESPACE@1597..1598 "\n"
+SOURCE_FILE
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "socket"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "domain"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "ty"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "protocol"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "bind"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "fd"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "addr"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "sockaddr"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "len"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "connect"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "address"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "sockaddr"
+          COMMA ","
+          WHITESPACE "\n                   "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "len"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "listen"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "backlog"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "getsockname"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "address"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "sockaddr"
+          COMMA ","
+          WHITESPACE "\n                       "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "address_len"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "getsockopt"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "sockfd"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE "\n                      "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "level"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE "\n                      "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "optname"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE "\n                      "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "optval"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "c_void"
+          COMMA ","
+          WHITESPACE "\n                      "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "optlen"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "setsockopt"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "level"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "name"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE "\n                      "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "value"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "c_void"
+          COMMA ","
+          WHITESPACE "\n                      "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "option_len"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "getpeername"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "address"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "sockaddr"
+          COMMA ","
+          WHITESPACE "\n                       "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "address_len"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "c_int"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "sendto"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "buf"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "c_void"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "len"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "size_t"
+          COMMA ","
+          WHITESPACE "\n                  "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "flags"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "addr"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "sockaddr"
+          COMMA ","
+          WHITESPACE "\n                  "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "addrlen"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "ssize_t"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "send"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "buf"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "c_void"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "len"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "size_t"
+          COMMA ","
+          WHITESPACE "\n                "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "flags"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "ssize_t"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "recvfrom"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "buf"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "c_void"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "len"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "size_t"
+          COMMA ","
+          WHITESPACE "\n                    "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "flags"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "addr"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "sockaddr"
+          COMMA ","
+          WHITESPACE "\n                    "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "addrlen"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "socklen_t"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "ssize_t"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        VISIBILITY
+          PUB_KW "pub"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "recv"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "socket"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "buf"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    COLON2 "::"
+                    NAME_REF
+                      IDENT "c_void"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "len"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "size_t"
+          COMMA ","
+          WHITESPACE "\n                "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "flags"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  COLON2 "::"
+                  NAME_REF
+                    IDENT "c_int"
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "ssize_t"
+        SEMICOLON ";"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0031_extern.txt b/crates/parser/test_data/parser/ok/0031_extern.txt
deleted file mode 100644
index 70b52780862..00000000000
--- a/crates/parser/test_data/parser/ok/0031_extern.txt
+++ /dev/null
@@ -1,973 +0,0 @@
-SOURCE_FILE
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "socket"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "domain"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "ty"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "protocol"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "bind"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "fd"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "addr"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "sockaddr"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "len"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "connect"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "address"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "sockaddr"
-          COMMA ","
-          WHITESPACE "\n                   "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "len"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "listen"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "backlog"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "getsockname"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "address"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "sockaddr"
-          COMMA ","
-          WHITESPACE "\n                       "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "address_len"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "getsockopt"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "sockfd"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE "\n                      "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "level"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE "\n                      "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "optname"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE "\n                      "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "optval"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "c_void"
-          COMMA ","
-          WHITESPACE "\n                      "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "optlen"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "setsockopt"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "level"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "name"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE "\n                      "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "value"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "c_void"
-          COMMA ","
-          WHITESPACE "\n                      "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "option_len"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "getpeername"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "address"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "sockaddr"
-          COMMA ","
-          WHITESPACE "\n                       "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "address_len"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "c_int"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "sendto"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "buf"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "c_void"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "len"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "size_t"
-          COMMA ","
-          WHITESPACE "\n                  "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "flags"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "addr"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "sockaddr"
-          COMMA ","
-          WHITESPACE "\n                  "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "addrlen"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "ssize_t"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "send"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "buf"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "c_void"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "len"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "size_t"
-          COMMA ","
-          WHITESPACE "\n                "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "flags"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "ssize_t"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "recvfrom"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "buf"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "c_void"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "len"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "size_t"
-          COMMA ","
-          WHITESPACE "\n                    "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "flags"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "addr"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "sockaddr"
-          COMMA ","
-          WHITESPACE "\n                    "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "addrlen"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "socklen_t"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "ssize_t"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        VISIBILITY
-          PUB_KW "pub"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "recv"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "socket"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "buf"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    COLON2 "::"
-                    NAME_REF
-                      IDENT "c_void"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "len"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "size_t"
-          COMMA ","
-          WHITESPACE "\n                "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "flags"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  COLON2 "::"
-                  NAME_REF
-                    IDENT "c_int"
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "ssize_t"
-        SEMICOLON ";"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0032_where_for.rast b/crates/parser/test_data/parser/ok/0032_where_for.rast
index ee66eab5300..86f6af97c73 100644
--- a/crates/parser/test_data/parser/ok/0032_where_for.rast
+++ b/crates/parser/test_data/parser/ok/0032_where_for.rast
@@ -1,93 +1,93 @@
-SOURCE_FILE@0..116
-  FN@0..115
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..21
-      IDENT@3..21 "test_serialization"
-    GENERIC_PARAM_LIST@21..26
-      L_ANGLE@21..22 "<"
-      TYPE_PARAM@22..25
-        NAME@22..25
-          IDENT@22..25 "SER"
-      R_ANGLE@25..26 ">"
-    PARAM_LIST@26..28
-      L_PAREN@26..27 "("
-      R_PAREN@27..28 ")"
-    WHITESPACE@28..29 "\n"
-    WHERE_CLAUSE@29..112
-      WHERE_KW@29..34 "where"
-      WHITESPACE@34..39 "\n    "
-      WHERE_PRED@39..111
-        PATH_TYPE@39..42
-          PATH@39..42
-            PATH_SEGMENT@39..42
-              NAME_REF@39..42
-                IDENT@39..42 "SER"
-        COLON@42..43 ":"
-        WHITESPACE@43..44 " "
-        TYPE_BOUND_LIST@44..111
-          TYPE_BOUND@44..53
-            PATH_TYPE@44..53
-              PATH@44..53
-                PATH_SEGMENT@44..53
-                  NAME_REF@44..53
-                    IDENT@44..53 "Serialize"
-          WHITESPACE@53..54 " "
-          PLUS@54..55 "+"
-          WHITESPACE@55..56 " "
-          TYPE_BOUND@56..81
-            FOR_TYPE@56..81
-              FOR_KW@56..59 "for"
-              GENERIC_PARAM_LIST@59..64
-                L_ANGLE@59..60 "<"
-                LIFETIME_PARAM@60..63
-                  LIFETIME@60..63
-                    LIFETIME_IDENT@60..63 "'de"
-                R_ANGLE@63..64 ">"
-              WHITESPACE@64..65 " "
-              PATH_TYPE@65..81
-                PATH@65..81
-                  PATH_SEGMENT@65..81
-                    NAME_REF@65..76
-                      IDENT@65..76 "Deserialize"
-                    GENERIC_ARG_LIST@76..81
-                      L_ANGLE@76..77 "<"
-                      LIFETIME_ARG@77..80
-                        LIFETIME@77..80
-                          LIFETIME_IDENT@77..80 "'de"
-                      R_ANGLE@80..81 ">"
-          WHITESPACE@81..82 " "
-          PLUS@82..83 "+"
-          WHITESPACE@83..84 " "
-          TYPE_BOUND@84..93
-            PATH_TYPE@84..93
-              PATH@84..93
-                PATH_SEGMENT@84..93
-                  NAME_REF@84..93
-                    IDENT@84..93 "PartialEq"
-          WHITESPACE@93..94 " "
-          PLUS@94..95 "+"
-          WHITESPACE@95..96 " "
-          TYPE_BOUND@96..111
-            PATH_TYPE@96..111
-              PATH@96..111
-                PATH@96..104
-                  PATH@96..99
-                    PATH_SEGMENT@96..99
-                      NAME_REF@96..99
-                        IDENT@96..99 "std"
-                  COLON2@99..101 "::"
-                  PATH_SEGMENT@101..104
-                    NAME_REF@101..104
-                      IDENT@101..104 "fmt"
-                COLON2@104..106 "::"
-                PATH_SEGMENT@106..111
-                  NAME_REF@106..111
-                    IDENT@106..111 "Debug"
-      COMMA@111..112 ","
-    WHITESPACE@112..113 "\n"
-    BLOCK_EXPR@113..115
-      STMT_LIST@113..115
-        L_CURLY@113..114 "{"
-        R_CURLY@114..115 "}"
-  WHITESPACE@115..116 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "test_serialization"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "SER"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "SER"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Serialize"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            FOR_TYPE
+              FOR_KW "for"
+              GENERIC_PARAM_LIST
+                L_ANGLE "<"
+                LIFETIME_PARAM
+                  LIFETIME
+                    LIFETIME_IDENT "'de"
+                R_ANGLE ">"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Deserialize"
+                    GENERIC_ARG_LIST
+                      L_ANGLE "<"
+                      LIFETIME_ARG
+                        LIFETIME
+                          LIFETIME_IDENT "'de"
+                      R_ANGLE ">"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "PartialEq"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "std"
+                  COLON2 "::"
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "fmt"
+                COLON2 "::"
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Debug"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0032_where_for.txt b/crates/parser/test_data/parser/ok/0032_where_for.txt
deleted file mode 100644
index 86f6af97c73..00000000000
--- a/crates/parser/test_data/parser/ok/0032_where_for.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "test_serialization"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "SER"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "SER"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Serialize"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            FOR_TYPE
-              FOR_KW "for"
-              GENERIC_PARAM_LIST
-                L_ANGLE "<"
-                LIFETIME_PARAM
-                  LIFETIME
-                    LIFETIME_IDENT "'de"
-                R_ANGLE ">"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Deserialize"
-                    GENERIC_ARG_LIST
-                      L_ANGLE "<"
-                      LIFETIME_ARG
-                        LIFETIME
-                          LIFETIME_IDENT "'de"
-                      R_ANGLE ">"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "PartialEq"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "std"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "fmt"
-                COLON2 "::"
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Debug"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0033_label_break.rast b/crates/parser/test_data/parser/ok/0033_label_break.rast
index fbda85797e1..df1acd6b83b 100644
--- a/crates/parser/test_data/parser/ok/0033_label_break.rast
+++ b/crates/parser/test_data/parser/ok/0033_label_break.rast
@@ -1,227 +1,223 @@
-SOURCE_FILE@0..506
-  FN@0..505
-    COMMENT@0..33 "// format with label  ..."
-    WHITESPACE@33..34 "\n"
-    FN_KW@34..36 "fn"
-    WHITESPACE@36..37 " "
-    NAME@37..41
-      IDENT@37..41 "main"
-    PARAM_LIST@41..43
-      L_PAREN@41..42 "("
-      R_PAREN@42..43 ")"
-    WHITESPACE@43..44 " "
-    BLOCK_EXPR@44..505
-      STMT_LIST@44..505
-        L_CURLY@44..45 "{"
-        WHITESPACE@45..50 "\n    "
-        EXPR_STMT@50..66
-          BLOCK_EXPR@50..66
-            LABEL@50..63
-              LIFETIME@50..62
-                LIFETIME_IDENT@50..62 "'empty_block"
-              COLON@62..63 ":"
-            WHITESPACE@63..64 " "
-            STMT_LIST@64..66
-              L_CURLY@64..65 "{"
-              R_CURLY@65..66 "}"
-        WHITESPACE@66..72 "\n\n    "
-        EXPR_STMT@72..295
-          BLOCK_EXPR@72..295
-            LABEL@72..79
-              LIFETIME@72..78
-                LIFETIME_IDENT@72..78 "'block"
-              COLON@78..79 ":"
-            WHITESPACE@79..80 " "
-            STMT_LIST@80..295
-              L_CURLY@80..81 "{"
-              WHITESPACE@81..90 "\n        "
-              EXPR_STMT@90..101
-                CALL_EXPR@90..100
-                  PATH_EXPR@90..98
-                    PATH@90..98
-                      PATH_SEGMENT@90..98
-                        NAME_REF@90..98
-                          IDENT@90..98 "do_thing"
-                  ARG_LIST@98..100
-                    L_PAREN@98..99 "("
-                    R_PAREN@99..100 ")"
-                SEMICOLON@100..101 ";"
-              WHITESPACE@101..110 "\n        "
-              EXPR_STMT@110..170
-                IF_EXPR@110..170
-                  IF_KW@110..112 "if"
-                  WHITESPACE@112..113 " "
-                  CONDITION@113..132
-                    CALL_EXPR@113..132
-                      PATH_EXPR@113..130
-                        PATH@113..130
-                          PATH_SEGMENT@113..130
-                            NAME_REF@113..130
-                              IDENT@113..130 "condition_not_met"
-                      ARG_LIST@130..132
-                        L_PAREN@130..131 "("
-                        R_PAREN@131..132 ")"
-                  WHITESPACE@132..133 " "
-                  BLOCK_EXPR@133..170
-                    STMT_LIST@133..170
-                      L_CURLY@133..134 "{"
-                      WHITESPACE@134..147 "\n            "
-                      EXPR_STMT@147..160
-                        BREAK_EXPR@147..159
-                          BREAK_KW@147..152 "break"
-                          WHITESPACE@152..153 " "
-                          LIFETIME@153..159
-                            LIFETIME_IDENT@153..159 "'block"
-                        SEMICOLON@159..160 ";"
-                      WHITESPACE@160..169 "\n        "
-                      R_CURLY@169..170 "}"
-              WHITESPACE@170..179 "\n        "
-              EXPR_STMT@179..195
-                CALL_EXPR@179..194
-                  PATH_EXPR@179..192
-                    PATH@179..192
-                      PATH_SEGMENT@179..192
-                        NAME_REF@179..192
-                          IDENT@179..192 "do_next_thing"
-                  ARG_LIST@192..194
-                    L_PAREN@192..193 "("
-                    R_PAREN@193..194 ")"
-                SEMICOLON@194..195 ";"
-              WHITESPACE@195..204 "\n        "
-              EXPR_STMT@204..264
-                IF_EXPR@204..264
-                  IF_KW@204..206 "if"
-                  WHITESPACE@206..207 " "
-                  CONDITION@207..226
-                    CALL_EXPR@207..226
-                      PATH_EXPR@207..224
-                        PATH@207..224
-                          PATH_SEGMENT@207..224
-                            NAME_REF@207..224
-                              IDENT@207..224 "condition_not_met"
-                      ARG_LIST@224..226
-                        L_PAREN@224..225 "("
-                        R_PAREN@225..226 ")"
-                  WHITESPACE@226..227 " "
-                  BLOCK_EXPR@227..264
-                    STMT_LIST@227..264
-                      L_CURLY@227..228 "{"
-                      WHITESPACE@228..241 "\n            "
-                      EXPR_STMT@241..254
-                        BREAK_EXPR@241..253
-                          BREAK_KW@241..246 "break"
-                          WHITESPACE@246..247 " "
-                          LIFETIME@247..253
-                            LIFETIME_IDENT@247..253 "'block"
-                        SEMICOLON@253..254 ";"
-                      WHITESPACE@254..263 "\n        "
-                      R_CURLY@263..264 "}"
-              WHITESPACE@264..273 "\n        "
-              EXPR_STMT@273..289
-                CALL_EXPR@273..288
-                  PATH_EXPR@273..286
-                    PATH@273..286
-                      PATH_SEGMENT@273..286
-                        NAME_REF@273..286
-                          IDENT@273..286 "do_last_thing"
-                  ARG_LIST@286..288
-                    L_PAREN@286..287 "("
-                    R_PAREN@287..288 ")"
-                SEMICOLON@288..289 ";"
-              WHITESPACE@289..294 "\n    "
-              R_CURLY@294..295 "}"
-        WHITESPACE@295..301 "\n\n    "
-        LET_STMT@301..503
-          LET_KW@301..304 "let"
-          WHITESPACE@304..305 " "
-          IDENT_PAT@305..311
-            NAME@305..311
-              IDENT@305..311 "result"
-          WHITESPACE@311..312 " "
-          EQ@312..313 "="
-          WHITESPACE@313..314 " "
-          BLOCK_EXPR@314..502
-            LABEL@314..321
-              LIFETIME@314..320
-                LIFETIME_IDENT@314..320 "'block"
-              COLON@320..321 ":"
-            WHITESPACE@321..322 " "
-            STMT_LIST@322..502
-              L_CURLY@322..323 "{"
-              WHITESPACE@323..332 "\n        "
-              EXPR_STMT@332..403
-                IF_EXPR@332..403
-                  IF_KW@332..334 "if"
-                  WHITESPACE@334..335 " "
-                  CONDITION@335..340
-                    CALL_EXPR@335..340
-                      PATH_EXPR@335..338
-                        PATH@335..338
-                          PATH_SEGMENT@335..338
-                            NAME_REF@335..338
-                              IDENT@335..338 "foo"
-                      ARG_LIST@338..340
-                        L_PAREN@338..339 "("
-                        R_PAREN@339..340 ")"
-                  WHITESPACE@340..341 " "
-                  BLOCK_EXPR@341..403
-                    STMT_LIST@341..403
-                      L_CURLY@341..342 "{"
-                      WHITESPACE@342..355 "\n            "
-                      COMMENT@355..365 "// comment"
-                      WHITESPACE@365..378 "\n            "
-                      EXPR_STMT@378..393
-                        BREAK_EXPR@378..392
-                          BREAK_KW@378..383 "break"
-                          WHITESPACE@383..384 " "
-                          LIFETIME@384..390
-                            LIFETIME_IDENT@384..390 "'block"
-                          WHITESPACE@390..391 " "
-                          LITERAL@391..392
-                            INT_NUMBER@391..392 "1"
-                        SEMICOLON@392..393 ";"
-                      WHITESPACE@393..402 "\n        "
-                      R_CURLY@402..403 "}"
-              WHITESPACE@403..412 "\n        "
-              EXPR_STMT@412..486
-                IF_EXPR@412..486
-                  IF_KW@412..414 "if"
-                  WHITESPACE@414..415 " "
-                  CONDITION@415..420
-                    CALL_EXPR@415..420
-                      PATH_EXPR@415..418
-                        PATH@415..418
-                          PATH_SEGMENT@415..418
-                            NAME_REF@415..418
-                              IDENT@415..418 "bar"
-                      ARG_LIST@418..420
-                        L_PAREN@418..419 "("
-                        R_PAREN@419..420 ")"
-                  WHITESPACE@420..421 " "
-                  BLOCK_EXPR@421..486
-                    STMT_LIST@421..486
-                      L_CURLY@421..422 "{"
-                      WHITESPACE@422..435 "\n            "
-                      COMMENT@435..448 "/* comment */"
-                      WHITESPACE@448..461 "\n            "
-                      EXPR_STMT@461..476
-                        BREAK_EXPR@461..475
-                          BREAK_KW@461..466 "break"
-                          WHITESPACE@466..467 " "
-                          LIFETIME@467..473
-                            LIFETIME_IDENT@467..473 "'block"
-                          WHITESPACE@473..474 " "
-                          LITERAL@474..475
-                            INT_NUMBER@474..475 "2"
-                        SEMICOLON@475..476 ";"
-                      WHITESPACE@476..485 "\n        "
-                      R_CURLY@485..486 "}"
-              WHITESPACE@486..495 "\n        "
-              LITERAL@495..496
-                INT_NUMBER@495..496 "3"
-              WHITESPACE@496..501 "\n    "
-              R_CURLY@501..502 "}"
-          SEMICOLON@502..503 ";"
-        WHITESPACE@503..504 "\n"
-        R_CURLY@504..505 "}"
-  WHITESPACE@505..506 "\n"
+SOURCE_FILE
+  FN
+    COMMENT "// format with label break value."
+    WHITESPACE "\n"
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            LABEL
+              LIFETIME
+                LIFETIME_IDENT "'empty_block"
+              COLON ":"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            LABEL
+              LIFETIME
+                LIFETIME_IDENT "'block"
+              COLON ":"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "do_thing"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+                SEMICOLON ";"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                IF_EXPR
+                  IF_KW "if"
+                  WHITESPACE " "
+                  CALL_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "condition_not_met"
+                    ARG_LIST
+                      L_PAREN "("
+                      R_PAREN ")"
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      WHITESPACE "\n            "
+                      EXPR_STMT
+                        BREAK_EXPR
+                          BREAK_KW "break"
+                          WHITESPACE " "
+                          LIFETIME
+                            LIFETIME_IDENT "'block"
+                        SEMICOLON ";"
+                      WHITESPACE "\n        "
+                      R_CURLY "}"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "do_next_thing"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+                SEMICOLON ";"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                IF_EXPR
+                  IF_KW "if"
+                  WHITESPACE " "
+                  CALL_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "condition_not_met"
+                    ARG_LIST
+                      L_PAREN "("
+                      R_PAREN ")"
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      WHITESPACE "\n            "
+                      EXPR_STMT
+                        BREAK_EXPR
+                          BREAK_KW "break"
+                          WHITESPACE " "
+                          LIFETIME
+                            LIFETIME_IDENT "'block"
+                        SEMICOLON ";"
+                      WHITESPACE "\n        "
+                      R_CURLY "}"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "do_last_thing"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+                SEMICOLON ";"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "result"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BLOCK_EXPR
+            LABEL
+              LIFETIME
+                LIFETIME_IDENT "'block"
+              COLON ":"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                IF_EXPR
+                  IF_KW "if"
+                  WHITESPACE " "
+                  CALL_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "foo"
+                    ARG_LIST
+                      L_PAREN "("
+                      R_PAREN ")"
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      WHITESPACE "\n            "
+                      COMMENT "// comment"
+                      WHITESPACE "\n            "
+                      EXPR_STMT
+                        BREAK_EXPR
+                          BREAK_KW "break"
+                          WHITESPACE " "
+                          LIFETIME
+                            LIFETIME_IDENT "'block"
+                          WHITESPACE " "
+                          LITERAL
+                            INT_NUMBER "1"
+                        SEMICOLON ";"
+                      WHITESPACE "\n        "
+                      R_CURLY "}"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                IF_EXPR
+                  IF_KW "if"
+                  WHITESPACE " "
+                  CALL_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "bar"
+                    ARG_LIST
+                      L_PAREN "("
+                      R_PAREN ")"
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      WHITESPACE "\n            "
+                      COMMENT "/* comment */"
+                      WHITESPACE "\n            "
+                      EXPR_STMT
+                        BREAK_EXPR
+                          BREAK_KW "break"
+                          WHITESPACE " "
+                          LIFETIME
+                            LIFETIME_IDENT "'block"
+                          WHITESPACE " "
+                          LITERAL
+                            INT_NUMBER "2"
+                        SEMICOLON ";"
+                      WHITESPACE "\n        "
+                      R_CURLY "}"
+              WHITESPACE "\n        "
+              LITERAL
+                INT_NUMBER "3"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0033_label_break.txt b/crates/parser/test_data/parser/ok/0033_label_break.txt
deleted file mode 100644
index df1acd6b83b..00000000000
--- a/crates/parser/test_data/parser/ok/0033_label_break.txt
+++ /dev/null
@@ -1,223 +0,0 @@
-SOURCE_FILE
-  FN
-    COMMENT "// format with label break value."
-    WHITESPACE "\n"
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            LABEL
-              LIFETIME
-                LIFETIME_IDENT "'empty_block"
-              COLON ":"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            LABEL
-              LIFETIME
-                LIFETIME_IDENT "'block"
-              COLON ":"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "do_thing"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-                SEMICOLON ";"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                IF_EXPR
-                  IF_KW "if"
-                  WHITESPACE " "
-                  CALL_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "condition_not_met"
-                    ARG_LIST
-                      L_PAREN "("
-                      R_PAREN ")"
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      WHITESPACE "\n            "
-                      EXPR_STMT
-                        BREAK_EXPR
-                          BREAK_KW "break"
-                          WHITESPACE " "
-                          LIFETIME
-                            LIFETIME_IDENT "'block"
-                        SEMICOLON ";"
-                      WHITESPACE "\n        "
-                      R_CURLY "}"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "do_next_thing"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-                SEMICOLON ";"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                IF_EXPR
-                  IF_KW "if"
-                  WHITESPACE " "
-                  CALL_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "condition_not_met"
-                    ARG_LIST
-                      L_PAREN "("
-                      R_PAREN ")"
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      WHITESPACE "\n            "
-                      EXPR_STMT
-                        BREAK_EXPR
-                          BREAK_KW "break"
-                          WHITESPACE " "
-                          LIFETIME
-                            LIFETIME_IDENT "'block"
-                        SEMICOLON ";"
-                      WHITESPACE "\n        "
-                      R_CURLY "}"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "do_last_thing"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-                SEMICOLON ";"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "result"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BLOCK_EXPR
-            LABEL
-              LIFETIME
-                LIFETIME_IDENT "'block"
-              COLON ":"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                IF_EXPR
-                  IF_KW "if"
-                  WHITESPACE " "
-                  CALL_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "foo"
-                    ARG_LIST
-                      L_PAREN "("
-                      R_PAREN ")"
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      WHITESPACE "\n            "
-                      COMMENT "// comment"
-                      WHITESPACE "\n            "
-                      EXPR_STMT
-                        BREAK_EXPR
-                          BREAK_KW "break"
-                          WHITESPACE " "
-                          LIFETIME
-                            LIFETIME_IDENT "'block"
-                          WHITESPACE " "
-                          LITERAL
-                            INT_NUMBER "1"
-                        SEMICOLON ";"
-                      WHITESPACE "\n        "
-                      R_CURLY "}"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                IF_EXPR
-                  IF_KW "if"
-                  WHITESPACE " "
-                  CALL_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "bar"
-                    ARG_LIST
-                      L_PAREN "("
-                      R_PAREN ")"
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      WHITESPACE "\n            "
-                      COMMENT "/* comment */"
-                      WHITESPACE "\n            "
-                      EXPR_STMT
-                        BREAK_EXPR
-                          BREAK_KW "break"
-                          WHITESPACE " "
-                          LIFETIME
-                            LIFETIME_IDENT "'block"
-                          WHITESPACE " "
-                          LITERAL
-                            INT_NUMBER "2"
-                        SEMICOLON ";"
-                      WHITESPACE "\n        "
-                      R_CURLY "}"
-              WHITESPACE "\n        "
-              LITERAL
-                INT_NUMBER "3"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0034_crate_path_in_call.rast b/crates/parser/test_data/parser/ok/0034_crate_path_in_call.rast
index 9a6010d3622..2b3b86ebf2d 100644
--- a/crates/parser/test_data/parser/ok/0034_crate_path_in_call.rast
+++ b/crates/parser/test_data/parser/ok/0034_crate_path_in_call.rast
@@ -1,43 +1,43 @@
-SOURCE_FILE@0..62
-  FN@0..61
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..61
-      STMT_LIST@10..61
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        EXPR_STMT@16..59
-          CALL_EXPR@16..58
-            PATH_EXPR@16..26
-              PATH@16..26
-                PATH_SEGMENT@16..26
-                  NAME_REF@16..26
-                    IDENT@16..26 "make_query"
-            ARG_LIST@26..58
-              L_PAREN@26..27 "("
-              PATH_EXPR@27..57
-                PATH@27..57
-                  PATH@27..44
-                    PATH@27..32
-                      PATH_SEGMENT@27..32
-                        NAME_REF@27..32
-                          CRATE_KW@27..32 "crate"
-                    COLON2@32..34 "::"
-                    PATH_SEGMENT@34..44
-                      NAME_REF@34..44
-                        IDENT@34..44 "module_map"
-                  COLON2@44..46 "::"
-                  PATH_SEGMENT@46..57
-                    NAME_REF@46..57
-                      IDENT@46..57 "module_tree"
-              R_PAREN@57..58 ")"
-          SEMICOLON@58..59 ";"
-        WHITESPACE@59..60 "\n"
-        R_CURLY@60..61 "}"
-  WHITESPACE@61..62 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "make_query"
+            ARG_LIST
+              L_PAREN "("
+              PATH_EXPR
+                PATH
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          CRATE_KW "crate"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "module_map"
+                  COLON2 "::"
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "module_tree"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0034_crate_path_in_call.txt b/crates/parser/test_data/parser/ok/0034_crate_path_in_call.txt
deleted file mode 100644
index 2b3b86ebf2d..00000000000
--- a/crates/parser/test_data/parser/ok/0034_crate_path_in_call.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "make_query"
-            ARG_LIST
-              L_PAREN "("
-              PATH_EXPR
-                PATH
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          CRATE_KW "crate"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "module_map"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "module_tree"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0035_weird_exprs.rast b/crates/parser/test_data/parser/ok/0035_weird_exprs.rast
index 672a12d0878..4ec703e517c 100644
--- a/crates/parser/test_data/parser/ok/0035_weird_exprs.rast
+++ b/crates/parser/test_data/parser/ok/0035_weird_exprs.rast
@@ -1,2337 +1,2328 @@
-SOURCE_FILE@0..3813
-  COMMENT@0..55 "//! Adapted from a `r ..."
-  WHITESPACE@55..56 "\n"
-  COMMENT@56..173 "//! https://github.co ..."
-  WHITESPACE@173..174 "\n"
-  COMMENT@174..178 "//! "
-  WHITESPACE@178..179 "\n"
-  COMMENT@179..269 "//! Reported to rust- ..."
-  WHITESPACE@269..271 "\n\n"
-  ATTR@271..302
-    POUND@271..272 "#"
-    BANG@272..273 "!"
-    L_BRACK@273..274 "["
-    META@274..301
-      PATH@274..279
-        PATH_SEGMENT@274..279
-          NAME_REF@274..279
-            IDENT@274..279 "allow"
-      TOKEN_TREE@279..301
-        L_PAREN@279..280 "("
-        IDENT@280..300 "non_camel_case_types"
-        R_PAREN@300..301 ")"
-    R_BRACK@301..302 "]"
-  WHITESPACE@302..303 "\n"
-  ATTR@303..323
-    POUND@303..304 "#"
-    BANG@304..305 "!"
-    L_BRACK@305..306 "["
-    META@306..322
-      PATH@306..311
-        PATH_SEGMENT@306..311
-          NAME_REF@306..311
-            IDENT@306..311 "allow"
-      TOKEN_TREE@311..322
-        L_PAREN@311..312 "("
-        IDENT@312..321 "dead_code"
-        R_PAREN@321..322 ")"
-    R_BRACK@322..323 "]"
-  WHITESPACE@323..324 "\n"
-  ATTR@324..351
-    POUND@324..325 "#"
-    BANG@325..326 "!"
-    L_BRACK@326..327 "["
-    META@327..350
-      PATH@327..332
-        PATH_SEGMENT@327..332
-          NAME_REF@327..332
-            IDENT@327..332 "allow"
-      TOKEN_TREE@332..350
-        L_PAREN@332..333 "("
-        IDENT@333..349 "unreachable_code"
-        R_PAREN@349..350 ")"
-    R_BRACK@350..351 "]"
-  WHITESPACE@351..352 "\n"
-  ATTR@352..376
-    POUND@352..353 "#"
-    BANG@353..354 "!"
-    L_BRACK@354..355 "["
-    META@355..375
-      PATH@355..360
-        PATH_SEGMENT@355..360
-          NAME_REF@355..360
-            IDENT@355..360 "allow"
-      TOKEN_TREE@360..375
-        L_PAREN@360..361 "("
-        IDENT@361..374 "unused_parens"
-        R_PAREN@374..375 ")"
-    R_BRACK@375..376 "]"
-  WHITESPACE@376..378 "\n\n"
-  ATTR@378..405
-    POUND@378..379 "#"
-    BANG@379..380 "!"
-    L_BRACK@380..381 "["
-    META@381..404
-      PATH@381..396
-        PATH_SEGMENT@381..396
-          NAME_REF@381..396
-            IDENT@381..396 "recursion_limit"
-      WHITESPACE@396..397 " "
-      EQ@397..398 "="
-      WHITESPACE@398..399 " "
-      LITERAL@399..404
-        STRING@399..404 "\"128\""
-    R_BRACK@404..405 "]"
-  WHITESPACE@405..407 "\n\n"
-  USE@407..427
-    USE_KW@407..410 "use"
-    WHITESPACE@410..411 " "
-    USE_TREE@411..426
-      PATH@411..426
-        PATH@411..420
-          PATH@411..414
-            PATH_SEGMENT@411..414
-              NAME_REF@411..414
-                IDENT@411..414 "std"
-          COLON2@414..416 "::"
-          PATH_SEGMENT@416..420
-            NAME_REF@416..420
-              IDENT@416..420 "cell"
-        COLON2@420..422 "::"
-        PATH_SEGMENT@422..426
-          NAME_REF@422..426
-            IDENT@422..426 "Cell"
-    SEMICOLON@426..427 ";"
-  WHITESPACE@427..428 "\n"
-  USE@428..447
-    USE_KW@428..431 "use"
-    WHITESPACE@431..432 " "
-    USE_TREE@432..446
-      PATH@432..446
-        PATH@432..440
-          PATH@432..435
-            PATH_SEGMENT@432..435
-              NAME_REF@432..435
-                IDENT@432..435 "std"
-          COLON2@435..437 "::"
-          PATH_SEGMENT@437..440
-            NAME_REF@437..440
-              IDENT@437..440 "mem"
-        COLON2@440..442 "::"
-        PATH_SEGMENT@442..446
-          NAME_REF@442..446
-            IDENT@442..446 "swap"
-    SEMICOLON@446..447 ";"
-  WHITESPACE@447..449 "\n\n"
-  COMMENT@449..518 "// Just a grab bag of ..."
-  WHITESPACE@518..520 "\n\n"
-  FN@520..572
-    FN_KW@520..522 "fn"
-    WHITESPACE@522..523 " "
-    NAME@523..530
-      IDENT@523..530 "strange"
-    PARAM_LIST@530..532
-      L_PAREN@530..531 "("
-      R_PAREN@531..532 ")"
-    WHITESPACE@532..533 " "
-    RET_TYPE@533..540
-      THIN_ARROW@533..535 "->"
-      WHITESPACE@535..536 " "
-      PATH_TYPE@536..540
-        PATH@536..540
-          PATH_SEGMENT@536..540
-            NAME_REF@536..540
-              IDENT@536..540 "bool"
-    WHITESPACE@540..541 " "
-    BLOCK_EXPR@541..572
-      STMT_LIST@541..572
-        L_CURLY@541..542 "{"
-        WHITESPACE@542..543 " "
-        LET_STMT@543..570
-          LET_KW@543..546 "let"
-          WHITESPACE@546..547 " "
-          IDENT_PAT@547..549
-            NAME@547..549
-              IDENT@547..549 "_x"
-          COLON@549..550 ":"
-          WHITESPACE@550..551 " "
-          PATH_TYPE@551..555
-            PATH@551..555
-              PATH_SEGMENT@551..555
-                NAME_REF@551..555
-                  IDENT@551..555 "bool"
-          WHITESPACE@555..556 " "
-          EQ@556..557 "="
-          WHITESPACE@557..558 " "
-          RETURN_EXPR@558..569
-            RETURN_KW@558..564 "return"
-            WHITESPACE@564..565 " "
-            LITERAL@565..569
-              TRUE_KW@565..569 "true"
-          SEMICOLON@569..570 ";"
-        WHITESPACE@570..571 " "
-        R_CURLY@571..572 "}"
-  WHITESPACE@572..574 "\n\n"
-  FN@574..624
-    FN_KW@574..576 "fn"
-    WHITESPACE@576..577 " "
-    NAME@577..582
-      IDENT@577..582 "funny"
-    PARAM_LIST@582..584
-      L_PAREN@582..583 "("
-      R_PAREN@583..584 ")"
-    WHITESPACE@584..585 " "
-    BLOCK_EXPR@585..624
-      STMT_LIST@585..624
-        L_CURLY@585..586 "{"
-        WHITESPACE@586..591 "\n    "
-        FN@591..607
-          FN_KW@591..593 "fn"
-          WHITESPACE@593..594 " "
-          NAME@594..595
-            IDENT@594..595 "f"
-          PARAM_LIST@595..603
-            L_PAREN@595..596 "("
-            PARAM@596..602
-              IDENT_PAT@596..598
-                NAME@596..598
-                  IDENT@596..598 "_x"
-              COLON@598..599 ":"
-              WHITESPACE@599..600 " "
-              TUPLE_TYPE@600..602
-                L_PAREN@600..601 "("
-                R_PAREN@601..602 ")"
-            R_PAREN@602..603 ")"
-          WHITESPACE@603..604 " "
-          BLOCK_EXPR@604..607
-            STMT_LIST@604..607
-              L_CURLY@604..605 "{"
-              WHITESPACE@605..606 " "
-              R_CURLY@606..607 "}"
-        WHITESPACE@607..612 "\n    "
-        EXPR_STMT@612..622
-          CALL_EXPR@612..621
-            PATH_EXPR@612..613
-              PATH@612..613
-                PATH_SEGMENT@612..613
-                  NAME_REF@612..613
-                    IDENT@612..613 "f"
-            ARG_LIST@613..621
-              L_PAREN@613..614 "("
-              RETURN_EXPR@614..620
-                RETURN_KW@614..620 "return"
-              R_PAREN@620..621 ")"
-          SEMICOLON@621..622 ";"
-        WHITESPACE@622..623 "\n"
-        R_CURLY@623..624 "}"
-  WHITESPACE@624..626 "\n\n"
-  FN@626..816
-    FN_KW@626..628 "fn"
-    WHITESPACE@628..629 " "
-    NAME@629..633
-      IDENT@629..633 "what"
-    PARAM_LIST@633..635
-      L_PAREN@633..634 "("
-      R_PAREN@634..635 ")"
-    WHITESPACE@635..636 " "
-    BLOCK_EXPR@636..816
-      STMT_LIST@636..816
-        L_CURLY@636..637 "{"
-        WHITESPACE@637..642 "\n    "
-        FN@642..720
-          FN_KW@642..644 "fn"
-          WHITESPACE@644..645 " "
-          NAME@645..648
-            IDENT@645..648 "the"
-          PARAM_LIST@648..664
-            L_PAREN@648..649 "("
-            PARAM@649..663
-              IDENT_PAT@649..650
-                NAME@649..650
-                  IDENT@649..650 "x"
-              COLON@650..651 ":"
-              WHITESPACE@651..652 " "
-              REF_TYPE@652..663
-                AMP@652..653 "&"
-                PATH_TYPE@653..663
-                  PATH@653..663
-                    PATH_SEGMENT@653..663
-                      NAME_REF@653..657
-                        IDENT@653..657 "Cell"
-                      GENERIC_ARG_LIST@657..663
-                        L_ANGLE@657..658 "<"
-                        TYPE_ARG@658..662
-                          PATH_TYPE@658..662
-                            PATH@658..662
-                              PATH_SEGMENT@658..662
-                                NAME_REF@658..662
-                                  IDENT@658..662 "bool"
-                        R_ANGLE@662..663 ">"
-            R_PAREN@663..664 ")"
-          WHITESPACE@664..665 " "
-          BLOCK_EXPR@665..720
-            STMT_LIST@665..720
-              L_CURLY@665..666 "{"
-              WHITESPACE@666..675 "\n        "
-              EXPR_STMT@675..714
-                RETURN_EXPR@675..713
-                  RETURN_KW@675..681 "return"
-                  WHITESPACE@681..682 " "
-                  WHILE_EXPR@682..713
-                    WHILE_KW@682..687 "while"
-                    WHITESPACE@687..688 " "
-                    CONDITION@688..696
-                      PREFIX_EXPR@688..696
-                        BANG@688..689 "!"
-                        METHOD_CALL_EXPR@689..696
-                          PATH_EXPR@689..690
-                            PATH@689..690
-                              PATH_SEGMENT@689..690
-                                NAME_REF@689..690
-                                  IDENT@689..690 "x"
-                          DOT@690..691 "."
-                          NAME_REF@691..694
-                            IDENT@691..694 "get"
-                          ARG_LIST@694..696
-                            L_PAREN@694..695 "("
-                            R_PAREN@695..696 ")"
-                    WHITESPACE@696..697 " "
-                    BLOCK_EXPR@697..713
-                      STMT_LIST@697..713
-                        L_CURLY@697..698 "{"
-                        WHITESPACE@698..699 " "
-                        EXPR_STMT@699..711
-                          METHOD_CALL_EXPR@699..710
-                            PATH_EXPR@699..700
-                              PATH@699..700
-                                PATH_SEGMENT@699..700
-                                  NAME_REF@699..700
-                                    IDENT@699..700 "x"
-                            DOT@700..701 "."
-                            NAME_REF@701..704
-                              IDENT@701..704 "set"
-                            ARG_LIST@704..710
-                              L_PAREN@704..705 "("
-                              LITERAL@705..709
-                                TRUE_KW@705..709 "true"
-                              R_PAREN@709..710 ")"
-                          SEMICOLON@710..711 ";"
-                        WHITESPACE@711..712 " "
-                        R_CURLY@712..713 "}"
-                SEMICOLON@713..714 ";"
-              WHITESPACE@714..719 "\n    "
-              R_CURLY@719..720 "}"
-        WHITESPACE@720..725 "\n    "
-        LET_STMT@725..751
-          LET_KW@725..728 "let"
-          WHITESPACE@728..729 " "
-          IDENT_PAT@729..730
-            NAME@729..730
-              IDENT@729..730 "i"
-          WHITESPACE@730..731 " "
-          EQ@731..732 "="
-          WHITESPACE@732..733 " "
-          REF_EXPR@733..750
-            AMP@733..734 "&"
-            CALL_EXPR@734..750
-              PATH_EXPR@734..743
-                PATH@734..743
-                  PATH@734..738
-                    PATH_SEGMENT@734..738
-                      NAME_REF@734..738
-                        IDENT@734..738 "Cell"
-                  COLON2@738..740 "::"
-                  PATH_SEGMENT@740..743
-                    NAME_REF@740..743
-                      IDENT@740..743 "new"
-              ARG_LIST@743..750
-                L_PAREN@743..744 "("
-                LITERAL@744..749
-                  FALSE_KW@744..749 "false"
-                R_PAREN@749..750 ")"
-          SEMICOLON@750..751 ";"
-        WHITESPACE@751..756 "\n    "
-        LET_STMT@756..778
-          LET_KW@756..759 "let"
-          WHITESPACE@759..760 " "
-          IDENT_PAT@760..764
-            NAME@760..764
-              IDENT@760..764 "dont"
-          WHITESPACE@764..765 " "
-          EQ@765..766 "="
-          WHITESPACE@766..767 " "
-          BLOCK_EXPR@767..777
-            STMT_LIST@767..777
-              L_CURLY@767..768 "{"
-              CLOSURE_EXPR@768..776
-                PARAM_LIST@768..770
-                  PIPE@768..769 "|"
-                  PIPE@769..770 "|"
-                CALL_EXPR@770..776
-                  PATH_EXPR@770..773
-                    PATH@770..773
-                      PATH_SEGMENT@770..773
-                        NAME_REF@770..773
-                          IDENT@770..773 "the"
-                  ARG_LIST@773..776
-                    L_PAREN@773..774 "("
-                    PATH_EXPR@774..775
-                      PATH@774..775
-                        PATH_SEGMENT@774..775
-                          NAME_REF@774..775
-                            IDENT@774..775 "i"
-                    R_PAREN@775..776 ")"
-              R_CURLY@776..777 "}"
-          SEMICOLON@777..778 ";"
-        WHITESPACE@778..783 "\n    "
-        EXPR_STMT@783..790
-          CALL_EXPR@783..789
-            PATH_EXPR@783..787
-              PATH@783..787
-                PATH_SEGMENT@783..787
-                  NAME_REF@783..787
-                    IDENT@783..787 "dont"
-            ARG_LIST@787..789
-              L_PAREN@787..788 "("
-              R_PAREN@788..789 ")"
-          SEMICOLON@789..790 ";"
-        WHITESPACE@790..795 "\n    "
-        EXPR_STMT@795..814
-          MACRO_CALL@795..813
-            PATH@795..801
-              PATH_SEGMENT@795..801
-                NAME_REF@795..801
-                  IDENT@795..801 "assert"
-            BANG@801..802 "!"
-            TOKEN_TREE@802..813
-              L_PAREN@802..803 "("
-              TOKEN_TREE@803..812
-                L_PAREN@803..804 "("
-                IDENT@804..805 "i"
-                DOT@805..806 "."
-                IDENT@806..809 "get"
-                TOKEN_TREE@809..811
-                  L_PAREN@809..810 "("
-                  R_PAREN@810..811 ")"
-                R_PAREN@811..812 ")"
-              R_PAREN@812..813 ")"
-          SEMICOLON@813..814 ";"
-        WHITESPACE@814..815 "\n"
-        R_CURLY@815..816 "}"
-  WHITESPACE@816..818 "\n\n"
-  FN@818..1322
-    FN_KW@818..820 "fn"
-    WHITESPACE@820..821 " "
-    NAME@821..832
-      IDENT@821..832 "zombiejesus"
-    PARAM_LIST@832..834
-      L_PAREN@832..833 "("
-      R_PAREN@833..834 ")"
-    WHITESPACE@834..835 " "
-    BLOCK_EXPR@835..1322
-      STMT_LIST@835..1322
-        L_CURLY@835..836 "{"
-        WHITESPACE@836..841 "\n    "
-        LOOP_EXPR@841..1320
-          LOOP_KW@841..845 "loop"
-          WHITESPACE@845..846 " "
-          BLOCK_EXPR@846..1320
-            STMT_LIST@846..1320
-              L_CURLY@846..847 "{"
-              WHITESPACE@847..856 "\n        "
-              EXPR_STMT@856..1283
-                WHILE_EXPR@856..1283
-                  WHILE_KW@856..861 "while"
-                  WHITESPACE@861..862 " "
-                  CONDITION@862..870
-                    PAREN_EXPR@862..870
-                      L_PAREN@862..863 "("
-                      RETURN_EXPR@863..869
-                        RETURN_KW@863..869 "return"
-                      R_PAREN@869..870 ")"
-                  WHITESPACE@870..871 " "
-                  BLOCK_EXPR@871..1283
-                    STMT_LIST@871..1283
-                      L_CURLY@871..872 "{"
-                      WHITESPACE@872..885 "\n            "
-                      IF_EXPR@885..1273
-                        IF_KW@885..887 "if"
-                        WHITESPACE@887..888 " "
-                        CONDITION@888..896
-                          PAREN_EXPR@888..896
-                            L_PAREN@888..889 "("
-                            RETURN_EXPR@889..895
-                              RETURN_KW@889..895 "return"
-                            R_PAREN@895..896 ")"
-                        WHITESPACE@896..897 " "
-                        BLOCK_EXPR@897..1216
-                          STMT_LIST@897..1216
-                            L_CURLY@897..898 "{"
-                            WHITESPACE@898..915 "\n                "
-                            EXPR_STMT@915..1202
-                              MATCH_EXPR@915..1201
-                                MATCH_KW@915..920 "match"
-                                WHITESPACE@920..921 " "
-                                PAREN_EXPR@921..929
-                                  L_PAREN@921..922 "("
-                                  RETURN_EXPR@922..928
-                                    RETURN_KW@922..928 "return"
-                                  R_PAREN@928..929 ")"
-                                WHITESPACE@929..930 " "
-                                MATCH_ARM_LIST@930..1201
-                                  L_CURLY@930..931 "{"
-                                  WHITESPACE@931..952 "\n                    "
-                                  MATCH_ARM@952..1147
-                                    LITERAL_PAT@952..953
-                                      LITERAL@952..953
-                                        INT_NUMBER@952..953 "1"
-                                    WHITESPACE@953..954 " "
-                                    FAT_ARROW@954..956 "=>"
-                                    WHITESPACE@956..957 " "
-                                    BLOCK_EXPR@957..1147
-                                      STMT_LIST@957..1147
-                                        L_CURLY@957..958 "{"
-                                        WHITESPACE@958..983 "\n                     ..."
-                                        IF_EXPR@983..1125
-                                          IF_KW@983..985 "if"
-                                          WHITESPACE@985..986 " "
-                                          CONDITION@986..994
-                                            PAREN_EXPR@986..994
-                                              L_PAREN@986..987 "("
-                                              RETURN_EXPR@987..993
-                                                RETURN_KW@987..993 "return"
-                                              R_PAREN@993..994 ")"
-                                          WHITESPACE@994..995 " "
-                                          BLOCK_EXPR@995..1057
-                                            STMT_LIST@995..1057
-                                              L_CURLY@995..996 "{"
-                                              WHITESPACE@996..1025 "\n                     ..."
-                                              RETURN_EXPR@1025..1031
-                                                RETURN_KW@1025..1031 "return"
-                                              WHITESPACE@1031..1056 "\n                     ..."
-                                              R_CURLY@1056..1057 "}"
-                                          WHITESPACE@1057..1058 " "
-                                          ELSE_KW@1058..1062 "else"
-                                          WHITESPACE@1062..1063 " "
-                                          BLOCK_EXPR@1063..1125
-                                            STMT_LIST@1063..1125
-                                              L_CURLY@1063..1064 "{"
-                                              WHITESPACE@1064..1093 "\n                     ..."
-                                              RETURN_EXPR@1093..1099
-                                                RETURN_KW@1093..1099 "return"
-                                              WHITESPACE@1099..1124 "\n                     ..."
-                                              R_CURLY@1124..1125 "}"
-                                        WHITESPACE@1125..1146 "\n                    "
-                                        R_CURLY@1146..1147 "}"
-                                  WHITESPACE@1147..1168 "\n                    "
-                                  MATCH_ARM@1168..1183
-                                    WILDCARD_PAT@1168..1169
-                                      UNDERSCORE@1168..1169 "_"
-                                    WHITESPACE@1169..1170 " "
-                                    FAT_ARROW@1170..1172 "=>"
-                                    WHITESPACE@1172..1173 " "
-                                    BLOCK_EXPR@1173..1183
-                                      STMT_LIST@1173..1183
-                                        L_CURLY@1173..1174 "{"
-                                        WHITESPACE@1174..1175 " "
-                                        RETURN_EXPR@1175..1181
-                                          RETURN_KW@1175..1181 "return"
-                                        WHITESPACE@1181..1182 " "
-                                        R_CURLY@1182..1183 "}"
-                                  WHITESPACE@1183..1200 "\n                "
-                                  R_CURLY@1200..1201 "}"
-                              SEMICOLON@1201..1202 ";"
-                            WHITESPACE@1202..1215 "\n            "
-                            R_CURLY@1215..1216 "}"
-                        WHITESPACE@1216..1217 " "
-                        ELSE_KW@1217..1221 "else"
-                        WHITESPACE@1221..1222 " "
-                        IF_EXPR@1222..1273
-                          IF_KW@1222..1224 "if"
-                          WHITESPACE@1224..1225 " "
-                          CONDITION@1225..1233
-                            PAREN_EXPR@1225..1233
-                              L_PAREN@1225..1226 "("
-                              RETURN_EXPR@1226..1232
-                                RETURN_KW@1226..1232 "return"
-                              R_PAREN@1232..1233 ")"
-                          WHITESPACE@1233..1234 " "
-                          BLOCK_EXPR@1234..1273
-                            STMT_LIST@1234..1273
-                              L_CURLY@1234..1235 "{"
-                              WHITESPACE@1235..1252 "\n                "
-                              EXPR_STMT@1252..1259
-                                RETURN_EXPR@1252..1258
-                                  RETURN_KW@1252..1258 "return"
-                                SEMICOLON@1258..1259 ";"
-                              WHITESPACE@1259..1272 "\n            "
-                              R_CURLY@1272..1273 "}"
-                      WHITESPACE@1273..1282 "\n        "
-                      R_CURLY@1282..1283 "}"
-              WHITESPACE@1283..1292 "\n        "
-              IF_EXPR@1292..1314
-                IF_KW@1292..1294 "if"
-                WHITESPACE@1294..1295 " "
-                CONDITION@1295..1303
-                  PAREN_EXPR@1295..1303
-                    L_PAREN@1295..1296 "("
-                    RETURN_EXPR@1296..1302
-                      RETURN_KW@1296..1302 "return"
-                    R_PAREN@1302..1303 ")"
-                WHITESPACE@1303..1304 " "
-                BLOCK_EXPR@1304..1314
-                  STMT_LIST@1304..1314
-                    L_CURLY@1304..1305 "{"
-                    WHITESPACE@1305..1306 " "
-                    EXPR_STMT@1306..1312
-                      BREAK_EXPR@1306..1311
-                        BREAK_KW@1306..1311 "break"
-                      SEMICOLON@1311..1312 ";"
-                    WHITESPACE@1312..1313 " "
-                    R_CURLY@1313..1314 "}"
-              WHITESPACE@1314..1319 "\n    "
-              R_CURLY@1319..1320 "}"
-        WHITESPACE@1320..1321 "\n"
-        R_CURLY@1321..1322 "}"
-  WHITESPACE@1322..1324 "\n\n"
-  FN@1324..1539
-    FN_KW@1324..1326 "fn"
-    WHITESPACE@1326..1327 " "
-    NAME@1327..1334
-      IDENT@1327..1334 "notsure"
-    PARAM_LIST@1334..1336
-      L_PAREN@1334..1335 "("
-      R_PAREN@1335..1336 ")"
-    WHITESPACE@1336..1337 " "
-    BLOCK_EXPR@1337..1539
-      STMT_LIST@1337..1539
-        L_CURLY@1337..1338 "{"
-        WHITESPACE@1338..1343 "\n    "
-        LET_STMT@1343..1361
-          LET_KW@1343..1346 "let"
-          WHITESPACE@1346..1347 " "
-          IDENT_PAT@1347..1353
-            MUT_KW@1347..1350 "mut"
-            WHITESPACE@1350..1351 " "
-            NAME@1351..1353
-              IDENT@1351..1353 "_x"
-          COLON@1353..1354 ":"
-          WHITESPACE@1354..1355 " "
-          PATH_TYPE@1355..1360
-            PATH@1355..1360
-              PATH_SEGMENT@1355..1360
-                NAME_REF@1355..1360
-                  IDENT@1355..1360 "isize"
-          SEMICOLON@1360..1361 ";"
-        WHITESPACE@1361..1366 "\n    "
-        LET_STMT@1366..1400
-          LET_KW@1366..1369 "let"
-          WHITESPACE@1369..1370 " "
-          IDENT_PAT@1370..1376
-            MUT_KW@1370..1373 "mut"
-            WHITESPACE@1373..1374 " "
-            NAME@1374..1376
-              IDENT@1374..1376 "_y"
-          WHITESPACE@1376..1377 " "
-          EQ@1377..1378 "="
-          WHITESPACE@1378..1379 " "
-          BIN_EXPR@1379..1399
-            PAREN_EXPR@1379..1387
-              L_PAREN@1379..1380 "("
-              BIN_EXPR@1380..1386
-                PATH_EXPR@1380..1382
-                  PATH@1380..1382
-                    PATH_SEGMENT@1380..1382
-                      NAME_REF@1380..1382
-                        IDENT@1380..1382 "_x"
-                WHITESPACE@1382..1383 " "
-                EQ@1383..1384 "="
-                WHITESPACE@1384..1385 " "
-                LITERAL@1385..1386
-                  INT_NUMBER@1385..1386 "0"
-              R_PAREN@1386..1387 ")"
-            WHITESPACE@1387..1388 " "
-            EQ2@1388..1390 "=="
-            WHITESPACE@1390..1391 " "
-            PAREN_EXPR@1391..1399
-              L_PAREN@1391..1392 "("
-              BIN_EXPR@1392..1398
-                PATH_EXPR@1392..1394
-                  PATH@1392..1394
-                    PATH_SEGMENT@1392..1394
-                      NAME_REF@1392..1394
-                        IDENT@1392..1394 "_x"
-                WHITESPACE@1394..1395 " "
-                EQ@1395..1396 "="
-                WHITESPACE@1396..1397 " "
-                LITERAL@1397..1398
-                  INT_NUMBER@1397..1398 "0"
-              R_PAREN@1398..1399 ")"
-          SEMICOLON@1399..1400 ";"
-        WHITESPACE@1400..1405 "\n    "
-        LET_STMT@1405..1438
-          LET_KW@1405..1408 "let"
-          WHITESPACE@1408..1409 " "
-          IDENT_PAT@1409..1415
-            MUT_KW@1409..1412 "mut"
-            WHITESPACE@1412..1413 " "
-            NAME@1413..1415
-              IDENT@1413..1415 "_z"
-          WHITESPACE@1415..1416 " "
-          EQ@1416..1417 "="
-          WHITESPACE@1417..1418 " "
-          BIN_EXPR@1418..1437
-            PAREN_EXPR@1418..1426
-              L_PAREN@1418..1419 "("
-              BIN_EXPR@1419..1425
-                PATH_EXPR@1419..1421
-                  PATH@1419..1421
-                    PATH_SEGMENT@1419..1421
-                      NAME_REF@1419..1421
-                        IDENT@1419..1421 "_x"
-                WHITESPACE@1421..1422 " "
-                EQ@1422..1423 "="
-                WHITESPACE@1423..1424 " "
-                LITERAL@1424..1425
-                  INT_NUMBER@1424..1425 "0"
-              R_PAREN@1425..1426 ")"
-            WHITESPACE@1426..1427 " "
-            L_ANGLE@1427..1428 "<"
-            WHITESPACE@1428..1429 " "
-            PAREN_EXPR@1429..1437
-              L_PAREN@1429..1430 "("
-              BIN_EXPR@1430..1436
-                PATH_EXPR@1430..1432
-                  PATH@1430..1432
-                    PATH_SEGMENT@1430..1432
-                      NAME_REF@1430..1432
-                        IDENT@1430..1432 "_x"
-                WHITESPACE@1432..1433 " "
-                EQ@1433..1434 "="
-                WHITESPACE@1434..1435 " "
-                LITERAL@1435..1436
-                  INT_NUMBER@1435..1436 "0"
-              R_PAREN@1436..1437 ")"
-          SEMICOLON@1437..1438 ";"
-        WHITESPACE@1438..1443 "\n    "
-        LET_STMT@1443..1474
-          LET_KW@1443..1446 "let"
-          WHITESPACE@1446..1447 " "
-          IDENT_PAT@1447..1449
-            NAME@1447..1449
-              IDENT@1447..1449 "_a"
-          WHITESPACE@1449..1450 " "
-          EQ@1450..1451 "="
-          WHITESPACE@1451..1452 " "
-          BIN_EXPR@1452..1473
-            PAREN_EXPR@1452..1461
-              L_PAREN@1452..1453 "("
-              BIN_EXPR@1453..1460
-                PATH_EXPR@1453..1455
-                  PATH@1453..1455
-                    PATH_SEGMENT@1453..1455
-                      NAME_REF@1453..1455
-                        IDENT@1453..1455 "_x"
-                WHITESPACE@1455..1456 " "
-                PLUSEQ@1456..1458 "+="
-                WHITESPACE@1458..1459 " "
-                LITERAL@1459..1460
-                  INT_NUMBER@1459..1460 "0"
-              R_PAREN@1460..1461 ")"
-            WHITESPACE@1461..1462 " "
-            EQ2@1462..1464 "=="
-            WHITESPACE@1464..1465 " "
-            PAREN_EXPR@1465..1473
-              L_PAREN@1465..1466 "("
-              BIN_EXPR@1466..1472
-                PATH_EXPR@1466..1468
-                  PATH@1466..1468
-                    PATH_SEGMENT@1466..1468
-                      NAME_REF@1466..1468
-                        IDENT@1466..1468 "_x"
-                WHITESPACE@1468..1469 " "
-                EQ@1469..1470 "="
-                WHITESPACE@1470..1471 " "
-                LITERAL@1471..1472
-                  INT_NUMBER@1471..1472 "0"
-              R_PAREN@1472..1473 ")"
-          SEMICOLON@1473..1474 ";"
-        WHITESPACE@1474..1479 "\n    "
-        LET_STMT@1479..1537
-          LET_KW@1479..1482 "let"
-          WHITESPACE@1482..1483 " "
-          IDENT_PAT@1483..1485
-            NAME@1483..1485
-              IDENT@1483..1485 "_b"
-          WHITESPACE@1485..1486 " "
-          EQ@1486..1487 "="
-          WHITESPACE@1487..1488 " "
-          BIN_EXPR@1488..1536
-            CALL_EXPR@1488..1510
-              PATH_EXPR@1488..1492
-                PATH@1488..1492
-                  PATH_SEGMENT@1488..1492
-                    NAME_REF@1488..1492
-                      IDENT@1488..1492 "swap"
-              ARG_LIST@1492..1510
-                L_PAREN@1492..1493 "("
-                REF_EXPR@1493..1500
-                  AMP@1493..1494 "&"
-                  MUT_KW@1494..1497 "mut"
-                  WHITESPACE@1497..1498 " "
-                  PATH_EXPR@1498..1500
-                    PATH@1498..1500
-                      PATH_SEGMENT@1498..1500
-                        NAME_REF@1498..1500
-                          IDENT@1498..1500 "_y"
-                COMMA@1500..1501 ","
-                WHITESPACE@1501..1502 " "
-                REF_EXPR@1502..1509
-                  AMP@1502..1503 "&"
-                  MUT_KW@1503..1506 "mut"
-                  WHITESPACE@1506..1507 " "
-                  PATH_EXPR@1507..1509
-                    PATH@1507..1509
-                      PATH_SEGMENT@1507..1509
-                        NAME_REF@1507..1509
-                          IDENT@1507..1509 "_z"
-                R_PAREN@1509..1510 ")"
-            WHITESPACE@1510..1511 " "
-            EQ2@1511..1513 "=="
-            WHITESPACE@1513..1514 " "
-            CALL_EXPR@1514..1536
-              PATH_EXPR@1514..1518
-                PATH@1514..1518
-                  PATH_SEGMENT@1514..1518
-                    NAME_REF@1514..1518
-                      IDENT@1514..1518 "swap"
-              ARG_LIST@1518..1536
-                L_PAREN@1518..1519 "("
-                REF_EXPR@1519..1526
-                  AMP@1519..1520 "&"
-                  MUT_KW@1520..1523 "mut"
-                  WHITESPACE@1523..1524 " "
-                  PATH_EXPR@1524..1526
-                    PATH@1524..1526
-                      PATH_SEGMENT@1524..1526
-                        NAME_REF@1524..1526
-                          IDENT@1524..1526 "_y"
-                COMMA@1526..1527 ","
-                WHITESPACE@1527..1528 " "
-                REF_EXPR@1528..1535
-                  AMP@1528..1529 "&"
-                  MUT_KW@1529..1532 "mut"
-                  WHITESPACE@1532..1533 " "
-                  PATH_EXPR@1533..1535
-                    PATH@1533..1535
-                      PATH_SEGMENT@1533..1535
-                        NAME_REF@1533..1535
-                          IDENT@1533..1535 "_z"
-                R_PAREN@1535..1536 ")"
-          SEMICOLON@1536..1537 ";"
-        WHITESPACE@1537..1538 "\n"
-        R_CURLY@1538..1539 "}"
-  WHITESPACE@1539..1541 "\n\n"
-  FN@1541..1741
-    FN_KW@1541..1543 "fn"
-    WHITESPACE@1543..1544 " "
-    NAME@1544..1557
-      IDENT@1544..1557 "canttouchthis"
-    PARAM_LIST@1557..1559
-      L_PAREN@1557..1558 "("
-      R_PAREN@1558..1559 ")"
-    WHITESPACE@1559..1560 " "
-    RET_TYPE@1560..1568
-      THIN_ARROW@1560..1562 "->"
-      WHITESPACE@1562..1563 " "
-      PATH_TYPE@1563..1568
-        PATH@1563..1568
-          PATH_SEGMENT@1563..1568
-            NAME_REF@1563..1568
-              IDENT@1563..1568 "usize"
-    WHITESPACE@1568..1569 " "
-    BLOCK_EXPR@1569..1741
-      STMT_LIST@1569..1741
-        L_CURLY@1569..1570 "{"
-        WHITESPACE@1570..1575 "\n    "
-        FN@1575..1598
-          FN_KW@1575..1577 "fn"
-          WHITESPACE@1577..1578 " "
-          NAME@1578..1579
-            IDENT@1578..1579 "p"
-          PARAM_LIST@1579..1581
-            L_PAREN@1579..1580 "("
-            R_PAREN@1580..1581 ")"
-          WHITESPACE@1581..1582 " "
-          RET_TYPE@1582..1589
-            THIN_ARROW@1582..1584 "->"
-            WHITESPACE@1584..1585 " "
-            PATH_TYPE@1585..1589
-              PATH@1585..1589
-                PATH_SEGMENT@1585..1589
-                  NAME_REF@1585..1589
-                    IDENT@1585..1589 "bool"
-          WHITESPACE@1589..1590 " "
-          BLOCK_EXPR@1590..1598
-            STMT_LIST@1590..1598
-              L_CURLY@1590..1591 "{"
-              WHITESPACE@1591..1592 " "
-              LITERAL@1592..1596
-                TRUE_KW@1592..1596 "true"
-              WHITESPACE@1596..1597 " "
-              R_CURLY@1597..1598 "}"
-        WHITESPACE@1598..1603 "\n    "
-        LET_STMT@1603..1648
-          LET_KW@1603..1606 "let"
-          WHITESPACE@1606..1607 " "
-          IDENT_PAT@1607..1609
-            NAME@1607..1609
-              IDENT@1607..1609 "_a"
-          WHITESPACE@1609..1610 " "
-          EQ@1610..1611 "="
-          WHITESPACE@1611..1612 " "
-          PAREN_EXPR@1612..1647
-            L_PAREN@1612..1613 "("
-            BIN_EXPR@1613..1646
-              MACRO_CALL@1613..1628
-                PATH@1613..1619
-                  PATH_SEGMENT@1613..1619
-                    NAME_REF@1613..1619
-                      IDENT@1613..1619 "assert"
-                BANG@1619..1620 "!"
-                TOKEN_TREE@1620..1628
-                  L_PAREN@1620..1621 "("
-                  TOKEN_TREE@1621..1627
-                    L_PAREN@1621..1622 "("
-                    TRUE_KW@1622..1626 "true"
-                    R_PAREN@1626..1627 ")"
-                  R_PAREN@1627..1628 ")"
-              WHITESPACE@1628..1629 " "
-              EQ2@1629..1631 "=="
-              WHITESPACE@1631..1632 " "
-              PAREN_EXPR@1632..1646
-                L_PAREN@1632..1633 "("
-                MACRO_CALL@1633..1645
-                  PATH@1633..1639
-                    PATH_SEGMENT@1633..1639
-                      NAME_REF@1633..1639
-                        IDENT@1633..1639 "assert"
-                  BANG@1639..1640 "!"
-                  TOKEN_TREE@1640..1645
-                    L_PAREN@1640..1641 "("
-                    IDENT@1641..1642 "p"
-                    TOKEN_TREE@1642..1644
-                      L_PAREN@1642..1643 "("
-                      R_PAREN@1643..1644 ")"
-                    R_PAREN@1644..1645 ")"
-                R_PAREN@1645..1646 ")"
-            R_PAREN@1646..1647 ")"
-          SEMICOLON@1647..1648 ";"
-        WHITESPACE@1648..1653 "\n    "
-        LET_STMT@1653..1685
-          LET_KW@1653..1656 "let"
-          WHITESPACE@1656..1657 " "
-          IDENT_PAT@1657..1659
-            NAME@1657..1659
-              IDENT@1657..1659 "_c"
-          WHITESPACE@1659..1660 " "
-          EQ@1660..1661 "="
-          WHITESPACE@1661..1662 " "
-          PAREN_EXPR@1662..1684
-            L_PAREN@1662..1663 "("
-            BIN_EXPR@1663..1683
-              MACRO_CALL@1663..1677
-                PATH@1663..1669
-                  PATH_SEGMENT@1663..1669
-                    NAME_REF@1663..1669
-                      IDENT@1663..1669 "assert"
-                BANG@1669..1670 "!"
-                TOKEN_TREE@1670..1677
-                  L_PAREN@1670..1671 "("
-                  TOKEN_TREE@1671..1676
-                    L_PAREN@1671..1672 "("
-                    IDENT@1672..1673 "p"
-                    TOKEN_TREE@1673..1675
-                      L_PAREN@1673..1674 "("
-                      R_PAREN@1674..1675 ")"
-                    R_PAREN@1675..1676 ")"
-                  R_PAREN@1676..1677 ")"
-              WHITESPACE@1677..1678 " "
-              EQ2@1678..1680 "=="
-              WHITESPACE@1680..1681 " "
-              TUPLE_EXPR@1681..1683
-                L_PAREN@1681..1682 "("
-                R_PAREN@1682..1683 ")"
-            R_PAREN@1683..1684 ")"
-          SEMICOLON@1684..1685 ";"
-        WHITESPACE@1685..1690 "\n    "
-        LET_STMT@1690..1739
-          LET_KW@1690..1693 "let"
-          WHITESPACE@1693..1694 " "
-          IDENT_PAT@1694..1696
-            NAME@1694..1696
-              IDENT@1694..1696 "_b"
-          COLON@1696..1697 ":"
-          WHITESPACE@1697..1698 " "
-          PATH_TYPE@1698..1702
-            PATH@1698..1702
-              PATH_SEGMENT@1698..1702
-                NAME_REF@1698..1702
-                  IDENT@1698..1702 "bool"
-          WHITESPACE@1702..1703 " "
-          EQ@1703..1704 "="
-          WHITESPACE@1704..1705 " "
-          PAREN_EXPR@1705..1738
-            L_PAREN@1705..1706 "("
-            BIN_EXPR@1706..1737
-              MACRO_CALL@1706..1723
-                PATH@1706..1713
-                  PATH_SEGMENT@1706..1713
-                    NAME_REF@1706..1713
-                      IDENT@1706..1713 "println"
-                BANG@1713..1714 "!"
-                TOKEN_TREE@1714..1723
-                  L_PAREN@1714..1715 "("
-                  STRING@1715..1719 "\"{}\""
-                  COMMA@1719..1720 ","
-                  WHITESPACE@1720..1721 " "
-                  INT_NUMBER@1721..1722 "0"
-                  R_PAREN@1722..1723 ")"
-              WHITESPACE@1723..1724 " "
-              EQ2@1724..1726 "=="
-              WHITESPACE@1726..1727 " "
-              PAREN_EXPR@1727..1737
-                L_PAREN@1727..1728 "("
-                RETURN_EXPR@1728..1736
-                  RETURN_KW@1728..1734 "return"
-                  WHITESPACE@1734..1735 " "
-                  LITERAL@1735..1736
-                    INT_NUMBER@1735..1736 "0"
-                R_PAREN@1736..1737 ")"
-            R_PAREN@1737..1738 ")"
-          SEMICOLON@1738..1739 ";"
-        WHITESPACE@1739..1740 "\n"
-        R_CURLY@1740..1741 "}"
-  WHITESPACE@1741..1743 "\n\n"
-  FN@1743..1904
-    FN_KW@1743..1745 "fn"
-    WHITESPACE@1745..1746 " "
-    NAME@1746..1755
-      IDENT@1746..1755 "angrydome"
-    PARAM_LIST@1755..1757
-      L_PAREN@1755..1756 "("
-      R_PAREN@1756..1757 ")"
-    WHITESPACE@1757..1758 " "
-    BLOCK_EXPR@1758..1904
-      STMT_LIST@1758..1904
-        L_CURLY@1758..1759 "{"
-        WHITESPACE@1759..1764 "\n    "
-        EXPR_STMT@1764..1785
-          LOOP_EXPR@1764..1785
-            LOOP_KW@1764..1768 "loop"
-            WHITESPACE@1768..1769 " "
-            BLOCK_EXPR@1769..1785
-              STMT_LIST@1769..1785
-                L_CURLY@1769..1770 "{"
-                WHITESPACE@1770..1771 " "
-                IF_EXPR@1771..1783
-                  IF_KW@1771..1773 "if"
-                  WHITESPACE@1773..1774 " "
-                  CONDITION@1774..1779
-                    BREAK_EXPR@1774..1779
-                      BREAK_KW@1774..1779 "break"
-                  WHITESPACE@1779..1780 " "
-                  BLOCK_EXPR@1780..1783
-                    STMT_LIST@1780..1783
-                      L_CURLY@1780..1781 "{"
-                      WHITESPACE@1781..1782 " "
-                      R_CURLY@1782..1783 "}"
-                WHITESPACE@1783..1784 " "
-                R_CURLY@1784..1785 "}"
-        WHITESPACE@1785..1790 "\n    "
-        LET_STMT@1790..1804
-          LET_KW@1790..1793 "let"
-          WHITESPACE@1793..1794 " "
-          IDENT_PAT@1794..1799
-            MUT_KW@1794..1797 "mut"
-            WHITESPACE@1797..1798 " "
-            NAME@1798..1799
-              IDENT@1798..1799 "i"
-          WHITESPACE@1799..1800 " "
-          EQ@1800..1801 "="
-          WHITESPACE@1801..1802 " "
-          LITERAL@1802..1803
-            INT_NUMBER@1802..1803 "0"
-          SEMICOLON@1803..1804 ";"
-        WHITESPACE@1804..1809 "\n    "
-        LOOP_EXPR@1809..1902
-          LOOP_KW@1809..1813 "loop"
-          WHITESPACE@1813..1814 " "
-          BLOCK_EXPR@1814..1902
-            STMT_LIST@1814..1902
-              L_CURLY@1814..1815 "{"
-              WHITESPACE@1815..1816 " "
-              EXPR_STMT@1816..1823
-                BIN_EXPR@1816..1822
-                  PATH_EXPR@1816..1817
-                    PATH@1816..1817
-                      PATH_SEGMENT@1816..1817
-                        NAME_REF@1816..1817
-                          IDENT@1816..1817 "i"
-                  WHITESPACE@1817..1818 " "
-                  PLUSEQ@1818..1820 "+="
-                  WHITESPACE@1820..1821 " "
-                  LITERAL@1821..1822
-                    INT_NUMBER@1821..1822 "1"
-                SEMICOLON@1822..1823 ";"
-              WHITESPACE@1823..1824 " "
-              EXPR_STMT@1824..1887
-                IF_EXPR@1824..1887
-                  IF_KW@1824..1826 "if"
-                  WHITESPACE@1826..1827 " "
-                  CONDITION@1827..1833
-                    BIN_EXPR@1827..1833
-                      PATH_EXPR@1827..1828
-                        PATH@1827..1828
-                          PATH_SEGMENT@1827..1828
-                            NAME_REF@1827..1828
-                              IDENT@1827..1828 "i"
-                      WHITESPACE@1828..1829 " "
-                      EQ2@1829..1831 "=="
-                      WHITESPACE@1831..1832 " "
-                      LITERAL@1832..1833
-                        INT_NUMBER@1832..1833 "1"
-                  WHITESPACE@1833..1834 " "
-                  BLOCK_EXPR@1834..1887
-                    STMT_LIST@1834..1887
-                      L_CURLY@1834..1835 "{"
-                      WHITESPACE@1835..1836 " "
-                      MATCH_EXPR@1836..1885
-                        MATCH_KW@1836..1841 "match"
-                        WHITESPACE@1841..1842 " "
-                        PAREN_EXPR@1842..1852
-                          L_PAREN@1842..1843 "("
-                          CONTINUE_EXPR@1843..1851
-                            CONTINUE_KW@1843..1851 "continue"
-                          R_PAREN@1851..1852 ")"
-                        WHITESPACE@1852..1853 " "
-                        MATCH_ARM_LIST@1853..1885
-                          L_CURLY@1853..1854 "{"
-                          WHITESPACE@1854..1855 " "
-                          MATCH_ARM@1855..1864
-                            LITERAL_PAT@1855..1856
-                              LITERAL@1855..1856
-                                INT_NUMBER@1855..1856 "1"
-                            WHITESPACE@1856..1857 " "
-                            FAT_ARROW@1857..1859 "=>"
-                            WHITESPACE@1859..1860 " "
-                            BLOCK_EXPR@1860..1863
-                              STMT_LIST@1860..1863
-                                L_CURLY@1860..1861 "{"
-                                WHITESPACE@1861..1862 " "
-                                R_CURLY@1862..1863 "}"
-                            COMMA@1863..1864 ","
-                          WHITESPACE@1864..1865 " "
-                          MATCH_ARM@1865..1883
-                            WILDCARD_PAT@1865..1866
-                              UNDERSCORE@1865..1866 "_"
-                            WHITESPACE@1866..1867 " "
-                            FAT_ARROW@1867..1869 "=>"
-                            WHITESPACE@1869..1870 " "
-                            MACRO_CALL@1870..1883
-                              PATH@1870..1875
-                                PATH_SEGMENT@1870..1875
-                                  NAME_REF@1870..1875
-                                    IDENT@1870..1875 "panic"
-                              BANG@1875..1876 "!"
-                              TOKEN_TREE@1876..1883
-                                L_PAREN@1876..1877 "("
-                                STRING@1877..1882 "\"wat\""
-                                R_PAREN@1882..1883 ")"
-                          WHITESPACE@1883..1884 " "
-                          R_CURLY@1884..1885 "}"
-                      WHITESPACE@1885..1886 " "
-                      R_CURLY@1886..1887 "}"
-              WHITESPACE@1887..1894 "\n      "
-              EXPR_STMT@1894..1900
-                BREAK_EXPR@1894..1899
-                  BREAK_KW@1894..1899 "break"
-                SEMICOLON@1899..1900 ";"
-              WHITESPACE@1900..1901 " "
-              R_CURLY@1901..1902 "}"
-        WHITESPACE@1902..1903 "\n"
-        R_CURLY@1903..1904 "}"
-  WHITESPACE@1904..1906 "\n\n"
-  FN@1906..1960
-    FN_KW@1906..1908 "fn"
-    WHITESPACE@1908..1909 " "
-    NAME@1909..1921
-      IDENT@1909..1921 "evil_lincoln"
-    PARAM_LIST@1921..1923
-      L_PAREN@1921..1922 "("
-      R_PAREN@1922..1923 ")"
-    WHITESPACE@1923..1924 " "
-    BLOCK_EXPR@1924..1960
-      STMT_LIST@1924..1960
-        L_CURLY@1924..1925 "{"
-        WHITESPACE@1925..1926 " "
-        LET_STMT@1926..1958
-          LET_KW@1926..1929 "let"
-          WHITESPACE@1929..1930 " "
-          IDENT_PAT@1930..1935
-            NAME@1930..1935
-              IDENT@1930..1935 "_evil"
-          WHITESPACE@1935..1936 " "
-          EQ@1936..1937 "="
-          WHITESPACE@1937..1938 " "
-          MACRO_CALL@1938..1957
-            PATH@1938..1945
-              PATH_SEGMENT@1938..1945
-                NAME_REF@1938..1945
-                  IDENT@1938..1945 "println"
-            BANG@1945..1946 "!"
-            TOKEN_TREE@1946..1957
-              L_PAREN@1946..1947 "("
-              STRING@1947..1956 "\"lincoln\""
-              R_PAREN@1956..1957 ")"
-          SEMICOLON@1957..1958 ";"
-        WHITESPACE@1958..1959 " "
-        R_CURLY@1959..1960 "}"
-  WHITESPACE@1960..1962 "\n\n"
-  FN@1962..2198
-    FN_KW@1962..1964 "fn"
-    WHITESPACE@1964..1965 " "
-    NAME@1965..1969
-      IDENT@1965..1969 "dots"
-    PARAM_LIST@1969..1971
-      L_PAREN@1969..1970 "("
-      R_PAREN@1970..1971 ")"
-    WHITESPACE@1971..1972 " "
-    BLOCK_EXPR@1972..2198
-      STMT_LIST@1972..2198
-        L_CURLY@1972..1973 "{"
-        WHITESPACE@1973..1978 "\n    "
-        EXPR_STMT@1978..2196
-          MACRO_CALL@1978..2195
-            PATH@1978..1987
-              PATH_SEGMENT@1978..1987
-                NAME_REF@1978..1987
-                  IDENT@1978..1987 "assert_eq"
-            BANG@1987..1988 "!"
-            TOKEN_TREE@1988..2195
-              L_PAREN@1988..1989 "("
-              IDENT@1989..1995 "String"
-              COLON@1995..1996 ":"
-              COLON@1996..1997 ":"
-              IDENT@1997..2001 "from"
-              TOKEN_TREE@2001..2055
-                L_PAREN@2001..2002 "("
-                STRING@2002..2054 "\".................... ..."
-                R_PAREN@2054..2055 ")"
-              COMMA@2055..2056 ","
-              WHITESPACE@2056..2072 "\n               "
-              IDENT@2072..2078 "format"
-              BANG@2078..2079 "!"
-              TOKEN_TREE@2079..2194
-                L_PAREN@2079..2080 "("
-                STRING@2080..2086 "\"{:?}\""
-                COMMA@2086..2087 ","
-                WHITESPACE@2087..2088 " "
-                DOT@2088..2089 "."
-                DOT@2089..2090 "."
-                WHITESPACE@2090..2091 " "
-                DOT@2091..2092 "."
-                DOT@2092..2093 "."
-                WHITESPACE@2093..2094 " "
-                DOT@2094..2095 "."
-                DOT@2095..2096 "."
-                WHITESPACE@2096..2097 " "
-                DOT@2097..2098 "."
-                DOT@2098..2099 "."
-                WHITESPACE@2099..2100 " "
-                DOT@2100..2101 "."
-                DOT@2101..2102 "."
-                WHITESPACE@2102..2103 " "
-                DOT@2103..2104 "."
-                DOT@2104..2105 "."
-                WHITESPACE@2105..2106 " "
-                DOT@2106..2107 "."
-                DOT@2107..2108 "."
-                WHITESPACE@2108..2109 " "
-                DOT@2109..2110 "."
-                DOT@2110..2111 "."
-                WHITESPACE@2111..2112 " "
-                DOT@2112..2113 "."
-                DOT@2113..2114 "."
-                WHITESPACE@2114..2115 " "
-                DOT@2115..2116 "."
-                DOT@2116..2117 "."
-                WHITESPACE@2117..2118 " "
-                DOT@2118..2119 "."
-                DOT@2119..2120 "."
-                WHITESPACE@2120..2121 " "
-                DOT@2121..2122 "."
-                DOT@2122..2123 "."
-                WHITESPACE@2123..2124 " "
-                DOT@2124..2125 "."
-                DOT@2125..2126 "."
-                WHITESPACE@2126..2158 "\n                     ..."
-                DOT@2158..2159 "."
-                DOT@2159..2160 "."
-                WHITESPACE@2160..2161 " "
-                DOT@2161..2162 "."
-                DOT@2162..2163 "."
-                WHITESPACE@2163..2164 " "
-                DOT@2164..2165 "."
-                DOT@2165..2166 "."
-                WHITESPACE@2166..2167 " "
-                DOT@2167..2168 "."
-                DOT@2168..2169 "."
-                WHITESPACE@2169..2170 " "
-                DOT@2170..2171 "."
-                DOT@2171..2172 "."
-                WHITESPACE@2172..2173 " "
-                DOT@2173..2174 "."
-                DOT@2174..2175 "."
-                WHITESPACE@2175..2176 " "
-                DOT@2176..2177 "."
-                DOT@2177..2178 "."
-                WHITESPACE@2178..2179 " "
-                DOT@2179..2180 "."
-                DOT@2180..2181 "."
-                WHITESPACE@2181..2182 " "
-                DOT@2182..2183 "."
-                DOT@2183..2184 "."
-                WHITESPACE@2184..2185 " "
-                DOT@2185..2186 "."
-                DOT@2186..2187 "."
-                WHITESPACE@2187..2188 " "
-                DOT@2188..2189 "."
-                DOT@2189..2190 "."
-                WHITESPACE@2190..2191 " "
-                DOT@2191..2192 "."
-                DOT@2192..2193 "."
-                R_PAREN@2193..2194 ")"
-              R_PAREN@2194..2195 ")"
-          SEMICOLON@2195..2196 ";"
-        WHITESPACE@2196..2197 "\n"
-        R_CURLY@2197..2198 "}"
-  WHITESPACE@2198..2200 "\n\n"
-  FN@2200..2693
-    FN_KW@2200..2202 "fn"
-    WHITESPACE@2202..2203 " "
-    NAME@2203..2205
-      IDENT@2203..2205 "u8"
-    PARAM_LIST@2205..2213
-      L_PAREN@2205..2206 "("
-      PARAM@2206..2212
-        IDENT_PAT@2206..2208
-          NAME@2206..2208
-            IDENT@2206..2208 "u8"
-        COLON@2208..2209 ":"
-        WHITESPACE@2209..2210 " "
-        PATH_TYPE@2210..2212
-          PATH@2210..2212
-            PATH_SEGMENT@2210..2212
-              NAME_REF@2210..2212
-                IDENT@2210..2212 "u8"
-      R_PAREN@2212..2213 ")"
-    WHITESPACE@2213..2214 " "
-    BLOCK_EXPR@2214..2693
-      STMT_LIST@2214..2693
-        L_CURLY@2214..2215 "{"
-        WHITESPACE@2215..2220 "\n    "
-        IF_EXPR@2220..2691
-          IF_KW@2220..2222 "if"
-          WHITESPACE@2222..2223 " "
-          CONDITION@2223..2232
-            BIN_EXPR@2223..2232
-              PATH_EXPR@2223..2225
-                PATH@2223..2225
-                  PATH_SEGMENT@2223..2225
-                    NAME_REF@2223..2225
-                      IDENT@2223..2225 "u8"
-              WHITESPACE@2225..2226 " "
-              NEQ@2226..2228 "!="
-              WHITESPACE@2228..2229 " "
-              LITERAL@2229..2232
-                INT_NUMBER@2229..2232 "0u8"
-          WHITESPACE@2232..2233 " "
-          BLOCK_EXPR@2233..2691
-            STMT_LIST@2233..2691
-              L_CURLY@2233..2234 "{"
-              WHITESPACE@2234..2243 "\n        "
-              EXPR_STMT@2243..2685
-                MACRO_CALL@2243..2684
-                  PATH@2243..2252
-                    PATH_SEGMENT@2243..2252
-                      NAME_REF@2243..2252
-                        IDENT@2243..2252 "assert_eq"
-                  BANG@2252..2253 "!"
-                  TOKEN_TREE@2253..2684
-                    L_PAREN@2253..2254 "("
-                    INT_NUMBER@2254..2257 "8u8"
-                    COMMA@2257..2258 ","
-                    WHITESPACE@2258..2259 " "
-                    TOKEN_TREE@2259..2683
-                      L_CURLY@2259..2260 "{"
-                      WHITESPACE@2260..2273 "\n            "
-                      IDENT@2273..2284 "macro_rules"
-                      BANG@2284..2285 "!"
-                      WHITESPACE@2285..2286 " "
-                      IDENT@2286..2288 "u8"
-                      WHITESPACE@2288..2289 " "
-                      TOKEN_TREE@2289..2567
-                        L_CURLY@2289..2290 "{"
-                        WHITESPACE@2290..2307 "\n                "
-                        TOKEN_TREE@2307..2311
-                          L_PAREN@2307..2308 "("
-                          IDENT@2308..2310 "u8"
-                          R_PAREN@2310..2311 ")"
-                        WHITESPACE@2311..2312 " "
-                        EQ@2312..2313 "="
-                        R_ANGLE@2313..2314 ">"
-                        WHITESPACE@2314..2315 " "
-                        TOKEN_TREE@2315..2552
-                          L_CURLY@2315..2316 "{"
-                          WHITESPACE@2316..2337 "\n                    "
-                          MOD_KW@2337..2340 "mod"
-                          WHITESPACE@2340..2341 " "
-                          IDENT@2341..2343 "u8"
-                          WHITESPACE@2343..2344 " "
-                          TOKEN_TREE@2344..2534
-                            L_CURLY@2344..2345 "{"
-                            WHITESPACE@2345..2370 "\n                     ..."
-                            PUB_KW@2370..2373 "pub"
-                            WHITESPACE@2373..2374 " "
-                            FN_KW@2374..2376 "fn"
-                            WHITESPACE@2376..2377 " "
-                            IDENT@2377..2379 "u8"
-                            L_ANGLE@2379..2380 "<"
-                            LIFETIME_IDENT@2380..2383 "'u8"
-                            COLON@2383..2384 ":"
-                            WHITESPACE@2384..2385 " "
-                            LIFETIME_IDENT@2385..2388 "'u8"
-                            WHITESPACE@2388..2389 " "
-                            PLUS@2389..2390 "+"
-                            WHITESPACE@2390..2391 " "
-                            LIFETIME_IDENT@2391..2394 "'u8"
-                            R_ANGLE@2394..2395 ">"
-                            TOKEN_TREE@2395..2408
-                              L_PAREN@2395..2396 "("
-                              IDENT@2396..2398 "u8"
-                              COLON@2398..2399 ":"
-                              WHITESPACE@2399..2400 " "
-                              AMP@2400..2401 "&"
-                              LIFETIME_IDENT@2401..2404 "'u8"
-                              WHITESPACE@2404..2405 " "
-                              IDENT@2405..2407 "u8"
-                              R_PAREN@2407..2408 ")"
-                            WHITESPACE@2408..2409 " "
-                            MINUS@2409..2410 "-"
-                            R_ANGLE@2410..2411 ">"
-                            WHITESPACE@2411..2412 " "
-                            AMP@2412..2413 "&"
-                            LIFETIME_IDENT@2413..2416 "'u8"
-                            WHITESPACE@2416..2417 " "
-                            IDENT@2417..2419 "u8"
-                            WHITESPACE@2419..2420 " "
-                            TOKEN_TREE@2420..2512
-                              L_CURLY@2420..2421 "{"
-                              WHITESPACE@2421..2450 "\n                     ..."
-                              STRING@2450..2454 "\"u8\""
-                              SEMICOLON@2454..2455 ";"
-                              WHITESPACE@2455..2484 "\n                     ..."
-                              IDENT@2484..2486 "u8"
-                              WHITESPACE@2486..2511 "\n                     ..."
-                              R_CURLY@2511..2512 "}"
-                            WHITESPACE@2512..2533 "\n                    "
-                            R_CURLY@2533..2534 "}"
-                          WHITESPACE@2534..2551 "\n                "
-                          R_CURLY@2551..2552 "}"
-                        SEMICOLON@2552..2553 ";"
-                        WHITESPACE@2553..2566 "\n            "
-                        R_CURLY@2566..2567 "}"
-                      WHITESPACE@2567..2581 "\n\n            "
-                      IDENT@2581..2583 "u8"
-                      BANG@2583..2584 "!"
-                      TOKEN_TREE@2584..2588
-                        L_PAREN@2584..2585 "("
-                        IDENT@2585..2587 "u8"
-                        R_PAREN@2587..2588 ")"
-                      SEMICOLON@2588..2589 ";"
-                      WHITESPACE@2589..2602 "\n            "
-                      LET_KW@2602..2605 "let"
-                      WHITESPACE@2605..2606 " "
-                      AMP@2606..2607 "&"
-                      IDENT@2607..2609 "u8"
-                      COLON@2609..2610 ":"
-                      WHITESPACE@2610..2611 " "
-                      AMP@2611..2612 "&"
-                      IDENT@2612..2614 "u8"
-                      WHITESPACE@2614..2615 " "
-                      EQ@2615..2616 "="
-                      WHITESPACE@2616..2617 " "
-                      IDENT@2617..2619 "u8"
-                      COLON@2619..2620 ":"
-                      COLON@2620..2621 ":"
-                      IDENT@2621..2623 "u8"
-                      TOKEN_TREE@2623..2629
-                        L_PAREN@2623..2624 "("
-                        AMP@2624..2625 "&"
-                        INT_NUMBER@2625..2628 "8u8"
-                        R_PAREN@2628..2629 ")"
-                      SEMICOLON@2629..2630 ";"
-                      WHITESPACE@2630..2643 "\n            "
-                      CRATE_KW@2643..2648 "crate"
-                      COLON@2648..2649 ":"
-                      COLON@2649..2650 ":"
-                      IDENT@2650..2652 "u8"
-                      TOKEN_TREE@2652..2657
-                        L_PAREN@2652..2653 "("
-                        INT_NUMBER@2653..2656 "0u8"
-                        R_PAREN@2656..2657 ")"
-                      SEMICOLON@2657..2658 ";"
-                      WHITESPACE@2658..2671 "\n            "
-                      IDENT@2671..2673 "u8"
-                      WHITESPACE@2673..2682 "\n        "
-                      R_CURLY@2682..2683 "}"
-                    R_PAREN@2683..2684 ")"
-                SEMICOLON@2684..2685 ";"
-              WHITESPACE@2685..2690 "\n    "
-              R_CURLY@2690..2691 "}"
-        WHITESPACE@2691..2692 "\n"
-        R_CURLY@2692..2693 "}"
-  WHITESPACE@2693..2695 "\n\n"
-  FN@2695..2832
-    FN_KW@2695..2697 "fn"
-    WHITESPACE@2697..2698 " "
-    NAME@2698..2703
-      IDENT@2698..2703 "fishy"
-    PARAM_LIST@2703..2705
-      L_PAREN@2703..2704 "("
-      R_PAREN@2704..2705 ")"
-    WHITESPACE@2705..2706 " "
-    BLOCK_EXPR@2706..2832
-      STMT_LIST@2706..2832
-        L_CURLY@2706..2707 "{"
-        WHITESPACE@2707..2712 "\n    "
-        EXPR_STMT@2712..2830
-          MACRO_CALL@2712..2829
-            PATH@2712..2721
-              PATH_SEGMENT@2712..2721
-                NAME_REF@2712..2721
-                  IDENT@2712..2721 "assert_eq"
-            BANG@2721..2722 "!"
-            TOKEN_TREE@2722..2829
-              L_PAREN@2722..2723 "("
-              IDENT@2723..2729 "String"
-              COLON@2729..2730 ":"
-              COLON@2730..2731 ":"
-              IDENT@2731..2735 "from"
-              TOKEN_TREE@2735..2742
-                L_PAREN@2735..2736 "("
-                STRING@2736..2741 "\"><>\""
-                R_PAREN@2741..2742 ")"
-              COMMA@2742..2743 ","
-              WHITESPACE@2743..2759 "\n               "
-              IDENT@2759..2765 "String"
-              COLON@2765..2766 ":"
-              COLON@2766..2767 ":"
-              L_ANGLE@2767..2768 "<"
-              R_ANGLE@2768..2769 ">"
-              COLON@2769..2770 ":"
-              COLON@2770..2771 ":"
-              IDENT@2771..2775 "from"
-              COLON@2775..2776 ":"
-              COLON@2776..2777 ":"
-              L_ANGLE@2777..2778 "<"
-              R_ANGLE@2778..2779 ">"
-              TOKEN_TREE@2779..2786
-                L_PAREN@2779..2780 "("
-                STRING@2780..2785 "\"><>\""
-                R_PAREN@2785..2786 ")"
-              DOT@2786..2787 "."
-              IDENT@2787..2792 "chars"
-              COLON@2792..2793 ":"
-              COLON@2793..2794 ":"
-              L_ANGLE@2794..2795 "<"
-              R_ANGLE@2795..2796 ">"
-              TOKEN_TREE@2796..2798
-                L_PAREN@2796..2797 "("
-                R_PAREN@2797..2798 ")"
-              DOT@2798..2799 "."
-              IDENT@2799..2802 "rev"
-              COLON@2802..2803 ":"
-              COLON@2803..2804 ":"
-              L_ANGLE@2804..2805 "<"
-              R_ANGLE@2805..2806 ">"
-              TOKEN_TREE@2806..2808
-                L_PAREN@2806..2807 "("
-                R_PAREN@2807..2808 ")"
-              DOT@2808..2809 "."
-              IDENT@2809..2816 "collect"
-              COLON@2816..2817 ":"
-              COLON@2817..2818 ":"
-              L_ANGLE@2818..2819 "<"
-              IDENT@2819..2825 "String"
-              R_ANGLE@2825..2826 ">"
-              TOKEN_TREE@2826..2828
-                L_PAREN@2826..2827 "("
-                R_PAREN@2827..2828 ")"
-              R_PAREN@2828..2829 ")"
-          SEMICOLON@2829..2830 ";"
-        WHITESPACE@2830..2831 "\n"
-        R_CURLY@2831..2832 "}"
-  WHITESPACE@2832..2834 "\n\n"
-  FN@2834..2906
-    FN_KW@2834..2836 "fn"
-    WHITESPACE@2836..2837 " "
-    NAME@2837..2842
-      IDENT@2837..2842 "union"
-    PARAM_LIST@2842..2844
-      L_PAREN@2842..2843 "("
-      R_PAREN@2843..2844 ")"
-    WHITESPACE@2844..2845 " "
-    BLOCK_EXPR@2845..2906
-      STMT_LIST@2845..2906
-        L_CURLY@2845..2846 "{"
-        WHITESPACE@2846..2851 "\n    "
-        UNION@2851..2904
-          UNION_KW@2851..2856 "union"
-          WHITESPACE@2856..2857 " "
-          NAME@2857..2862
-            IDENT@2857..2862 "union"
-          GENERIC_PARAM_LIST@2862..2870
-            L_ANGLE@2862..2863 "<"
-            LIFETIME_PARAM@2863..2869
-              LIFETIME@2863..2869
-                LIFETIME_IDENT@2863..2869 "'union"
-            R_ANGLE@2869..2870 ">"
-          WHITESPACE@2870..2871 " "
-          RECORD_FIELD_LIST@2871..2904
-            L_CURLY@2871..2872 "{"
-            WHITESPACE@2872..2873 " "
-            RECORD_FIELD@2873..2901
-              NAME@2873..2878
-                IDENT@2873..2878 "union"
-              COLON@2878..2879 ":"
-              WHITESPACE@2879..2880 " "
-              REF_TYPE@2880..2901
-                AMP@2880..2881 "&"
-                LIFETIME@2881..2887
-                  LIFETIME_IDENT@2881..2887 "'union"
-                WHITESPACE@2887..2888 " "
-                PATH_TYPE@2888..2901
-                  PATH@2888..2901
-                    PATH_SEGMENT@2888..2901
-                      NAME_REF@2888..2893
-                        IDENT@2888..2893 "union"
-                      GENERIC_ARG_LIST@2893..2901
-                        L_ANGLE@2893..2894 "<"
-                        LIFETIME_ARG@2894..2900
-                          LIFETIME@2894..2900
-                            LIFETIME_IDENT@2894..2900 "'union"
-                        R_ANGLE@2900..2901 ">"
-            COMMA@2901..2902 ","
-            WHITESPACE@2902..2903 " "
-            R_CURLY@2903..2904 "}"
-        WHITESPACE@2904..2905 "\n"
-        R_CURLY@2905..2906 "}"
-  WHITESPACE@2906..2908 "\n\n"
-  FN@2908..3042
-    FN_KW@2908..2910 "fn"
-    WHITESPACE@2910..2911 " "
-    NAME@2911..2929
-      IDENT@2911..2929 "special_characters"
-    PARAM_LIST@2929..2931
-      L_PAREN@2929..2930 "("
-      R_PAREN@2930..2931 ")"
-    WHITESPACE@2931..2932 " "
-    BLOCK_EXPR@2932..3042
-      STMT_LIST@2932..3042
-        L_CURLY@2932..2933 "{"
-        WHITESPACE@2933..2938 "\n    "
-        LET_STMT@2938..3021
-          LET_KW@2938..2941 "let"
-          WHITESPACE@2941..2942 " "
-          IDENT_PAT@2942..2945
-            NAME@2942..2945
-              IDENT@2942..2945 "val"
-          WHITESPACE@2945..2946 " "
-          EQ@2946..2947 "="
-          WHITESPACE@2947..2948 " "
-          PREFIX_EXPR@2948..3013
-            BANG@2948..2949 "!"
-            PAREN_EXPR@2949..3013
-              L_PAREN@2949..2950 "("
-              BIN_EXPR@2950..3012
-                CALL_EXPR@2950..2995
-                  PAREN_EXPR@2950..2971
-                    L_PAREN@2950..2951 "("
-                    CLOSURE_EXPR@2951..2970
-                      PARAM_LIST@2951..2968
-                        PIPE@2951..2952 "|"
-                        PARAM@2952..2962
-                          TUPLE_PAT@2952..2956
-                            L_PAREN@2952..2953 "("
-                            REST_PAT@2953..2955
-                              DOT2@2953..2955 ".."
-                            R_PAREN@2955..2956 ")"
-                          COLON@2956..2957 ":"
-                          TUPLE_TYPE@2957..2962
-                            L_PAREN@2957..2958 "("
-                            INFER_TYPE@2958..2959
-                              UNDERSCORE@2958..2959 "_"
-                            COMMA@2959..2960 ","
-                            INFER_TYPE@2960..2961
-                              UNDERSCORE@2960..2961 "_"
-                            R_PAREN@2961..2962 ")"
-                        COMMA@2962..2963 ","
-                        PARAM@2963..2967
-                          IDENT_PAT@2963..2967
-                            NAME@2963..2965
-                              IDENT@2963..2965 "__"
-                            AT@2965..2966 "@"
-                            WILDCARD_PAT@2966..2967
-                              UNDERSCORE@2966..2967 "_"
-                        PIPE@2967..2968 "|"
-                      PATH_EXPR@2968..2970
-                        PATH@2968..2970
-                          PATH_SEGMENT@2968..2970
-                            NAME_REF@2968..2970
-                              IDENT@2968..2970 "__"
-                    R_PAREN@2970..2971 ")"
-                  ARG_LIST@2971..2995
-                    L_PAREN@2971..2972 "("
-                    TUPLE_EXPR@2972..2987
-                      L_PAREN@2972..2973 "("
-                      REF_EXPR@2973..2979
-                        AMP@2973..2974 "&"
-                        PREFIX_EXPR@2974..2979
-                          STAR@2974..2975 "*"
-                          LITERAL@2975..2979
-                            STRING@2975..2979 "\"\\\\\""
-                      COMMA@2979..2980 ","
-                      LITERAL@2980..2986
-                        CHAR@2980..2986 "'🤔'"
-                      R_PAREN@2986..2987 ")"
-                    COMMENT@2987..2991 "/**/"
-                    COMMA@2991..2992 ","
-                    BLOCK_EXPR@2992..2994
-                      STMT_LIST@2992..2994
-                        L_CURLY@2992..2993 "{"
-                        R_CURLY@2993..2994 "}"
-                    R_PAREN@2994..2995 ")"
-                EQ2@2995..2997 "=="
-                BLOCK_EXPR@2997..3012
-                  STMT_LIST@2997..3012
-                    L_CURLY@2997..2998 "{"
-                    EXPR_STMT@2998..3011
-                      REF_EXPR@2998..3010
-                        AMP@2998..2999 "&"
-                        INDEX_EXPR@2999..3010
-                          ARRAY_EXPR@2999..3006
-                            L_BRACK@2999..3000 "["
-                            RANGE_EXPR@3000..3005
-                              DOT2EQ@3000..3003 "..="
-                              RANGE_EXPR@3003..3005
-                                DOT2@3003..3005 ".."
-                            R_BRACK@3005..3006 "]"
-                          L_BRACK@3006..3007 "["
-                          RANGE_EXPR@3007..3009
-                            DOT2@3007..3009 ".."
-                          R_BRACK@3009..3010 "]"
-                      SEMICOLON@3010..3011 ";"
-                    R_CURLY@3011..3012 "}"
-              R_PAREN@3012..3013 ")"
-          COMMENT@3013..3015 "//"
-          WHITESPACE@3015..3020 "\n    "
-          SEMICOLON@3020..3021 ";"
-        WHITESPACE@3021..3026 "\n    "
-        EXPR_STMT@3026..3040
-          MACRO_CALL@3026..3039
-            PATH@3026..3032
-              PATH_SEGMENT@3026..3032
-                NAME_REF@3026..3032
-                  IDENT@3026..3032 "assert"
-            BANG@3032..3033 "!"
-            TOKEN_TREE@3033..3039
-              L_PAREN@3033..3034 "("
-              BANG@3034..3035 "!"
-              IDENT@3035..3038 "val"
-              R_PAREN@3038..3039 ")"
-          SEMICOLON@3039..3040 ";"
-        WHITESPACE@3040..3041 "\n"
-        R_CURLY@3041..3042 "}"
-  WHITESPACE@3042..3044 "\n\n"
-  FN@3044..3514
-    FN_KW@3044..3046 "fn"
-    WHITESPACE@3046..3047 " "
-    NAME@3047..3057
-      IDENT@3047..3057 "punch_card"
-    PARAM_LIST@3057..3059
-      L_PAREN@3057..3058 "("
-      R_PAREN@3058..3059 ")"
-    WHITESPACE@3059..3060 " "
-    RET_TYPE@3060..3083
-      THIN_ARROW@3060..3062 "->"
-      WHITESPACE@3062..3063 " "
-      IMPL_TRAIT_TYPE@3063..3083
-        IMPL_KW@3063..3067 "impl"
-        WHITESPACE@3067..3068 " "
-        TYPE_BOUND_LIST@3068..3083
-          TYPE_BOUND@3068..3083
-            PATH_TYPE@3068..3083
-              PATH@3068..3083
-                PATH@3068..3076
-                  PATH@3068..3071
-                    PATH_SEGMENT@3068..3071
-                      NAME_REF@3068..3071
-                        IDENT@3068..3071 "std"
-                  COLON2@3071..3073 "::"
-                  PATH_SEGMENT@3073..3076
-                    NAME_REF@3073..3076
-                      IDENT@3073..3076 "fmt"
-                COLON2@3076..3078 "::"
-                PATH_SEGMENT@3078..3083
-                  NAME_REF@3078..3083
-                    IDENT@3078..3083 "Debug"
-    WHITESPACE@3083..3084 " "
-    BLOCK_EXPR@3084..3514
-      STMT_LIST@3084..3514
-        L_CURLY@3084..3085 "{"
-        WHITESPACE@3085..3090 "\n    "
-        RANGE_EXPR@3090..3512
-          DOT2EQ@3090..3093 "..="
-          RANGE_EXPR@3093..3512
-            DOT2EQ@3093..3096 "..="
-            RANGE_EXPR@3096..3512
-              DOT2@3096..3098 ".."
-              WHITESPACE@3098..3099 " "
-              RANGE_EXPR@3099..3512
-                DOT2@3099..3101 ".."
-                WHITESPACE@3101..3105 "    "
-                RANGE_EXPR@3105..3512
-                  DOT2@3105..3107 ".."
-                  WHITESPACE@3107..3108 " "
-                  RANGE_EXPR@3108..3512
-                    DOT2@3108..3110 ".."
-                    WHITESPACE@3110..3111 " "
-                    RANGE_EXPR@3111..3512
-                      DOT2@3111..3113 ".."
-                      WHITESPACE@3113..3114 " "
-                      RANGE_EXPR@3114..3512
-                        DOT2@3114..3116 ".."
-                        WHITESPACE@3116..3120 "    "
-                        RANGE_EXPR@3120..3512
-                          DOT2@3120..3122 ".."
-                          WHITESPACE@3122..3123 " "
-                          RANGE_EXPR@3123..3512
-                            DOT2@3123..3125 ".."
-                            WHITESPACE@3125..3126 " "
-                            RANGE_EXPR@3126..3512
-                              DOT2@3126..3128 ".."
-                              WHITESPACE@3128..3129 " "
-                              RANGE_EXPR@3129..3512
-                                DOT2@3129..3131 ".."
-                                WHITESPACE@3131..3135 "    "
-                                RANGE_EXPR@3135..3512
-                                  DOT2@3135..3137 ".."
-                                  WHITESPACE@3137..3138 " "
-                                  RANGE_EXPR@3138..3512
-                                    DOT2EQ@3138..3141 "..="
-                                    RANGE_EXPR@3141..3512
-                                      DOT2@3141..3143 ".."
-                                      WHITESPACE@3143..3144 " "
-                                      RANGE_EXPR@3144..3512
-                                        DOT2@3144..3146 ".."
-                                        WHITESPACE@3146..3151 "\n    "
-                                        RANGE_EXPR@3151..3512
-                                          DOT2EQ@3151..3154 "..="
-                                          RANGE_EXPR@3154..3512
-                                            DOT2@3154..3156 ".."
-                                            WHITESPACE@3156..3157 " "
-                                            RANGE_EXPR@3157..3512
-                                              DOT2EQ@3157..3160 "..="
-                                              RANGE_EXPR@3160..3512
-                                                DOT2@3160..3162 ".."
-                                                WHITESPACE@3162..3166 "    "
-                                                RANGE_EXPR@3166..3512
-                                                  DOT2@3166..3168 ".."
-                                                  WHITESPACE@3168..3169 " "
-                                                  RANGE_EXPR@3169..3512
-                                                    DOT2@3169..3171 ".."
-                                                    WHITESPACE@3171..3172 " "
-                                                    RANGE_EXPR@3172..3512
-                                                      DOT2@3172..3174 ".."
-                                                      WHITESPACE@3174..3175 " "
-                                                      RANGE_EXPR@3175..3512
-                                                        DOT2@3175..3177 ".."
-                                                        WHITESPACE@3177..3181 "    "
-                                                        RANGE_EXPR@3181..3512
-                                                          DOT2@3181..3183 ".."
-                                                          WHITESPACE@3183..3184 " "
-                                                          RANGE_EXPR@3184..3512
-                                                            DOT2@3184..3186 ".."
-                                                            WHITESPACE@3186..3187 " "
-                                                            RANGE_EXPR@3187..3512
-                                                              DOT2@3187..3189 ".."
-                                                              WHITESPACE@3189..3190 " "
-                                                              RANGE_EXPR@3190..3512
-                                                                DOT2@3190..3192 ".."
-                                                                WHITESPACE@3192..3196 "    "
-                                                                RANGE_EXPR@3196..3512
-                                                                  DOT2EQ@3196..3199 "..="
-                                                                  RANGE_EXPR@3199..3512
-                                                                    DOT2EQ@3199..3202 "..="
-                                                                    RANGE_EXPR@3202..3512
-                                                                      DOT2EQ@3202..3205 "..="
-                                                                      RANGE_EXPR@3205..3512
-                                                                        DOT2@3205..3207 ".."
-                                                                        WHITESPACE@3207..3212 "\n    "
-                                                                        RANGE_EXPR@3212..3512
-                                                                          DOT2EQ@3212..3215 "..="
-                                                                          RANGE_EXPR@3215..3512
-                                                                            DOT2@3215..3217 ".."
-                                                                            WHITESPACE@3217..3218 " "
-                                                                            RANGE_EXPR@3218..3512
-                                                                              DOT2EQ@3218..3221 "..="
-                                                                              RANGE_EXPR@3221..3512
-                                                                                DOT2@3221..3223 ".."
-                                                                                WHITESPACE@3223..3227 "    "
-                                                                                RANGE_EXPR@3227..3512
-                                                                                  DOT2EQ@3227..3230 "..="
-                                                                                  RANGE_EXPR@3230..3512
-                                                                                    DOT2@3230..3232 ".."
-                                                                                    WHITESPACE@3232..3233 " "
-                                                                                    RANGE_EXPR@3233..3512
-                                                                                      DOT2EQ@3233..3236 "..="
-                                                                                      RANGE_EXPR@3236..3512
-                                                                                        DOT2@3236..3238 ".."
-                                                                                        WHITESPACE@3238..3242 "    "
-                                                                                        RANGE_EXPR@3242..3512
-                                                                                          DOT2@3242..3244 ".."
-                                                                                          WHITESPACE@3244..3245 " "
-                                                                                          RANGE_EXPR@3245..3512
-                                                                                            DOT2EQ@3245..3248 "..="
-                                                                                            RANGE_EXPR@3248..3512
-                                                                                              DOT2EQ@3248..3251 "..="
-                                                                                              RANGE_EXPR@3251..3512
-                                                                                                DOT2@3251..3253 ".."
-                                                                                                WHITESPACE@3253..3257 "    "
-                                                                                                RANGE_EXPR@3257..3512
-                                                                                                  DOT2@3257..3259 ".."
-                                                                                                  WHITESPACE@3259..3260 " "
-                                                                                                  RANGE_EXPR@3260..3512
-                                                                                                    DOT2EQ@3260..3263 "..="
-                                                                                                    RANGE_EXPR@3263..3512
-                                                                                                      DOT2@3263..3265 ".."
-                                                                                                      WHITESPACE@3265..3266 " "
-                                                                                                      RANGE_EXPR@3266..3512
-                                                                                                        DOT2@3266..3268 ".."
-                                                                                                        WHITESPACE@3268..3273 "\n    "
-                                                                                                        RANGE_EXPR@3273..3512
-                                                                                                          DOT2EQ@3273..3276 "..="
-                                                                                                          RANGE_EXPR@3276..3512
-                                                                                                            DOT2EQ@3276..3279 "..="
-                                                                                                            RANGE_EXPR@3279..3512
-                                                                                                              DOT2@3279..3281 ".."
-                                                                                                              WHITESPACE@3281..3282 " "
-                                                                                                              RANGE_EXPR@3282..3512
-                                                                                                                DOT2@3282..3284 ".."
-                                                                                                                WHITESPACE@3284..3288 "    "
-                                                                                                                RANGE_EXPR@3288..3512
-                                                                                                                  DOT2EQ@3288..3291 "..="
-                                                                                                                  RANGE_EXPR@3291..3512
-                                                                                                                    DOT2@3291..3293 ".."
-                                                                                                                    WHITESPACE@3293..3294 " "
-                                                                                                                    RANGE_EXPR@3294..3512
-                                                                                                                      DOT2EQ@3294..3297 "..="
-                                                                                                                      RANGE_EXPR@3297..3512
-                                                                                                                        DOT2@3297..3299 ".."
-                                                                                                                        WHITESPACE@3299..3303 "    "
-                                                                                                                        RANGE_EXPR@3303..3512
-                                                                                                                          DOT2EQ@3303..3306 "..="
-                                                                                                                          RANGE_EXPR@3306..3512
-                                                                                                                            DOT2@3306..3308 ".."
-                                                                                                                            WHITESPACE@3308..3309 " "
-                                                                                                                            RANGE_EXPR@3309..3512
-                                                                                                                              DOT2@3309..3311 ".."
-                                                                                                                              WHITESPACE@3311..3312 " "
-                                                                                                                              RANGE_EXPR@3312..3512
-                                                                                                                                DOT2@3312..3314 ".."
-                                                                                                                                WHITESPACE@3314..3318 "    "
-                                                                                                                                RANGE_EXPR@3318..3512
-                                                                                                                                  DOT2@3318..3320 ".."
-                                                                                                                                  WHITESPACE@3320..3321 " "
-                                                                                                                                  RANGE_EXPR@3321..3512
-                                                                                                                                    DOT2EQ@3321..3324 "..="
-                                                                                                                                    RANGE_EXPR@3324..3512
-                                                                                                                                      DOT2@3324..3326 ".."
-                                                                                                                                      WHITESPACE@3326..3327 " "
-                                                                                                                                      RANGE_EXPR@3327..3512
-                                                                                                                                        DOT2@3327..3329 ".."
-                                                                                                                                        WHITESPACE@3329..3334 "\n    "
-                                                                                                                                        RANGE_EXPR@3334..3512
-                                                                                                                                          DOT2EQ@3334..3337 "..="
-                                                                                                                                          RANGE_EXPR@3337..3512
-                                                                                                                                            DOT2@3337..3339 ".."
-                                                                                                                                            WHITESPACE@3339..3340 " "
-                                                                                                                                            RANGE_EXPR@3340..3512
-                                                                                                                                              DOT2EQ@3340..3343 "..="
-                                                                                                                                              RANGE_EXPR@3343..3512
-                                                                                                                                                DOT2@3343..3345 ".."
-                                                                                                                                                WHITESPACE@3345..3349 "    "
-                                                                                                                                                RANGE_EXPR@3349..3512
-                                                                                                                                                  DOT2EQ@3349..3352 "..="
-                                                                                                                                                  RANGE_EXPR@3352..3512
-                                                                                                                                                    DOT2@3352..3354 ".."
-                                                                                                                                                    WHITESPACE@3354..3355 " "
-                                                                                                                                                    RANGE_EXPR@3355..3512
-                                                                                                                                                      DOT2EQ@3355..3358 "..="
-                                                                                                                                                      RANGE_EXPR@3358..3512
-                                                                                                                                                        DOT2@3358..3360 ".."
-                                                                                                                                                        WHITESPACE@3360..3364 "    "
-                                                                                                                                                        RANGE_EXPR@3364..3512
-                                                                                                                                                          DOT2@3364..3366 ".."
-                                                                                                                                                          WHITESPACE@3366..3367 " "
-                                                                                                                                                          RANGE_EXPR@3367..3512
-                                                                                                                                                            DOT2EQ@3367..3370 "..="
-                                                                                                                                                            RANGE_EXPR@3370..3512
-                                                                                                                                                              DOT2@3370..3372 ".."
-                                                                                                                                                              WHITESPACE@3372..3373 " "
-                                                                                                                                                              RANGE_EXPR@3373..3512
-                                                                                                                                                                DOT2@3373..3375 ".."
-                                                                                                                                                                WHITESPACE@3375..3379 "    "
-                                                                                                                                                                RANGE_EXPR@3379..3512
-                                                                                                                                                                  DOT2@3379..3381 ".."
-                                                                                                                                                                  WHITESPACE@3381..3382 " "
-                                                                                                                                                                  RANGE_EXPR@3382..3512
-                                                                                                                                                                    DOT2EQ@3382..3385 "..="
-                                                                                                                                                                    RANGE_EXPR@3385..3512
-                                                                                                                                                                      DOT2@3385..3387 ".."
-                                                                                                                                                                      WHITESPACE@3387..3388 " "
-                                                                                                                                                                      RANGE_EXPR@3388..3512
-                                                                                                                                                                        DOT2@3388..3390 ".."
-                                                                                                                                                                        WHITESPACE@3390..3395 "\n    "
-                                                                                                                                                                        RANGE_EXPR@3395..3512
-                                                                                                                                                                          DOT2EQ@3395..3398 "..="
-                                                                                                                                                                          RANGE_EXPR@3398..3512
-                                                                                                                                                                            DOT2@3398..3400 ".."
-                                                                                                                                                                            WHITESPACE@3400..3401 " "
-                                                                                                                                                                            RANGE_EXPR@3401..3512
-                                                                                                                                                                              DOT2EQ@3401..3404 "..="
-                                                                                                                                                                              RANGE_EXPR@3404..3512
-                                                                                                                                                                                DOT2@3404..3406 ".."
-                                                                                                                                                                                WHITESPACE@3406..3410 "    "
-                                                                                                                                                                                RANGE_EXPR@3410..3512
-                                                                                                                                                                                  DOT2EQ@3410..3413 "..="
-                                                                                                                                                                                  RANGE_EXPR@3413..3512
-                                                                                                                                                                                    DOT2@3413..3415 ".."
-                                                                                                                                                                                    WHITESPACE@3415..3416 " "
-                                                                                                                                                                                    RANGE_EXPR@3416..3512
-                                                                                                                                                                                      DOT2EQ@3416..3419 "..="
-                                                                                                                                                                                      RANGE_EXPR@3419..3512
-                                                                                                                                                                                        DOT2@3419..3421 ".."
-                                                                                                                                                                                        WHITESPACE@3421..3425 "    "
-                                                                                                                                                                                        RANGE_EXPR@3425..3512
-                                                                                                                                                                                          DOT2@3425..3427 ".."
-                                                                                                                                                                                          WHITESPACE@3427..3428 " "
-                                                                                                                                                                                          RANGE_EXPR@3428..3512
-                                                                                                                                                                                            DOT2@3428..3430 ".."
-                                                                                                                                                                                            WHITESPACE@3430..3431 " "
-                                                                                                                                                                                            RANGE_EXPR@3431..3512
-                                                                                                                                                                                              DOT2EQ@3431..3434 "..="
-                                                                                                                                                                                              RANGE_EXPR@3434..3512
-                                                                                                                                                                                                DOT2@3434..3436 ".."
-                                                                                                                                                                                                WHITESPACE@3436..3440 "    "
-                                                                                                                                                                                                RANGE_EXPR@3440..3512
-                                                                                                                                                                                                  DOT2@3440..3442 ".."
-                                                                                                                                                                                                  WHITESPACE@3442..3443 " "
-                                                                                                                                                                                                  RANGE_EXPR@3443..3512
-                                                                                                                                                                                                    DOT2EQ@3443..3446 "..="
-                                                                                                                                                                                                    RANGE_EXPR@3446..3512
-                                                                                                                                                                                                      DOT2@3446..3448 ".."
-                                                                                                                                                                                                      WHITESPACE@3448..3449 " "
-                                                                                                                                                                                                      RANGE_EXPR@3449..3512
-                                                                                                                                                                                                        DOT2@3449..3451 ".."
-                                                                                                                                                                                                        WHITESPACE@3451..3456 "\n    "
-                                                                                                                                                                                                        RANGE_EXPR@3456..3512
-                                                                                                                                                                                                          DOT2EQ@3456..3459 "..="
-                                                                                                                                                                                                          RANGE_EXPR@3459..3512
-                                                                                                                                                                                                            DOT2@3459..3461 ".."
-                                                                                                                                                                                                            WHITESPACE@3461..3462 " "
-                                                                                                                                                                                                            RANGE_EXPR@3462..3512
-                                                                                                                                                                                                              DOT2EQ@3462..3465 "..="
-                                                                                                                                                                                                              RANGE_EXPR@3465..3512
-                                                                                                                                                                                                                DOT2@3465..3467 ".."
-                                                                                                                                                                                                                WHITESPACE@3467..3471 "    "
-                                                                                                                                                                                                                RANGE_EXPR@3471..3512
-                                                                                                                                                                                                                  DOT2@3471..3473 ".."
-                                                                                                                                                                                                                  WHITESPACE@3473..3474 " "
-                                                                                                                                                                                                                  RANGE_EXPR@3474..3512
-                                                                                                                                                                                                                    DOT2EQ@3474..3477 "..="
-                                                                                                                                                                                                                    RANGE_EXPR@3477..3512
-                                                                                                                                                                                                                      DOT2EQ@3477..3480 "..="
-                                                                                                                                                                                                                      RANGE_EXPR@3480..3512
-                                                                                                                                                                                                                        DOT2@3480..3482 ".."
-                                                                                                                                                                                                                        WHITESPACE@3482..3486 "    "
-                                                                                                                                                                                                                        RANGE_EXPR@3486..3512
-                                                                                                                                                                                                                          DOT2EQ@3486..3489 "..="
-                                                                                                                                                                                                                          RANGE_EXPR@3489..3512
-                                                                                                                                                                                                                            DOT2EQ@3489..3492 "..="
-                                                                                                                                                                                                                            RANGE_EXPR@3492..3512
-                                                                                                                                                                                                                              DOT2@3492..3494 ".."
-                                                                                                                                                                                                                              WHITESPACE@3494..3495 " "
-                                                                                                                                                                                                                              RANGE_EXPR@3495..3512
-                                                                                                                                                                                                                                DOT2@3495..3497 ".."
-                                                                                                                                                                                                                                WHITESPACE@3497..3501 "    "
-                                                                                                                                                                                                                                RANGE_EXPR@3501..3512
-                                                                                                                                                                                                                                  DOT2@3501..3503 ".."
-                                                                                                                                                                                                                                  WHITESPACE@3503..3504 " "
-                                                                                                                                                                                                                                  RANGE_EXPR@3504..3512
-                                                                                                                                                                                                                                    DOT2EQ@3504..3507 "..="
-                                                                                                                                                                                                                                    RANGE_EXPR@3507..3512
-                                                                                                                                                                                                                                      DOT2@3507..3509 ".."
-                                                                                                                                                                                                                                      WHITESPACE@3509..3510 " "
-                                                                                                                                                                                                                                      RANGE_EXPR@3510..3512
-                                                                                                                                                                                                                                        DOT2@3510..3512 ".."
-        WHITESPACE@3512..3513 "\n"
-        R_CURLY@3513..3514 "}"
-  WHITESPACE@3514..3516 "\n\n"
-  FN@3516..3552
-    FN_KW@3516..3518 "fn"
-    WHITESPACE@3518..3519 " "
-    NAME@3519..3525
-      IDENT@3519..3525 "ktulhu"
-    PARAM_LIST@3525..3527
-      L_PAREN@3525..3526 "("
-      R_PAREN@3526..3527 ")"
-    WHITESPACE@3527..3528 " "
-    BLOCK_EXPR@3528..3552
-      STMT_LIST@3528..3552
-        L_CURLY@3528..3529 "{"
-        WHITESPACE@3529..3534 "\n    "
-        SEMICOLON@3534..3535 ";"
-        SEMICOLON@3535..3536 ";"
-        SEMICOLON@3536..3537 ";"
-        EXPR_STMT@3537..3540
-          TUPLE_EXPR@3537..3539
-            L_PAREN@3537..3538 "("
-            R_PAREN@3538..3539 ")"
-          SEMICOLON@3539..3540 ";"
-        SEMICOLON@3540..3541 ";"
-        SEMICOLON@3541..3542 ";"
-        SEMICOLON@3542..3543 ";"
-        SEMICOLON@3543..3544 ";"
-        SEMICOLON@3544..3545 ";"
-        SEMICOLON@3545..3546 ";"
-        SEMICOLON@3546..3547 ";"
-        SEMICOLON@3547..3548 ";"
-        TUPLE_EXPR@3548..3550
-          L_PAREN@3548..3549 "("
-          R_PAREN@3549..3550 ")"
-        WHITESPACE@3550..3551 "\n"
-        R_CURLY@3551..3552 "}"
-  WHITESPACE@3552..3554 "\n\n"
-  FN@3554..3812
-    VISIBILITY@3554..3557
-      PUB_KW@3554..3557 "pub"
-    WHITESPACE@3557..3558 " "
-    FN_KW@3558..3560 "fn"
-    WHITESPACE@3560..3561 " "
-    NAME@3561..3565
-      IDENT@3561..3565 "main"
-    PARAM_LIST@3565..3567
-      L_PAREN@3565..3566 "("
-      R_PAREN@3566..3567 ")"
-    WHITESPACE@3567..3568 " "
-    BLOCK_EXPR@3568..3812
-      STMT_LIST@3568..3812
-        L_CURLY@3568..3569 "{"
-        WHITESPACE@3569..3574 "\n    "
-        EXPR_STMT@3574..3584
-          CALL_EXPR@3574..3583
-            PATH_EXPR@3574..3581
-              PATH@3574..3581
-                PATH_SEGMENT@3574..3581
-                  NAME_REF@3574..3581
-                    IDENT@3574..3581 "strange"
-            ARG_LIST@3581..3583
-              L_PAREN@3581..3582 "("
-              R_PAREN@3582..3583 ")"
-          SEMICOLON@3583..3584 ";"
-        WHITESPACE@3584..3589 "\n    "
-        EXPR_STMT@3589..3597
-          CALL_EXPR@3589..3596
-            PATH_EXPR@3589..3594
-              PATH@3589..3594
-                PATH_SEGMENT@3589..3594
-                  NAME_REF@3589..3594
-                    IDENT@3589..3594 "funny"
-            ARG_LIST@3594..3596
-              L_PAREN@3594..3595 "("
-              R_PAREN@3595..3596 ")"
-          SEMICOLON@3596..3597 ";"
-        WHITESPACE@3597..3602 "\n    "
-        EXPR_STMT@3602..3609
-          CALL_EXPR@3602..3608
-            PATH_EXPR@3602..3606
-              PATH@3602..3606
-                PATH_SEGMENT@3602..3606
-                  NAME_REF@3602..3606
-                    IDENT@3602..3606 "what"
-            ARG_LIST@3606..3608
-              L_PAREN@3606..3607 "("
-              R_PAREN@3607..3608 ")"
-          SEMICOLON@3608..3609 ";"
-        WHITESPACE@3609..3614 "\n    "
-        EXPR_STMT@3614..3628
-          CALL_EXPR@3614..3627
-            PATH_EXPR@3614..3625
-              PATH@3614..3625
-                PATH_SEGMENT@3614..3625
-                  NAME_REF@3614..3625
-                    IDENT@3614..3625 "zombiejesus"
-            ARG_LIST@3625..3627
-              L_PAREN@3625..3626 "("
-              R_PAREN@3626..3627 ")"
-          SEMICOLON@3627..3628 ";"
-        WHITESPACE@3628..3633 "\n    "
-        EXPR_STMT@3633..3643
-          CALL_EXPR@3633..3642
-            PATH_EXPR@3633..3640
-              PATH@3633..3640
-                PATH_SEGMENT@3633..3640
-                  NAME_REF@3633..3640
-                    IDENT@3633..3640 "notsure"
-            ARG_LIST@3640..3642
-              L_PAREN@3640..3641 "("
-              R_PAREN@3641..3642 ")"
-          SEMICOLON@3642..3643 ";"
-        WHITESPACE@3643..3648 "\n    "
-        EXPR_STMT@3648..3664
-          CALL_EXPR@3648..3663
-            PATH_EXPR@3648..3661
-              PATH@3648..3661
-                PATH_SEGMENT@3648..3661
-                  NAME_REF@3648..3661
-                    IDENT@3648..3661 "canttouchthis"
-            ARG_LIST@3661..3663
-              L_PAREN@3661..3662 "("
-              R_PAREN@3662..3663 ")"
-          SEMICOLON@3663..3664 ";"
-        WHITESPACE@3664..3669 "\n    "
-        EXPR_STMT@3669..3681
-          CALL_EXPR@3669..3680
-            PATH_EXPR@3669..3678
-              PATH@3669..3678
-                PATH_SEGMENT@3669..3678
-                  NAME_REF@3669..3678
-                    IDENT@3669..3678 "angrydome"
-            ARG_LIST@3678..3680
-              L_PAREN@3678..3679 "("
-              R_PAREN@3679..3680 ")"
-          SEMICOLON@3680..3681 ";"
-        WHITESPACE@3681..3686 "\n    "
-        EXPR_STMT@3686..3701
-          CALL_EXPR@3686..3700
-            PATH_EXPR@3686..3698
-              PATH@3686..3698
-                PATH_SEGMENT@3686..3698
-                  NAME_REF@3686..3698
-                    IDENT@3686..3698 "evil_lincoln"
-            ARG_LIST@3698..3700
-              L_PAREN@3698..3699 "("
-              R_PAREN@3699..3700 ")"
-          SEMICOLON@3700..3701 ";"
-        WHITESPACE@3701..3706 "\n    "
-        EXPR_STMT@3706..3713
-          CALL_EXPR@3706..3712
-            PATH_EXPR@3706..3710
-              PATH@3706..3710
-                PATH_SEGMENT@3706..3710
-                  NAME_REF@3706..3710
-                    IDENT@3706..3710 "dots"
-            ARG_LIST@3710..3712
-              L_PAREN@3710..3711 "("
-              R_PAREN@3711..3712 ")"
-          SEMICOLON@3712..3713 ";"
-        WHITESPACE@3713..3718 "\n    "
-        EXPR_STMT@3718..3726
-          CALL_EXPR@3718..3725
-            PATH_EXPR@3718..3720
-              PATH@3718..3720
-                PATH_SEGMENT@3718..3720
-                  NAME_REF@3718..3720
-                    IDENT@3718..3720 "u8"
-            ARG_LIST@3720..3725
-              L_PAREN@3720..3721 "("
-              LITERAL@3721..3724
-                INT_NUMBER@3721..3724 "8u8"
-              R_PAREN@3724..3725 ")"
-          SEMICOLON@3725..3726 ";"
-        WHITESPACE@3726..3731 "\n    "
-        EXPR_STMT@3731..3739
-          CALL_EXPR@3731..3738
-            PATH_EXPR@3731..3736
-              PATH@3731..3736
-                PATH_SEGMENT@3731..3736
-                  NAME_REF@3731..3736
-                    IDENT@3731..3736 "fishy"
-            ARG_LIST@3736..3738
-              L_PAREN@3736..3737 "("
-              R_PAREN@3737..3738 ")"
-          SEMICOLON@3738..3739 ";"
-        WHITESPACE@3739..3744 "\n    "
-        EXPR_STMT@3744..3752
-          CALL_EXPR@3744..3751
-            PATH_EXPR@3744..3749
-              PATH@3744..3749
-                PATH_SEGMENT@3744..3749
-                  NAME_REF@3744..3749
-                    IDENT@3744..3749 "union"
-            ARG_LIST@3749..3751
-              L_PAREN@3749..3750 "("
-              R_PAREN@3750..3751 ")"
-          SEMICOLON@3751..3752 ";"
-        WHITESPACE@3752..3757 "\n    "
-        EXPR_STMT@3757..3778
-          CALL_EXPR@3757..3777
-            PATH_EXPR@3757..3775
-              PATH@3757..3775
-                PATH_SEGMENT@3757..3775
-                  NAME_REF@3757..3775
-                    IDENT@3757..3775 "special_characters"
-            ARG_LIST@3775..3777
-              L_PAREN@3775..3776 "("
-              R_PAREN@3776..3777 ")"
-          SEMICOLON@3777..3778 ";"
-        WHITESPACE@3778..3783 "\n    "
-        EXPR_STMT@3783..3796
-          CALL_EXPR@3783..3795
-            PATH_EXPR@3783..3793
-              PATH@3783..3793
-                PATH_SEGMENT@3783..3793
-                  NAME_REF@3783..3793
-                    IDENT@3783..3793 "punch_card"
-            ARG_LIST@3793..3795
-              L_PAREN@3793..3794 "("
-              R_PAREN@3794..3795 ")"
-          SEMICOLON@3795..3796 ";"
-        WHITESPACE@3796..3801 "\n    "
-        EXPR_STMT@3801..3810
-          CALL_EXPR@3801..3809
-            PATH_EXPR@3801..3807
-              PATH@3801..3807
-                PATH_SEGMENT@3801..3807
-                  NAME_REF@3801..3807
-                    IDENT@3801..3807 "ktulhu"
-            ARG_LIST@3807..3809
-              L_PAREN@3807..3808 "("
-              R_PAREN@3808..3809 ")"
-          SEMICOLON@3809..3810 ";"
-        WHITESPACE@3810..3811 "\n"
-        R_CURLY@3811..3812 "}"
-  WHITESPACE@3812..3813 "\n"
+SOURCE_FILE
+  COMMENT "//! Adapted from a `rustc` test, which can be found at "
+  WHITESPACE "\n"
+  COMMENT "//! https://github.com/rust-lang/rust/blob/6d34ec18c7d7e574553f6347ecf08e1e1c45c13d/src/test/run-pass/weird-exprs.rs."
+  WHITESPACE "\n"
+  COMMENT "//! "
+  WHITESPACE "\n"
+  COMMENT "//! Reported to rust-analyzer in https://github.com/rust-analyzer/rust-analyzer/issues/290"
+  WHITESPACE "\n\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "allow"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "non_camel_case_types"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "allow"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "dead_code"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "allow"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "unreachable_code"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "allow"
+      TOKEN_TREE
+        L_PAREN "("
+        IDENT "unused_parens"
+        R_PAREN ")"
+    R_BRACK "]"
+  WHITESPACE "\n\n"
+  ATTR
+    POUND "#"
+    BANG "!"
+    L_BRACK "["
+    META
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "recursion_limit"
+      WHITESPACE " "
+      EQ "="
+      WHITESPACE " "
+      LITERAL
+        STRING "\"128\""
+    R_BRACK "]"
+  WHITESPACE "\n\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "std"
+          COLON2 "::"
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "cell"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Cell"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  USE
+    USE_KW "use"
+    WHITESPACE " "
+    USE_TREE
+      PATH
+        PATH
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "std"
+          COLON2 "::"
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "mem"
+        COLON2 "::"
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "swap"
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+  COMMENT "// Just a grab bag of stuff that you wouldn't want to actually write."
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "strange"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "bool"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_x"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "bool"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          RETURN_EXPR
+            RETURN_KW "return"
+            WHITESPACE " "
+            LITERAL
+              TRUE_KW "true"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "funny"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        FN
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "f"
+          PARAM_LIST
+            L_PAREN "("
+            PARAM
+              IDENT_PAT
+                NAME
+                  IDENT "_x"
+              COLON ":"
+              WHITESPACE " "
+              TUPLE_TYPE
+                L_PAREN "("
+                R_PAREN ")"
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "f"
+            ARG_LIST
+              L_PAREN "("
+              RETURN_EXPR
+                RETURN_KW "return"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "what"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        FN
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "the"
+          PARAM_LIST
+            L_PAREN "("
+            PARAM
+              IDENT_PAT
+                NAME
+                  IDENT "x"
+              COLON ":"
+              WHITESPACE " "
+              REF_TYPE
+                AMP "&"
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Cell"
+                      GENERIC_ARG_LIST
+                        L_ANGLE "<"
+                        TYPE_ARG
+                          PATH_TYPE
+                            PATH
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "bool"
+                        R_ANGLE ">"
+            R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                RETURN_EXPR
+                  RETURN_KW "return"
+                  WHITESPACE " "
+                  WHILE_EXPR
+                    WHILE_KW "while"
+                    WHITESPACE " "
+                    PREFIX_EXPR
+                      BANG "!"
+                      METHOD_CALL_EXPR
+                        PATH_EXPR
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "x"
+                        DOT "."
+                        NAME_REF
+                          IDENT "get"
+                        ARG_LIST
+                          L_PAREN "("
+                          R_PAREN ")"
+                    WHITESPACE " "
+                    BLOCK_EXPR
+                      STMT_LIST
+                        L_CURLY "{"
+                        WHITESPACE " "
+                        EXPR_STMT
+                          METHOD_CALL_EXPR
+                            PATH_EXPR
+                              PATH
+                                PATH_SEGMENT
+                                  NAME_REF
+                                    IDENT "x"
+                            DOT "."
+                            NAME_REF
+                              IDENT "set"
+                            ARG_LIST
+                              L_PAREN "("
+                              LITERAL
+                                TRUE_KW "true"
+                              R_PAREN ")"
+                          SEMICOLON ";"
+                        WHITESPACE " "
+                        R_CURLY "}"
+                SEMICOLON ";"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "i"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          REF_EXPR
+            AMP "&"
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Cell"
+                  COLON2 "::"
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "new"
+              ARG_LIST
+                L_PAREN "("
+                LITERAL
+                  FALSE_KW "false"
+                R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "dont"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              CLOSURE_EXPR
+                PARAM_LIST
+                  PIPE "|"
+                  PIPE "|"
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "the"
+                  ARG_LIST
+                    L_PAREN "("
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "i"
+                    R_PAREN ")"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "dont"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MACRO_CALL
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "assert"
+            BANG "!"
+            TOKEN_TREE
+              L_PAREN "("
+              TOKEN_TREE
+                L_PAREN "("
+                IDENT "i"
+                DOT "."
+                IDENT "get"
+                TOKEN_TREE
+                  L_PAREN "("
+                  R_PAREN ")"
+                R_PAREN ")"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "zombiejesus"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LOOP_EXPR
+          LOOP_KW "loop"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                WHILE_EXPR
+                  WHILE_KW "while"
+                  WHITESPACE " "
+                  PAREN_EXPR
+                    L_PAREN "("
+                    RETURN_EXPR
+                      RETURN_KW "return"
+                    R_PAREN ")"
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      WHITESPACE "\n            "
+                      IF_EXPR
+                        IF_KW "if"
+                        WHITESPACE " "
+                        PAREN_EXPR
+                          L_PAREN "("
+                          RETURN_EXPR
+                            RETURN_KW "return"
+                          R_PAREN ")"
+                        WHITESPACE " "
+                        BLOCK_EXPR
+                          STMT_LIST
+                            L_CURLY "{"
+                            WHITESPACE "\n                "
+                            EXPR_STMT
+                              MATCH_EXPR
+                                MATCH_KW "match"
+                                WHITESPACE " "
+                                PAREN_EXPR
+                                  L_PAREN "("
+                                  RETURN_EXPR
+                                    RETURN_KW "return"
+                                  R_PAREN ")"
+                                WHITESPACE " "
+                                MATCH_ARM_LIST
+                                  L_CURLY "{"
+                                  WHITESPACE "\n                    "
+                                  MATCH_ARM
+                                    LITERAL_PAT
+                                      LITERAL
+                                        INT_NUMBER "1"
+                                    WHITESPACE " "
+                                    FAT_ARROW "=>"
+                                    WHITESPACE " "
+                                    BLOCK_EXPR
+                                      STMT_LIST
+                                        L_CURLY "{"
+                                        WHITESPACE "\n                        "
+                                        IF_EXPR
+                                          IF_KW "if"
+                                          WHITESPACE " "
+                                          PAREN_EXPR
+                                            L_PAREN "("
+                                            RETURN_EXPR
+                                              RETURN_KW "return"
+                                            R_PAREN ")"
+                                          WHITESPACE " "
+                                          BLOCK_EXPR
+                                            STMT_LIST
+                                              L_CURLY "{"
+                                              WHITESPACE "\n                            "
+                                              RETURN_EXPR
+                                                RETURN_KW "return"
+                                              WHITESPACE "\n                        "
+                                              R_CURLY "}"
+                                          WHITESPACE " "
+                                          ELSE_KW "else"
+                                          WHITESPACE " "
+                                          BLOCK_EXPR
+                                            STMT_LIST
+                                              L_CURLY "{"
+                                              WHITESPACE "\n                            "
+                                              RETURN_EXPR
+                                                RETURN_KW "return"
+                                              WHITESPACE "\n                        "
+                                              R_CURLY "}"
+                                        WHITESPACE "\n                    "
+                                        R_CURLY "}"
+                                  WHITESPACE "\n                    "
+                                  MATCH_ARM
+                                    WILDCARD_PAT
+                                      UNDERSCORE "_"
+                                    WHITESPACE " "
+                                    FAT_ARROW "=>"
+                                    WHITESPACE " "
+                                    BLOCK_EXPR
+                                      STMT_LIST
+                                        L_CURLY "{"
+                                        WHITESPACE " "
+                                        RETURN_EXPR
+                                          RETURN_KW "return"
+                                        WHITESPACE " "
+                                        R_CURLY "}"
+                                  WHITESPACE "\n                "
+                                  R_CURLY "}"
+                              SEMICOLON ";"
+                            WHITESPACE "\n            "
+                            R_CURLY "}"
+                        WHITESPACE " "
+                        ELSE_KW "else"
+                        WHITESPACE " "
+                        IF_EXPR
+                          IF_KW "if"
+                          WHITESPACE " "
+                          PAREN_EXPR
+                            L_PAREN "("
+                            RETURN_EXPR
+                              RETURN_KW "return"
+                            R_PAREN ")"
+                          WHITESPACE " "
+                          BLOCK_EXPR
+                            STMT_LIST
+                              L_CURLY "{"
+                              WHITESPACE "\n                "
+                              EXPR_STMT
+                                RETURN_EXPR
+                                  RETURN_KW "return"
+                                SEMICOLON ";"
+                              WHITESPACE "\n            "
+                              R_CURLY "}"
+                      WHITESPACE "\n        "
+                      R_CURLY "}"
+              WHITESPACE "\n        "
+              IF_EXPR
+                IF_KW "if"
+                WHITESPACE " "
+                PAREN_EXPR
+                  L_PAREN "("
+                  RETURN_EXPR
+                    RETURN_KW "return"
+                  R_PAREN ")"
+                WHITESPACE " "
+                BLOCK_EXPR
+                  STMT_LIST
+                    L_CURLY "{"
+                    WHITESPACE " "
+                    EXPR_STMT
+                      BREAK_EXPR
+                        BREAK_KW "break"
+                      SEMICOLON ";"
+                    WHITESPACE " "
+                    R_CURLY "}"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "notsure"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "_x"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "isize"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "_y"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BIN_EXPR
+            PAREN_EXPR
+              L_PAREN "("
+              BIN_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "_x"
+                WHITESPACE " "
+                EQ "="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "0"
+              R_PAREN ")"
+            WHITESPACE " "
+            EQ2 "=="
+            WHITESPACE " "
+            PAREN_EXPR
+              L_PAREN "("
+              BIN_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "_x"
+                WHITESPACE " "
+                EQ "="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "0"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "_z"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BIN_EXPR
+            PAREN_EXPR
+              L_PAREN "("
+              BIN_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "_x"
+                WHITESPACE " "
+                EQ "="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "0"
+              R_PAREN ")"
+            WHITESPACE " "
+            L_ANGLE "<"
+            WHITESPACE " "
+            PAREN_EXPR
+              L_PAREN "("
+              BIN_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "_x"
+                WHITESPACE " "
+                EQ "="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "0"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_a"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BIN_EXPR
+            PAREN_EXPR
+              L_PAREN "("
+              BIN_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "_x"
+                WHITESPACE " "
+                PLUSEQ "+="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "0"
+              R_PAREN ")"
+            WHITESPACE " "
+            EQ2 "=="
+            WHITESPACE " "
+            PAREN_EXPR
+              L_PAREN "("
+              BIN_EXPR
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "_x"
+                WHITESPACE " "
+                EQ "="
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "0"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_b"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BIN_EXPR
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "swap"
+              ARG_LIST
+                L_PAREN "("
+                REF_EXPR
+                  AMP "&"
+                  MUT_KW "mut"
+                  WHITESPACE " "
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "_y"
+                COMMA ","
+                WHITESPACE " "
+                REF_EXPR
+                  AMP "&"
+                  MUT_KW "mut"
+                  WHITESPACE " "
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "_z"
+                R_PAREN ")"
+            WHITESPACE " "
+            EQ2 "=="
+            WHITESPACE " "
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "swap"
+              ARG_LIST
+                L_PAREN "("
+                REF_EXPR
+                  AMP "&"
+                  MUT_KW "mut"
+                  WHITESPACE " "
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "_y"
+                COMMA ","
+                WHITESPACE " "
+                REF_EXPR
+                  AMP "&"
+                  MUT_KW "mut"
+                  WHITESPACE " "
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "_z"
+                R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "canttouchthis"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "usize"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        FN
+          FN_KW "fn"
+          WHITESPACE " "
+          NAME
+            IDENT "p"
+          PARAM_LIST
+            L_PAREN "("
+            R_PAREN ")"
+          WHITESPACE " "
+          RET_TYPE
+            THIN_ARROW "->"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "bool"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              LITERAL
+                TRUE_KW "true"
+              WHITESPACE " "
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_a"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PAREN_EXPR
+            L_PAREN "("
+            BIN_EXPR
+              MACRO_CALL
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "assert"
+                BANG "!"
+                TOKEN_TREE
+                  L_PAREN "("
+                  TOKEN_TREE
+                    L_PAREN "("
+                    TRUE_KW "true"
+                    R_PAREN ")"
+                  R_PAREN ")"
+              WHITESPACE " "
+              EQ2 "=="
+              WHITESPACE " "
+              PAREN_EXPR
+                L_PAREN "("
+                MACRO_CALL
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "assert"
+                  BANG "!"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "p"
+                    TOKEN_TREE
+                      L_PAREN "("
+                      R_PAREN ")"
+                    R_PAREN ")"
+                R_PAREN ")"
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_c"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PAREN_EXPR
+            L_PAREN "("
+            BIN_EXPR
+              MACRO_CALL
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "assert"
+                BANG "!"
+                TOKEN_TREE
+                  L_PAREN "("
+                  TOKEN_TREE
+                    L_PAREN "("
+                    IDENT "p"
+                    TOKEN_TREE
+                      L_PAREN "("
+                      R_PAREN ")"
+                    R_PAREN ")"
+                  R_PAREN ")"
+              WHITESPACE " "
+              EQ2 "=="
+              WHITESPACE " "
+              TUPLE_EXPR
+                L_PAREN "("
+                R_PAREN ")"
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_b"
+          COLON ":"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "bool"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PAREN_EXPR
+            L_PAREN "("
+            BIN_EXPR
+              MACRO_CALL
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "println"
+                BANG "!"
+                TOKEN_TREE
+                  L_PAREN "("
+                  STRING "\"{}\""
+                  COMMA ","
+                  WHITESPACE " "
+                  INT_NUMBER "0"
+                  R_PAREN ")"
+              WHITESPACE " "
+              EQ2 "=="
+              WHITESPACE " "
+              PAREN_EXPR
+                L_PAREN "("
+                RETURN_EXPR
+                  RETURN_KW "return"
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "0"
+                R_PAREN ")"
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "angrydome"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          LOOP_EXPR
+            LOOP_KW "loop"
+            WHITESPACE " "
+            BLOCK_EXPR
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                IF_EXPR
+                  IF_KW "if"
+                  WHITESPACE " "
+                  BREAK_EXPR
+                    BREAK_KW "break"
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      WHITESPACE " "
+                      R_CURLY "}"
+                WHITESPACE " "
+                R_CURLY "}"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "i"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "0"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        LOOP_EXPR
+          LOOP_KW "loop"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              EXPR_STMT
+                BIN_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "i"
+                  WHITESPACE " "
+                  PLUSEQ "+="
+                  WHITESPACE " "
+                  LITERAL
+                    INT_NUMBER "1"
+                SEMICOLON ";"
+              WHITESPACE " "
+              EXPR_STMT
+                IF_EXPR
+                  IF_KW "if"
+                  WHITESPACE " "
+                  BIN_EXPR
+                    PATH_EXPR
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "i"
+                    WHITESPACE " "
+                    EQ2 "=="
+                    WHITESPACE " "
+                    LITERAL
+                      INT_NUMBER "1"
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      WHITESPACE " "
+                      MATCH_EXPR
+                        MATCH_KW "match"
+                        WHITESPACE " "
+                        PAREN_EXPR
+                          L_PAREN "("
+                          CONTINUE_EXPR
+                            CONTINUE_KW "continue"
+                          R_PAREN ")"
+                        WHITESPACE " "
+                        MATCH_ARM_LIST
+                          L_CURLY "{"
+                          WHITESPACE " "
+                          MATCH_ARM
+                            LITERAL_PAT
+                              LITERAL
+                                INT_NUMBER "1"
+                            WHITESPACE " "
+                            FAT_ARROW "=>"
+                            WHITESPACE " "
+                            BLOCK_EXPR
+                              STMT_LIST
+                                L_CURLY "{"
+                                WHITESPACE " "
+                                R_CURLY "}"
+                            COMMA ","
+                          WHITESPACE " "
+                          MATCH_ARM
+                            WILDCARD_PAT
+                              UNDERSCORE "_"
+                            WHITESPACE " "
+                            FAT_ARROW "=>"
+                            WHITESPACE " "
+                            MACRO_CALL
+                              PATH
+                                PATH_SEGMENT
+                                  NAME_REF
+                                    IDENT "panic"
+                              BANG "!"
+                              TOKEN_TREE
+                                L_PAREN "("
+                                STRING "\"wat\""
+                                R_PAREN ")"
+                          WHITESPACE " "
+                          R_CURLY "}"
+                      WHITESPACE " "
+                      R_CURLY "}"
+              WHITESPACE "\n      "
+              EXPR_STMT
+                BREAK_EXPR
+                  BREAK_KW "break"
+                SEMICOLON ";"
+              WHITESPACE " "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "evil_lincoln"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_evil"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          MACRO_CALL
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "println"
+            BANG "!"
+            TOKEN_TREE
+              L_PAREN "("
+              STRING "\"lincoln\""
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "dots"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MACRO_CALL
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "assert_eq"
+            BANG "!"
+            TOKEN_TREE
+              L_PAREN "("
+              IDENT "String"
+              COLON ":"
+              COLON ":"
+              IDENT "from"
+              TOKEN_TREE
+                L_PAREN "("
+                STRING "\"..................................................\""
+                R_PAREN ")"
+              COMMA ","
+              WHITESPACE "\n               "
+              IDENT "format"
+              BANG "!"
+              TOKEN_TREE
+                L_PAREN "("
+                STRING "\"{:?}\""
+                COMMA ","
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE "\n                               "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                WHITESPACE " "
+                DOT "."
+                DOT "."
+                R_PAREN ")"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "u8"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "u8"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u8"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        IF_EXPR
+          IF_KW "if"
+          WHITESPACE " "
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u8"
+            WHITESPACE " "
+            NEQ "!="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "0u8"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              EXPR_STMT
+                MACRO_CALL
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "assert_eq"
+                  BANG "!"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    INT_NUMBER "8u8"
+                    COMMA ","
+                    WHITESPACE " "
+                    TOKEN_TREE
+                      L_CURLY "{"
+                      WHITESPACE "\n            "
+                      IDENT "macro_rules"
+                      BANG "!"
+                      WHITESPACE " "
+                      IDENT "u8"
+                      WHITESPACE " "
+                      TOKEN_TREE
+                        L_CURLY "{"
+                        WHITESPACE "\n                "
+                        TOKEN_TREE
+                          L_PAREN "("
+                          IDENT "u8"
+                          R_PAREN ")"
+                        WHITESPACE " "
+                        EQ "="
+                        R_ANGLE ">"
+                        WHITESPACE " "
+                        TOKEN_TREE
+                          L_CURLY "{"
+                          WHITESPACE "\n                    "
+                          MOD_KW "mod"
+                          WHITESPACE " "
+                          IDENT "u8"
+                          WHITESPACE " "
+                          TOKEN_TREE
+                            L_CURLY "{"
+                            WHITESPACE "\n                        "
+                            PUB_KW "pub"
+                            WHITESPACE " "
+                            FN_KW "fn"
+                            WHITESPACE " "
+                            IDENT "u8"
+                            L_ANGLE "<"
+                            LIFETIME_IDENT "'u8"
+                            COLON ":"
+                            WHITESPACE " "
+                            LIFETIME_IDENT "'u8"
+                            WHITESPACE " "
+                            PLUS "+"
+                            WHITESPACE " "
+                            LIFETIME_IDENT "'u8"
+                            R_ANGLE ">"
+                            TOKEN_TREE
+                              L_PAREN "("
+                              IDENT "u8"
+                              COLON ":"
+                              WHITESPACE " "
+                              AMP "&"
+                              LIFETIME_IDENT "'u8"
+                              WHITESPACE " "
+                              IDENT "u8"
+                              R_PAREN ")"
+                            WHITESPACE " "
+                            MINUS "-"
+                            R_ANGLE ">"
+                            WHITESPACE " "
+                            AMP "&"
+                            LIFETIME_IDENT "'u8"
+                            WHITESPACE " "
+                            IDENT "u8"
+                            WHITESPACE " "
+                            TOKEN_TREE
+                              L_CURLY "{"
+                              WHITESPACE "\n                            "
+                              STRING "\"u8\""
+                              SEMICOLON ";"
+                              WHITESPACE "\n                            "
+                              IDENT "u8"
+                              WHITESPACE "\n                        "
+                              R_CURLY "}"
+                            WHITESPACE "\n                    "
+                            R_CURLY "}"
+                          WHITESPACE "\n                "
+                          R_CURLY "}"
+                        SEMICOLON ";"
+                        WHITESPACE "\n            "
+                        R_CURLY "}"
+                      WHITESPACE "\n\n            "
+                      IDENT "u8"
+                      BANG "!"
+                      TOKEN_TREE
+                        L_PAREN "("
+                        IDENT "u8"
+                        R_PAREN ")"
+                      SEMICOLON ";"
+                      WHITESPACE "\n            "
+                      LET_KW "let"
+                      WHITESPACE " "
+                      AMP "&"
+                      IDENT "u8"
+                      COLON ":"
+                      WHITESPACE " "
+                      AMP "&"
+                      IDENT "u8"
+                      WHITESPACE " "
+                      EQ "="
+                      WHITESPACE " "
+                      IDENT "u8"
+                      COLON ":"
+                      COLON ":"
+                      IDENT "u8"
+                      TOKEN_TREE
+                        L_PAREN "("
+                        AMP "&"
+                        INT_NUMBER "8u8"
+                        R_PAREN ")"
+                      SEMICOLON ";"
+                      WHITESPACE "\n            "
+                      CRATE_KW "crate"
+                      COLON ":"
+                      COLON ":"
+                      IDENT "u8"
+                      TOKEN_TREE
+                        L_PAREN "("
+                        INT_NUMBER "0u8"
+                        R_PAREN ")"
+                      SEMICOLON ";"
+                      WHITESPACE "\n            "
+                      IDENT "u8"
+                      WHITESPACE "\n        "
+                      R_CURLY "}"
+                    R_PAREN ")"
+                SEMICOLON ";"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "fishy"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MACRO_CALL
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "assert_eq"
+            BANG "!"
+            TOKEN_TREE
+              L_PAREN "("
+              IDENT "String"
+              COLON ":"
+              COLON ":"
+              IDENT "from"
+              TOKEN_TREE
+                L_PAREN "("
+                STRING "\"><>\""
+                R_PAREN ")"
+              COMMA ","
+              WHITESPACE "\n               "
+              IDENT "String"
+              COLON ":"
+              COLON ":"
+              L_ANGLE "<"
+              R_ANGLE ">"
+              COLON ":"
+              COLON ":"
+              IDENT "from"
+              COLON ":"
+              COLON ":"
+              L_ANGLE "<"
+              R_ANGLE ">"
+              TOKEN_TREE
+                L_PAREN "("
+                STRING "\"><>\""
+                R_PAREN ")"
+              DOT "."
+              IDENT "chars"
+              COLON ":"
+              COLON ":"
+              L_ANGLE "<"
+              R_ANGLE ">"
+              TOKEN_TREE
+                L_PAREN "("
+                R_PAREN ")"
+              DOT "."
+              IDENT "rev"
+              COLON ":"
+              COLON ":"
+              L_ANGLE "<"
+              R_ANGLE ">"
+              TOKEN_TREE
+                L_PAREN "("
+                R_PAREN ")"
+              DOT "."
+              IDENT "collect"
+              COLON ":"
+              COLON ":"
+              L_ANGLE "<"
+              IDENT "String"
+              R_ANGLE ">"
+              TOKEN_TREE
+                L_PAREN "("
+                R_PAREN ")"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "union"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        UNION
+          UNION_KW "union"
+          WHITESPACE " "
+          NAME
+            IDENT "union"
+          GENERIC_PARAM_LIST
+            L_ANGLE "<"
+            LIFETIME_PARAM
+              LIFETIME
+                LIFETIME_IDENT "'union"
+            R_ANGLE ">"
+          WHITESPACE " "
+          RECORD_FIELD_LIST
+            L_CURLY "{"
+            WHITESPACE " "
+            RECORD_FIELD
+              NAME
+                IDENT "union"
+              COLON ":"
+              WHITESPACE " "
+              REF_TYPE
+                AMP "&"
+                LIFETIME
+                  LIFETIME_IDENT "'union"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "union"
+                      GENERIC_ARG_LIST
+                        L_ANGLE "<"
+                        LIFETIME_ARG
+                          LIFETIME
+                            LIFETIME_IDENT "'union"
+                        R_ANGLE ">"
+            COMMA ","
+            WHITESPACE " "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "special_characters"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "val"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          PREFIX_EXPR
+            BANG "!"
+            PAREN_EXPR
+              L_PAREN "("
+              BIN_EXPR
+                CALL_EXPR
+                  PAREN_EXPR
+                    L_PAREN "("
+                    CLOSURE_EXPR
+                      PARAM_LIST
+                        PIPE "|"
+                        PARAM
+                          TUPLE_PAT
+                            L_PAREN "("
+                            REST_PAT
+                              DOT2 ".."
+                            R_PAREN ")"
+                          COLON ":"
+                          TUPLE_TYPE
+                            L_PAREN "("
+                            INFER_TYPE
+                              UNDERSCORE "_"
+                            COMMA ","
+                            INFER_TYPE
+                              UNDERSCORE "_"
+                            R_PAREN ")"
+                        COMMA ","
+                        PARAM
+                          IDENT_PAT
+                            NAME
+                              IDENT "__"
+                            AT "@"
+                            WILDCARD_PAT
+                              UNDERSCORE "_"
+                        PIPE "|"
+                      PATH_EXPR
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "__"
+                    R_PAREN ")"
+                  ARG_LIST
+                    L_PAREN "("
+                    TUPLE_EXPR
+                      L_PAREN "("
+                      REF_EXPR
+                        AMP "&"
+                        PREFIX_EXPR
+                          STAR "*"
+                          LITERAL
+                            STRING "\"\\\\\""
+                      COMMA ","
+                      LITERAL
+                        CHAR "'🤔'"
+                      R_PAREN ")"
+                    COMMENT "/**/"
+                    COMMA ","
+                    BLOCK_EXPR
+                      STMT_LIST
+                        L_CURLY "{"
+                        R_CURLY "}"
+                    R_PAREN ")"
+                EQ2 "=="
+                BLOCK_EXPR
+                  STMT_LIST
+                    L_CURLY "{"
+                    EXPR_STMT
+                      REF_EXPR
+                        AMP "&"
+                        INDEX_EXPR
+                          ARRAY_EXPR
+                            L_BRACK "["
+                            RANGE_EXPR
+                              DOT2EQ "..="
+                              RANGE_EXPR
+                                DOT2 ".."
+                            R_BRACK "]"
+                          L_BRACK "["
+                          RANGE_EXPR
+                            DOT2 ".."
+                          R_BRACK "]"
+                      SEMICOLON ";"
+                    R_CURLY "}"
+              R_PAREN ")"
+          COMMENT "//"
+          WHITESPACE "\n    "
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MACRO_CALL
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "assert"
+            BANG "!"
+            TOKEN_TREE
+              L_PAREN "("
+              BANG "!"
+              IDENT "val"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "punch_card"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      IMPL_TRAIT_TYPE
+        IMPL_KW "impl"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "std"
+                  COLON2 "::"
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "fmt"
+                COLON2 "::"
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Debug"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        RANGE_EXPR
+          DOT2EQ "..="
+          RANGE_EXPR
+            DOT2EQ "..="
+            RANGE_EXPR
+              DOT2 ".."
+              WHITESPACE " "
+              RANGE_EXPR
+                DOT2 ".."
+                WHITESPACE "    "
+                RANGE_EXPR
+                  DOT2 ".."
+                  WHITESPACE " "
+                  RANGE_EXPR
+                    DOT2 ".."
+                    WHITESPACE " "
+                    RANGE_EXPR
+                      DOT2 ".."
+                      WHITESPACE " "
+                      RANGE_EXPR
+                        DOT2 ".."
+                        WHITESPACE "    "
+                        RANGE_EXPR
+                          DOT2 ".."
+                          WHITESPACE " "
+                          RANGE_EXPR
+                            DOT2 ".."
+                            WHITESPACE " "
+                            RANGE_EXPR
+                              DOT2 ".."
+                              WHITESPACE " "
+                              RANGE_EXPR
+                                DOT2 ".."
+                                WHITESPACE "    "
+                                RANGE_EXPR
+                                  DOT2 ".."
+                                  WHITESPACE " "
+                                  RANGE_EXPR
+                                    DOT2EQ "..="
+                                    RANGE_EXPR
+                                      DOT2 ".."
+                                      WHITESPACE " "
+                                      RANGE_EXPR
+                                        DOT2 ".."
+                                        WHITESPACE "\n    "
+                                        RANGE_EXPR
+                                          DOT2EQ "..="
+                                          RANGE_EXPR
+                                            DOT2 ".."
+                                            WHITESPACE " "
+                                            RANGE_EXPR
+                                              DOT2EQ "..="
+                                              RANGE_EXPR
+                                                DOT2 ".."
+                                                WHITESPACE "    "
+                                                RANGE_EXPR
+                                                  DOT2 ".."
+                                                  WHITESPACE " "
+                                                  RANGE_EXPR
+                                                    DOT2 ".."
+                                                    WHITESPACE " "
+                                                    RANGE_EXPR
+                                                      DOT2 ".."
+                                                      WHITESPACE " "
+                                                      RANGE_EXPR
+                                                        DOT2 ".."
+                                                        WHITESPACE "    "
+                                                        RANGE_EXPR
+                                                          DOT2 ".."
+                                                          WHITESPACE " "
+                                                          RANGE_EXPR
+                                                            DOT2 ".."
+                                                            WHITESPACE " "
+                                                            RANGE_EXPR
+                                                              DOT2 ".."
+                                                              WHITESPACE " "
+                                                              RANGE_EXPR
+                                                                DOT2 ".."
+                                                                WHITESPACE "    "
+                                                                RANGE_EXPR
+                                                                  DOT2EQ "..="
+                                                                  RANGE_EXPR
+                                                                    DOT2EQ "..="
+                                                                    RANGE_EXPR
+                                                                      DOT2EQ "..="
+                                                                      RANGE_EXPR
+                                                                        DOT2 ".."
+                                                                        WHITESPACE "\n    "
+                                                                        RANGE_EXPR
+                                                                          DOT2EQ "..="
+                                                                          RANGE_EXPR
+                                                                            DOT2 ".."
+                                                                            WHITESPACE " "
+                                                                            RANGE_EXPR
+                                                                              DOT2EQ "..="
+                                                                              RANGE_EXPR
+                                                                                DOT2 ".."
+                                                                                WHITESPACE "    "
+                                                                                RANGE_EXPR
+                                                                                  DOT2EQ "..="
+                                                                                  RANGE_EXPR
+                                                                                    DOT2 ".."
+                                                                                    WHITESPACE " "
+                                                                                    RANGE_EXPR
+                                                                                      DOT2EQ "..="
+                                                                                      RANGE_EXPR
+                                                                                        DOT2 ".."
+                                                                                        WHITESPACE "    "
+                                                                                        RANGE_EXPR
+                                                                                          DOT2 ".."
+                                                                                          WHITESPACE " "
+                                                                                          RANGE_EXPR
+                                                                                            DOT2EQ "..="
+                                                                                            RANGE_EXPR
+                                                                                              DOT2EQ "..="
+                                                                                              RANGE_EXPR
+                                                                                                DOT2 ".."
+                                                                                                WHITESPACE "    "
+                                                                                                RANGE_EXPR
+                                                                                                  DOT2 ".."
+                                                                                                  WHITESPACE " "
+                                                                                                  RANGE_EXPR
+                                                                                                    DOT2EQ "..="
+                                                                                                    RANGE_EXPR
+                                                                                                      DOT2 ".."
+                                                                                                      WHITESPACE " "
+                                                                                                      RANGE_EXPR
+                                                                                                        DOT2 ".."
+                                                                                                        WHITESPACE "\n    "
+                                                                                                        RANGE_EXPR
+                                                                                                          DOT2EQ "..="
+                                                                                                          RANGE_EXPR
+                                                                                                            DOT2EQ "..="
+                                                                                                            RANGE_EXPR
+                                                                                                              DOT2 ".."
+                                                                                                              WHITESPACE " "
+                                                                                                              RANGE_EXPR
+                                                                                                                DOT2 ".."
+                                                                                                                WHITESPACE "    "
+                                                                                                                RANGE_EXPR
+                                                                                                                  DOT2EQ "..="
+                                                                                                                  RANGE_EXPR
+                                                                                                                    DOT2 ".."
+                                                                                                                    WHITESPACE " "
+                                                                                                                    RANGE_EXPR
+                                                                                                                      DOT2EQ "..="
+                                                                                                                      RANGE_EXPR
+                                                                                                                        DOT2 ".."
+                                                                                                                        WHITESPACE "    "
+                                                                                                                        RANGE_EXPR
+                                                                                                                          DOT2EQ "..="
+                                                                                                                          RANGE_EXPR
+                                                                                                                            DOT2 ".."
+                                                                                                                            WHITESPACE " "
+                                                                                                                            RANGE_EXPR
+                                                                                                                              DOT2 ".."
+                                                                                                                              WHITESPACE " "
+                                                                                                                              RANGE_EXPR
+                                                                                                                                DOT2 ".."
+                                                                                                                                WHITESPACE "    "
+                                                                                                                                RANGE_EXPR
+                                                                                                                                  DOT2 ".."
+                                                                                                                                  WHITESPACE " "
+                                                                                                                                  RANGE_EXPR
+                                                                                                                                    DOT2EQ "..="
+                                                                                                                                    RANGE_EXPR
+                                                                                                                                      DOT2 ".."
+                                                                                                                                      WHITESPACE " "
+                                                                                                                                      RANGE_EXPR
+                                                                                                                                        DOT2 ".."
+                                                                                                                                        WHITESPACE "\n    "
+                                                                                                                                        RANGE_EXPR
+                                                                                                                                          DOT2EQ "..="
+                                                                                                                                          RANGE_EXPR
+                                                                                                                                            DOT2 ".."
+                                                                                                                                            WHITESPACE " "
+                                                                                                                                            RANGE_EXPR
+                                                                                                                                              DOT2EQ "..="
+                                                                                                                                              RANGE_EXPR
+                                                                                                                                                DOT2 ".."
+                                                                                                                                                WHITESPACE "    "
+                                                                                                                                                RANGE_EXPR
+                                                                                                                                                  DOT2EQ "..="
+                                                                                                                                                  RANGE_EXPR
+                                                                                                                                                    DOT2 ".."
+                                                                                                                                                    WHITESPACE " "
+                                                                                                                                                    RANGE_EXPR
+                                                                                                                                                      DOT2EQ "..="
+                                                                                                                                                      RANGE_EXPR
+                                                                                                                                                        DOT2 ".."
+                                                                                                                                                        WHITESPACE "    "
+                                                                                                                                                        RANGE_EXPR
+                                                                                                                                                          DOT2 ".."
+                                                                                                                                                          WHITESPACE " "
+                                                                                                                                                          RANGE_EXPR
+                                                                                                                                                            DOT2EQ "..="
+                                                                                                                                                            RANGE_EXPR
+                                                                                                                                                              DOT2 ".."
+                                                                                                                                                              WHITESPACE " "
+                                                                                                                                                              RANGE_EXPR
+                                                                                                                                                                DOT2 ".."
+                                                                                                                                                                WHITESPACE "    "
+                                                                                                                                                                RANGE_EXPR
+                                                                                                                                                                  DOT2 ".."
+                                                                                                                                                                  WHITESPACE " "
+                                                                                                                                                                  RANGE_EXPR
+                                                                                                                                                                    DOT2EQ "..="
+                                                                                                                                                                    RANGE_EXPR
+                                                                                                                                                                      DOT2 ".."
+                                                                                                                                                                      WHITESPACE " "
+                                                                                                                                                                      RANGE_EXPR
+                                                                                                                                                                        DOT2 ".."
+                                                                                                                                                                        WHITESPACE "\n    "
+                                                                                                                                                                        RANGE_EXPR
+                                                                                                                                                                          DOT2EQ "..="
+                                                                                                                                                                          RANGE_EXPR
+                                                                                                                                                                            DOT2 ".."
+                                                                                                                                                                            WHITESPACE " "
+                                                                                                                                                                            RANGE_EXPR
+                                                                                                                                                                              DOT2EQ "..="
+                                                                                                                                                                              RANGE_EXPR
+                                                                                                                                                                                DOT2 ".."
+                                                                                                                                                                                WHITESPACE "    "
+                                                                                                                                                                                RANGE_EXPR
+                                                                                                                                                                                  DOT2EQ "..="
+                                                                                                                                                                                  RANGE_EXPR
+                                                                                                                                                                                    DOT2 ".."
+                                                                                                                                                                                    WHITESPACE " "
+                                                                                                                                                                                    RANGE_EXPR
+                                                                                                                                                                                      DOT2EQ "..="
+                                                                                                                                                                                      RANGE_EXPR
+                                                                                                                                                                                        DOT2 ".."
+                                                                                                                                                                                        WHITESPACE "    "
+                                                                                                                                                                                        RANGE_EXPR
+                                                                                                                                                                                          DOT2 ".."
+                                                                                                                                                                                          WHITESPACE " "
+                                                                                                                                                                                          RANGE_EXPR
+                                                                                                                                                                                            DOT2 ".."
+                                                                                                                                                                                            WHITESPACE " "
+                                                                                                                                                                                            RANGE_EXPR
+                                                                                                                                                                                              DOT2EQ "..="
+                                                                                                                                                                                              RANGE_EXPR
+                                                                                                                                                                                                DOT2 ".."
+                                                                                                                                                                                                WHITESPACE "    "
+                                                                                                                                                                                                RANGE_EXPR
+                                                                                                                                                                                                  DOT2 ".."
+                                                                                                                                                                                                  WHITESPACE " "
+                                                                                                                                                                                                  RANGE_EXPR
+                                                                                                                                                                                                    DOT2EQ "..="
+                                                                                                                                                                                                    RANGE_EXPR
+                                                                                                                                                                                                      DOT2 ".."
+                                                                                                                                                                                                      WHITESPACE " "
+                                                                                                                                                                                                      RANGE_EXPR
+                                                                                                                                                                                                        DOT2 ".."
+                                                                                                                                                                                                        WHITESPACE "\n    "
+                                                                                                                                                                                                        RANGE_EXPR
+                                                                                                                                                                                                          DOT2EQ "..="
+                                                                                                                                                                                                          RANGE_EXPR
+                                                                                                                                                                                                            DOT2 ".."
+                                                                                                                                                                                                            WHITESPACE " "
+                                                                                                                                                                                                            RANGE_EXPR
+                                                                                                                                                                                                              DOT2EQ "..="
+                                                                                                                                                                                                              RANGE_EXPR
+                                                                                                                                                                                                                DOT2 ".."
+                                                                                                                                                                                                                WHITESPACE "    "
+                                                                                                                                                                                                                RANGE_EXPR
+                                                                                                                                                                                                                  DOT2 ".."
+                                                                                                                                                                                                                  WHITESPACE " "
+                                                                                                                                                                                                                  RANGE_EXPR
+                                                                                                                                                                                                                    DOT2EQ "..="
+                                                                                                                                                                                                                    RANGE_EXPR
+                                                                                                                                                                                                                      DOT2EQ "..="
+                                                                                                                                                                                                                      RANGE_EXPR
+                                                                                                                                                                                                                        DOT2 ".."
+                                                                                                                                                                                                                        WHITESPACE "    "
+                                                                                                                                                                                                                        RANGE_EXPR
+                                                                                                                                                                                                                          DOT2EQ "..="
+                                                                                                                                                                                                                          RANGE_EXPR
+                                                                                                                                                                                                                            DOT2EQ "..="
+                                                                                                                                                                                                                            RANGE_EXPR
+                                                                                                                                                                                                                              DOT2 ".."
+                                                                                                                                                                                                                              WHITESPACE " "
+                                                                                                                                                                                                                              RANGE_EXPR
+                                                                                                                                                                                                                                DOT2 ".."
+                                                                                                                                                                                                                                WHITESPACE "    "
+                                                                                                                                                                                                                                RANGE_EXPR
+                                                                                                                                                                                                                                  DOT2 ".."
+                                                                                                                                                                                                                                  WHITESPACE " "
+                                                                                                                                                                                                                                  RANGE_EXPR
+                                                                                                                                                                                                                                    DOT2EQ "..="
+                                                                                                                                                                                                                                    RANGE_EXPR
+                                                                                                                                                                                                                                      DOT2 ".."
+                                                                                                                                                                                                                                      WHITESPACE " "
+                                                                                                                                                                                                                                      RANGE_EXPR
+                                                                                                                                                                                                                                        DOT2 ".."
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "ktulhu"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        EXPR_STMT
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        SEMICOLON ";"
+        TUPLE_EXPR
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    VISIBILITY
+      PUB_KW "pub"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "strange"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "funny"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "what"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "zombiejesus"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "notsure"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "canttouchthis"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "angrydome"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "evil_lincoln"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "dots"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u8"
+            ARG_LIST
+              L_PAREN "("
+              LITERAL
+                INT_NUMBER "8u8"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "fishy"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "union"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "special_characters"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "punch_card"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "ktulhu"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0035_weird_exprs.txt b/crates/parser/test_data/parser/ok/0035_weird_exprs.txt
deleted file mode 100644
index 4ec703e517c..00000000000
--- a/crates/parser/test_data/parser/ok/0035_weird_exprs.txt
+++ /dev/null
@@ -1,2328 +0,0 @@
-SOURCE_FILE
-  COMMENT "//! Adapted from a `rustc` test, which can be found at "
-  WHITESPACE "\n"
-  COMMENT "//! https://github.com/rust-lang/rust/blob/6d34ec18c7d7e574553f6347ecf08e1e1c45c13d/src/test/run-pass/weird-exprs.rs."
-  WHITESPACE "\n"
-  COMMENT "//! "
-  WHITESPACE "\n"
-  COMMENT "//! Reported to rust-analyzer in https://github.com/rust-analyzer/rust-analyzer/issues/290"
-  WHITESPACE "\n\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "allow"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "non_camel_case_types"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "allow"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "dead_code"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "allow"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "unreachable_code"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "allow"
-      TOKEN_TREE
-        L_PAREN "("
-        IDENT "unused_parens"
-        R_PAREN ")"
-    R_BRACK "]"
-  WHITESPACE "\n\n"
-  ATTR
-    POUND "#"
-    BANG "!"
-    L_BRACK "["
-    META
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "recursion_limit"
-      WHITESPACE " "
-      EQ "="
-      WHITESPACE " "
-      LITERAL
-        STRING "\"128\""
-    R_BRACK "]"
-  WHITESPACE "\n\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "std"
-          COLON2 "::"
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "cell"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Cell"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  USE
-    USE_KW "use"
-    WHITESPACE " "
-    USE_TREE
-      PATH
-        PATH
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "std"
-          COLON2 "::"
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "mem"
-        COLON2 "::"
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "swap"
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-  COMMENT "// Just a grab bag of stuff that you wouldn't want to actually write."
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "strange"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "bool"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_x"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "bool"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          RETURN_EXPR
-            RETURN_KW "return"
-            WHITESPACE " "
-            LITERAL
-              TRUE_KW "true"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "funny"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        FN
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "f"
-          PARAM_LIST
-            L_PAREN "("
-            PARAM
-              IDENT_PAT
-                NAME
-                  IDENT "_x"
-              COLON ":"
-              WHITESPACE " "
-              TUPLE_TYPE
-                L_PAREN "("
-                R_PAREN ")"
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "f"
-            ARG_LIST
-              L_PAREN "("
-              RETURN_EXPR
-                RETURN_KW "return"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "what"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        FN
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "the"
-          PARAM_LIST
-            L_PAREN "("
-            PARAM
-              IDENT_PAT
-                NAME
-                  IDENT "x"
-              COLON ":"
-              WHITESPACE " "
-              REF_TYPE
-                AMP "&"
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Cell"
-                      GENERIC_ARG_LIST
-                        L_ANGLE "<"
-                        TYPE_ARG
-                          PATH_TYPE
-                            PATH
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "bool"
-                        R_ANGLE ">"
-            R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                RETURN_EXPR
-                  RETURN_KW "return"
-                  WHITESPACE " "
-                  WHILE_EXPR
-                    WHILE_KW "while"
-                    WHITESPACE " "
-                    PREFIX_EXPR
-                      BANG "!"
-                      METHOD_CALL_EXPR
-                        PATH_EXPR
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "x"
-                        DOT "."
-                        NAME_REF
-                          IDENT "get"
-                        ARG_LIST
-                          L_PAREN "("
-                          R_PAREN ")"
-                    WHITESPACE " "
-                    BLOCK_EXPR
-                      STMT_LIST
-                        L_CURLY "{"
-                        WHITESPACE " "
-                        EXPR_STMT
-                          METHOD_CALL_EXPR
-                            PATH_EXPR
-                              PATH
-                                PATH_SEGMENT
-                                  NAME_REF
-                                    IDENT "x"
-                            DOT "."
-                            NAME_REF
-                              IDENT "set"
-                            ARG_LIST
-                              L_PAREN "("
-                              LITERAL
-                                TRUE_KW "true"
-                              R_PAREN ")"
-                          SEMICOLON ";"
-                        WHITESPACE " "
-                        R_CURLY "}"
-                SEMICOLON ";"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "i"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          REF_EXPR
-            AMP "&"
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Cell"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "new"
-              ARG_LIST
-                L_PAREN "("
-                LITERAL
-                  FALSE_KW "false"
-                R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "dont"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              CLOSURE_EXPR
-                PARAM_LIST
-                  PIPE "|"
-                  PIPE "|"
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "the"
-                  ARG_LIST
-                    L_PAREN "("
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "i"
-                    R_PAREN ")"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "dont"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MACRO_CALL
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "assert"
-            BANG "!"
-            TOKEN_TREE
-              L_PAREN "("
-              TOKEN_TREE
-                L_PAREN "("
-                IDENT "i"
-                DOT "."
-                IDENT "get"
-                TOKEN_TREE
-                  L_PAREN "("
-                  R_PAREN ")"
-                R_PAREN ")"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "zombiejesus"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LOOP_EXPR
-          LOOP_KW "loop"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                WHILE_EXPR
-                  WHILE_KW "while"
-                  WHITESPACE " "
-                  PAREN_EXPR
-                    L_PAREN "("
-                    RETURN_EXPR
-                      RETURN_KW "return"
-                    R_PAREN ")"
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      WHITESPACE "\n            "
-                      IF_EXPR
-                        IF_KW "if"
-                        WHITESPACE " "
-                        PAREN_EXPR
-                          L_PAREN "("
-                          RETURN_EXPR
-                            RETURN_KW "return"
-                          R_PAREN ")"
-                        WHITESPACE " "
-                        BLOCK_EXPR
-                          STMT_LIST
-                            L_CURLY "{"
-                            WHITESPACE "\n                "
-                            EXPR_STMT
-                              MATCH_EXPR
-                                MATCH_KW "match"
-                                WHITESPACE " "
-                                PAREN_EXPR
-                                  L_PAREN "("
-                                  RETURN_EXPR
-                                    RETURN_KW "return"
-                                  R_PAREN ")"
-                                WHITESPACE " "
-                                MATCH_ARM_LIST
-                                  L_CURLY "{"
-                                  WHITESPACE "\n                    "
-                                  MATCH_ARM
-                                    LITERAL_PAT
-                                      LITERAL
-                                        INT_NUMBER "1"
-                                    WHITESPACE " "
-                                    FAT_ARROW "=>"
-                                    WHITESPACE " "
-                                    BLOCK_EXPR
-                                      STMT_LIST
-                                        L_CURLY "{"
-                                        WHITESPACE "\n                        "
-                                        IF_EXPR
-                                          IF_KW "if"
-                                          WHITESPACE " "
-                                          PAREN_EXPR
-                                            L_PAREN "("
-                                            RETURN_EXPR
-                                              RETURN_KW "return"
-                                            R_PAREN ")"
-                                          WHITESPACE " "
-                                          BLOCK_EXPR
-                                            STMT_LIST
-                                              L_CURLY "{"
-                                              WHITESPACE "\n                            "
-                                              RETURN_EXPR
-                                                RETURN_KW "return"
-                                              WHITESPACE "\n                        "
-                                              R_CURLY "}"
-                                          WHITESPACE " "
-                                          ELSE_KW "else"
-                                          WHITESPACE " "
-                                          BLOCK_EXPR
-                                            STMT_LIST
-                                              L_CURLY "{"
-                                              WHITESPACE "\n                            "
-                                              RETURN_EXPR
-                                                RETURN_KW "return"
-                                              WHITESPACE "\n                        "
-                                              R_CURLY "}"
-                                        WHITESPACE "\n                    "
-                                        R_CURLY "}"
-                                  WHITESPACE "\n                    "
-                                  MATCH_ARM
-                                    WILDCARD_PAT
-                                      UNDERSCORE "_"
-                                    WHITESPACE " "
-                                    FAT_ARROW "=>"
-                                    WHITESPACE " "
-                                    BLOCK_EXPR
-                                      STMT_LIST
-                                        L_CURLY "{"
-                                        WHITESPACE " "
-                                        RETURN_EXPR
-                                          RETURN_KW "return"
-                                        WHITESPACE " "
-                                        R_CURLY "}"
-                                  WHITESPACE "\n                "
-                                  R_CURLY "}"
-                              SEMICOLON ";"
-                            WHITESPACE "\n            "
-                            R_CURLY "}"
-                        WHITESPACE " "
-                        ELSE_KW "else"
-                        WHITESPACE " "
-                        IF_EXPR
-                          IF_KW "if"
-                          WHITESPACE " "
-                          PAREN_EXPR
-                            L_PAREN "("
-                            RETURN_EXPR
-                              RETURN_KW "return"
-                            R_PAREN ")"
-                          WHITESPACE " "
-                          BLOCK_EXPR
-                            STMT_LIST
-                              L_CURLY "{"
-                              WHITESPACE "\n                "
-                              EXPR_STMT
-                                RETURN_EXPR
-                                  RETURN_KW "return"
-                                SEMICOLON ";"
-                              WHITESPACE "\n            "
-                              R_CURLY "}"
-                      WHITESPACE "\n        "
-                      R_CURLY "}"
-              WHITESPACE "\n        "
-              IF_EXPR
-                IF_KW "if"
-                WHITESPACE " "
-                PAREN_EXPR
-                  L_PAREN "("
-                  RETURN_EXPR
-                    RETURN_KW "return"
-                  R_PAREN ")"
-                WHITESPACE " "
-                BLOCK_EXPR
-                  STMT_LIST
-                    L_CURLY "{"
-                    WHITESPACE " "
-                    EXPR_STMT
-                      BREAK_EXPR
-                        BREAK_KW "break"
-                      SEMICOLON ";"
-                    WHITESPACE " "
-                    R_CURLY "}"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "notsure"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "_x"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "isize"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "_y"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BIN_EXPR
-            PAREN_EXPR
-              L_PAREN "("
-              BIN_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "_x"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "0"
-              R_PAREN ")"
-            WHITESPACE " "
-            EQ2 "=="
-            WHITESPACE " "
-            PAREN_EXPR
-              L_PAREN "("
-              BIN_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "_x"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "0"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "_z"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BIN_EXPR
-            PAREN_EXPR
-              L_PAREN "("
-              BIN_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "_x"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "0"
-              R_PAREN ")"
-            WHITESPACE " "
-            L_ANGLE "<"
-            WHITESPACE " "
-            PAREN_EXPR
-              L_PAREN "("
-              BIN_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "_x"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "0"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_a"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BIN_EXPR
-            PAREN_EXPR
-              L_PAREN "("
-              BIN_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "_x"
-                WHITESPACE " "
-                PLUSEQ "+="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "0"
-              R_PAREN ")"
-            WHITESPACE " "
-            EQ2 "=="
-            WHITESPACE " "
-            PAREN_EXPR
-              L_PAREN "("
-              BIN_EXPR
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "_x"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "0"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_b"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BIN_EXPR
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "swap"
-              ARG_LIST
-                L_PAREN "("
-                REF_EXPR
-                  AMP "&"
-                  MUT_KW "mut"
-                  WHITESPACE " "
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "_y"
-                COMMA ","
-                WHITESPACE " "
-                REF_EXPR
-                  AMP "&"
-                  MUT_KW "mut"
-                  WHITESPACE " "
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "_z"
-                R_PAREN ")"
-            WHITESPACE " "
-            EQ2 "=="
-            WHITESPACE " "
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "swap"
-              ARG_LIST
-                L_PAREN "("
-                REF_EXPR
-                  AMP "&"
-                  MUT_KW "mut"
-                  WHITESPACE " "
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "_y"
-                COMMA ","
-                WHITESPACE " "
-                REF_EXPR
-                  AMP "&"
-                  MUT_KW "mut"
-                  WHITESPACE " "
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "_z"
-                R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "canttouchthis"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "usize"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        FN
-          FN_KW "fn"
-          WHITESPACE " "
-          NAME
-            IDENT "p"
-          PARAM_LIST
-            L_PAREN "("
-            R_PAREN ")"
-          WHITESPACE " "
-          RET_TYPE
-            THIN_ARROW "->"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "bool"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              LITERAL
-                TRUE_KW "true"
-              WHITESPACE " "
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_a"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PAREN_EXPR
-            L_PAREN "("
-            BIN_EXPR
-              MACRO_CALL
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "assert"
-                BANG "!"
-                TOKEN_TREE
-                  L_PAREN "("
-                  TOKEN_TREE
-                    L_PAREN "("
-                    TRUE_KW "true"
-                    R_PAREN ")"
-                  R_PAREN ")"
-              WHITESPACE " "
-              EQ2 "=="
-              WHITESPACE " "
-              PAREN_EXPR
-                L_PAREN "("
-                MACRO_CALL
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "assert"
-                  BANG "!"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "p"
-                    TOKEN_TREE
-                      L_PAREN "("
-                      R_PAREN ")"
-                    R_PAREN ")"
-                R_PAREN ")"
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_c"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PAREN_EXPR
-            L_PAREN "("
-            BIN_EXPR
-              MACRO_CALL
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "assert"
-                BANG "!"
-                TOKEN_TREE
-                  L_PAREN "("
-                  TOKEN_TREE
-                    L_PAREN "("
-                    IDENT "p"
-                    TOKEN_TREE
-                      L_PAREN "("
-                      R_PAREN ")"
-                    R_PAREN ")"
-                  R_PAREN ")"
-              WHITESPACE " "
-              EQ2 "=="
-              WHITESPACE " "
-              TUPLE_EXPR
-                L_PAREN "("
-                R_PAREN ")"
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_b"
-          COLON ":"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "bool"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PAREN_EXPR
-            L_PAREN "("
-            BIN_EXPR
-              MACRO_CALL
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "println"
-                BANG "!"
-                TOKEN_TREE
-                  L_PAREN "("
-                  STRING "\"{}\""
-                  COMMA ","
-                  WHITESPACE " "
-                  INT_NUMBER "0"
-                  R_PAREN ")"
-              WHITESPACE " "
-              EQ2 "=="
-              WHITESPACE " "
-              PAREN_EXPR
-                L_PAREN "("
-                RETURN_EXPR
-                  RETURN_KW "return"
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "0"
-                R_PAREN ")"
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "angrydome"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          LOOP_EXPR
-            LOOP_KW "loop"
-            WHITESPACE " "
-            BLOCK_EXPR
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                IF_EXPR
-                  IF_KW "if"
-                  WHITESPACE " "
-                  BREAK_EXPR
-                    BREAK_KW "break"
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      WHITESPACE " "
-                      R_CURLY "}"
-                WHITESPACE " "
-                R_CURLY "}"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "i"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "0"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        LOOP_EXPR
-          LOOP_KW "loop"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              EXPR_STMT
-                BIN_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "i"
-                  WHITESPACE " "
-                  PLUSEQ "+="
-                  WHITESPACE " "
-                  LITERAL
-                    INT_NUMBER "1"
-                SEMICOLON ";"
-              WHITESPACE " "
-              EXPR_STMT
-                IF_EXPR
-                  IF_KW "if"
-                  WHITESPACE " "
-                  BIN_EXPR
-                    PATH_EXPR
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "i"
-                    WHITESPACE " "
-                    EQ2 "=="
-                    WHITESPACE " "
-                    LITERAL
-                      INT_NUMBER "1"
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      WHITESPACE " "
-                      MATCH_EXPR
-                        MATCH_KW "match"
-                        WHITESPACE " "
-                        PAREN_EXPR
-                          L_PAREN "("
-                          CONTINUE_EXPR
-                            CONTINUE_KW "continue"
-                          R_PAREN ")"
-                        WHITESPACE " "
-                        MATCH_ARM_LIST
-                          L_CURLY "{"
-                          WHITESPACE " "
-                          MATCH_ARM
-                            LITERAL_PAT
-                              LITERAL
-                                INT_NUMBER "1"
-                            WHITESPACE " "
-                            FAT_ARROW "=>"
-                            WHITESPACE " "
-                            BLOCK_EXPR
-                              STMT_LIST
-                                L_CURLY "{"
-                                WHITESPACE " "
-                                R_CURLY "}"
-                            COMMA ","
-                          WHITESPACE " "
-                          MATCH_ARM
-                            WILDCARD_PAT
-                              UNDERSCORE "_"
-                            WHITESPACE " "
-                            FAT_ARROW "=>"
-                            WHITESPACE " "
-                            MACRO_CALL
-                              PATH
-                                PATH_SEGMENT
-                                  NAME_REF
-                                    IDENT "panic"
-                              BANG "!"
-                              TOKEN_TREE
-                                L_PAREN "("
-                                STRING "\"wat\""
-                                R_PAREN ")"
-                          WHITESPACE " "
-                          R_CURLY "}"
-                      WHITESPACE " "
-                      R_CURLY "}"
-              WHITESPACE "\n      "
-              EXPR_STMT
-                BREAK_EXPR
-                  BREAK_KW "break"
-                SEMICOLON ";"
-              WHITESPACE " "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "evil_lincoln"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_evil"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          MACRO_CALL
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "println"
-            BANG "!"
-            TOKEN_TREE
-              L_PAREN "("
-              STRING "\"lincoln\""
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "dots"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MACRO_CALL
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "assert_eq"
-            BANG "!"
-            TOKEN_TREE
-              L_PAREN "("
-              IDENT "String"
-              COLON ":"
-              COLON ":"
-              IDENT "from"
-              TOKEN_TREE
-                L_PAREN "("
-                STRING "\"..................................................\""
-                R_PAREN ")"
-              COMMA ","
-              WHITESPACE "\n               "
-              IDENT "format"
-              BANG "!"
-              TOKEN_TREE
-                L_PAREN "("
-                STRING "\"{:?}\""
-                COMMA ","
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE "\n                               "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                WHITESPACE " "
-                DOT "."
-                DOT "."
-                R_PAREN ")"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "u8"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "u8"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u8"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        IF_EXPR
-          IF_KW "if"
-          WHITESPACE " "
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u8"
-            WHITESPACE " "
-            NEQ "!="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "0u8"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              EXPR_STMT
-                MACRO_CALL
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "assert_eq"
-                  BANG "!"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    INT_NUMBER "8u8"
-                    COMMA ","
-                    WHITESPACE " "
-                    TOKEN_TREE
-                      L_CURLY "{"
-                      WHITESPACE "\n            "
-                      IDENT "macro_rules"
-                      BANG "!"
-                      WHITESPACE " "
-                      IDENT "u8"
-                      WHITESPACE " "
-                      TOKEN_TREE
-                        L_CURLY "{"
-                        WHITESPACE "\n                "
-                        TOKEN_TREE
-                          L_PAREN "("
-                          IDENT "u8"
-                          R_PAREN ")"
-                        WHITESPACE " "
-                        EQ "="
-                        R_ANGLE ">"
-                        WHITESPACE " "
-                        TOKEN_TREE
-                          L_CURLY "{"
-                          WHITESPACE "\n                    "
-                          MOD_KW "mod"
-                          WHITESPACE " "
-                          IDENT "u8"
-                          WHITESPACE " "
-                          TOKEN_TREE
-                            L_CURLY "{"
-                            WHITESPACE "\n                        "
-                            PUB_KW "pub"
-                            WHITESPACE " "
-                            FN_KW "fn"
-                            WHITESPACE " "
-                            IDENT "u8"
-                            L_ANGLE "<"
-                            LIFETIME_IDENT "'u8"
-                            COLON ":"
-                            WHITESPACE " "
-                            LIFETIME_IDENT "'u8"
-                            WHITESPACE " "
-                            PLUS "+"
-                            WHITESPACE " "
-                            LIFETIME_IDENT "'u8"
-                            R_ANGLE ">"
-                            TOKEN_TREE
-                              L_PAREN "("
-                              IDENT "u8"
-                              COLON ":"
-                              WHITESPACE " "
-                              AMP "&"
-                              LIFETIME_IDENT "'u8"
-                              WHITESPACE " "
-                              IDENT "u8"
-                              R_PAREN ")"
-                            WHITESPACE " "
-                            MINUS "-"
-                            R_ANGLE ">"
-                            WHITESPACE " "
-                            AMP "&"
-                            LIFETIME_IDENT "'u8"
-                            WHITESPACE " "
-                            IDENT "u8"
-                            WHITESPACE " "
-                            TOKEN_TREE
-                              L_CURLY "{"
-                              WHITESPACE "\n                            "
-                              STRING "\"u8\""
-                              SEMICOLON ";"
-                              WHITESPACE "\n                            "
-                              IDENT "u8"
-                              WHITESPACE "\n                        "
-                              R_CURLY "}"
-                            WHITESPACE "\n                    "
-                            R_CURLY "}"
-                          WHITESPACE "\n                "
-                          R_CURLY "}"
-                        SEMICOLON ";"
-                        WHITESPACE "\n            "
-                        R_CURLY "}"
-                      WHITESPACE "\n\n            "
-                      IDENT "u8"
-                      BANG "!"
-                      TOKEN_TREE
-                        L_PAREN "("
-                        IDENT "u8"
-                        R_PAREN ")"
-                      SEMICOLON ";"
-                      WHITESPACE "\n            "
-                      LET_KW "let"
-                      WHITESPACE " "
-                      AMP "&"
-                      IDENT "u8"
-                      COLON ":"
-                      WHITESPACE " "
-                      AMP "&"
-                      IDENT "u8"
-                      WHITESPACE " "
-                      EQ "="
-                      WHITESPACE " "
-                      IDENT "u8"
-                      COLON ":"
-                      COLON ":"
-                      IDENT "u8"
-                      TOKEN_TREE
-                        L_PAREN "("
-                        AMP "&"
-                        INT_NUMBER "8u8"
-                        R_PAREN ")"
-                      SEMICOLON ";"
-                      WHITESPACE "\n            "
-                      CRATE_KW "crate"
-                      COLON ":"
-                      COLON ":"
-                      IDENT "u8"
-                      TOKEN_TREE
-                        L_PAREN "("
-                        INT_NUMBER "0u8"
-                        R_PAREN ")"
-                      SEMICOLON ";"
-                      WHITESPACE "\n            "
-                      IDENT "u8"
-                      WHITESPACE "\n        "
-                      R_CURLY "}"
-                    R_PAREN ")"
-                SEMICOLON ";"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "fishy"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MACRO_CALL
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "assert_eq"
-            BANG "!"
-            TOKEN_TREE
-              L_PAREN "("
-              IDENT "String"
-              COLON ":"
-              COLON ":"
-              IDENT "from"
-              TOKEN_TREE
-                L_PAREN "("
-                STRING "\"><>\""
-                R_PAREN ")"
-              COMMA ","
-              WHITESPACE "\n               "
-              IDENT "String"
-              COLON ":"
-              COLON ":"
-              L_ANGLE "<"
-              R_ANGLE ">"
-              COLON ":"
-              COLON ":"
-              IDENT "from"
-              COLON ":"
-              COLON ":"
-              L_ANGLE "<"
-              R_ANGLE ">"
-              TOKEN_TREE
-                L_PAREN "("
-                STRING "\"><>\""
-                R_PAREN ")"
-              DOT "."
-              IDENT "chars"
-              COLON ":"
-              COLON ":"
-              L_ANGLE "<"
-              R_ANGLE ">"
-              TOKEN_TREE
-                L_PAREN "("
-                R_PAREN ")"
-              DOT "."
-              IDENT "rev"
-              COLON ":"
-              COLON ":"
-              L_ANGLE "<"
-              R_ANGLE ">"
-              TOKEN_TREE
-                L_PAREN "("
-                R_PAREN ")"
-              DOT "."
-              IDENT "collect"
-              COLON ":"
-              COLON ":"
-              L_ANGLE "<"
-              IDENT "String"
-              R_ANGLE ">"
-              TOKEN_TREE
-                L_PAREN "("
-                R_PAREN ")"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "union"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        UNION
-          UNION_KW "union"
-          WHITESPACE " "
-          NAME
-            IDENT "union"
-          GENERIC_PARAM_LIST
-            L_ANGLE "<"
-            LIFETIME_PARAM
-              LIFETIME
-                LIFETIME_IDENT "'union"
-            R_ANGLE ">"
-          WHITESPACE " "
-          RECORD_FIELD_LIST
-            L_CURLY "{"
-            WHITESPACE " "
-            RECORD_FIELD
-              NAME
-                IDENT "union"
-              COLON ":"
-              WHITESPACE " "
-              REF_TYPE
-                AMP "&"
-                LIFETIME
-                  LIFETIME_IDENT "'union"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "union"
-                      GENERIC_ARG_LIST
-                        L_ANGLE "<"
-                        LIFETIME_ARG
-                          LIFETIME
-                            LIFETIME_IDENT "'union"
-                        R_ANGLE ">"
-            COMMA ","
-            WHITESPACE " "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "special_characters"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "val"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          PREFIX_EXPR
-            BANG "!"
-            PAREN_EXPR
-              L_PAREN "("
-              BIN_EXPR
-                CALL_EXPR
-                  PAREN_EXPR
-                    L_PAREN "("
-                    CLOSURE_EXPR
-                      PARAM_LIST
-                        PIPE "|"
-                        PARAM
-                          TUPLE_PAT
-                            L_PAREN "("
-                            REST_PAT
-                              DOT2 ".."
-                            R_PAREN ")"
-                          COLON ":"
-                          TUPLE_TYPE
-                            L_PAREN "("
-                            INFER_TYPE
-                              UNDERSCORE "_"
-                            COMMA ","
-                            INFER_TYPE
-                              UNDERSCORE "_"
-                            R_PAREN ")"
-                        COMMA ","
-                        PARAM
-                          IDENT_PAT
-                            NAME
-                              IDENT "__"
-                            AT "@"
-                            WILDCARD_PAT
-                              UNDERSCORE "_"
-                        PIPE "|"
-                      PATH_EXPR
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "__"
-                    R_PAREN ")"
-                  ARG_LIST
-                    L_PAREN "("
-                    TUPLE_EXPR
-                      L_PAREN "("
-                      REF_EXPR
-                        AMP "&"
-                        PREFIX_EXPR
-                          STAR "*"
-                          LITERAL
-                            STRING "\"\\\\\""
-                      COMMA ","
-                      LITERAL
-                        CHAR "'🤔'"
-                      R_PAREN ")"
-                    COMMENT "/**/"
-                    COMMA ","
-                    BLOCK_EXPR
-                      STMT_LIST
-                        L_CURLY "{"
-                        R_CURLY "}"
-                    R_PAREN ")"
-                EQ2 "=="
-                BLOCK_EXPR
-                  STMT_LIST
-                    L_CURLY "{"
-                    EXPR_STMT
-                      REF_EXPR
-                        AMP "&"
-                        INDEX_EXPR
-                          ARRAY_EXPR
-                            L_BRACK "["
-                            RANGE_EXPR
-                              DOT2EQ "..="
-                              RANGE_EXPR
-                                DOT2 ".."
-                            R_BRACK "]"
-                          L_BRACK "["
-                          RANGE_EXPR
-                            DOT2 ".."
-                          R_BRACK "]"
-                      SEMICOLON ";"
-                    R_CURLY "}"
-              R_PAREN ")"
-          COMMENT "//"
-          WHITESPACE "\n    "
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MACRO_CALL
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "assert"
-            BANG "!"
-            TOKEN_TREE
-              L_PAREN "("
-              BANG "!"
-              IDENT "val"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "punch_card"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      IMPL_TRAIT_TYPE
-        IMPL_KW "impl"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "std"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "fmt"
-                COLON2 "::"
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Debug"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        RANGE_EXPR
-          DOT2EQ "..="
-          RANGE_EXPR
-            DOT2EQ "..="
-            RANGE_EXPR
-              DOT2 ".."
-              WHITESPACE " "
-              RANGE_EXPR
-                DOT2 ".."
-                WHITESPACE "    "
-                RANGE_EXPR
-                  DOT2 ".."
-                  WHITESPACE " "
-                  RANGE_EXPR
-                    DOT2 ".."
-                    WHITESPACE " "
-                    RANGE_EXPR
-                      DOT2 ".."
-                      WHITESPACE " "
-                      RANGE_EXPR
-                        DOT2 ".."
-                        WHITESPACE "    "
-                        RANGE_EXPR
-                          DOT2 ".."
-                          WHITESPACE " "
-                          RANGE_EXPR
-                            DOT2 ".."
-                            WHITESPACE " "
-                            RANGE_EXPR
-                              DOT2 ".."
-                              WHITESPACE " "
-                              RANGE_EXPR
-                                DOT2 ".."
-                                WHITESPACE "    "
-                                RANGE_EXPR
-                                  DOT2 ".."
-                                  WHITESPACE " "
-                                  RANGE_EXPR
-                                    DOT2EQ "..="
-                                    RANGE_EXPR
-                                      DOT2 ".."
-                                      WHITESPACE " "
-                                      RANGE_EXPR
-                                        DOT2 ".."
-                                        WHITESPACE "\n    "
-                                        RANGE_EXPR
-                                          DOT2EQ "..="
-                                          RANGE_EXPR
-                                            DOT2 ".."
-                                            WHITESPACE " "
-                                            RANGE_EXPR
-                                              DOT2EQ "..="
-                                              RANGE_EXPR
-                                                DOT2 ".."
-                                                WHITESPACE "    "
-                                                RANGE_EXPR
-                                                  DOT2 ".."
-                                                  WHITESPACE " "
-                                                  RANGE_EXPR
-                                                    DOT2 ".."
-                                                    WHITESPACE " "
-                                                    RANGE_EXPR
-                                                      DOT2 ".."
-                                                      WHITESPACE " "
-                                                      RANGE_EXPR
-                                                        DOT2 ".."
-                                                        WHITESPACE "    "
-                                                        RANGE_EXPR
-                                                          DOT2 ".."
-                                                          WHITESPACE " "
-                                                          RANGE_EXPR
-                                                            DOT2 ".."
-                                                            WHITESPACE " "
-                                                            RANGE_EXPR
-                                                              DOT2 ".."
-                                                              WHITESPACE " "
-                                                              RANGE_EXPR
-                                                                DOT2 ".."
-                                                                WHITESPACE "    "
-                                                                RANGE_EXPR
-                                                                  DOT2EQ "..="
-                                                                  RANGE_EXPR
-                                                                    DOT2EQ "..="
-                                                                    RANGE_EXPR
-                                                                      DOT2EQ "..="
-                                                                      RANGE_EXPR
-                                                                        DOT2 ".."
-                                                                        WHITESPACE "\n    "
-                                                                        RANGE_EXPR
-                                                                          DOT2EQ "..="
-                                                                          RANGE_EXPR
-                                                                            DOT2 ".."
-                                                                            WHITESPACE " "
-                                                                            RANGE_EXPR
-                                                                              DOT2EQ "..="
-                                                                              RANGE_EXPR
-                                                                                DOT2 ".."
-                                                                                WHITESPACE "    "
-                                                                                RANGE_EXPR
-                                                                                  DOT2EQ "..="
-                                                                                  RANGE_EXPR
-                                                                                    DOT2 ".."
-                                                                                    WHITESPACE " "
-                                                                                    RANGE_EXPR
-                                                                                      DOT2EQ "..="
-                                                                                      RANGE_EXPR
-                                                                                        DOT2 ".."
-                                                                                        WHITESPACE "    "
-                                                                                        RANGE_EXPR
-                                                                                          DOT2 ".."
-                                                                                          WHITESPACE " "
-                                                                                          RANGE_EXPR
-                                                                                            DOT2EQ "..="
-                                                                                            RANGE_EXPR
-                                                                                              DOT2EQ "..="
-                                                                                              RANGE_EXPR
-                                                                                                DOT2 ".."
-                                                                                                WHITESPACE "    "
-                                                                                                RANGE_EXPR
-                                                                                                  DOT2 ".."
-                                                                                                  WHITESPACE " "
-                                                                                                  RANGE_EXPR
-                                                                                                    DOT2EQ "..="
-                                                                                                    RANGE_EXPR
-                                                                                                      DOT2 ".."
-                                                                                                      WHITESPACE " "
-                                                                                                      RANGE_EXPR
-                                                                                                        DOT2 ".."
-                                                                                                        WHITESPACE "\n    "
-                                                                                                        RANGE_EXPR
-                                                                                                          DOT2EQ "..="
-                                                                                                          RANGE_EXPR
-                                                                                                            DOT2EQ "..="
-                                                                                                            RANGE_EXPR
-                                                                                                              DOT2 ".."
-                                                                                                              WHITESPACE " "
-                                                                                                              RANGE_EXPR
-                                                                                                                DOT2 ".."
-                                                                                                                WHITESPACE "    "
-                                                                                                                RANGE_EXPR
-                                                                                                                  DOT2EQ "..="
-                                                                                                                  RANGE_EXPR
-                                                                                                                    DOT2 ".."
-                                                                                                                    WHITESPACE " "
-                                                                                                                    RANGE_EXPR
-                                                                                                                      DOT2EQ "..="
-                                                                                                                      RANGE_EXPR
-                                                                                                                        DOT2 ".."
-                                                                                                                        WHITESPACE "    "
-                                                                                                                        RANGE_EXPR
-                                                                                                                          DOT2EQ "..="
-                                                                                                                          RANGE_EXPR
-                                                                                                                            DOT2 ".."
-                                                                                                                            WHITESPACE " "
-                                                                                                                            RANGE_EXPR
-                                                                                                                              DOT2 ".."
-                                                                                                                              WHITESPACE " "
-                                                                                                                              RANGE_EXPR
-                                                                                                                                DOT2 ".."
-                                                                                                                                WHITESPACE "    "
-                                                                                                                                RANGE_EXPR
-                                                                                                                                  DOT2 ".."
-                                                                                                                                  WHITESPACE " "
-                                                                                                                                  RANGE_EXPR
-                                                                                                                                    DOT2EQ "..="
-                                                                                                                                    RANGE_EXPR
-                                                                                                                                      DOT2 ".."
-                                                                                                                                      WHITESPACE " "
-                                                                                                                                      RANGE_EXPR
-                                                                                                                                        DOT2 ".."
-                                                                                                                                        WHITESPACE "\n    "
-                                                                                                                                        RANGE_EXPR
-                                                                                                                                          DOT2EQ "..="
-                                                                                                                                          RANGE_EXPR
-                                                                                                                                            DOT2 ".."
-                                                                                                                                            WHITESPACE " "
-                                                                                                                                            RANGE_EXPR
-                                                                                                                                              DOT2EQ "..="
-                                                                                                                                              RANGE_EXPR
-                                                                                                                                                DOT2 ".."
-                                                                                                                                                WHITESPACE "    "
-                                                                                                                                                RANGE_EXPR
-                                                                                                                                                  DOT2EQ "..="
-                                                                                                                                                  RANGE_EXPR
-                                                                                                                                                    DOT2 ".."
-                                                                                                                                                    WHITESPACE " "
-                                                                                                                                                    RANGE_EXPR
-                                                                                                                                                      DOT2EQ "..="
-                                                                                                                                                      RANGE_EXPR
-                                                                                                                                                        DOT2 ".."
-                                                                                                                                                        WHITESPACE "    "
-                                                                                                                                                        RANGE_EXPR
-                                                                                                                                                          DOT2 ".."
-                                                                                                                                                          WHITESPACE " "
-                                                                                                                                                          RANGE_EXPR
-                                                                                                                                                            DOT2EQ "..="
-                                                                                                                                                            RANGE_EXPR
-                                                                                                                                                              DOT2 ".."
-                                                                                                                                                              WHITESPACE " "
-                                                                                                                                                              RANGE_EXPR
-                                                                                                                                                                DOT2 ".."
-                                                                                                                                                                WHITESPACE "    "
-                                                                                                                                                                RANGE_EXPR
-                                                                                                                                                                  DOT2 ".."
-                                                                                                                                                                  WHITESPACE " "
-                                                                                                                                                                  RANGE_EXPR
-                                                                                                                                                                    DOT2EQ "..="
-                                                                                                                                                                    RANGE_EXPR
-                                                                                                                                                                      DOT2 ".."
-                                                                                                                                                                      WHITESPACE " "
-                                                                                                                                                                      RANGE_EXPR
-                                                                                                                                                                        DOT2 ".."
-                                                                                                                                                                        WHITESPACE "\n    "
-                                                                                                                                                                        RANGE_EXPR
-                                                                                                                                                                          DOT2EQ "..="
-                                                                                                                                                                          RANGE_EXPR
-                                                                                                                                                                            DOT2 ".."
-                                                                                                                                                                            WHITESPACE " "
-                                                                                                                                                                            RANGE_EXPR
-                                                                                                                                                                              DOT2EQ "..="
-                                                                                                                                                                              RANGE_EXPR
-                                                                                                                                                                                DOT2 ".."
-                                                                                                                                                                                WHITESPACE "    "
-                                                                                                                                                                                RANGE_EXPR
-                                                                                                                                                                                  DOT2EQ "..="
-                                                                                                                                                                                  RANGE_EXPR
-                                                                                                                                                                                    DOT2 ".."
-                                                                                                                                                                                    WHITESPACE " "
-                                                                                                                                                                                    RANGE_EXPR
-                                                                                                                                                                                      DOT2EQ "..="
-                                                                                                                                                                                      RANGE_EXPR
-                                                                                                                                                                                        DOT2 ".."
-                                                                                                                                                                                        WHITESPACE "    "
-                                                                                                                                                                                        RANGE_EXPR
-                                                                                                                                                                                          DOT2 ".."
-                                                                                                                                                                                          WHITESPACE " "
-                                                                                                                                                                                          RANGE_EXPR
-                                                                                                                                                                                            DOT2 ".."
-                                                                                                                                                                                            WHITESPACE " "
-                                                                                                                                                                                            RANGE_EXPR
-                                                                                                                                                                                              DOT2EQ "..="
-                                                                                                                                                                                              RANGE_EXPR
-                                                                                                                                                                                                DOT2 ".."
-                                                                                                                                                                                                WHITESPACE "    "
-                                                                                                                                                                                                RANGE_EXPR
-                                                                                                                                                                                                  DOT2 ".."
-                                                                                                                                                                                                  WHITESPACE " "
-                                                                                                                                                                                                  RANGE_EXPR
-                                                                                                                                                                                                    DOT2EQ "..="
-                                                                                                                                                                                                    RANGE_EXPR
-                                                                                                                                                                                                      DOT2 ".."
-                                                                                                                                                                                                      WHITESPACE " "
-                                                                                                                                                                                                      RANGE_EXPR
-                                                                                                                                                                                                        DOT2 ".."
-                                                                                                                                                                                                        WHITESPACE "\n    "
-                                                                                                                                                                                                        RANGE_EXPR
-                                                                                                                                                                                                          DOT2EQ "..="
-                                                                                                                                                                                                          RANGE_EXPR
-                                                                                                                                                                                                            DOT2 ".."
-                                                                                                                                                                                                            WHITESPACE " "
-                                                                                                                                                                                                            RANGE_EXPR
-                                                                                                                                                                                                              DOT2EQ "..="
-                                                                                                                                                                                                              RANGE_EXPR
-                                                                                                                                                                                                                DOT2 ".."
-                                                                                                                                                                                                                WHITESPACE "    "
-                                                                                                                                                                                                                RANGE_EXPR
-                                                                                                                                                                                                                  DOT2 ".."
-                                                                                                                                                                                                                  WHITESPACE " "
-                                                                                                                                                                                                                  RANGE_EXPR
-                                                                                                                                                                                                                    DOT2EQ "..="
-                                                                                                                                                                                                                    RANGE_EXPR
-                                                                                                                                                                                                                      DOT2EQ "..="
-                                                                                                                                                                                                                      RANGE_EXPR
-                                                                                                                                                                                                                        DOT2 ".."
-                                                                                                                                                                                                                        WHITESPACE "    "
-                                                                                                                                                                                                                        RANGE_EXPR
-                                                                                                                                                                                                                          DOT2EQ "..="
-                                                                                                                                                                                                                          RANGE_EXPR
-                                                                                                                                                                                                                            DOT2EQ "..="
-                                                                                                                                                                                                                            RANGE_EXPR
-                                                                                                                                                                                                                              DOT2 ".."
-                                                                                                                                                                                                                              WHITESPACE " "
-                                                                                                                                                                                                                              RANGE_EXPR
-                                                                                                                                                                                                                                DOT2 ".."
-                                                                                                                                                                                                                                WHITESPACE "    "
-                                                                                                                                                                                                                                RANGE_EXPR
-                                                                                                                                                                                                                                  DOT2 ".."
-                                                                                                                                                                                                                                  WHITESPACE " "
-                                                                                                                                                                                                                                  RANGE_EXPR
-                                                                                                                                                                                                                                    DOT2EQ "..="
-                                                                                                                                                                                                                                    RANGE_EXPR
-                                                                                                                                                                                                                                      DOT2 ".."
-                                                                                                                                                                                                                                      WHITESPACE " "
-                                                                                                                                                                                                                                      RANGE_EXPR
-                                                                                                                                                                                                                                        DOT2 ".."
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "ktulhu"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        EXPR_STMT
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        SEMICOLON ";"
-        TUPLE_EXPR
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    VISIBILITY
-      PUB_KW "pub"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "strange"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "funny"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "what"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "zombiejesus"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "notsure"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "canttouchthis"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "angrydome"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "evil_lincoln"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "dots"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u8"
-            ARG_LIST
-              L_PAREN "("
-              LITERAL
-                INT_NUMBER "8u8"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "fishy"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "union"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "special_characters"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "punch_card"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "ktulhu"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0036_fully_qualified.rast b/crates/parser/test_data/parser/ok/0036_fully_qualified.rast
index 2aa7fffd1c5..6137b38aba3 100644
--- a/crates/parser/test_data/parser/ok/0036_fully_qualified.rast
+++ b/crates/parser/test_data/parser/ok/0036_fully_qualified.rast
@@ -1,93 +1,93 @@
-SOURCE_FILE@0..157
-  COMMENT@0..60 "// https://github.com ..."
-  WHITESPACE@60..62 "\n\n"
-  FN@62..156
-    VISIBILITY@62..65
-      PUB_KW@62..65 "pub"
-    WHITESPACE@65..66 " "
-    FN_KW@66..68 "fn"
-    WHITESPACE@68..69 " "
-    NAME@69..72
-      IDENT@69..72 "foo"
-    GENERIC_PARAM_LIST@72..85
-      L_ANGLE@72..73 "<"
-      TYPE_PARAM@73..84
-        NAME@73..74
-          IDENT@73..74 "S"
-        COLON@74..75 ":"
-        WHITESPACE@75..76 " "
-        TYPE_BOUND_LIST@76..84
-          TYPE_BOUND@76..84
-            PATH_TYPE@76..84
-              PATH@76..84
-                PATH_SEGMENT@76..84
-                  NAME_REF@76..84
-                    IDENT@76..84 "Iterator"
-      R_ANGLE@84..85 ">"
-    PARAM_LIST@85..87
-      L_PAREN@85..86 "("
-      R_PAREN@86..87 ")"
-    WHITESPACE@87..88 " "
-    RET_TYPE@88..97
-      THIN_ARROW@88..90 "->"
-      WHITESPACE@90..91 " "
-      PATH_TYPE@91..97
-        PATH@91..97
-          PATH_SEGMENT@91..97
-            NAME_REF@91..97
-              IDENT@91..97 "String"
-    WHITESPACE@97..98 "\n"
-    WHERE_CLAUSE@98..134
-      WHERE_KW@98..103 "where"
-      WHITESPACE@103..108 "\n    "
-      WHERE_PRED@108..133
-        PATH_TYPE@108..129
-          PATH@108..129
-            PATH@108..123
-              PATH_SEGMENT@108..123
-                L_ANGLE@108..109 "<"
-                PATH_TYPE@109..110
-                  PATH@109..110
-                    PATH_SEGMENT@109..110
-                      NAME_REF@109..110
-                        IDENT@109..110 "S"
-                WHITESPACE@110..111 " "
-                AS_KW@111..113 "as"
-                WHITESPACE@113..114 " "
-                PATH_TYPE@114..122
-                  PATH@114..122
-                    PATH_SEGMENT@114..122
-                      NAME_REF@114..122
-                        IDENT@114..122 "Iterator"
-                R_ANGLE@122..123 ">"
-            COLON2@123..125 "::"
-            PATH_SEGMENT@125..129
-              NAME_REF@125..129
-                IDENT@125..129 "Item"
-        COLON@129..130 ":"
-        WHITESPACE@130..131 " "
-        TYPE_BOUND_LIST@131..133
-          TYPE_BOUND@131..133
-            PATH_TYPE@131..133
-              PATH@131..133
-                PATH_SEGMENT@131..133
-                  NAME_REF@131..133
-                    IDENT@131..133 "Eq"
-      COMMA@133..134 ","
-    WHITESPACE@134..135 "\n"
-    BLOCK_EXPR@135..156
-      STMT_LIST@135..156
-        L_CURLY@135..136 "{"
-        WHITESPACE@136..141 "\n    "
-        METHOD_CALL_EXPR@141..154
-          LITERAL@141..143
-            STRING@141..143 "\"\""
-          DOT@143..144 "."
-          NAME_REF@144..152
-            IDENT@144..152 "to_owned"
-          ARG_LIST@152..154
-            L_PAREN@152..153 "("
-            R_PAREN@153..154 ")"
-        WHITESPACE@154..155 "\n"
-        R_CURLY@155..156 "}"
-  WHITESPACE@156..157 "\n"
+SOURCE_FILE
+  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/311"
+  WHITESPACE "\n\n"
+  FN
+    VISIBILITY
+      PUB_KW "pub"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "S"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Iterator"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "String"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH
+              PATH_SEGMENT
+                L_ANGLE "<"
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "S"
+                WHITESPACE " "
+                AS_KW "as"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Iterator"
+                R_ANGLE ">"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Item"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Eq"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        METHOD_CALL_EXPR
+          LITERAL
+            STRING "\"\""
+          DOT "."
+          NAME_REF
+            IDENT "to_owned"
+          ARG_LIST
+            L_PAREN "("
+            R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0036_fully_qualified.txt b/crates/parser/test_data/parser/ok/0036_fully_qualified.txt
deleted file mode 100644
index 6137b38aba3..00000000000
--- a/crates/parser/test_data/parser/ok/0036_fully_qualified.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-SOURCE_FILE
-  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/311"
-  WHITESPACE "\n\n"
-  FN
-    VISIBILITY
-      PUB_KW "pub"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "S"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Iterator"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "String"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH
-              PATH_SEGMENT
-                L_ANGLE "<"
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "S"
-                WHITESPACE " "
-                AS_KW "as"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Iterator"
-                R_ANGLE ">"
-            COLON2 "::"
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Item"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Eq"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        METHOD_CALL_EXPR
-          LITERAL
-            STRING "\"\""
-          DOT "."
-          NAME_REF
-            IDENT "to_owned"
-          ARG_LIST
-            L_PAREN "("
-            R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0037_mod.rast b/crates/parser/test_data/parser/ok/0037_mod.rast
index 35577272e56..fb6565f3a48 100644
--- a/crates/parser/test_data/parser/ok/0037_mod.rast
+++ b/crates/parser/test_data/parser/ok/0037_mod.rast
@@ -1,16 +1,16 @@
-SOURCE_FILE@0..93
-  COMMENT@0..60 "// https://github.com ..."
-  WHITESPACE@60..62 "\n\n"
-  COMMENT@62..70 "//! docs"
-  WHITESPACE@70..71 "\n"
-  MODULE@71..93
-    COMMENT@71..82 "// non-docs"
-    WHITESPACE@82..83 "\n"
-    MOD_KW@83..86 "mod"
-    WHITESPACE@86..87 " "
-    NAME@87..90
-      IDENT@87..90 "foo"
-    WHITESPACE@90..91 " "
-    ITEM_LIST@91..93
-      L_CURLY@91..92 "{"
-      R_CURLY@92..93 "}"
+SOURCE_FILE
+  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/357"
+  WHITESPACE "\n\n"
+  COMMENT "//! docs"
+  WHITESPACE "\n"
+  MODULE
+    COMMENT "// non-docs"
+    WHITESPACE "\n"
+    MOD_KW "mod"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    WHITESPACE " "
+    ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0037_mod.txt b/crates/parser/test_data/parser/ok/0037_mod.txt
deleted file mode 100644
index fb6565f3a48..00000000000
--- a/crates/parser/test_data/parser/ok/0037_mod.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE
-  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/357"
-  WHITESPACE "\n\n"
-  COMMENT "//! docs"
-  WHITESPACE "\n"
-  MODULE
-    COMMENT "// non-docs"
-    WHITESPACE "\n"
-    MOD_KW "mod"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    WHITESPACE " "
-    ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0038_where_pred_type.rast b/crates/parser/test_data/parser/ok/0038_where_pred_type.rast
index 09aa2e60d97..e8976304202 100644
--- a/crates/parser/test_data/parser/ok/0038_where_pred_type.rast
+++ b/crates/parser/test_data/parser/ok/0038_where_pred_type.rast
@@ -1,43 +1,43 @@
-SOURCE_FILE@0..34
-  FN@0..34
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "test"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    WHERE_CLAUSE@10..31
-      WHERE_KW@10..15 "where"
-      WHITESPACE@15..16 " "
-      WHERE_PRED@16..31
-        TUPLE_TYPE@16..26
-          L_PAREN@16..17 "("
-          PATH_TYPE@17..20
-            PATH@17..20
-              PATH_SEGMENT@17..20
-                NAME_REF@17..20
-                  IDENT@17..20 "u64"
-          COMMA@20..21 ","
-          WHITESPACE@21..22 " "
-          PATH_TYPE@22..25
-            PATH@22..25
-              PATH_SEGMENT@22..25
-                NAME_REF@22..25
-                  IDENT@22..25 "u64"
-          R_PAREN@25..26 ")"
-        COLON@26..27 ":"
-        WHITESPACE@27..28 " "
-        TYPE_BOUND_LIST@28..31
-          TYPE_BOUND@28..31
-            PATH_TYPE@28..31
-              PATH@28..31
-                PATH_SEGMENT@28..31
-                  NAME_REF@28..31
-                    IDENT@28..31 "Foo"
-    WHITESPACE@31..32 " "
-    BLOCK_EXPR@32..34
-      STMT_LIST@32..34
-        L_CURLY@32..33 "{"
-        R_CURLY@33..34 "}"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "test"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        TUPLE_TYPE
+          L_PAREN "("
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "u64"
+          COMMA ","
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "u64"
+          R_PAREN ")"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Foo"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0038_where_pred_type.txt b/crates/parser/test_data/parser/ok/0038_where_pred_type.txt
deleted file mode 100644
index e8976304202..00000000000
--- a/crates/parser/test_data/parser/ok/0038_where_pred_type.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "test"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        TUPLE_TYPE
-          L_PAREN "("
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "u64"
-          COMMA ","
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "u64"
-          R_PAREN ")"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Foo"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0039_raw_fn_item.rast b/crates/parser/test_data/parser/ok/0039_raw_fn_item.rast
index 186dea82d4d..2eeed781c1a 100644
--- a/crates/parser/test_data/parser/ok/0039_raw_fn_item.rast
+++ b/crates/parser/test_data/parser/ok/0039_raw_fn_item.rast
@@ -1,16 +1,16 @@
-SOURCE_FILE@0..15
-  FN@0..14
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..8
-      IDENT@3..8 "r#foo"
-    PARAM_LIST@8..10
-      L_PAREN@8..9 "("
-      R_PAREN@9..10 ")"
-    WHITESPACE@10..11 " "
-    BLOCK_EXPR@11..14
-      STMT_LIST@11..14
-        L_CURLY@11..12 "{"
-        WHITESPACE@12..13 "\n"
-        R_CURLY@13..14 "}"
-  WHITESPACE@14..15 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "r#foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0039_raw_fn_item.txt b/crates/parser/test_data/parser/ok/0039_raw_fn_item.txt
deleted file mode 100644
index 2eeed781c1a..00000000000
--- a/crates/parser/test_data/parser/ok/0039_raw_fn_item.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "r#foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0040_raw_struct_item_field.rast b/crates/parser/test_data/parser/ok/0040_raw_struct_item_field.rast
index 8cfc14f491c..ceb918420f5 100644
--- a/crates/parser/test_data/parser/ok/0040_raw_struct_item_field.rast
+++ b/crates/parser/test_data/parser/ok/0040_raw_struct_item_field.rast
@@ -1,22 +1,22 @@
-SOURCE_FILE@0..27
-  STRUCT@0..27
-    STRUCT_KW@0..6 "struct"
-    WHITESPACE@6..7 " "
-    NAME@7..8
-      IDENT@7..8 "S"
-    WHITESPACE@8..9 " "
-    RECORD_FIELD_LIST@9..27
-      L_CURLY@9..10 "{"
-      WHITESPACE@10..15 "\n    "
-      RECORD_FIELD@15..25
-        NAME@15..20
-          IDENT@15..20 "r#foo"
-        COLON@20..21 ":"
-        WHITESPACE@21..22 " "
-        PATH_TYPE@22..25
-          PATH@22..25
-            PATH_SEGMENT@22..25
-              NAME_REF@22..25
-                IDENT@22..25 "u32"
-      WHITESPACE@25..26 "\n"
-      R_CURLY@26..27 "}"
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "S"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      RECORD_FIELD
+        NAME
+          IDENT "r#foo"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u32"
+      WHITESPACE "\n"
+      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0040_raw_struct_item_field.txt b/crates/parser/test_data/parser/ok/0040_raw_struct_item_field.txt
deleted file mode 100644
index ceb918420f5..00000000000
--- a/crates/parser/test_data/parser/ok/0040_raw_struct_item_field.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "S"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      RECORD_FIELD
-        NAME
-          IDENT "r#foo"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u32"
-      WHITESPACE "\n"
-      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0041_raw_keywords.rast b/crates/parser/test_data/parser/ok/0041_raw_keywords.rast
index a8971b466e6..dacf0ce7426 100644
--- a/crates/parser/test_data/parser/ok/0041_raw_keywords.rast
+++ b/crates/parser/test_data/parser/ok/0041_raw_keywords.rast
@@ -1,50 +1,50 @@
-SOURCE_FILE@0..59
-  FN@0..59
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..59
-      STMT_LIST@9..59
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..11 " "
-        LET_STMT@11..29
-          LET_KW@11..14 "let"
-          WHITESPACE@14..15 " "
-          IDENT_PAT@15..23
-            NAME@15..23
-              IDENT@15..23 "r#struct"
-          WHITESPACE@23..24 " "
-          EQ@24..25 "="
-          WHITESPACE@25..26 " "
-          LITERAL@26..28
-            INT_NUMBER@26..28 "92"
-          SEMICOLON@28..29 ";"
-        WHITESPACE@29..30 " "
-        LET_STMT@30..57
-          LET_KW@30..33 "let"
-          WHITESPACE@33..34 " "
-          IDENT_PAT@34..41
-            NAME@34..41
-              IDENT@34..41 "r#trait"
-          WHITESPACE@41..42 " "
-          EQ@42..43 "="
-          WHITESPACE@43..44 " "
-          BIN_EXPR@44..56
-            PATH_EXPR@44..52
-              PATH@44..52
-                PATH_SEGMENT@44..52
-                  NAME_REF@44..52
-                    IDENT@44..52 "r#struct"
-            WHITESPACE@52..53 " "
-            STAR@53..54 "*"
-            WHITESPACE@54..55 " "
-            LITERAL@55..56
-              INT_NUMBER@55..56 "2"
-          SEMICOLON@56..57 ";"
-        WHITESPACE@57..58 " "
-        R_CURLY@58..59 "}"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "r#struct"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "92"
+          SEMICOLON ";"
+        WHITESPACE " "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "r#trait"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "r#struct"
+            WHITESPACE " "
+            STAR "*"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE " "
+        R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0041_raw_keywords.txt b/crates/parser/test_data/parser/ok/0041_raw_keywords.txt
deleted file mode 100644
index dacf0ce7426..00000000000
--- a/crates/parser/test_data/parser/ok/0041_raw_keywords.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "r#struct"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "92"
-          SEMICOLON ";"
-        WHITESPACE " "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "r#trait"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "r#struct"
-            WHITESPACE " "
-            STAR "*"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE " "
-        R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0042_ufcs_call_list.rast b/crates/parser/test_data/parser/ok/0042_ufcs_call_list.rast
index aa7a4dc7456..ff2121a58a6 100644
--- a/crates/parser/test_data/parser/ok/0042_ufcs_call_list.rast
+++ b/crates/parser/test_data/parser/ok/0042_ufcs_call_list.rast
@@ -1,126 +1,126 @@
-SOURCE_FILE@0..199
-  COMMENT@0..60 "// https://github.com ..."
-  WHITESPACE@60..62 "\n\n"
-  STRUCT@62..73
-    STRUCT_KW@62..68 "struct"
-    WHITESPACE@68..69 " "
-    NAME@69..72
-      IDENT@69..72 "Foo"
-    SEMICOLON@72..73 ";"
-  WHITESPACE@73..75 "\n\n"
-  IMPL@75..141
-    IMPL_KW@75..79 "impl"
-    WHITESPACE@79..80 " "
-    PATH_TYPE@80..83
-      PATH@80..83
-        PATH_SEGMENT@80..83
-          NAME_REF@80..83
-            IDENT@80..83 "Foo"
-    WHITESPACE@83..84 " "
-    ASSOC_ITEM_LIST@84..141
-      L_CURLY@84..85 "{"
-      WHITESPACE@85..90 "\n    "
-      FN@90..139
-        FN_KW@90..92 "fn"
-        WHITESPACE@92..93 " "
-        NAME@93..96
-          IDENT@93..96 "bar"
-        PARAM_LIST@96..98
-          L_PAREN@96..97 "("
-          R_PAREN@97..98 ")"
-        WHITESPACE@98..99 " "
-        RET_TYPE@99..106
-          THIN_ARROW@99..101 "->"
-          WHITESPACE@101..102 " "
-          PATH_TYPE@102..106
-            PATH@102..106
-              PATH_SEGMENT@102..106
-                NAME_REF@102..106
-                  IDENT@102..106 "bool"
-        WHITESPACE@106..107 " "
-        BLOCK_EXPR@107..139
-          STMT_LIST@107..139
-            L_CURLY@107..108 "{"
-            WHITESPACE@108..117 "\n        "
-            MACRO_CALL@117..133
-              PATH@117..130
-                PATH_SEGMENT@117..130
-                  NAME_REF@117..130
-                    IDENT@117..130 "unimplemented"
-              BANG@130..131 "!"
-              TOKEN_TREE@131..133
-                L_PAREN@131..132 "("
-                R_PAREN@132..133 ")"
-            WHITESPACE@133..138 "\n    "
-            R_CURLY@138..139 "}"
-      WHITESPACE@139..140 "\n"
-      R_CURLY@140..141 "}"
-  WHITESPACE@141..143 "\n\n"
-  FN@143..161
-    FN_KW@143..145 "fn"
-    WHITESPACE@145..146 " "
-    NAME@146..149
-      IDENT@146..149 "baz"
-    PARAM_LIST@149..158
-      L_PAREN@149..150 "("
-      PARAM@150..157
-        WILDCARD_PAT@150..151
-          UNDERSCORE@150..151 "_"
-        COLON@151..152 ":"
-        WHITESPACE@152..153 " "
-        PATH_TYPE@153..157
-          PATH@153..157
-            PATH_SEGMENT@153..157
-              NAME_REF@153..157
-                IDENT@153..157 "bool"
-      R_PAREN@157..158 ")"
-    WHITESPACE@158..159 " "
-    BLOCK_EXPR@159..161
-      STMT_LIST@159..161
-        L_CURLY@159..160 "{"
-        R_CURLY@160..161 "}"
-  WHITESPACE@161..163 "\n\n"
-  FN@163..198
-    FN_KW@163..165 "fn"
-    WHITESPACE@165..166 " "
-    NAME@166..170
-      IDENT@166..170 "main"
-    PARAM_LIST@170..172
-      L_PAREN@170..171 "("
-      R_PAREN@171..172 ")"
-    WHITESPACE@172..173 " "
-    BLOCK_EXPR@173..198
-      STMT_LIST@173..198
-        L_CURLY@173..174 "{"
-        WHITESPACE@174..179 "\n    "
-        CALL_EXPR@179..196
-          PATH_EXPR@179..182
-            PATH@179..182
-              PATH_SEGMENT@179..182
-                NAME_REF@179..182
-                  IDENT@179..182 "baz"
-          ARG_LIST@182..196
-            L_PAREN@182..183 "("
-            CALL_EXPR@183..195
-              PATH_EXPR@183..193
-                PATH@183..193
-                  PATH@183..188
-                    PATH_SEGMENT@183..188
-                      L_ANGLE@183..184 "<"
-                      PATH_TYPE@184..187
-                        PATH@184..187
-                          PATH_SEGMENT@184..187
-                            NAME_REF@184..187
-                              IDENT@184..187 "Foo"
-                      R_ANGLE@187..188 ">"
-                  COLON2@188..190 "::"
-                  PATH_SEGMENT@190..193
-                    NAME_REF@190..193
-                      IDENT@190..193 "bar"
-              ARG_LIST@193..195
-                L_PAREN@193..194 "("
-                R_PAREN@194..195 ")"
-            R_PAREN@195..196 ")"
-        WHITESPACE@196..197 "\n"
-        R_CURLY@197..198 "}"
-  WHITESPACE@198..199 "\n"
+SOURCE_FILE
+  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/596"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "bar"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "bool"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            MACRO_CALL
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "unimplemented"
+              BANG "!"
+              TOKEN_TREE
+                L_PAREN "("
+                R_PAREN ")"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "baz"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        WILDCARD_PAT
+          UNDERSCORE "_"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "bool"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        CALL_EXPR
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "baz"
+          ARG_LIST
+            L_PAREN "("
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH
+                    PATH_SEGMENT
+                      L_ANGLE "<"
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Foo"
+                      R_ANGLE ">"
+                  COLON2 "::"
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "bar"
+              ARG_LIST
+                L_PAREN "("
+                R_PAREN ")"
+            R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0042_ufcs_call_list.txt b/crates/parser/test_data/parser/ok/0042_ufcs_call_list.txt
deleted file mode 100644
index ff2121a58a6..00000000000
--- a/crates/parser/test_data/parser/ok/0042_ufcs_call_list.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-SOURCE_FILE
-  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/596"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "bar"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "bool"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            MACRO_CALL
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "unimplemented"
-              BANG "!"
-              TOKEN_TREE
-                L_PAREN "("
-                R_PAREN ")"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "baz"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        WILDCARD_PAT
-          UNDERSCORE "_"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "bool"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        CALL_EXPR
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "baz"
-          ARG_LIST
-            L_PAREN "("
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH
-                    PATH_SEGMENT
-                      L_ANGLE "<"
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Foo"
-                      R_ANGLE ">"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "bar"
-              ARG_LIST
-                L_PAREN "("
-                R_PAREN ")"
-            R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0043_complex_assignment.rast b/crates/parser/test_data/parser/ok/0043_complex_assignment.rast
index 12d776c7bf9..f9e5a51ae22 100644
--- a/crates/parser/test_data/parser/ok/0043_complex_assignment.rast
+++ b/crates/parser/test_data/parser/ok/0043_complex_assignment.rast
@@ -1,110 +1,110 @@
-SOURCE_FILE@0..160
-  COMMENT@0..60 "// https://github.com ..."
-  WHITESPACE@60..62 "\n\n"
-  STRUCT@62..90
-    STRUCT_KW@62..68 "struct"
-    WHITESPACE@68..69 " "
-    NAME@69..73
-      IDENT@69..73 "Repr"
-    WHITESPACE@73..74 " "
-    RECORD_FIELD_LIST@74..90
-      L_CURLY@74..75 "{"
-      WHITESPACE@75..76 " "
-      RECORD_FIELD@76..88
-        NAME@76..79
-          IDENT@76..79 "raw"
-        COLON@79..80 ":"
-        WHITESPACE@80..81 " "
-        ARRAY_TYPE@81..88
-          L_BRACK@81..82 "["
-          PATH_TYPE@82..84
-            PATH@82..84
-              PATH_SEGMENT@82..84
-                NAME_REF@82..84
-                  IDENT@82..84 "u8"
-          SEMICOLON@84..85 ";"
-          WHITESPACE@85..86 " "
-          LITERAL@86..87
-            INT_NUMBER@86..87 "1"
-          R_BRACK@87..88 "]"
-      WHITESPACE@88..89 " "
-      R_CURLY@89..90 "}"
-  WHITESPACE@90..92 "\n\n"
-  FN@92..159
-    FN_KW@92..94 "fn"
-    WHITESPACE@94..95 " "
-    NAME@95..98
-      IDENT@95..98 "abc"
-    PARAM_LIST@98..100
-      L_PAREN@98..99 "("
-      R_PAREN@99..100 ")"
-    WHITESPACE@100..101 " "
-    BLOCK_EXPR@101..159
-      STMT_LIST@101..159
-        L_CURLY@101..102 "{"
-        WHITESPACE@102..107 "\n    "
-        EXPR_STMT@107..136
-          BIN_EXPR@107..135
-            INDEX_EXPR@107..131
-              FIELD_EXPR@107..128
-                RECORD_EXPR@107..124
-                  PATH@107..111
-                    PATH_SEGMENT@107..111
-                      NAME_REF@107..111
-                        IDENT@107..111 "Repr"
-                  WHITESPACE@111..112 " "
-                  RECORD_EXPR_FIELD_LIST@112..124
-                    L_CURLY@112..113 "{"
-                    WHITESPACE@113..114 " "
-                    RECORD_EXPR_FIELD@114..122
-                      NAME_REF@114..117
-                        IDENT@114..117 "raw"
-                      COLON@117..118 ":"
-                      WHITESPACE@118..119 " "
-                      ARRAY_EXPR@119..122
-                        L_BRACK@119..120 "["
-                        LITERAL@120..121
-                          INT_NUMBER@120..121 "0"
-                        R_BRACK@121..122 "]"
-                    WHITESPACE@122..123 " "
-                    R_CURLY@123..124 "}"
-                DOT@124..125 "."
-                NAME_REF@125..128
-                  IDENT@125..128 "raw"
-              L_BRACK@128..129 "["
-              LITERAL@129..130
-                INT_NUMBER@129..130 "0"
-              R_BRACK@130..131 "]"
-            WHITESPACE@131..132 " "
-            EQ@132..133 "="
-            WHITESPACE@133..134 " "
-            LITERAL@134..135
-              INT_NUMBER@134..135 "0"
-          SEMICOLON@135..136 ";"
-        WHITESPACE@136..141 "\n    "
-        EXPR_STMT@141..157
-          CALL_EXPR@141..156
-            RECORD_EXPR@141..154
-              PATH@141..145
-                PATH_SEGMENT@141..145
-                  NAME_REF@141..145
-                    IDENT@141..145 "Repr"
-              RECORD_EXPR_FIELD_LIST@145..154
-                L_CURLY@145..146 "{"
-                RECORD_EXPR_FIELD@146..153
-                  NAME_REF@146..149
-                    IDENT@146..149 "raw"
-                  COLON@149..150 ":"
-                  ARRAY_EXPR@150..153
-                    L_BRACK@150..151 "["
-                    LITERAL@151..152
-                      INT_NUMBER@151..152 "0"
-                    R_BRACK@152..153 "]"
-                R_CURLY@153..154 "}"
-            ARG_LIST@154..156
-              L_PAREN@154..155 "("
-              R_PAREN@155..156 ")"
-          SEMICOLON@156..157 ";"
-        WHITESPACE@157..158 "\n"
-        R_CURLY@158..159 "}"
-  WHITESPACE@159..160 "\n"
+SOURCE_FILE
+  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/674"
+  WHITESPACE "\n\n"
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "Repr"
+    WHITESPACE " "
+    RECORD_FIELD_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      RECORD_FIELD
+        NAME
+          IDENT "raw"
+        COLON ":"
+        WHITESPACE " "
+        ARRAY_TYPE
+          L_BRACK "["
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "u8"
+          SEMICOLON ";"
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "1"
+          R_BRACK "]"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "abc"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            INDEX_EXPR
+              FIELD_EXPR
+                RECORD_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Repr"
+                  WHITESPACE " "
+                  RECORD_EXPR_FIELD_LIST
+                    L_CURLY "{"
+                    WHITESPACE " "
+                    RECORD_EXPR_FIELD
+                      NAME_REF
+                        IDENT "raw"
+                      COLON ":"
+                      WHITESPACE " "
+                      ARRAY_EXPR
+                        L_BRACK "["
+                        LITERAL
+                          INT_NUMBER "0"
+                        R_BRACK "]"
+                    WHITESPACE " "
+                    R_CURLY "}"
+                DOT "."
+                NAME_REF
+                  IDENT "raw"
+              L_BRACK "["
+              LITERAL
+                INT_NUMBER "0"
+              R_BRACK "]"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "0"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            RECORD_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Repr"
+              RECORD_EXPR_FIELD_LIST
+                L_CURLY "{"
+                RECORD_EXPR_FIELD
+                  NAME_REF
+                    IDENT "raw"
+                  COLON ":"
+                  ARRAY_EXPR
+                    L_BRACK "["
+                    LITERAL
+                      INT_NUMBER "0"
+                    R_BRACK "]"
+                R_CURLY "}"
+            ARG_LIST
+              L_PAREN "("
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0043_complex_assignment.txt b/crates/parser/test_data/parser/ok/0043_complex_assignment.txt
deleted file mode 100644
index f9e5a51ae22..00000000000
--- a/crates/parser/test_data/parser/ok/0043_complex_assignment.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-SOURCE_FILE
-  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/674"
-  WHITESPACE "\n\n"
-  STRUCT
-    STRUCT_KW "struct"
-    WHITESPACE " "
-    NAME
-      IDENT "Repr"
-    WHITESPACE " "
-    RECORD_FIELD_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      RECORD_FIELD
-        NAME
-          IDENT "raw"
-        COLON ":"
-        WHITESPACE " "
-        ARRAY_TYPE
-          L_BRACK "["
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "u8"
-          SEMICOLON ";"
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "1"
-          R_BRACK "]"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "abc"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            INDEX_EXPR
-              FIELD_EXPR
-                RECORD_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Repr"
-                  WHITESPACE " "
-                  RECORD_EXPR_FIELD_LIST
-                    L_CURLY "{"
-                    WHITESPACE " "
-                    RECORD_EXPR_FIELD
-                      NAME_REF
-                        IDENT "raw"
-                      COLON ":"
-                      WHITESPACE " "
-                      ARRAY_EXPR
-                        L_BRACK "["
-                        LITERAL
-                          INT_NUMBER "0"
-                        R_BRACK "]"
-                    WHITESPACE " "
-                    R_CURLY "}"
-                DOT "."
-                NAME_REF
-                  IDENT "raw"
-              L_BRACK "["
-              LITERAL
-                INT_NUMBER "0"
-              R_BRACK "]"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "0"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            RECORD_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Repr"
-              RECORD_EXPR_FIELD_LIST
-                L_CURLY "{"
-                RECORD_EXPR_FIELD
-                  NAME_REF
-                    IDENT "raw"
-                  COLON ":"
-                  ARRAY_EXPR
-                    L_BRACK "["
-                    LITERAL
-                      INT_NUMBER "0"
-                    R_BRACK "]"
-                R_CURLY "}"
-            ARG_LIST
-              L_PAREN "("
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0044_let_attrs.rast b/crates/parser/test_data/parser/ok/0044_let_attrs.rast
index 80c1d6b87af..6c637bac428 100644
--- a/crates/parser/test_data/parser/ok/0044_let_attrs.rast
+++ b/crates/parser/test_data/parser/ok/0044_let_attrs.rast
@@ -1,77 +1,77 @@
-SOURCE_FILE@0..166
-  FN@0..165
-    COMMENT@0..60 "// https://github.com ..."
-    WHITESPACE@60..61 "\n"
-    FN_KW@61..63 "fn"
-    WHITESPACE@63..64 " "
-    NAME@64..68
-      IDENT@64..68 "main"
-    PARAM_LIST@68..70
-      L_PAREN@68..69 "("
-      R_PAREN@69..70 ")"
-    WHITESPACE@70..71 " "
-    BLOCK_EXPR@71..165
-      STMT_LIST@71..165
-        L_CURLY@71..72 "{"
-        WHITESPACE@72..77 "\n    "
-        LET_STMT@77..163
-          ATTR@77..106
-            POUND@77..78 "#"
-            L_BRACK@78..79 "["
-            META@79..105
-              PATH@79..82
-                PATH_SEGMENT@79..82
-                  NAME_REF@79..82
-                    IDENT@79..82 "cfg"
-              TOKEN_TREE@82..105
-                L_PAREN@82..83 "("
-                IDENT@83..90 "feature"
-                WHITESPACE@90..91 " "
-                EQ@91..92 "="
-                WHITESPACE@92..93 " "
-                STRING@93..104 "\"backtrace\""
-                R_PAREN@104..105 ")"
-            R_BRACK@105..106 "]"
-          WHITESPACE@106..111 "\n    "
-          LET_KW@111..114 "let"
-          WHITESPACE@114..115 " "
-          IDENT_PAT@115..124
-            NAME@115..124
-              IDENT@115..124 "exit_code"
-          WHITESPACE@124..125 " "
-          EQ@125..126 "="
-          WHITESPACE@126..127 " "
-          CALL_EXPR@127..162
-            PATH_EXPR@127..146
-              PATH@127..146
-                PATH@127..132
-                  PATH_SEGMENT@127..132
-                    NAME_REF@127..132
-                      IDENT@127..132 "panic"
-                COLON2@132..134 "::"
-                PATH_SEGMENT@134..146
-                  NAME_REF@134..146
-                    IDENT@134..146 "catch_unwind"
-            ARG_LIST@146..162
-              L_PAREN@146..147 "("
-              CLOSURE_EXPR@147..161
-                MOVE_KW@147..151 "move"
-                WHITESPACE@151..152 " "
-                PARAM_LIST@152..154
-                  PIPE@152..153 "|"
-                  PIPE@153..154 "|"
-                WHITESPACE@154..155 " "
-                CALL_EXPR@155..161
-                  PATH_EXPR@155..159
-                    PATH@155..159
-                      PATH_SEGMENT@155..159
-                        NAME_REF@155..159
-                          IDENT@155..159 "main"
-                  ARG_LIST@159..161
-                    L_PAREN@159..160 "("
-                    R_PAREN@160..161 ")"
-              R_PAREN@161..162 ")"
-          SEMICOLON@162..163 ";"
-        WHITESPACE@163..164 "\n"
-        R_CURLY@164..165 "}"
-  WHITESPACE@165..166 "\n"
+SOURCE_FILE
+  FN
+    COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/677"
+    WHITESPACE "\n"
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          ATTR
+            POUND "#"
+            L_BRACK "["
+            META
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "cfg"
+              TOKEN_TREE
+                L_PAREN "("
+                IDENT "feature"
+                WHITESPACE " "
+                EQ "="
+                WHITESPACE " "
+                STRING "\"backtrace\""
+                R_PAREN ")"
+            R_BRACK "]"
+          WHITESPACE "\n    "
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "exit_code"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "panic"
+                COLON2 "::"
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "catch_unwind"
+            ARG_LIST
+              L_PAREN "("
+              CLOSURE_EXPR
+                MOVE_KW "move"
+                WHITESPACE " "
+                PARAM_LIST
+                  PIPE "|"
+                  PIPE "|"
+                WHITESPACE " "
+                CALL_EXPR
+                  PATH_EXPR
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "main"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0044_let_attrs.txt b/crates/parser/test_data/parser/ok/0044_let_attrs.txt
deleted file mode 100644
index 6c637bac428..00000000000
--- a/crates/parser/test_data/parser/ok/0044_let_attrs.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-SOURCE_FILE
-  FN
-    COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/677"
-    WHITESPACE "\n"
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          ATTR
-            POUND "#"
-            L_BRACK "["
-            META
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "cfg"
-              TOKEN_TREE
-                L_PAREN "("
-                IDENT "feature"
-                WHITESPACE " "
-                EQ "="
-                WHITESPACE " "
-                STRING "\"backtrace\""
-                R_PAREN ")"
-            R_BRACK "]"
-          WHITESPACE "\n    "
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "exit_code"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "panic"
-                COLON2 "::"
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "catch_unwind"
-            ARG_LIST
-              L_PAREN "("
-              CLOSURE_EXPR
-                MOVE_KW "move"
-                WHITESPACE " "
-                PARAM_LIST
-                  PIPE "|"
-                  PIPE "|"
-                WHITESPACE " "
-                CALL_EXPR
-                  PATH_EXPR
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "main"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0045_block_attrs.rast b/crates/parser/test_data/parser/ok/0045_block_attrs.rast
index a45f88def1e..9684bb11cd8 100644
--- a/crates/parser/test_data/parser/ok/0045_block_attrs.rast
+++ b/crates/parser/test_data/parser/ok/0045_block_attrs.rast
@@ -1,230 +1,230 @@
-SOURCE_FILE@0..764
-  FN@0..461
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..8
-      IDENT@3..8 "inner"
-    PARAM_LIST@8..10
-      L_PAREN@8..9 "("
-      R_PAREN@9..10 ")"
-    WHITESPACE@10..11 " "
-    BLOCK_EXPR@11..461
-      STMT_LIST@11..461
-        L_CURLY@11..12 "{"
-        WHITESPACE@12..17 "\n    "
-        ATTR@17..57
-          POUND@17..18 "#"
-          BANG@18..19 "!"
-          L_BRACK@19..20 "["
-          META@20..56
-            PATH@20..23
-              PATH_SEGMENT@20..23
-                NAME_REF@20..23
-                  IDENT@20..23 "doc"
-            TOKEN_TREE@23..56
-              L_PAREN@23..24 "("
-              STRING@24..55 "\"Inner attributes all ..."
-              R_PAREN@55..56 ")"
-          R_BRACK@56..57 "]"
-        WHITESPACE@57..62 "\n    "
-        COMMENT@62..97 "//! As are ModuleDoc  ..."
-        WHITESPACE@97..102 "\n    "
-        EXPR_STMT@102..295
-          BLOCK_EXPR@102..294
-            STMT_LIST@102..294
-              L_CURLY@102..103 "{"
-              WHITESPACE@103..112 "\n        "
-              ATTR@112..180
-                POUND@112..113 "#"
-                BANG@113..114 "!"
-                L_BRACK@114..115 "["
-                META@115..179
-                  PATH@115..118
-                    PATH_SEGMENT@115..118
-                      NAME_REF@115..118
-                        IDENT@115..118 "doc"
-                  TOKEN_TREE@118..179
-                    L_PAREN@118..119 "("
-                    STRING@119..178 "\"Inner attributes are ..."
-                    R_PAREN@178..179 ")"
-                R_BRACK@179..180 "]"
-              WHITESPACE@180..189 "\n        "
-              ATTR@189..244
-                POUND@189..190 "#"
-                BANG@190..191 "!"
-                L_BRACK@191..192 "["
-                META@192..243
-                  PATH@192..195
-                    PATH_SEGMENT@192..195
-                      NAME_REF@192..195
-                        IDENT@192..195 "doc"
-                  TOKEN_TREE@195..243
-                    L_PAREN@195..196 "("
-                    STRING@196..242 "\"Being validated is n ..."
-                    R_PAREN@242..243 ")"
-                R_BRACK@243..244 "]"
-              WHITESPACE@244..253 "\n        "
-              COMMENT@253..288 "//! As are ModuleDoc  ..."
-              WHITESPACE@288..293 "\n    "
-              R_CURLY@293..294 "}"
-          SEMICOLON@294..295 ";"
-        WHITESPACE@295..300 "\n    "
-        BLOCK_EXPR@300..459
-          STMT_LIST@300..459
-            L_CURLY@300..301 "{"
-            WHITESPACE@301..310 "\n        "
-            ATTR@310..409
-              POUND@310..311 "#"
-              BANG@311..312 "!"
-              L_BRACK@312..313 "["
-              META@313..408
-                PATH@313..316
-                  PATH_SEGMENT@313..316
-                    NAME_REF@313..316
-                      IDENT@313..316 "doc"
-                TOKEN_TREE@316..408
-                  L_PAREN@316..317 "("
-                  STRING@317..407 "\"Inner attributes are ..."
-                  R_PAREN@407..408 ")"
-              R_BRACK@408..409 "]"
-            WHITESPACE@409..418 "\n        "
-            COMMENT@418..453 "//! As are ModuleDoc  ..."
-            WHITESPACE@453..458 "\n    "
-            R_CURLY@458..459 "}"
-        WHITESPACE@459..460 "\n"
-        R_CURLY@460..461 "}"
-  WHITESPACE@461..463 "\n\n"
-  FN@463..539
-    FN_KW@463..465 "fn"
-    WHITESPACE@465..466 " "
-    NAME@466..471
-      IDENT@466..471 "outer"
-    PARAM_LIST@471..473
-      L_PAREN@471..472 "("
-      R_PAREN@472..473 ")"
-    WHITESPACE@473..474 " "
-    BLOCK_EXPR@474..539
-      STMT_LIST@474..539
-        L_CURLY@474..475 "{"
-        WHITESPACE@475..480 "\n    "
-        LET_STMT@480..537
-          LET_KW@480..483 "let"
-          WHITESPACE@483..484 " "
-          WILDCARD_PAT@484..485
-            UNDERSCORE@484..485 "_"
-          WHITESPACE@485..486 " "
-          EQ@486..487 "="
-          WHITESPACE@487..488 " "
-          BLOCK_EXPR@488..536
-            ATTR@488..533
-              POUND@488..489 "#"
-              L_BRACK@489..490 "["
-              META@490..532
-                PATH@490..493
-                  PATH_SEGMENT@490..493
-                    NAME_REF@490..493
-                      IDENT@490..493 "doc"
-                TOKEN_TREE@493..532
-                  L_PAREN@493..494 "("
-                  STRING@494..531 "\"Outer attributes are ..."
-                  R_PAREN@531..532 ")"
-              R_BRACK@532..533 "]"
-            WHITESPACE@533..534 " "
-            STMT_LIST@534..536
-              L_CURLY@534..535 "{"
-              R_CURLY@535..536 "}"
-          SEMICOLON@536..537 ";"
-        WHITESPACE@537..538 "\n"
-        R_CURLY@538..539 "}"
-  WHITESPACE@539..541 "\n\n"
-  IMPL@541..763
-    COMMENT@541..601 "// https://github.com ..."
-    WHITESPACE@601..602 "\n"
-    IMPL_KW@602..606 "impl"
-    WHITESPACE@606..607 " "
-    PATH_TYPE@607..615
-      PATH@607..615
-        PATH_SEGMENT@607..615
-          NAME_REF@607..615
-            IDENT@607..615 "Whatever"
-    WHITESPACE@615..616 " "
-    ASSOC_ITEM_LIST@616..763
-      L_CURLY@616..617 "{"
-      WHITESPACE@617..622 "\n    "
-      FN@622..761
-        FN_KW@622..624 "fn"
-        WHITESPACE@624..625 " "
-        NAME@625..636
-          IDENT@625..636 "salsa_event"
-        PARAM_LIST@636..679
-          L_PAREN@636..637 "("
-          SELF_PARAM@637..642
-            AMP@637..638 "&"
-            NAME@638..642
-              SELF_KW@638..642 "self"
-          COMMA@642..643 ","
-          WHITESPACE@643..644 " "
-          PARAM@644..678
-            IDENT_PAT@644..652
-              NAME@644..652
-                IDENT@644..652 "event_fn"
-            COLON@652..653 ":"
-            WHITESPACE@653..654 " "
-            IMPL_TRAIT_TYPE@654..678
-              IMPL_KW@654..658 "impl"
-              WHITESPACE@658..659 " "
-              TYPE_BOUND_LIST@659..678
-                TYPE_BOUND@659..678
-                  PATH_TYPE@659..678
-                    PATH@659..678
-                      PATH_SEGMENT@659..678
-                        NAME_REF@659..661
-                          IDENT@659..661 "Fn"
-                        PARAM_LIST@661..663
-                          L_PAREN@661..662 "("
-                          R_PAREN@662..663 ")"
-                        WHITESPACE@663..664 " "
-                        RET_TYPE@664..678
-                          THIN_ARROW@664..666 "->"
-                          WHITESPACE@666..667 " "
-                          PATH_TYPE@667..678
-                            PATH@667..678
-                              PATH_SEGMENT@667..678
-                                NAME_REF@667..672
-                                  IDENT@667..672 "Event"
-                                GENERIC_ARG_LIST@672..678
-                                  L_ANGLE@672..673 "<"
-                                  TYPE_ARG@673..677
-                                    PATH_TYPE@673..677
-                                      PATH@673..677
-                                        PATH_SEGMENT@673..677
-                                          NAME_REF@673..677
-                                            IDENT@673..677 "Self"
-                                  R_ANGLE@677..678 ">"
-          R_PAREN@678..679 ")"
-        WHITESPACE@679..680 " "
-        BLOCK_EXPR@680..761
-          STMT_LIST@680..761
-            L_CURLY@680..681 "{"
-            WHITESPACE@681..690 "\n        "
-            ATTR@690..717
-              POUND@690..691 "#"
-              BANG@691..692 "!"
-              L_BRACK@692..693 "["
-              META@693..716
-                PATH@693..698
-                  PATH_SEGMENT@693..698
-                    NAME_REF@693..698
-                      IDENT@693..698 "allow"
-                TOKEN_TREE@698..716
-                  L_PAREN@698..699 "("
-                  IDENT@699..715 "unused_variables"
-                  R_PAREN@715..716 ")"
-              R_BRACK@716..717 "]"
-            WHITESPACE@717..718 " "
-            COMMENT@718..755 "// this is  `inner_at ..."
-            WHITESPACE@755..760 "\n    "
-            R_CURLY@760..761 "}"
-      WHITESPACE@761..762 "\n"
-      R_CURLY@762..763 "}"
-  WHITESPACE@763..764 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "inner"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        ATTR
+          POUND "#"
+          BANG "!"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "doc"
+            TOKEN_TREE
+              L_PAREN "("
+              STRING "\"Inner attributes allowed here\""
+              R_PAREN ")"
+          R_BRACK "]"
+        WHITESPACE "\n    "
+        COMMENT "//! As are ModuleDoc style comments"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              ATTR
+                POUND "#"
+                BANG "!"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "doc"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    STRING "\"Inner attributes are allowed in blocks used as statements\""
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              ATTR
+                POUND "#"
+                BANG "!"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "doc"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    STRING "\"Being validated is not affected by duplcates\""
+                    R_PAREN ")"
+                R_BRACK "]"
+              WHITESPACE "\n        "
+              COMMENT "//! As are ModuleDoc style comments"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            ATTR
+              POUND "#"
+              BANG "!"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "doc"
+                TOKEN_TREE
+                  L_PAREN "("
+                  STRING "\"Inner attributes are allowed in blocks when they are the last statement of another block\""
+                  R_PAREN ")"
+              R_BRACK "]"
+            WHITESPACE "\n        "
+            COMMENT "//! As are ModuleDoc style comments"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "outer"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          WILDCARD_PAT
+            UNDERSCORE "_"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          BLOCK_EXPR
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "doc"
+                TOKEN_TREE
+                  L_PAREN "("
+                  STRING "\"Outer attributes are always allowed\""
+                  R_PAREN ")"
+              R_BRACK "]"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  IMPL
+    COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/689"
+    WHITESPACE "\n"
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Whatever"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "salsa_event"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            AMP "&"
+            NAME
+              SELF_KW "self"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "event_fn"
+            COLON ":"
+            WHITESPACE " "
+            IMPL_TRAIT_TYPE
+              IMPL_KW "impl"
+              WHITESPACE " "
+              TYPE_BOUND_LIST
+                TYPE_BOUND
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "Fn"
+                        PARAM_LIST
+                          L_PAREN "("
+                          R_PAREN ")"
+                        WHITESPACE " "
+                        RET_TYPE
+                          THIN_ARROW "->"
+                          WHITESPACE " "
+                          PATH_TYPE
+                            PATH
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "Event"
+                                GENERIC_ARG_LIST
+                                  L_ANGLE "<"
+                                  TYPE_ARG
+                                    PATH_TYPE
+                                      PATH
+                                        PATH_SEGMENT
+                                          NAME_REF
+                                            SELF_TYPE_KW "Self"
+                                  R_ANGLE ">"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            WHITESPACE "\n        "
+            ATTR
+              POUND "#"
+              BANG "!"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "allow"
+                TOKEN_TREE
+                  L_PAREN "("
+                  IDENT "unused_variables"
+                  R_PAREN ")"
+              R_BRACK "]"
+            WHITESPACE " "
+            COMMENT "// this is  `inner_attr` of the block"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0045_block_attrs.txt b/crates/parser/test_data/parser/ok/0045_block_attrs.txt
deleted file mode 100644
index 9684bb11cd8..00000000000
--- a/crates/parser/test_data/parser/ok/0045_block_attrs.txt
+++ /dev/null
@@ -1,230 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "inner"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        ATTR
-          POUND "#"
-          BANG "!"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "doc"
-            TOKEN_TREE
-              L_PAREN "("
-              STRING "\"Inner attributes allowed here\""
-              R_PAREN ")"
-          R_BRACK "]"
-        WHITESPACE "\n    "
-        COMMENT "//! As are ModuleDoc style comments"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              ATTR
-                POUND "#"
-                BANG "!"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "doc"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    STRING "\"Inner attributes are allowed in blocks used as statements\""
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              ATTR
-                POUND "#"
-                BANG "!"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "doc"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    STRING "\"Being validated is not affected by duplcates\""
-                    R_PAREN ")"
-                R_BRACK "]"
-              WHITESPACE "\n        "
-              COMMENT "//! As are ModuleDoc style comments"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            ATTR
-              POUND "#"
-              BANG "!"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "doc"
-                TOKEN_TREE
-                  L_PAREN "("
-                  STRING "\"Inner attributes are allowed in blocks when they are the last statement of another block\""
-                  R_PAREN ")"
-              R_BRACK "]"
-            WHITESPACE "\n        "
-            COMMENT "//! As are ModuleDoc style comments"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "outer"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          WILDCARD_PAT
-            UNDERSCORE "_"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          BLOCK_EXPR
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "doc"
-                TOKEN_TREE
-                  L_PAREN "("
-                  STRING "\"Outer attributes are always allowed\""
-                  R_PAREN ")"
-              R_BRACK "]"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  IMPL
-    COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/689"
-    WHITESPACE "\n"
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Whatever"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "salsa_event"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            AMP "&"
-            NAME
-              SELF_KW "self"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "event_fn"
-            COLON ":"
-            WHITESPACE " "
-            IMPL_TRAIT_TYPE
-              IMPL_KW "impl"
-              WHITESPACE " "
-              TYPE_BOUND_LIST
-                TYPE_BOUND
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "Fn"
-                        PARAM_LIST
-                          L_PAREN "("
-                          R_PAREN ")"
-                        WHITESPACE " "
-                        RET_TYPE
-                          THIN_ARROW "->"
-                          WHITESPACE " "
-                          PATH_TYPE
-                            PATH
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "Event"
-                                GENERIC_ARG_LIST
-                                  L_ANGLE "<"
-                                  TYPE_ARG
-                                    PATH_TYPE
-                                      PATH
-                                        PATH_SEGMENT
-                                          NAME_REF
-                                            SELF_TYPE_KW "Self"
-                                  R_ANGLE ">"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            WHITESPACE "\n        "
-            ATTR
-              POUND "#"
-              BANG "!"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "allow"
-                TOKEN_TREE
-                  L_PAREN "("
-                  IDENT "unused_variables"
-                  R_PAREN ")"
-              R_BRACK "]"
-            WHITESPACE " "
-            COMMENT "// this is  `inner_attr` of the block"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0046_extern_inner_attributes.rast b/crates/parser/test_data/parser/ok/0046_extern_inner_attributes.rast
index 854ff9d5633..4eb51cfdf09 100644
--- a/crates/parser/test_data/parser/ok/0046_extern_inner_attributes.rast
+++ b/crates/parser/test_data/parser/ok/0046_extern_inner_attributes.rast
@@ -1,29 +1,29 @@
-SOURCE_FILE@0..87
-  EXTERN_BLOCK@0..86
-    ABI@0..10
-      EXTERN_KW@0..6 "extern"
-      WHITESPACE@6..7 " "
-      STRING@7..10 "\"C\""
-    WHITESPACE@10..11 " "
-    EXTERN_ITEM_LIST@11..86
-      L_CURLY@11..12 "{"
-      WHITESPACE@12..17 "\n    "
-      COMMENT@17..42 "//! This is a doc com ..."
-      WHITESPACE@42..47 "\n    "
-      ATTR@47..84
-        POUND@47..48 "#"
-        BANG@48..49 "!"
-        L_BRACK@49..50 "["
-        META@50..83
-          PATH@50..53
-            PATH_SEGMENT@50..53
-              NAME_REF@50..53
-                IDENT@50..53 "doc"
-          TOKEN_TREE@53..83
-            L_PAREN@53..54 "("
-            STRING@54..82 "\"This is also a doc c ..."
-            R_PAREN@82..83 ")"
-        R_BRACK@83..84 "]"
-      WHITESPACE@84..85 "\n"
-      R_CURLY@85..86 "}"
-  WHITESPACE@86..87 "\n"
+SOURCE_FILE
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      COMMENT "//! This is a doc comment"
+      WHITESPACE "\n    "
+      ATTR
+        POUND "#"
+        BANG "!"
+        L_BRACK "["
+        META
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "doc"
+          TOKEN_TREE
+            L_PAREN "("
+            STRING "\"This is also a doc comment\""
+            R_PAREN ")"
+        R_BRACK "]"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0046_extern_inner_attributes.txt b/crates/parser/test_data/parser/ok/0046_extern_inner_attributes.txt
deleted file mode 100644
index 4eb51cfdf09..00000000000
--- a/crates/parser/test_data/parser/ok/0046_extern_inner_attributes.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-SOURCE_FILE
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      COMMENT "//! This is a doc comment"
-      WHITESPACE "\n    "
-      ATTR
-        POUND "#"
-        BANG "!"
-        L_BRACK "["
-        META
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "doc"
-          TOKEN_TREE
-            L_PAREN "("
-            STRING "\"This is also a doc comment\""
-            R_PAREN ")"
-        R_BRACK "]"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.rast b/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.rast
index 9b6101edb17..aecc71d4829 100644
--- a/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.rast
+++ b/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.rast
@@ -1,323 +1,323 @@
-SOURCE_FILE@0..395
-  COMMENT@0..60 "// https://github.com ..."
-  WHITESPACE@60..62 "\n\n"
-  FN@62..341
-    FN_KW@62..64 "fn"
-    WHITESPACE@64..65 " "
-    NAME@65..69
-      IDENT@65..69 "main"
-    PARAM_LIST@69..71
-      L_PAREN@69..70 "("
-      R_PAREN@70..71 ")"
-    WHITESPACE@71..72 " "
-    BLOCK_EXPR@72..341
-      STMT_LIST@72..341
-        L_CURLY@72..73 "{"
-        WHITESPACE@73..78 "\n    "
-        EXPR_STMT@78..141
-          MATCH_EXPR@78..141
-            MATCH_KW@78..83 "match"
-            WHITESPACE@83..84 " "
-            CALL_EXPR@84..92
-              PATH_EXPR@84..88
-                PATH@84..88
-                  PATH_SEGMENT@84..88
-                    NAME_REF@84..88
-                      IDENT@84..88 "Some"
-              ARG_LIST@88..92
-                L_PAREN@88..89 "("
-                PREFIX_EXPR@89..91
-                  MINUS@89..90 "-"
-                  LITERAL@90..91
-                    INT_NUMBER@90..91 "1"
-                R_PAREN@91..92 ")"
-            WHITESPACE@92..93 " "
-            MATCH_ARM_LIST@93..141
-              L_CURLY@93..94 "{"
-              WHITESPACE@94..103 "\n        "
-              MATCH_ARM@103..118
-                TUPLE_STRUCT_PAT@103..111
-                  PATH@103..107
-                    PATH_SEGMENT@103..107
-                      NAME_REF@103..107
-                        IDENT@103..107 "Some"
-                  L_PAREN@107..108 "("
-                  LITERAL_PAT@108..110
-                    MINUS@108..109 "-"
-                    LITERAL@109..110
-                      INT_NUMBER@109..110 "1"
-                  R_PAREN@110..111 ")"
-                WHITESPACE@111..112 " "
-                FAT_ARROW@112..114 "=>"
-                WHITESPACE@114..115 " "
-                TUPLE_EXPR@115..117
-                  L_PAREN@115..116 "("
-                  R_PAREN@116..117 ")"
-                COMMA@117..118 ","
-              WHITESPACE@118..127 "\n        "
-              MATCH_ARM@127..135
-                WILDCARD_PAT@127..128
-                  UNDERSCORE@127..128 "_"
-                WHITESPACE@128..129 " "
-                FAT_ARROW@129..131 "=>"
-                WHITESPACE@131..132 " "
-                TUPLE_EXPR@132..134
-                  L_PAREN@132..133 "("
-                  R_PAREN@133..134 ")"
-                COMMA@134..135 ","
-              WHITESPACE@135..140 "\n    "
-              R_CURLY@140..141 "}"
-        WHITESPACE@141..147 "\n\n    "
-        EXPR_STMT@147..222
-          MATCH_EXPR@147..222
-            MATCH_KW@147..152 "match"
-            WHITESPACE@152..153 " "
-            CALL_EXPR@153..167
-              PATH_EXPR@153..157
-                PATH@153..157
-                  PATH_SEGMENT@153..157
-                    NAME_REF@153..157
-                      IDENT@153..157 "Some"
-              ARG_LIST@157..167
-                L_PAREN@157..158 "("
-                TUPLE_EXPR@158..166
-                  L_PAREN@158..159 "("
-                  PREFIX_EXPR@159..161
-                    MINUS@159..160 "-"
-                    LITERAL@160..161
-                      INT_NUMBER@160..161 "1"
-                  COMMA@161..162 ","
-                  WHITESPACE@162..163 " "
-                  PREFIX_EXPR@163..165
-                    MINUS@163..164 "-"
-                    LITERAL@164..165
-                      INT_NUMBER@164..165 "1"
-                  R_PAREN@165..166 ")"
-                R_PAREN@166..167 ")"
-            WHITESPACE@167..168 " "
-            MATCH_ARM_LIST@168..222
-              L_CURLY@168..169 "{"
-              WHITESPACE@169..178 "\n        "
-              MATCH_ARM@178..199
-                TUPLE_STRUCT_PAT@178..192
-                  PATH@178..182
-                    PATH_SEGMENT@178..182
-                      NAME_REF@178..182
-                        IDENT@178..182 "Some"
-                  L_PAREN@182..183 "("
-                  TUPLE_PAT@183..191
-                    L_PAREN@183..184 "("
-                    LITERAL_PAT@184..186
-                      MINUS@184..185 "-"
-                      LITERAL@185..186
-                        INT_NUMBER@185..186 "1"
-                    COMMA@186..187 ","
-                    WHITESPACE@187..188 " "
-                    LITERAL_PAT@188..190
-                      MINUS@188..189 "-"
-                      LITERAL@189..190
-                        INT_NUMBER@189..190 "1"
-                    R_PAREN@190..191 ")"
-                  R_PAREN@191..192 ")"
-                WHITESPACE@192..193 " "
-                FAT_ARROW@193..195 "=>"
-                WHITESPACE@195..196 " "
-                TUPLE_EXPR@196..198
-                  L_PAREN@196..197 "("
-                  R_PAREN@197..198 ")"
-                COMMA@198..199 ","
-              WHITESPACE@199..208 "\n        "
-              MATCH_ARM@208..216
-                WILDCARD_PAT@208..209
-                  UNDERSCORE@208..209 "_"
-                WHITESPACE@209..210 " "
-                FAT_ARROW@210..212 "=>"
-                WHITESPACE@212..213 " "
-                TUPLE_EXPR@213..215
-                  L_PAREN@213..214 "("
-                  R_PAREN@214..215 ")"
-                COMMA@215..216 ","
-              WHITESPACE@216..221 "\n    "
-              R_CURLY@221..222 "}"
-        WHITESPACE@222..228 "\n\n    "
-        EXPR_STMT@228..299
-          MATCH_EXPR@228..299
-            MATCH_KW@228..233 "match"
-            WHITESPACE@233..234 " "
-            CALL_EXPR@234..246
-              PATH_EXPR@234..238
-                PATH@234..238
-                  PATH@234..235
-                    PATH_SEGMENT@234..235
-                      NAME_REF@234..235
-                        IDENT@234..235 "A"
-                  COLON2@235..237 "::"
-                  PATH_SEGMENT@237..238
-                    NAME_REF@237..238
-                      IDENT@237..238 "B"
-              ARG_LIST@238..246
-                L_PAREN@238..239 "("
-                PREFIX_EXPR@239..241
-                  MINUS@239..240 "-"
-                  LITERAL@240..241
-                    INT_NUMBER@240..241 "1"
-                COMMA@241..242 ","
-                WHITESPACE@242..243 " "
-                PREFIX_EXPR@243..245
-                  MINUS@243..244 "-"
-                  LITERAL@244..245
-                    INT_NUMBER@244..245 "1"
-                R_PAREN@245..246 ")"
-            WHITESPACE@246..247 " "
-            MATCH_ARM_LIST@247..299
-              L_CURLY@247..248 "{"
-              WHITESPACE@248..257 "\n        "
-              MATCH_ARM@257..276
-                TUPLE_STRUCT_PAT@257..269
-                  PATH@257..261
-                    PATH@257..258
-                      PATH_SEGMENT@257..258
-                        NAME_REF@257..258
-                          IDENT@257..258 "A"
-                    COLON2@258..260 "::"
-                    PATH_SEGMENT@260..261
-                      NAME_REF@260..261
-                        IDENT@260..261 "B"
-                  L_PAREN@261..262 "("
-                  LITERAL_PAT@262..264
-                    MINUS@262..263 "-"
-                    LITERAL@263..264
-                      INT_NUMBER@263..264 "1"
-                  COMMA@264..265 ","
-                  WHITESPACE@265..266 " "
-                  LITERAL_PAT@266..268
-                    MINUS@266..267 "-"
-                    LITERAL@267..268
-                      INT_NUMBER@267..268 "1"
-                  R_PAREN@268..269 ")"
-                WHITESPACE@269..270 " "
-                FAT_ARROW@270..272 "=>"
-                WHITESPACE@272..273 " "
-                TUPLE_EXPR@273..275
-                  L_PAREN@273..274 "("
-                  R_PAREN@274..275 ")"
-                COMMA@275..276 ","
-              WHITESPACE@276..285 "\n        "
-              MATCH_ARM@285..293
-                WILDCARD_PAT@285..286
-                  UNDERSCORE@285..286 "_"
-                WHITESPACE@286..287 " "
-                FAT_ARROW@287..289 "=>"
-                WHITESPACE@289..290 " "
-                TUPLE_EXPR@290..292
-                  L_PAREN@290..291 "("
-                  R_PAREN@291..292 ")"
-                COMMA@292..293 ","
-              WHITESPACE@293..298 "\n    "
-              R_CURLY@298..299 "}"
-        WHITESPACE@299..305 "\n\n    "
-        IF_EXPR@305..339
-          IF_KW@305..307 "if"
-          WHITESPACE@307..308 " "
-          CONDITION@308..331
-            LET_KW@308..311 "let"
-            WHITESPACE@311..312 " "
-            TUPLE_STRUCT_PAT@312..320
-              PATH@312..316
-                PATH_SEGMENT@312..316
-                  NAME_REF@312..316
-                    IDENT@312..316 "Some"
-              L_PAREN@316..317 "("
-              LITERAL_PAT@317..319
-                MINUS@317..318 "-"
-                LITERAL@318..319
-                  INT_NUMBER@318..319 "1"
-              R_PAREN@319..320 ")"
-            WHITESPACE@320..321 " "
-            EQ@321..322 "="
-            WHITESPACE@322..323 " "
-            CALL_EXPR@323..331
-              PATH_EXPR@323..327
-                PATH@323..327
-                  PATH_SEGMENT@323..327
-                    NAME_REF@323..327
-                      IDENT@323..327 "Some"
-              ARG_LIST@327..331
-                L_PAREN@327..328 "("
-                PREFIX_EXPR@328..330
-                  MINUS@328..329 "-"
-                  LITERAL@329..330
-                    INT_NUMBER@329..330 "1"
-                R_PAREN@330..331 ")"
-          WHITESPACE@331..332 " "
-          BLOCK_EXPR@332..339
-            STMT_LIST@332..339
-              L_CURLY@332..333 "{"
-              WHITESPACE@333..338 "\n    "
-              R_CURLY@338..339 "}"
-        WHITESPACE@339..340 "\n"
-        R_CURLY@340..341 "}"
-  WHITESPACE@341..343 "\n\n"
-  ENUM@343..367
-    ENUM_KW@343..347 "enum"
-    WHITESPACE@347..348 " "
-    NAME@348..349
-      IDENT@348..349 "A"
-    WHITESPACE@349..350 " "
-    VARIANT_LIST@350..367
-      L_CURLY@350..351 "{"
-      WHITESPACE@351..356 "\n    "
-      VARIANT@356..365
-        NAME@356..357
-          IDENT@356..357 "B"
-        TUPLE_FIELD_LIST@357..365
-          L_PAREN@357..358 "("
-          TUPLE_FIELD@358..360
-            PATH_TYPE@358..360
-              PATH@358..360
-                PATH_SEGMENT@358..360
-                  NAME_REF@358..360
-                    IDENT@358..360 "i8"
-          COMMA@360..361 ","
-          WHITESPACE@361..362 " "
-          TUPLE_FIELD@362..364
-            PATH_TYPE@362..364
-              PATH@362..364
-                PATH_SEGMENT@362..364
-                  NAME_REF@362..364
-                    IDENT@362..364 "i8"
-          R_PAREN@364..365 ")"
-      WHITESPACE@365..366 "\n"
-      R_CURLY@366..367 "}"
-  WHITESPACE@367..369 "\n\n"
-  FN@369..394
-    FN_KW@369..371 "fn"
-    WHITESPACE@371..372 " "
-    NAME@372..375
-      IDENT@372..375 "foo"
-    PARAM_LIST@375..391
-      L_PAREN@375..376 "("
-      PARAM@376..390
-        RANGE_PAT@376..386
-          LITERAL_PAT@376..380
-            MINUS@376..377 "-"
-            LITERAL@377..380
-              INT_NUMBER@377..380 "128"
-          DOT2EQ@380..383 "..="
-          LITERAL_PAT@383..386
-            LITERAL@383..386
-              INT_NUMBER@383..386 "127"
-        COLON@386..387 ":"
-        WHITESPACE@387..388 " "
-        PATH_TYPE@388..390
-          PATH@388..390
-            PATH_SEGMENT@388..390
-              NAME_REF@388..390
-                IDENT@388..390 "i8"
-      R_PAREN@390..391 ")"
-    WHITESPACE@391..392 " "
-    BLOCK_EXPR@392..394
-      STMT_LIST@392..394
-        L_CURLY@392..393 "{"
-        R_CURLY@393..394 "}"
-  WHITESPACE@394..395 "\n"
+SOURCE_FILE
+  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/972"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Some"
+              ARG_LIST
+                L_PAREN "("
+                PREFIX_EXPR
+                  MINUS "-"
+                  LITERAL
+                    INT_NUMBER "1"
+                R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                TUPLE_STRUCT_PAT
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Some"
+                  L_PAREN "("
+                  LITERAL_PAT
+                    MINUS "-"
+                    LITERAL
+                      INT_NUMBER "1"
+                  R_PAREN ")"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Some"
+              ARG_LIST
+                L_PAREN "("
+                TUPLE_EXPR
+                  L_PAREN "("
+                  PREFIX_EXPR
+                    MINUS "-"
+                    LITERAL
+                      INT_NUMBER "1"
+                  COMMA ","
+                  WHITESPACE " "
+                  PREFIX_EXPR
+                    MINUS "-"
+                    LITERAL
+                      INT_NUMBER "1"
+                  R_PAREN ")"
+                R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                TUPLE_STRUCT_PAT
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Some"
+                  L_PAREN "("
+                  TUPLE_PAT
+                    L_PAREN "("
+                    LITERAL_PAT
+                      MINUS "-"
+                      LITERAL
+                        INT_NUMBER "1"
+                    COMMA ","
+                    WHITESPACE " "
+                    LITERAL_PAT
+                      MINUS "-"
+                      LITERAL
+                        INT_NUMBER "1"
+                    R_PAREN ")"
+                  R_PAREN ")"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        EXPR_STMT
+          MATCH_EXPR
+            MATCH_KW "match"
+            WHITESPACE " "
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "A"
+                  COLON2 "::"
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "B"
+              ARG_LIST
+                L_PAREN "("
+                PREFIX_EXPR
+                  MINUS "-"
+                  LITERAL
+                    INT_NUMBER "1"
+                COMMA ","
+                WHITESPACE " "
+                PREFIX_EXPR
+                  MINUS "-"
+                  LITERAL
+                    INT_NUMBER "1"
+                R_PAREN ")"
+            WHITESPACE " "
+            MATCH_ARM_LIST
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              MATCH_ARM
+                TUPLE_STRUCT_PAT
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "A"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "B"
+                  L_PAREN "("
+                  LITERAL_PAT
+                    MINUS "-"
+                    LITERAL
+                      INT_NUMBER "1"
+                  COMMA ","
+                  WHITESPACE " "
+                  LITERAL_PAT
+                    MINUS "-"
+                    LITERAL
+                      INT_NUMBER "1"
+                  R_PAREN ")"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n        "
+              MATCH_ARM
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                FAT_ARROW "=>"
+                WHITESPACE " "
+                TUPLE_EXPR
+                  L_PAREN "("
+                  R_PAREN ")"
+                COMMA ","
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n\n    "
+        IF_EXPR
+          IF_KW "if"
+          WHITESPACE " "
+          LET_EXPR
+            LET_KW "let"
+            WHITESPACE " "
+            TUPLE_STRUCT_PAT
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Some"
+              L_PAREN "("
+              LITERAL_PAT
+                MINUS "-"
+                LITERAL
+                  INT_NUMBER "1"
+              R_PAREN ")"
+            WHITESPACE " "
+            EQ "="
+            WHITESPACE " "
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Some"
+              ARG_LIST
+                L_PAREN "("
+                PREFIX_EXPR
+                  MINUS "-"
+                  LITERAL
+                    INT_NUMBER "1"
+                R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  ENUM
+    ENUM_KW "enum"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    WHITESPACE " "
+    VARIANT_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      VARIANT
+        NAME
+          IDENT "B"
+        TUPLE_FIELD_LIST
+          L_PAREN "("
+          TUPLE_FIELD
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i8"
+          COMMA ","
+          WHITESPACE " "
+          TUPLE_FIELD
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i8"
+          R_PAREN ")"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        RANGE_PAT
+          LITERAL_PAT
+            MINUS "-"
+            LITERAL
+              INT_NUMBER "128"
+          DOT2EQ "..="
+          LITERAL_PAT
+            LITERAL
+              INT_NUMBER "127"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i8"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt b/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt
deleted file mode 100644
index aecc71d4829..00000000000
--- a/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt
+++ /dev/null
@@ -1,323 +0,0 @@
-SOURCE_FILE
-  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/issues/972"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Some"
-              ARG_LIST
-                L_PAREN "("
-                PREFIX_EXPR
-                  MINUS "-"
-                  LITERAL
-                    INT_NUMBER "1"
-                R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                TUPLE_STRUCT_PAT
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Some"
-                  L_PAREN "("
-                  LITERAL_PAT
-                    MINUS "-"
-                    LITERAL
-                      INT_NUMBER "1"
-                  R_PAREN ")"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Some"
-              ARG_LIST
-                L_PAREN "("
-                TUPLE_EXPR
-                  L_PAREN "("
-                  PREFIX_EXPR
-                    MINUS "-"
-                    LITERAL
-                      INT_NUMBER "1"
-                  COMMA ","
-                  WHITESPACE " "
-                  PREFIX_EXPR
-                    MINUS "-"
-                    LITERAL
-                      INT_NUMBER "1"
-                  R_PAREN ")"
-                R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                TUPLE_STRUCT_PAT
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Some"
-                  L_PAREN "("
-                  TUPLE_PAT
-                    L_PAREN "("
-                    LITERAL_PAT
-                      MINUS "-"
-                      LITERAL
-                        INT_NUMBER "1"
-                    COMMA ","
-                    WHITESPACE " "
-                    LITERAL_PAT
-                      MINUS "-"
-                      LITERAL
-                        INT_NUMBER "1"
-                    R_PAREN ")"
-                  R_PAREN ")"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        EXPR_STMT
-          MATCH_EXPR
-            MATCH_KW "match"
-            WHITESPACE " "
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "A"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "B"
-              ARG_LIST
-                L_PAREN "("
-                PREFIX_EXPR
-                  MINUS "-"
-                  LITERAL
-                    INT_NUMBER "1"
-                COMMA ","
-                WHITESPACE " "
-                PREFIX_EXPR
-                  MINUS "-"
-                  LITERAL
-                    INT_NUMBER "1"
-                R_PAREN ")"
-            WHITESPACE " "
-            MATCH_ARM_LIST
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              MATCH_ARM
-                TUPLE_STRUCT_PAT
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "A"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "B"
-                  L_PAREN "("
-                  LITERAL_PAT
-                    MINUS "-"
-                    LITERAL
-                      INT_NUMBER "1"
-                  COMMA ","
-                  WHITESPACE " "
-                  LITERAL_PAT
-                    MINUS "-"
-                    LITERAL
-                      INT_NUMBER "1"
-                  R_PAREN ")"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n        "
-              MATCH_ARM
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                FAT_ARROW "=>"
-                WHITESPACE " "
-                TUPLE_EXPR
-                  L_PAREN "("
-                  R_PAREN ")"
-                COMMA ","
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n\n    "
-        IF_EXPR
-          IF_KW "if"
-          WHITESPACE " "
-          LET_EXPR
-            LET_KW "let"
-            WHITESPACE " "
-            TUPLE_STRUCT_PAT
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Some"
-              L_PAREN "("
-              LITERAL_PAT
-                MINUS "-"
-                LITERAL
-                  INT_NUMBER "1"
-              R_PAREN ")"
-            WHITESPACE " "
-            EQ "="
-            WHITESPACE " "
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Some"
-              ARG_LIST
-                L_PAREN "("
-                PREFIX_EXPR
-                  MINUS "-"
-                  LITERAL
-                    INT_NUMBER "1"
-                R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  ENUM
-    ENUM_KW "enum"
-    WHITESPACE " "
-    NAME
-      IDENT "A"
-    WHITESPACE " "
-    VARIANT_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      VARIANT
-        NAME
-          IDENT "B"
-        TUPLE_FIELD_LIST
-          L_PAREN "("
-          TUPLE_FIELD
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i8"
-          COMMA ","
-          WHITESPACE " "
-          TUPLE_FIELD
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i8"
-          R_PAREN ")"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        RANGE_PAT
-          LITERAL_PAT
-            MINUS "-"
-            LITERAL
-              INT_NUMBER "128"
-          DOT2EQ "..="
-          LITERAL_PAT
-            LITERAL
-              INT_NUMBER "127"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i8"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0048_compound_assignment.rast b/crates/parser/test_data/parser/ok/0048_compound_assignment.rast
index b19a0b5f8bb..eca5e7aa810 100644
--- a/crates/parser/test_data/parser/ok/0048_compound_assignment.rast
+++ b/crates/parser/test_data/parser/ok/0048_compound_assignment.rast
@@ -1,201 +1,201 @@
-SOURCE_FILE@0..257
-  COMMENT@0..58 "// https://github.com ..."
-  WHITESPACE@58..60 "\n\n"
-  FN@60..256
-    FN_KW@60..62 "fn"
-    WHITESPACE@62..63 " "
-    NAME@63..82
-      IDENT@63..82 "compound_assignment"
-    PARAM_LIST@82..84
-      L_PAREN@82..83 "("
-      R_PAREN@83..84 ")"
-    WHITESPACE@84..85 " "
-    BLOCK_EXPR@85..256
-      STMT_LIST@85..256
-        L_CURLY@85..86 "{"
-        WHITESPACE@86..91 "\n    "
-        LET_STMT@91..105
-          LET_KW@91..94 "let"
-          WHITESPACE@94..95 " "
-          IDENT_PAT@95..100
-            MUT_KW@95..98 "mut"
-            WHITESPACE@98..99 " "
-            NAME@99..100
-              IDENT@99..100 "a"
-          WHITESPACE@100..101 " "
-          EQ@101..102 "="
-          WHITESPACE@102..103 " "
-          LITERAL@103..104
-            INT_NUMBER@103..104 "0"
-          SEMICOLON@104..105 ";"
-        WHITESPACE@105..110 "\n    "
-        EXPR_STMT@110..117
-          BIN_EXPR@110..116
-            PATH_EXPR@110..111
-              PATH@110..111
-                PATH_SEGMENT@110..111
-                  NAME_REF@110..111
-                    IDENT@110..111 "a"
-            WHITESPACE@111..112 " "
-            PLUSEQ@112..114 "+="
-            WHITESPACE@114..115 " "
-            LITERAL@115..116
-              INT_NUMBER@115..116 "1"
-          SEMICOLON@116..117 ";"
-        WHITESPACE@117..122 "\n    "
-        EXPR_STMT@122..129
-          BIN_EXPR@122..128
-            PATH_EXPR@122..123
-              PATH@122..123
-                PATH_SEGMENT@122..123
-                  NAME_REF@122..123
-                    IDENT@122..123 "a"
-            WHITESPACE@123..124 " "
-            MINUSEQ@124..126 "-="
-            WHITESPACE@126..127 " "
-            LITERAL@127..128
-              INT_NUMBER@127..128 "2"
-          SEMICOLON@128..129 ";"
-        WHITESPACE@129..134 "\n    "
-        EXPR_STMT@134..141
-          BIN_EXPR@134..140
-            PATH_EXPR@134..135
-              PATH@134..135
-                PATH_SEGMENT@134..135
-                  NAME_REF@134..135
-                    IDENT@134..135 "a"
-            WHITESPACE@135..136 " "
-            STAREQ@136..138 "*="
-            WHITESPACE@138..139 " "
-            LITERAL@139..140
-              INT_NUMBER@139..140 "3"
-          SEMICOLON@140..141 ";"
-        WHITESPACE@141..146 "\n    "
-        EXPR_STMT@146..153
-          BIN_EXPR@146..152
-            PATH_EXPR@146..147
-              PATH@146..147
-                PATH_SEGMENT@146..147
-                  NAME_REF@146..147
-                    IDENT@146..147 "a"
-            WHITESPACE@147..148 " "
-            PERCENTEQ@148..150 "%="
-            WHITESPACE@150..151 " "
-            LITERAL@151..152
-              INT_NUMBER@151..152 "4"
-          SEMICOLON@152..153 ";"
-        WHITESPACE@153..158 "\n    "
-        EXPR_STMT@158..165
-          BIN_EXPR@158..164
-            PATH_EXPR@158..159
-              PATH@158..159
-                PATH_SEGMENT@158..159
-                  NAME_REF@158..159
-                    IDENT@158..159 "a"
-            WHITESPACE@159..160 " "
-            SLASHEQ@160..162 "/="
-            WHITESPACE@162..163 " "
-            LITERAL@163..164
-              INT_NUMBER@163..164 "5"
-          SEMICOLON@164..165 ";"
-        WHITESPACE@165..170 "\n    "
-        EXPR_STMT@170..177
-          BIN_EXPR@170..176
-            PATH_EXPR@170..171
-              PATH@170..171
-                PATH_SEGMENT@170..171
-                  NAME_REF@170..171
-                    IDENT@170..171 "a"
-            WHITESPACE@171..172 " "
-            PIPEEQ@172..174 "|="
-            WHITESPACE@174..175 " "
-            LITERAL@175..176
-              INT_NUMBER@175..176 "6"
-          SEMICOLON@176..177 ";"
-        WHITESPACE@177..182 "\n    "
-        EXPR_STMT@182..189
-          BIN_EXPR@182..188
-            PATH_EXPR@182..183
-              PATH@182..183
-                PATH_SEGMENT@182..183
-                  NAME_REF@182..183
-                    IDENT@182..183 "a"
-            WHITESPACE@183..184 " "
-            AMPEQ@184..186 "&="
-            WHITESPACE@186..187 " "
-            LITERAL@187..188
-              INT_NUMBER@187..188 "7"
-          SEMICOLON@188..189 ";"
-        WHITESPACE@189..194 "\n    "
-        EXPR_STMT@194..201
-          BIN_EXPR@194..200
-            PATH_EXPR@194..195
-              PATH@194..195
-                PATH_SEGMENT@194..195
-                  NAME_REF@194..195
-                    IDENT@194..195 "a"
-            WHITESPACE@195..196 " "
-            CARETEQ@196..198 "^="
-            WHITESPACE@198..199 " "
-            LITERAL@199..200
-              INT_NUMBER@199..200 "8"
-          SEMICOLON@200..201 ";"
-        WHITESPACE@201..206 "\n    "
-        EXPR_STMT@206..213
-          BIN_EXPR@206..212
-            PATH_EXPR@206..207
-              PATH@206..207
-                PATH_SEGMENT@206..207
-                  NAME_REF@206..207
-                    IDENT@206..207 "a"
-            WHITESPACE@207..208 " "
-            LTEQ@208..210 "<="
-            WHITESPACE@210..211 " "
-            LITERAL@211..212
-              INT_NUMBER@211..212 "9"
-          SEMICOLON@212..213 ";"
-        WHITESPACE@213..218 "\n    "
-        EXPR_STMT@218..226
-          BIN_EXPR@218..225
-            PATH_EXPR@218..219
-              PATH@218..219
-                PATH_SEGMENT@218..219
-                  NAME_REF@218..219
-                    IDENT@218..219 "a"
-            WHITESPACE@219..220 " "
-            GTEQ@220..222 ">="
-            WHITESPACE@222..223 " "
-            LITERAL@223..225
-              INT_NUMBER@223..225 "10"
-          SEMICOLON@225..226 ";"
-        WHITESPACE@226..231 "\n    "
-        EXPR_STMT@231..240
-          BIN_EXPR@231..239
-            PATH_EXPR@231..232
-              PATH@231..232
-                PATH_SEGMENT@231..232
-                  NAME_REF@231..232
-                    IDENT@231..232 "a"
-            WHITESPACE@232..233 " "
-            SHREQ@233..236 ">>="
-            WHITESPACE@236..237 " "
-            LITERAL@237..239
-              INT_NUMBER@237..239 "11"
-          SEMICOLON@239..240 ";"
-        WHITESPACE@240..245 "\n    "
-        EXPR_STMT@245..254
-          BIN_EXPR@245..253
-            PATH_EXPR@245..246
-              PATH@245..246
-                PATH_SEGMENT@245..246
-                  NAME_REF@245..246
-                    IDENT@245..246 "a"
-            WHITESPACE@246..247 " "
-            SHLEQ@247..250 "<<="
-            WHITESPACE@250..251 " "
-            LITERAL@251..253
-              INT_NUMBER@251..253 "12"
-          SEMICOLON@253..254 ";"
-        WHITESPACE@254..255 "\n"
-        R_CURLY@255..256 "}"
-  WHITESPACE@256..257 "\n"
+SOURCE_FILE
+  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/pull/983"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "compound_assignment"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              IDENT "a"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          LITERAL
+            INT_NUMBER "0"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            PLUSEQ "+="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "1"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            MINUSEQ "-="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            STAREQ "*="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            PERCENTEQ "%="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "4"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            SLASHEQ "/="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "5"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            PIPEEQ "|="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "6"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            AMPEQ "&="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "7"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            CARETEQ "^="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "8"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            LTEQ "<="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "9"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            GTEQ ">="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "10"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            SHREQ ">>="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "11"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "a"
+            WHITESPACE " "
+            SHLEQ "<<="
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "12"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0048_compound_assignment.txt b/crates/parser/test_data/parser/ok/0048_compound_assignment.txt
deleted file mode 100644
index eca5e7aa810..00000000000
--- a/crates/parser/test_data/parser/ok/0048_compound_assignment.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-SOURCE_FILE
-  COMMENT "// https://github.com/rust-analyzer/rust-analyzer/pull/983"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "compound_assignment"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              IDENT "a"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          LITERAL
-            INT_NUMBER "0"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            PLUSEQ "+="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "1"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            MINUSEQ "-="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            STAREQ "*="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            PERCENTEQ "%="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "4"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            SLASHEQ "/="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "5"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            PIPEEQ "|="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "6"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            AMPEQ "&="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "7"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            CARETEQ "^="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "8"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            LTEQ "<="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "9"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            GTEQ ">="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "10"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            SHREQ ">>="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "11"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "a"
-            WHITESPACE " "
-            SHLEQ "<<="
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "12"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0049_async_block.rast b/crates/parser/test_data/parser/ok/0049_async_block.rast
index a254214595a..f376821e285 100644
--- a/crates/parser/test_data/parser/ok/0049_async_block.rast
+++ b/crates/parser/test_data/parser/ok/0049_async_block.rast
@@ -1,36 +1,36 @@
-SOURCE_FILE@0..47
-  FN@0..45
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..45
-      STMT_LIST@9..45
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..24
-          BLOCK_EXPR@15..23
-            ASYNC_KW@15..20 "async"
-            WHITESPACE@20..21 " "
-            STMT_LIST@21..23
-              L_CURLY@21..22 "{"
-              R_CURLY@22..23 "}"
-          SEMICOLON@23..24 ";"
-        WHITESPACE@24..29 "\n    "
-        EXPR_STMT@29..43
-          BLOCK_EXPR@29..42
-            ASYNC_KW@29..34 "async"
-            WHITESPACE@34..35 " "
-            MOVE_KW@35..39 "move"
-            WHITESPACE@39..40 " "
-            STMT_LIST@40..42
-              L_CURLY@40..41 "{"
-              R_CURLY@41..42 "}"
-          SEMICOLON@42..43 ";"
-        WHITESPACE@43..44 "\n"
-        R_CURLY@44..45 "}"
-  WHITESPACE@45..47 "\n\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            ASYNC_KW "async"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            ASYNC_KW "async"
+            WHITESPACE " "
+            MOVE_KW "move"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
diff --git a/crates/parser/test_data/parser/ok/0049_async_block.txt b/crates/parser/test_data/parser/ok/0049_async_block.txt
deleted file mode 100644
index f376821e285..00000000000
--- a/crates/parser/test_data/parser/ok/0049_async_block.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            ASYNC_KW "async"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            ASYNC_KW "async"
-            WHITESPACE " "
-            MOVE_KW "move"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
diff --git a/crates/parser/test_data/parser/ok/0050_async_block_as_argument.rast b/crates/parser/test_data/parser/ok/0050_async_block_as_argument.rast
index f54c0c16642..53ddf35ccb4 100644
--- a/crates/parser/test_data/parser/ok/0050_async_block_as_argument.rast
+++ b/crates/parser/test_data/parser/ok/0050_async_block_as_argument.rast
@@ -1,92 +1,92 @@
-SOURCE_FILE@0..95
-  FN@0..52
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..49
-      L_PAREN@6..7 "("
-      PARAM@7..48
-        IDENT_PAT@7..8
-          NAME@7..8
-            IDENT@7..8 "x"
-        COLON@8..9 ":"
-        WHITESPACE@9..10 " "
-        IMPL_TRAIT_TYPE@10..48
-          IMPL_KW@10..14 "impl"
-          WHITESPACE@14..15 " "
-          TYPE_BOUND_LIST@15..48
-            TYPE_BOUND@15..48
-              PATH_TYPE@15..48
-                PATH@15..48
-                  PATH@15..26
-                    PATH@15..18
-                      PATH_SEGMENT@15..18
-                        NAME_REF@15..18
-                          IDENT@15..18 "std"
-                    COLON2@18..20 "::"
-                    PATH_SEGMENT@20..26
-                      NAME_REF@20..26
-                        IDENT@20..26 "future"
-                  COLON2@26..28 "::"
-                  PATH_SEGMENT@28..48
-                    NAME_REF@28..34
-                      IDENT@28..34 "Future"
-                    GENERIC_ARG_LIST@34..48
-                      L_ANGLE@34..35 "<"
-                      ASSOC_TYPE_ARG@35..47
-                        NAME_REF@35..41
-                          IDENT@35..41 "Output"
-                        WHITESPACE@41..42 " "
-                        EQ@42..43 "="
-                        WHITESPACE@43..44 " "
-                        PATH_TYPE@44..47
-                          PATH@44..47
-                            PATH_SEGMENT@44..47
-                              NAME_REF@44..47
-                                IDENT@44..47 "i32"
-                      R_ANGLE@47..48 ">"
-      R_PAREN@48..49 ")"
-    WHITESPACE@49..50 " "
-    BLOCK_EXPR@50..52
-      STMT_LIST@50..52
-        L_CURLY@50..51 "{"
-        R_CURLY@51..52 "}"
-  WHITESPACE@52..54 "\n\n"
-  FN@54..94
-    FN_KW@54..56 "fn"
-    WHITESPACE@56..57 " "
-    NAME@57..61
-      IDENT@57..61 "main"
-    PARAM_LIST@61..63
-      L_PAREN@61..62 "("
-      R_PAREN@62..63 ")"
-    WHITESPACE@63..64 " "
-    BLOCK_EXPR@64..94
-      STMT_LIST@64..94
-        L_CURLY@64..65 "{"
-        WHITESPACE@65..70 "\n    "
-        CALL_EXPR@70..92
-          PATH_EXPR@70..73
-            PATH@70..73
-              PATH_SEGMENT@70..73
-                NAME_REF@70..73
-                  IDENT@70..73 "foo"
-          ARG_LIST@73..92
-            L_PAREN@73..74 "("
-            BLOCK_EXPR@74..91
-              ASYNC_KW@74..79 "async"
-              WHITESPACE@79..80 " "
-              MOVE_KW@80..84 "move"
-              WHITESPACE@84..85 " "
-              STMT_LIST@85..91
-                L_CURLY@85..86 "{"
-                WHITESPACE@86..87 " "
-                LITERAL@87..89
-                  INT_NUMBER@87..89 "12"
-                WHITESPACE@89..90 " "
-                R_CURLY@90..91 "}"
-            R_PAREN@91..92 ")"
-        WHITESPACE@92..93 "\n"
-        R_CURLY@93..94 "}"
-  WHITESPACE@94..95 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        IMPL_TRAIT_TYPE
+          IMPL_KW "impl"
+          WHITESPACE " "
+          TYPE_BOUND_LIST
+            TYPE_BOUND
+              PATH_TYPE
+                PATH
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "std"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "future"
+                  COLON2 "::"
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Future"
+                    GENERIC_ARG_LIST
+                      L_ANGLE "<"
+                      ASSOC_TYPE_ARG
+                        NAME_REF
+                          IDENT "Output"
+                        WHITESPACE " "
+                        EQ "="
+                        WHITESPACE " "
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "i32"
+                      R_ANGLE ">"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        CALL_EXPR
+          PATH_EXPR
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "foo"
+          ARG_LIST
+            L_PAREN "("
+            BLOCK_EXPR
+              ASYNC_KW "async"
+              WHITESPACE " "
+              MOVE_KW "move"
+              WHITESPACE " "
+              STMT_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                LITERAL
+                  INT_NUMBER "12"
+                WHITESPACE " "
+                R_CURLY "}"
+            R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0050_async_block_as_argument.txt b/crates/parser/test_data/parser/ok/0050_async_block_as_argument.txt
deleted file mode 100644
index 53ddf35ccb4..00000000000
--- a/crates/parser/test_data/parser/ok/0050_async_block_as_argument.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        IMPL_TRAIT_TYPE
-          IMPL_KW "impl"
-          WHITESPACE " "
-          TYPE_BOUND_LIST
-            TYPE_BOUND
-              PATH_TYPE
-                PATH
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "std"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "future"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Future"
-                    GENERIC_ARG_LIST
-                      L_ANGLE "<"
-                      ASSOC_TYPE_ARG
-                        NAME_REF
-                          IDENT "Output"
-                        WHITESPACE " "
-                        EQ "="
-                        WHITESPACE " "
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "i32"
-                      R_ANGLE ">"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        CALL_EXPR
-          PATH_EXPR
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "foo"
-          ARG_LIST
-            L_PAREN "("
-            BLOCK_EXPR
-              ASYNC_KW "async"
-              WHITESPACE " "
-              MOVE_KW "move"
-              WHITESPACE " "
-              STMT_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                LITERAL
-                  INT_NUMBER "12"
-                WHITESPACE " "
-                R_CURLY "}"
-            R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0051_parameter_attrs.rast b/crates/parser/test_data/parser/ok/0051_parameter_attrs.rast
index e4e76645ce0..f8b11e7782c 100644
--- a/crates/parser/test_data/parser/ok/0051_parameter_attrs.rast
+++ b/crates/parser/test_data/parser/ok/0051_parameter_attrs.rast
@@ -1,548 +1,548 @@
-SOURCE_FILE@0..519
-  FN@0..37
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..5
-      IDENT@3..5 "g1"
-    PARAM_LIST@5..34
-      L_PAREN@5..6 "("
-      PARAM@6..33
-        ATTR@6..14
-          POUND@6..7 "#"
-          L_BRACK@7..8 "["
-          META@8..13
-            PATH@8..13
-              PATH_SEGMENT@8..13
-                NAME_REF@8..13
-                  IDENT@8..13 "attr1"
-          R_BRACK@13..14 "]"
-        WHITESPACE@14..15 " "
-        ATTR@15..23
-          POUND@15..16 "#"
-          L_BRACK@16..17 "["
-          META@17..22
-            PATH@17..22
-              PATH_SEGMENT@17..22
-                NAME_REF@17..22
-                  IDENT@17..22 "attr2"
-          R_BRACK@22..23 "]"
-        WHITESPACE@23..24 " "
-        IDENT_PAT@24..27
-          NAME@24..27
-            IDENT@24..27 "pat"
-        COLON@27..28 ":"
-        WHITESPACE@28..29 " "
-        PATH_TYPE@29..33
-          PATH@29..33
-            PATH_SEGMENT@29..33
-              NAME_REF@29..33
-                IDENT@29..33 "Type"
-      R_PAREN@33..34 ")"
-    WHITESPACE@34..35 " "
-    BLOCK_EXPR@35..37
-      STMT_LIST@35..37
-        L_CURLY@35..36 "{"
-        R_CURLY@36..37 "}"
-  WHITESPACE@37..38 "\n"
-  FN@38..62
-    FN_KW@38..40 "fn"
-    WHITESPACE@40..41 " "
-    NAME@41..43
-      IDENT@41..43 "g2"
-    PARAM_LIST@43..59
-      L_PAREN@43..44 "("
-      PARAM@44..58
-        ATTR@44..52
-          POUND@44..45 "#"
-          L_BRACK@45..46 "["
-          META@46..51
-            PATH@46..51
-              PATH_SEGMENT@46..51
-                NAME_REF@46..51
-                  IDENT@46..51 "attr1"
-          R_BRACK@51..52 "]"
-        WHITESPACE@52..53 " "
-        IDENT_PAT@53..54
-          NAME@53..54
-            IDENT@53..54 "x"
-        COLON@54..55 ":"
-        WHITESPACE@55..56 " "
-        PATH_TYPE@56..58
-          PATH@56..58
-            PATH_SEGMENT@56..58
-              NAME_REF@56..58
-                IDENT@56..58 "u8"
-      R_PAREN@58..59 ")"
-    WHITESPACE@59..60 " "
-    BLOCK_EXPR@60..62
-      STMT_LIST@60..62
-        L_CURLY@60..61 "{"
-        R_CURLY@61..62 "}"
-  WHITESPACE@62..64 "\n\n"
-  EXTERN_BLOCK@64..128
-    ABI@64..74
-      EXTERN_KW@64..70 "extern"
-      WHITESPACE@70..71 " "
-      STRING@71..74 "\"C\""
-    WHITESPACE@74..75 " "
-    EXTERN_ITEM_LIST@75..128
-      L_CURLY@75..76 "{"
-      WHITESPACE@76..77 " "
-      FN@77..126
-        FN_KW@77..79 "fn"
-        WHITESPACE@79..80 " "
-        NAME@80..86
-          IDENT@80..86 "printf"
-        PARAM_LIST@86..118
-          L_PAREN@86..87 "("
-          PARAM@87..104
-            IDENT_PAT@87..93
-              NAME@87..93
-                IDENT@87..93 "format"
-            COLON@93..94 ":"
-            WHITESPACE@94..95 " "
-            PTR_TYPE@95..104
-              STAR@95..96 "*"
-              CONST_KW@96..101 "const"
-              WHITESPACE@101..102 " "
-              PATH_TYPE@102..104
-                PATH@102..104
-                  PATH_SEGMENT@102..104
-                    NAME_REF@102..104
-                      IDENT@102..104 "i8"
-          COMMA@104..105 ","
-          WHITESPACE@105..106 " "
-          PARAM@106..117
-            ATTR@106..113
-              POUND@106..107 "#"
-              L_BRACK@107..108 "["
-              META@108..112
-                PATH@108..112
-                  PATH_SEGMENT@108..112
-                    NAME_REF@108..112
-                      IDENT@108..112 "attr"
-              R_BRACK@112..113 "]"
-            WHITESPACE@113..114 " "
-            DOT3@114..117 "..."
-          R_PAREN@117..118 ")"
-        WHITESPACE@118..119 " "
-        RET_TYPE@119..125
-          THIN_ARROW@119..121 "->"
-          WHITESPACE@121..122 " "
-          PATH_TYPE@122..125
-            PATH@122..125
-              PATH_SEGMENT@122..125
-                NAME_REF@122..125
-                  IDENT@122..125 "i32"
-        SEMICOLON@125..126 ";"
-      WHITESPACE@126..127 " "
-      R_CURLY@127..128 "}"
-  WHITESPACE@128..130 "\n\n"
-  FN@130..172
-    FN_KW@130..132 "fn"
-    WHITESPACE@132..133 " "
-    NAME@133..136
-      IDENT@133..136 "foo"
-    GENERIC_PARAM_LIST@136..168
-      L_ANGLE@136..137 "<"
-      TYPE_PARAM@137..167
-        NAME@137..138
-          IDENT@137..138 "F"
-        COLON@138..139 ":"
-        WHITESPACE@139..140 " "
-        TYPE_BOUND_LIST@140..167
-          TYPE_BOUND@140..167
-            PATH_TYPE@140..167
-              PATH@140..167
-                PATH_SEGMENT@140..167
-                  NAME_REF@140..145
-                    IDENT@140..145 "FnMut"
-                  PARAM_LIST@145..167
-                    L_PAREN@145..146 "("
-                    PARAM@146..166
-                      ATTR@146..153
-                        POUND@146..147 "#"
-                        L_BRACK@147..148 "["
-                        META@148..152
-                          PATH@148..152
-                            PATH_SEGMENT@148..152
-                              NAME_REF@148..152
-                                IDENT@148..152 "attr"
-                        R_BRACK@152..153 "]"
-                      WHITESPACE@153..154 " "
-                      REF_TYPE@154..166
-                        AMP@154..155 "&"
-                        MUT_KW@155..158 "mut"
-                        WHITESPACE@158..159 " "
-                        PATH_TYPE@159..166
-                          PATH@159..166
-                            PATH_SEGMENT@159..166
-                              NAME_REF@159..162
-                                IDENT@159..162 "Foo"
-                              GENERIC_ARG_LIST@162..166
-                                L_ANGLE@162..163 "<"
-                                LIFETIME_ARG@163..165
-                                  LIFETIME@163..165
-                                    LIFETIME_IDENT@163..165 "'a"
-                                R_ANGLE@165..166 ">"
-                    R_PAREN@166..167 ")"
-      R_ANGLE@167..168 ">"
-    PARAM_LIST@168..170
-      L_PAREN@168..169 "("
-      R_PAREN@169..170 ")"
-    BLOCK_EXPR@170..172
-      STMT_LIST@170..172
-        L_CURLY@170..171 "{"
-        R_CURLY@171..172 "}"
-  WHITESPACE@172..174 "\n\n"
-  TRAIT@174..236
-    TRAIT_KW@174..179 "trait"
-    WHITESPACE@179..180 " "
-    NAME@180..183
-      IDENT@180..183 "Foo"
-    WHITESPACE@183..184 " "
-    ASSOC_ITEM_LIST@184..236
-      L_CURLY@184..185 "{"
-      WHITESPACE@185..190 "\n    "
-      FN@190..234
-        FN_KW@190..192 "fn"
-        WHITESPACE@192..193 " "
-        NAME@193..196
-          IDENT@193..196 "bar"
-        PARAM_LIST@196..233
-          L_PAREN@196..197 "("
-          PARAM@197..211
-            ATTR@197..204
-              POUND@197..198 "#"
-              L_BRACK@198..199 "["
-              META@199..203
-                PATH@199..203
-                  PATH_SEGMENT@199..203
-                    NAME_REF@199..203
-                      IDENT@199..203 "attr"
-              R_BRACK@203..204 "]"
-            WHITESPACE@204..205 " "
-            WILDCARD_PAT@205..206
-              UNDERSCORE@205..206 "_"
-            COLON@206..207 ":"
-            WHITESPACE@207..208 " "
-            PATH_TYPE@208..211
-              PATH@208..211
-                PATH_SEGMENT@208..211
-                  NAME_REF@208..211
-                    IDENT@208..211 "u64"
-          COMMA@211..212 ","
-          WHITESPACE@212..213 " "
-          PARAM@213..232
-            ATTR@213..221
-              POUND@213..214 "#"
-              WHITESPACE@214..215 " "
-              L_BRACK@215..216 "["
-              META@216..220
-                PATH@216..220
-                  PATH_SEGMENT@216..220
-                    NAME_REF@216..220
-                      IDENT@216..220 "attr"
-              R_BRACK@220..221 "]"
-            WHITESPACE@221..222 " "
-            IDENT_PAT@222..227
-              MUT_KW@222..225 "mut"
-              WHITESPACE@225..226 " "
-              NAME@226..227
-                IDENT@226..227 "x"
-            COLON@227..228 ":"
-            WHITESPACE@228..229 " "
-            PATH_TYPE@229..232
-              PATH@229..232
-                PATH_SEGMENT@229..232
-                  NAME_REF@229..232
-                    IDENT@229..232 "i32"
-          R_PAREN@232..233 ")"
-        SEMICOLON@233..234 ";"
-      WHITESPACE@234..235 "\n"
-      R_CURLY@235..236 "}"
-  WHITESPACE@236..238 "\n\n"
-  IMPL@238..519
-    IMPL_KW@238..242 "impl"
-    WHITESPACE@242..243 " "
-    PATH_TYPE@243..244
-      PATH@243..244
-        PATH_SEGMENT@243..244
-          NAME_REF@243..244
-            IDENT@243..244 "S"
-    WHITESPACE@244..245 " "
-    ASSOC_ITEM_LIST@245..519
-      L_CURLY@245..246 "{"
-      WHITESPACE@246..252 "\n     "
-      FN@252..277
-        FN_KW@252..254 "fn"
-        WHITESPACE@254..255 " "
-        NAME@255..256
-          IDENT@255..256 "f"
-        PARAM_LIST@256..274
-          L_PAREN@256..257 "("
-          SELF_PARAM@257..273
-            ATTR@257..268
-              POUND@257..258 "#"
-              L_BRACK@258..259 "["
-              META@259..267
-                PATH@259..267
-                  PATH_SEGMENT@259..267
-                    NAME_REF@259..267
-                      IDENT@259..267 "must_use"
-              R_BRACK@267..268 "]"
-            WHITESPACE@268..269 " "
-            NAME@269..273
-              SELF_KW@269..273 "self"
-          R_PAREN@273..274 ")"
-        WHITESPACE@274..275 " "
-        BLOCK_EXPR@275..277
-          STMT_LIST@275..277
-            L_CURLY@275..276 "{"
-            R_CURLY@276..277 "}"
-      WHITESPACE@277..283 "\n     "
-      FN@283..305
-        FN_KW@283..285 "fn"
-        WHITESPACE@285..286 " "
-        NAME@286..288
-          IDENT@286..288 "g1"
-        PARAM_LIST@288..302
-          L_PAREN@288..289 "("
-          SELF_PARAM@289..301
-            ATTR@289..296
-              POUND@289..290 "#"
-              L_BRACK@290..291 "["
-              META@291..295
-                PATH@291..295
-                  PATH_SEGMENT@291..295
-                    NAME_REF@291..295
-                      IDENT@291..295 "attr"
-              R_BRACK@295..296 "]"
-            WHITESPACE@296..297 " "
-            NAME@297..301
-              SELF_KW@297..301 "self"
-          R_PAREN@301..302 ")"
-        WHITESPACE@302..303 " "
-        BLOCK_EXPR@303..305
-          STMT_LIST@303..305
-            L_CURLY@303..304 "{"
-            R_CURLY@304..305 "}"
-      WHITESPACE@305..311 "\n     "
-      FN@311..334
-        FN_KW@311..313 "fn"
-        WHITESPACE@313..314 " "
-        NAME@314..316
-          IDENT@314..316 "g2"
-        PARAM_LIST@316..331
-          L_PAREN@316..317 "("
-          SELF_PARAM@317..330
-            ATTR@317..324
-              POUND@317..318 "#"
-              L_BRACK@318..319 "["
-              META@319..323
-                PATH@319..323
-                  PATH_SEGMENT@319..323
-                    NAME_REF@319..323
-                      IDENT@319..323 "attr"
-              R_BRACK@323..324 "]"
-            WHITESPACE@324..325 " "
-            AMP@325..326 "&"
-            NAME@326..330
-              SELF_KW@326..330 "self"
-          R_PAREN@330..331 ")"
-        WHITESPACE@331..332 " "
-        BLOCK_EXPR@332..334
-          STMT_LIST@332..334
-            L_CURLY@332..333 "{"
-            R_CURLY@333..334 "}"
-      WHITESPACE@334..340 "\n     "
-      FN@340..371
-        FN_KW@340..342 "fn"
-        WHITESPACE@342..343 " "
-        NAME@343..345
-          IDENT@343..345 "g3"
-        GENERIC_PARAM_LIST@345..349
-          L_ANGLE@345..346 "<"
-          LIFETIME_PARAM@346..348
-            LIFETIME@346..348
-              LIFETIME_IDENT@346..348 "'a"
-          R_ANGLE@348..349 ">"
-        PARAM_LIST@349..368
-          L_PAREN@349..350 "("
-          SELF_PARAM@350..367
-            ATTR@350..357
-              POUND@350..351 "#"
-              L_BRACK@351..352 "["
-              META@352..356
-                PATH@352..356
-                  PATH_SEGMENT@352..356
-                    NAME_REF@352..356
-                      IDENT@352..356 "attr"
-              R_BRACK@356..357 "]"
-            WHITESPACE@357..358 " "
-            AMP@358..359 "&"
-            MUT_KW@359..362 "mut"
-            WHITESPACE@362..363 " "
-            NAME@363..367
-              SELF_KW@363..367 "self"
-          R_PAREN@367..368 ")"
-        WHITESPACE@368..369 " "
-        BLOCK_EXPR@369..371
-          STMT_LIST@369..371
-            L_CURLY@369..370 "{"
-            R_CURLY@370..371 "}"
-      WHITESPACE@371..377 "\n     "
-      FN@377..407
-        FN_KW@377..379 "fn"
-        WHITESPACE@379..380 " "
-        NAME@380..382
-          IDENT@380..382 "g4"
-        GENERIC_PARAM_LIST@382..386
-          L_ANGLE@382..383 "<"
-          LIFETIME_PARAM@383..385
-            LIFETIME@383..385
-              LIFETIME_IDENT@383..385 "'a"
-          R_ANGLE@385..386 ">"
-        PARAM_LIST@386..404
-          L_PAREN@386..387 "("
-          SELF_PARAM@387..403
-            ATTR@387..394
-              POUND@387..388 "#"
-              L_BRACK@388..389 "["
-              META@389..393
-                PATH@389..393
-                  PATH_SEGMENT@389..393
-                    NAME_REF@389..393
-                      IDENT@389..393 "attr"
-              R_BRACK@393..394 "]"
-            WHITESPACE@394..395 " "
-            AMP@395..396 "&"
-            LIFETIME@396..398
-              LIFETIME_IDENT@396..398 "'a"
-            WHITESPACE@398..399 " "
-            NAME@399..403
-              SELF_KW@399..403 "self"
-          R_PAREN@403..404 ")"
-        WHITESPACE@404..405 " "
-        BLOCK_EXPR@405..407
-          STMT_LIST@405..407
-            L_CURLY@405..406 "{"
-            R_CURLY@406..407 "}"
-      WHITESPACE@407..413 "\n     "
-      FN@413..447
-        FN_KW@413..415 "fn"
-        WHITESPACE@415..416 " "
-        NAME@416..418
-          IDENT@416..418 "g5"
-        GENERIC_PARAM_LIST@418..422
-          L_ANGLE@418..419 "<"
-          LIFETIME_PARAM@419..421
-            LIFETIME@419..421
-              LIFETIME_IDENT@419..421 "'a"
-          R_ANGLE@421..422 ">"
-        PARAM_LIST@422..444
-          L_PAREN@422..423 "("
-          SELF_PARAM@423..443
-            ATTR@423..430
-              POUND@423..424 "#"
-              L_BRACK@424..425 "["
-              META@425..429
-                PATH@425..429
-                  PATH_SEGMENT@425..429
-                    NAME_REF@425..429
-                      IDENT@425..429 "attr"
-              R_BRACK@429..430 "]"
-            WHITESPACE@430..431 " "
-            AMP@431..432 "&"
-            LIFETIME@432..434
-              LIFETIME_IDENT@432..434 "'a"
-            WHITESPACE@434..435 " "
-            MUT_KW@435..438 "mut"
-            WHITESPACE@438..439 " "
-            NAME@439..443
-              SELF_KW@439..443 "self"
-          R_PAREN@443..444 ")"
-        WHITESPACE@444..445 " "
-        BLOCK_EXPR@445..447
-          STMT_LIST@445..447
-            L_CURLY@445..446 "{"
-            R_CURLY@446..447 "}"
-      WHITESPACE@447..453 "\n     "
-      FN@453..480
-        FN_KW@453..455 "fn"
-        WHITESPACE@455..456 " "
-        NAME@456..457
-          IDENT@456..457 "c"
-        PARAM_LIST@457..477
-          L_PAREN@457..458 "("
-          SELF_PARAM@458..476
-            ATTR@458..465
-              POUND@458..459 "#"
-              L_BRACK@459..460 "["
-              META@460..464
-                PATH@460..464
-                  PATH_SEGMENT@460..464
-                    NAME_REF@460..464
-                      IDENT@460..464 "attr"
-              R_BRACK@464..465 "]"
-            WHITESPACE@465..466 " "
-            NAME@466..470
-              SELF_KW@466..470 "self"
-            COLON@470..471 ":"
-            WHITESPACE@471..472 " "
-            PATH_TYPE@472..476
-              PATH@472..476
-                PATH_SEGMENT@472..476
-                  NAME_REF@472..476
-                    IDENT@472..476 "Self"
-          R_PAREN@476..477 ")"
-        WHITESPACE@477..478 " "
-        BLOCK_EXPR@478..480
-          STMT_LIST@478..480
-            L_CURLY@478..479 "{"
-            R_CURLY@479..480 "}"
-      WHITESPACE@480..486 "\n     "
-      FN@486..517
-        FN_KW@486..488 "fn"
-        WHITESPACE@488..489 " "
-        NAME@489..490
-          IDENT@489..490 "d"
-        PARAM_LIST@490..514
-          L_PAREN@490..491 "("
-          SELF_PARAM@491..513
-            ATTR@491..498
-              POUND@491..492 "#"
-              L_BRACK@492..493 "["
-              META@493..497
-                PATH@493..497
-                  PATH_SEGMENT@493..497
-                    NAME_REF@493..497
-                      IDENT@493..497 "attr"
-              R_BRACK@497..498 "]"
-            WHITESPACE@498..499 " "
-            NAME@499..503
-              SELF_KW@499..503 "self"
-            COLON@503..504 ":"
-            WHITESPACE@504..505 " "
-            PATH_TYPE@505..513
-              PATH@505..513
-                PATH_SEGMENT@505..513
-                  NAME_REF@505..507
-                    IDENT@505..507 "Rc"
-                  GENERIC_ARG_LIST@507..513
-                    L_ANGLE@507..508 "<"
-                    TYPE_ARG@508..512
-                      PATH_TYPE@508..512
-                        PATH@508..512
-                          PATH_SEGMENT@508..512
-                            NAME_REF@508..512
-                              IDENT@508..512 "Self"
-                    R_ANGLE@512..513 ">"
-          R_PAREN@513..514 ")"
-        WHITESPACE@514..515 " "
-        BLOCK_EXPR@515..517
-          STMT_LIST@515..517
-            L_CURLY@515..516 "{"
-            R_CURLY@516..517 "}"
-      WHITESPACE@517..518 "\n"
-      R_CURLY@518..519 "}"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "g1"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "attr1"
+          R_BRACK "]"
+        WHITESPACE " "
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "attr2"
+          R_BRACK "]"
+        WHITESPACE " "
+        IDENT_PAT
+          NAME
+            IDENT "pat"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Type"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "g2"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        ATTR
+          POUND "#"
+          L_BRACK "["
+          META
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "attr1"
+          R_BRACK "]"
+        WHITESPACE " "
+        IDENT_PAT
+          NAME
+            IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u8"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE " "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "printf"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            IDENT_PAT
+              NAME
+                IDENT "format"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              CONST_KW "const"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i8"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            DOT3 "..."
+          R_PAREN ")"
+        WHITESPACE " "
+        RET_TYPE
+          THIN_ARROW "->"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "i32"
+        SEMICOLON ";"
+      WHITESPACE " "
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "F"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "FnMut"
+                  PARAM_LIST
+                    L_PAREN "("
+                    PARAM
+                      ATTR
+                        POUND "#"
+                        L_BRACK "["
+                        META
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "attr"
+                        R_BRACK "]"
+                      WHITESPACE " "
+                      REF_TYPE
+                        AMP "&"
+                        MUT_KW "mut"
+                        WHITESPACE " "
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Foo"
+                              GENERIC_ARG_LIST
+                                L_ANGLE "<"
+                                LIFETIME_ARG
+                                  LIFETIME
+                                    LIFETIME_IDENT "'a"
+                                R_ANGLE ">"
+                    R_PAREN ")"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "bar"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u64"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            ATTR
+              POUND "#"
+              WHITESPACE " "
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            IDENT_PAT
+              MUT_KW "mut"
+              WHITESPACE " "
+              NAME
+                IDENT "x"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i32"
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "S"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "must_use"
+              R_BRACK "]"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "g1"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "g2"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            AMP "&"
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "g3"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            AMP "&"
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "g4"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            AMP "&"
+            LIFETIME
+              LIFETIME_IDENT "'a"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "g5"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            AMP "&"
+            LIFETIME
+              LIFETIME_IDENT "'a"
+            WHITESPACE " "
+            MUT_KW "mut"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "c"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    SELF_TYPE_KW "Self"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n     "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "d"
+        PARAM_LIST
+          L_PAREN "("
+          SELF_PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "attr"
+              R_BRACK "]"
+            WHITESPACE " "
+            NAME
+              SELF_KW "self"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Rc"
+                  GENERIC_ARG_LIST
+                    L_ANGLE "<"
+                    TYPE_ARG
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              SELF_TYPE_KW "Self"
+                    R_ANGLE ">"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0051_parameter_attrs.txt b/crates/parser/test_data/parser/ok/0051_parameter_attrs.txt
deleted file mode 100644
index f8b11e7782c..00000000000
--- a/crates/parser/test_data/parser/ok/0051_parameter_attrs.txt
+++ /dev/null
@@ -1,548 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "g1"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "attr1"
-          R_BRACK "]"
-        WHITESPACE " "
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "attr2"
-          R_BRACK "]"
-        WHITESPACE " "
-        IDENT_PAT
-          NAME
-            IDENT "pat"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Type"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "g2"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        ATTR
-          POUND "#"
-          L_BRACK "["
-          META
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "attr1"
-          R_BRACK "]"
-        WHITESPACE " "
-        IDENT_PAT
-          NAME
-            IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u8"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE " "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "printf"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            IDENT_PAT
-              NAME
-                IDENT "format"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              CONST_KW "const"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i8"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            DOT3 "..."
-          R_PAREN ")"
-        WHITESPACE " "
-        RET_TYPE
-          THIN_ARROW "->"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "i32"
-        SEMICOLON ";"
-      WHITESPACE " "
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "F"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "FnMut"
-                  PARAM_LIST
-                    L_PAREN "("
-                    PARAM
-                      ATTR
-                        POUND "#"
-                        L_BRACK "["
-                        META
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "attr"
-                        R_BRACK "]"
-                      WHITESPACE " "
-                      REF_TYPE
-                        AMP "&"
-                        MUT_KW "mut"
-                        WHITESPACE " "
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Foo"
-                              GENERIC_ARG_LIST
-                                L_ANGLE "<"
-                                LIFETIME_ARG
-                                  LIFETIME
-                                    LIFETIME_IDENT "'a"
-                                R_ANGLE ">"
-                    R_PAREN ")"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "bar"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u64"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            ATTR
-              POUND "#"
-              WHITESPACE " "
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            IDENT_PAT
-              MUT_KW "mut"
-              WHITESPACE " "
-              NAME
-                IDENT "x"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i32"
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "must_use"
-              R_BRACK "]"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "g1"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "g2"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            AMP "&"
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "g3"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            AMP "&"
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "g4"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            AMP "&"
-            LIFETIME
-              LIFETIME_IDENT "'a"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "g5"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            AMP "&"
-            LIFETIME
-              LIFETIME_IDENT "'a"
-            WHITESPACE " "
-            MUT_KW "mut"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "c"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    SELF_TYPE_KW "Self"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n     "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "d"
-        PARAM_LIST
-          L_PAREN "("
-          SELF_PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "attr"
-              R_BRACK "]"
-            WHITESPACE " "
-            NAME
-              SELF_KW "self"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Rc"
-                  GENERIC_ARG_LIST
-                    L_ANGLE "<"
-                    TYPE_ARG
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              SELF_TYPE_KW "Self"
-                    R_ANGLE ">"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0052_for_range_block.rast b/crates/parser/test_data/parser/ok/0052_for_range_block.rast
index 949ddc3797e..0c9dd432fb4 100644
--- a/crates/parser/test_data/parser/ok/0052_for_range_block.rast
+++ b/crates/parser/test_data/parser/ok/0052_for_range_block.rast
@@ -1,81 +1,81 @@
-SOURCE_FILE@0..80
-  FN@0..79
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..79
-      STMT_LIST@9..79
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..14 "\n   "
-        FOR_EXPR@14..77
-          FOR_KW@14..17 "for"
-          WHITESPACE@17..18 " "
-          IDENT_PAT@18..20
-            NAME@18..20
-              IDENT@18..20 "_x"
-          WHITESPACE@20..21 " "
-          IN_KW@21..23 "in"
-          WHITESPACE@23..24 " "
-          RANGE_EXPR@24..56
-            LITERAL@24..25
-              INT_NUMBER@24..25 "0"
-            WHITESPACE@25..26 " "
-            DOT2@26..28 ".."
-            WHITESPACE@28..29 " "
-            METHOD_CALL_EXPR@29..56
-              PAREN_EXPR@29..43
-                L_PAREN@29..30 "("
-                RANGE_EXPR@30..42
-                  LITERAL@30..31
-                    INT_NUMBER@30..31 "0"
-                  WHITESPACE@31..32 " "
-                  DOT2@32..34 ".."
-                  WHITESPACE@34..35 " "
-                  BLOCK_EXPR@35..42
-                    STMT_LIST@35..42
-                      L_CURLY@35..36 "{"
-                      BIN_EXPR@36..41
-                        LITERAL@36..37
-                          INT_NUMBER@36..37 "1"
-                        WHITESPACE@37..38 " "
-                        PLUS@38..39 "+"
-                        WHITESPACE@39..40 " "
-                        LITERAL@40..41
-                          INT_NUMBER@40..41 "2"
-                      R_CURLY@41..42 "}"
-                R_PAREN@42..43 ")"
-              DOT@43..44 "."
-              NAME_REF@44..47
-                IDENT@44..47 "sum"
-              GENERIC_ARG_LIST@47..54
-                COLON2@47..49 "::"
-                L_ANGLE@49..50 "<"
-                TYPE_ARG@50..53
-                  PATH_TYPE@50..53
-                    PATH@50..53
-                      PATH_SEGMENT@50..53
-                        NAME_REF@50..53
-                          IDENT@50..53 "u32"
-                R_ANGLE@53..54 ">"
-              ARG_LIST@54..56
-                L_PAREN@54..55 "("
-                R_PAREN@55..56 ")"
-          WHITESPACE@56..57 " "
-          BLOCK_EXPR@57..77
-            STMT_LIST@57..77
-              L_CURLY@57..58 "{"
-              WHITESPACE@58..66 "\n       "
-              EXPR_STMT@66..72
-                BREAK_EXPR@66..71
-                  BREAK_KW@66..71 "break"
-                SEMICOLON@71..72 ";"
-              WHITESPACE@72..76 "\n   "
-              R_CURLY@76..77 "}"
-        WHITESPACE@77..78 "\n"
-        R_CURLY@78..79 "}"
-  WHITESPACE@79..80 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n   "
+        FOR_EXPR
+          FOR_KW "for"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "_x"
+          WHITESPACE " "
+          IN_KW "in"
+          WHITESPACE " "
+          RANGE_EXPR
+            LITERAL
+              INT_NUMBER "0"
+            WHITESPACE " "
+            DOT2 ".."
+            WHITESPACE " "
+            METHOD_CALL_EXPR
+              PAREN_EXPR
+                L_PAREN "("
+                RANGE_EXPR
+                  LITERAL
+                    INT_NUMBER "0"
+                  WHITESPACE " "
+                  DOT2 ".."
+                  WHITESPACE " "
+                  BLOCK_EXPR
+                    STMT_LIST
+                      L_CURLY "{"
+                      BIN_EXPR
+                        LITERAL
+                          INT_NUMBER "1"
+                        WHITESPACE " "
+                        PLUS "+"
+                        WHITESPACE " "
+                        LITERAL
+                          INT_NUMBER "2"
+                      R_CURLY "}"
+                R_PAREN ")"
+              DOT "."
+              NAME_REF
+                IDENT "sum"
+              GENERIC_ARG_LIST
+                COLON2 "::"
+                L_ANGLE "<"
+                TYPE_ARG
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "u32"
+                R_ANGLE ">"
+              ARG_LIST
+                L_PAREN "("
+                R_PAREN ")"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE "\n       "
+              EXPR_STMT
+                BREAK_EXPR
+                  BREAK_KW "break"
+                SEMICOLON ";"
+              WHITESPACE "\n   "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0052_for_range_block.txt b/crates/parser/test_data/parser/ok/0052_for_range_block.txt
deleted file mode 100644
index 0c9dd432fb4..00000000000
--- a/crates/parser/test_data/parser/ok/0052_for_range_block.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n   "
-        FOR_EXPR
-          FOR_KW "for"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "_x"
-          WHITESPACE " "
-          IN_KW "in"
-          WHITESPACE " "
-          RANGE_EXPR
-            LITERAL
-              INT_NUMBER "0"
-            WHITESPACE " "
-            DOT2 ".."
-            WHITESPACE " "
-            METHOD_CALL_EXPR
-              PAREN_EXPR
-                L_PAREN "("
-                RANGE_EXPR
-                  LITERAL
-                    INT_NUMBER "0"
-                  WHITESPACE " "
-                  DOT2 ".."
-                  WHITESPACE " "
-                  BLOCK_EXPR
-                    STMT_LIST
-                      L_CURLY "{"
-                      BIN_EXPR
-                        LITERAL
-                          INT_NUMBER "1"
-                        WHITESPACE " "
-                        PLUS "+"
-                        WHITESPACE " "
-                        LITERAL
-                          INT_NUMBER "2"
-                      R_CURLY "}"
-                R_PAREN ")"
-              DOT "."
-              NAME_REF
-                IDENT "sum"
-              GENERIC_ARG_LIST
-                COLON2 "::"
-                L_ANGLE "<"
-                TYPE_ARG
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "u32"
-                R_ANGLE ">"
-              ARG_LIST
-                L_PAREN "("
-                R_PAREN ")"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE "\n       "
-              EXPR_STMT
-                BREAK_EXPR
-                  BREAK_KW "break"
-                SEMICOLON ";"
-              WHITESPACE "\n   "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast b/crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
index 97416f16acc..b94d43beb3c 100644
--- a/crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
+++ b/crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
@@ -1,37 +1,37 @@
-SOURCE_FILE@0..65
-  MACRO_RULES@0..64
-    COMMENT@0..13 "/// Some docs"
-    WHITESPACE@13..14 "\n"
-    ATTR@14..29
-      POUND@14..15 "#"
-      L_BRACK@15..16 "["
-      META@16..28
-        PATH@16..28
-          PATH_SEGMENT@16..28
-            NAME_REF@16..28
-              IDENT@16..28 "macro_export"
-      R_BRACK@28..29 "]"
-    WHITESPACE@29..30 "\n"
-    MACRO_RULES_KW@30..41 "macro_rules"
-    BANG@41..42 "!"
-    WHITESPACE@42..43 " "
-    NAME@43..46
-      IDENT@43..46 "foo"
-    WHITESPACE@46..47 " "
-    TOKEN_TREE@47..64
-      L_CURLY@47..48 "{"
-      WHITESPACE@48..53 "\n    "
-      TOKEN_TREE@53..55
-        L_PAREN@53..54 "("
-        R_PAREN@54..55 ")"
-      WHITESPACE@55..56 " "
-      EQ@56..57 "="
-      R_ANGLE@57..58 ">"
-      WHITESPACE@58..59 " "
-      TOKEN_TREE@59..61
-        L_CURLY@59..60 "{"
-        R_CURLY@60..61 "}"
-      SEMICOLON@61..62 ";"
-      WHITESPACE@62..63 "\n"
-      R_CURLY@63..64 "}"
-  WHITESPACE@64..65 "\n"
+SOURCE_FILE
+  MACRO_RULES
+    COMMENT "/// Some docs"
+    WHITESPACE "\n"
+    ATTR
+      POUND "#"
+      L_BRACK "["
+      META
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "macro_export"
+      R_BRACK "]"
+    WHITESPACE "\n"
+    MACRO_RULES_KW "macro_rules"
+    BANG "!"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    WHITESPACE " "
+    TOKEN_TREE
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      TOKEN_TREE
+        L_PAREN "("
+        R_PAREN ")"
+      WHITESPACE " "
+      EQ "="
+      R_ANGLE ">"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        R_CURLY "}"
+      SEMICOLON ";"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.txt b/crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.txt
deleted file mode 100644
index b94d43beb3c..00000000000
--- a/crates/parser/test_data/parser/ok/0053_outer_attribute_on_macro_rules.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-SOURCE_FILE
-  MACRO_RULES
-    COMMENT "/// Some docs"
-    WHITESPACE "\n"
-    ATTR
-      POUND "#"
-      L_BRACK "["
-      META
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "macro_export"
-      R_BRACK "]"
-    WHITESPACE "\n"
-    MACRO_RULES_KW "macro_rules"
-    BANG "!"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    WHITESPACE " "
-    TOKEN_TREE
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      TOKEN_TREE
-        L_PAREN "("
-        R_PAREN ")"
-      WHITESPACE " "
-      EQ "="
-      R_ANGLE ">"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        R_CURLY "}"
-      SEMICOLON ";"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.rast b/crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.rast
index e85cb15961e..4e1e31f3767 100644
--- a/crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.rast
+++ b/crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.rast
@@ -1,126 +1,126 @@
-SOURCE_FILE@0..88
-  FN@0..26
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "a"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    RET_TYPE@7..23
-      THIN_ARROW@7..9 "->"
-      WHITESPACE@9..10 " "
-      PATH_TYPE@10..23
-        PATH@10..23
-          PATH_SEGMENT@10..23
-            NAME_REF@10..13
-              IDENT@10..13 "Foo"
-            GENERIC_ARG_LIST@13..23
-              L_ANGLE@13..14 "<"
-              TYPE_ARG@14..22
-                PATH_TYPE@14..22
-                  PATH@14..22
-                    PATH@14..17
-                      PATH_SEGMENT@14..17
-                        NAME_REF@14..17
-                          IDENT@14..17 "bar"
-                    COLON2@17..19 "::"
-                    PATH_SEGMENT@19..22
-                      NAME_REF@19..22
-                        IDENT@19..22 "Baz"
-              R_ANGLE@22..23 ">"
-    WHITESPACE@23..24 " "
-    BLOCK_EXPR@24..26
-      STMT_LIST@24..26
-        L_CURLY@24..25 "{"
-        R_CURLY@25..26 "}"
-  WHITESPACE@26..28 "\n\n"
-  FN@28..56
-    FN_KW@28..30 "fn"
-    WHITESPACE@30..31 " "
-    NAME@31..32
-      IDENT@31..32 "b"
-    PARAM_LIST@32..53
-      L_PAREN@32..33 "("
-      PARAM@33..52
-        WILDCARD_PAT@33..34
-          UNDERSCORE@33..34 "_"
-        COLON@34..35 ":"
-        WHITESPACE@35..36 " "
-        IMPL_TRAIT_TYPE@36..52
-          IMPL_KW@36..40 "impl"
-          WHITESPACE@40..41 " "
-          TYPE_BOUND_LIST@41..52
-            TYPE_BOUND@41..52
-              PATH_TYPE@41..52
-                PATH@41..52
-                  PATH_SEGMENT@41..52
-                    NAME_REF@41..46
-                      IDENT@41..46 "FnMut"
-                    PARAM_LIST@46..52
-                      L_PAREN@46..47 "("
-                      PARAM@47..51
-                        PATH_TYPE@47..51
-                          PATH@47..51
-                            PATH@47..48
-                              PATH_SEGMENT@47..48
-                                NAME_REF@47..48
-                                  IDENT@47..48 "x"
-                            COLON2@48..50 "::"
-                            PATH_SEGMENT@50..51
-                              NAME_REF@50..51
-                                IDENT@50..51 "Y"
-                      R_PAREN@51..52 ")"
-      R_PAREN@52..53 ")"
-    WHITESPACE@53..54 " "
-    BLOCK_EXPR@54..56
-      STMT_LIST@54..56
-        L_CURLY@54..55 "{"
-        R_CURLY@55..56 "}"
-  WHITESPACE@56..58 "\n\n"
-  FN@58..87
-    FN_KW@58..60 "fn"
-    WHITESPACE@60..61 " "
-    NAME@61..62
-      IDENT@61..62 "c"
-    PARAM_LIST@62..84
-      L_PAREN@62..63 "("
-      PARAM@63..83
-        WILDCARD_PAT@63..64
-          UNDERSCORE@63..64 "_"
-        COLON@64..65 ":"
-        WHITESPACE@65..66 " "
-        IMPL_TRAIT_TYPE@66..83
-          IMPL_KW@66..70 "impl"
-          WHITESPACE@70..71 " "
-          TYPE_BOUND_LIST@71..83
-            TYPE_BOUND@71..83
-              PATH_TYPE@71..83
-                PATH@71..83
-                  PATH_SEGMENT@71..83
-                    NAME_REF@71..76
-                      IDENT@71..76 "FnMut"
-                    PARAM_LIST@76..83
-                      L_PAREN@76..77 "("
-                      PARAM@77..82
-                        REF_TYPE@77..82
-                          AMP@77..78 "&"
-                          PATH_TYPE@78..82
-                            PATH@78..82
-                              PATH@78..79
-                                PATH_SEGMENT@78..79
-                                  NAME_REF@78..79
-                                    IDENT@78..79 "x"
-                              COLON2@79..81 "::"
-                              PATH_SEGMENT@81..82
-                                NAME_REF@81..82
-                                  IDENT@81..82 "Y"
-                      R_PAREN@82..83 ")"
-      R_PAREN@83..84 ")"
-    WHITESPACE@84..85 " "
-    BLOCK_EXPR@85..87
-      STMT_LIST@85..87
-        L_CURLY@85..86 "{"
-        R_CURLY@86..87 "}"
-  WHITESPACE@87..88 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "a"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    RET_TYPE
+      THIN_ARROW "->"
+      WHITESPACE " "
+      PATH_TYPE
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "Foo"
+            GENERIC_ARG_LIST
+              L_ANGLE "<"
+              TYPE_ARG
+                PATH_TYPE
+                  PATH
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "bar"
+                    COLON2 "::"
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Baz"
+              R_ANGLE ">"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "b"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        WILDCARD_PAT
+          UNDERSCORE "_"
+        COLON ":"
+        WHITESPACE " "
+        IMPL_TRAIT_TYPE
+          IMPL_KW "impl"
+          WHITESPACE " "
+          TYPE_BOUND_LIST
+            TYPE_BOUND
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "FnMut"
+                    PARAM_LIST
+                      L_PAREN "("
+                      PARAM
+                        PATH_TYPE
+                          PATH
+                            PATH
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "x"
+                            COLON2 "::"
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "Y"
+                      R_PAREN ")"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "c"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        WILDCARD_PAT
+          UNDERSCORE "_"
+        COLON ":"
+        WHITESPACE " "
+        IMPL_TRAIT_TYPE
+          IMPL_KW "impl"
+          WHITESPACE " "
+          TYPE_BOUND_LIST
+            TYPE_BOUND
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "FnMut"
+                    PARAM_LIST
+                      L_PAREN "("
+                      PARAM
+                        REF_TYPE
+                          AMP "&"
+                          PATH_TYPE
+                            PATH
+                              PATH
+                                PATH_SEGMENT
+                                  NAME_REF
+                                    IDENT "x"
+                              COLON2 "::"
+                              PATH_SEGMENT
+                                NAME_REF
+                                  IDENT "Y"
+                      R_PAREN ")"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.txt b/crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.txt
deleted file mode 100644
index 4e1e31f3767..00000000000
--- a/crates/parser/test_data/parser/ok/0054_qual_path_in_type_arg.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "a"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    RET_TYPE
-      THIN_ARROW "->"
-      WHITESPACE " "
-      PATH_TYPE
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "Foo"
-            GENERIC_ARG_LIST
-              L_ANGLE "<"
-              TYPE_ARG
-                PATH_TYPE
-                  PATH
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "bar"
-                    COLON2 "::"
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Baz"
-              R_ANGLE ">"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "b"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        WILDCARD_PAT
-          UNDERSCORE "_"
-        COLON ":"
-        WHITESPACE " "
-        IMPL_TRAIT_TYPE
-          IMPL_KW "impl"
-          WHITESPACE " "
-          TYPE_BOUND_LIST
-            TYPE_BOUND
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "FnMut"
-                    PARAM_LIST
-                      L_PAREN "("
-                      PARAM
-                        PATH_TYPE
-                          PATH
-                            PATH
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "x"
-                            COLON2 "::"
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "Y"
-                      R_PAREN ")"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "c"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        WILDCARD_PAT
-          UNDERSCORE "_"
-        COLON ":"
-        WHITESPACE " "
-        IMPL_TRAIT_TYPE
-          IMPL_KW "impl"
-          WHITESPACE " "
-          TYPE_BOUND_LIST
-            TYPE_BOUND
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "FnMut"
-                    PARAM_LIST
-                      L_PAREN "("
-                      PARAM
-                        REF_TYPE
-                          AMP "&"
-                          PATH_TYPE
-                            PATH
-                              PATH
-                                PATH_SEGMENT
-                                  NAME_REF
-                                    IDENT "x"
-                              COLON2 "::"
-                              PATH_SEGMENT
-                                NAME_REF
-                                  IDENT "Y"
-                      R_PAREN ")"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0055_dot_dot_dot.rast b/crates/parser/test_data/parser/ok/0055_dot_dot_dot.rast
index b43c38b9e04..684f499df5c 100644
--- a/crates/parser/test_data/parser/ok/0055_dot_dot_dot.rast
+++ b/crates/parser/test_data/parser/ok/0055_dot_dot_dot.rast
@@ -1,50 +1,50 @@
-SOURCE_FILE@0..49
-  TYPE_ALIAS@0..12
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..6
-      IDENT@5..6 "X"
-    WHITESPACE@6..7 " "
-    EQ@7..8 "="
-    WHITESPACE@8..9 " "
-    TUPLE_TYPE@9..11
-      L_PAREN@9..10 "("
-      R_PAREN@10..11 ")"
-    SEMICOLON@11..12 ";"
-  WHITESPACE@12..14 "\n\n"
-  FN@14..48
-    FN_KW@14..16 "fn"
-    WHITESPACE@16..17 " "
-    NAME@17..21
-      IDENT@17..21 "main"
-    PARAM_LIST@21..23
-      L_PAREN@21..22 "("
-      R_PAREN@22..23 ")"
-    WHITESPACE@23..24 " "
-    BLOCK_EXPR@24..48
-      STMT_LIST@24..48
-        L_CURLY@24..25 "{"
-        WHITESPACE@25..30 "\n    "
-        LET_STMT@30..46
-          LET_KW@30..33 "let"
-          WHITESPACE@33..34 " "
-          TUPLE_PAT@34..36
-            L_PAREN@34..35 "("
-            R_PAREN@35..36 ")"
-          COLON@36..37 ":"
-          PATH_TYPE@37..40
-            PATH@37..40
-              PATH_SEGMENT@37..40
-                COLON2@37..39 "::"
-                NAME_REF@39..40
-                  IDENT@39..40 "X"
-          WHITESPACE@40..41 " "
-          EQ@41..42 "="
-          WHITESPACE@42..43 " "
-          TUPLE_EXPR@43..45
-            L_PAREN@43..44 "("
-            R_PAREN@44..45 ")"
-          SEMICOLON@45..46 ";"
-        WHITESPACE@46..47 "\n"
-        R_CURLY@47..48 "}"
-  WHITESPACE@48..49 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "X"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          TUPLE_PAT
+            L_PAREN "("
+            R_PAREN ")"
+          COLON ":"
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                COLON2 "::"
+                NAME_REF
+                  IDENT "X"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0055_dot_dot_dot.txt b/crates/parser/test_data/parser/ok/0055_dot_dot_dot.txt
deleted file mode 100644
index 684f499df5c..00000000000
--- a/crates/parser/test_data/parser/ok/0055_dot_dot_dot.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "X"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          TUPLE_PAT
-            L_PAREN "("
-            R_PAREN ")"
-          COLON ":"
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                COLON2 "::"
-                NAME_REF
-                  IDENT "X"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0056_neq_in_type.rast b/crates/parser/test_data/parser/ok/0056_neq_in_type.rast
index 7393f1df83a..55ce31275fb 100644
--- a/crates/parser/test_data/parser/ok/0056_neq_in_type.rast
+++ b/crates/parser/test_data/parser/ok/0056_neq_in_type.rast
@@ -1,66 +1,65 @@
-SOURCE_FILE@0..71
-  FN@0..70
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..70
-      STMT_LIST@10..70
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        IF_EXPR@16..68
-          IF_KW@16..18 "if"
-          WHITESPACE@18..19 " "
-          CONDITION@19..65
-            BIN_EXPR@19..65
-              CAST_EXPR@19..40
-                METHOD_CALL_EXPR@19..33
-                  LITERAL@19..25
-                    FLOAT_NUMBER@19..25 "1.0f32"
-                  DOT@25..26 "."
-                  NAME_REF@26..31
-                    IDENT@26..31 "floor"
-                  ARG_LIST@31..33
-                    L_PAREN@31..32 "("
-                    R_PAREN@32..33 ")"
-                WHITESPACE@33..34 " "
-                AS_KW@34..36 "as"
-                WHITESPACE@36..37 " "
-                PATH_TYPE@37..40
-                  PATH@37..40
-                    PATH_SEGMENT@37..40
-                      NAME_REF@37..40
-                        IDENT@37..40 "i64"
-              WHITESPACE@40..41 " "
-              NEQ@41..43 "!="
-              WHITESPACE@43..44 " "
-              CAST_EXPR@44..65
-                METHOD_CALL_EXPR@44..58
-                  LITERAL@44..50
-                    FLOAT_NUMBER@44..50 "1.0f32"
-                  DOT@50..51 "."
-                  NAME_REF@51..56
-                    IDENT@51..56 "floor"
-                  ARG_LIST@56..58
-                    L_PAREN@56..57 "("
-                    R_PAREN@57..58 ")"
-                WHITESPACE@58..59 " "
-                AS_KW@59..61 "as"
-                WHITESPACE@61..62 " "
-                PATH_TYPE@62..65
-                  PATH@62..65
-                    PATH_SEGMENT@62..65
-                      NAME_REF@62..65
-                        IDENT@62..65 "i64"
-          WHITESPACE@65..66 " "
-          BLOCK_EXPR@66..68
-            STMT_LIST@66..68
-              L_CURLY@66..67 "{"
-              R_CURLY@67..68 "}"
-        WHITESPACE@68..69 "\n"
-        R_CURLY@69..70 "}"
-  WHITESPACE@70..71 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        IF_EXPR
+          IF_KW "if"
+          WHITESPACE " "
+          BIN_EXPR
+            CAST_EXPR
+              METHOD_CALL_EXPR
+                LITERAL
+                  FLOAT_NUMBER "1.0f32"
+                DOT "."
+                NAME_REF
+                  IDENT "floor"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i64"
+            WHITESPACE " "
+            NEQ "!="
+            WHITESPACE " "
+            CAST_EXPR
+              METHOD_CALL_EXPR
+                LITERAL
+                  FLOAT_NUMBER "1.0f32"
+                DOT "."
+                NAME_REF
+                  IDENT "floor"
+                ARG_LIST
+                  L_PAREN "("
+                  R_PAREN ")"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "i64"
+          WHITESPACE " "
+          BLOCK_EXPR
+            STMT_LIST
+              L_CURLY "{"
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0056_neq_in_type.txt b/crates/parser/test_data/parser/ok/0056_neq_in_type.txt
deleted file mode 100644
index 55ce31275fb..00000000000
--- a/crates/parser/test_data/parser/ok/0056_neq_in_type.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        IF_EXPR
-          IF_KW "if"
-          WHITESPACE " "
-          BIN_EXPR
-            CAST_EXPR
-              METHOD_CALL_EXPR
-                LITERAL
-                  FLOAT_NUMBER "1.0f32"
-                DOT "."
-                NAME_REF
-                  IDENT "floor"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i64"
-            WHITESPACE " "
-            NEQ "!="
-            WHITESPACE " "
-            CAST_EXPR
-              METHOD_CALL_EXPR
-                LITERAL
-                  FLOAT_NUMBER "1.0f32"
-                DOT "."
-                NAME_REF
-                  IDENT "floor"
-                ARG_LIST
-                  L_PAREN "("
-                  R_PAREN ")"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "i64"
-          WHITESPACE " "
-          BLOCK_EXPR
-            STMT_LIST
-              L_CURLY "{"
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0057_loop_in_call.rast b/crates/parser/test_data/parser/ok/0057_loop_in_call.rast
index f8efd8ea4ca..67837e4750c 100644
--- a/crates/parser/test_data/parser/ok/0057_loop_in_call.rast
+++ b/crates/parser/test_data/parser/ok/0057_loop_in_call.rast
@@ -1,59 +1,59 @@
-SOURCE_FILE@0..50
-  FN@0..17
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..14
-      L_PAREN@6..7 "("
-      PARAM@7..13
-        IDENT_PAT@7..8
-          NAME@7..8
-            IDENT@7..8 "x"
-        COLON@8..9 ":"
-        WHITESPACE@9..10 " "
-        PATH_TYPE@10..13
-          PATH@10..13
-            PATH_SEGMENT@10..13
-              NAME_REF@10..13
-                IDENT@10..13 "i32"
-      R_PAREN@13..14 ")"
-    WHITESPACE@14..15 " "
-    BLOCK_EXPR@15..17
-      STMT_LIST@15..17
-        L_CURLY@15..16 "{"
-        R_CURLY@16..17 "}"
-  WHITESPACE@17..19 "\n\n"
-  FN@19..50
-    FN_KW@19..21 "fn"
-    WHITESPACE@21..22 " "
-    NAME@22..26
-      IDENT@22..26 "main"
-    PARAM_LIST@26..28
-      L_PAREN@26..27 "("
-      R_PAREN@27..28 ")"
-    WHITESPACE@28..29 " "
-    BLOCK_EXPR@29..50
-      STMT_LIST@29..50
-        L_CURLY@29..30 "{"
-        WHITESPACE@30..35 "\n    "
-        EXPR_STMT@35..48
-          CALL_EXPR@35..47
-            PATH_EXPR@35..38
-              PATH@35..38
-                PATH_SEGMENT@35..38
-                  NAME_REF@35..38
-                    IDENT@35..38 "foo"
-            ARG_LIST@38..47
-              L_PAREN@38..39 "("
-              LOOP_EXPR@39..46
-                LOOP_KW@39..43 "loop"
-                WHITESPACE@43..44 " "
-                BLOCK_EXPR@44..46
-                  STMT_LIST@44..46
-                    L_CURLY@44..45 "{"
-                    R_CURLY@45..46 "}"
-              R_PAREN@46..47 ")"
-          SEMICOLON@47..48 ";"
-        WHITESPACE@48..49 "\n"
-        R_CURLY@49..50 "}"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "x"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "foo"
+            ARG_LIST
+              L_PAREN "("
+              LOOP_EXPR
+                LOOP_KW "loop"
+                WHITESPACE " "
+                BLOCK_EXPR
+                  STMT_LIST
+                    L_CURLY "{"
+                    R_CURLY "}"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0057_loop_in_call.txt b/crates/parser/test_data/parser/ok/0057_loop_in_call.txt
deleted file mode 100644
index 67837e4750c..00000000000
--- a/crates/parser/test_data/parser/ok/0057_loop_in_call.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "x"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "i32"
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "foo"
-            ARG_LIST
-              L_PAREN "("
-              LOOP_EXPR
-                LOOP_KW "loop"
-                WHITESPACE " "
-                BLOCK_EXPR
-                  STMT_LIST
-                    L_CURLY "{"
-                    R_CURLY "}"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
diff --git a/crates/parser/test_data/parser/ok/0058_unary_expr_precedence.rast b/crates/parser/test_data/parser/ok/0058_unary_expr_precedence.rast
index 476a19307ab..683d5070aee 100644
--- a/crates/parser/test_data/parser/ok/0058_unary_expr_precedence.rast
+++ b/crates/parser/test_data/parser/ok/0058_unary_expr_precedence.rast
@@ -1,97 +1,97 @@
-SOURCE_FILE@0..79
-  FN@0..78
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..78
-      STMT_LIST@9..78
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..27
-          BIN_EXPR@15..26
-            BIN_EXPR@15..22
-              LITERAL@15..16
-                INT_NUMBER@15..16 "1"
-              WHITESPACE@16..17 " "
-              PLUS@17..18 "+"
-              WHITESPACE@18..19 " "
-              PREFIX_EXPR@19..22
-                STAR@19..20 "*"
-                REF_EXPR@20..22
-                  AMP@20..21 "&"
-                  LITERAL@21..22
-                    INT_NUMBER@21..22 "2"
-            WHITESPACE@22..23 " "
-            PLUS@23..24 "+"
-            WHITESPACE@24..25 " "
-            LITERAL@25..26
-              INT_NUMBER@25..26 "3"
-          SEMICOLON@26..27 ";"
-        WHITESPACE@27..32 "\n    "
-        EXPR_STMT@32..43
-          CAST_EXPR@32..42
-            PREFIX_EXPR@32..35
-              STAR@32..33 "*"
-              REF_EXPR@33..35
-                AMP@33..34 "&"
-                LITERAL@34..35
-                  INT_NUMBER@34..35 "1"
-            WHITESPACE@35..36 " "
-            AS_KW@36..38 "as"
-            WHITESPACE@38..39 " "
-            PATH_TYPE@39..42
-              PATH@39..42
-                PATH_SEGMENT@39..42
-                  NAME_REF@39..42
-                    IDENT@39..42 "u64"
-          SEMICOLON@42..43 ";"
-        WHITESPACE@43..48 "\n    "
-        EXPR_STMT@48..54
-          PREFIX_EXPR@48..53
-            STAR@48..49 "*"
-            CALL_EXPR@49..53
-              PATH_EXPR@49..50
-                PATH@49..50
-                  PATH_SEGMENT@49..50
-                    NAME_REF@49..50
-                      IDENT@49..50 "x"
-              ARG_LIST@50..53
-                L_PAREN@50..51 "("
-                LITERAL@51..52
-                  INT_NUMBER@51..52 "1"
-                R_PAREN@52..53 ")"
-          SEMICOLON@53..54 ";"
-        WHITESPACE@54..59 "\n    "
-        EXPR_STMT@59..65
-          REF_EXPR@59..64
-            AMP@59..60 "&"
-            INDEX_EXPR@60..64
-              PATH_EXPR@60..61
-                PATH@60..61
-                  PATH_SEGMENT@60..61
-                    NAME_REF@60..61
-                      IDENT@60..61 "x"
-              L_BRACK@61..62 "["
-              LITERAL@62..63
-                INT_NUMBER@62..63 "1"
-              R_BRACK@63..64 "]"
-          SEMICOLON@64..65 ";"
-        WHITESPACE@65..70 "\n    "
-        EXPR_STMT@70..76
-          RANGE_EXPR@70..75
-            PREFIX_EXPR@70..72
-              MINUS@70..71 "-"
-              LITERAL@71..72
-                INT_NUMBER@71..72 "1"
-            DOT2@72..74 ".."
-            LITERAL@74..75
-              INT_NUMBER@74..75 "2"
-          SEMICOLON@75..76 ";"
-        WHITESPACE@76..77 "\n"
-        R_CURLY@77..78 "}"
-  WHITESPACE@78..79 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BIN_EXPR
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "1"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              PREFIX_EXPR
+                STAR "*"
+                REF_EXPR
+                  AMP "&"
+                  LITERAL
+                    INT_NUMBER "2"
+            WHITESPACE " "
+            PLUS "+"
+            WHITESPACE " "
+            LITERAL
+              INT_NUMBER "3"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CAST_EXPR
+            PREFIX_EXPR
+              STAR "*"
+              REF_EXPR
+                AMP "&"
+                LITERAL
+                  INT_NUMBER "1"
+            WHITESPACE " "
+            AS_KW "as"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u64"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          PREFIX_EXPR
+            STAR "*"
+            CALL_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "x"
+              ARG_LIST
+                L_PAREN "("
+                LITERAL
+                  INT_NUMBER "1"
+                R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          REF_EXPR
+            AMP "&"
+            INDEX_EXPR
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "x"
+              L_BRACK "["
+              LITERAL
+                INT_NUMBER "1"
+              R_BRACK "]"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RANGE_EXPR
+            PREFIX_EXPR
+              MINUS "-"
+              LITERAL
+                INT_NUMBER "1"
+            DOT2 ".."
+            LITERAL
+              INT_NUMBER "2"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0058_unary_expr_precedence.txt b/crates/parser/test_data/parser/ok/0058_unary_expr_precedence.txt
deleted file mode 100644
index 683d5070aee..00000000000
--- a/crates/parser/test_data/parser/ok/0058_unary_expr_precedence.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BIN_EXPR
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "1"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              PREFIX_EXPR
-                STAR "*"
-                REF_EXPR
-                  AMP "&"
-                  LITERAL
-                    INT_NUMBER "2"
-            WHITESPACE " "
-            PLUS "+"
-            WHITESPACE " "
-            LITERAL
-              INT_NUMBER "3"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CAST_EXPR
-            PREFIX_EXPR
-              STAR "*"
-              REF_EXPR
-                AMP "&"
-                LITERAL
-                  INT_NUMBER "1"
-            WHITESPACE " "
-            AS_KW "as"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u64"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          PREFIX_EXPR
-            STAR "*"
-            CALL_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "x"
-              ARG_LIST
-                L_PAREN "("
-                LITERAL
-                  INT_NUMBER "1"
-                R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          REF_EXPR
-            AMP "&"
-            INDEX_EXPR
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "x"
-              L_BRACK "["
-              LITERAL
-                INT_NUMBER "1"
-              R_BRACK "]"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RANGE_EXPR
-            PREFIX_EXPR
-              MINUS "-"
-              LITERAL
-                INT_NUMBER "1"
-            DOT2 ".."
-            LITERAL
-              INT_NUMBER "2"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0059_loops_in_parens.rast b/crates/parser/test_data/parser/ok/0059_loops_in_parens.rast
index 0cb1ccf044a..79bc7f971d1 100644
--- a/crates/parser/test_data/parser/ok/0059_loops_in_parens.rast
+++ b/crates/parser/test_data/parser/ok/0059_loops_in_parens.rast
@@ -1,101 +1,100 @@
-SOURCE_FILE@0..105
-  FN@0..104
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..104
-      STMT_LIST@10..104
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        EXPR_STMT@16..50
-          CALL_EXPR@16..49
-            PATH_EXPR@16..20
-              PATH@16..20
-                PATH_SEGMENT@16..20
-                  NAME_REF@16..20
-                    IDENT@16..20 "Some"
-            ARG_LIST@20..49
-              L_PAREN@20..21 "("
-              FOR_EXPR@21..48
-                FOR_KW@21..24 "for"
-                WHITESPACE@24..25 " "
-                WILDCARD_PAT@25..26
-                  UNDERSCORE@25..26 "_"
-                WHITESPACE@26..27 " "
-                IN_KW@27..29 "in"
-                WHITESPACE@29..30 " "
-                METHOD_CALL_EXPR@30..45
-                  ARRAY_EXPR@30..33
-                    L_BRACK@30..31 "["
-                    LITERAL@31..32
-                      INT_NUMBER@31..32 "1"
-                    R_BRACK@32..33 "]"
-                  DOT@33..34 "."
-                  NAME_REF@34..43
-                    IDENT@34..43 "into_iter"
-                  ARG_LIST@43..45
-                    L_PAREN@43..44 "("
-                    R_PAREN@44..45 ")"
-                WHITESPACE@45..46 " "
-                BLOCK_EXPR@46..48
-                  STMT_LIST@46..48
-                    L_CURLY@46..47 "{"
-                    R_CURLY@47..48 "}"
-              R_PAREN@48..49 ")"
-          SEMICOLON@49..50 ";"
-        WHITESPACE@50..55 "\n    "
-        EXPR_STMT@55..77
-          CALL_EXPR@55..76
-            PATH_EXPR@55..59
-              PATH@55..59
-                PATH_SEGMENT@55..59
-                  NAME_REF@55..59
-                    IDENT@55..59 "Some"
-            ARG_LIST@59..76
-              L_PAREN@59..60 "("
-              LOOP_EXPR@60..75
-                LOOP_KW@60..64 "loop"
-                WHITESPACE@64..65 " "
-                BLOCK_EXPR@65..75
-                  STMT_LIST@65..75
-                    L_CURLY@65..66 "{"
-                    WHITESPACE@66..67 " "
-                    EXPR_STMT@67..73
-                      BREAK_EXPR@67..72
-                        BREAK_KW@67..72 "break"
-                      SEMICOLON@72..73 ";"
-                    WHITESPACE@73..74 " "
-                    R_CURLY@74..75 "}"
-              R_PAREN@75..76 ")"
-          SEMICOLON@76..77 ";"
-        WHITESPACE@77..82 "\n    "
-        EXPR_STMT@82..102
-          CALL_EXPR@82..101
-            PATH_EXPR@82..86
-              PATH@82..86
-                PATH_SEGMENT@82..86
-                  NAME_REF@82..86
-                    IDENT@82..86 "Some"
-            ARG_LIST@86..101
-              L_PAREN@86..87 "("
-              WHILE_EXPR@87..100
-                WHILE_KW@87..92 "while"
-                WHITESPACE@92..93 " "
-                CONDITION@93..97
-                  LITERAL@93..97
-                    TRUE_KW@93..97 "true"
-                WHITESPACE@97..98 " "
-                BLOCK_EXPR@98..100
-                  STMT_LIST@98..100
-                    L_CURLY@98..99 "{"
-                    R_CURLY@99..100 "}"
-              R_PAREN@100..101 ")"
-          SEMICOLON@101..102 ";"
-        WHITESPACE@102..103 "\n"
-        R_CURLY@103..104 "}"
-  WHITESPACE@104..105 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Some"
+            ARG_LIST
+              L_PAREN "("
+              FOR_EXPR
+                FOR_KW "for"
+                WHITESPACE " "
+                WILDCARD_PAT
+                  UNDERSCORE "_"
+                WHITESPACE " "
+                IN_KW "in"
+                WHITESPACE " "
+                METHOD_CALL_EXPR
+                  ARRAY_EXPR
+                    L_BRACK "["
+                    LITERAL
+                      INT_NUMBER "1"
+                    R_BRACK "]"
+                  DOT "."
+                  NAME_REF
+                    IDENT "into_iter"
+                  ARG_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+                WHITESPACE " "
+                BLOCK_EXPR
+                  STMT_LIST
+                    L_CURLY "{"
+                    R_CURLY "}"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Some"
+            ARG_LIST
+              L_PAREN "("
+              LOOP_EXPR
+                LOOP_KW "loop"
+                WHITESPACE " "
+                BLOCK_EXPR
+                  STMT_LIST
+                    L_CURLY "{"
+                    WHITESPACE " "
+                    EXPR_STMT
+                      BREAK_EXPR
+                        BREAK_KW "break"
+                      SEMICOLON ";"
+                    WHITESPACE " "
+                    R_CURLY "}"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          CALL_EXPR
+            PATH_EXPR
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Some"
+            ARG_LIST
+              L_PAREN "("
+              WHILE_EXPR
+                WHILE_KW "while"
+                WHITESPACE " "
+                LITERAL
+                  TRUE_KW "true"
+                WHITESPACE " "
+                BLOCK_EXPR
+                  STMT_LIST
+                    L_CURLY "{"
+                    R_CURLY "}"
+              R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0059_loops_in_parens.txt b/crates/parser/test_data/parser/ok/0059_loops_in_parens.txt
deleted file mode 100644
index 79bc7f971d1..00000000000
--- a/crates/parser/test_data/parser/ok/0059_loops_in_parens.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Some"
-            ARG_LIST
-              L_PAREN "("
-              FOR_EXPR
-                FOR_KW "for"
-                WHITESPACE " "
-                WILDCARD_PAT
-                  UNDERSCORE "_"
-                WHITESPACE " "
-                IN_KW "in"
-                WHITESPACE " "
-                METHOD_CALL_EXPR
-                  ARRAY_EXPR
-                    L_BRACK "["
-                    LITERAL
-                      INT_NUMBER "1"
-                    R_BRACK "]"
-                  DOT "."
-                  NAME_REF
-                    IDENT "into_iter"
-                  ARG_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-                WHITESPACE " "
-                BLOCK_EXPR
-                  STMT_LIST
-                    L_CURLY "{"
-                    R_CURLY "}"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Some"
-            ARG_LIST
-              L_PAREN "("
-              LOOP_EXPR
-                LOOP_KW "loop"
-                WHITESPACE " "
-                BLOCK_EXPR
-                  STMT_LIST
-                    L_CURLY "{"
-                    WHITESPACE " "
-                    EXPR_STMT
-                      BREAK_EXPR
-                        BREAK_KW "break"
-                      SEMICOLON ";"
-                    WHITESPACE " "
-                    R_CURLY "}"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          CALL_EXPR
-            PATH_EXPR
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Some"
-            ARG_LIST
-              L_PAREN "("
-              WHILE_EXPR
-                WHILE_KW "while"
-                WHITESPACE " "
-                LITERAL
-                  TRUE_KW "true"
-                WHITESPACE " "
-                BLOCK_EXPR
-                  STMT_LIST
-                    L_CURLY "{"
-                    R_CURLY "}"
-              R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0060_as_range.rast b/crates/parser/test_data/parser/ok/0060_as_range.rast
index f6921085059..81fc02b6f4a 100644
--- a/crates/parser/test_data/parser/ok/0060_as_range.rast
+++ b/crates/parser/test_data/parser/ok/0060_as_range.rast
@@ -1,56 +1,56 @@
-SOURCE_FILE@0..56
-  FN@0..55
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..55
-      STMT_LIST@10..55
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        EXPR_STMT@16..30
-          RANGE_EXPR@16..29
-            CAST_EXPR@16..26
-              LITERAL@16..17
-                INT_NUMBER@16..17 "0"
-              WHITESPACE@17..18 " "
-              AS_KW@18..20 "as"
-              WHITESPACE@20..21 " "
-              PATH_TYPE@21..26
-                PATH@21..26
-                  PATH_SEGMENT@21..26
-                    NAME_REF@21..26
-                      IDENT@21..26 "usize"
-            WHITESPACE@26..27 " "
-            DOT2@27..29 ".."
-          SEMICOLON@29..30 ";"
-        WHITESPACE@30..35 "\n    "
-        EXPR_STMT@35..53
-          RANGE_EXPR@35..52
-            BIN_EXPR@35..49
-              LITERAL@35..36
-                INT_NUMBER@35..36 "1"
-              WHITESPACE@36..37 " "
-              PLUS@37..38 "+"
-              WHITESPACE@38..39 " "
-              CAST_EXPR@39..49
-                LITERAL@39..40
-                  INT_NUMBER@39..40 "2"
-                WHITESPACE@40..41 " "
-                AS_KW@41..43 "as"
-                WHITESPACE@43..44 " "
-                PATH_TYPE@44..49
-                  PATH@44..49
-                    PATH_SEGMENT@44..49
-                      NAME_REF@44..49
-                        IDENT@44..49 "usize"
-            WHITESPACE@49..50 " "
-            DOT2@50..52 ".."
-          SEMICOLON@52..53 ";"
-        WHITESPACE@53..54 "\n"
-        R_CURLY@54..55 "}"
-  WHITESPACE@55..56 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RANGE_EXPR
+            CAST_EXPR
+              LITERAL
+                INT_NUMBER "0"
+              WHITESPACE " "
+              AS_KW "as"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "usize"
+            WHITESPACE " "
+            DOT2 ".."
+          SEMICOLON ";"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          RANGE_EXPR
+            BIN_EXPR
+              LITERAL
+                INT_NUMBER "1"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              CAST_EXPR
+                LITERAL
+                  INT_NUMBER "2"
+                WHITESPACE " "
+                AS_KW "as"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "usize"
+            WHITESPACE " "
+            DOT2 ".."
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0060_as_range.txt b/crates/parser/test_data/parser/ok/0060_as_range.txt
deleted file mode 100644
index 81fc02b6f4a..00000000000
--- a/crates/parser/test_data/parser/ok/0060_as_range.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RANGE_EXPR
-            CAST_EXPR
-              LITERAL
-                INT_NUMBER "0"
-              WHITESPACE " "
-              AS_KW "as"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "usize"
-            WHITESPACE " "
-            DOT2 ".."
-          SEMICOLON ";"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          RANGE_EXPR
-            BIN_EXPR
-              LITERAL
-                INT_NUMBER "1"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              CAST_EXPR
-                LITERAL
-                  INT_NUMBER "2"
-                WHITESPACE " "
-                AS_KW "as"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "usize"
-            WHITESPACE " "
-            DOT2 ".."
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0061_match_full_range.rast b/crates/parser/test_data/parser/ok/0061_match_full_range.rast
index bcc8732c973..2f56e9041ea 100644
--- a/crates/parser/test_data/parser/ok/0061_match_full_range.rast
+++ b/crates/parser/test_data/parser/ok/0061_match_full_range.rast
@@ -1,27 +1,27 @@
-SOURCE_FILE@0..35
-  FN@0..34
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..7
-      IDENT@3..7 "main"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    BLOCK_EXPR@10..34
-      STMT_LIST@10..34
-        L_CURLY@10..11 "{"
-        WHITESPACE@11..16 "\n    "
-        MATCH_EXPR@16..32
-          MATCH_KW@16..21 "match"
-          WHITESPACE@21..22 " "
-          RANGE_EXPR@22..24
-            DOT2@22..24 ".."
-          WHITESPACE@24..25 " "
-          MATCH_ARM_LIST@25..32
-            L_CURLY@25..26 "{"
-            WHITESPACE@26..31 "\n    "
-            R_CURLY@31..32 "}"
-        WHITESPACE@32..33 "\n"
-        R_CURLY@33..34 "}"
-  WHITESPACE@34..35 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MATCH_EXPR
+          MATCH_KW "match"
+          WHITESPACE " "
+          RANGE_EXPR
+            DOT2 ".."
+          WHITESPACE " "
+          MATCH_ARM_LIST
+            L_CURLY "{"
+            WHITESPACE "\n    "
+            R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0061_match_full_range.txt b/crates/parser/test_data/parser/ok/0061_match_full_range.txt
deleted file mode 100644
index 2f56e9041ea..00000000000
--- a/crates/parser/test_data/parser/ok/0061_match_full_range.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MATCH_EXPR
-          MATCH_KW "match"
-          WHITESPACE " "
-          RANGE_EXPR
-            DOT2 ".."
-          WHITESPACE " "
-          MATCH_ARM_LIST
-            L_CURLY "{"
-            WHITESPACE "\n    "
-            R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0062_macro_2.0.rast b/crates/parser/test_data/parser/ok/0062_macro_2.0.rast
index 80f331bec37..3915ed75064 100644
--- a/crates/parser/test_data/parser/ok/0062_macro_2.0.rast
+++ b/crates/parser/test_data/parser/ok/0062_macro_2.0.rast
@@ -1,177 +1,177 @@
-SOURCE_FILE@0..349
-  MACRO_DEF@0..93
-    MACRO_KW@0..5 "macro"
-    WHITESPACE@5..6 " "
-    NAME@6..21
-      IDENT@6..21 "parse_use_trees"
-    TOKEN_TREE@21..93
-      TOKEN_TREE@21..41
-        L_PAREN@21..22 "("
-        DOLLAR@22..23 "$"
-        TOKEN_TREE@23..32
-          L_PAREN@23..24 "("
-          DOLLAR@24..25 "$"
-          IDENT@25..26 "s"
-          COLON@26..27 ":"
-          IDENT@27..31 "expr"
-          R_PAREN@31..32 ")"
-        COMMA@32..33 ","
-        STAR@33..34 "*"
-        WHITESPACE@34..35 " "
-        DOLLAR@35..36 "$"
-        TOKEN_TREE@36..39
-          L_PAREN@36..37 "("
-          COMMA@37..38 ","
-          R_PAREN@38..39 ")"
-        STAR@39..40 "*"
-        R_PAREN@40..41 ")"
-      WHITESPACE@41..42 " "
-      TOKEN_TREE@42..93
-        L_CURLY@42..43 "{"
-        WHITESPACE@43..48 "\n    "
-        IDENT@48..51 "vec"
-        BANG@51..52 "!"
-        TOKEN_TREE@52..91
-          L_BRACK@52..53 "["
-          WHITESPACE@53..62 "\n        "
-          DOLLAR@62..63 "$"
-          TOKEN_TREE@63..84
-            L_PAREN@63..64 "("
-            IDENT@64..78 "parse_use_tree"
-            TOKEN_TREE@78..82
-              L_PAREN@78..79 "("
-              DOLLAR@79..80 "$"
-              IDENT@80..81 "s"
-              R_PAREN@81..82 ")"
-            COMMA@82..83 ","
-            R_PAREN@83..84 ")"
-          STAR@84..85 "*"
-          WHITESPACE@85..90 "\n    "
-          R_BRACK@90..91 "]"
-        WHITESPACE@91..92 "\n"
-        R_CURLY@92..93 "}"
-  WHITESPACE@93..95 "\n\n"
-  FN@95..348
-    ATTR@95..102
-      POUND@95..96 "#"
-      L_BRACK@96..97 "["
-      META@97..101
-        PATH@97..101
-          PATH_SEGMENT@97..101
-            NAME_REF@97..101
-              IDENT@97..101 "test"
-      R_BRACK@101..102 "]"
-    WHITESPACE@102..103 "\n"
-    FN_KW@103..105 "fn"
-    WHITESPACE@105..106 " "
-    NAME@106..125
-      IDENT@106..125 "test_use_tree_merge"
-    PARAM_LIST@125..127
-      L_PAREN@125..126 "("
-      R_PAREN@126..127 ")"
-    WHITESPACE@127..128 " "
-    BLOCK_EXPR@128..348
-      STMT_LIST@128..348
-        L_CURLY@128..129 "{"
-        WHITESPACE@129..134 "\n    "
-        MACRO_DEF@134..346
-          MACRO_KW@134..139 "macro"
-          WHITESPACE@139..140 " "
-          NAME@140..150
-            IDENT@140..150 "test_merge"
-          TOKEN_TREE@150..346
-            TOKEN_TREE@150..203
-              L_PAREN@150..151 "("
-              TOKEN_TREE@151..175
-                L_BRACK@151..152 "["
-                DOLLAR@152..153 "$"
-                TOKEN_TREE@153..166
-                  L_PAREN@153..154 "("
-                  DOLLAR@154..155 "$"
-                  IDENT@155..160 "input"
-                  COLON@160..161 ":"
-                  IDENT@161..165 "expr"
-                  R_PAREN@165..166 ")"
-                COMMA@166..167 ","
-                STAR@167..168 "*"
-                WHITESPACE@168..169 " "
-                DOLLAR@169..170 "$"
-                TOKEN_TREE@170..173
-                  L_PAREN@170..171 "("
-                  COMMA@171..172 ","
-                  R_PAREN@172..173 ")"
-                STAR@173..174 "*"
-                R_BRACK@174..175 "]"
-              COMMA@175..176 ","
-              WHITESPACE@176..177 " "
-              TOKEN_TREE@177..202
-                L_BRACK@177..178 "["
-                DOLLAR@178..179 "$"
-                TOKEN_TREE@179..193
-                  L_PAREN@179..180 "("
-                  DOLLAR@180..181 "$"
-                  IDENT@181..187 "output"
-                  COLON@187..188 ":"
-                  IDENT@188..192 "expr"
-                  R_PAREN@192..193 ")"
-                COMMA@193..194 ","
-                STAR@194..195 "*"
-                WHITESPACE@195..196 " "
-                DOLLAR@196..197 "$"
-                TOKEN_TREE@197..200
-                  L_PAREN@197..198 "("
-                  COMMA@198..199 ","
-                  R_PAREN@199..200 ")"
-                STAR@200..201 "*"
-                R_BRACK@201..202 "]"
-              R_PAREN@202..203 ")"
-            WHITESPACE@203..204 " "
-            TOKEN_TREE@204..346
-              L_CURLY@204..205 "{"
-              WHITESPACE@205..214 "\n        "
-              IDENT@214..223 "assert_eq"
-              BANG@223..224 "!"
-              TOKEN_TREE@224..339
-                L_PAREN@224..225 "("
-                WHITESPACE@225..238 "\n            "
-                IDENT@238..253 "merge_use_trees"
-                TOKEN_TREE@253..284
-                  L_PAREN@253..254 "("
-                  IDENT@254..269 "parse_use_trees"
-                  BANG@269..270 "!"
-                  TOKEN_TREE@270..283
-                    L_PAREN@270..271 "("
-                    DOLLAR@271..272 "$"
-                    TOKEN_TREE@272..281
-                      L_PAREN@272..273 "("
-                      DOLLAR@273..274 "$"
-                      IDENT@274..279 "input"
-                      COMMA@279..280 ","
-                      R_PAREN@280..281 ")"
-                    STAR@281..282 "*"
-                    R_PAREN@282..283 ")"
-                  R_PAREN@283..284 ")"
-                COMMA@284..285 ","
-                WHITESPACE@285..298 "\n            "
-                IDENT@298..313 "parse_use_trees"
-                BANG@313..314 "!"
-                TOKEN_TREE@314..328
-                  L_PAREN@314..315 "("
-                  DOLLAR@315..316 "$"
-                  TOKEN_TREE@316..326
-                    L_PAREN@316..317 "("
-                    DOLLAR@317..318 "$"
-                    IDENT@318..324 "output"
-                    COMMA@324..325 ","
-                    R_PAREN@325..326 ")"
-                  STAR@326..327 "*"
-                  R_PAREN@327..328 ")"
-                COMMA@328..329 ","
-                WHITESPACE@329..338 "\n        "
-                R_PAREN@338..339 ")"
-              SEMICOLON@339..340 ";"
-              WHITESPACE@340..345 "\n    "
-              R_CURLY@345..346 "}"
-        WHITESPACE@346..347 "\n"
-        R_CURLY@347..348 "}"
-  WHITESPACE@348..349 "\n"
+SOURCE_FILE
+  MACRO_DEF
+    MACRO_KW "macro"
+    WHITESPACE " "
+    NAME
+      IDENT "parse_use_trees"
+    TOKEN_TREE
+      TOKEN_TREE
+        L_PAREN "("
+        DOLLAR "$"
+        TOKEN_TREE
+          L_PAREN "("
+          DOLLAR "$"
+          IDENT "s"
+          COLON ":"
+          IDENT "expr"
+          R_PAREN ")"
+        COMMA ","
+        STAR "*"
+        WHITESPACE " "
+        DOLLAR "$"
+        TOKEN_TREE
+          L_PAREN "("
+          COMMA ","
+          R_PAREN ")"
+        STAR "*"
+        R_PAREN ")"
+      WHITESPACE " "
+      TOKEN_TREE
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        IDENT "vec"
+        BANG "!"
+        TOKEN_TREE
+          L_BRACK "["
+          WHITESPACE "\n        "
+          DOLLAR "$"
+          TOKEN_TREE
+            L_PAREN "("
+            IDENT "parse_use_tree"
+            TOKEN_TREE
+              L_PAREN "("
+              DOLLAR "$"
+              IDENT "s"
+              R_PAREN ")"
+            COMMA ","
+            R_PAREN ")"
+          STAR "*"
+          WHITESPACE "\n    "
+          R_BRACK "]"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  FN
+    ATTR
+      POUND "#"
+      L_BRACK "["
+      META
+        PATH
+          PATH_SEGMENT
+            NAME_REF
+              IDENT "test"
+      R_BRACK "]"
+    WHITESPACE "\n"
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "test_use_tree_merge"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        MACRO_DEF
+          MACRO_KW "macro"
+          WHITESPACE " "
+          NAME
+            IDENT "test_merge"
+          TOKEN_TREE
+            TOKEN_TREE
+              L_PAREN "("
+              TOKEN_TREE
+                L_BRACK "["
+                DOLLAR "$"
+                TOKEN_TREE
+                  L_PAREN "("
+                  DOLLAR "$"
+                  IDENT "input"
+                  COLON ":"
+                  IDENT "expr"
+                  R_PAREN ")"
+                COMMA ","
+                STAR "*"
+                WHITESPACE " "
+                DOLLAR "$"
+                TOKEN_TREE
+                  L_PAREN "("
+                  COMMA ","
+                  R_PAREN ")"
+                STAR "*"
+                R_BRACK "]"
+              COMMA ","
+              WHITESPACE " "
+              TOKEN_TREE
+                L_BRACK "["
+                DOLLAR "$"
+                TOKEN_TREE
+                  L_PAREN "("
+                  DOLLAR "$"
+                  IDENT "output"
+                  COLON ":"
+                  IDENT "expr"
+                  R_PAREN ")"
+                COMMA ","
+                STAR "*"
+                WHITESPACE " "
+                DOLLAR "$"
+                TOKEN_TREE
+                  L_PAREN "("
+                  COMMA ","
+                  R_PAREN ")"
+                STAR "*"
+                R_BRACK "]"
+              R_PAREN ")"
+            WHITESPACE " "
+            TOKEN_TREE
+              L_CURLY "{"
+              WHITESPACE "\n        "
+              IDENT "assert_eq"
+              BANG "!"
+              TOKEN_TREE
+                L_PAREN "("
+                WHITESPACE "\n            "
+                IDENT "merge_use_trees"
+                TOKEN_TREE
+                  L_PAREN "("
+                  IDENT "parse_use_trees"
+                  BANG "!"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    DOLLAR "$"
+                    TOKEN_TREE
+                      L_PAREN "("
+                      DOLLAR "$"
+                      IDENT "input"
+                      COMMA ","
+                      R_PAREN ")"
+                    STAR "*"
+                    R_PAREN ")"
+                  R_PAREN ")"
+                COMMA ","
+                WHITESPACE "\n            "
+                IDENT "parse_use_trees"
+                BANG "!"
+                TOKEN_TREE
+                  L_PAREN "("
+                  DOLLAR "$"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    DOLLAR "$"
+                    IDENT "output"
+                    COMMA ","
+                    R_PAREN ")"
+                  STAR "*"
+                  R_PAREN ")"
+                COMMA ","
+                WHITESPACE "\n        "
+                R_PAREN ")"
+              SEMICOLON ";"
+              WHITESPACE "\n    "
+              R_CURLY "}"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0062_macro_2.0.txt b/crates/parser/test_data/parser/ok/0062_macro_2.0.txt
deleted file mode 100644
index 3915ed75064..00000000000
--- a/crates/parser/test_data/parser/ok/0062_macro_2.0.txt
+++ /dev/null
@@ -1,177 +0,0 @@
-SOURCE_FILE
-  MACRO_DEF
-    MACRO_KW "macro"
-    WHITESPACE " "
-    NAME
-      IDENT "parse_use_trees"
-    TOKEN_TREE
-      TOKEN_TREE
-        L_PAREN "("
-        DOLLAR "$"
-        TOKEN_TREE
-          L_PAREN "("
-          DOLLAR "$"
-          IDENT "s"
-          COLON ":"
-          IDENT "expr"
-          R_PAREN ")"
-        COMMA ","
-        STAR "*"
-        WHITESPACE " "
-        DOLLAR "$"
-        TOKEN_TREE
-          L_PAREN "("
-          COMMA ","
-          R_PAREN ")"
-        STAR "*"
-        R_PAREN ")"
-      WHITESPACE " "
-      TOKEN_TREE
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        IDENT "vec"
-        BANG "!"
-        TOKEN_TREE
-          L_BRACK "["
-          WHITESPACE "\n        "
-          DOLLAR "$"
-          TOKEN_TREE
-            L_PAREN "("
-            IDENT "parse_use_tree"
-            TOKEN_TREE
-              L_PAREN "("
-              DOLLAR "$"
-              IDENT "s"
-              R_PAREN ")"
-            COMMA ","
-            R_PAREN ")"
-          STAR "*"
-          WHITESPACE "\n    "
-          R_BRACK "]"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  FN
-    ATTR
-      POUND "#"
-      L_BRACK "["
-      META
-        PATH
-          PATH_SEGMENT
-            NAME_REF
-              IDENT "test"
-      R_BRACK "]"
-    WHITESPACE "\n"
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "test_use_tree_merge"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        MACRO_DEF
-          MACRO_KW "macro"
-          WHITESPACE " "
-          NAME
-            IDENT "test_merge"
-          TOKEN_TREE
-            TOKEN_TREE
-              L_PAREN "("
-              TOKEN_TREE
-                L_BRACK "["
-                DOLLAR "$"
-                TOKEN_TREE
-                  L_PAREN "("
-                  DOLLAR "$"
-                  IDENT "input"
-                  COLON ":"
-                  IDENT "expr"
-                  R_PAREN ")"
-                COMMA ","
-                STAR "*"
-                WHITESPACE " "
-                DOLLAR "$"
-                TOKEN_TREE
-                  L_PAREN "("
-                  COMMA ","
-                  R_PAREN ")"
-                STAR "*"
-                R_BRACK "]"
-              COMMA ","
-              WHITESPACE " "
-              TOKEN_TREE
-                L_BRACK "["
-                DOLLAR "$"
-                TOKEN_TREE
-                  L_PAREN "("
-                  DOLLAR "$"
-                  IDENT "output"
-                  COLON ":"
-                  IDENT "expr"
-                  R_PAREN ")"
-                COMMA ","
-                STAR "*"
-                WHITESPACE " "
-                DOLLAR "$"
-                TOKEN_TREE
-                  L_PAREN "("
-                  COMMA ","
-                  R_PAREN ")"
-                STAR "*"
-                R_BRACK "]"
-              R_PAREN ")"
-            WHITESPACE " "
-            TOKEN_TREE
-              L_CURLY "{"
-              WHITESPACE "\n        "
-              IDENT "assert_eq"
-              BANG "!"
-              TOKEN_TREE
-                L_PAREN "("
-                WHITESPACE "\n            "
-                IDENT "merge_use_trees"
-                TOKEN_TREE
-                  L_PAREN "("
-                  IDENT "parse_use_trees"
-                  BANG "!"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    DOLLAR "$"
-                    TOKEN_TREE
-                      L_PAREN "("
-                      DOLLAR "$"
-                      IDENT "input"
-                      COMMA ","
-                      R_PAREN ")"
-                    STAR "*"
-                    R_PAREN ")"
-                  R_PAREN ")"
-                COMMA ","
-                WHITESPACE "\n            "
-                IDENT "parse_use_trees"
-                BANG "!"
-                TOKEN_TREE
-                  L_PAREN "("
-                  DOLLAR "$"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    DOLLAR "$"
-                    IDENT "output"
-                    COMMA ","
-                    R_PAREN ")"
-                  STAR "*"
-                  R_PAREN ")"
-                COMMA ","
-                WHITESPACE "\n        "
-                R_PAREN ")"
-              SEMICOLON ";"
-              WHITESPACE "\n    "
-              R_CURLY "}"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0063_trait_fn_patterns.rast b/crates/parser/test_data/parser/ok/0063_trait_fn_patterns.rast
index 979058d032f..a86b21d27cd 100644
--- a/crates/parser/test_data/parser/ok/0063_trait_fn_patterns.rast
+++ b/crates/parser/test_data/parser/ok/0063_trait_fn_patterns.rast
@@ -1,198 +1,198 @@
-SOURCE_FILE@0..170
-  TRAIT@0..169
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "T"
-    WHITESPACE@7..8 " "
-    ASSOC_ITEM_LIST@8..169
-      L_CURLY@8..9 "{"
-      WHITESPACE@9..14 "\n    "
-      FN@14..46
-        FN_KW@14..16 "fn"
-        WHITESPACE@16..17 " "
-        NAME@17..19
-          IDENT@17..19 "f1"
-        PARAM_LIST@19..43
-          L_PAREN@19..20 "("
-          PARAM@20..42
-            TUPLE_PAT@20..26
-              L_PAREN@20..21 "("
-              IDENT_PAT@21..22
-                NAME@21..22
-                  IDENT@21..22 "a"
-              COMMA@22..23 ","
-              WHITESPACE@23..24 " "
-              IDENT_PAT@24..25
-                NAME@24..25
-                  IDENT@24..25 "b"
-              R_PAREN@25..26 ")"
-            COLON@26..27 ":"
-            WHITESPACE@27..28 " "
-            TUPLE_TYPE@28..42
-              L_PAREN@28..29 "("
-              PATH_TYPE@29..34
-                PATH@29..34
-                  PATH_SEGMENT@29..34
-                    NAME_REF@29..34
-                      IDENT@29..34 "usize"
-              COMMA@34..35 ","
-              WHITESPACE@35..36 " "
-              PATH_TYPE@36..41
-                PATH@36..41
-                  PATH_SEGMENT@36..41
-                    NAME_REF@36..41
-                      IDENT@36..41 "usize"
-              R_PAREN@41..42 ")"
-          R_PAREN@42..43 ")"
-        WHITESPACE@43..44 " "
-        BLOCK_EXPR@44..46
-          STMT_LIST@44..46
-            L_CURLY@44..45 "{"
-            R_CURLY@45..46 "}"
-      WHITESPACE@46..51 "\n    "
-      FN@51..74
-        FN_KW@51..53 "fn"
-        WHITESPACE@53..54 " "
-        NAME@54..56
-          IDENT@54..56 "f2"
-        PARAM_LIST@56..71
-          L_PAREN@56..57 "("
-          PARAM@57..70
-            RECORD_PAT@57..67
-              PATH@57..58
-                PATH_SEGMENT@57..58
-                  NAME_REF@57..58
-                    IDENT@57..58 "S"
-              WHITESPACE@58..59 " "
-              RECORD_PAT_FIELD_LIST@59..67
-                L_CURLY@59..60 "{"
-                WHITESPACE@60..61 " "
-                RECORD_PAT_FIELD@61..62
-                  IDENT_PAT@61..62
-                    NAME@61..62
-                      IDENT@61..62 "a"
-                COMMA@62..63 ","
-                WHITESPACE@63..64 " "
-                RECORD_PAT_FIELD@64..65
-                  IDENT_PAT@64..65
-                    NAME@64..65
-                      IDENT@64..65 "b"
-                WHITESPACE@65..66 " "
-                R_CURLY@66..67 "}"
-            COLON@67..68 ":"
-            WHITESPACE@68..69 " "
-            PATH_TYPE@69..70
-              PATH@69..70
-                PATH_SEGMENT@69..70
-                  NAME_REF@69..70
-                    IDENT@69..70 "S"
-          R_PAREN@70..71 ")"
-        WHITESPACE@71..72 " "
-        BLOCK_EXPR@72..74
-          STMT_LIST@72..74
-            L_CURLY@72..73 "{"
-            R_CURLY@73..74 "}"
-      WHITESPACE@74..79 "\n    "
-      FN@79..108
-        FN_KW@79..81 "fn"
-        WHITESPACE@81..82 " "
-        NAME@82..84
-          IDENT@82..84 "f3"
-        PARAM_LIST@84..105
-          L_PAREN@84..85 "("
-          PARAM@85..104
-            TUPLE_STRUCT_PAT@85..95
-              PATH@85..92
-                PATH_SEGMENT@85..92
-                  NAME_REF@85..92
-                    IDENT@85..92 "NewType"
-              L_PAREN@92..93 "("
-              IDENT_PAT@93..94
-                NAME@93..94
-                  IDENT@93..94 "a"
-              R_PAREN@94..95 ")"
-            COLON@95..96 ":"
-            WHITESPACE@96..97 " "
-            PATH_TYPE@97..104
-              PATH@97..104
-                PATH_SEGMENT@97..104
-                  NAME_REF@97..104
-                    IDENT@97..104 "NewType"
-          R_PAREN@104..105 ")"
-        WHITESPACE@105..106 " "
-        BLOCK_EXPR@106..108
-          STMT_LIST@106..108
-            L_CURLY@106..107 "{"
-            R_CURLY@107..108 "}"
-      WHITESPACE@108..113 "\n    "
-      FN@113..135
-        FN_KW@113..115 "fn"
-        WHITESPACE@115..116 " "
-        NAME@116..118
-          IDENT@116..118 "f4"
-        PARAM_LIST@118..132
-          L_PAREN@118..119 "("
-          PARAM@119..131
-            REF_PAT@119..122
-              AMP@119..120 "&"
-              REF_PAT@120..122
-                AMP@120..121 "&"
-                IDENT_PAT@121..122
-                  NAME@121..122
-                    IDENT@121..122 "a"
-            COLON@122..123 ":"
-            WHITESPACE@123..124 " "
-            REF_TYPE@124..131
-              AMP@124..125 "&"
-              REF_TYPE@125..131
-                AMP@125..126 "&"
-                PATH_TYPE@126..131
-                  PATH@126..131
-                    PATH_SEGMENT@126..131
-                      NAME_REF@126..131
-                        IDENT@126..131 "usize"
-          R_PAREN@131..132 ")"
-        WHITESPACE@132..133 " "
-        BLOCK_EXPR@133..135
-          STMT_LIST@133..135
-            L_CURLY@133..134 "{"
-            R_CURLY@134..135 "}"
-      WHITESPACE@135..140 "\n    "
-      FN@140..167
-        FN_KW@140..142 "fn"
-        WHITESPACE@142..143 " "
-        NAME@143..146
-          IDENT@143..146 "bar"
-        PARAM_LIST@146..166
-          L_PAREN@146..147 "("
-          PARAM@147..153
-            WILDCARD_PAT@147..148
-              UNDERSCORE@147..148 "_"
-            COLON@148..149 ":"
-            WHITESPACE@149..150 " "
-            PATH_TYPE@150..153
-              PATH@150..153
-                PATH_SEGMENT@150..153
-                  NAME_REF@150..153
-                    IDENT@150..153 "u64"
-          COMMA@153..154 ","
-          WHITESPACE@154..155 " "
-          PARAM@155..165
-            IDENT_PAT@155..160
-              MUT_KW@155..158 "mut"
-              WHITESPACE@158..159 " "
-              NAME@159..160
-                IDENT@159..160 "x"
-            COLON@160..161 ":"
-            WHITESPACE@161..162 " "
-            PATH_TYPE@162..165
-              PATH@162..165
-                PATH_SEGMENT@162..165
-                  NAME_REF@162..165
-                    IDENT@162..165 "i32"
-          R_PAREN@165..166 ")"
-        SEMICOLON@166..167 ";"
-      WHITESPACE@167..168 "\n"
-      R_CURLY@168..169 "}"
-  WHITESPACE@169..170 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f1"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            TUPLE_PAT
+              L_PAREN "("
+              IDENT_PAT
+                NAME
+                  IDENT "a"
+              COMMA ","
+              WHITESPACE " "
+              IDENT_PAT
+                NAME
+                  IDENT "b"
+              R_PAREN ")"
+            COLON ":"
+            WHITESPACE " "
+            TUPLE_TYPE
+              L_PAREN "("
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "usize"
+              COMMA ","
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "usize"
+              R_PAREN ")"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f2"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            RECORD_PAT
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "S"
+              WHITESPACE " "
+              RECORD_PAT_FIELD_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                RECORD_PAT_FIELD
+                  IDENT_PAT
+                    NAME
+                      IDENT "a"
+                COMMA ","
+                WHITESPACE " "
+                RECORD_PAT_FIELD
+                  IDENT_PAT
+                    NAME
+                      IDENT "b"
+                WHITESPACE " "
+                R_CURLY "}"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "S"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f3"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            TUPLE_STRUCT_PAT
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "NewType"
+              L_PAREN "("
+              IDENT_PAT
+                NAME
+                  IDENT "a"
+              R_PAREN ")"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "NewType"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f4"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            REF_PAT
+              AMP "&"
+              REF_PAT
+                AMP "&"
+                IDENT_PAT
+                  NAME
+                    IDENT "a"
+            COLON ":"
+            WHITESPACE " "
+            REF_TYPE
+              AMP "&"
+              REF_TYPE
+                AMP "&"
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "usize"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "bar"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "u64"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            IDENT_PAT
+              MUT_KW "mut"
+              WHITESPACE " "
+              NAME
+                IDENT "x"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "i32"
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0063_trait_fn_patterns.txt b/crates/parser/test_data/parser/ok/0063_trait_fn_patterns.txt
deleted file mode 100644
index a86b21d27cd..00000000000
--- a/crates/parser/test_data/parser/ok/0063_trait_fn_patterns.txt
+++ /dev/null
@@ -1,198 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f1"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            TUPLE_PAT
-              L_PAREN "("
-              IDENT_PAT
-                NAME
-                  IDENT "a"
-              COMMA ","
-              WHITESPACE " "
-              IDENT_PAT
-                NAME
-                  IDENT "b"
-              R_PAREN ")"
-            COLON ":"
-            WHITESPACE " "
-            TUPLE_TYPE
-              L_PAREN "("
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "usize"
-              COMMA ","
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "usize"
-              R_PAREN ")"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f2"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            RECORD_PAT
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "S"
-              WHITESPACE " "
-              RECORD_PAT_FIELD_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                RECORD_PAT_FIELD
-                  IDENT_PAT
-                    NAME
-                      IDENT "a"
-                COMMA ","
-                WHITESPACE " "
-                RECORD_PAT_FIELD
-                  IDENT_PAT
-                    NAME
-                      IDENT "b"
-                WHITESPACE " "
-                R_CURLY "}"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "S"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f3"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            TUPLE_STRUCT_PAT
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "NewType"
-              L_PAREN "("
-              IDENT_PAT
-                NAME
-                  IDENT "a"
-              R_PAREN ")"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "NewType"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f4"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            REF_PAT
-              AMP "&"
-              REF_PAT
-                AMP "&"
-                IDENT_PAT
-                  NAME
-                    IDENT "a"
-            COLON ":"
-            WHITESPACE " "
-            REF_TYPE
-              AMP "&"
-              REF_TYPE
-                AMP "&"
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "usize"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "bar"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "u64"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            IDENT_PAT
-              MUT_KW "mut"
-              WHITESPACE " "
-              NAME
-                IDENT "x"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "i32"
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0063_variadic_fun.rast b/crates/parser/test_data/parser/ok/0063_variadic_fun.rast
index dcc4105c917..e36399123bc 100644
--- a/crates/parser/test_data/parser/ok/0063_variadic_fun.rast
+++ b/crates/parser/test_data/parser/ok/0063_variadic_fun.rast
@@ -1,134 +1,134 @@
-SOURCE_FILE@0..126
-  EXTERN_BLOCK@0..125
-    ABI@0..10
-      EXTERN_KW@0..6 "extern"
-      WHITESPACE@6..7 " "
-      STRING@7..10 "\"C\""
-    WHITESPACE@10..11 " "
-    EXTERN_ITEM_LIST@11..125
-      L_CURLY@11..12 "{"
-      WHITESPACE@12..17 "\n    "
-      FN@17..40
-        FN_KW@17..19 "fn"
-        WHITESPACE@19..20 " "
-        NAME@20..21
-          IDENT@20..21 "a"
-        PARAM_LIST@21..39
-          L_PAREN@21..22 "("
-          PARAM@22..32
-            WILDCARD_PAT@22..23
-              UNDERSCORE@22..23 "_"
-            COLON@23..24 ":"
-            WHITESPACE@24..25 " "
-            PTR_TYPE@25..32
-              STAR@25..26 "*"
-              MUT_KW@26..29 "mut"
-              WHITESPACE@29..30 " "
-              PATH_TYPE@30..32
-                PATH@30..32
-                  PATH_SEGMENT@30..32
-                    NAME_REF@30..32
-                      IDENT@30..32 "u8"
-          COMMA@32..33 ","
-          WHITESPACE@33..34 " "
-          PARAM@34..37
-            DOT3@34..37 "..."
-          COMMA@37..38 ","
-          R_PAREN@38..39 ")"
-        SEMICOLON@39..40 ";"
-      WHITESPACE@40..45 "\n    "
-      FN@45..70
-        FN_KW@45..47 "fn"
-        WHITESPACE@47..48 " "
-        NAME@48..49
-          IDENT@48..49 "b"
-        PARAM_LIST@49..69
-          L_PAREN@49..50 "("
-          PARAM@50..60
-            WILDCARD_PAT@50..51
-              UNDERSCORE@50..51 "_"
-            COLON@51..52 ":"
-            WHITESPACE@52..53 " "
-            PTR_TYPE@53..60
-              STAR@53..54 "*"
-              MUT_KW@54..57 "mut"
-              WHITESPACE@57..58 " "
-              PATH_TYPE@58..60
-                PATH@58..60
-                  PATH_SEGMENT@58..60
-                    NAME_REF@58..60
-                      IDENT@58..60 "u8"
-          COMMA@60..61 ","
-          WHITESPACE@61..62 " "
-          PARAM@62..68
-            WILDCARD_PAT@62..63
-              UNDERSCORE@62..63 "_"
-            COLON@63..64 ":"
-            WHITESPACE@64..65 " "
-            DOT3@65..68 "..."
-          R_PAREN@68..69 ")"
-        SEMICOLON@69..70 ";"
-      WHITESPACE@70..75 "\n    "
-      FN@75..123
-        FN_KW@75..77 "fn"
-        WHITESPACE@77..78 " "
-        NAME@78..79
-          IDENT@78..79 "c"
-        PARAM_LIST@79..122
-          L_PAREN@79..80 "("
-          PARAM@80..90
-            WILDCARD_PAT@80..81
-              UNDERSCORE@80..81 "_"
-            COLON@81..82 ":"
-            WHITESPACE@82..83 " "
-            PTR_TYPE@83..90
-              STAR@83..84 "*"
-              MUT_KW@84..87 "mut"
-              WHITESPACE@87..88 " "
-              PATH_TYPE@88..90
-                PATH@88..90
-                  PATH_SEGMENT@88..90
-                    NAME_REF@88..90
-                      IDENT@88..90 "u8"
-          COMMA@90..91 ","
-          WHITESPACE@91..92 " "
-          PARAM@92..120
-            ATTR@92..105
-              POUND@92..93 "#"
-              L_BRACK@93..94 "["
-              META@94..104
-                PATH@94..97
-                  PATH_SEGMENT@94..97
-                    NAME_REF@94..97
-                      IDENT@94..97 "cfg"
-                TOKEN_TREE@97..104
-                  L_PAREN@97..98 "("
-                  IDENT@98..103 "never"
-                  R_PAREN@103..104 ")"
-              R_BRACK@104..105 "]"
-            WHITESPACE@105..106 " "
-            SLICE_PAT@106..115
-              L_BRACK@106..107 "["
-              IDENT_PAT@107..108
-                NAME@107..108
-                  IDENT@107..108 "w"
-              COMMA@108..109 ","
-              WHITESPACE@109..110 " "
-              IDENT_PAT@110..111
-                NAME@110..111
-                  IDENT@110..111 "t"
-              COMMA@111..112 ","
-              WHITESPACE@112..113 " "
-              IDENT_PAT@113..114
-                NAME@113..114
-                  IDENT@113..114 "f"
-              R_BRACK@114..115 "]"
-            COLON@115..116 ":"
-            WHITESPACE@116..117 " "
-            DOT3@117..120 "..."
-          COMMA@120..121 ","
-          R_PAREN@121..122 ")"
-        SEMICOLON@122..123 ";"
-      WHITESPACE@123..124 "\n"
-      R_CURLY@124..125 "}"
-  WHITESPACE@125..126 "\n"
+SOURCE_FILE
+  EXTERN_BLOCK
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "a"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "u8"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            DOT3 "..."
+          COMMA ","
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "b"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "u8"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COLON ":"
+            WHITESPACE " "
+            DOT3 "..."
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "c"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            WILDCARD_PAT
+              UNDERSCORE "_"
+            COLON ":"
+            WHITESPACE " "
+            PTR_TYPE
+              STAR "*"
+              MUT_KW "mut"
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "u8"
+          COMMA ","
+          WHITESPACE " "
+          PARAM
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "cfg"
+                TOKEN_TREE
+                  L_PAREN "("
+                  IDENT "never"
+                  R_PAREN ")"
+              R_BRACK "]"
+            WHITESPACE " "
+            SLICE_PAT
+              L_BRACK "["
+              IDENT_PAT
+                NAME
+                  IDENT "w"
+              COMMA ","
+              WHITESPACE " "
+              IDENT_PAT
+                NAME
+                  IDENT "t"
+              COMMA ","
+              WHITESPACE " "
+              IDENT_PAT
+                NAME
+                  IDENT "f"
+              R_BRACK "]"
+            COLON ":"
+            WHITESPACE " "
+            DOT3 "..."
+          COMMA ","
+          R_PAREN ")"
+        SEMICOLON ";"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0063_variadic_fun.txt b/crates/parser/test_data/parser/ok/0063_variadic_fun.txt
deleted file mode 100644
index e36399123bc..00000000000
--- a/crates/parser/test_data/parser/ok/0063_variadic_fun.txt
+++ /dev/null
@@ -1,134 +0,0 @@
-SOURCE_FILE
-  EXTERN_BLOCK
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "a"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "u8"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            DOT3 "..."
-          COMMA ","
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "b"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "u8"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COLON ":"
-            WHITESPACE " "
-            DOT3 "..."
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "c"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            WILDCARD_PAT
-              UNDERSCORE "_"
-            COLON ":"
-            WHITESPACE " "
-            PTR_TYPE
-              STAR "*"
-              MUT_KW "mut"
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "u8"
-          COMMA ","
-          WHITESPACE " "
-          PARAM
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "cfg"
-                TOKEN_TREE
-                  L_PAREN "("
-                  IDENT "never"
-                  R_PAREN ")"
-              R_BRACK "]"
-            WHITESPACE " "
-            SLICE_PAT
-              L_BRACK "["
-              IDENT_PAT
-                NAME
-                  IDENT "w"
-              COMMA ","
-              WHITESPACE " "
-              IDENT_PAT
-                NAME
-                  IDENT "t"
-              COMMA ","
-              WHITESPACE " "
-              IDENT_PAT
-                NAME
-                  IDENT "f"
-              R_BRACK "]"
-            COLON ":"
-            WHITESPACE " "
-            DOT3 "..."
-          COMMA ","
-          R_PAREN ")"
-        SEMICOLON ";"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0064_impl_fn_params.rast b/crates/parser/test_data/parser/ok/0064_impl_fn_params.rast
index dbfc2f92607..18cecc8108d 100644
--- a/crates/parser/test_data/parser/ok/0064_impl_fn_params.rast
+++ b/crates/parser/test_data/parser/ok/0064_impl_fn_params.rast
@@ -1,166 +1,166 @@
-SOURCE_FILE@0..137
-  IMPL@0..136
-    IMPL_KW@0..4 "impl"
-    WHITESPACE@4..5 " "
-    PATH_TYPE@5..6
-      PATH@5..6
-        PATH_SEGMENT@5..6
-          NAME_REF@5..6
-            IDENT@5..6 "U"
-    WHITESPACE@6..7 " "
-    ASSOC_ITEM_LIST@7..136
-      L_CURLY@7..8 "{"
-      WHITESPACE@8..13 "\n    "
-      FN@13..45
-        FN_KW@13..15 "fn"
-        WHITESPACE@15..16 " "
-        NAME@16..18
-          IDENT@16..18 "f1"
-        PARAM_LIST@18..42
-          L_PAREN@18..19 "("
-          PARAM@19..41
-            TUPLE_PAT@19..25
-              L_PAREN@19..20 "("
-              IDENT_PAT@20..21
-                NAME@20..21
-                  IDENT@20..21 "a"
-              COMMA@21..22 ","
-              WHITESPACE@22..23 " "
-              IDENT_PAT@23..24
-                NAME@23..24
-                  IDENT@23..24 "b"
-              R_PAREN@24..25 ")"
-            COLON@25..26 ":"
-            WHITESPACE@26..27 " "
-            TUPLE_TYPE@27..41
-              L_PAREN@27..28 "("
-              PATH_TYPE@28..33
-                PATH@28..33
-                  PATH_SEGMENT@28..33
-                    NAME_REF@28..33
-                      IDENT@28..33 "usize"
-              COMMA@33..34 ","
-              WHITESPACE@34..35 " "
-              PATH_TYPE@35..40
-                PATH@35..40
-                  PATH_SEGMENT@35..40
-                    NAME_REF@35..40
-                      IDENT@35..40 "usize"
-              R_PAREN@40..41 ")"
-          R_PAREN@41..42 ")"
-        WHITESPACE@42..43 " "
-        BLOCK_EXPR@43..45
-          STMT_LIST@43..45
-            L_CURLY@43..44 "{"
-            R_CURLY@44..45 "}"
-      WHITESPACE@45..50 "\n    "
-      FN@50..73
-        FN_KW@50..52 "fn"
-        WHITESPACE@52..53 " "
-        NAME@53..55
-          IDENT@53..55 "f2"
-        PARAM_LIST@55..70
-          L_PAREN@55..56 "("
-          PARAM@56..69
-            RECORD_PAT@56..66
-              PATH@56..57
-                PATH_SEGMENT@56..57
-                  NAME_REF@56..57
-                    IDENT@56..57 "S"
-              WHITESPACE@57..58 " "
-              RECORD_PAT_FIELD_LIST@58..66
-                L_CURLY@58..59 "{"
-                WHITESPACE@59..60 " "
-                RECORD_PAT_FIELD@60..61
-                  IDENT_PAT@60..61
-                    NAME@60..61
-                      IDENT@60..61 "a"
-                COMMA@61..62 ","
-                WHITESPACE@62..63 " "
-                RECORD_PAT_FIELD@63..64
-                  IDENT_PAT@63..64
-                    NAME@63..64
-                      IDENT@63..64 "b"
-                WHITESPACE@64..65 " "
-                R_CURLY@65..66 "}"
-            COLON@66..67 ":"
-            WHITESPACE@67..68 " "
-            PATH_TYPE@68..69
-              PATH@68..69
-                PATH_SEGMENT@68..69
-                  NAME_REF@68..69
-                    IDENT@68..69 "S"
-          R_PAREN@69..70 ")"
-        WHITESPACE@70..71 " "
-        BLOCK_EXPR@71..73
-          STMT_LIST@71..73
-            L_CURLY@71..72 "{"
-            R_CURLY@72..73 "}"
-      WHITESPACE@73..78 "\n    "
-      FN@78..107
-        FN_KW@78..80 "fn"
-        WHITESPACE@80..81 " "
-        NAME@81..83
-          IDENT@81..83 "f3"
-        PARAM_LIST@83..104
-          L_PAREN@83..84 "("
-          PARAM@84..103
-            TUPLE_STRUCT_PAT@84..94
-              PATH@84..91
-                PATH_SEGMENT@84..91
-                  NAME_REF@84..91
-                    IDENT@84..91 "NewType"
-              L_PAREN@91..92 "("
-              IDENT_PAT@92..93
-                NAME@92..93
-                  IDENT@92..93 "a"
-              R_PAREN@93..94 ")"
-            COLON@94..95 ":"
-            WHITESPACE@95..96 " "
-            PATH_TYPE@96..103
-              PATH@96..103
-                PATH_SEGMENT@96..103
-                  NAME_REF@96..103
-                    IDENT@96..103 "NewType"
-          R_PAREN@103..104 ")"
-        WHITESPACE@104..105 " "
-        BLOCK_EXPR@105..107
-          STMT_LIST@105..107
-            L_CURLY@105..106 "{"
-            R_CURLY@106..107 "}"
-      WHITESPACE@107..112 "\n    "
-      FN@112..134
-        FN_KW@112..114 "fn"
-        WHITESPACE@114..115 " "
-        NAME@115..117
-          IDENT@115..117 "f4"
-        PARAM_LIST@117..131
-          L_PAREN@117..118 "("
-          PARAM@118..130
-            REF_PAT@118..121
-              AMP@118..119 "&"
-              REF_PAT@119..121
-                AMP@119..120 "&"
-                IDENT_PAT@120..121
-                  NAME@120..121
-                    IDENT@120..121 "a"
-            COLON@121..122 ":"
-            WHITESPACE@122..123 " "
-            REF_TYPE@123..130
-              AMP@123..124 "&"
-              REF_TYPE@124..130
-                AMP@124..125 "&"
-                PATH_TYPE@125..130
-                  PATH@125..130
-                    PATH_SEGMENT@125..130
-                      NAME_REF@125..130
-                        IDENT@125..130 "usize"
-          R_PAREN@130..131 ")"
-        WHITESPACE@131..132 " "
-        BLOCK_EXPR@132..134
-          STMT_LIST@132..134
-            L_CURLY@132..133 "{"
-            R_CURLY@133..134 "}"
-      WHITESPACE@134..135 "\n"
-      R_CURLY@135..136 "}"
-  WHITESPACE@136..137 "\n"
+SOURCE_FILE
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "U"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f1"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            TUPLE_PAT
+              L_PAREN "("
+              IDENT_PAT
+                NAME
+                  IDENT "a"
+              COMMA ","
+              WHITESPACE " "
+              IDENT_PAT
+                NAME
+                  IDENT "b"
+              R_PAREN ")"
+            COLON ":"
+            WHITESPACE " "
+            TUPLE_TYPE
+              L_PAREN "("
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "usize"
+              COMMA ","
+              WHITESPACE " "
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "usize"
+              R_PAREN ")"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f2"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            RECORD_PAT
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "S"
+              WHITESPACE " "
+              RECORD_PAT_FIELD_LIST
+                L_CURLY "{"
+                WHITESPACE " "
+                RECORD_PAT_FIELD
+                  IDENT_PAT
+                    NAME
+                      IDENT "a"
+                COMMA ","
+                WHITESPACE " "
+                RECORD_PAT_FIELD
+                  IDENT_PAT
+                    NAME
+                      IDENT "b"
+                WHITESPACE " "
+                R_CURLY "}"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "S"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f3"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            TUPLE_STRUCT_PAT
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "NewType"
+              L_PAREN "("
+              IDENT_PAT
+                NAME
+                  IDENT "a"
+              R_PAREN ")"
+            COLON ":"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "NewType"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n    "
+      FN
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "f4"
+        PARAM_LIST
+          L_PAREN "("
+          PARAM
+            REF_PAT
+              AMP "&"
+              REF_PAT
+                AMP "&"
+                IDENT_PAT
+                  NAME
+                    IDENT "a"
+            COLON ":"
+            WHITESPACE " "
+            REF_TYPE
+              AMP "&"
+              REF_TYPE
+                AMP "&"
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "usize"
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0064_impl_fn_params.txt b/crates/parser/test_data/parser/ok/0064_impl_fn_params.txt
deleted file mode 100644
index 18cecc8108d..00000000000
--- a/crates/parser/test_data/parser/ok/0064_impl_fn_params.txt
+++ /dev/null
@@ -1,166 +0,0 @@
-SOURCE_FILE
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "U"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f1"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            TUPLE_PAT
-              L_PAREN "("
-              IDENT_PAT
-                NAME
-                  IDENT "a"
-              COMMA ","
-              WHITESPACE " "
-              IDENT_PAT
-                NAME
-                  IDENT "b"
-              R_PAREN ")"
-            COLON ":"
-            WHITESPACE " "
-            TUPLE_TYPE
-              L_PAREN "("
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "usize"
-              COMMA ","
-              WHITESPACE " "
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "usize"
-              R_PAREN ")"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f2"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            RECORD_PAT
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "S"
-              WHITESPACE " "
-              RECORD_PAT_FIELD_LIST
-                L_CURLY "{"
-                WHITESPACE " "
-                RECORD_PAT_FIELD
-                  IDENT_PAT
-                    NAME
-                      IDENT "a"
-                COMMA ","
-                WHITESPACE " "
-                RECORD_PAT_FIELD
-                  IDENT_PAT
-                    NAME
-                      IDENT "b"
-                WHITESPACE " "
-                R_CURLY "}"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "S"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f3"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            TUPLE_STRUCT_PAT
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "NewType"
-              L_PAREN "("
-              IDENT_PAT
-                NAME
-                  IDENT "a"
-              R_PAREN ")"
-            COLON ":"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "NewType"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n    "
-      FN
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "f4"
-        PARAM_LIST
-          L_PAREN "("
-          PARAM
-            REF_PAT
-              AMP "&"
-              REF_PAT
-                AMP "&"
-                IDENT_PAT
-                  NAME
-                    IDENT "a"
-            COLON ":"
-            WHITESPACE " "
-            REF_TYPE
-              AMP "&"
-              REF_TYPE
-                AMP "&"
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "usize"
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0065_comment_newline.rast b/crates/parser/test_data/parser/ok/0065_comment_newline.rast
index 162830d95f3..3ffcb48f5e4 100644
--- a/crates/parser/test_data/parser/ok/0065_comment_newline.rast
+++ b/crates/parser/test_data/parser/ok/0065_comment_newline.rast
@@ -1,17 +1,17 @@
-SOURCE_FILE@0..26
-  FN@0..25
-    COMMENT@0..11 "/// Example"
-    WHITESPACE@11..13 "\n\n"
-    FN_KW@13..15 "fn"
-    WHITESPACE@15..16 " "
-    NAME@16..20
-      IDENT@16..20 "test"
-    PARAM_LIST@20..22
-      L_PAREN@20..21 "("
-      R_PAREN@21..22 ")"
-    WHITESPACE@22..23 " "
-    BLOCK_EXPR@23..25
-      STMT_LIST@23..25
-        L_CURLY@23..24 "{"
-        R_CURLY@24..25 "}"
-  WHITESPACE@25..26 "\n"
+SOURCE_FILE
+  FN
+    COMMENT "/// Example"
+    WHITESPACE "\n\n"
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "test"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0065_comment_newline.txt b/crates/parser/test_data/parser/ok/0065_comment_newline.txt
deleted file mode 100644
index 3ffcb48f5e4..00000000000
--- a/crates/parser/test_data/parser/ok/0065_comment_newline.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-SOURCE_FILE
-  FN
-    COMMENT "/// Example"
-    WHITESPACE "\n\n"
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "test"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast b/crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
index 9efa6ec0b6a..ba7b6042a9e 100644
--- a/crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
+++ b/crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
@@ -1,61 +1,61 @@
-SOURCE_FILE@0..40
-  FN@0..39
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    GENERIC_PARAM_LIST@4..7
-      L_ANGLE@4..5 "<"
-      TYPE_PARAM@5..6
-        NAME@5..6
-          IDENT@5..6 "T"
-      R_ANGLE@6..7 ">"
-    PARAM_LIST@7..9
-      L_PAREN@7..8 "("
-      R_PAREN@8..9 ")"
-    WHITESPACE@9..10 " "
-    WHERE_CLAUSE@10..36
-      WHERE_KW@10..15 "where"
-      WHITESPACE@15..16 " "
-      WHERE_PRED@16..36
-        PATH_TYPE@16..17
-          PATH@16..17
-            PATH_SEGMENT@16..17
-              NAME_REF@16..17
-                IDENT@16..17 "T"
-        COLON@17..18 ":"
-        WHITESPACE@18..19 " "
-        TYPE_BOUND_LIST@19..36
-          TYPE_BOUND@19..29
-            PATH_TYPE@19..29
-              PATH@19..29
-                PATH_SEGMENT@19..29
-                  NAME_REF@19..21
-                    IDENT@19..21 "Fn"
-                  PARAM_LIST@21..23
-                    L_PAREN@21..22 "("
-                    R_PAREN@22..23 ")"
-                  WHITESPACE@23..24 " "
-                  RET_TYPE@24..29
-                    THIN_ARROW@24..26 "->"
-                    WHITESPACE@26..27 " "
-                    PATH_TYPE@27..29
-                      PATH@27..29
-                        PATH_SEGMENT@27..29
-                          NAME_REF@27..29
-                            IDENT@27..29 "u8"
-          WHITESPACE@29..30 " "
-          PLUS@30..31 "+"
-          WHITESPACE@31..32 " "
-          TYPE_BOUND@32..36
-            PATH_TYPE@32..36
-              PATH@32..36
-                PATH_SEGMENT@32..36
-                  NAME_REF@32..36
-                    IDENT@32..36 "Send"
-    WHITESPACE@36..37 " "
-    BLOCK_EXPR@37..39
-      STMT_LIST@37..39
-        L_CURLY@37..38 "{"
-        R_CURLY@38..39 "}"
-  WHITESPACE@39..40 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE " "
+      WHERE_PRED
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "T"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Fn"
+                  PARAM_LIST
+                    L_PAREN "("
+                    R_PAREN ")"
+                  WHITESPACE " "
+                  RET_TYPE
+                    THIN_ARROW "->"
+                    WHITESPACE " "
+                    PATH_TYPE
+                      PATH
+                        PATH_SEGMENT
+                          NAME_REF
+                            IDENT "u8"
+          WHITESPACE " "
+          PLUS "+"
+          WHITESPACE " "
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Send"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.txt b/crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.txt
deleted file mode 100644
index ba7b6042a9e..00000000000
--- a/crates/parser/test_data/parser/ok/0065_plus_after_fn_trait_bound.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE " "
-      WHERE_PRED
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "T"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Fn"
-                  PARAM_LIST
-                    L_PAREN "("
-                    R_PAREN ")"
-                  WHITESPACE " "
-                  RET_TYPE
-                    THIN_ARROW "->"
-                    WHITESPACE " "
-                    PATH_TYPE
-                      PATH
-                        PATH_SEGMENT
-                          NAME_REF
-                            IDENT "u8"
-          WHITESPACE " "
-          PLUS "+"
-          WHITESPACE " "
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Send"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0066_default_modifier.rast b/crates/parser/test_data/parser/ok/0066_default_modifier.rast
index 0479c5f60f5..a4303098a28 100644
--- a/crates/parser/test_data/parser/ok/0066_default_modifier.rast
+++ b/crates/parser/test_data/parser/ok/0066_default_modifier.rast
@@ -1,222 +1,222 @@
-SOURCE_FILE@0..294
-  TRAIT@0..113
-    TRAIT_KW@0..5 "trait"
-    WHITESPACE@5..6 " "
-    NAME@6..7
-      IDENT@6..7 "T"
-    WHITESPACE@7..8 " "
-    ASSOC_ITEM_LIST@8..113
-      L_CURLY@8..9 "{"
-      WHITESPACE@9..12 "\n  "
-      TYPE_ALIAS@12..33
-        DEFAULT_KW@12..19 "default"
-        WHITESPACE@19..20 " "
-        TYPE_KW@20..24 "type"
-        WHITESPACE@24..25 " "
-        NAME@25..26
-          IDENT@25..26 "T"
-        WHITESPACE@26..27 " "
-        EQ@27..28 "="
-        WHITESPACE@28..29 " "
-        PATH_TYPE@29..32
-          PATH@29..32
-            PATH_SEGMENT@29..32
-              NAME_REF@29..32
-                IDENT@29..32 "Bar"
-        SEMICOLON@32..33 ";"
-      WHITESPACE@33..36 "\n  "
-      CONST@36..60
-        DEFAULT_KW@36..43 "default"
-        WHITESPACE@43..44 " "
-        CONST_KW@44..49 "const"
-        WHITESPACE@49..50 " "
-        NAME@50..51
-          IDENT@50..51 "f"
-        COLON@51..52 ":"
-        WHITESPACE@52..53 " "
-        PATH_TYPE@53..55
-          PATH@53..55
-            PATH_SEGMENT@53..55
-              NAME_REF@53..55
-                IDENT@53..55 "u8"
-        WHITESPACE@55..56 " "
-        EQ@56..57 "="
-        WHITESPACE@57..58 " "
-        LITERAL@58..59
-          INT_NUMBER@58..59 "0"
-        SEMICOLON@59..60 ";"
-      WHITESPACE@60..63 "\n  "
-      FN@63..82
-        DEFAULT_KW@63..70 "default"
-        WHITESPACE@70..71 " "
-        FN_KW@71..73 "fn"
-        WHITESPACE@73..74 " "
-        NAME@74..77
-          IDENT@74..77 "foo"
-        PARAM_LIST@77..79
-          L_PAREN@77..78 "("
-          R_PAREN@78..79 ")"
-        WHITESPACE@79..80 " "
-        BLOCK_EXPR@80..82
-          STMT_LIST@80..82
-            L_CURLY@80..81 "{"
-            R_CURLY@81..82 "}"
-      WHITESPACE@82..85 "\n  "
-      FN@85..111
-        DEFAULT_KW@85..92 "default"
-        WHITESPACE@92..93 " "
-        UNSAFE_KW@93..99 "unsafe"
-        WHITESPACE@99..100 " "
-        FN_KW@100..102 "fn"
-        WHITESPACE@102..103 " "
-        NAME@103..106
-          IDENT@103..106 "bar"
-        PARAM_LIST@106..108
-          L_PAREN@106..107 "("
-          R_PAREN@107..108 ")"
-        WHITESPACE@108..109 " "
-        BLOCK_EXPR@109..111
-          STMT_LIST@109..111
-            L_CURLY@109..110 "{"
-            R_CURLY@110..111 "}"
-      WHITESPACE@111..112 "\n"
-      R_CURLY@112..113 "}"
-  WHITESPACE@113..115 "\n\n"
-  IMPL@115..235
-    IMPL_KW@115..119 "impl"
-    WHITESPACE@119..120 " "
-    PATH_TYPE@120..121
-      PATH@120..121
-        PATH_SEGMENT@120..121
-          NAME_REF@120..121
-            IDENT@120..121 "T"
-    WHITESPACE@121..122 " "
-    FOR_KW@122..125 "for"
-    WHITESPACE@125..126 " "
-    PATH_TYPE@126..129
-      PATH@126..129
-        PATH_SEGMENT@126..129
-          NAME_REF@126..129
-            IDENT@126..129 "Foo"
-    WHITESPACE@129..130 " "
-    ASSOC_ITEM_LIST@130..235
-      L_CURLY@130..131 "{"
-      WHITESPACE@131..134 "\n  "
-      TYPE_ALIAS@134..155
-        DEFAULT_KW@134..141 "default"
-        WHITESPACE@141..142 " "
-        TYPE_KW@142..146 "type"
-        WHITESPACE@146..147 " "
-        NAME@147..148
-          IDENT@147..148 "T"
-        WHITESPACE@148..149 " "
-        EQ@149..150 "="
-        WHITESPACE@150..151 " "
-        PATH_TYPE@151..154
-          PATH@151..154
-            PATH_SEGMENT@151..154
-              NAME_REF@151..154
-                IDENT@151..154 "Bar"
-        SEMICOLON@154..155 ";"
-      WHITESPACE@155..158 "\n  "
-      CONST@158..182
-        DEFAULT_KW@158..165 "default"
-        WHITESPACE@165..166 " "
-        CONST_KW@166..171 "const"
-        WHITESPACE@171..172 " "
-        NAME@172..173
-          IDENT@172..173 "f"
-        COLON@173..174 ":"
-        WHITESPACE@174..175 " "
-        PATH_TYPE@175..177
-          PATH@175..177
-            PATH_SEGMENT@175..177
-              NAME_REF@175..177
-                IDENT@175..177 "u8"
-        WHITESPACE@177..178 " "
-        EQ@178..179 "="
-        WHITESPACE@179..180 " "
-        LITERAL@180..181
-          INT_NUMBER@180..181 "0"
-        SEMICOLON@181..182 ";"
-      WHITESPACE@182..185 "\n  "
-      FN@185..204
-        DEFAULT_KW@185..192 "default"
-        WHITESPACE@192..193 " "
-        FN_KW@193..195 "fn"
-        WHITESPACE@195..196 " "
-        NAME@196..199
-          IDENT@196..199 "foo"
-        PARAM_LIST@199..201
-          L_PAREN@199..200 "("
-          R_PAREN@200..201 ")"
-        WHITESPACE@201..202 " "
-        BLOCK_EXPR@202..204
-          STMT_LIST@202..204
-            L_CURLY@202..203 "{"
-            R_CURLY@203..204 "}"
-      WHITESPACE@204..207 "\n  "
-      FN@207..233
-        DEFAULT_KW@207..214 "default"
-        WHITESPACE@214..215 " "
-        UNSAFE_KW@215..221 "unsafe"
-        WHITESPACE@221..222 " "
-        FN_KW@222..224 "fn"
-        WHITESPACE@224..225 " "
-        NAME@225..228
-          IDENT@225..228 "bar"
-        PARAM_LIST@228..230
-          L_PAREN@228..229 "("
-          R_PAREN@229..230 ")"
-        WHITESPACE@230..231 " "
-        BLOCK_EXPR@231..233
-          STMT_LIST@231..233
-            L_CURLY@231..232 "{"
-            R_CURLY@232..233 "}"
-      WHITESPACE@233..234 "\n"
-      R_CURLY@234..235 "}"
-  WHITESPACE@235..237 "\n\n"
-  IMPL@237..261
-    DEFAULT_KW@237..244 "default"
-    WHITESPACE@244..245 " "
-    IMPL_KW@245..249 "impl"
-    WHITESPACE@249..250 " "
-    PATH_TYPE@250..251
-      PATH@250..251
-        PATH_SEGMENT@250..251
-          NAME_REF@250..251
-            IDENT@250..251 "T"
-    WHITESPACE@251..252 " "
-    FOR_KW@252..255 "for"
-    WHITESPACE@255..256 " "
-    TUPLE_TYPE@256..258
-      L_PAREN@256..257 "("
-      R_PAREN@257..258 ")"
-    WHITESPACE@258..259 " "
-    ASSOC_ITEM_LIST@259..261
-      L_CURLY@259..260 "{"
-      R_CURLY@260..261 "}"
-  WHITESPACE@261..262 "\n"
-  IMPL@262..293
-    DEFAULT_KW@262..269 "default"
-    WHITESPACE@269..270 " "
-    UNSAFE_KW@270..276 "unsafe"
-    WHITESPACE@276..277 " "
-    IMPL_KW@277..281 "impl"
-    WHITESPACE@281..282 " "
-    PATH_TYPE@282..283
-      PATH@282..283
-        PATH_SEGMENT@282..283
-          NAME_REF@282..283
-            IDENT@282..283 "T"
-    WHITESPACE@283..284 " "
-    FOR_KW@284..287 "for"
-    WHITESPACE@287..288 " "
-    TUPLE_TYPE@288..290
-      L_PAREN@288..289 "("
-      R_PAREN@289..290 ")"
-    WHITESPACE@290..291 " "
-    ASSOC_ITEM_LIST@291..293
-      L_CURLY@291..292 "{"
-      R_CURLY@292..293 "}"
-  WHITESPACE@293..294 "\n"
+SOURCE_FILE
+  TRAIT
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n  "
+      TYPE_ALIAS
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        TYPE_KW "type"
+        WHITESPACE " "
+        NAME
+          IDENT "T"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Bar"
+        SEMICOLON ";"
+      WHITESPACE "\n  "
+      CONST
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "f"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u8"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        LITERAL
+          INT_NUMBER "0"
+        SEMICOLON ";"
+      WHITESPACE "\n  "
+      FN
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n  "
+      FN
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        UNSAFE_KW "unsafe"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "bar"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  IMPL
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      WHITESPACE "\n  "
+      TYPE_ALIAS
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        TYPE_KW "type"
+        WHITESPACE " "
+        NAME
+          IDENT "T"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Bar"
+        SEMICOLON ";"
+      WHITESPACE "\n  "
+      CONST
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "f"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "u8"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        LITERAL
+          INT_NUMBER "0"
+        SEMICOLON ";"
+      WHITESPACE "\n  "
+      FN
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "foo"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n  "
+      FN
+        DEFAULT_KW "default"
+        WHITESPACE " "
+        UNSAFE_KW "unsafe"
+        WHITESPACE " "
+        FN_KW "fn"
+        WHITESPACE " "
+        NAME
+          IDENT "bar"
+        PARAM_LIST
+          L_PAREN "("
+          R_PAREN ")"
+        WHITESPACE " "
+        BLOCK_EXPR
+          STMT_LIST
+            L_CURLY "{"
+            R_CURLY "}"
+      WHITESPACE "\n"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  IMPL
+    DEFAULT_KW "default"
+    WHITESPACE " "
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  IMPL
+    DEFAULT_KW "default"
+    WHITESPACE " "
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "T"
+    WHITESPACE " "
+    FOR_KW "for"
+    WHITESPACE " "
+    TUPLE_TYPE
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0066_default_modifier.txt b/crates/parser/test_data/parser/ok/0066_default_modifier.txt
deleted file mode 100644
index a4303098a28..00000000000
--- a/crates/parser/test_data/parser/ok/0066_default_modifier.txt
+++ /dev/null
@@ -1,222 +0,0 @@
-SOURCE_FILE
-  TRAIT
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n  "
-      TYPE_ALIAS
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        TYPE_KW "type"
-        WHITESPACE " "
-        NAME
-          IDENT "T"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Bar"
-        SEMICOLON ";"
-      WHITESPACE "\n  "
-      CONST
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        CONST_KW "const"
-        WHITESPACE " "
-        NAME
-          IDENT "f"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u8"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        LITERAL
-          INT_NUMBER "0"
-        SEMICOLON ";"
-      WHITESPACE "\n  "
-      FN
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n  "
-      FN
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        UNSAFE_KW "unsafe"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "bar"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  IMPL
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      WHITESPACE "\n  "
-      TYPE_ALIAS
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        TYPE_KW "type"
-        WHITESPACE " "
-        NAME
-          IDENT "T"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Bar"
-        SEMICOLON ";"
-      WHITESPACE "\n  "
-      CONST
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        CONST_KW "const"
-        WHITESPACE " "
-        NAME
-          IDENT "f"
-        COLON ":"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "u8"
-        WHITESPACE " "
-        EQ "="
-        WHITESPACE " "
-        LITERAL
-          INT_NUMBER "0"
-        SEMICOLON ";"
-      WHITESPACE "\n  "
-      FN
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "foo"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n  "
-      FN
-        DEFAULT_KW "default"
-        WHITESPACE " "
-        UNSAFE_KW "unsafe"
-        WHITESPACE " "
-        FN_KW "fn"
-        WHITESPACE " "
-        NAME
-          IDENT "bar"
-        PARAM_LIST
-          L_PAREN "("
-          R_PAREN ")"
-        WHITESPACE " "
-        BLOCK_EXPR
-          STMT_LIST
-            L_CURLY "{"
-            R_CURLY "}"
-      WHITESPACE "\n"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  IMPL
-    DEFAULT_KW "default"
-    WHITESPACE " "
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  IMPL
-    DEFAULT_KW "default"
-    WHITESPACE " "
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "T"
-    WHITESPACE " "
-    FOR_KW "for"
-    WHITESPACE " "
-    TUPLE_TYPE
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0067_where_for_pred.rast b/crates/parser/test_data/parser/ok/0067_where_for_pred.rast
index d1bf63d507b..136fce93d7e 100644
--- a/crates/parser/test_data/parser/ok/0067_where_for_pred.rast
+++ b/crates/parser/test_data/parser/ok/0067_where_for_pred.rast
@@ -1,413 +1,413 @@
-SOURCE_FILE@0..374
-  FN@0..55
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..12
-      IDENT@3..12 "for_trait"
-    GENERIC_PARAM_LIST@12..15
-      L_ANGLE@12..13 "<"
-      TYPE_PARAM@13..14
-        NAME@13..14
-          IDENT@13..14 "F"
-      R_ANGLE@14..15 ">"
-    PARAM_LIST@15..17
-      L_PAREN@15..16 "("
-      R_PAREN@16..17 ")"
-    WHITESPACE@17..18 "\n"
-    WHERE_CLAUSE@18..51
-      WHERE_KW@18..23 "where"
-      WHITESPACE@23..28 "\n    "
-      WHERE_PRED@28..50
-        FOR_KW@28..31 "for"
-        GENERIC_PARAM_LIST@31..35
-          L_ANGLE@31..32 "<"
-          LIFETIME_PARAM@32..34
-            LIFETIME@32..34
-              LIFETIME_IDENT@32..34 "'a"
-          R_ANGLE@34..35 ">"
-        WHITESPACE@35..36 " "
-        PATH_TYPE@36..37
-          PATH@36..37
-            PATH_SEGMENT@36..37
-              NAME_REF@36..37
-                IDENT@36..37 "F"
-        COLON@37..38 ":"
-        WHITESPACE@38..39 " "
-        TYPE_BOUND_LIST@39..50
-          TYPE_BOUND@39..50
-            PATH_TYPE@39..50
-              PATH@39..50
-                PATH_SEGMENT@39..50
-                  NAME_REF@39..41
-                    IDENT@39..41 "Fn"
-                  PARAM_LIST@41..50
-                    L_PAREN@41..42 "("
-                    PARAM@42..49
-                      REF_TYPE@42..49
-                        AMP@42..43 "&"
-                        LIFETIME@43..45
-                          LIFETIME_IDENT@43..45 "'a"
-                        WHITESPACE@45..46 " "
-                        PATH_TYPE@46..49
-                          PATH@46..49
-                            PATH_SEGMENT@46..49
-                              NAME_REF@46..49
-                                IDENT@46..49 "str"
-                    R_PAREN@49..50 ")"
-      COMMA@50..51 ","
-    WHITESPACE@51..52 "\n"
-    BLOCK_EXPR@52..55
-      STMT_LIST@52..55
-        L_CURLY@52..53 "{"
-        WHITESPACE@53..54 "\n"
-        R_CURLY@54..55 "}"
-  WHITESPACE@55..56 "\n"
-  FN@56..107
-    FN_KW@56..58 "fn"
-    WHITESPACE@58..59 " "
-    NAME@59..66
-      IDENT@59..66 "for_ref"
-    GENERIC_PARAM_LIST@66..69
-      L_ANGLE@66..67 "<"
-      TYPE_PARAM@67..68
-        NAME@67..68
-          IDENT@67..68 "F"
-      R_ANGLE@68..69 ">"
-    PARAM_LIST@69..71
-      L_PAREN@69..70 "("
-      R_PAREN@70..71 ")"
-    WHITESPACE@71..72 "\n"
-    WHERE_CLAUSE@72..103
-      WHERE_KW@72..77 "where"
-      WHITESPACE@77..82 "\n    "
-      WHERE_PRED@82..102
-        FOR_KW@82..85 "for"
-        GENERIC_PARAM_LIST@85..89
-          L_ANGLE@85..86 "<"
-          LIFETIME_PARAM@86..88
-            LIFETIME@86..88
-              LIFETIME_IDENT@86..88 "'a"
-          R_ANGLE@88..89 ">"
-        WHITESPACE@89..90 " "
-        REF_TYPE@90..95
-          AMP@90..91 "&"
-          LIFETIME@91..93
-            LIFETIME_IDENT@91..93 "'a"
-          WHITESPACE@93..94 " "
-          PATH_TYPE@94..95
-            PATH@94..95
-              PATH_SEGMENT@94..95
-                NAME_REF@94..95
-                  IDENT@94..95 "F"
-        COLON@95..96 ":"
-        WHITESPACE@96..97 " "
-        TYPE_BOUND_LIST@97..102
-          TYPE_BOUND@97..102
-            PATH_TYPE@97..102
-              PATH@97..102
-                PATH_SEGMENT@97..102
-                  NAME_REF@97..102
-                    IDENT@97..102 "Debug"
-      COMMA@102..103 ","
-    WHITESPACE@103..104 "\n"
-    BLOCK_EXPR@104..107
-      STMT_LIST@104..107
-        L_CURLY@104..105 "{"
-        WHITESPACE@105..106 "\n"
-        R_CURLY@106..107 "}"
-  WHITESPACE@107..108 "\n"
-  FN@108..170
-    FN_KW@108..110 "fn"
-    WHITESPACE@110..111 " "
-    NAME@111..121
-      IDENT@111..121 "for_parens"
-    GENERIC_PARAM_LIST@121..124
-      L_ANGLE@121..122 "<"
-      TYPE_PARAM@122..123
-        NAME@122..123
-          IDENT@122..123 "F"
-      R_ANGLE@123..124 ">"
-    PARAM_LIST@124..126
-      L_PAREN@124..125 "("
-      R_PAREN@125..126 ")"
-    WHITESPACE@126..127 "\n"
-    WHERE_CLAUSE@127..166
-      WHERE_KW@127..132 "where"
-      WHITESPACE@132..137 "\n    "
-      WHERE_PRED@137..165
-        FOR_KW@137..140 "for"
-        GENERIC_PARAM_LIST@140..144
-          L_ANGLE@140..141 "<"
-          LIFETIME_PARAM@141..143
-            LIFETIME@141..143
-              LIFETIME_IDENT@141..143 "'a"
-          R_ANGLE@143..144 ">"
-        WHITESPACE@144..145 " "
-        PAREN_TYPE@145..152
-          L_PAREN@145..146 "("
-          REF_TYPE@146..151
-            AMP@146..147 "&"
-            LIFETIME@147..149
-              LIFETIME_IDENT@147..149 "'a"
-            WHITESPACE@149..150 " "
-            PATH_TYPE@150..151
-              PATH@150..151
-                PATH_SEGMENT@150..151
-                  NAME_REF@150..151
-                    IDENT@150..151 "F"
-          R_PAREN@151..152 ")"
-        COLON@152..153 ":"
-        WHITESPACE@153..154 " "
-        TYPE_BOUND_LIST@154..165
-          TYPE_BOUND@154..165
-            PATH_TYPE@154..165
-              PATH@154..165
-                PATH_SEGMENT@154..165
-                  NAME_REF@154..156
-                    IDENT@154..156 "Fn"
-                  PARAM_LIST@156..165
-                    L_PAREN@156..157 "("
-                    PARAM@157..164
-                      REF_TYPE@157..164
-                        AMP@157..158 "&"
-                        LIFETIME@158..160
-                          LIFETIME_IDENT@158..160 "'a"
-                        WHITESPACE@160..161 " "
-                        PATH_TYPE@161..164
-                          PATH@161..164
-                            PATH_SEGMENT@161..164
-                              NAME_REF@161..164
-                                IDENT@161..164 "str"
-                    R_PAREN@164..165 ")"
-      COMMA@165..166 ","
-    WHITESPACE@166..167 "\n"
-    BLOCK_EXPR@167..170
-      STMT_LIST@167..170
-        L_CURLY@167..168 "{"
-        WHITESPACE@168..169 "\n"
-        R_CURLY@169..170 "}"
-  WHITESPACE@170..171 "\n"
-  FN@171..223
-    FN_KW@171..173 "fn"
-    WHITESPACE@173..174 " "
-    NAME@174..183
-      IDENT@174..183 "for_slice"
-    GENERIC_PARAM_LIST@183..186
-      L_ANGLE@183..184 "<"
-      TYPE_PARAM@184..185
-        NAME@184..185
-          IDENT@184..185 "F"
-      R_ANGLE@185..186 ">"
-    PARAM_LIST@186..188
-      L_PAREN@186..187 "("
-      R_PAREN@187..188 ")"
-    WHITESPACE@188..189 "\n"
-    WHERE_CLAUSE@189..219
-      WHERE_KW@189..194 "where"
-      WHITESPACE@194..199 "\n    "
-      WHERE_PRED@199..218
-        FOR_KW@199..202 "for"
-        GENERIC_PARAM_LIST@202..206
-          L_ANGLE@202..203 "<"
-          LIFETIME_PARAM@203..205
-            LIFETIME@203..205
-              LIFETIME_IDENT@203..205 "'a"
-          R_ANGLE@205..206 ">"
-        WHITESPACE@206..207 " "
-        SLICE_TYPE@207..214
-          L_BRACK@207..208 "["
-          REF_TYPE@208..213
-            AMP@208..209 "&"
-            LIFETIME@209..211
-              LIFETIME_IDENT@209..211 "'a"
-            WHITESPACE@211..212 " "
-            PATH_TYPE@212..213
-              PATH@212..213
-                PATH_SEGMENT@212..213
-                  NAME_REF@212..213
-                    IDENT@212..213 "F"
-          R_BRACK@213..214 "]"
-        COLON@214..215 ":"
-        WHITESPACE@215..216 " "
-        TYPE_BOUND_LIST@216..218
-          TYPE_BOUND@216..218
-            PATH_TYPE@216..218
-              PATH@216..218
-                PATH_SEGMENT@216..218
-                  NAME_REF@216..218
-                    IDENT@216..218 "Eq"
-      COMMA@218..219 ","
-    WHITESPACE@219..220 "\n"
-    BLOCK_EXPR@220..223
-      STMT_LIST@220..223
-        L_CURLY@220..221 "{"
-        WHITESPACE@221..222 "\n"
-        R_CURLY@222..223 "}"
-  WHITESPACE@223..224 "\n"
-  FN@224..300
-    FN_KW@224..226 "fn"
-    WHITESPACE@226..227 " "
-    NAME@227..236
-      IDENT@227..236 "for_qpath"
-    GENERIC_PARAM_LIST@236..239
-      L_ANGLE@236..237 "<"
-      TYPE_PARAM@237..238
-        NAME@237..238
-          IDENT@237..238 "T"
-      R_ANGLE@238..239 ">"
-    PARAM_LIST@239..247
-      L_PAREN@239..240 "("
-      PARAM@240..246
-        IDENT_PAT@240..242
-          NAME@240..242
-            IDENT@240..242 "_t"
-        COLON@242..243 ":"
-        WHITESPACE@243..244 " "
-        REF_TYPE@244..246
-          AMP@244..245 "&"
-          PATH_TYPE@245..246
-            PATH@245..246
-              PATH_SEGMENT@245..246
-                NAME_REF@245..246
-                  IDENT@245..246 "T"
-      R_PAREN@246..247 ")"
-    WHITESPACE@247..248 "\n"
-    WHERE_CLAUSE@248..296
-      WHERE_KW@248..253 "where"
-      WHITESPACE@253..258 "\n    "
-      WHERE_PRED@258..295
-        FOR_KW@258..261 "for"
-        GENERIC_PARAM_LIST@261..265
-          L_ANGLE@261..262 "<"
-          LIFETIME_PARAM@262..264
-            LIFETIME@262..264
-              LIFETIME_IDENT@262..264 "'a"
-          R_ANGLE@264..265 ">"
-        WHITESPACE@265..266 " "
-        PATH_TYPE@266..285
-          PATH@266..285
-            PATH@266..280
-              PATH_SEGMENT@266..280
-                L_ANGLE@266..267 "<"
-                REF_TYPE@267..272
-                  AMP@267..268 "&"
-                  LIFETIME@268..270
-                    LIFETIME_IDENT@268..270 "'a"
-                  WHITESPACE@270..271 " "
-                  PATH_TYPE@271..272
-                    PATH@271..272
-                      PATH_SEGMENT@271..272
-                        NAME_REF@271..272
-                          IDENT@271..272 "T"
-                WHITESPACE@272..273 " "
-                AS_KW@273..275 "as"
-                WHITESPACE@275..276 " "
-                PATH_TYPE@276..279
-                  PATH@276..279
-                    PATH_SEGMENT@276..279
-                      NAME_REF@276..279
-                        IDENT@276..279 "Baz"
-                R_ANGLE@279..280 ">"
-            COLON2@280..282 "::"
-            PATH_SEGMENT@282..285
-              NAME_REF@282..285
-                IDENT@282..285 "Foo"
-        COLON@285..286 ":"
-        WHITESPACE@286..287 " "
-        TYPE_BOUND_LIST@287..295
-          TYPE_BOUND@287..295
-            PATH_TYPE@287..295
-              PATH@287..295
-                PATH_SEGMENT@287..295
-                  NAME_REF@287..295
-                    IDENT@287..295 "Iterator"
-      COMMA@295..296 ","
-    WHITESPACE@296..297 "\n"
-    BLOCK_EXPR@297..300
-      STMT_LIST@297..300
-        L_CURLY@297..298 "{"
-        WHITESPACE@298..299 "\n"
-        R_CURLY@299..300 "}"
-  WHITESPACE@300..301 "\n"
-  FN@301..373
-    FN_KW@301..303 "fn"
-    WHITESPACE@303..304 " "
-    NAME@304..314
-      IDENT@304..314 "for_for_fn"
-    GENERIC_PARAM_LIST@314..317
-      L_ANGLE@314..315 "<"
-      TYPE_PARAM@315..316
-        NAME@315..316
-          IDENT@315..316 "T"
-      R_ANGLE@316..317 ">"
-    PARAM_LIST@317..319
-      L_PAREN@317..318 "("
-      R_PAREN@318..319 ")"
-    WHITESPACE@319..320 "\n"
-    WHERE_CLAUSE@320..369
-      WHERE_KW@320..325 "where"
-      WHITESPACE@325..330 "\n    "
-      WHERE_PRED@330..368
-        FOR_KW@330..333 "for"
-        GENERIC_PARAM_LIST@333..337
-          L_ANGLE@333..334 "<"
-          LIFETIME_PARAM@334..336
-            LIFETIME@334..336
-              LIFETIME_IDENT@334..336 "'a"
-          R_ANGLE@336..337 ">"
-        WHITESPACE@337..338 " "
-        FOR_TYPE@338..362
-          FOR_KW@338..341 "for"
-          GENERIC_PARAM_LIST@341..345
-            L_ANGLE@341..342 "<"
-            LIFETIME_PARAM@342..344
-              LIFETIME@342..344
-                LIFETIME_IDENT@342..344 "'b"
-            R_ANGLE@344..345 ">"
-          WHITESPACE@345..346 " "
-          FN_PTR_TYPE@346..362
-            FN_KW@346..348 "fn"
-            PARAM_LIST@348..362
-              L_PAREN@348..349 "("
-              PARAM@349..354
-                REF_TYPE@349..354
-                  AMP@349..350 "&"
-                  LIFETIME@350..352
-                    LIFETIME_IDENT@350..352 "'a"
-                  WHITESPACE@352..353 " "
-                  PATH_TYPE@353..354
-                    PATH@353..354
-                      PATH_SEGMENT@353..354
-                        NAME_REF@353..354
-                          IDENT@353..354 "T"
-              COMMA@354..355 ","
-              WHITESPACE@355..356 " "
-              PARAM@356..361
-                REF_TYPE@356..361
-                  AMP@356..357 "&"
-                  LIFETIME@357..359
-                    LIFETIME_IDENT@357..359 "'b"
-                  WHITESPACE@359..360 " "
-                  PATH_TYPE@360..361
-                    PATH@360..361
-                      PATH_SEGMENT@360..361
-                        NAME_REF@360..361
-                          IDENT@360..361 "T"
-              R_PAREN@361..362 ")"
-        COLON@362..363 ":"
-        WHITESPACE@363..364 " "
-        TYPE_BOUND_LIST@364..368
-          TYPE_BOUND@364..368
-            PATH_TYPE@364..368
-              PATH@364..368
-                PATH_SEGMENT@364..368
-                  NAME_REF@364..368
-                    IDENT@364..368 "Copy"
-      COMMA@368..369 ","
-    WHITESPACE@369..370 "\n"
-    BLOCK_EXPR@370..373
-      STMT_LIST@370..373
-        L_CURLY@370..371 "{"
-        WHITESPACE@371..372 "\n"
-        R_CURLY@372..373 "}"
-  WHITESPACE@373..374 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_trait"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "F"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "F"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Fn"
+                  PARAM_LIST
+                    L_PAREN "("
+                    PARAM
+                      REF_TYPE
+                        AMP "&"
+                        LIFETIME
+                          LIFETIME_IDENT "'a"
+                        WHITESPACE " "
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "str"
+                    R_PAREN ")"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_ref"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "F"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        REF_TYPE
+          AMP "&"
+          LIFETIME
+            LIFETIME_IDENT "'a"
+          WHITESPACE " "
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "F"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Debug"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_parens"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "F"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        PAREN_TYPE
+          L_PAREN "("
+          REF_TYPE
+            AMP "&"
+            LIFETIME
+              LIFETIME_IDENT "'a"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "F"
+          R_PAREN ")"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Fn"
+                  PARAM_LIST
+                    L_PAREN "("
+                    PARAM
+                      REF_TYPE
+                        AMP "&"
+                        LIFETIME
+                          LIFETIME_IDENT "'a"
+                        WHITESPACE " "
+                        PATH_TYPE
+                          PATH
+                            PATH_SEGMENT
+                              NAME_REF
+                                IDENT "str"
+                    R_PAREN ")"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_slice"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "F"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        SLICE_TYPE
+          L_BRACK "["
+          REF_TYPE
+            AMP "&"
+            LIFETIME
+              LIFETIME_IDENT "'a"
+            WHITESPACE " "
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "F"
+          R_BRACK "]"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Eq"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_qpath"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      PARAM
+        IDENT_PAT
+          NAME
+            IDENT "_t"
+        COLON ":"
+        WHITESPACE " "
+        REF_TYPE
+          AMP "&"
+          PATH_TYPE
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "T"
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH
+              PATH_SEGMENT
+                L_ANGLE "<"
+                REF_TYPE
+                  AMP "&"
+                  LIFETIME
+                    LIFETIME_IDENT "'a"
+                  WHITESPACE " "
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "T"
+                WHITESPACE " "
+                AS_KW "as"
+                WHITESPACE " "
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Baz"
+                R_ANGLE ">"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "Foo"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Iterator"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "for_for_fn"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      TYPE_PARAM
+        NAME
+          IDENT "T"
+      R_ANGLE ">"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE "\n"
+    WHERE_CLAUSE
+      WHERE_KW "where"
+      WHITESPACE "\n    "
+      WHERE_PRED
+        FOR_KW "for"
+        GENERIC_PARAM_LIST
+          L_ANGLE "<"
+          LIFETIME_PARAM
+            LIFETIME
+              LIFETIME_IDENT "'a"
+          R_ANGLE ">"
+        WHITESPACE " "
+        FOR_TYPE
+          FOR_KW "for"
+          GENERIC_PARAM_LIST
+            L_ANGLE "<"
+            LIFETIME_PARAM
+              LIFETIME
+                LIFETIME_IDENT "'b"
+            R_ANGLE ">"
+          WHITESPACE " "
+          FN_PTR_TYPE
+            FN_KW "fn"
+            PARAM_LIST
+              L_PAREN "("
+              PARAM
+                REF_TYPE
+                  AMP "&"
+                  LIFETIME
+                    LIFETIME_IDENT "'a"
+                  WHITESPACE " "
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "T"
+              COMMA ","
+              WHITESPACE " "
+              PARAM
+                REF_TYPE
+                  AMP "&"
+                  LIFETIME
+                    LIFETIME_IDENT "'b"
+                  WHITESPACE " "
+                  PATH_TYPE
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "T"
+              R_PAREN ")"
+        COLON ":"
+        WHITESPACE " "
+        TYPE_BOUND_LIST
+          TYPE_BOUND
+            PATH_TYPE
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "Copy"
+      COMMA ","
+    WHITESPACE "\n"
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0067_where_for_pred.txt b/crates/parser/test_data/parser/ok/0067_where_for_pred.txt
deleted file mode 100644
index 136fce93d7e..00000000000
--- a/crates/parser/test_data/parser/ok/0067_where_for_pred.txt
+++ /dev/null
@@ -1,413 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_trait"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "F"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "F"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Fn"
-                  PARAM_LIST
-                    L_PAREN "("
-                    PARAM
-                      REF_TYPE
-                        AMP "&"
-                        LIFETIME
-                          LIFETIME_IDENT "'a"
-                        WHITESPACE " "
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "str"
-                    R_PAREN ")"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_ref"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "F"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        REF_TYPE
-          AMP "&"
-          LIFETIME
-            LIFETIME_IDENT "'a"
-          WHITESPACE " "
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "F"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Debug"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_parens"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "F"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        PAREN_TYPE
-          L_PAREN "("
-          REF_TYPE
-            AMP "&"
-            LIFETIME
-              LIFETIME_IDENT "'a"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "F"
-          R_PAREN ")"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Fn"
-                  PARAM_LIST
-                    L_PAREN "("
-                    PARAM
-                      REF_TYPE
-                        AMP "&"
-                        LIFETIME
-                          LIFETIME_IDENT "'a"
-                        WHITESPACE " "
-                        PATH_TYPE
-                          PATH
-                            PATH_SEGMENT
-                              NAME_REF
-                                IDENT "str"
-                    R_PAREN ")"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_slice"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "F"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        SLICE_TYPE
-          L_BRACK "["
-          REF_TYPE
-            AMP "&"
-            LIFETIME
-              LIFETIME_IDENT "'a"
-            WHITESPACE " "
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "F"
-          R_BRACK "]"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Eq"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_qpath"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      PARAM
-        IDENT_PAT
-          NAME
-            IDENT "_t"
-        COLON ":"
-        WHITESPACE " "
-        REF_TYPE
-          AMP "&"
-          PATH_TYPE
-            PATH
-              PATH_SEGMENT
-                NAME_REF
-                  IDENT "T"
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        PATH_TYPE
-          PATH
-            PATH
-              PATH_SEGMENT
-                L_ANGLE "<"
-                REF_TYPE
-                  AMP "&"
-                  LIFETIME
-                    LIFETIME_IDENT "'a"
-                  WHITESPACE " "
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "T"
-                WHITESPACE " "
-                AS_KW "as"
-                WHITESPACE " "
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Baz"
-                R_ANGLE ">"
-            COLON2 "::"
-            PATH_SEGMENT
-              NAME_REF
-                IDENT "Foo"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Iterator"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "for_for_fn"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      TYPE_PARAM
-        NAME
-          IDENT "T"
-      R_ANGLE ">"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE "\n"
-    WHERE_CLAUSE
-      WHERE_KW "where"
-      WHITESPACE "\n    "
-      WHERE_PRED
-        FOR_KW "for"
-        GENERIC_PARAM_LIST
-          L_ANGLE "<"
-          LIFETIME_PARAM
-            LIFETIME
-              LIFETIME_IDENT "'a"
-          R_ANGLE ">"
-        WHITESPACE " "
-        FOR_TYPE
-          FOR_KW "for"
-          GENERIC_PARAM_LIST
-            L_ANGLE "<"
-            LIFETIME_PARAM
-              LIFETIME
-                LIFETIME_IDENT "'b"
-            R_ANGLE ">"
-          WHITESPACE " "
-          FN_PTR_TYPE
-            FN_KW "fn"
-            PARAM_LIST
-              L_PAREN "("
-              PARAM
-                REF_TYPE
-                  AMP "&"
-                  LIFETIME
-                    LIFETIME_IDENT "'a"
-                  WHITESPACE " "
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "T"
-              COMMA ","
-              WHITESPACE " "
-              PARAM
-                REF_TYPE
-                  AMP "&"
-                  LIFETIME
-                    LIFETIME_IDENT "'b"
-                  WHITESPACE " "
-                  PATH_TYPE
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "T"
-              R_PAREN ")"
-        COLON ":"
-        WHITESPACE " "
-        TYPE_BOUND_LIST
-          TYPE_BOUND
-            PATH_TYPE
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "Copy"
-      COMMA ","
-    WHITESPACE "\n"
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0068_item_modifiers.rast b/crates/parser/test_data/parser/ok/0068_item_modifiers.rast
index 8b635d0a037..41fc5691ad7 100644
--- a/crates/parser/test_data/parser/ok/0068_item_modifiers.rast
+++ b/crates/parser/test_data/parser/ok/0068_item_modifiers.rast
@@ -1,238 +1,238 @@
-SOURCE_FILE@0..328
-  FN@0..17
-    ASYNC_KW@0..5 "async"
-    WHITESPACE@5..6 " "
-    FN_KW@6..8 "fn"
-    WHITESPACE@8..9 " "
-    NAME@9..12
-      IDENT@9..12 "foo"
-    PARAM_LIST@12..14
-      L_PAREN@12..13 "("
-      R_PAREN@13..14 ")"
-    WHITESPACE@14..15 " "
-    BLOCK_EXPR@15..17
-      STMT_LIST@15..17
-        L_CURLY@15..16 "{"
-        R_CURLY@16..17 "}"
-  WHITESPACE@17..18 "\n"
-  FN@18..36
-    ABI@18..24
-      EXTERN_KW@18..24 "extern"
-    WHITESPACE@24..25 " "
-    FN_KW@25..27 "fn"
-    WHITESPACE@27..28 " "
-    NAME@28..31
-      IDENT@28..31 "foo"
-    PARAM_LIST@31..33
-      L_PAREN@31..32 "("
-      R_PAREN@32..33 ")"
-    WHITESPACE@33..34 " "
-    BLOCK_EXPR@34..36
-      STMT_LIST@34..36
-        L_CURLY@34..35 "{"
-        R_CURLY@35..36 "}"
-  WHITESPACE@36..37 "\n"
-  FN@37..54
-    CONST_KW@37..42 "const"
-    WHITESPACE@42..43 " "
-    FN_KW@43..45 "fn"
-    WHITESPACE@45..46 " "
-    NAME@46..49
-      IDENT@46..49 "foo"
-    PARAM_LIST@49..51
-      L_PAREN@49..50 "("
-      R_PAREN@50..51 ")"
-    WHITESPACE@51..52 " "
-    BLOCK_EXPR@52..54
-      STMT_LIST@52..54
-        L_CURLY@52..53 "{"
-        R_CURLY@53..54 "}"
-  WHITESPACE@54..55 "\n"
-  FN@55..79
-    CONST_KW@55..60 "const"
-    WHITESPACE@60..61 " "
-    UNSAFE_KW@61..67 "unsafe"
-    WHITESPACE@67..68 " "
-    FN_KW@68..70 "fn"
-    WHITESPACE@70..71 " "
-    NAME@71..74
-      IDENT@71..74 "foo"
-    PARAM_LIST@74..76
-      L_PAREN@74..75 "("
-      R_PAREN@75..76 ")"
-    WHITESPACE@76..77 " "
-    BLOCK_EXPR@77..79
-      STMT_LIST@77..79
-        L_CURLY@77..78 "{"
-        R_CURLY@78..79 "}"
-  WHITESPACE@79..80 "\n"
-  FN@80..109
-    UNSAFE_KW@80..86 "unsafe"
-    WHITESPACE@86..87 " "
-    ABI@87..97
-      EXTERN_KW@87..93 "extern"
-      WHITESPACE@93..94 " "
-      STRING@94..97 "\"C\""
-    WHITESPACE@97..98 " "
-    FN_KW@98..100 "fn"
-    WHITESPACE@100..101 " "
-    NAME@101..104
-      IDENT@101..104 "foo"
-    PARAM_LIST@104..106
-      L_PAREN@104..105 "("
-      R_PAREN@105..106 ")"
-    WHITESPACE@106..107 " "
-    BLOCK_EXPR@107..109
-      STMT_LIST@107..109
-        L_CURLY@107..108 "{"
-        R_CURLY@108..109 "}"
-  WHITESPACE@109..110 "\n"
-  FN@110..128
-    UNSAFE_KW@110..116 "unsafe"
-    WHITESPACE@116..117 " "
-    FN_KW@117..119 "fn"
-    WHITESPACE@119..120 " "
-    NAME@120..123
-      IDENT@120..123 "foo"
-    PARAM_LIST@123..125
-      L_PAREN@123..124 "("
-      R_PAREN@124..125 ")"
-    WHITESPACE@125..126 " "
-    BLOCK_EXPR@126..128
-      STMT_LIST@126..128
-        L_CURLY@126..127 "{"
-        R_CURLY@127..128 "}"
-  WHITESPACE@128..129 "\n"
-  FN@129..153
-    ASYNC_KW@129..134 "async"
-    WHITESPACE@134..135 " "
-    UNSAFE_KW@135..141 "unsafe"
-    WHITESPACE@141..142 " "
-    FN_KW@142..144 "fn"
-    WHITESPACE@144..145 " "
-    NAME@145..148
-      IDENT@145..148 "foo"
-    PARAM_LIST@148..150
-      L_PAREN@148..149 "("
-      R_PAREN@149..150 ")"
-    WHITESPACE@150..151 " "
-    BLOCK_EXPR@151..153
-      STMT_LIST@151..153
-        L_CURLY@151..152 "{"
-        R_CURLY@152..153 "}"
-  WHITESPACE@153..154 "\n"
-  FN@154..178
-    CONST_KW@154..159 "const"
-    WHITESPACE@159..160 " "
-    UNSAFE_KW@160..166 "unsafe"
-    WHITESPACE@166..167 " "
-    FN_KW@167..169 "fn"
-    WHITESPACE@169..170 " "
-    NAME@170..173
-      IDENT@170..173 "bar"
-    PARAM_LIST@173..175
-      L_PAREN@173..174 "("
-      R_PAREN@174..175 ")"
-    WHITESPACE@175..176 " "
-    BLOCK_EXPR@176..178
-      STMT_LIST@176..178
-        L_CURLY@176..177 "{"
-        R_CURLY@177..178 "}"
-  WHITESPACE@178..180 "\n\n"
-  TRAIT@180..197
-    UNSAFE_KW@180..186 "unsafe"
-    WHITESPACE@186..187 " "
-    TRAIT_KW@187..192 "trait"
-    WHITESPACE@192..193 " "
-    NAME@193..194
-      IDENT@193..194 "T"
-    WHITESPACE@194..195 " "
-    ASSOC_ITEM_LIST@195..197
-      L_CURLY@195..196 "{"
-      R_CURLY@196..197 "}"
-  WHITESPACE@197..198 "\n"
-  TRAIT@198..213
-    AUTO_KW@198..202 "auto"
-    WHITESPACE@202..203 " "
-    TRAIT_KW@203..208 "trait"
-    WHITESPACE@208..209 " "
-    NAME@209..210
-      IDENT@209..210 "T"
-    WHITESPACE@210..211 " "
-    ASSOC_ITEM_LIST@211..213
-      L_CURLY@211..212 "{"
-      R_CURLY@212..213 "}"
-  WHITESPACE@213..214 "\n"
-  TRAIT@214..236
-    UNSAFE_KW@214..220 "unsafe"
-    WHITESPACE@220..221 " "
-    AUTO_KW@221..225 "auto"
-    WHITESPACE@225..226 " "
-    TRAIT_KW@226..231 "trait"
-    WHITESPACE@231..232 " "
-    NAME@232..233
-      IDENT@232..233 "T"
-    WHITESPACE@233..234 " "
-    ASSOC_ITEM_LIST@234..236
-      L_CURLY@234..235 "{"
-      R_CURLY@235..236 "}"
-  WHITESPACE@236..238 "\n\n"
-  IMPL@238..256
-    UNSAFE_KW@238..244 "unsafe"
-    WHITESPACE@244..245 " "
-    IMPL_KW@245..249 "impl"
-    WHITESPACE@249..250 " "
-    PATH_TYPE@250..253
-      PATH@250..253
-        PATH_SEGMENT@250..253
-          NAME_REF@250..253
-            IDENT@250..253 "Foo"
-    WHITESPACE@253..254 " "
-    ASSOC_ITEM_LIST@254..256
-      L_CURLY@254..255 "{"
-      R_CURLY@255..256 "}"
-  WHITESPACE@256..257 "\n"
-  IMPL@257..276
-    DEFAULT_KW@257..264 "default"
-    WHITESPACE@264..265 " "
-    IMPL_KW@265..269 "impl"
-    WHITESPACE@269..270 " "
-    PATH_TYPE@270..273
-      PATH@270..273
-        PATH_SEGMENT@270..273
-          NAME_REF@270..273
-            IDENT@270..273 "Foo"
-    WHITESPACE@273..274 " "
-    ASSOC_ITEM_LIST@274..276
-      L_CURLY@274..275 "{"
-      R_CURLY@275..276 "}"
-  WHITESPACE@276..277 "\n"
-  IMPL@277..303
-    UNSAFE_KW@277..283 "unsafe"
-    WHITESPACE@283..284 " "
-    DEFAULT_KW@284..291 "default"
-    WHITESPACE@291..292 " "
-    IMPL_KW@292..296 "impl"
-    WHITESPACE@296..297 " "
-    PATH_TYPE@297..300
-      PATH@297..300
-        PATH_SEGMENT@297..300
-          NAME_REF@297..300
-            IDENT@297..300 "Foo"
-    WHITESPACE@300..301 " "
-    ASSOC_ITEM_LIST@301..303
-      L_CURLY@301..302 "{"
-      R_CURLY@302..303 "}"
-  WHITESPACE@303..305 "\n\n"
-  EXTERN_BLOCK@305..327
-    UNSAFE_KW@305..311 "unsafe"
-    WHITESPACE@311..312 " "
-    ABI@312..324
-      EXTERN_KW@312..318 "extern"
-      WHITESPACE@318..319 " "
-      STRING@319..324 "\"C++\""
-    WHITESPACE@324..325 " "
-    EXTERN_ITEM_LIST@325..327
-      L_CURLY@325..326 "{"
-      R_CURLY@326..327 "}"
-  WHITESPACE@327..328 "\n"
+SOURCE_FILE
+  FN
+    ASYNC_KW "async"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    ABI
+      EXTERN_KW "extern"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    CONST_KW "const"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    CONST_KW "const"
+    WHITESPACE " "
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C\""
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    ASYNC_KW "async"
+    WHITESPACE " "
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n"
+  FN
+    CONST_KW "const"
+    WHITESPACE " "
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "bar"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        R_CURLY "}"
+  WHITESPACE "\n\n"
+  TRAIT
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  TRAIT
+    AUTO_KW "auto"
+    WHITESPACE " "
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  TRAIT
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    AUTO_KW "auto"
+    WHITESPACE " "
+    TRAIT_KW "trait"
+    WHITESPACE " "
+    NAME
+      IDENT "T"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  IMPL
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  IMPL
+    DEFAULT_KW "default"
+    WHITESPACE " "
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
+  IMPL
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    DEFAULT_KW "default"
+    WHITESPACE " "
+    IMPL_KW "impl"
+    WHITESPACE " "
+    PATH_TYPE
+      PATH
+        PATH_SEGMENT
+          NAME_REF
+            IDENT "Foo"
+    WHITESPACE " "
+    ASSOC_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n\n"
+  EXTERN_BLOCK
+    UNSAFE_KW "unsafe"
+    WHITESPACE " "
+    ABI
+      EXTERN_KW "extern"
+      WHITESPACE " "
+      STRING "\"C++\""
+    WHITESPACE " "
+    EXTERN_ITEM_LIST
+      L_CURLY "{"
+      R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0068_item_modifiers.txt b/crates/parser/test_data/parser/ok/0068_item_modifiers.txt
deleted file mode 100644
index 41fc5691ad7..00000000000
--- a/crates/parser/test_data/parser/ok/0068_item_modifiers.txt
+++ /dev/null
@@ -1,238 +0,0 @@
-SOURCE_FILE
-  FN
-    ASYNC_KW "async"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    ABI
-      EXTERN_KW "extern"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    CONST_KW "const"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    CONST_KW "const"
-    WHITESPACE " "
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C\""
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    ASYNC_KW "async"
-    WHITESPACE " "
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n"
-  FN
-    CONST_KW "const"
-    WHITESPACE " "
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "bar"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        R_CURLY "}"
-  WHITESPACE "\n\n"
-  TRAIT
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  TRAIT
-    AUTO_KW "auto"
-    WHITESPACE " "
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  TRAIT
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    AUTO_KW "auto"
-    WHITESPACE " "
-    TRAIT_KW "trait"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  IMPL
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  IMPL
-    DEFAULT_KW "default"
-    WHITESPACE " "
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
-  IMPL
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    DEFAULT_KW "default"
-    WHITESPACE " "
-    IMPL_KW "impl"
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "Foo"
-    WHITESPACE " "
-    ASSOC_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n\n"
-  EXTERN_BLOCK
-    UNSAFE_KW "unsafe"
-    WHITESPACE " "
-    ABI
-      EXTERN_KW "extern"
-      WHITESPACE " "
-      STRING "\"C++\""
-    WHITESPACE " "
-    EXTERN_ITEM_LIST
-      L_CURLY "{"
-      R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0069_multi_trait_object.rast b/crates/parser/test_data/parser/ok/0069_multi_trait_object.rast
index 7967b88f200..9e8f4e19740 100644
--- a/crates/parser/test_data/parser/ok/0069_multi_trait_object.rast
+++ b/crates/parser/test_data/parser/ok/0069_multi_trait_object.rast
@@ -1,204 +1,204 @@
-SOURCE_FILE@0..195
-  TYPE_ALIAS@0..37
-    TYPE_KW@0..4 "type"
-    WHITESPACE@4..5 " "
-    NAME@5..8
-      IDENT@5..8 "Foo"
-    GENERIC_PARAM_LIST@8..12
-      L_ANGLE@8..9 "<"
-      LIFETIME_PARAM@9..11
-        LIFETIME@9..11
-          LIFETIME_IDENT@9..11 "'a"
-      R_ANGLE@11..12 ">"
-    WHITESPACE@12..13 " "
-    EQ@13..14 "="
-    WHITESPACE@14..15 " "
-    REF_TYPE@15..36
-      AMP@15..16 "&"
-      LIFETIME@16..18
-        LIFETIME_IDENT@16..18 "'a"
-      WHITESPACE@18..19 " "
-      PAREN_TYPE@19..36
-        L_PAREN@19..20 "("
-        DYN_TRAIT_TYPE@20..35
-          DYN_KW@20..23 "dyn"
-          WHITESPACE@23..24 " "
-          TYPE_BOUND_LIST@24..35
-            TYPE_BOUND@24..28
-              PATH_TYPE@24..28
-                PATH@24..28
-                  PATH_SEGMENT@24..28
-                    NAME_REF@24..28
-                      IDENT@24..28 "Send"
-            WHITESPACE@28..29 " "
-            PLUS@29..30 "+"
-            WHITESPACE@30..31 " "
-            TYPE_BOUND@31..35
-              PATH_TYPE@31..35
-                PATH@31..35
-                  PATH_SEGMENT@31..35
-                    NAME_REF@31..35
-                      IDENT@31..35 "Sync"
-        R_PAREN@35..36 ")"
-    SEMICOLON@36..37 ";"
-  WHITESPACE@37..38 "\n"
-  TYPE_ALIAS@38..74
-    TYPE_KW@38..42 "type"
-    WHITESPACE@42..43 " "
-    NAME@43..46
-      IDENT@43..46 "Foo"
-    WHITESPACE@46..47 " "
-    EQ@47..48 "="
-    WHITESPACE@48..49 " "
-    PTR_TYPE@49..73
-      STAR@49..50 "*"
-      CONST_KW@50..55 "const"
-      WHITESPACE@55..56 " "
-      PAREN_TYPE@56..73
-        L_PAREN@56..57 "("
-        DYN_TRAIT_TYPE@57..72
-          DYN_KW@57..60 "dyn"
-          WHITESPACE@60..61 " "
-          TYPE_BOUND_LIST@61..72
-            TYPE_BOUND@61..65
-              PATH_TYPE@61..65
-                PATH@61..65
-                  PATH_SEGMENT@61..65
-                    NAME_REF@61..65
-                      IDENT@61..65 "Send"
-            WHITESPACE@65..66 " "
-            PLUS@66..67 "+"
-            WHITESPACE@67..68 " "
-            TYPE_BOUND@68..72
-              PATH_TYPE@68..72
-                PATH@68..72
-                  PATH_SEGMENT@68..72
-                    NAME_REF@68..72
-                      IDENT@68..72 "Sync"
-        R_PAREN@72..73 ")"
-    SEMICOLON@73..74 ";"
-  WHITESPACE@74..75 "\n"
-  TYPE_ALIAS@75..115
-    TYPE_KW@75..79 "type"
-    WHITESPACE@79..80 " "
-    NAME@80..83
-      IDENT@80..83 "Foo"
-    WHITESPACE@83..84 " "
-    EQ@84..85 "="
-    WHITESPACE@85..86 " "
-    FN_PTR_TYPE@86..114
-      FN_KW@86..88 "fn"
-      PARAM_LIST@88..90
-        L_PAREN@88..89 "("
-        R_PAREN@89..90 ")"
-      WHITESPACE@90..91 " "
-      RET_TYPE@91..114
-        THIN_ARROW@91..93 "->"
-        WHITESPACE@93..94 " "
-        PAREN_TYPE@94..114
-          L_PAREN@94..95 "("
-          DYN_TRAIT_TYPE@95..113
-            DYN_KW@95..98 "dyn"
-            WHITESPACE@98..99 " "
-            TYPE_BOUND_LIST@99..113
-              TYPE_BOUND@99..103
-                PATH_TYPE@99..103
-                  PATH@99..103
-                    PATH_SEGMENT@99..103
-                      NAME_REF@99..103
-                        IDENT@99..103 "Send"
-              WHITESPACE@103..104 " "
-              PLUS@104..105 "+"
-              WHITESPACE@105..106 " "
-              TYPE_BOUND@106..113
-                LIFETIME@106..113
-                  LIFETIME_IDENT@106..113 "'static"
-          R_PAREN@113..114 ")"
-    SEMICOLON@114..115 ";"
-  WHITESPACE@115..116 "\n"
-  FN@116..194
-    FN_KW@116..118 "fn"
-    WHITESPACE@118..119 " "
-    NAME@119..123
-      IDENT@119..123 "main"
-    PARAM_LIST@123..125
-      L_PAREN@123..124 "("
-      R_PAREN@124..125 ")"
-    WHITESPACE@125..126 " "
-    BLOCK_EXPR@126..194
-      STMT_LIST@126..194
-        L_CURLY@126..127 "{"
-        WHITESPACE@127..132 "\n    "
-        LET_STMT@132..192
-          LET_KW@132..135 "let"
-          WHITESPACE@135..136 " "
-          IDENT_PAT@136..137
-            NAME@136..137
-              IDENT@136..137 "b"
-          WHITESPACE@137..138 " "
-          EQ@138..139 "="
-          WHITESPACE@139..140 " "
-          CAST_EXPR@140..191
-            PAREN_EXPR@140..144
-              L_PAREN@140..141 "("
-              REF_EXPR@141..143
-                AMP@141..142 "&"
-                PATH_EXPR@142..143
-                  PATH@142..143
-                    PATH_SEGMENT@142..143
-                      NAME_REF@142..143
-                        IDENT@142..143 "a"
-              R_PAREN@143..144 ")"
-            WHITESPACE@144..145 " "
-            AS_KW@145..147 "as"
-            WHITESPACE@147..148 " "
-            REF_TYPE@148..191
-              AMP@148..149 "&"
-              PAREN_TYPE@149..191
-                L_PAREN@149..150 "("
-                DYN_TRAIT_TYPE@150..190
-                  DYN_KW@150..153 "dyn"
-                  WHITESPACE@153..154 " "
-                  TYPE_BOUND_LIST@154..190
-                    TYPE_BOUND@154..182
-                      PATH_TYPE@154..182
-                        PATH@154..182
-                          PATH_SEGMENT@154..182
-                            NAME_REF@154..157
-                              IDENT@154..157 "Add"
-                            GENERIC_ARG_LIST@157..182
-                              L_ANGLE@157..158 "<"
-                              TYPE_ARG@158..163
-                                PATH_TYPE@158..163
-                                  PATH@158..163
-                                    PATH_SEGMENT@158..163
-                                      NAME_REF@158..163
-                                        IDENT@158..163 "Other"
-                              COMMA@163..164 ","
-                              WHITESPACE@164..165 " "
-                              ASSOC_TYPE_ARG@165..181
-                                NAME_REF@165..171
-                                  IDENT@165..171 "Output"
-                                WHITESPACE@171..172 " "
-                                EQ@172..173 "="
-                                WHITESPACE@173..174 " "
-                                PATH_TYPE@174..181
-                                  PATH@174..181
-                                    PATH_SEGMENT@174..181
-                                      NAME_REF@174..181
-                                        IDENT@174..181 "Addable"
-                              R_ANGLE@181..182 ">"
-                    WHITESPACE@182..183 " "
-                    PLUS@183..184 "+"
-                    WHITESPACE@184..185 " "
-                    TYPE_BOUND@185..190
-                      PATH_TYPE@185..190
-                        PATH@185..190
-                          PATH_SEGMENT@185..190
-                            NAME_REF@185..190
-                              IDENT@185..190 "Other"
-                R_PAREN@190..191 ")"
-          SEMICOLON@191..192 ";"
-        WHITESPACE@192..193 "\n"
-        R_CURLY@193..194 "}"
-  WHITESPACE@194..195 "\n"
+SOURCE_FILE
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      LIFETIME_PARAM
+        LIFETIME
+          LIFETIME_IDENT "'a"
+      R_ANGLE ">"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    REF_TYPE
+      AMP "&"
+      LIFETIME
+        LIFETIME_IDENT "'a"
+      WHITESPACE " "
+      PAREN_TYPE
+        L_PAREN "("
+        DYN_TRAIT_TYPE
+          DYN_KW "dyn"
+          WHITESPACE " "
+          TYPE_BOUND_LIST
+            TYPE_BOUND
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Send"
+            WHITESPACE " "
+            PLUS "+"
+            WHITESPACE " "
+            TYPE_BOUND
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Sync"
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    PTR_TYPE
+      STAR "*"
+      CONST_KW "const"
+      WHITESPACE " "
+      PAREN_TYPE
+        L_PAREN "("
+        DYN_TRAIT_TYPE
+          DYN_KW "dyn"
+          WHITESPACE " "
+          TYPE_BOUND_LIST
+            TYPE_BOUND
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Send"
+            WHITESPACE " "
+            PLUS "+"
+            WHITESPACE " "
+            TYPE_BOUND
+              PATH_TYPE
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "Sync"
+        R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  TYPE_ALIAS
+    TYPE_KW "type"
+    WHITESPACE " "
+    NAME
+      IDENT "Foo"
+    WHITESPACE " "
+    EQ "="
+    WHITESPACE " "
+    FN_PTR_TYPE
+      FN_KW "fn"
+      PARAM_LIST
+        L_PAREN "("
+        R_PAREN ")"
+      WHITESPACE " "
+      RET_TYPE
+        THIN_ARROW "->"
+        WHITESPACE " "
+        PAREN_TYPE
+          L_PAREN "("
+          DYN_TRAIT_TYPE
+            DYN_KW "dyn"
+            WHITESPACE " "
+            TYPE_BOUND_LIST
+              TYPE_BOUND
+                PATH_TYPE
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "Send"
+              WHITESPACE " "
+              PLUS "+"
+              WHITESPACE " "
+              TYPE_BOUND
+                LIFETIME
+                  LIFETIME_IDENT "'static"
+          R_PAREN ")"
+    SEMICOLON ";"
+  WHITESPACE "\n"
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "main"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        LET_STMT
+          LET_KW "let"
+          WHITESPACE " "
+          IDENT_PAT
+            NAME
+              IDENT "b"
+          WHITESPACE " "
+          EQ "="
+          WHITESPACE " "
+          CAST_EXPR
+            PAREN_EXPR
+              L_PAREN "("
+              REF_EXPR
+                AMP "&"
+                PATH_EXPR
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "a"
+              R_PAREN ")"
+            WHITESPACE " "
+            AS_KW "as"
+            WHITESPACE " "
+            REF_TYPE
+              AMP "&"
+              PAREN_TYPE
+                L_PAREN "("
+                DYN_TRAIT_TYPE
+                  DYN_KW "dyn"
+                  WHITESPACE " "
+                  TYPE_BOUND_LIST
+                    TYPE_BOUND
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Add"
+                            GENERIC_ARG_LIST
+                              L_ANGLE "<"
+                              TYPE_ARG
+                                PATH_TYPE
+                                  PATH
+                                    PATH_SEGMENT
+                                      NAME_REF
+                                        IDENT "Other"
+                              COMMA ","
+                              WHITESPACE " "
+                              ASSOC_TYPE_ARG
+                                NAME_REF
+                                  IDENT "Output"
+                                WHITESPACE " "
+                                EQ "="
+                                WHITESPACE " "
+                                PATH_TYPE
+                                  PATH
+                                    PATH_SEGMENT
+                                      NAME_REF
+                                        IDENT "Addable"
+                              R_ANGLE ">"
+                    WHITESPACE " "
+                    PLUS "+"
+                    WHITESPACE " "
+                    TYPE_BOUND
+                      PATH_TYPE
+                        PATH
+                          PATH_SEGMENT
+                            NAME_REF
+                              IDENT "Other"
+                R_PAREN ")"
+          SEMICOLON ";"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0069_multi_trait_object.txt b/crates/parser/test_data/parser/ok/0069_multi_trait_object.txt
deleted file mode 100644
index 9e8f4e19740..00000000000
--- a/crates/parser/test_data/parser/ok/0069_multi_trait_object.txt
+++ /dev/null
@@ -1,204 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    GENERIC_PARAM_LIST
-      L_ANGLE "<"
-      LIFETIME_PARAM
-        LIFETIME
-          LIFETIME_IDENT "'a"
-      R_ANGLE ">"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    REF_TYPE
-      AMP "&"
-      LIFETIME
-        LIFETIME_IDENT "'a"
-      WHITESPACE " "
-      PAREN_TYPE
-        L_PAREN "("
-        DYN_TRAIT_TYPE
-          DYN_KW "dyn"
-          WHITESPACE " "
-          TYPE_BOUND_LIST
-            TYPE_BOUND
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Send"
-            WHITESPACE " "
-            PLUS "+"
-            WHITESPACE " "
-            TYPE_BOUND
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Sync"
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PTR_TYPE
-      STAR "*"
-      CONST_KW "const"
-      WHITESPACE " "
-      PAREN_TYPE
-        L_PAREN "("
-        DYN_TRAIT_TYPE
-          DYN_KW "dyn"
-          WHITESPACE " "
-          TYPE_BOUND_LIST
-            TYPE_BOUND
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Send"
-            WHITESPACE " "
-            PLUS "+"
-            WHITESPACE " "
-            TYPE_BOUND
-              PATH_TYPE
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "Sync"
-        R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "Foo"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    FN_PTR_TYPE
-      FN_KW "fn"
-      PARAM_LIST
-        L_PAREN "("
-        R_PAREN ")"
-      WHITESPACE " "
-      RET_TYPE
-        THIN_ARROW "->"
-        WHITESPACE " "
-        PAREN_TYPE
-          L_PAREN "("
-          DYN_TRAIT_TYPE
-            DYN_KW "dyn"
-            WHITESPACE " "
-            TYPE_BOUND_LIST
-              TYPE_BOUND
-                PATH_TYPE
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "Send"
-              WHITESPACE " "
-              PLUS "+"
-              WHITESPACE " "
-              TYPE_BOUND
-                LIFETIME
-                  LIFETIME_IDENT "'static"
-          R_PAREN ")"
-    SEMICOLON ";"
-  WHITESPACE "\n"
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "main"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        LET_STMT
-          LET_KW "let"
-          WHITESPACE " "
-          IDENT_PAT
-            NAME
-              IDENT "b"
-          WHITESPACE " "
-          EQ "="
-          WHITESPACE " "
-          CAST_EXPR
-            PAREN_EXPR
-              L_PAREN "("
-              REF_EXPR
-                AMP "&"
-                PATH_EXPR
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "a"
-              R_PAREN ")"
-            WHITESPACE " "
-            AS_KW "as"
-            WHITESPACE " "
-            REF_TYPE
-              AMP "&"
-              PAREN_TYPE
-                L_PAREN "("
-                DYN_TRAIT_TYPE
-                  DYN_KW "dyn"
-                  WHITESPACE " "
-                  TYPE_BOUND_LIST
-                    TYPE_BOUND
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Add"
-                            GENERIC_ARG_LIST
-                              L_ANGLE "<"
-                              TYPE_ARG
-                                PATH_TYPE
-                                  PATH
-                                    PATH_SEGMENT
-                                      NAME_REF
-                                        IDENT "Other"
-                              COMMA ","
-                              WHITESPACE " "
-                              ASSOC_TYPE_ARG
-                                NAME_REF
-                                  IDENT "Output"
-                                WHITESPACE " "
-                                EQ "="
-                                WHITESPACE " "
-                                PATH_TYPE
-                                  PATH
-                                    PATH_SEGMENT
-                                      NAME_REF
-                                        IDENT "Addable"
-                              R_ANGLE ">"
-                    WHITESPACE " "
-                    PLUS "+"
-                    WHITESPACE " "
-                    TYPE_BOUND
-                      PATH_TYPE
-                        PATH
-                          PATH_SEGMENT
-                            NAME_REF
-                              IDENT "Other"
-                R_PAREN ")"
-          SEMICOLON ";"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0070_expr_attr_placement.rast b/crates/parser/test_data/parser/ok/0070_expr_attr_placement.rast
index b52161a401e..3d00b27ab8d 100644
--- a/crates/parser/test_data/parser/ok/0070_expr_attr_placement.rast
+++ b/crates/parser/test_data/parser/ok/0070_expr_attr_placement.rast
@@ -1,59 +1,59 @@
-SOURCE_FILE@0..44
-  FN@0..43
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..4
-      IDENT@3..4 "f"
-    PARAM_LIST@4..6
-      L_PAREN@4..5 "("
-      R_PAREN@5..6 ")"
-    WHITESPACE@6..7 " "
-    BLOCK_EXPR@7..43
-      STMT_LIST@7..43
-        L_CURLY@7..8 "{"
-        WHITESPACE@8..13 "\n    "
-        PAREN_EXPR@13..41
-          L_PAREN@13..14 "("
-          BIN_EXPR@14..40
-            TRY_EXPR@14..23
-              ATTR@14..18
-                POUND@14..15 "#"
-                L_BRACK@15..16 "["
-                META@16..17
-                  PATH@16..17
-                    PATH_SEGMENT@16..17
-                      NAME_REF@16..17
-                        IDENT@16..17 "a"
-                R_BRACK@17..18 "]"
-              WHITESPACE@18..19 " "
-              PATH_EXPR@19..22
-                PATH@19..22
-                  PATH_SEGMENT@19..22
-                    NAME_REF@19..22
-                      IDENT@19..22 "lhs"
-              QUESTION@22..23 "?"
-            WHITESPACE@23..24 " "
-            PLUS@24..25 "+"
-            WHITESPACE@25..26 " "
-            AWAIT_EXPR@26..40
-              ATTR@26..30
-                POUND@26..27 "#"
-                L_BRACK@27..28 "["
-                META@28..29
-                  PATH@28..29
-                    PATH_SEGMENT@28..29
-                      NAME_REF@28..29
-                        IDENT@28..29 "b"
-                R_BRACK@29..30 "]"
-              WHITESPACE@30..31 " "
-              PATH_EXPR@31..34
-                PATH@31..34
-                  PATH_SEGMENT@31..34
-                    NAME_REF@31..34
-                      IDENT@31..34 "rhs"
-              DOT@34..35 "."
-              AWAIT_KW@35..40 "await"
-          R_PAREN@40..41 ")"
-        WHITESPACE@41..42 "\n"
-        R_CURLY@42..43 "}"
-  WHITESPACE@43..44 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "f"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        PAREN_EXPR
+          L_PAREN "("
+          BIN_EXPR
+            TRY_EXPR
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "a"
+                R_BRACK "]"
+              WHITESPACE " "
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "lhs"
+              QUESTION "?"
+            WHITESPACE " "
+            PLUS "+"
+            WHITESPACE " "
+            AWAIT_EXPR
+              ATTR
+                POUND "#"
+                L_BRACK "["
+                META
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "b"
+                R_BRACK "]"
+              WHITESPACE " "
+              PATH_EXPR
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "rhs"
+              DOT "."
+              AWAIT_KW "await"
+          R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0070_expr_attr_placement.txt b/crates/parser/test_data/parser/ok/0070_expr_attr_placement.txt
deleted file mode 100644
index 3d00b27ab8d..00000000000
--- a/crates/parser/test_data/parser/ok/0070_expr_attr_placement.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "f"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        PAREN_EXPR
-          L_PAREN "("
-          BIN_EXPR
-            TRY_EXPR
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "a"
-                R_BRACK "]"
-              WHITESPACE " "
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "lhs"
-              QUESTION "?"
-            WHITESPACE " "
-            PLUS "+"
-            WHITESPACE " "
-            AWAIT_EXPR
-              ATTR
-                POUND "#"
-                L_BRACK "["
-                META
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "b"
-                R_BRACK "]"
-              WHITESPACE " "
-              PATH_EXPR
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "rhs"
-              DOT "."
-              AWAIT_KW "await"
-          R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0071_stmt_attr_placement.rast b/crates/parser/test_data/parser/ok/0071_stmt_attr_placement.rast
index 075d15f249c..81797c35ba1 100644
--- a/crates/parser/test_data/parser/ok/0071_stmt_attr_placement.rast
+++ b/crates/parser/test_data/parser/ok/0071_stmt_attr_placement.rast
@@ -1,71 +1,71 @@
-SOURCE_FILE@0..52
-  FN@0..51
-    FN_KW@0..2 "fn"
-    WHITESPACE@2..3 " "
-    NAME@3..6
-      IDENT@3..6 "foo"
-    PARAM_LIST@6..8
-      L_PAREN@6..7 "("
-      R_PAREN@7..8 ")"
-    WHITESPACE@8..9 " "
-    BLOCK_EXPR@9..51
-      STMT_LIST@9..51
-        L_CURLY@9..10 "{"
-        WHITESPACE@10..15 "\n    "
-        EXPR_STMT@15..36
-          BLOCK_EXPR@15..36
-            ATTR@15..19
-              POUND@15..16 "#"
-              L_BRACK@16..17 "["
-              META@17..18
-                PATH@17..18
-                  PATH_SEGMENT@17..18
-                    NAME_REF@17..18
-                      IDENT@17..18 "A"
-              R_BRACK@18..19 "]"
-            WHITESPACE@19..20 " "
-            STMT_LIST@20..36
-              L_CURLY@20..21 "{"
-              WHITESPACE@21..22 " "
-              TRY_EXPR@22..34
-                ATTR@22..26
-                  POUND@22..23 "#"
-                  L_BRACK@23..24 "["
-                  META@24..25
-                    PATH@24..25
-                      PATH_SEGMENT@24..25
-                        NAME_REF@24..25
-                          IDENT@24..25 "B"
-                  R_BRACK@25..26 "]"
-                WHITESPACE@26..27 " "
-                MACRO_CALL@27..33
-                  PATH@27..30
-                    PATH_SEGMENT@27..30
-                      NAME_REF@27..30
-                        IDENT@27..30 "bar"
-                  BANG@30..31 "!"
-                  TOKEN_TREE@31..33
-                    L_PAREN@31..32 "("
-                    R_PAREN@32..33 ")"
-                QUESTION@33..34 "?"
-              WHITESPACE@34..35 " "
-              R_CURLY@35..36 "}"
-        WHITESPACE@36..41 "\n    "
-        REF_EXPR@41..49
-          ATTR@41..45
-            POUND@41..42 "#"
-            L_BRACK@42..43 "["
-            META@43..44
-              PATH@43..44
-                PATH_SEGMENT@43..44
-                  NAME_REF@43..44
-                    IDENT@43..44 "C"
-            R_BRACK@44..45 "]"
-          WHITESPACE@45..46 " "
-          AMP@46..47 "&"
-          TUPLE_EXPR@47..49
-            L_PAREN@47..48 "("
-            R_PAREN@48..49 ")"
-        WHITESPACE@49..50 "\n"
-        R_CURLY@50..51 "}"
-  WHITESPACE@51..52 "\n"
+SOURCE_FILE
+  FN
+    FN_KW "fn"
+    WHITESPACE " "
+    NAME
+      IDENT "foo"
+    PARAM_LIST
+      L_PAREN "("
+      R_PAREN ")"
+    WHITESPACE " "
+    BLOCK_EXPR
+      STMT_LIST
+        L_CURLY "{"
+        WHITESPACE "\n    "
+        EXPR_STMT
+          BLOCK_EXPR
+            ATTR
+              POUND "#"
+              L_BRACK "["
+              META
+                PATH
+                  PATH_SEGMENT
+                    NAME_REF
+                      IDENT "A"
+              R_BRACK "]"
+            WHITESPACE " "
+            STMT_LIST
+              L_CURLY "{"
+              WHITESPACE " "
+              TRY_EXPR
+                ATTR
+                  POUND "#"
+                  L_BRACK "["
+                  META
+                    PATH
+                      PATH_SEGMENT
+                        NAME_REF
+                          IDENT "B"
+                  R_BRACK "]"
+                WHITESPACE " "
+                MACRO_CALL
+                  PATH
+                    PATH_SEGMENT
+                      NAME_REF
+                        IDENT "bar"
+                  BANG "!"
+                  TOKEN_TREE
+                    L_PAREN "("
+                    R_PAREN ")"
+                QUESTION "?"
+              WHITESPACE " "
+              R_CURLY "}"
+        WHITESPACE "\n    "
+        REF_EXPR
+          ATTR
+            POUND "#"
+            L_BRACK "["
+            META
+              PATH
+                PATH_SEGMENT
+                  NAME_REF
+                    IDENT "C"
+            R_BRACK "]"
+          WHITESPACE " "
+          AMP "&"
+          TUPLE_EXPR
+            L_PAREN "("
+            R_PAREN ")"
+        WHITESPACE "\n"
+        R_CURLY "}"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0071_stmt_attr_placement.txt b/crates/parser/test_data/parser/ok/0071_stmt_attr_placement.txt
deleted file mode 100644
index 81797c35ba1..00000000000
--- a/crates/parser/test_data/parser/ok/0071_stmt_attr_placement.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-SOURCE_FILE
-  FN
-    FN_KW "fn"
-    WHITESPACE " "
-    NAME
-      IDENT "foo"
-    PARAM_LIST
-      L_PAREN "("
-      R_PAREN ")"
-    WHITESPACE " "
-    BLOCK_EXPR
-      STMT_LIST
-        L_CURLY "{"
-        WHITESPACE "\n    "
-        EXPR_STMT
-          BLOCK_EXPR
-            ATTR
-              POUND "#"
-              L_BRACK "["
-              META
-                PATH
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "A"
-              R_BRACK "]"
-            WHITESPACE " "
-            STMT_LIST
-              L_CURLY "{"
-              WHITESPACE " "
-              TRY_EXPR
-                ATTR
-                  POUND "#"
-                  L_BRACK "["
-                  META
-                    PATH
-                      PATH_SEGMENT
-                        NAME_REF
-                          IDENT "B"
-                  R_BRACK "]"
-                WHITESPACE " "
-                MACRO_CALL
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "bar"
-                  BANG "!"
-                  TOKEN_TREE
-                    L_PAREN "("
-                    R_PAREN ")"
-                QUESTION "?"
-              WHITESPACE " "
-              R_CURLY "}"
-        WHITESPACE "\n    "
-        REF_EXPR
-          ATTR
-            POUND "#"
-            L_BRACK "["
-            META
-              PATH
-                PATH_SEGMENT
-                  NAME_REF
-                    IDENT "C"
-            R_BRACK "]"
-          WHITESPACE " "
-          AMP "&"
-          TUPLE_EXPR
-            L_PAREN "("
-            R_PAREN ")"
-        WHITESPACE "\n"
-        R_CURLY "}"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/ok/0072_destructuring_assignment.txt b/crates/parser/test_data/parser/ok/0072_destructuring_assignment.rast
similarity index 100%
rename from crates/parser/test_data/parser/ok/0072_destructuring_assignment.txt
rename to crates/parser/test_data/parser/ok/0072_destructuring_assignment.rast