aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax')
-rw-r--r--crates/ra_syntax/Cargo.toml2
-rw-r--r--crates/ra_syntax/src/algo.rs12
-rw-r--r--crates/ra_syntax/src/ast/tokens.rs36
-rw-r--r--crates/ra_syntax/src/fuzz.rs15
-rw-r--r--crates/ra_syntax/src/lib.rs4
-rw-r--r--crates/ra_syntax/src/parsing/lexer.rs32
-rw-r--r--crates/ra_syntax/src/parsing/reparsing.rs4
-rw-r--r--crates/ra_syntax/src/parsing/text_token_source.rs8
-rw-r--r--crates/ra_syntax/src/parsing/text_tree_sink.rs14
-rw-r--r--crates/ra_syntax/src/ptr.rs2
-rw-r--r--crates/ra_syntax/src/syntax_error.rs6
-rw-r--r--crates/ra_syntax/src/syntax_node.rs4
-rw-r--r--crates/ra_syntax/src/tests.rs8
-rw-r--r--crates/ra_syntax/src/validation.rs6
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0055_empty_int.txt26
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0056_empty_exponent.txt28
-rw-r--r--crates/ra_syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt4
-rw-r--r--crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rast68
-rw-r--r--crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rast36
-rw-r--r--crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rast78
-rw-r--r--crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rast76
-rw-r--r--crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rast120
-rw-r--r--crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rast148
-rw-r--r--crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rast66
-rw-r--r--crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rast162
-rw-r--r--crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast116
-rw-r--r--crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rast90
-rw-r--r--crates/ra_syntax/test_data/parser/err/0011_extern_struct.rast26
-rw-r--r--crates/ra_syntax/test_data/parser/err/0012_broken_lambda.rast636
-rw-r--r--crates/ra_syntax/test_data/parser/err/0013_invalid_type.rast178
-rw-r--r--crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rast64
-rw-r--r--crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rast48
-rw-r--r--crates/ra_syntax/test_data/parser/err/0016_missing_semi.rast88
-rw-r--r--crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rast94
-rw-r--r--crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rast264
-rw-r--r--crates/ra_syntax/test_data/parser/err/0019_let_recover.rast214
-rw-r--r--crates/ra_syntax/test_data/parser/err/0020_fn_recover.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rast70
-rw-r--r--crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rast366
-rw-r--r--crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rast88
-rw-r--r--crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rast642
-rw-r--r--crates/ra_syntax/test_data/parser/err/0025_nope.rast408
-rw-r--r--crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rast98
-rw-r--r--crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rast58
-rw-r--r--crates/ra_syntax/test_data/parser/err/0029_field_completion.rast72
-rw-r--r--crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rast250
-rw-r--r--crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast408
-rw-r--r--crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast134
-rw-r--r--crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.rast192
-rw-r--r--crates/ra_syntax/test_data/parser/err/0035_use_recover.rast108
-rw-r--r--crates/ra_syntax/test_data/parser/err/0036_partial_use.rast102
-rw-r--r--crates/ra_syntax/test_data/parser/err/0037_visibility_in_traits.rast198
-rw-r--r--crates/ra_syntax/test_data/parser/err/0038_endless_inclusive_range.rast60
-rw-r--r--crates/ra_syntax/test_data/parser/err/0039_lambda_recovery.rast166
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast54
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast58
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast34
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rast158
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast46
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast74
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast64
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rast52
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast122
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast106
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rast82
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0013_static_underscore.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast98
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rast144
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast270
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rast124
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast120
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rast76
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rast242
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast80
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rast194
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rast52
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rast18
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rast120
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast66
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast70
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rast26
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rast74
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rast26
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rast148
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rast90
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rast160
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rast106
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rast26
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rast84
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rast34
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast210
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rast100
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rast180
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rast418
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rast178
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast196
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rast100
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rast110
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rast44
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rast158
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rast58
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rast110
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast126
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rast250
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rast296
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rast276
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rast60
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast94
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast40
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rast36
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast166
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rast44
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rast28
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rast140
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rast192
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast88
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rast154
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rast222
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rast34
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rast166
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast120
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rast20
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0061_record_lit.rast250
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rast134
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast46
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rast264
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rast304
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rast30
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rast92
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast74
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast106
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rast192
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rast58
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast40
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast126
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0075_block.rast180
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rast80
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rast52
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0079_impl_def.rast28
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rast192
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rast486
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rast110
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rast174
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rast38
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rast272
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rast72
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast138
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rast36
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rast44
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rast26
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast46
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rast68
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rast30
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast58
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast260
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rast38
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rast206
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rast72
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rast34
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast266
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rast110
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast82
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rast280
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rast126
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rast78
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0109_label.rast136
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rast76
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rast180
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rast256
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast114
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast128
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast82
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast80
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rast96
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast162
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast292
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast132
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast100
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rast34
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast64
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast96
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast198
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rast74
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rast74
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rast258
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rast66
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rast62
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rast180
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rast112
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast128
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rast140
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast112
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0138_expression_after_block.rast132
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast52
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast70
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0142_for_range_from.rast84
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0143_box_pat.rast222
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast912
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0145_record_field_pat.rast152
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0147_const_param.rast46
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0147_macro_def.rast90
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0150_array_attrs.rast94
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0150_impl_type_params.rast76
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0151_trait_alias.rast256
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast74
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast116
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0155_closure_params.rast140
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0156_fn_def_param.rast88
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0156_or_pattern.rast224
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast52
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast60
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast76
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast90
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0000_empty.rast2
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast78
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast44
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast4
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast368
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast80
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast186
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0009_use_item.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast84
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast116
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0012_visibility.rast214
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast114
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast190
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast130
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast186
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast58
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast514
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0019_enums.rast310
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast536
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0023_static_items.rast82
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0024_const_item.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast66
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast64
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast372
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast304
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast128
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0030_traits.rast122
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0031_extern.rast1946
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0032_where_for.rast182
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0033_label_break.rast440
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast84
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast4658
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast186
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0037_mod.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast44
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast100
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast252
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast220
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast152
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast362
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast56
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast646
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast402
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0049_async_block.rast72
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast184
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast1038
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast162
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast78
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast252
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast100
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast132
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast194
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast202
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0060_as_range.rast112
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast54
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast352
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast396
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast266
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast332
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast34
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast122
349 files changed, 22955 insertions, 22954 deletions
diff --git a/crates/ra_syntax/Cargo.toml b/crates/ra_syntax/Cargo.toml
index 75a2f696e..7ffe46c69 100644
--- a/crates/ra_syntax/Cargo.toml
+++ b/crates/ra_syntax/Cargo.toml
@@ -12,7 +12,7 @@ doctest = false
12 12
13[dependencies] 13[dependencies]
14itertools = "0.9.0" 14itertools = "0.9.0"
15rowan = "0.9.1" 15rowan = "0.10.0"
16rustc_lexer = { version = "652.0.0", package = "rustc-ap-rustc_lexer" } 16rustc_lexer = { version = "652.0.0", package = "rustc-ap-rustc_lexer" }
17rustc-hash = "1.1.0" 17rustc-hash = "1.1.0"
18arrayvec = "0.5.1" 18arrayvec = "0.5.1"
diff --git a/crates/ra_syntax/src/algo.rs b/crates/ra_syntax/src/algo.rs
index 06df8495c..2a8dac757 100644
--- a/crates/ra_syntax/src/algo.rs
+++ b/crates/ra_syntax/src/algo.rs
@@ -11,7 +11,7 @@ use rustc_hash::FxHashMap;
11 11
12use crate::{ 12use crate::{
13 AstNode, Direction, NodeOrToken, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxNodePtr, 13 AstNode, Direction, NodeOrToken, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxNodePtr,
14 SyntaxToken, TextRange, TextUnit, 14 SyntaxToken, TextRange, TextSize,
15}; 15};
16 16
17/// Returns ancestors of the node at the offset, sorted by length. This should 17/// Returns ancestors of the node at the offset, sorted by length. This should
@@ -21,7 +21,7 @@ use crate::{
21/// t.parent().ancestors())`. 21/// t.parent().ancestors())`.
22pub fn ancestors_at_offset( 22pub fn ancestors_at_offset(
23 node: &SyntaxNode, 23 node: &SyntaxNode,
24 offset: TextUnit, 24 offset: TextSize,
25) -> impl Iterator<Item = SyntaxNode> { 25) -> impl Iterator<Item = SyntaxNode> {
26 node.token_at_offset(offset) 26 node.token_at_offset(offset)
27 .map(|token| token.parent().ancestors()) 27 .map(|token| token.parent().ancestors())
@@ -37,7 +37,7 @@ pub fn ancestors_at_offset(
37/// ``` 37/// ```
38/// 38///
39/// then the shorter node will be silently preferred. 39/// then the shorter node will be silently preferred.
40pub fn find_node_at_offset<N: AstNode>(syntax: &SyntaxNode, offset: TextUnit) -> Option<N> { 40pub fn find_node_at_offset<N: AstNode>(syntax: &SyntaxNode, offset: TextSize) -> Option<N> {
41 ancestors_at_offset(syntax, offset).find_map(N::cast) 41 ancestors_at_offset(syntax, offset).find_map(N::cast)
42} 42}
43 43
@@ -180,7 +180,7 @@ fn _insert_children(
180 position: InsertPosition<SyntaxElement>, 180 position: InsertPosition<SyntaxElement>,
181 to_insert: &mut dyn Iterator<Item = SyntaxElement>, 181 to_insert: &mut dyn Iterator<Item = SyntaxElement>,
182) -> SyntaxNode { 182) -> SyntaxNode {
183 let mut delta = TextUnit::default(); 183 let mut delta = TextSize::default();
184 let to_insert = to_insert.map(|element| { 184 let to_insert = to_insert.map(|element| {
185 delta += element.text_range().len(); 185 delta += element.text_range().len();
186 to_green_element(element) 186 to_green_element(element)
@@ -347,7 +347,7 @@ fn with_children(
347 parent: &SyntaxNode, 347 parent: &SyntaxNode,
348 new_children: Vec<NodeOrToken<rowan::GreenNode, rowan::GreenToken>>, 348 new_children: Vec<NodeOrToken<rowan::GreenNode, rowan::GreenToken>>,
349) -> SyntaxNode { 349) -> SyntaxNode {
350 let len = new_children.iter().map(|it| it.text_len()).sum::<TextUnit>(); 350 let len = new_children.iter().map(|it| it.text_len()).sum::<TextSize>();
351 let new_node = rowan::GreenNode::new(rowan::SyntaxKind(parent.kind() as u16), new_children); 351 let new_node = rowan::GreenNode::new(rowan::SyntaxKind(parent.kind() as u16), new_children);
352 let new_root_node = parent.replace_with(new_node); 352 let new_root_node = parent.replace_with(new_node);
353 let new_root_node = SyntaxNode::new_root(new_root_node); 353 let new_root_node = SyntaxNode::new_root(new_root_node);
@@ -355,7 +355,7 @@ fn with_children(
355 // FIXME: use a more elegant way to re-fetch the node (#1185), make 355 // FIXME: use a more elegant way to re-fetch the node (#1185), make
356 // `range` private afterwards 356 // `range` private afterwards
357 let mut ptr = SyntaxNodePtr::new(parent); 357 let mut ptr = SyntaxNodePtr::new(parent);
358 ptr.range = TextRange::offset_len(ptr.range.start(), len); 358 ptr.range = TextRange::at(ptr.range.start(), len);
359 ptr.to_node(&new_root_node) 359 ptr.to_node(&new_root_node)
360} 360}
361 361
diff --git a/crates/ra_syntax/src/ast/tokens.rs b/crates/ra_syntax/src/ast/tokens.rs
index aa34b682d..8e04b0bbd 100644
--- a/crates/ra_syntax/src/ast/tokens.rs
+++ b/crates/ra_syntax/src/ast/tokens.rs
@@ -1,8 +1,10 @@
1//! There are many AstNodes, but only a few tokens, so we hand-write them here. 1//! There are many AstNodes, but only a few tokens, so we hand-write them here.
2 2
3use std::convert::{TryFrom, TryInto};
4
3use crate::{ 5use crate::{
4 ast::{AstToken, Comment, RawString, String, Whitespace}, 6 ast::{AstToken, Comment, RawString, String, Whitespace},
5 TextRange, TextUnit, 7 TextRange, TextSize,
6}; 8};
7 9
8impl Comment { 10impl Comment {
@@ -94,14 +96,14 @@ impl QuoteOffsets {
94 return None; 96 return None;
95 } 97 }
96 98
97 let start = TextUnit::from(0); 99 let start = TextSize::from(0);
98 let left_quote = TextUnit::from_usize(left_quote) + TextUnit::of_char('"'); 100 let left_quote = TextSize::try_from(left_quote).unwrap() + TextSize::of('"');
99 let right_quote = TextUnit::from_usize(right_quote); 101 let right_quote = TextSize::try_from(right_quote).unwrap();
100 let end = TextUnit::of_str(literal); 102 let end = TextSize::of(literal);
101 103
102 let res = QuoteOffsets { 104 let res = QuoteOffsets {
103 quotes: [TextRange::from_to(start, left_quote), TextRange::from_to(right_quote, end)], 105 quotes: [TextRange::new(start, left_quote), TextRange::new(right_quote, end)],
104 contents: TextRange::from_to(left_quote, right_quote), 106 contents: TextRange::new(left_quote, right_quote),
105 }; 107 };
106 Some(res) 108 Some(res)
107 } 109 }
@@ -168,7 +170,7 @@ impl HasStringValue for RawString {
168impl RawString { 170impl RawString {
169 pub fn map_range_up(&self, range: TextRange) -> Option<TextRange> { 171 pub fn map_range_up(&self, range: TextRange) -> Option<TextRange> {
170 let contents_range = self.text_range_between_quotes()?; 172 let contents_range = self.text_range_between_quotes()?;
171 assert!(range.is_subrange(&TextRange::offset_len(0.into(), contents_range.len()))); 173 assert!(TextRange::up_to(contents_range.len()).contains_range(range));
172 Some(range + contents_range.start()) 174 Some(range + contents_range.start())
173 } 175 }
174} 176}
@@ -459,7 +461,7 @@ pub trait HasFormatSpecifier: AstToken {
459 while let Some((r, Ok(next_char))) = chars.peek() { 461 while let Some((r, Ok(next_char))) = chars.peek() {
460 if next_char.is_ascii_digit() { 462 if next_char.is_ascii_digit() {
461 chars.next(); 463 chars.next();
462 range = range.extend_to(r); 464 range = range.cover(*r);
463 } else { 465 } else {
464 break; 466 break;
465 } 467 }
@@ -477,7 +479,7 @@ pub trait HasFormatSpecifier: AstToken {
477 while let Some((r, Ok(next_char))) = chars.peek() { 479 while let Some((r, Ok(next_char))) = chars.peek() {
478 if *next_char == '_' || next_char.is_ascii_digit() || next_char.is_alphabetic() { 480 if *next_char == '_' || next_char.is_ascii_digit() || next_char.is_alphabetic() {
479 chars.next(); 481 chars.next();
480 range = range.extend_to(r); 482 range = range.cover(*r);
481 } else { 483 } else {
482 break; 484 break;
483 } 485 }
@@ -498,10 +500,8 @@ impl HasFormatSpecifier for String {
498 let mut res = Vec::with_capacity(text.len()); 500 let mut res = Vec::with_capacity(text.len());
499 rustc_lexer::unescape::unescape_str(text, &mut |range, unescaped_char| { 501 rustc_lexer::unescape::unescape_str(text, &mut |range, unescaped_char| {
500 res.push(( 502 res.push((
501 TextRange::from_to( 503 TextRange::new(range.start.try_into().unwrap(), range.end.try_into().unwrap())
502 TextUnit::from_usize(range.start), 504 + offset,
503 TextUnit::from_usize(range.end),
504 ) + offset,
505 unescaped_char, 505 unescaped_char,
506 )) 506 ))
507 }); 507 });
@@ -520,13 +520,7 @@ impl HasFormatSpecifier for RawString {
520 520
521 let mut res = Vec::with_capacity(text.len()); 521 let mut res = Vec::with_capacity(text.len());
522 for (idx, c) in text.char_indices() { 522 for (idx, c) in text.char_indices() {
523 res.push(( 523 res.push((TextRange::at(idx.try_into().unwrap(), TextSize::of(c)) + offset, Ok(c)));
524 TextRange::from_to(
525 TextUnit::from_usize(idx),
526 TextUnit::from_usize(idx + c.len_utf8()),
527 ) + offset,
528 Ok(c),
529 ));
530 } 524 }
531 Some(res) 525 Some(res)
532 } 526 }
diff --git a/crates/ra_syntax/src/fuzz.rs b/crates/ra_syntax/src/fuzz.rs
index 7012df7f0..10fbe3176 100644
--- a/crates/ra_syntax/src/fuzz.rs
+++ b/crates/ra_syntax/src/fuzz.rs
@@ -1,8 +1,13 @@
1//! FIXME: write short doc here 1//! FIXME: write short doc here
2 2
3use crate::{validation, AstNode, SourceFile, TextRange, TextUnit}; 3use std::{
4 convert::TryInto,
5 str::{self, FromStr},
6};
7
4use ra_text_edit::AtomTextEdit; 8use ra_text_edit::AtomTextEdit;
5use std::str::{self, FromStr}; 9
10use crate::{validation, AstNode, SourceFile, TextRange};
6 11
7fn check_file_invariants(file: &SourceFile) { 12fn check_file_invariants(file: &SourceFile) {
8 let root = file.syntax(); 13 let root = file.syntax();
@@ -34,10 +39,8 @@ impl CheckReparse {
34 let text = lines.collect::<Vec<_>>().join("\n"); 39 let text = lines.collect::<Vec<_>>().join("\n");
35 let text = format!("{}{}{}", PREFIX, text, SUFFIX); 40 let text = format!("{}{}{}", PREFIX, text, SUFFIX);
36 text.get(delete_start..delete_start.checked_add(delete_len)?)?; // make sure delete is a valid range 41 text.get(delete_start..delete_start.checked_add(delete_len)?)?; // make sure delete is a valid range
37 let delete = TextRange::offset_len( 42 let delete =
38 TextUnit::from_usize(delete_start), 43 TextRange::at(delete_start.try_into().unwrap(), delete_len.try_into().unwrap());
39 TextUnit::from_usize(delete_len),
40 );
41 let edited_text = 44 let edited_text =
42 format!("{}{}{}", &text[..delete_start], &insert, &text[delete_start + delete_len..]); 45 format!("{}{}{}", &text[..delete_start], &insert, &text[delete_start + delete_len..]);
43 let edit = AtomTextEdit { delete, insert }; 46 let edit = AtomTextEdit { delete, insert };
diff --git a/crates/ra_syntax/src/lib.rs b/crates/ra_syntax/src/lib.rs
index a796e78b1..ceeb2bde9 100644
--- a/crates/ra_syntax/src/lib.rs
+++ b/crates/ra_syntax/src/lib.rs
@@ -55,7 +55,7 @@ pub use crate::{
55 }, 55 },
56}; 56};
57pub use ra_parser::{SyntaxKind, T}; 57pub use ra_parser::{SyntaxKind, T};
58pub use rowan::{SmolStr, SyntaxText, TextRange, TextUnit, TokenAtOffset, WalkEvent}; 58pub use rowan::{SmolStr, SyntaxText, TextRange, TextSize, TokenAtOffset, WalkEvent};
59 59
60/// `Parse` is the result of the parsing: a syntax tree and a collection of 60/// `Parse` is the result of the parsing: a syntax tree and a collection of
61/// errors. 61/// errors.
@@ -266,7 +266,7 @@ fn api_walkthrough() {
266 assert_eq!(expr_syntax.kind(), SyntaxKind::BIN_EXPR); 266 assert_eq!(expr_syntax.kind(), SyntaxKind::BIN_EXPR);
267 267
268 // And text range: 268 // And text range:
269 assert_eq!(expr_syntax.text_range(), TextRange::from_to(32.into(), 37.into())); 269 assert_eq!(expr_syntax.text_range(), TextRange::new(32.into(), 37.into()));
270 270
271 // You can get node's text as a `SyntaxText` object, which will traverse the 271 // You can get node's text as a `SyntaxText` object, which will traverse the
272 // tree collecting token's text: 272 // tree collecting token's text:
diff --git a/crates/ra_syntax/src/parsing/lexer.rs b/crates/ra_syntax/src/parsing/lexer.rs
index 67c1f1b48..f450ef4a2 100644
--- a/crates/ra_syntax/src/parsing/lexer.rs
+++ b/crates/ra_syntax/src/parsing/lexer.rs
@@ -1,10 +1,12 @@
1//! Lexer analyzes raw input string and produces lexemes (tokens). 1//! Lexer analyzes raw input string and produces lexemes (tokens).
2//! It is just a bridge to `rustc_lexer`. 2//! It is just a bridge to `rustc_lexer`.
3 3
4use std::convert::TryInto;
5
4use crate::{ 6use crate::{
5 SyntaxError, 7 SyntaxError,
6 SyntaxKind::{self, *}, 8 SyntaxKind::{self, *},
7 TextRange, TextUnit, T, 9 TextRange, TextSize, T,
8}; 10};
9 11
10/// A token of Rust source. 12/// A token of Rust source.
@@ -13,7 +15,7 @@ pub struct Token {
13 /// The kind of token. 15 /// The kind of token.
14 pub kind: SyntaxKind, 16 pub kind: SyntaxKind,
15 /// The length of the token. 17 /// The length of the token.
16 pub len: TextUnit, 18 pub len: TextSize,
17} 19}
18 20
19/// Break a string up into its component tokens. 21/// Break a string up into its component tokens.
@@ -28,18 +30,19 @@ pub fn tokenize(text: &str) -> (Vec<Token>, Vec<SyntaxError>) {
28 let mut tokens = Vec::new(); 30 let mut tokens = Vec::new();
29 let mut errors = Vec::new(); 31 let mut errors = Vec::new();
30 32
31 let mut offset: usize = rustc_lexer::strip_shebang(text) 33 let mut offset = match rustc_lexer::strip_shebang(text) {
32 .map(|shebang_len| { 34 Some(shebang_len) => {
33 tokens.push(Token { kind: SHEBANG, len: TextUnit::from_usize(shebang_len) }); 35 tokens.push(Token { kind: SHEBANG, len: shebang_len.try_into().unwrap() });
34 shebang_len 36 shebang_len
35 }) 37 }
36 .unwrap_or(0); 38 None => 0,
39 };
37 40
38 let text_without_shebang = &text[offset..]; 41 let text_without_shebang = &text[offset..];
39 42
40 for rustc_token in rustc_lexer::tokenize(text_without_shebang) { 43 for rustc_token in rustc_lexer::tokenize(text_without_shebang) {
41 let token_len = TextUnit::from_usize(rustc_token.len); 44 let token_len: TextSize = rustc_token.len.try_into().unwrap();
42 let token_range = TextRange::offset_len(TextUnit::from_usize(offset), token_len); 45 let token_range = TextRange::at(offset.try_into().unwrap(), token_len);
43 46
44 let (syntax_kind, err_message) = 47 let (syntax_kind, err_message) =
45 rustc_token_kind_to_syntax_kind(&rustc_token.kind, &text[token_range]); 48 rustc_token_kind_to_syntax_kind(&rustc_token.kind, &text[token_range]);
@@ -65,7 +68,7 @@ pub fn tokenize(text: &str) -> (Vec<Token>, Vec<SyntaxError>) {
65/// Beware that unescape errors are not checked at tokenization time. 68/// Beware that unescape errors are not checked at tokenization time.
66pub fn lex_single_syntax_kind(text: &str) -> Option<(SyntaxKind, Option<SyntaxError>)> { 69pub fn lex_single_syntax_kind(text: &str) -> Option<(SyntaxKind, Option<SyntaxError>)> {
67 lex_first_token(text) 70 lex_first_token(text)
68 .filter(|(token, _)| token.len == TextUnit::of_str(text)) 71 .filter(|(token, _)| token.len == TextSize::of(text))
69 .map(|(token, error)| (token.kind, error)) 72 .map(|(token, error)| (token.kind, error))
70} 73}
71 74
@@ -75,7 +78,7 @@ pub fn lex_single_syntax_kind(text: &str) -> Option<(SyntaxKind, Option<SyntaxEr
75/// Beware that unescape errors are not checked at tokenization time. 78/// Beware that unescape errors are not checked at tokenization time.
76pub fn lex_single_valid_syntax_kind(text: &str) -> Option<SyntaxKind> { 79pub fn lex_single_valid_syntax_kind(text: &str) -> Option<SyntaxKind> {
77 lex_first_token(text) 80 lex_first_token(text)
78 .filter(|(token, error)| !error.is_some() && token.len == TextUnit::of_str(text)) 81 .filter(|(token, error)| !error.is_some() && token.len == TextSize::of(text))
79 .map(|(token, _error)| token.kind) 82 .map(|(token, _error)| token.kind)
80} 83}
81 84
@@ -96,10 +99,9 @@ fn lex_first_token(text: &str) -> Option<(Token, Option<SyntaxError>)> {
96 let rustc_token = rustc_lexer::first_token(text); 99 let rustc_token = rustc_lexer::first_token(text);
97 let (syntax_kind, err_message) = rustc_token_kind_to_syntax_kind(&rustc_token.kind, text); 100 let (syntax_kind, err_message) = rustc_token_kind_to_syntax_kind(&rustc_token.kind, text);
98 101
99 let token = Token { kind: syntax_kind, len: TextUnit::from_usize(rustc_token.len) }; 102 let token = Token { kind: syntax_kind, len: rustc_token.len.try_into().unwrap() };
100 let optional_error = err_message.map(|err_message| { 103 let optional_error = err_message
101 SyntaxError::new(err_message, TextRange::from_to(0.into(), TextUnit::of_str(text))) 104 .map(|err_message| SyntaxError::new(err_message, TextRange::up_to(TextSize::of(text))));
102 });
103 105
104 Some((token, optional_error)) 106 Some((token, optional_error))
105} 107}
diff --git a/crates/ra_syntax/src/parsing/reparsing.rs b/crates/ra_syntax/src/parsing/reparsing.rs
index 2d65b91f1..ffff0a7b2 100644
--- a/crates/ra_syntax/src/parsing/reparsing.rs
+++ b/crates/ra_syntax/src/parsing/reparsing.rs
@@ -19,7 +19,7 @@ use crate::{
19 syntax_node::{GreenNode, GreenToken, NodeOrToken, SyntaxElement, SyntaxNode}, 19 syntax_node::{GreenNode, GreenToken, NodeOrToken, SyntaxElement, SyntaxNode},
20 SyntaxError, 20 SyntaxError,
21 SyntaxKind::*, 21 SyntaxKind::*,
22 TextRange, TextUnit, T, 22 TextRange, TextSize, T,
23}; 23};
24 24
25pub(crate) fn incremental_reparse( 25pub(crate) fn incremental_reparse(
@@ -176,7 +176,7 @@ fn merge_errors(
176 if old_err_range.end() <= range_before_reparse.start() { 176 if old_err_range.end() <= range_before_reparse.start() {
177 res.push(old_err); 177 res.push(old_err);
178 } else if old_err_range.start() >= range_before_reparse.end() { 178 } else if old_err_range.start() >= range_before_reparse.end() {
179 let inserted_len = TextUnit::of_str(&edit.insert); 179 let inserted_len = TextSize::of(&edit.insert);
180 res.push(old_err.with_range((old_err_range + inserted_len) - edit.delete.len())); 180 res.push(old_err.with_range((old_err_range + inserted_len) - edit.delete.len()));
181 // Note: extra parens are intentional to prevent uint underflow, HWAB (here was a bug) 181 // Note: extra parens are intentional to prevent uint underflow, HWAB (here was a bug)
182 } 182 }
diff --git a/crates/ra_syntax/src/parsing/text_token_source.rs b/crates/ra_syntax/src/parsing/text_token_source.rs
index e2433913c..7ddc2c2c3 100644
--- a/crates/ra_syntax/src/parsing/text_token_source.rs
+++ b/crates/ra_syntax/src/parsing/text_token_source.rs
@@ -3,7 +3,7 @@
3use ra_parser::Token as PToken; 3use ra_parser::Token as PToken;
4use ra_parser::TokenSource; 4use ra_parser::TokenSource;
5 5
6use crate::{parsing::lexer::Token, SyntaxKind::EOF, TextRange, TextUnit}; 6use crate::{parsing::lexer::Token, SyntaxKind::EOF, TextRange, TextSize};
7 7
8pub(crate) struct TextTokenSource<'t> { 8pub(crate) struct TextTokenSource<'t> {
9 text: &'t str, 9 text: &'t str,
@@ -15,7 +15,7 @@ pub(crate) struct TextTokenSource<'t> {
15 /// 0 7 10 15 /// 0 7 10
16 /// ``` 16 /// ```
17 /// (token, start_offset): `[(struct, 0), (Foo, 7), (;, 10)]` 17 /// (token, start_offset): `[(struct, 0), (Foo, 7), (;, 10)]`
18 start_offsets: Vec<TextUnit>, 18 start_offsets: Vec<TextSize>,
19 /// non-whitespace/comment tokens 19 /// non-whitespace/comment tokens
20 /// ```non-rust 20 /// ```non-rust
21 /// struct Foo {} 21 /// struct Foo {}
@@ -51,12 +51,12 @@ impl<'t> TokenSource for TextTokenSource<'t> {
51 if pos >= self.tokens.len() { 51 if pos >= self.tokens.len() {
52 return false; 52 return false;
53 } 53 }
54 let range = TextRange::offset_len(self.start_offsets[pos], self.tokens[pos].len); 54 let range = TextRange::at(self.start_offsets[pos], self.tokens[pos].len);
55 self.text[range] == *kw 55 self.text[range] == *kw
56 } 56 }
57} 57}
58 58
59fn mk_token(pos: usize, start_offsets: &[TextUnit], tokens: &[Token]) -> PToken { 59fn mk_token(pos: usize, start_offsets: &[TextSize], tokens: &[Token]) -> PToken {
60 let kind = tokens.get(pos).map(|t| t.kind).unwrap_or(EOF); 60 let kind = tokens.get(pos).map(|t| t.kind).unwrap_or(EOF);
61 let is_jointed_to_next = if pos + 1 < start_offsets.len() { 61 let is_jointed_to_next = if pos + 1 < start_offsets.len() {
62 start_offsets[pos] + tokens[pos].len == start_offsets[pos + 1] 62 start_offsets[pos] + tokens[pos].len == start_offsets[pos + 1]
diff --git a/crates/ra_syntax/src/parsing/text_tree_sink.rs b/crates/ra_syntax/src/parsing/text_tree_sink.rs
index 87bb21cd9..22aed1db1 100644
--- a/crates/ra_syntax/src/parsing/text_tree_sink.rs
+++ b/crates/ra_syntax/src/parsing/text_tree_sink.rs
@@ -9,7 +9,7 @@ use crate::{
9 syntax_node::GreenNode, 9 syntax_node::GreenNode,
10 SmolStr, SyntaxError, 10 SmolStr, SyntaxError,
11 SyntaxKind::{self, *}, 11 SyntaxKind::{self, *},
12 SyntaxTreeBuilder, TextRange, TextUnit, 12 SyntaxTreeBuilder, TextRange, TextSize,
13}; 13};
14 14
15/// Bridges the parser with our specific syntax tree representation. 15/// Bridges the parser with our specific syntax tree representation.
@@ -18,7 +18,7 @@ use crate::{
18pub(crate) struct TextTreeSink<'a> { 18pub(crate) struct TextTreeSink<'a> {
19 text: &'a str, 19 text: &'a str,
20 tokens: &'a [Token], 20 tokens: &'a [Token],
21 text_pos: TextUnit, 21 text_pos: TextSize,
22 token_pos: usize, 22 token_pos: usize,
23 state: State, 23 state: State,
24 inner: SyntaxTreeBuilder, 24 inner: SyntaxTreeBuilder,
@@ -42,7 +42,7 @@ impl<'a> TreeSink for TextTreeSink<'a> {
42 let len = self.tokens[self.token_pos..self.token_pos + n_tokens] 42 let len = self.tokens[self.token_pos..self.token_pos + n_tokens]
43 .iter() 43 .iter()
44 .map(|it| it.len) 44 .map(|it| it.len)
45 .sum::<TextUnit>(); 45 .sum::<TextSize>();
46 self.do_token(kind, len, n_tokens); 46 self.do_token(kind, len, n_tokens);
47 } 47 }
48 48
@@ -62,12 +62,12 @@ impl<'a> TreeSink for TextTreeSink<'a> {
62 self.tokens[self.token_pos..].iter().take_while(|it| it.kind.is_trivia()).count(); 62 self.tokens[self.token_pos..].iter().take_while(|it| it.kind.is_trivia()).count();
63 let leading_trivias = &self.tokens[self.token_pos..self.token_pos + n_trivias]; 63 let leading_trivias = &self.tokens[self.token_pos..self.token_pos + n_trivias];
64 let mut trivia_end = 64 let mut trivia_end =
65 self.text_pos + leading_trivias.iter().map(|it| it.len).sum::<TextUnit>(); 65 self.text_pos + leading_trivias.iter().map(|it| it.len).sum::<TextSize>();
66 66
67 let n_attached_trivias = { 67 let n_attached_trivias = {
68 let leading_trivias = leading_trivias.iter().rev().map(|it| { 68 let leading_trivias = leading_trivias.iter().rev().map(|it| {
69 let next_end = trivia_end - it.len; 69 let next_end = trivia_end - it.len;
70 let range = TextRange::from_to(next_end, trivia_end); 70 let range = TextRange::new(next_end, trivia_end);
71 trivia_end = next_end; 71 trivia_end = next_end;
72 (it.kind, &self.text[range]) 72 (it.kind, &self.text[range])
73 }); 73 });
@@ -132,8 +132,8 @@ impl<'a> TextTreeSink<'a> {
132 } 132 }
133 } 133 }
134 134
135 fn do_token(&mut self, kind: SyntaxKind, len: TextUnit, n_tokens: usize) { 135 fn do_token(&mut self, kind: SyntaxKind, len: TextSize, n_tokens: usize) {
136 let range = TextRange::offset_len(self.text_pos, len); 136 let range = TextRange::at(self.text_pos, len);
137 let text: SmolStr = self.text[range].into(); 137 let text: SmolStr = self.text[range].into();
138 self.text_pos += len; 138 self.text_pos += len;
139 self.token_pos += n_tokens; 139 self.token_pos += n_tokens;
diff --git a/crates/ra_syntax/src/ptr.rs b/crates/ra_syntax/src/ptr.rs
index ecbfffcf4..62f03e93d 100644
--- a/crates/ra_syntax/src/ptr.rs
+++ b/crates/ra_syntax/src/ptr.rs
@@ -24,7 +24,7 @@ impl SyntaxNodePtr {
24 pub fn to_node(&self, root: &SyntaxNode) -> SyntaxNode { 24 pub fn to_node(&self, root: &SyntaxNode) -> SyntaxNode {
25 assert!(root.parent().is_none()); 25 assert!(root.parent().is_none());
26 successors(Some(root.clone()), |node| { 26 successors(Some(root.clone()), |node| {
27 node.children().find(|it| self.range.is_subrange(&it.text_range())) 27 node.children().find(|it| it.text_range().contains_range(self.range))
28 }) 28 })
29 .find(|it| it.text_range() == self.range && it.kind() == self.kind) 29 .find(|it| it.text_range() == self.range && it.kind() == self.kind)
30 .unwrap_or_else(|| panic!("can't resolve local ptr to SyntaxNode: {:?}", self)) 30 .unwrap_or_else(|| panic!("can't resolve local ptr to SyntaxNode: {:?}", self))
diff --git a/crates/ra_syntax/src/syntax_error.rs b/crates/ra_syntax/src/syntax_error.rs
index 54acf7847..7c4511fec 100644
--- a/crates/ra_syntax/src/syntax_error.rs
+++ b/crates/ra_syntax/src/syntax_error.rs
@@ -2,7 +2,7 @@
2 2
3use std::fmt; 3use std::fmt;
4 4
5use crate::{TextRange, TextUnit}; 5use crate::{TextRange, TextSize};
6 6
7/// Represents the result of unsuccessful tokenization, parsing 7/// Represents the result of unsuccessful tokenization, parsing
8/// or tree validation. 8/// or tree validation.
@@ -23,8 +23,8 @@ impl SyntaxError {
23 pub fn new(message: impl Into<String>, range: TextRange) -> Self { 23 pub fn new(message: impl Into<String>, range: TextRange) -> Self {
24 Self(message.into(), range) 24 Self(message.into(), range)
25 } 25 }
26 pub fn new_at_offset(message: impl Into<String>, offset: TextUnit) -> Self { 26 pub fn new_at_offset(message: impl Into<String>, offset: TextSize) -> Self {
27 Self(message.into(), TextRange::offset_len(offset, 0.into())) 27 Self(message.into(), TextRange::empty(offset))
28 } 28 }
29 29
30 pub fn range(&self) -> TextRange { 30 pub fn range(&self) -> TextRange {
diff --git a/crates/ra_syntax/src/syntax_node.rs b/crates/ra_syntax/src/syntax_node.rs
index 4e3a1460d..f9d379abf 100644
--- a/crates/ra_syntax/src/syntax_node.rs
+++ b/crates/ra_syntax/src/syntax_node.rs
@@ -8,7 +8,7 @@
8 8
9use rowan::{GreenNodeBuilder, Language}; 9use rowan::{GreenNodeBuilder, Language};
10 10
11use crate::{Parse, SmolStr, SyntaxError, SyntaxKind, TextUnit}; 11use crate::{Parse, SmolStr, SyntaxError, SyntaxKind, TextSize};
12 12
13pub(crate) use rowan::{GreenNode, GreenToken}; 13pub(crate) use rowan::{GreenNode, GreenToken};
14 14
@@ -69,7 +69,7 @@ impl SyntaxTreeBuilder {
69 self.inner.finish_node() 69 self.inner.finish_node()
70 } 70 }
71 71
72 pub fn error(&mut self, error: ra_parser::ParseError, text_pos: TextUnit) { 72 pub fn error(&mut self, error: ra_parser::ParseError, text_pos: TextSize) {
73 self.errors.push(SyntaxError::new_at_offset(error.0, text_pos)) 73 self.errors.push(SyntaxError::new_at_offset(error.0, text_pos))
74 } 74 }
75} 75}
diff --git a/crates/ra_syntax/src/tests.rs b/crates/ra_syntax/src/tests.rs
index 355843b94..aee57db62 100644
--- a/crates/ra_syntax/src/tests.rs
+++ b/crates/ra_syntax/src/tests.rs
@@ -5,7 +5,7 @@ use std::{
5 5
6use test_utils::{collect_rust_files, dir_tests, project_dir, read_text}; 6use test_utils::{collect_rust_files, dir_tests, project_dir, read_text};
7 7
8use crate::{fuzz, tokenize, SourceFile, SyntaxError, TextRange, TextUnit, Token}; 8use crate::{fuzz, tokenize, SourceFile, SyntaxError, TextRange, TextSize, Token};
9 9
10#[test] 10#[test]
11fn lexer_tests() { 11fn lexer_tests() {
@@ -121,12 +121,12 @@ fn assert_errors_are_absent(errors: &[SyntaxError], path: &Path) {
121 121
122fn dump_tokens_and_errors(tokens: &[Token], errors: &[SyntaxError], text: &str) -> String { 122fn dump_tokens_and_errors(tokens: &[Token], errors: &[SyntaxError], text: &str) -> String {
123 let mut acc = String::new(); 123 let mut acc = String::new();
124 let mut offset = TextUnit::from_usize(0); 124 let mut offset: TextSize = 0.into();
125 for token in tokens { 125 for token in tokens {
126 let token_len = token.len; 126 let token_len = token.len;
127 let token_text = &text[TextRange::offset_len(offset, token.len)]; 127 let token_text = &text[TextRange::at(offset, token.len)];
128 offset += token.len; 128 offset += token.len;
129 writeln!(acc, "{:?} {} {:?}", token.kind, token_len, token_text).unwrap(); 129 writeln!(acc, "{:?} {:?} {:?}", token.kind, token_len, token_text).unwrap();
130 } 130 }
131 for err in errors { 131 for err in errors {
132 writeln!(acc, "> error{:?} token({:?}) msg({})", err.range(), &text[err.range()], err) 132 writeln!(acc, "> error{:?} token({:?}) msg({})", err.range(), &text[err.range()], err)
diff --git a/crates/ra_syntax/src/validation.rs b/crates/ra_syntax/src/validation.rs
index f85b3e61b..5e93895ec 100644
--- a/crates/ra_syntax/src/validation.rs
+++ b/crates/ra_syntax/src/validation.rs
@@ -2,12 +2,14 @@
2 2
3mod block; 3mod block;
4 4
5use std::convert::TryFrom;
6
5use rustc_lexer::unescape; 7use rustc_lexer::unescape;
6 8
7use crate::{ 9use crate::{
8 ast, match_ast, AstNode, SyntaxError, 10 ast, match_ast, AstNode, SyntaxError,
9 SyntaxKind::{BYTE, BYTE_STRING, CHAR, CONST_DEF, FN_DEF, INT_NUMBER, STRING, TYPE_ALIAS_DEF}, 11 SyntaxKind::{BYTE, BYTE_STRING, CHAR, CONST_DEF, FN_DEF, INT_NUMBER, STRING, TYPE_ALIAS_DEF},
10 SyntaxNode, SyntaxToken, TextUnit, T, 12 SyntaxNode, SyntaxToken, TextSize, T,
11}; 13};
12 14
13fn rustc_unescape_error_to_string(err: unescape::EscapeError) -> &'static str { 15fn rustc_unescape_error_to_string(err: unescape::EscapeError) -> &'static str {
@@ -112,7 +114,7 @@ fn validate_literal(literal: ast::Literal, acc: &mut Vec<SyntaxError>) {
112 114
113 // FIXME: lift this lambda refactor to `fn` (https://github.com/rust-analyzer/rust-analyzer/pull/2834#discussion_r366199205) 115 // FIXME: lift this lambda refactor to `fn` (https://github.com/rust-analyzer/rust-analyzer/pull/2834#discussion_r366199205)
114 let mut push_err = |prefix_len, (off, err): (usize, unescape::EscapeError)| { 116 let mut push_err = |prefix_len, (off, err): (usize, unescape::EscapeError)| {
115 let off = token.text_range().start() + TextUnit::from_usize(off + prefix_len); 117 let off = token.text_range().start() + TextSize::try_from(off + prefix_len).unwrap();
116 acc.push(SyntaxError::new_at_offset(rustc_unescape_error_to_string(err), off)); 118 acc.push(SyntaxError::new_at_offset(rustc_unescape_error_to_string(err), off));
117 }; 119 };
118 120
diff --git a/crates/ra_syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt
index f24e1fd32..4d5ad74df 100644
--- a/crates/ra_syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt
@@ -1,2 +1,2 @@
1CHAR 1 "\'" 1CHAR 1 "\'"
2> error[0; 1) token("\'") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..1 token("\'") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt b/crates/ra_syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt
index bd08cfc44..eafdb3c7c 100644
--- a/crates/ra_syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt
@@ -1,2 +1,2 @@
1CHAR 5 "\'🦀" 1CHAR 5 "\'🦀"
2> error[0; 5) token("\'🦀") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..5 token("\'🦀") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt b/crates/ra_syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt
index 0ee22912d..cc2b4866a 100644
--- a/crates/ra_syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt
@@ -1,2 +1,2 @@
1CHAR 5 "\'\\x7f" 1CHAR 5 "\'\\x7f"
2> error[0; 5) token("\'\\x7f") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..5 token("\'\\x7f") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt b/crates/ra_syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt
index 96fac42ce..a6d422cb3 100644
--- a/crates/ra_syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt
@@ -1,2 +1,2 @@
1CHAR 9 "\'\\u{20AA}" 1CHAR 9 "\'\\u{20AA}"
2> error[0; 9) token("\'\\u{20AA}") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..9 token("\'\\u{20AA}") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt b/crates/ra_syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt
index 2059f3f81..47e7baa70 100644
--- a/crates/ra_syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt
@@ -1,2 +1,2 @@
1CHAR 2 "\' " 1CHAR 2 "\' "
2> error[0; 2) token("\' ") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..2 token("\' ") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt b/crates/ra_syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt
index 7dd376e59..511029d80 100644
--- a/crates/ra_syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt
@@ -1,2 +1,2 @@
1CHAR 2 "\'\\" 1CHAR 2 "\'\\"
2> error[0; 2) token("\'\\") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..2 token("\'\\") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt b/crates/ra_syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt
index ef7a0a147..d2ba5742c 100644
--- a/crates/ra_syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt
@@ -1,2 +1,2 @@
1CHAR 3 "\'\\n" 1CHAR 3 "\'\\n"
2> error[0; 3) token("\'\\n") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..3 token("\'\\n") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt b/crates/ra_syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt
index 13fc5ea9a..ae9a7f0e2 100644
--- a/crates/ra_syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt
@@ -1,2 +1,2 @@
1CHAR 3 "\'\\\'" 1CHAR 3 "\'\\\'"
2> error[0; 3) token("\'\\\'") msg(Missing trailing `'` symbol to terminate the character literal) 2> error0..3 token("\'\\\'") msg(Missing trailing `'` symbol to terminate the character literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt
index 269d68c74..ff1504592 100644
--- a/crates/ra_syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt
@@ -1,2 +1,2 @@
1BYTE 2 "b\'" 1BYTE 2 "b\'"
2> error[0; 2) token("b\'") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..2 token("b\'") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt b/crates/ra_syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt
index 91a76e479..34f7bd6d4 100644
--- a/crates/ra_syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt
@@ -1,2 +1,2 @@
1BYTE 6 "b\'🦀" 1BYTE 6 "b\'🦀"
2> error[0; 6) token("b\'🦀") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..6 token("b\'🦀") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt b/crates/ra_syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt
index b8c804a18..c964d0f00 100644
--- a/crates/ra_syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt
@@ -1,2 +1,2 @@
1BYTE 6 "b\'\\x7f" 1BYTE 6 "b\'\\x7f"
2> error[0; 6) token("b\'\\x7f") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..6 token("b\'\\x7f") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt b/crates/ra_syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt
index dfca22a59..cc65fb86f 100644
--- a/crates/ra_syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt
@@ -1,2 +1,2 @@
1BYTE 10 "b\'\\u{20AA}" 1BYTE 10 "b\'\\u{20AA}"
2> error[0; 10) token("b\'\\u{20AA}") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..10 token("b\'\\u{20AA}") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt b/crates/ra_syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt
index 51a1cceab..800834a14 100644
--- a/crates/ra_syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt
@@ -1,2 +1,2 @@
1BYTE 3 "b\' " 1BYTE 3 "b\' "
2> error[0; 3) token("b\' ") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..3 token("b\' ") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt b/crates/ra_syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt
index 24e835c27..7b85ee646 100644
--- a/crates/ra_syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt
@@ -1,2 +1,2 @@
1BYTE 3 "b\'\\" 1BYTE 3 "b\'\\"
2> error[0; 3) token("b\'\\") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..3 token("b\'\\") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt b/crates/ra_syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt
index f1e39a41b..4b9a63117 100644
--- a/crates/ra_syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt
@@ -1,2 +1,2 @@
1BYTE 4 "b\'\\n" 1BYTE 4 "b\'\\n"
2> error[0; 4) token("b\'\\n") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..4 token("b\'\\n") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt b/crates/ra_syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt
index f8ffe815d..fe337f8d3 100644
--- a/crates/ra_syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt
@@ -1,2 +1,2 @@
1BYTE 4 "b\'\\\'" 1BYTE 4 "b\'\\\'"
2> error[0; 4) token("b\'\\\'") msg(Missing trailing `'` symbol to terminate the byte literal) 2> error0..4 token("b\'\\\'") msg(Missing trailing `'` symbol to terminate the byte literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt
index 823daaf6f..d11a8d880 100644
--- a/crates/ra_syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt
@@ -1,2 +1,2 @@
1STRING 1 "\"" 1STRING 1 "\""
2> error[0; 1) token("\"") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..1 token("\"") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt b/crates/ra_syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt
index 164580eb3..167f942d1 100644
--- a/crates/ra_syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt
@@ -1,2 +1,2 @@
1STRING 5 "\"🦀" 1STRING 5 "\"🦀"
2> error[0; 5) token("\"🦀") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..5 token("\"🦀") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt b/crates/ra_syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt
index 4453827c3..224c653d2 100644
--- a/crates/ra_syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt
@@ -1,2 +1,2 @@
1STRING 5 "\"\\x7f" 1STRING 5 "\"\\x7f"
2> error[0; 5) token("\"\\x7f") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..5 token("\"\\x7f") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt b/crates/ra_syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt
index aa614f304..48975bbcb 100644
--- a/crates/ra_syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt
@@ -1,2 +1,2 @@
1STRING 9 "\"\\u{20AA}" 1STRING 9 "\"\\u{20AA}"
2> error[0; 9) token("\"\\u{20AA}") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..9 token("\"\\u{20AA}") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt b/crates/ra_syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt
index b7db1236f..a823cca7a 100644
--- a/crates/ra_syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt
@@ -1,2 +1,2 @@
1STRING 2 "\" " 1STRING 2 "\" "
2> error[0; 2) token("\" ") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..2 token("\" ") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt b/crates/ra_syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt
index 9d3df3799..0914f001f 100644
--- a/crates/ra_syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt
@@ -1,2 +1,2 @@
1STRING 2 "\"\\" 1STRING 2 "\"\\"
2> error[0; 2) token("\"\\") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..2 token("\"\\") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt b/crates/ra_syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt
index e3eb672b6..5674b55fd 100644
--- a/crates/ra_syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt
@@ -1,2 +1,2 @@
1STRING 3 "\"\\n" 1STRING 3 "\"\\n"
2> error[0; 3) token("\"\\n") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..3 token("\"\\n") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt b/crates/ra_syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt
index 041d7fb6e..4c9a774e4 100644
--- a/crates/ra_syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt
@@ -1,2 +1,2 @@
1STRING 3 "\"\\\"" 1STRING 3 "\"\\\""
2> error[0; 3) token("\"\\\"") msg(Missing trailing `"` symbol to terminate the string literal) 2> error0..3 token("\"\\\"") msg(Missing trailing `"` symbol to terminate the string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt
index be7970a83..04e6b0aa4 100644
--- a/crates/ra_syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 2 "b\"" 1BYTE_STRING 2 "b\""
2> error[0; 2) token("b\"") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..2 token("b\"") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt b/crates/ra_syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt
index bf9aab132..0576a0609 100644
--- a/crates/ra_syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 6 "b\"🦀" 1BYTE_STRING 6 "b\"🦀"
2> error[0; 6) token("b\"🦀") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..6 token("b\"🦀") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt b/crates/ra_syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt
index 76e16d7d3..541a013d8 100644
--- a/crates/ra_syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 6 "b\"\\x7f" 1BYTE_STRING 6 "b\"\\x7f"
2> error[0; 6) token("b\"\\x7f") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..6 token("b\"\\x7f") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt b/crates/ra_syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt
index 09adffa16..71b0fb211 100644
--- a/crates/ra_syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 10 "b\"\\u{20AA}" 1BYTE_STRING 10 "b\"\\u{20AA}"
2> error[0; 10) token("b\"\\u{20AA}") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..10 token("b\"\\u{20AA}") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt b/crates/ra_syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt
index fcb7253c8..bd5058bc1 100644
--- a/crates/ra_syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 3 "b\" " 1BYTE_STRING 3 "b\" "
2> error[0; 3) token("b\" ") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..3 token("b\" ") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt b/crates/ra_syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt
index 0a1b3e269..7f94f10ba 100644
--- a/crates/ra_syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 3 "b\"\\" 1BYTE_STRING 3 "b\"\\"
2> error[0; 3) token("b\"\\") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..3 token("b\"\\") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt b/crates/ra_syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt
index 1fb89d2b6..9c3c089d7 100644
--- a/crates/ra_syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 4 "b\"\\n" 1BYTE_STRING 4 "b\"\\n"
2> error[0; 4) token("b\"\\n") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..4 token("b\"\\n") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt b/crates/ra_syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt
index 718d36992..884b12c8e 100644
--- a/crates/ra_syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt
@@ -1,2 +1,2 @@
1BYTE_STRING 4 "b\"\\\"" 1BYTE_STRING 4 "b\"\\\""
2> error[0; 4) token("b\"\\\"") msg(Missing trailing `"` symbol to terminate the byte string literal) 2> error0..4 token("b\"\\\"") msg(Missing trailing `"` symbol to terminate the byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt
index 93348f548..6fd59ccc0 100644
--- a/crates/ra_syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt
@@ -1,2 +1,2 @@
1RAW_STRING 4 "r##\"" 1RAW_STRING 4 "r##\""
2> error[0; 4) token("r##\"") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) 2> error0..4 token("r##\"") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt b/crates/ra_syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt
index 42c70dfe8..8d9ca0e8f 100644
--- a/crates/ra_syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt
@@ -1,2 +1,2 @@
1RAW_STRING 8 "r##\"🦀" 1RAW_STRING 8 "r##\"🦀"
2> error[0; 8) token("r##\"🦀") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) 2> error0..8 token("r##\"🦀") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt b/crates/ra_syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt
index 2bdeea0ff..a906380c7 100644
--- a/crates/ra_syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt
@@ -1,2 +1,2 @@
1RAW_STRING 8 "r##\"\\x7f" 1RAW_STRING 8 "r##\"\\x7f"
2> error[0; 8) token("r##\"\\x7f") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) 2> error0..8 token("r##\"\\x7f") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt b/crates/ra_syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt
index 667d4d79f..5667c6149 100644
--- a/crates/ra_syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt
@@ -1,2 +1,2 @@
1RAW_STRING 12 "r##\"\\u{20AA}" 1RAW_STRING 12 "r##\"\\u{20AA}"
2> error[0; 12) token("r##\"\\u{20AA}") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) 2> error0..12 token("r##\"\\u{20AA}") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt b/crates/ra_syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt
index dd9597a1a..141c8268e 100644
--- a/crates/ra_syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt
@@ -1,2 +1,2 @@
1RAW_STRING 5 "r##\" " 1RAW_STRING 5 "r##\" "
2> error[0; 5) token("r##\" ") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) 2> error0..5 token("r##\" ") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt b/crates/ra_syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt
index 6ac6e3d62..f61d4cc91 100644
--- a/crates/ra_syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt
@@ -1,2 +1,2 @@
1RAW_STRING 5 "r##\"\\" 1RAW_STRING 5 "r##\"\\"
2> error[0; 5) token("r##\"\\") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) 2> error0..5 token("r##\"\\") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt b/crates/ra_syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt
index 9d35443f5..12e2c0fc0 100644
--- a/crates/ra_syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt
@@ -1,2 +1,2 @@
1RAW_STRING 6 "r##\"\\n" 1RAW_STRING 6 "r##\"\\n"
2> error[0; 6) token("r##\"\\n") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) 2> error0..6 token("r##\"\\n") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt
index 81fa39ea5..fe12cb5fc 100644
--- a/crates/ra_syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 5 "br##\"" 1RAW_BYTE_STRING 5 "br##\""
2> error[0; 5) token("br##\"") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) 2> error0..5 token("br##\"") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt b/crates/ra_syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt
index c2503a4d0..5be2a7861 100644
--- a/crates/ra_syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 9 "br##\"🦀" 1RAW_BYTE_STRING 9 "br##\"🦀"
2> error[0; 9) token("br##\"🦀") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) 2> error0..9 token("br##\"🦀") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt b/crates/ra_syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt
index 3bd3d8152..6cbe08d07 100644
--- a/crates/ra_syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 9 "br##\"\\x7f" 1RAW_BYTE_STRING 9 "br##\"\\x7f"
2> error[0; 9) token("br##\"\\x7f") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) 2> error0..9 token("br##\"\\x7f") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt b/crates/ra_syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt
index a512f0428..f56a4f984 100644
--- a/crates/ra_syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 13 "br##\"\\u{20AA}" 1RAW_BYTE_STRING 13 "br##\"\\u{20AA}"
2> error[0; 13) token("br##\"\\u{20AA}") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) 2> error0..13 token("br##\"\\u{20AA}") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt b/crates/ra_syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt
index dc616a623..3d32ce34e 100644
--- a/crates/ra_syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 6 "br##\" " 1RAW_BYTE_STRING 6 "br##\" "
2> error[0; 6) token("br##\" ") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) 2> error0..6 token("br##\" ") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt b/crates/ra_syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt
index debafe380..320fea177 100644
--- a/crates/ra_syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 6 "br##\"\\" 1RAW_BYTE_STRING 6 "br##\"\\"
2> error[0; 6) token("br##\"\\") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) 2> error0..6 token("br##\"\\") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt b/crates/ra_syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt
index 524e617b7..b3a56380c 100644
--- a/crates/ra_syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 7 "br##\"\\n" 1RAW_BYTE_STRING 7 "br##\"\\n"
2> error[0; 7) token("br##\"\\n") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) 2> error0..7 token("br##\"\\n") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt
index 00b046840..5af1e2d97 100644
--- a/crates/ra_syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt
@@ -1,2 +1,2 @@
1RAW_STRING 3 "r##" 1RAW_STRING 3 "r##"
2> error[0; 3) token("r##") msg(Missing `"` symbol after `#` symbols to begin the raw string literal) 2> error0..3 token("r##") msg(Missing `"` symbol after `#` symbols to begin the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt
index 33b25e60f..aec7afd92 100644
--- a/crates/ra_syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt
@@ -1,2 +1,2 @@
1RAW_BYTE_STRING 4 "br##" 1RAW_BYTE_STRING 4 "br##"
2> error[0; 4) token("br##") msg(Missing `"` symbol after `#` symbols to begin the raw byte string literal) 2> error0..4 token("br##") msg(Missing `"` symbol after `#` symbols to begin the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt b/crates/ra_syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt
index 290e0bd7c..e22fe5374 100644
--- a/crates/ra_syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt
@@ -7,4 +7,4 @@ IDENT 1 "a"
7WHITESPACE 1 " " 7WHITESPACE 1 " "
8IDENT 5 "quote" 8IDENT 5 "quote"
9BANG 1 "!" 9BANG 1 "!"
10> error[0; 4) token("r## ") msg(Missing `"` symbol after `#` symbols to begin the raw string literal) 10> error0..4 token("r## ") msg(Missing `"` symbol after `#` symbols to begin the raw string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt b/crates/ra_syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt
index 5c492906d..d74ea4c27 100644
--- a/crates/ra_syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt
@@ -7,4 +7,4 @@ IDENT 1 "a"
7WHITESPACE 1 " " 7WHITESPACE 1 " "
8IDENT 5 "quote" 8IDENT 5 "quote"
9BANG 1 "!" 9BANG 1 "!"
10> error[0; 5) token("br## ") msg(Missing `"` symbol after `#` symbols to begin the raw byte string literal) 10> error0..5 token("br## ") msg(Missing `"` symbol after `#` symbols to begin the raw byte string literal)
diff --git a/crates/ra_syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt b/crates/ra_syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt
index 5d04cdaa4..2a256e9df 100644
--- a/crates/ra_syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt
@@ -1,2 +1,2 @@
1COMMENT 2 "/*" 1COMMENT 2 "/*"
2> error[0; 2) token("/*") msg(Missing trailing `*/` symbols to terminate the block comment) 2> error0..2 token("/*") msg(Missing trailing `*/` symbols to terminate the block comment)
diff --git a/crates/ra_syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt b/crates/ra_syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt
index 8c6b678e3..8e8490302 100644
--- a/crates/ra_syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt
@@ -1,2 +1,2 @@
1COMMENT 11 "/* comment\n" 1COMMENT 11 "/* comment\n"
2> error[0; 11) token("/* comment\n") msg(Missing trailing `*/` symbols to terminate the block comment) 2> error0..11 token("/* comment\n") msg(Missing trailing `*/` symbols to terminate the block comment)
diff --git a/crates/ra_syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt b/crates/ra_syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt
index 250de34d9..b7d28fc05 100644
--- a/crates/ra_syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt
@@ -1,2 +1,2 @@
1COMMENT 9 "/* /* /*\n" 1COMMENT 9 "/* /* /*\n"
2> error[0; 9) token("/* /* /*\n") msg(Missing trailing `*/` symbols to terminate the block comment) 2> error0..9 token("/* /* /*\n") msg(Missing trailing `*/` symbols to terminate the block comment)
diff --git a/crates/ra_syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt b/crates/ra_syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt
index f97f2a8c7..4742d2c12 100644
--- a/crates/ra_syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt
@@ -1,2 +1,2 @@
1COMMENT 25 "/** /*! /* comment */ */\n" 1COMMENT 25 "/** /*! /* comment */ */\n"
2> error[0; 25) token("/** /*! /* comment */ */\n") msg(Missing trailing `*/` symbols to terminate the block comment) 2> error0..25 token("/** /*! /* comment */ */\n") msg(Missing trailing `*/` symbols to terminate the block comment)
diff --git a/crates/ra_syntax/test_data/lexer/err/0055_empty_int.txt b/crates/ra_syntax/test_data/lexer/err/0055_empty_int.txt
index 2fe5bd950..bcd094b6e 100644
--- a/crates/ra_syntax/test_data/lexer/err/0055_empty_int.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0055_empty_int.txt
@@ -24,16 +24,16 @@ INT_NUMBER 4 "0x_g"
24WHITESPACE 1 "\n" 24WHITESPACE 1 "\n"
25INT_NUMBER 4 "0x_G" 25INT_NUMBER 4 "0x_G"
26WHITESPACE 1 "\n" 26WHITESPACE 1 "\n"
27> error[0; 2) token("0b") msg(Missing digits after the integer base prefix) 27> error0..2 token("0b") msg(Missing digits after the integer base prefix)
28> error[3; 5) token("0o") msg(Missing digits after the integer base prefix) 28> error3..5 token("0o") msg(Missing digits after the integer base prefix)
29> error[6; 8) token("0x") msg(Missing digits after the integer base prefix) 29> error6..8 token("0x") msg(Missing digits after the integer base prefix)
30> error[10; 13) token("0b_") msg(Missing digits after the integer base prefix) 30> error10..13 token("0b_") msg(Missing digits after the integer base prefix)
31> error[14; 17) token("0o_") msg(Missing digits after the integer base prefix) 31> error14..17 token("0o_") msg(Missing digits after the integer base prefix)
32> error[18; 21) token("0x_") msg(Missing digits after the integer base prefix) 32> error18..21 token("0x_") msg(Missing digits after the integer base prefix)
33> error[23; 32) token("0bnoDigit") msg(Missing digits after the integer base prefix) 33> error23..32 token("0bnoDigit") msg(Missing digits after the integer base prefix)
34> error[33; 42) token("0onoDigit") msg(Missing digits after the integer base prefix) 34> error33..42 token("0onoDigit") msg(Missing digits after the integer base prefix)
35> error[43; 52) token("0xnoDigit") msg(Missing digits after the integer base prefix) 35> error43..52 token("0xnoDigit") msg(Missing digits after the integer base prefix)
36> error[54; 57) token("0xG") msg(Missing digits after the integer base prefix) 36> error54..57 token("0xG") msg(Missing digits after the integer base prefix)
37> error[58; 61) token("0xg") msg(Missing digits after the integer base prefix) 37> error58..61 token("0xg") msg(Missing digits after the integer base prefix)
38> error[63; 67) token("0x_g") msg(Missing digits after the integer base prefix) 38> error63..67 token("0x_g") msg(Missing digits after the integer base prefix)
39> error[68; 72) token("0x_G") msg(Missing digits after the integer base prefix) 39> error68..72 token("0x_G") msg(Missing digits after the integer base prefix)
diff --git a/crates/ra_syntax/test_data/lexer/err/0056_empty_exponent.txt b/crates/ra_syntax/test_data/lexer/err/0056_empty_exponent.txt
index ab35e20a5..6a645a6a4 100644
--- a/crates/ra_syntax/test_data/lexer/err/0056_empty_exponent.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0056_empty_exponent.txt
@@ -46,17 +46,17 @@ FLOAT_NUMBER 9 "42.2E+f32"
46WHITESPACE 1 "\n" 46WHITESPACE 1 "\n"
47FLOAT_NUMBER 9 "42.2E-f32" 47FLOAT_NUMBER 9 "42.2E-f32"
48WHITESPACE 1 "\n" 48WHITESPACE 1 "\n"
49> error[0; 2) token("0e") msg(Missing digits after the exponent symbol) 49> error0..2 token("0e") msg(Missing digits after the exponent symbol)
50> error[3; 5) token("0E") msg(Missing digits after the exponent symbol) 50> error3..5 token("0E") msg(Missing digits after the exponent symbol)
51> error[7; 11) token("42e+") msg(Missing digits after the exponent symbol) 51> error7..11 token("42e+") msg(Missing digits after the exponent symbol)
52> error[12; 16) token("42e-") msg(Missing digits after the exponent symbol) 52> error12..16 token("42e-") msg(Missing digits after the exponent symbol)
53> error[17; 21) token("42E+") msg(Missing digits after the exponent symbol) 53> error17..21 token("42E+") msg(Missing digits after the exponent symbol)
54> error[22; 26) token("42E-") msg(Missing digits after the exponent symbol) 54> error22..26 token("42E-") msg(Missing digits after the exponent symbol)
55> error[53; 59) token("42.2e+") msg(Missing digits after the exponent symbol) 55> error53..59 token("42.2e+") msg(Missing digits after the exponent symbol)
56> error[60; 66) token("42.2e-") msg(Missing digits after the exponent symbol) 56> error60..66 token("42.2e-") msg(Missing digits after the exponent symbol)
57> error[67; 73) token("42.2E+") msg(Missing digits after the exponent symbol) 57> error67..73 token("42.2E+") msg(Missing digits after the exponent symbol)
58> error[74; 80) token("42.2E-") msg(Missing digits after the exponent symbol) 58> error74..80 token("42.2E-") msg(Missing digits after the exponent symbol)
59> error[82; 91) token("42.2e+f32") msg(Missing digits after the exponent symbol) 59> error82..91 token("42.2e+f32") msg(Missing digits after the exponent symbol)
60> error[92; 101) token("42.2e-f32") msg(Missing digits after the exponent symbol) 60> error92..101 token("42.2e-f32") msg(Missing digits after the exponent symbol)
61> error[102; 111) token("42.2E+f32") msg(Missing digits after the exponent symbol) 61> error102..111 token("42.2E+f32") msg(Missing digits after the exponent symbol)
62> error[112; 121) token("42.2E-f32") msg(Missing digits after the exponent symbol) 62> error112..121 token("42.2E-f32") msg(Missing digits after the exponent symbol)
diff --git a/crates/ra_syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt b/crates/ra_syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt
index 89b38bfac..e138bcebc 100644
--- a/crates/ra_syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt
+++ b/crates/ra_syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt
@@ -2,5 +2,5 @@ LIFETIME 2 "\'1"
2WHITESPACE 1 "\n" 2WHITESPACE 1 "\n"
3LIFETIME 10 "\'1lifetime" 3LIFETIME 10 "\'1lifetime"
4WHITESPACE 1 "\n" 4WHITESPACE 1 "\n"
5> error[0; 2) token("\'1") msg(Lifetime name cannot start with a number) 5> error0..2 token("\'1") msg(Lifetime name cannot start with a number)
6> error[3; 13) token("\'1lifetime") msg(Lifetime name cannot start with a number) 6> error3..13 token("\'1lifetime") msg(Lifetime name cannot start with a number)
diff --git a/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rast b/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rast
index edcd936b0..81f0f575c 100644
--- a/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rast
+++ b/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rast
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@0..34
2 STRUCT_DEF@[0; 34) 2 STRUCT_DEF@0..34
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 34) 8 RECORD_FIELD_DEF_LIST@9..34
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 21) 11 RECORD_FIELD_DEF@15..21
12 NAME@[15; 16) 12 NAME@15..16
13 IDENT@[15; 16) "a" 13 IDENT@15..16 "a"
14 COLON@[16; 17) ":" 14 COLON@16..17 ":"
15 WHITESPACE@[17; 18) " " 15 WHITESPACE@17..18 " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@18..21
17 PATH@[18; 21) 17 PATH@18..21
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@18..21
19 NAME_REF@[18; 21) 19 NAME_REF@18..21
20 IDENT@[18; 21) "u32" 20 IDENT@18..21 "u32"
21 WHITESPACE@[21; 26) "\n " 21 WHITESPACE@21..26 "\n "
22 RECORD_FIELD_DEF@[26; 32) 22 RECORD_FIELD_DEF@26..32
23 NAME@[26; 27) 23 NAME@26..27
24 IDENT@[26; 27) "b" 24 IDENT@26..27 "b"
25 COLON@[27; 28) ":" 25 COLON@27..28 ":"
26 WHITESPACE@[28; 29) " " 26 WHITESPACE@28..29 " "
27 PATH_TYPE@[29; 32) 27 PATH_TYPE@29..32
28 PATH@[29; 32) 28 PATH@29..32
29 PATH_SEGMENT@[29; 32) 29 PATH_SEGMENT@29..32
30 NAME_REF@[29; 32) 30 NAME_REF@29..32
31 IDENT@[29; 32) "u32" 31 IDENT@29..32 "u32"
32 WHITESPACE@[32; 33) "\n" 32 WHITESPACE@32..33 "\n"
33 R_CURLY@[33; 34) "}" 33 R_CURLY@33..34 "}"
34error [21; 21): expected COMMA 34error 21..21: expected COMMA
diff --git a/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rast b/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rast
index 2d653715e..97d0fe910 100644
--- a/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rast
+++ b/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rast
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@0..21
2 ERROR@[0; 2) 2 ERROR@0..2
3 IF_KW@[0; 2) "if" 3 IF_KW@0..2 "if"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 ERROR@[3; 8) 5 ERROR@3..8
6 MATCH_KW@[3; 8) "match" 6 MATCH_KW@3..8 "match"
7 WHITESPACE@[8; 10) "\n\n" 7 WHITESPACE@8..10 "\n\n"
8 STRUCT_DEF@[10; 21) 8 STRUCT_DEF@10..21
9 STRUCT_KW@[10; 16) "struct" 9 STRUCT_KW@10..16 "struct"
10 WHITESPACE@[16; 17) " " 10 WHITESPACE@16..17 " "
11 NAME@[17; 18) 11 NAME@17..18
12 IDENT@[17; 18) "S" 12 IDENT@17..18 "S"
13 WHITESPACE@[18; 19) " " 13 WHITESPACE@18..19 " "
14 RECORD_FIELD_DEF_LIST@[19; 21) 14 RECORD_FIELD_DEF_LIST@19..21
15 L_CURLY@[19; 20) "{" 15 L_CURLY@19..20 "{"
16 R_CURLY@[20; 21) "}" 16 R_CURLY@20..21 "}"
17error [0; 0): expected an item 17error 0..0: expected an item
18error [3; 3): expected an item 18error 3..3: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rast b/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rast
index 831bbf83f..6717995e9 100644
--- a/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rast
+++ b/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rast
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@0..42
2 SHEBANG@[0; 20) "#!/use/bin/env rusti" 2 SHEBANG@0..20 "#!/use/bin/env rusti"
3 WHITESPACE@[20; 21) "\n" 3 WHITESPACE@20..21 "\n"
4 ATTR@[21; 23) 4 ATTR@21..23
5 POUND@[21; 22) "#" 5 POUND@21..22 "#"
6 BANG@[22; 23) "!" 6 BANG@22..23 "!"
7 ERROR@[23; 24) 7 ERROR@23..24
8 SLASH@[23; 24) "/" 8 SLASH@23..24 "/"
9 USE_ITEM@[24; 28) 9 USE_ITEM@24..28
10 USE_KW@[24; 27) "use" 10 USE_KW@24..27 "use"
11 ERROR@[27; 28) 11 ERROR@27..28
12 SLASH@[27; 28) "/" 12 SLASH@27..28 "/"
13 MACRO_CALL@[28; 31) 13 MACRO_CALL@28..31
14 PATH@[28; 31) 14 PATH@28..31
15 PATH_SEGMENT@[28; 31) 15 PATH_SEGMENT@28..31
16 NAME_REF@[28; 31) 16 NAME_REF@28..31
17 IDENT@[28; 31) "bin" 17 IDENT@28..31 "bin"
18 ERROR@[31; 32) 18 ERROR@31..32
19 SLASH@[31; 32) "/" 19 SLASH@31..32 "/"
20 MACRO_CALL@[32; 41) 20 MACRO_CALL@32..41
21 PATH@[32; 35) 21 PATH@32..35
22 PATH_SEGMENT@[32; 35) 22 PATH_SEGMENT@32..35
23 NAME_REF@[32; 35) 23 NAME_REF@32..35
24 IDENT@[32; 35) "env" 24 IDENT@32..35 "env"
25 WHITESPACE@[35; 36) " " 25 WHITESPACE@35..36 " "
26 NAME@[36; 41) 26 NAME@36..41
27 IDENT@[36; 41) "rusti" 27 IDENT@36..41 "rusti"
28 WHITESPACE@[41; 42) "\n" 28 WHITESPACE@41..42 "\n"
29error [23; 23): expected `[` 29error 23..23: expected `[`
30error [23; 23): expected an item 30error 23..23: expected an item
31error [27; 27): expected one of `*`, `::`, `{`, `self`, `super` or an identifier 31error 27..27: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
32error [28; 28): expected SEMICOLON 32error 28..28: expected SEMICOLON
33error [31; 31): expected BANG 33error 31..31: expected BANG
34error [31; 31): expected `{`, `[`, `(` 34error 31..31: expected `{`, `[`, `(`
35error [31; 31): expected SEMICOLON 35error 31..31: expected SEMICOLON
36error [31; 31): expected an item 36error 31..31: expected an item
37error [35; 35): expected BANG 37error 35..35: expected BANG
38error [41; 41): expected `{`, `[`, `(` 38error 41..41: expected `{`, `[`, `(`
39error [41; 41): expected SEMICOLON 39error 41..41: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rast b/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rast
index 6b89e7572..21c255698 100644
--- a/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rast
+++ b/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rast
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 STRUCT_DEF@[0; 39) 2 STRUCT_DEF@0..39
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 39) 8 RECORD_FIELD_DEF_LIST@9..39
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 21) 11 RECORD_FIELD_DEF@15..21
12 NAME@[15; 16) 12 NAME@15..16
13 IDENT@[15; 16) "a" 13 IDENT@15..16 "a"
14 COLON@[16; 17) ":" 14 COLON@16..17 ":"
15 WHITESPACE@[17; 18) " " 15 WHITESPACE@17..18 " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@18..21
17 PATH@[18; 21) 17 PATH@18..21
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@18..21
19 NAME_REF@[18; 21) 19 NAME_REF@18..21
20 IDENT@[18; 21) "i32" 20 IDENT@18..21 "i32"
21 COMMA@[21; 22) "," 21 COMMA@21..22 ","
22 WHITESPACE@[22; 27) "\n " 22 WHITESPACE@22..27 "\n "
23 RECORD_FIELD_DEF@[27; 36) 23 RECORD_FIELD_DEF@27..36
24 NAME@[27; 28) 24 NAME@27..28
25 IDENT@[27; 28) "b" 25 IDENT@27..28 "b"
26 COLON@[28; 29) ":" 26 COLON@28..29 ":"
27 WHITESPACE@[29; 30) " " 27 WHITESPACE@29..30 " "
28 PATH_TYPE@[30; 36) 28 PATH_TYPE@30..36
29 PATH@[30; 36) 29 PATH@30..36
30 PATH_SEGMENT@[30; 36) 30 PATH_SEGMENT@30..36
31 NAME_REF@[30; 36) 31 NAME_REF@30..36
32 IDENT@[30; 36) "String" 32 IDENT@30..36 "String"
33 COMMA@[36; 37) "," 33 COMMA@36..37 ","
34 WHITESPACE@[37; 38) "\n" 34 WHITESPACE@37..38 "\n"
35 R_CURLY@[38; 39) "}" 35 R_CURLY@38..39 "}"
36 ERROR@[39; 40) 36 ERROR@39..40
37 SEMICOLON@[39; 40) ";" 37 SEMICOLON@39..40 ";"
38error [39; 39): expected item, found `;` 38error 39..39: expected item, found `;`
39consider removing this semicolon 39consider removing this semicolon
diff --git a/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rast b/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rast
index 1d27d4cd6..8c6b89dc2 100644
--- a/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rast
+++ b/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 12) 1SOURCE_FILE@0..12
2 USE_ITEM@[0; 12) 2 USE_ITEM@0..12
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 11) 5 USE_TREE@4..11
6 PATH@[4; 11) 6 PATH@4..11
7 PATH@[4; 7) 7 PATH@4..7
8 PATH_SEGMENT@[4; 7) 8 PATH_SEGMENT@4..7
9 NAME_REF@[4; 7) 9 NAME_REF@4..7
10 IDENT@[4; 7) "foo" 10 IDENT@4..7 "foo"
11 COLON2@[7; 9) "::" 11 COLON2@7..9 "::"
12 PATH_SEGMENT@[9; 11) 12 PATH_SEGMENT@9..11
13 ERROR@[9; 11) 13 ERROR@9..11
14 INT_NUMBER@[9; 11) "92" 14 INT_NUMBER@9..11 "92"
15 SEMICOLON@[11; 12) ";" 15 SEMICOLON@11..12 ";"
16error [9; 9): expected identifier 16error 9..9: expected identifier
diff --git a/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rast b/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rast
index cc11421a9..95cc83caa 100644
--- a/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rast
+++ b/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rast
@@ -1,60 +1,60 @@
1SOURCE_FILE@[0; 54) 1SOURCE_FILE@0..54
2 FN_DEF@[0; 31) 2 FN_DEF@0..31
3 ATTR@[0; 18) 3 ATTR@0..18
4 POUND@[0; 1) "#" 4 POUND@0..1 "#"
5 L_BRACK@[1; 2) "[" 5 L_BRACK@1..2 "["
6 PATH@[2; 5) 6 PATH@2..5
7 PATH_SEGMENT@[2; 5) 7 PATH_SEGMENT@2..5
8 NAME_REF@[2; 5) 8 NAME_REF@2..5
9 IDENT@[2; 5) "foo" 9 IDENT@2..5 "foo"
10 TOKEN_TREE@[5; 17) 10 TOKEN_TREE@5..17
11 L_PAREN@[5; 6) "(" 11 L_PAREN@5..6 "("
12 IDENT@[6; 9) "foo" 12 IDENT@6..9 "foo"
13 COMMA@[9; 10) "," 13 COMMA@9..10 ","
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 PLUS@[11; 12) "+" 15 PLUS@11..12 "+"
16 COMMA@[12; 13) "," 16 COMMA@12..13 ","
17 WHITESPACE@[13; 14) " " 17 WHITESPACE@13..14 " "
18 INT_NUMBER@[14; 16) "92" 18 INT_NUMBER@14..16 "92"
19 R_PAREN@[16; 17) ")" 19 R_PAREN@16..17 ")"
20 R_BRACK@[17; 18) "]" 20 R_BRACK@17..18 "]"
21 WHITESPACE@[18; 19) "\n" 21 WHITESPACE@18..19 "\n"
22 FN_KW@[19; 21) "fn" 22 FN_KW@19..21 "fn"
23 WHITESPACE@[21; 22) " " 23 WHITESPACE@21..22 " "
24 NAME@[22; 25) 24 NAME@22..25
25 IDENT@[22; 25) "foo" 25 IDENT@22..25 "foo"
26 PARAM_LIST@[25; 27) 26 PARAM_LIST@25..27
27 L_PAREN@[25; 26) "(" 27 L_PAREN@25..26 "("
28 R_PAREN@[26; 27) ")" 28 R_PAREN@26..27 ")"
29 WHITESPACE@[27; 28) " " 29 WHITESPACE@27..28 " "
30 BLOCK_EXPR@[28; 31) 30 BLOCK_EXPR@28..31
31 BLOCK@[28; 31) 31 BLOCK@28..31
32 L_CURLY@[28; 29) "{" 32 L_CURLY@28..29 "{"
33 WHITESPACE@[29; 30) "\n" 33 WHITESPACE@29..30 "\n"
34 R_CURLY@[30; 31) "}" 34 R_CURLY@30..31 "}"
35 WHITESPACE@[31; 34) "\n\n\n" 35 WHITESPACE@31..34 "\n\n\n"
36 ATTR@[34; 53) 36 ATTR@34..53
37 POUND@[34; 35) "#" 37 POUND@34..35 "#"
38 L_BRACK@[35; 36) "[" 38 L_BRACK@35..36 "["
39 PATH@[36; 39) 39 PATH@36..39
40 PATH_SEGMENT@[36; 39) 40 PATH_SEGMENT@36..39
41 NAME_REF@[36; 39) 41 NAME_REF@36..39
42 IDENT@[36; 39) "foo" 42 IDENT@36..39 "foo"
43 TOKEN_TREE@[39; 53) 43 TOKEN_TREE@39..53
44 L_PAREN@[39; 40) "(" 44 L_PAREN@39..40 "("
45 WHITESPACE@[40; 41) "\n" 45 WHITESPACE@40..41 "\n"
46 FN_KW@[41; 43) "fn" 46 FN_KW@41..43 "fn"
47 WHITESPACE@[43; 44) " " 47 WHITESPACE@43..44 " "
48 IDENT@[44; 47) "foo" 48 IDENT@44..47 "foo"
49 TOKEN_TREE@[47; 49) 49 TOKEN_TREE@47..49
50 L_PAREN@[47; 48) "(" 50 L_PAREN@47..48 "("
51 R_PAREN@[48; 49) ")" 51 R_PAREN@48..49 ")"
52 WHITESPACE@[49; 50) " " 52 WHITESPACE@49..50 " "
53 TOKEN_TREE@[50; 53) 53 TOKEN_TREE@50..53
54 L_CURLY@[50; 51) "{" 54 L_CURLY@50..51 "{"
55 WHITESPACE@[51; 52) "\n" 55 WHITESPACE@51..52 "\n"
56 R_CURLY@[52; 53) "}" 56 R_CURLY@52..53 "}"
57 WHITESPACE@[53; 54) "\n" 57 WHITESPACE@53..54 "\n"
58error [53; 53): expected R_PAREN 58error 53..53: expected R_PAREN
59error [53; 53): expected `]` 59error 53..53: expected `]`
60error [53; 53): expected an item 60error 53..53: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rast b/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rast
index 84fd92862..2d6364998 100644
--- a/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rast
+++ b/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rast
@@ -1,74 +1,74 @@
1SOURCE_FILE@[0; 74) 1SOURCE_FILE@0..74
2 STRUCT_DEF@[0; 73) 2 STRUCT_DEF@0..73
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 73) 8 RECORD_FIELD_DEF_LIST@9..73
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 21) 11 RECORD_FIELD_DEF@15..21
12 NAME@[15; 16) 12 NAME@15..16
13 IDENT@[15; 16) "f" 13 IDENT@15..16 "f"
14 COLON@[16; 17) ":" 14 COLON@16..17 ":"
15 WHITESPACE@[17; 18) " " 15 WHITESPACE@17..18 " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@18..21
17 PATH@[18; 21) 17 PATH@18..21
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@18..21
19 NAME_REF@[18; 21) 19 NAME_REF@18..21
20 IDENT@[18; 21) "u32" 20 IDENT@18..21 "u32"
21 COMMA@[21; 22) "," 21 COMMA@21..22 ","
22 WHITESPACE@[22; 27) "\n " 22 WHITESPACE@22..27 "\n "
23 VISIBILITY@[27; 30) 23 VISIBILITY@27..30
24 PUB_KW@[27; 30) "pub" 24 PUB_KW@27..30 "pub"
25 WHITESPACE@[30; 31) " " 25 WHITESPACE@30..31 " "
26 ERROR@[31; 33) 26 ERROR@31..33
27 INT_NUMBER@[31; 33) "92" 27 INT_NUMBER@31..33 "92"
28 WHITESPACE@[33; 38) "\n " 28 WHITESPACE@33..38 "\n "
29 ERROR@[38; 39) 29 ERROR@38..39
30 PLUS@[38; 39) "+" 30 PLUS@38..39 "+"
31 WHITESPACE@[39; 40) " " 31 WHITESPACE@39..40 " "
32 ERROR@[40; 41) 32 ERROR@40..41
33 MINUS@[40; 41) "-" 33 MINUS@40..41 "-"
34 WHITESPACE@[41; 42) " " 34 WHITESPACE@41..42 " "
35 ERROR@[42; 43) 35 ERROR@42..43
36 STAR@[42; 43) "*" 36 STAR@42..43 "*"
37 WHITESPACE@[43; 48) "\n " 37 WHITESPACE@43..48 "\n "
38 RECORD_FIELD_DEF@[48; 58) 38 RECORD_FIELD_DEF@48..58
39 VISIBILITY@[48; 51) 39 VISIBILITY@48..51
40 PUB_KW@[48; 51) "pub" 40 PUB_KW@48..51 "pub"
41 WHITESPACE@[51; 52) " " 41 WHITESPACE@51..52 " "
42 NAME@[52; 53) 42 NAME@52..53
43 IDENT@[52; 53) "x" 43 IDENT@52..53 "x"
44 COLON@[53; 54) ":" 44 COLON@53..54 ":"
45 WHITESPACE@[54; 55) " " 45 WHITESPACE@54..55 " "
46 PATH_TYPE@[55; 58) 46 PATH_TYPE@55..58
47 PATH@[55; 58) 47 PATH@55..58
48 PATH_SEGMENT@[55; 58) 48 PATH_SEGMENT@55..58
49 NAME_REF@[55; 58) 49 NAME_REF@55..58
50 IDENT@[55; 58) "u32" 50 IDENT@55..58 "u32"
51 COMMA@[58; 59) "," 51 COMMA@58..59 ","
52 WHITESPACE@[59; 64) "\n " 52 WHITESPACE@59..64 "\n "
53 RECORD_FIELD_DEF@[64; 70) 53 RECORD_FIELD_DEF@64..70
54 NAME@[64; 65) 54 NAME@64..65
55 IDENT@[64; 65) "z" 55 IDENT@64..65 "z"
56 COLON@[65; 66) ":" 56 COLON@65..66 ":"
57 WHITESPACE@[66; 67) " " 57 WHITESPACE@66..67 " "
58 PATH_TYPE@[67; 70) 58 PATH_TYPE@67..70
59 PATH@[67; 70) 59 PATH@67..70
60 PATH_SEGMENT@[67; 70) 60 PATH_SEGMENT@67..70
61 NAME_REF@[67; 70) 61 NAME_REF@67..70
62 IDENT@[67; 70) "f64" 62 IDENT@67..70 "f64"
63 COMMA@[70; 71) "," 63 COMMA@70..71 ","
64 WHITESPACE@[71; 72) "\n" 64 WHITESPACE@71..72 "\n"
65 R_CURLY@[72; 73) "}" 65 R_CURLY@72..73 "}"
66 WHITESPACE@[73; 74) "\n" 66 WHITESPACE@73..74 "\n"
67error [31; 31): expected field declaration 67error 31..31: expected field declaration
68error [33; 33): expected COMMA 68error 33..33: expected COMMA
69error [38; 38): expected field declaration 69error 38..38: expected field declaration
70error [39; 39): expected COMMA 70error 39..39: expected COMMA
71error [40; 40): expected field declaration 71error 40..40: expected field declaration
72error [41; 41): expected COMMA 72error 41..41: expected COMMA
73error [42; 42): expected field declaration 73error 42..42: expected field declaration
74error [43; 43): expected COMMA 74error 43..43: expected COMMA
diff --git a/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rast b/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rast
index c24e478f3..dc3e12091 100644
--- a/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rast
+++ b/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rast
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 31) 1SOURCE_FILE@0..31
2 ERROR@[0; 1) 2 ERROR@0..1
3 R_CURLY@[0; 1) "}" 3 R_CURLY@0..1 "}"
4 WHITESPACE@[1; 3) "\n\n" 4 WHITESPACE@1..3 "\n\n"
5 STRUCT_DEF@[3; 12) 5 STRUCT_DEF@3..12
6 STRUCT_KW@[3; 9) "struct" 6 STRUCT_KW@3..9 "struct"
7 WHITESPACE@[9; 10) " " 7 WHITESPACE@9..10 " "
8 NAME@[10; 11) 8 NAME@10..11
9 IDENT@[10; 11) "S" 9 IDENT@10..11 "S"
10 SEMICOLON@[11; 12) ";" 10 SEMICOLON@11..12 ";"
11 WHITESPACE@[12; 14) "\n\n" 11 WHITESPACE@12..14 "\n\n"
12 ERROR@[14; 15) 12 ERROR@14..15
13 R_CURLY@[14; 15) "}" 13 R_CURLY@14..15 "}"
14 WHITESPACE@[15; 17) "\n\n" 14 WHITESPACE@15..17 "\n\n"
15 FN_DEF@[17; 27) 15 FN_DEF@17..27
16 FN_KW@[17; 19) "fn" 16 FN_KW@17..19 "fn"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 NAME@[20; 23) 18 NAME@20..23
19 IDENT@[20; 23) "foo" 19 IDENT@20..23 "foo"
20 PARAM_LIST@[23; 25) 20 PARAM_LIST@23..25
21 L_PAREN@[23; 24) "(" 21 L_PAREN@23..24 "("
22 R_PAREN@[24; 25) ")" 22 R_PAREN@24..25 ")"
23 BLOCK_EXPR@[25; 27) 23 BLOCK_EXPR@25..27
24 BLOCK@[25; 27) 24 BLOCK@25..27
25 L_CURLY@[25; 26) "{" 25 L_CURLY@25..26 "{"
26 R_CURLY@[26; 27) "}" 26 R_CURLY@26..27 "}"
27 WHITESPACE@[27; 29) "\n\n" 27 WHITESPACE@27..29 "\n\n"
28 ERROR@[29; 30) 28 ERROR@29..30
29 R_CURLY@[29; 30) "}" 29 R_CURLY@29..30 "}"
30 WHITESPACE@[30; 31) "\n" 30 WHITESPACE@30..31 "\n"
31error [0; 0): unmatched `}` 31error 0..0: unmatched `}`
32error [14; 14): unmatched `}` 32error 14..14: unmatched `}`
33error [29; 29): unmatched `}` 33error 29..29: unmatched `}`
diff --git a/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rast b/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rast
index 9f5041ae4..97539fcf2 100644
--- a/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rast
+++ b/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rast
@@ -1,81 +1,81 @@
1SOURCE_FILE@[0; 95) 1SOURCE_FILE@0..95
2 FN_DEF@[0; 12) 2 FN_DEF@0..12
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 12) 11 BLOCK_EXPR@9..12
12 BLOCK@[9; 12) 12 BLOCK@9..12
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) "\n" 14 WHITESPACE@10..11 "\n"
15 R_CURLY@[11; 12) "}" 15 R_CURLY@11..12 "}"
16 WHITESPACE@[12; 14) "\n\n" 16 WHITESPACE@12..14 "\n\n"
17 MACRO_CALL@[14; 19) 17 MACRO_CALL@14..19
18 PATH@[14; 17) 18 PATH@14..17
19 PATH_SEGMENT@[14; 17) 19 PATH_SEGMENT@14..17
20 NAME_REF@[14; 17) 20 NAME_REF@14..17
21 IDENT@[14; 17) "bar" 21 IDENT@14..17 "bar"
22 TOKEN_TREE@[17; 19) 22 TOKEN_TREE@17..19
23 L_PAREN@[17; 18) "(" 23 L_PAREN@17..18 "("
24 R_PAREN@[18; 19) ")" 24 R_PAREN@18..19 ")"
25 WHITESPACE@[19; 20) " " 25 WHITESPACE@19..20 " "
26 ERROR@[20; 80) 26 ERROR@20..80
27 L_CURLY@[20; 21) "{" 27 L_CURLY@20..21 "{"
28 WHITESPACE@[21; 26) "\n " 28 WHITESPACE@21..26 "\n "
29 IF_EXPR@[26; 78) 29 IF_EXPR@26..78
30 IF_KW@[26; 28) "if" 30 IF_KW@26..28 "if"
31 WHITESPACE@[28; 29) " " 31 WHITESPACE@28..29 " "
32 CONDITION@[29; 33) 32 CONDITION@29..33
33 LITERAL@[29; 33) 33 LITERAL@29..33
34 TRUE_KW@[29; 33) "true" 34 TRUE_KW@29..33 "true"
35 WHITESPACE@[33; 34) " " 35 WHITESPACE@33..34 " "
36 BLOCK_EXPR@[34; 51) 36 BLOCK_EXPR@34..51
37 BLOCK@[34; 51) 37 BLOCK@34..51
38 L_CURLY@[34; 35) "{" 38 L_CURLY@34..35 "{"
39 WHITESPACE@[35; 44) "\n " 39 WHITESPACE@35..44 "\n "
40 LITERAL@[44; 45) 40 LITERAL@44..45
41 INT_NUMBER@[44; 45) "1" 41 INT_NUMBER@44..45 "1"
42 WHITESPACE@[45; 50) "\n " 42 WHITESPACE@45..50 "\n "
43 R_CURLY@[50; 51) "}" 43 R_CURLY@50..51 "}"
44 WHITESPACE@[51; 52) " " 44 WHITESPACE@51..52 " "
45 ELSE_KW@[52; 56) "else" 45 ELSE_KW@52..56 "else"
46 WHITESPACE@[56; 57) " " 46 WHITESPACE@56..57 " "
47 BLOCK_EXPR@[57; 78) 47 BLOCK_EXPR@57..78
48 BLOCK@[57; 78) 48 BLOCK@57..78
49 L_CURLY@[57; 58) "{" 49 L_CURLY@57..58 "{"
50 WHITESPACE@[58; 67) "\n " 50 WHITESPACE@58..67 "\n "
51 BIN_EXPR@[67; 72) 51 BIN_EXPR@67..72
52 LITERAL@[67; 68) 52 LITERAL@67..68
53 INT_NUMBER@[67; 68) "2" 53 INT_NUMBER@67..68 "2"
54 WHITESPACE@[68; 69) " " 54 WHITESPACE@68..69 " "
55 PLUS@[69; 70) "+" 55 PLUS@69..70 "+"
56 WHITESPACE@[70; 71) " " 56 WHITESPACE@70..71 " "
57 LITERAL@[71; 72) 57 LITERAL@71..72
58 INT_NUMBER@[71; 72) "3" 58 INT_NUMBER@71..72 "3"
59 WHITESPACE@[72; 77) "\n " 59 WHITESPACE@72..77 "\n "
60 R_CURLY@[77; 78) "}" 60 R_CURLY@77..78 "}"
61 WHITESPACE@[78; 79) "\n" 61 WHITESPACE@78..79 "\n"
62 R_CURLY@[79; 80) "}" 62 R_CURLY@79..80 "}"
63 WHITESPACE@[80; 82) "\n\n" 63 WHITESPACE@80..82 "\n\n"
64 FN_DEF@[82; 94) 64 FN_DEF@82..94
65 FN_KW@[82; 84) "fn" 65 FN_KW@82..84 "fn"
66 WHITESPACE@[84; 85) " " 66 WHITESPACE@84..85 " "
67 NAME@[85; 88) 67 NAME@85..88
68 IDENT@[85; 88) "baz" 68 IDENT@85..88 "baz"
69 PARAM_LIST@[88; 90) 69 PARAM_LIST@88..90
70 L_PAREN@[88; 89) "(" 70 L_PAREN@88..89 "("
71 R_PAREN@[89; 90) ")" 71 R_PAREN@89..90 ")"
72 WHITESPACE@[90; 91) " " 72 WHITESPACE@90..91 " "
73 BLOCK_EXPR@[91; 94) 73 BLOCK_EXPR@91..94
74 BLOCK@[91; 94) 74 BLOCK@91..94
75 L_CURLY@[91; 92) "{" 75 L_CURLY@91..92 "{"
76 WHITESPACE@[92; 93) "\n" 76 WHITESPACE@92..93 "\n"
77 R_CURLY@[93; 94) "}" 77 R_CURLY@93..94 "}"
78 WHITESPACE@[94; 95) "\n" 78 WHITESPACE@94..95 "\n"
79error [17; 17): expected BANG 79error 17..17: expected BANG
80error [19; 19): expected SEMICOLON 80error 19..19: expected SEMICOLON
81error [20; 20): expected an item 81error 20..20: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast b/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast
index 7ed80477d..aca02ece4 100644
--- a/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast
+++ b/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast
@@ -1,58 +1,58 @@
1SOURCE_FILE@[0; 43) 1SOURCE_FILE@0..43
2 STRUCT_DEF@[0; 11) 2 STRUCT_DEF@0..11
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@8..11
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 ERROR@[9; 11) 9 ERROR@9..11
10 INT_NUMBER@[9; 11) "90" 10 INT_NUMBER@9..11 "90"
11 WHITESPACE@[11; 12) " " 11 WHITESPACE@11..12 " "
12 ERROR@[12; 13) 12 ERROR@12..13
13 PLUS@[12; 13) "+" 13 PLUS@12..13 "+"
14 WHITESPACE@[13; 14) " " 14 WHITESPACE@13..14 " "
15 ERROR@[14; 15) 15 ERROR@14..15
16 INT_NUMBER@[14; 15) "2" 16 INT_NUMBER@14..15 "2"
17 ERROR@[15; 16) 17 ERROR@15..16
18 R_ANGLE@[15; 16) ">" 18 R_ANGLE@15..16 ">"
19 WHITESPACE@[16; 17) " " 19 WHITESPACE@16..17 " "
20 ERROR@[17; 31) 20 ERROR@17..31
21 L_CURLY@[17; 18) "{" 21 L_CURLY@17..18 "{"
22 WHITESPACE@[18; 23) "\n " 22 WHITESPACE@18..23 "\n "
23 EXPR_STMT@[23; 24) 23 EXPR_STMT@23..24
24 PATH_EXPR@[23; 24) 24 PATH_EXPR@23..24
25 PATH@[23; 24) 25 PATH@23..24
26 PATH_SEGMENT@[23; 24) 26 PATH_SEGMENT@23..24
27 NAME_REF@[23; 24) 27 NAME_REF@23..24
28 IDENT@[23; 24) "f" 28 IDENT@23..24 "f"
29 EXPR_STMT@[24; 25) 29 EXPR_STMT@24..25
30 ERROR@[24; 25) 30 ERROR@24..25
31 COLON@[24; 25) ":" 31 COLON@24..25 ":"
32 WHITESPACE@[25; 26) " " 32 WHITESPACE@25..26 " "
33 PATH_EXPR@[26; 29) 33 PATH_EXPR@26..29
34 PATH@[26; 29) 34 PATH@26..29
35 PATH_SEGMENT@[26; 29) 35 PATH_SEGMENT@26..29
36 NAME_REF@[26; 29) 36 NAME_REF@26..29
37 IDENT@[26; 29) "u32" 37 IDENT@26..29 "u32"
38 WHITESPACE@[29; 30) "\n" 38 WHITESPACE@29..30 "\n"
39 R_CURLY@[30; 31) "}" 39 R_CURLY@30..31 "}"
40 WHITESPACE@[31; 33) "\n\n" 40 WHITESPACE@31..33 "\n\n"
41 STRUCT_DEF@[33; 42) 41 STRUCT_DEF@33..42
42 STRUCT_KW@[33; 39) "struct" 42 STRUCT_KW@33..39 "struct"
43 WHITESPACE@[39; 40) " " 43 WHITESPACE@39..40 " "
44 NAME@[40; 41) 44 NAME@40..41
45 IDENT@[40; 41) "T" 45 IDENT@40..41 "T"
46 SEMICOLON@[41; 42) ";" 46 SEMICOLON@41..42 ";"
47 WHITESPACE@[42; 43) "\n" 47 WHITESPACE@42..43 "\n"
48error [9; 9): expected type parameter 48error 9..9: expected type parameter
49error [11; 11): expected COMMA 49error 11..11: expected COMMA
50error [11; 11): expected R_ANGLE 50error 11..11: expected R_ANGLE
51error [11; 11): expected `;`, `{`, or `(` 51error 11..11: expected `;`, `{`, or `(`
52error [12; 12): expected an item 52error 12..12: expected an item
53error [14; 14): expected an item 53error 14..14: expected an item
54error [15; 15): expected an item 54error 15..15: expected an item
55error [17; 17): expected an item 55error 17..17: expected an item
56error [24; 24): expected SEMICOLON 56error 24..24: expected SEMICOLON
57error [24; 24): expected expression 57error 24..24: expected expression
58error [25; 25): expected SEMICOLON 58error 25..25: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rast b/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rast
index 5559c3297..e10bb8174 100644
--- a/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rast
+++ b/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rast
@@ -1,45 +1,45 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@0..42
2 FN_DEF@[0; 41) 2 FN_DEF@0..41
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 41) 11 BLOCK_EXPR@10..41
12 BLOCK@[10; 41) 12 BLOCK@10..41
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 24) 15 EXPR_STMT@16..24
16 LAMBDA_EXPR@[16; 24) 16 LAMBDA_EXPR@16..24
17 PARAM_LIST@[16; 18) 17 PARAM_LIST@16..18
18 PIPE@[16; 17) "|" 18 PIPE@16..17 "|"
19 PIPE@[17; 18) "|" 19 PIPE@17..18 "|"
20 WHITESPACE@[18; 19) " " 20 WHITESPACE@18..19 " "
21 RET_TYPE@[19; 24) 21 RET_TYPE@19..24
22 THIN_ARROW@[19; 21) "->" 22 THIN_ARROW@19..21 "->"
23 WHITESPACE@[21; 22) " " 23 WHITESPACE@21..22 " "
24 TUPLE_TYPE@[22; 24) 24 TUPLE_TYPE@22..24
25 L_PAREN@[22; 23) "(" 25 L_PAREN@22..23 "("
26 R_PAREN@[23; 24) ")" 26 R_PAREN@23..24 ")"
27 WHITESPACE@[24; 25) " " 27 WHITESPACE@24..25 " "
28 EXPR_STMT@[25; 39) 28 EXPR_STMT@25..39
29 BLOCK_EXPR@[25; 38) 29 BLOCK_EXPR@25..38
30 UNSAFE_KW@[25; 31) "unsafe" 30 UNSAFE_KW@25..31 "unsafe"
31 WHITESPACE@[31; 32) " " 31 WHITESPACE@31..32 " "
32 BLOCK@[32; 38) 32 BLOCK@32..38
33 L_CURLY@[32; 33) "{" 33 L_CURLY@32..33 "{"
34 WHITESPACE@[33; 34) " " 34 WHITESPACE@33..34 " "
35 TUPLE_EXPR@[34; 36) 35 TUPLE_EXPR@34..36
36 L_PAREN@[34; 35) "(" 36 L_PAREN@34..35 "("
37 R_PAREN@[35; 36) ")" 37 R_PAREN@35..36 ")"
38 WHITESPACE@[36; 37) " " 38 WHITESPACE@36..37 " "
39 R_CURLY@[37; 38) "}" 39 R_CURLY@37..38 "}"
40 SEMICOLON@[38; 39) ";" 40 SEMICOLON@38..39 ";"
41 WHITESPACE@[39; 40) "\n" 41 WHITESPACE@39..40 "\n"
42 R_CURLY@[40; 41) "}" 42 R_CURLY@40..41 "}"
43 WHITESPACE@[41; 42) "\n" 43 WHITESPACE@41..42 "\n"
44error [24; 24): expected `{` 44error 24..24: expected `{`
45error [24; 24): expected SEMICOLON 45error 24..24: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0011_extern_struct.rast b/crates/ra_syntax/test_data/parser/err/0011_extern_struct.rast
index 99c212fd6..87c54c32c 100644
--- a/crates/ra_syntax/test_data/parser/err/0011_extern_struct.rast
+++ b/crates/ra_syntax/test_data/parser/err/0011_extern_struct.rast
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 ERROR@[0; 6) 2 ERROR@0..6
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 STRUCT_DEF@[7; 18) 6 STRUCT_DEF@7..18
7 STRUCT_KW@[7; 13) "struct" 7 STRUCT_KW@7..13 "struct"
8 WHITESPACE@[13; 14) " " 8 WHITESPACE@13..14 " "
9 NAME@[14; 17) 9 NAME@14..17
10 IDENT@[14; 17) "Foo" 10 IDENT@14..17 "Foo"
11 SEMICOLON@[17; 18) ";" 11 SEMICOLON@17..18 ";"
12 WHITESPACE@[18; 19) "\n" 12 WHITESPACE@18..19 "\n"
13error [6; 6): expected existential, fn, trait or impl 13error 6..6: expected existential, fn, trait or impl
diff --git a/crates/ra_syntax/test_data/parser/err/0012_broken_lambda.rast b/crates/ra_syntax/test_data/parser/err/0012_broken_lambda.rast
index 0a3c0313d..e1e782f5f 100644
--- a/crates/ra_syntax/test_data/parser/err/0012_broken_lambda.rast
+++ b/crates/ra_syntax/test_data/parser/err/0012_broken_lambda.rast
@@ -1,387 +1,387 @@
1SOURCE_FILE@[0; 389) 1SOURCE_FILE@0..389
2 FN_DEF@[0; 389) 2 FN_DEF@0..389
3 VISIBILITY@[0; 10) 3 VISIBILITY@0..10
4 PUB_KW@[0; 3) 4 PUB_KW@0..3
5 L_PAREN@[3; 4) 5 L_PAREN@3..4
6 SUPER_KW@[4; 9) 6 SUPER_KW@4..9
7 R_PAREN@[9; 10) 7 R_PAREN@9..10
8 WHITESPACE@[10; 11) 8 WHITESPACE@10..11
9 FN_KW@[11; 13) 9 FN_KW@11..13
10 WHITESPACE@[13; 14) 10 WHITESPACE@13..14
11 NAME@[14; 21) 11 NAME@14..21
12 IDENT@[14; 21) "process" 12 IDENT@14..21 "process"
13 TYPE_PARAM_LIST@[21; 38) 13 TYPE_PARAM_LIST@21..38
14 L_ANGLE@[21; 22) 14 L_ANGLE@21..22
15 LIFETIME_PARAM@[22; 24) 15 LIFETIME_PARAM@22..24
16 LIFETIME@[22; 24) "'a" 16 LIFETIME@22..24 "'a"
17 COMMA@[24; 25) 17 COMMA@24..25
18 WHITESPACE@[25; 26) 18 WHITESPACE@25..26
19 TYPE_PARAM@[26; 37) 19 TYPE_PARAM@26..37
20 NAME@[26; 27) 20 NAME@26..27
21 IDENT@[26; 27) "S" 21 IDENT@26..27 "S"
22 COLON@[27; 28) 22 COLON@27..28
23 WHITESPACE@[28; 29) 23 WHITESPACE@28..29
24 PATH@[29; 37) 24 PATH@29..37
25 PATH_SEGMENT@[29; 37) 25 PATH_SEGMENT@29..37
26 NAME_REF@[29; 33) 26 NAME_REF@29..33
27 IDENT@[29; 33) "Sink" 27 IDENT@29..33 "Sink"
28 TYPE_ARG_LIST@[33; 37) 28 TYPE_ARG_LIST@33..37
29 L_ANGLE@[33; 34) 29 L_ANGLE@33..34
30 LIFETIME_ARG@[34; 36) 30 LIFETIME_ARG@34..36
31 LIFETIME@[34; 36) "'a" 31 LIFETIME@34..36 "'a"
32 R_ANGLE@[36; 37) 32 R_ANGLE@36..37
33 R_ANGLE@[37; 38) 33 R_ANGLE@37..38
34 PARAM_LIST@[38; 93) 34 PARAM_LIST@38..93
35 L_PAREN@[38; 39) 35 L_PAREN@38..39
36 PARAM@[39; 54) 36 PARAM@39..54
37 BIND_PAT@[39; 46) 37 BIND_PAT@39..46
38 NAME@[39; 46) 38 NAME@39..46
39 IDENT@[39; 46) "builder" 39 IDENT@39..46 "builder"
40 COLON@[46; 47) 40 COLON@46..47
41 WHITESPACE@[47; 48) 41 WHITESPACE@47..48
42 REFERENCE_TYPE@[48; 54) 42 REFERENCE_TYPE@48..54
43 AMP@[48; 49) 43 AMP@48..49
44 MUT_KW@[49; 52) 44 MUT_KW@49..52
45 WHITESPACE@[52; 53) 45 WHITESPACE@52..53
46 PATH_TYPE@[53; 54) 46 PATH_TYPE@53..54
47 PATH@[53; 54) 47 PATH@53..54
48 PATH_SEGMENT@[53; 54) 48 PATH_SEGMENT@53..54
49 NAME_REF@[53; 54) 49 NAME_REF@53..54
50 IDENT@[53; 54) "S" 50 IDENT@53..54 "S"
51 COMMA@[54; 55) 51 COMMA@54..55
52 WHITESPACE@[55; 56) 52 WHITESPACE@55..56
53 PARAM@[56; 72) 53 PARAM@56..72
54 BIND_PAT@[56; 62) 54 BIND_PAT@56..62
55 NAME@[56; 62) 55 NAME@56..62
56 IDENT@[56; 62) "tokens" 56 IDENT@56..62 "tokens"
57 COLON@[62; 63) 57 COLON@62..63
58 WHITESPACE@[63; 64) 58 WHITESPACE@63..64
59 REFERENCE_TYPE@[64; 72) 59 REFERENCE_TYPE@64..72
60 AMP@[64; 65) 60 AMP@64..65
61 SLICE_TYPE@[65; 72) 61 SLICE_TYPE@65..72
62 L_BRACK@[65; 66) 62 L_BRACK@65..66
63 PATH_TYPE@[66; 71) 63 PATH_TYPE@66..71
64 PATH@[66; 71) 64 PATH@66..71
65 PATH_SEGMENT@[66; 71) 65 PATH_SEGMENT@66..71
66 NAME_REF@[66; 71) 66 NAME_REF@66..71
67 IDENT@[66; 71) "Token" 67 IDENT@66..71 "Token"
68 R_BRACK@[71; 72) 68 R_BRACK@71..72
69 COMMA@[72; 73) 69 COMMA@72..73
70 WHITESPACE@[73; 74) 70 WHITESPACE@73..74
71 PARAM@[74; 92) 71 PARAM@74..92
72 BIND_PAT@[74; 80) 72 BIND_PAT@74..80
73 NAME@[74; 80) 73 NAME@74..80
74 IDENT@[74; 80) "events" 74 IDENT@74..80 "events"
75 COLON@[80; 81) 75 COLON@80..81
76 WHITESPACE@[81; 82) 76 WHITESPACE@81..82
77 PATH_TYPE@[82; 92) 77 PATH_TYPE@82..92
78 PATH@[82; 92) 78 PATH@82..92
79 PATH_SEGMENT@[82; 92) 79 PATH_SEGMENT@82..92
80 NAME_REF@[82; 85) 80 NAME_REF@82..85
81 IDENT@[82; 85) "Vec" 81 IDENT@82..85 "Vec"
82 TYPE_ARG_LIST@[85; 92) 82 TYPE_ARG_LIST@85..92
83 L_ANGLE@[85; 86) 83 L_ANGLE@85..86
84 TYPE_ARG@[86; 91) 84 TYPE_ARG@86..91
85 PATH_TYPE@[86; 91) 85 PATH_TYPE@86..91
86 PATH@[86; 91) 86 PATH@86..91
87 PATH_SEGMENT@[86; 91) 87 PATH_SEGMENT@86..91
88 NAME_REF@[86; 91) 88 NAME_REF@86..91
89 IDENT@[86; 91) "Event" 89 IDENT@86..91 "Event"
90 R_ANGLE@[91; 92) 90 R_ANGLE@91..92
91 R_PAREN@[92; 93) 91 R_PAREN@92..93
92 WHITESPACE@[93; 94) 92 WHITESPACE@93..94
93 BLOCK_EXPR@[94; 389) 93 BLOCK_EXPR@94..389
94 L_CURLY@[94; 95) 94 L_CURLY@94..95
95 WHITESPACE@[95; 100) 95 WHITESPACE@95..100
96 LET_STMT@[100; 125) 96 LET_STMT@100..125
97 LET_KW@[100; 103) 97 LET_KW@100..103
98 WHITESPACE@[103; 104) 98 WHITESPACE@103..104
99 BIND_PAT@[104; 120) 99 BIND_PAT@104..120
100 MUT_KW@[104; 107) 100 MUT_KW@104..107
101 WHITESPACE@[107; 108) 101 WHITESPACE@107..108
102 NAME@[108; 120) 102 NAME@108..120
103 IDENT@[108; 120) "next_tok_idx" 103 IDENT@108..120 "next_tok_idx"
104 WHITESPACE@[120; 121) 104 WHITESPACE@120..121
105 EQ@[121; 122) 105 EQ@121..122
106 WHITESPACE@[122; 123) 106 WHITESPACE@122..123
107 LITERAL@[123; 124) 107 LITERAL@123..124
108 INT_NUMBER@[123; 124) "0" 108 INT_NUMBER@123..124 "0"
109 SEMICOLON@[124; 125) 109 SEMICOLON@124..125
110 WHITESPACE@[125; 130) 110 WHITESPACE@125..130
111 LET_STMT@[130; 389) 111 LET_STMT@130..389
112 LET_KW@[130; 133) 112 LET_KW@130..133
113 WHITESPACE@[133; 134) 113 WHITESPACE@133..134
114 BIND_PAT@[134; 140) 114 BIND_PAT@134..140
115 NAME@[134; 140) 115 NAME@134..140
116 IDENT@[134; 140) "eat_ws" 116 IDENT@134..140 "eat_ws"
117 WHITESPACE@[140; 141) 117 WHITESPACE@140..141
118 EQ@[141; 142) 118 EQ@141..142
119 WHITESPACE@[142; 143) 119 WHITESPACE@142..143
120 LAMBDA_EXPR@[143; 389) 120 LAMBDA_EXPR@143..389
121 PARAM_LIST@[143; 388) 121 PARAM_LIST@143..388
122 PIPE@[143; 144) 122 PIPE@143..144
123 PARAM@[144; 159) 123 PARAM@144..159
124 BIND_PAT@[144; 147) 124 BIND_PAT@144..147
125 NAME@[144; 147) 125 NAME@144..147
126 IDENT@[144; 147) "idx" 126 IDENT@144..147 "idx"
127 COLON@[147; 148) 127 COLON@147..148
128 WHITESPACE@[148; 149) 128 WHITESPACE@148..149
129 REFERENCE_TYPE@[149; 159) 129 REFERENCE_TYPE@149..159
130 AMP@[149; 150) 130 AMP@149..150
131 MUT_KW@[150; 153) 131 MUT_KW@150..153
132 WHITESPACE@[153; 154) 132 WHITESPACE@153..154
133 PATH_TYPE@[154; 159) 133 PATH_TYPE@154..159
134 PATH@[154; 159) 134 PATH@154..159
135 PATH_SEGMENT@[154; 159) 135 PATH_SEGMENT@154..159
136 NAME_REF@[154; 159) 136 NAME_REF@154..159
137 IDENT@[154; 159) "usize" 137 IDENT@154..159 "usize"
138 COMMA@[159; 160) 138 COMMA@159..160
139 WHITESPACE@[160; 161) 139 WHITESPACE@160..161
140 PARAM@[161; 167) 140 PARAM@161..167
141 REF_PAT@[161; 167) 141 REF_PAT@161..167
142 AMP@[161; 162) 142 AMP@161..162
143 MUT_KW@[162; 165) 143 MUT_KW@162..165
144 WHITESPACE@[165; 166) 144 WHITESPACE@165..166
145 err: `expected pattern` 145 err: `expected pattern`
146 ERROR@[166; 167) 146 ERROR@166..167
147 PIPE@[166; 167) 147 PIPE@166..167
148 err: `expected COMMA` 148 err: `expected COMMA`
149 WHITESPACE@[167; 168) 149 WHITESPACE@167..168
150 err: `expected pattern` 150 err: `expected pattern`
151 PARAM@[168; 169) 151 PARAM@168..169
152 ERROR@[168; 169) 152 ERROR@168..169
153 L_CURLY@[168; 169) 153 L_CURLY@168..169
154 err: `expected COMMA` 154 err: `expected COMMA`
155 WHITESPACE@[169; 178) 155 WHITESPACE@169..178
156 err: `expected pattern` 156 err: `expected pattern`
157 PARAM@[178; 183) 157 PARAM@178..183
158 ERROR@[178; 183) 158 ERROR@178..183
159 WHILE_KW@[178; 183) 159 WHILE_KW@178..183
160 err: `expected COMMA` 160 err: `expected COMMA`
161 WHITESPACE@[183; 184) 161 WHITESPACE@183..184
162 err: `expected pattern` 162 err: `expected pattern`
163 PARAM@[184; 187) 163 PARAM@184..187
164 ERROR@[184; 187) 164 ERROR@184..187
165 LET_KW@[184; 187) 165 LET_KW@184..187
166 err: `expected COMMA` 166 err: `expected COMMA`
167 WHITESPACE@[187; 188) 167 WHITESPACE@187..188
168 PARAM@[188; 199) 168 PARAM@188..199
169 TUPLE_STRUCT_PAT@[188; 199) 169 TUPLE_STRUCT_PAT@188..199
170 PATH@[188; 192) 170 PATH@188..192
171 PATH_SEGMENT@[188; 192) 171 PATH_SEGMENT@188..192
172 NAME_REF@[188; 192) 172 NAME_REF@188..192
173 IDENT@[188; 192) "Some" 173 IDENT@188..192 "Some"
174 L_PAREN@[192; 193) 174 L_PAREN@192..193
175 BIND_PAT@[193; 198) 175 BIND_PAT@193..198
176 NAME@[193; 198) 176 NAME@193..198
177 IDENT@[193; 198) "token" 177 IDENT@193..198 "token"
178 R_PAREN@[198; 199) 178 R_PAREN@198..199
179 err: `expected COMMA` 179 err: `expected COMMA`
180 WHITESPACE@[199; 200) 180 WHITESPACE@199..200
181 err: `expected pattern` 181 err: `expected pattern`
182 PARAM@[200; 201) 182 PARAM@200..201
183 ERROR@[200; 201) 183 ERROR@200..201
184 EQ@[200; 201) 184 EQ@200..201
185 err: `expected COMMA` 185 err: `expected COMMA`
186 WHITESPACE@[201; 202) 186 WHITESPACE@201..202
187 PARAM@[202; 208) 187 PARAM@202..208
188 BIND_PAT@[202; 208) 188 BIND_PAT@202..208
189 NAME@[202; 208) 189 NAME@202..208
190 IDENT@[202; 208) "tokens" 190 IDENT@202..208 "tokens"
191 err: `expected COMMA` 191 err: `expected COMMA`
192 err: `expected pattern` 192 err: `expected pattern`
193 PARAM@[208; 209) 193 PARAM@208..209
194 ERROR@[208; 209) 194 ERROR@208..209
195 DOT@[208; 209) 195 DOT@208..209
196 err: `expected COMMA` 196 err: `expected COMMA`
197 PARAM@[209; 218) 197 PARAM@209..218
198 TUPLE_STRUCT_PAT@[209; 218) 198 TUPLE_STRUCT_PAT@209..218
199 PATH@[209; 212) 199 PATH@209..212
200 PATH_SEGMENT@[209; 212) 200 PATH_SEGMENT@209..212
201 NAME_REF@[209; 212) 201 NAME_REF@209..212
202 IDENT@[209; 212) "get" 202 IDENT@209..212 "get"
203 L_PAREN@[212; 213) 203 L_PAREN@212..213
204 err: `expected pattern` 204 err: `expected pattern`
205 ERROR@[213; 214) 205 ERROR@213..214
206 STAR@[213; 214) 206 STAR@213..214
207 err: `expected COMMA` 207 err: `expected COMMA`
208 BIND_PAT@[214; 217) 208 BIND_PAT@214..217
209 NAME@[214; 217) 209 NAME@214..217
210 IDENT@[214; 217) "idx" 210 IDENT@214..217 "idx"
211 R_PAREN@[217; 218) 211 R_PAREN@217..218
212 err: `expected COMMA` 212 err: `expected COMMA`
213 WHITESPACE@[218; 219) 213 WHITESPACE@218..219
214 err: `expected pattern` 214 err: `expected pattern`
215 PARAM@[219; 220) 215 PARAM@219..220
216 ERROR@[219; 220) 216 ERROR@219..220
217 L_CURLY@[219; 220) 217 L_CURLY@219..220
218 err: `expected COMMA` 218 err: `expected COMMA`
219 WHITESPACE@[220; 233) 219 WHITESPACE@220..233
220 err: `expected pattern` 220 err: `expected pattern`
221 PARAM@[233; 235) 221 PARAM@233..235
222 ERROR@[233; 235) 222 ERROR@233..235
223 IF_KW@[233; 235) 223 IF_KW@233..235
224 err: `expected COMMA` 224 err: `expected COMMA`
225 WHITESPACE@[235; 236) 225 WHITESPACE@235..236
226 err: `expected pattern` 226 err: `expected pattern`
227 PARAM@[236; 237) 227 PARAM@236..237
228 ERROR@[236; 237) 228 ERROR@236..237
229 BANG@[236; 237) 229 BANG@236..237
230 err: `expected COMMA` 230 err: `expected COMMA`
231 PARAM@[237; 242) 231 PARAM@237..242
232 BIND_PAT@[237; 242) 232 BIND_PAT@237..242
233 NAME@[237; 242) 233 NAME@237..242
234 IDENT@[237; 242) "token" 234 IDENT@237..242 "token"
235 err: `expected COMMA` 235 err: `expected COMMA`
236 err: `expected pattern` 236 err: `expected pattern`
237 PARAM@[242; 243) 237 PARAM@242..243
238 ERROR@[242; 243) 238 ERROR@242..243
239 DOT@[242; 243) 239 DOT@242..243
240 err: `expected COMMA` 240 err: `expected COMMA`
241 PARAM@[243; 247) 241 PARAM@243..247
242 BIND_PAT@[243; 247) 242 BIND_PAT@243..247
243 NAME@[243; 247) 243 NAME@243..247
244 IDENT@[243; 247) "kind" 244 IDENT@243..247 "kind"
245 err: `expected COMMA` 245 err: `expected COMMA`
246 err: `expected pattern` 246 err: `expected pattern`
247 PARAM@[247; 248) 247 PARAM@247..248
248 ERROR@[247; 248) 248 ERROR@247..248
249 DOT@[247; 248) 249 DOT@247..248
250 err: `expected COMMA` 250 err: `expected COMMA`
251 PARAM@[248; 259) 251 PARAM@248..259
252 TUPLE_STRUCT_PAT@[248; 259) 252 TUPLE_STRUCT_PAT@248..259
253 PATH@[248; 257) 253 PATH@248..257
254 PATH_SEGMENT@[248; 257) 254 PATH_SEGMENT@248..257
255 NAME_REF@[248; 257) 255 NAME_REF@248..257
256 IDENT@[248; 257) "is_trivia" 256 IDENT@248..257 "is_trivia"
257 L_PAREN@[257; 258) 257 L_PAREN@257..258
258 R_PAREN@[258; 259) 258 R_PAREN@258..259
259 err: `expected COMMA` 259 err: `expected COMMA`
260 WHITESPACE@[259; 260) 260 WHITESPACE@259..260
261 err: `expected pattern` 261 err: `expected pattern`
262 PARAM@[260; 261) 262 PARAM@260..261
263 ERROR@[260; 261) 263 ERROR@260..261
264 L_CURLY@[260; 261) 264 L_CURLY@260..261
265 err: `expected COMMA` 265 err: `expected COMMA`
266 WHITESPACE@[261; 278) 266 WHITESPACE@261..278
267 PARAM@[278; 283) 267 PARAM@278..283
268 BIND_PAT@[278; 283) 268 BIND_PAT@278..283
269 NAME@[278; 283) 269 NAME@278..283
270 IDENT@[278; 283) "break" 270 IDENT@278..283 "break"
271 err: `expected COMMA` 271 err: `expected COMMA`
272 err: `expected pattern` 272 err: `expected pattern`
273 PARAM@[283; 284) 273 PARAM@283..284
274 ERROR@[283; 284) 274 ERROR@283..284
275 SEMICOLON@[283; 284) 275 SEMICOLON@283..284
276 err: `expected COMMA` 276 err: `expected COMMA`
277 WHITESPACE@[284; 297) 277 WHITESPACE@284..297
278 err: `expected pattern` 278 err: `expected pattern`
279 PARAM@[297; 298) 279 PARAM@297..298
280 ERROR@[297; 298) 280 ERROR@297..298
281 R_CURLY@[297; 298) 281 R_CURLY@297..298
282 err: `expected COMMA` 282 err: `expected COMMA`
283 WHITESPACE@[298; 311) 283 WHITESPACE@298..311
284 PARAM@[311; 318) 284 PARAM@311..318
285 BIND_PAT@[311; 318) 285 BIND_PAT@311..318
286 NAME@[311; 318) 286 NAME@311..318
287 IDENT@[311; 318) "builder" 287 IDENT@311..318 "builder"
288 err: `expected COMMA` 288 err: `expected COMMA`
289 err: `expected pattern` 289 err: `expected pattern`
290 PARAM@[318; 319) 290 PARAM@318..319
291 ERROR@[318; 319) 291 ERROR@318..319
292 DOT@[318; 319) 292 DOT@318..319
293 err: `expected COMMA` 293 err: `expected COMMA`
294 PARAM@[319; 346) 294 PARAM@319..346
295 TUPLE_STRUCT_PAT@[319; 346) 295 TUPLE_STRUCT_PAT@319..346
296 PATH@[319; 323) 296 PATH@319..323
297 PATH_SEGMENT@[319; 323) 297 PATH_SEGMENT@319..323
298 NAME_REF@[319; 323) 298 NAME_REF@319..323
299 IDENT@[319; 323) "leaf" 299 IDENT@319..323 "leaf"
300 L_PAREN@[323; 324) 300 L_PAREN@323..324
301 BIND_PAT@[324; 329) 301 BIND_PAT@324..329
302 NAME@[324; 329) 302 NAME@324..329
303 IDENT@[324; 329) "token" 303 IDENT@324..329 "token"
304 err: `expected COMMA` 304 err: `expected COMMA`
305 err: `expected pattern` 305 err: `expected pattern`
306 ERROR@[329; 330) 306 ERROR@329..330
307 DOT@[329; 330) 307 DOT@329..330
308 err: `expected COMMA` 308 err: `expected COMMA`
309 BIND_PAT@[330; 334) 309 BIND_PAT@330..334
310 NAME@[330; 334) 310 NAME@330..334
311 IDENT@[330; 334) "kind" 311 IDENT@330..334 "kind"
312 COMMA@[334; 335) 312 COMMA@334..335
313 WHITESPACE@[335; 336) 313 WHITESPACE@335..336
314 BIND_PAT@[336; 341) 314 BIND_PAT@336..341
315 NAME@[336; 341) 315 NAME@336..341
316 IDENT@[336; 341) "token" 316 IDENT@336..341 "token"
317 err: `expected COMMA` 317 err: `expected COMMA`
318 err: `expected pattern` 318 err: `expected pattern`
319 ERROR@[341; 342) 319 ERROR@341..342
320 DOT@[341; 342) 320 DOT@341..342
321 err: `expected COMMA` 321 err: `expected COMMA`
322 BIND_PAT@[342; 345) 322 BIND_PAT@342..345
323 NAME@[342; 345) 323 NAME@342..345
324 IDENT@[342; 345) "len" 324 IDENT@342..345 "len"
325 R_PAREN@[345; 346) 325 R_PAREN@345..346
326 err: `expected COMMA` 326 err: `expected COMMA`
327 err: `expected pattern` 327 err: `expected pattern`
328 PARAM@[346; 347) 328 PARAM@346..347
329 ERROR@[346; 347) 329 ERROR@346..347
330 SEMICOLON@[346; 347) 330 SEMICOLON@346..347
331 err: `expected COMMA` 331 err: `expected COMMA`
332 WHITESPACE@[347; 360) 332 WHITESPACE@347..360
333 err: `expected pattern` 333 err: `expected pattern`
334 PARAM@[360; 361) 334 PARAM@360..361
335 ERROR@[360; 361) 335 ERROR@360..361
336 STAR@[360; 361) 336 STAR@360..361
337 err: `expected COMMA` 337 err: `expected COMMA`
338 PARAM@[361; 364) 338 PARAM@361..364
339 BIND_PAT@[361; 364) 339 BIND_PAT@361..364
340 NAME@[361; 364) 340 NAME@361..364
341 IDENT@[361; 364) "idx" 341 IDENT@361..364 "idx"
342 err: `expected COMMA` 342 err: `expected COMMA`
343 WHITESPACE@[364; 365) 343 WHITESPACE@364..365
344 err: `expected pattern` 344 err: `expected pattern`
345 PARAM@[365; 366) 345 PARAM@365..366
346 ERROR@[365; 366) 346 ERROR@365..366
347 PLUS@[365; 366) 347 PLUS@365..366
348 err: `expected COMMA` 348 err: `expected COMMA`
349 err: `expected pattern` 349 err: `expected pattern`
350 PARAM@[366; 367) 350 PARAM@366..367
351 ERROR@[366; 367) 351 ERROR@366..367
352 EQ@[366; 367) 352 EQ@366..367
353 err: `expected COMMA` 353 err: `expected COMMA`
354 WHITESPACE@[367; 368) 354 WHITESPACE@367..368
355 PARAM@[368; 369) 355 PARAM@368..369
356 LITERAL@[368; 369) 356 LITERAL@368..369
357 INT_NUMBER@[368; 369) "1" 357 INT_NUMBER@368..369 "1"
358 err: `expected COMMA` 358 err: `expected COMMA`
359 WHITESPACE@[369; 378) 359 WHITESPACE@369..378
360 err: `expected pattern` 360 err: `expected pattern`
361 PARAM@[378; 379) 361 PARAM@378..379
362 ERROR@[378; 379) 362 ERROR@378..379
363 R_CURLY@[378; 379) 363 R_CURLY@378..379
364 err: `expected COMMA` 364 err: `expected COMMA`
365 WHITESPACE@[379; 384) 365 WHITESPACE@379..384
366 err: `expected pattern` 366 err: `expected pattern`
367 PARAM@[384; 385) 367 PARAM@384..385
368 ERROR@[384; 385) 368 ERROR@384..385
369 R_CURLY@[384; 385) 369 R_CURLY@384..385
370 err: `expected COMMA` 370 err: `expected COMMA`
371 err: `expected pattern` 371 err: `expected pattern`
372 PARAM@[385; 386) 372 PARAM@385..386
373 ERROR@[385; 386) 373 ERROR@385..386
374 SEMICOLON@[385; 386) 374 SEMICOLON@385..386
375 err: `expected COMMA` 375 err: `expected COMMA`
376 WHITESPACE@[386; 387) 376 WHITESPACE@386..387
377 err: `expected pattern` 377 err: `expected pattern`
378 PARAM@[387; 388) 378 PARAM@387..388
379 ERROR@[387; 388) 379 ERROR@387..388
380 R_CURLY@[387; 388) 380 R_CURLY@387..388
381 err: `expected COMMA` 381 err: `expected COMMA`
382 err: `expected PIPE` 382 err: `expected PIPE`
383 WHITESPACE@[388; 389) 383 WHITESPACE@388..389
384 err: `expected expression` 384 err: `expected expression`
385 err: `expected SEMI` 385 err: `expected SEMI`
386 err: `expected R_CURLY` 386 err: `expected R_CURLY`
387 ERROR@[389; 389) 387 ERROR@389..389
diff --git a/crates/ra_syntax/test_data/parser/err/0013_invalid_type.rast b/crates/ra_syntax/test_data/parser/err/0013_invalid_type.rast
index cb570dc1c..211e5fd46 100644
--- a/crates/ra_syntax/test_data/parser/err/0013_invalid_type.rast
+++ b/crates/ra_syntax/test_data/parser/err/0013_invalid_type.rast
@@ -1,89 +1,89 @@
1SOURCE_FILE@[0; 86) 1SOURCE_FILE@0..86
2 STRUCT_DEF@[0; 72) 2 STRUCT_DEF@0..72
3 VISIBILITY@[0; 3) 3 VISIBILITY@0..3
4 PUB_KW@[0; 3) "pub" 4 PUB_KW@0..3 "pub"
5 WHITESPACE@[3; 4) " " 5 WHITESPACE@3..4 " "
6 STRUCT_KW@[4; 10) "struct" 6 STRUCT_KW@4..10 "struct"
7 WHITESPACE@[10; 11) " " 7 WHITESPACE@10..11 " "
8 NAME@[11; 16) 8 NAME@11..16
9 IDENT@[11; 16) "Cache" 9 IDENT@11..16 "Cache"
10 TUPLE_FIELD_DEF_LIST@[16; 72) 10 TUPLE_FIELD_DEF_LIST@16..72
11 L_PAREN@[16; 17) "(" 11 L_PAREN@16..17 "("
12 WHITESPACE@[17; 22) "\n " 12 WHITESPACE@17..22 "\n "
13 TUPLE_FIELD_DEF@[22; 68) 13 TUPLE_FIELD_DEF@22..68
14 PATH_TYPE@[22; 68) 14 PATH_TYPE@22..68
15 PATH@[22; 68) 15 PATH@22..68
16 PATH_SEGMENT@[22; 68) 16 PATH_SEGMENT@22..68
17 NAME_REF@[22; 29) 17 NAME_REF@22..29
18 IDENT@[22; 29) "RefCell" 18 IDENT@22..29 "RefCell"
19 TYPE_ARG_LIST@[29; 68) 19 TYPE_ARG_LIST@29..68
20 L_ANGLE@[29; 30) "<" 20 L_ANGLE@29..30 "<"
21 TYPE_ARG@[30; 68) 21 TYPE_ARG@30..68
22 PATH_TYPE@[30; 68) 22 PATH_TYPE@30..68
23 PATH@[30; 68) 23 PATH@30..68
24 PATH_SEGMENT@[30; 68) 24 PATH_SEGMENT@30..68
25 NAME_REF@[30; 37) 25 NAME_REF@30..37
26 IDENT@[30; 37) "HashMap" 26 IDENT@30..37 "HashMap"
27 TYPE_ARG_LIST@[37; 68) 27 TYPE_ARG_LIST@37..68
28 L_ANGLE@[37; 38) "<" 28 L_ANGLE@37..38 "<"
29 WHITESPACE@[38; 47) "\n " 29 WHITESPACE@38..47 "\n "
30 TYPE_ARG@[47; 53) 30 TYPE_ARG@47..53
31 PATH_TYPE@[47; 53) 31 PATH_TYPE@47..53
32 PATH@[47; 53) 32 PATH@47..53
33 PATH_SEGMENT@[47; 53) 33 PATH_SEGMENT@47..53
34 NAME_REF@[47; 53) 34 NAME_REF@47..53
35 IDENT@[47; 53) "TypeId" 35 IDENT@47..53 "TypeId"
36 COMMA@[53; 54) "," 36 COMMA@53..54 ","
37 WHITESPACE@[54; 63) "\n " 37 WHITESPACE@54..63 "\n "
38 TYPE_ARG@[63; 68) 38 TYPE_ARG@63..68
39 PATH_TYPE@[63; 68) 39 PATH_TYPE@63..68
40 PATH@[63; 68) 40 PATH@63..68
41 PATH_SEGMENT@[63; 68) 41 PATH_SEGMENT@63..68
42 NAME_REF@[63; 66) 42 NAME_REF@63..66
43 IDENT@[63; 66) "Box" 43 IDENT@63..66 "Box"
44 TYPE_ARG_LIST@[66; 68) 44 TYPE_ARG_LIST@66..68
45 L_ANGLE@[66; 67) "<" 45 L_ANGLE@66..67 "<"
46 TYPE_ARG@[67; 68) 46 TYPE_ARG@67..68
47 ERROR@[67; 68) 47 ERROR@67..68
48 AT@[67; 68) "@" 48 AT@67..68 "@"
49 WHITESPACE@[68; 69) " " 49 WHITESPACE@68..69 " "
50 TUPLE_FIELD_DEF@[69; 72) 50 TUPLE_FIELD_DEF@69..72
51 PATH_TYPE@[69; 72) 51 PATH_TYPE@69..72
52 PATH@[69; 72) 52 PATH@69..72
53 PATH_SEGMENT@[69; 72) 53 PATH_SEGMENT@69..72
54 NAME_REF@[69; 72) 54 NAME_REF@69..72
55 IDENT@[69; 72) "Any" 55 IDENT@69..72 "Any"
56 ERROR@[72; 72) 56 ERROR@72..72
57 ERROR@[72; 73) 57 ERROR@72..73
58 R_ANGLE@[72; 73) ">" 58 R_ANGLE@72..73 ">"
59 ERROR@[73; 74) 59 ERROR@73..74
60 COMMA@[73; 74) "," 60 COMMA@73..74 ","
61 WHITESPACE@[74; 79) "\n " 61 WHITESPACE@74..79 "\n "
62 ERROR@[79; 80) 62 ERROR@79..80
63 R_ANGLE@[79; 80) ">" 63 R_ANGLE@79..80 ">"
64 ERROR@[80; 81) 64 ERROR@80..81
65 R_ANGLE@[80; 81) ">" 65 R_ANGLE@80..81 ">"
66 WHITESPACE@[81; 82) "\n" 66 WHITESPACE@81..82 "\n"
67 ERROR@[82; 83) 67 ERROR@82..83
68 R_PAREN@[82; 83) ")" 68 R_PAREN@82..83 ")"
69 ERROR@[83; 84) 69 ERROR@83..84
70 SEMICOLON@[83; 84) ";" 70 SEMICOLON@83..84 ";"
71 WHITESPACE@[84; 86) "\n\n" 71 WHITESPACE@84..86 "\n\n"
72error [67; 67): expected type 72error 67..67: expected type
73error [68; 68): expected COMMA 73error 68..68: expected COMMA
74error [68; 68): expected R_ANGLE 74error 68..68: expected R_ANGLE
75error [68; 68): expected COMMA 75error 68..68: expected COMMA
76error [68; 68): expected R_ANGLE 76error 68..68: expected R_ANGLE
77error [68; 68): expected COMMA 77error 68..68: expected COMMA
78error [68; 68): expected R_ANGLE 78error 68..68: expected R_ANGLE
79error [68; 68): expected COMMA 79error 68..68: expected COMMA
80error [72; 72): expected COMMA 80error 72..72: expected COMMA
81error [72; 72): expected a type 81error 72..72: expected a type
82error [72; 72): expected R_PAREN 82error 72..72: expected R_PAREN
83error [72; 72): expected SEMICOLON 83error 72..72: expected SEMICOLON
84error [72; 72): expected an item 84error 72..72: expected an item
85error [73; 73): expected an item 85error 73..73: expected an item
86error [79; 79): expected an item 86error 79..79: expected an item
87error [80; 80): expected an item 87error 80..80: expected an item
88error [82; 82): expected an item 88error 82..82: expected an item
89error [83; 83): expected an item 89error 83..83: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rast b/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rast
index a25d641b8..61c361833 100644
--- a/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rast
+++ b/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rast
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@0..23
2 FN_DEF@[0; 22) 2 FN_DEF@0..22
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 TYPE_PARAM_LIST@[6; 9) 7 TYPE_PARAM_LIST@6..9
8 L_ANGLE@[6; 7) "<" 8 L_ANGLE@6..7 "<"
9 TYPE_PARAM@[7; 8) 9 TYPE_PARAM@7..8
10 NAME@[7; 8) 10 NAME@7..8
11 IDENT@[7; 8) "T" 11 IDENT@7..8 "T"
12 R_ANGLE@[8; 9) ">" 12 R_ANGLE@8..9 ">"
13 PARAM_LIST@[9; 11) 13 PARAM_LIST@9..11
14 L_PAREN@[9; 10) "(" 14 L_PAREN@9..10 "("
15 R_PAREN@[10; 11) ")" 15 R_PAREN@10..11 ")"
16 WHITESPACE@[11; 12) " " 16 WHITESPACE@11..12 " "
17 WHERE_CLAUSE@[12; 19) 17 WHERE_CLAUSE@12..19
18 WHERE_KW@[12; 17) "where" 18 WHERE_KW@12..17 "where"
19 WHITESPACE@[17; 18) " " 19 WHITESPACE@17..18 " "
20 WHERE_PRED@[18; 19) 20 WHERE_PRED@18..19
21 PATH_TYPE@[18; 19) 21 PATH_TYPE@18..19
22 PATH@[18; 19) 22 PATH@18..19
23 PATH_SEGMENT@[18; 19) 23 PATH_SEGMENT@18..19
24 NAME_REF@[18; 19) 24 NAME_REF@18..19
25 IDENT@[18; 19) "T" 25 IDENT@18..19 "T"
26 WHITESPACE@[19; 20) " " 26 WHITESPACE@19..20 " "
27 BLOCK_EXPR@[20; 22) 27 BLOCK_EXPR@20..22
28 BLOCK@[20; 22) 28 BLOCK@20..22
29 L_CURLY@[20; 21) "{" 29 L_CURLY@20..21 "{"
30 R_CURLY@[21; 22) "}" 30 R_CURLY@21..22 "}"
31 WHITESPACE@[22; 23) "\n" 31 WHITESPACE@22..23 "\n"
32error [19; 19): expected colon 32error 19..19: expected colon
diff --git a/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rast b/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rast
index 36b848be3..b18378cff 100644
--- a/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rast
+++ b/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rast
@@ -1,24 +1,24 @@
1SOURCE_FILE@[0; 14) 1SOURCE_FILE@0..14
2 FN_DEF@[0; 7) 2 FN_DEF@0..7
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 7) 7 PARAM_LIST@6..7
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 ERROR@[7; 8) 9 ERROR@7..8
10 R_CURLY@[7; 8) "}" 10 R_CURLY@7..8 "}"
11 ERROR@[8; 9) 11 ERROR@8..9
12 R_PAREN@[8; 9) ")" 12 R_PAREN@8..9 ")"
13 WHITESPACE@[9; 10) " " 13 WHITESPACE@9..10 " "
14 ERROR@[10; 13) 14 ERROR@10..13
15 L_CURLY@[10; 11) "{" 15 L_CURLY@10..11 "{"
16 WHITESPACE@[11; 12) "\n" 16 WHITESPACE@11..12 "\n"
17 R_CURLY@[12; 13) "}" 17 R_CURLY@12..13 "}"
18 WHITESPACE@[13; 14) "\n" 18 WHITESPACE@13..14 "\n"
19error [7; 7): expected value parameter 19error 7..7: expected value parameter
20error [7; 7): expected R_PAREN 20error 7..7: expected R_PAREN
21error [7; 7): expected a block 21error 7..7: expected a block
22error [7; 7): unmatched `}` 22error 7..7: unmatched `}`
23error [8; 8): expected an item 23error 8..8: expected an item
24error [10; 10): expected an item 24error 10..10: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0016_missing_semi.rast b/crates/ra_syntax/test_data/parser/err/0016_missing_semi.rast
index aca5a3ada..92bb47316 100644
--- a/crates/ra_syntax/test_data/parser/err/0016_missing_semi.rast
+++ b/crates/ra_syntax/test_data/parser/err/0016_missing_semi.rast
@@ -1,44 +1,44 @@
1SOURCE_FILE@[0; 56) 1SOURCE_FILE@0..56
2 FN_DEF@[0; 55) 2 FN_DEF@0..55
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 55) 11 BLOCK_EXPR@9..55
12 BLOCK@[9; 55) 12 BLOCK@9..55
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 38) 15 EXPR_STMT@15..38
16 CALL_EXPR@[15; 38) 16 CALL_EXPR@15..38
17 PATH_EXPR@[15; 18) 17 PATH_EXPR@15..18
18 PATH@[15; 18) 18 PATH@15..18
19 PATH_SEGMENT@[15; 18) 19 PATH_SEGMENT@15..18
20 NAME_REF@[15; 18) 20 NAME_REF@15..18
21 IDENT@[15; 18) "foo" 21 IDENT@15..18 "foo"
22 ARG_LIST@[18; 38) 22 ARG_LIST@18..38
23 L_PAREN@[18; 19) "(" 23 L_PAREN@18..19 "("
24 WHITESPACE@[19; 28) "\n " 24 WHITESPACE@19..28 "\n "
25 LITERAL@[28; 29) 25 LITERAL@28..29
26 INT_NUMBER@[28; 29) "1" 26 INT_NUMBER@28..29 "1"
27 COMMA@[29; 30) "," 27 COMMA@29..30 ","
28 WHITESPACE@[30; 31) " " 28 WHITESPACE@30..31 " "
29 LITERAL@[31; 32) 29 LITERAL@31..32
30 INT_NUMBER@[31; 32) "2" 30 INT_NUMBER@31..32 "2"
31 WHITESPACE@[32; 37) "\n " 31 WHITESPACE@32..37 "\n "
32 R_PAREN@[37; 38) ")" 32 R_PAREN@37..38 ")"
33 WHITESPACE@[38; 43) "\n " 33 WHITESPACE@38..43 "\n "
34 EXPR_STMT@[43; 53) 34 EXPR_STMT@43..53
35 RETURN_EXPR@[43; 52) 35 RETURN_EXPR@43..52
36 RETURN_KW@[43; 49) "return" 36 RETURN_KW@43..49 "return"
37 WHITESPACE@[49; 50) " " 37 WHITESPACE@49..50 " "
38 LITERAL@[50; 52) 38 LITERAL@50..52
39 INT_NUMBER@[50; 52) "92" 39 INT_NUMBER@50..52 "92"
40 SEMICOLON@[52; 53) ";" 40 SEMICOLON@52..53 ";"
41 WHITESPACE@[53; 54) "\n" 41 WHITESPACE@53..54 "\n"
42 R_CURLY@[54; 55) "}" 42 R_CURLY@54..55 "}"
43 WHITESPACE@[55; 56) "\n" 43 WHITESPACE@55..56 "\n"
44error [38; 38): expected SEMICOLON 44error 38..38: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rast b/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rast
index f9f4b9bc2..7bc718302 100644
--- a/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rast
+++ b/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rast
@@ -1,47 +1,47 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@0..47
2 FN_DEF@[0; 46) 2 FN_DEF@0..46
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 16) 7 PARAM_LIST@6..16
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 15) 9 PARAM@7..15
10 BIND_PAT@[7; 10) 10 BIND_PAT@7..10
11 NAME@[7; 10) 11 NAME@7..10
12 IDENT@[7; 10) "foo" 12 IDENT@7..10 "foo"
13 COLON@[10; 11) ":" 13 COLON@10..11 ":"
14 WHITESPACE@[11; 12) " " 14 WHITESPACE@11..12 " "
15 PATH_TYPE@[12; 15) 15 PATH_TYPE@12..15
16 PATH@[12; 15) 16 PATH@12..15
17 PATH_SEGMENT@[12; 15) 17 PATH_SEGMENT@12..15
18 NAME_REF@[12; 15) 18 NAME_REF@12..15
19 IDENT@[12; 15) "i32" 19 IDENT@12..15 "i32"
20 R_PAREN@[15; 16) ")" 20 R_PAREN@15..16 ")"
21 WHITESPACE@[16; 17) " " 21 WHITESPACE@16..17 " "
22 BLOCK_EXPR@[17; 46) 22 BLOCK_EXPR@17..46
23 BLOCK@[17; 46) 23 BLOCK@17..46
24 L_CURLY@[17; 18) "{" 24 L_CURLY@17..18 "{"
25 WHITESPACE@[18; 23) "\n " 25 WHITESPACE@18..23 "\n "
26 LET_STMT@[23; 36) 26 LET_STMT@23..36
27 LET_KW@[23; 26) "let" 27 LET_KW@23..26 "let"
28 WHITESPACE@[26; 27) " " 28 WHITESPACE@26..27 " "
29 BIND_PAT@[27; 30) 29 BIND_PAT@27..30
30 NAME@[27; 30) 30 NAME@27..30
31 IDENT@[27; 30) "bar" 31 IDENT@27..30 "bar"
32 WHITESPACE@[30; 31) " " 32 WHITESPACE@30..31 " "
33 EQ@[31; 32) "=" 33 EQ@31..32 "="
34 WHITESPACE@[32; 33) " " 34 WHITESPACE@32..33 " "
35 LITERAL@[33; 35) 35 LITERAL@33..35
36 INT_NUMBER@[33; 35) "92" 36 INT_NUMBER@33..35 "92"
37 SEMICOLON@[35; 36) ";" 37 SEMICOLON@35..36 ";"
38 WHITESPACE@[36; 41) "\n " 38 WHITESPACE@36..41 "\n "
39 BIN_EXPR@[41; 44) 39 BIN_EXPR@41..44
40 LITERAL@[41; 42) 40 LITERAL@41..42
41 INT_NUMBER@[41; 42) "1" 41 INT_NUMBER@41..42 "1"
42 WHITESPACE@[42; 43) " " 42 WHITESPACE@42..43 " "
43 PLUS@[43; 44) "+" 43 PLUS@43..44 "+"
44 WHITESPACE@[44; 45) "\n" 44 WHITESPACE@44..45 "\n"
45 R_CURLY@[45; 46) "}" 45 R_CURLY@45..46 "}"
46 WHITESPACE@[46; 47) "\n" 46 WHITESPACE@46..47 "\n"
47error [44; 44): expected expression 47error 44..44: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rast b/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rast
index 9a8f76673..63194f974 100644
--- a/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rast
+++ b/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rast
@@ -1,132 +1,132 @@
1SOURCE_FILE@[0; 183) 1SOURCE_FILE@0..183
2 IMPL_DEF@[0; 182) 2 IMPL_DEF@0..182
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 13) 5 PATH_TYPE@5..13
6 PATH@[5; 13) 6 PATH@5..13
7 PATH_SEGMENT@[5; 13) 7 PATH_SEGMENT@5..13
8 NAME_REF@[5; 13) 8 NAME_REF@5..13
9 IDENT@[5; 13) "FnScopes" 9 IDENT@5..13 "FnScopes"
10 WHITESPACE@[13; 14) " " 10 WHITESPACE@13..14 " "
11 ITEM_LIST@[14; 182) 11 ITEM_LIST@14..182
12 L_CURLY@[14; 15) "{" 12 L_CURLY@14..15 "{"
13 WHITESPACE@[15; 20) "\n " 13 WHITESPACE@15..20 "\n "
14 FN_DEF@[20; 161) 14 FN_DEF@20..161
15 FN_KW@[20; 22) "fn" 15 FN_KW@20..22 "fn"
16 WHITESPACE@[22; 23) " " 16 WHITESPACE@22..23 " "
17 NAME@[23; 32) 17 NAME@23..32
18 IDENT@[23; 32) "new_scope" 18 IDENT@23..32 "new_scope"
19 PARAM_LIST@[32; 35) 19 PARAM_LIST@32..35
20 L_PAREN@[32; 33) "(" 20 L_PAREN@32..33 "("
21 PARAM@[33; 34) 21 PARAM@33..34
22 REF_PAT@[33; 34) 22 REF_PAT@33..34
23 AMP@[33; 34) "&" 23 AMP@33..34 "&"
24 R_PAREN@[34; 35) ")" 24 R_PAREN@34..35 ")"
25 WHITESPACE@[35; 36) " " 25 WHITESPACE@35..36 " "
26 RET_TYPE@[36; 46) 26 RET_TYPE@36..46
27 THIN_ARROW@[36; 38) "->" 27 THIN_ARROW@36..38 "->"
28 WHITESPACE@[38; 39) " " 28 WHITESPACE@38..39 " "
29 PATH_TYPE@[39; 46) 29 PATH_TYPE@39..46
30 PATH@[39; 46) 30 PATH@39..46
31 PATH_SEGMENT@[39; 46) 31 PATH_SEGMENT@39..46
32 NAME_REF@[39; 46) 32 NAME_REF@39..46
33 IDENT@[39; 46) "ScopeId" 33 IDENT@39..46 "ScopeId"
34 WHITESPACE@[46; 47) " " 34 WHITESPACE@46..47 " "
35 BLOCK_EXPR@[47; 161) 35 BLOCK_EXPR@47..161
36 BLOCK@[47; 161) 36 BLOCK@47..161
37 L_CURLY@[47; 48) "{" 37 L_CURLY@47..48 "{"
38 WHITESPACE@[48; 57) "\n " 38 WHITESPACE@48..57 "\n "
39 LET_STMT@[57; 85) 39 LET_STMT@57..85
40 LET_KW@[57; 60) "let" 40 LET_KW@57..60 "let"
41 WHITESPACE@[60; 61) " " 41 WHITESPACE@60..61 " "
42 BIND_PAT@[61; 64) 42 BIND_PAT@61..64
43 NAME@[61; 64) 43 NAME@61..64
44 IDENT@[61; 64) "res" 44 IDENT@61..64 "res"
45 WHITESPACE@[64; 65) " " 45 WHITESPACE@64..65 " "
46 EQ@[65; 66) "=" 46 EQ@65..66 "="
47 WHITESPACE@[66; 67) " " 47 WHITESPACE@66..67 " "
48 METHOD_CALL_EXPR@[67; 84) 48 METHOD_CALL_EXPR@67..84
49 FIELD_EXPR@[67; 78) 49 FIELD_EXPR@67..78
50 PATH_EXPR@[67; 71) 50 PATH_EXPR@67..71
51 PATH@[67; 71) 51 PATH@67..71
52 PATH_SEGMENT@[67; 71) 52 PATH_SEGMENT@67..71
53 SELF_KW@[67; 71) "self" 53 SELF_KW@67..71 "self"
54 DOT@[71; 72) "." 54 DOT@71..72 "."
55 NAME_REF@[72; 78) 55 NAME_REF@72..78
56 IDENT@[72; 78) "scopes" 56 IDENT@72..78 "scopes"
57 DOT@[78; 79) "." 57 DOT@78..79 "."
58 NAME_REF@[79; 82) 58 NAME_REF@79..82
59 IDENT@[79; 82) "len" 59 IDENT@79..82 "len"
60 ARG_LIST@[82; 84) 60 ARG_LIST@82..84
61 L_PAREN@[82; 83) "(" 61 L_PAREN@82..83 "("
62 R_PAREN@[83; 84) ")" 62 R_PAREN@83..84 ")"
63 SEMICOLON@[84; 85) ";" 63 SEMICOLON@84..85 ";"
64 WHITESPACE@[85; 94) "\n " 64 WHITESPACE@85..94 "\n "
65 METHOD_CALL_EXPR@[94; 155) 65 METHOD_CALL_EXPR@94..155
66 FIELD_EXPR@[94; 105) 66 FIELD_EXPR@94..105
67 PATH_EXPR@[94; 98) 67 PATH_EXPR@94..98
68 PATH@[94; 98) 68 PATH@94..98
69 PATH_SEGMENT@[94; 98) 69 PATH_SEGMENT@94..98
70 SELF_KW@[94; 98) "self" 70 SELF_KW@94..98 "self"
71 DOT@[98; 99) "." 71 DOT@98..99 "."
72 NAME_REF@[99; 105) 72 NAME_REF@99..105
73 IDENT@[99; 105) "scopes" 73 IDENT@99..105 "scopes"
74 DOT@[105; 106) "." 74 DOT@105..106 "."
75 NAME_REF@[106; 110) 75 NAME_REF@106..110
76 IDENT@[106; 110) "push" 76 IDENT@106..110 "push"
77 ARG_LIST@[110; 155) 77 ARG_LIST@110..155
78 L_PAREN@[110; 111) "(" 78 L_PAREN@110..111 "("
79 RECORD_LIT@[111; 154) 79 RECORD_LIT@111..154
80 PATH@[111; 120) 80 PATH@111..120
81 PATH_SEGMENT@[111; 120) 81 PATH_SEGMENT@111..120
82 NAME_REF@[111; 120) 82 NAME_REF@111..120
83 IDENT@[111; 120) "ScopeData" 83 IDENT@111..120 "ScopeData"
84 WHITESPACE@[120; 121) " " 84 WHITESPACE@120..121 " "
85 RECORD_FIELD_LIST@[121; 154) 85 RECORD_FIELD_LIST@121..154
86 L_CURLY@[121; 122) "{" 86 L_CURLY@121..122 "{"
87 WHITESPACE@[122; 123) " " 87 WHITESPACE@122..123 " "
88 RECORD_FIELD@[123; 135) 88 RECORD_FIELD@123..135
89 NAME_REF@[123; 129) 89 NAME_REF@123..129
90 IDENT@[123; 129) "parent" 90 IDENT@123..129 "parent"
91 COLON@[129; 130) ":" 91 COLON@129..130 ":"
92 WHITESPACE@[130; 131) " " 92 WHITESPACE@130..131 " "
93 PATH_EXPR@[131; 135) 93 PATH_EXPR@131..135
94 PATH@[131; 135) 94 PATH@131..135
95 PATH_SEGMENT@[131; 135) 95 PATH_SEGMENT@131..135
96 NAME_REF@[131; 135) 96 NAME_REF@131..135
97 IDENT@[131; 135) "None" 97 IDENT@131..135 "None"
98 COMMA@[135; 136) "," 98 COMMA@135..136 ","
99 WHITESPACE@[136; 137) " " 99 WHITESPACE@136..137 " "
100 RECORD_FIELD@[137; 152) 100 RECORD_FIELD@137..152
101 NAME_REF@[137; 144) 101 NAME_REF@137..144
102 IDENT@[137; 144) "entries" 102 IDENT@137..144 "entries"
103 COLON@[144; 145) ":" 103 COLON@144..145 ":"
104 WHITESPACE@[145; 146) " " 104 WHITESPACE@145..146 " "
105 MACRO_CALL@[146; 152) 105 MACRO_CALL@146..152
106 PATH@[146; 149) 106 PATH@146..149
107 PATH_SEGMENT@[146; 149) 107 PATH_SEGMENT@146..149
108 NAME_REF@[146; 149) 108 NAME_REF@146..149
109 IDENT@[146; 149) "vec" 109 IDENT@146..149 "vec"
110 BANG@[149; 150) "!" 110 BANG@149..150 "!"
111 TOKEN_TREE@[150; 152) 111 TOKEN_TREE@150..152
112 L_BRACK@[150; 151) "[" 112 L_BRACK@150..151 "["
113 R_BRACK@[151; 152) "]" 113 R_BRACK@151..152 "]"
114 WHITESPACE@[152; 153) " " 114 WHITESPACE@152..153 " "
115 R_CURLY@[153; 154) "}" 115 R_CURLY@153..154 "}"
116 R_PAREN@[154; 155) ")" 116 R_PAREN@154..155 ")"
117 WHITESPACE@[155; 160) "\n " 117 WHITESPACE@155..160 "\n "
118 R_CURLY@[160; 161) "}" 118 R_CURLY@160..161 "}"
119 WHITESPACE@[161; 167) "\n\n " 119 WHITESPACE@161..167 "\n\n "
120 FN_DEF@[167; 180) 120 FN_DEF@167..180
121 FN_KW@[167; 169) "fn" 121 FN_KW@167..169 "fn"
122 WHITESPACE@[169; 170) " " 122 WHITESPACE@169..170 " "
123 NAME@[170; 180) 123 NAME@170..180
124 IDENT@[170; 180) "set_parent" 124 IDENT@170..180 "set_parent"
125 WHITESPACE@[180; 181) "\n" 125 WHITESPACE@180..181 "\n"
126 R_CURLY@[181; 182) "}" 126 R_CURLY@181..182 "}"
127 WHITESPACE@[182; 183) "\n" 127 WHITESPACE@182..183 "\n"
128error [34; 34): expected pattern 128error 34..34: expected pattern
129error [34; 34): expected COLON 129error 34..34: expected COLON
130error [34; 34): expected type 130error 34..34: expected type
131error [180; 180): expected function arguments 131error 180..180: expected function arguments
132error [180; 180): expected a block 132error 180..180: expected a block
diff --git a/crates/ra_syntax/test_data/parser/err/0019_let_recover.rast b/crates/ra_syntax/test_data/parser/err/0019_let_recover.rast
index e283091e1..d20bb60f1 100644
--- a/crates/ra_syntax/test_data/parser/err/0019_let_recover.rast
+++ b/crates/ra_syntax/test_data/parser/err/0019_let_recover.rast
@@ -1,107 +1,107 @@
1SOURCE_FILE@[0; 139) 1SOURCE_FILE@0..139
2 FN_DEF@[0; 138) 2 FN_DEF@0..138
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 138) 11 BLOCK_EXPR@9..138
12 BLOCK@[9; 138) 12 BLOCK@9..138
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 24) 15 LET_STMT@15..24
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 BIND_PAT@[19; 22) 18 BIND_PAT@19..22
19 NAME@[19; 22) 19 NAME@19..22
20 IDENT@[19; 22) "foo" 20 IDENT@19..22 "foo"
21 WHITESPACE@[22; 23) " " 21 WHITESPACE@22..23 " "
22 EQ@[23; 24) "=" 22 EQ@23..24 "="
23 WHITESPACE@[24; 29) "\n " 23 WHITESPACE@24..29 "\n "
24 LET_STMT@[29; 41) 24 LET_STMT@29..41
25 LET_KW@[29; 32) "let" 25 LET_KW@29..32 "let"
26 WHITESPACE@[32; 33) " " 26 WHITESPACE@32..33 " "
27 BIND_PAT@[33; 36) 27 BIND_PAT@33..36
28 NAME@[33; 36) 28 NAME@33..36
29 IDENT@[33; 36) "bar" 29 IDENT@33..36 "bar"
30 WHITESPACE@[36; 37) " " 30 WHITESPACE@36..37 " "
31 EQ@[37; 38) "=" 31 EQ@37..38 "="
32 WHITESPACE@[38; 39) " " 32 WHITESPACE@38..39 " "
33 LITERAL@[39; 40) 33 LITERAL@39..40
34 INT_NUMBER@[39; 40) "1" 34 INT_NUMBER@39..40 "1"
35 SEMICOLON@[40; 41) ";" 35 SEMICOLON@40..41 ";"
36 WHITESPACE@[41; 46) "\n " 36 WHITESPACE@41..46 "\n "
37 LET_STMT@[46; 49) 37 LET_STMT@46..49
38 LET_KW@[46; 49) "let" 38 LET_KW@46..49 "let"
39 WHITESPACE@[49; 54) "\n " 39 WHITESPACE@49..54 "\n "
40 LET_STMT@[54; 67) 40 LET_STMT@54..67
41 LET_KW@[54; 57) "let" 41 LET_KW@54..57 "let"
42 WHITESPACE@[57; 58) " " 42 WHITESPACE@57..58 " "
43 BIND_PAT@[58; 61) 43 BIND_PAT@58..61
44 NAME@[58; 61) 44 NAME@58..61
45 IDENT@[58; 61) "baz" 45 IDENT@58..61 "baz"
46 WHITESPACE@[61; 62) " " 46 WHITESPACE@61..62 " "
47 EQ@[62; 63) "=" 47 EQ@62..63 "="
48 WHITESPACE@[63; 64) " " 48 WHITESPACE@63..64 " "
49 LITERAL@[64; 66) 49 LITERAL@64..66
50 INT_NUMBER@[64; 66) "92" 50 INT_NUMBER@64..66 "92"
51 SEMICOLON@[66; 67) ";" 51 SEMICOLON@66..67 ";"
52 WHITESPACE@[67; 72) "\n " 52 WHITESPACE@67..72 "\n "
53 LET_STMT@[72; 75) 53 LET_STMT@72..75
54 LET_KW@[72; 75) "let" 54 LET_KW@72..75 "let"
55 WHITESPACE@[75; 80) "\n " 55 WHITESPACE@75..80 "\n "
56 EXPR_STMT@[80; 90) 56 EXPR_STMT@80..90
57 IF_EXPR@[80; 90) 57 IF_EXPR@80..90
58 IF_KW@[80; 82) "if" 58 IF_KW@80..82 "if"
59 WHITESPACE@[82; 83) " " 59 WHITESPACE@82..83 " "
60 CONDITION@[83; 87) 60 CONDITION@83..87
61 LITERAL@[83; 87) 61 LITERAL@83..87
62 TRUE_KW@[83; 87) "true" 62 TRUE_KW@83..87 "true"
63 WHITESPACE@[87; 88) " " 63 WHITESPACE@87..88 " "
64 BLOCK_EXPR@[88; 90) 64 BLOCK_EXPR@88..90
65 BLOCK@[88; 90) 65 BLOCK@88..90
66 L_CURLY@[88; 89) "{" 66 L_CURLY@88..89 "{"
67 R_CURLY@[89; 90) "}" 67 R_CURLY@89..90 "}"
68 WHITESPACE@[90; 95) "\n " 68 WHITESPACE@90..95 "\n "
69 LET_STMT@[95; 98) 69 LET_STMT@95..98
70 LET_KW@[95; 98) "let" 70 LET_KW@95..98 "let"
71 WHITESPACE@[98; 103) "\n " 71 WHITESPACE@98..103 "\n "
72 EXPR_STMT@[103; 116) 72 EXPR_STMT@103..116
73 WHILE_EXPR@[103; 116) 73 WHILE_EXPR@103..116
74 WHILE_KW@[103; 108) "while" 74 WHILE_KW@103..108 "while"
75 WHITESPACE@[108; 109) " " 75 WHITESPACE@108..109 " "
76 CONDITION@[109; 113) 76 CONDITION@109..113
77 LITERAL@[109; 113) 77 LITERAL@109..113
78 TRUE_KW@[109; 113) "true" 78 TRUE_KW@109..113 "true"
79 WHITESPACE@[113; 114) " " 79 WHITESPACE@113..114 " "
80 BLOCK_EXPR@[114; 116) 80 BLOCK_EXPR@114..116
81 BLOCK@[114; 116) 81 BLOCK@114..116
82 L_CURLY@[114; 115) "{" 82 L_CURLY@114..115 "{"
83 R_CURLY@[115; 116) "}" 83 R_CURLY@115..116 "}"
84 WHITESPACE@[116; 121) "\n " 84 WHITESPACE@116..121 "\n "
85 LET_STMT@[121; 124) 85 LET_STMT@121..124
86 LET_KW@[121; 124) "let" 86 LET_KW@121..124 "let"
87 WHITESPACE@[124; 129) "\n " 87 WHITESPACE@124..129 "\n "
88 LOOP_EXPR@[129; 136) 88 LOOP_EXPR@129..136
89 LOOP_KW@[129; 133) "loop" 89 LOOP_KW@129..133 "loop"
90 WHITESPACE@[133; 134) " " 90 WHITESPACE@133..134 " "
91 BLOCK_EXPR@[134; 136) 91 BLOCK_EXPR@134..136
92 BLOCK@[134; 136) 92 BLOCK@134..136
93 L_CURLY@[134; 135) "{" 93 L_CURLY@134..135 "{"
94 R_CURLY@[135; 136) "}" 94 R_CURLY@135..136 "}"
95 WHITESPACE@[136; 137) "\n" 95 WHITESPACE@136..137 "\n"
96 R_CURLY@[137; 138) "}" 96 R_CURLY@137..138 "}"
97 WHITESPACE@[138; 139) "\n" 97 WHITESPACE@138..139 "\n"
98error [24; 24): expected expression 98error 24..24: expected expression
99error [24; 24): expected SEMICOLON 99error 24..24: expected SEMICOLON
100error [49; 49): expected pattern 100error 49..49: expected pattern
101error [49; 49): expected SEMICOLON 101error 49..49: expected SEMICOLON
102error [75; 75): expected pattern 102error 75..75: expected pattern
103error [75; 75): expected SEMICOLON 103error 75..75: expected SEMICOLON
104error [98; 98): expected pattern 104error 98..98: expected pattern
105error [98; 98): expected SEMICOLON 105error 98..98: expected SEMICOLON
106error [124; 124): expected pattern 106error 124..124: expected pattern
107error [124; 124): expected SEMICOLON 107error 124..124: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0020_fn_recover.rast b/crates/ra_syntax/test_data/parser/err/0020_fn_recover.rast
index c11dc23f5..1185f44f9 100644
--- a/crates/ra_syntax/test_data/parser/err/0020_fn_recover.rast
+++ b/crates/ra_syntax/test_data/parser/err/0020_fn_recover.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@0..16
2 FN_DEF@[0; 2) 2 FN_DEF@0..2
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 4) "\n\n" 4 WHITESPACE@2..4 "\n\n"
5 FN_DEF@[4; 15) 5 FN_DEF@4..15
6 FN_KW@[4; 6) "fn" 6 FN_KW@4..6 "fn"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 NAME@[7; 10) 8 NAME@7..10
9 IDENT@[7; 10) "foo" 9 IDENT@7..10 "foo"
10 PARAM_LIST@[10; 12) 10 PARAM_LIST@10..12
11 L_PAREN@[10; 11) "(" 11 L_PAREN@10..11 "("
12 R_PAREN@[11; 12) ")" 12 R_PAREN@11..12 ")"
13 WHITESPACE@[12; 13) " " 13 WHITESPACE@12..13 " "
14 BLOCK_EXPR@[13; 15) 14 BLOCK_EXPR@13..15
15 BLOCK@[13; 15) 15 BLOCK@13..15
16 L_CURLY@[13; 14) "{" 16 L_CURLY@13..14 "{"
17 R_CURLY@[14; 15) "}" 17 R_CURLY@14..15 "}"
18 WHITESPACE@[15; 16) "\n" 18 WHITESPACE@15..16 "\n"
19error [2; 2): expected a name 19error 2..2: expected a name
20error [2; 2): expected function arguments 20error 2..2: expected function arguments
21error [2; 2): expected a block 21error 2..2: expected a block
diff --git a/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rast b/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rast
index ae04122d8..c7bf4caa0 100644
--- a/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rast
+++ b/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rast
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 22) 1SOURCE_FILE@0..22
2 FN_DEF@[0; 21) 2 FN_DEF@0..21
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 17) 7 PARAM_LIST@6..17
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 13) 9 PARAM@7..13
10 BIND_PAT@[7; 8) 10 BIND_PAT@7..8
11 NAME@[7; 8) 11 NAME@7..8
12 IDENT@[7; 8) "x" 12 IDENT@7..8 "x"
13 COLON@[8; 9) ":" 13 COLON@8..9 ":"
14 WHITESPACE@[9; 10) " " 14 WHITESPACE@9..10 " "
15 PATH_TYPE@[10; 13) 15 PATH_TYPE@10..13
16 PATH@[10; 13) 16 PATH@10..13
17 PATH_SEGMENT@[10; 13) 17 PATH_SEGMENT@10..13
18 NAME_REF@[10; 13) 18 NAME_REF@10..13
19 IDENT@[10; 13) "i32" 19 IDENT@10..13 "i32"
20 COMMA@[13; 14) "," 20 COMMA@13..14 ","
21 WHITESPACE@[14; 15) " " 21 WHITESPACE@14..15 " "
22 PARAM@[15; 16) 22 PARAM@15..16
23 BIND_PAT@[15; 16) 23 BIND_PAT@15..16
24 NAME@[15; 16) 24 NAME@15..16
25 IDENT@[15; 16) "y" 25 IDENT@15..16 "y"
26 R_PAREN@[16; 17) ")" 26 R_PAREN@16..17 ")"
27 WHITESPACE@[17; 18) " " 27 WHITESPACE@17..18 " "
28 BLOCK_EXPR@[18; 21) 28 BLOCK_EXPR@18..21
29 BLOCK@[18; 21) 29 BLOCK@18..21
30 L_CURLY@[18; 19) "{" 30 L_CURLY@18..19 "{"
31 WHITESPACE@[19; 20) "\n" 31 WHITESPACE@19..20 "\n"
32 R_CURLY@[20; 21) "}" 32 R_CURLY@20..21 "}"
33 WHITESPACE@[21; 22) "\n" 33 WHITESPACE@21..22 "\n"
34error [16; 16): expected COLON 34error 16..16: expected COLON
35error [16; 16): expected type 35error 16..16: expected type
diff --git a/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rast b/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rast
index 465749f95..cc0d75cc8 100644
--- a/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rast
+++ b/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rast
@@ -1,183 +1,183 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@0..112
2 FN_DEF@[0; 33) 2 FN_DEF@0..33
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 BLOCK_EXPR@[7; 33) 11 BLOCK_EXPR@7..33
12 BLOCK@[7; 33) 12 BLOCK@7..33
13 L_CURLY@[7; 8) "{" 13 L_CURLY@7..8 "{"
14 WHITESPACE@[8; 9) " " 14 WHITESPACE@8..9 " "
15 EXPR_STMT@[9; 17) 15 EXPR_STMT@9..17
16 ARRAY_EXPR@[9; 17) 16 ARRAY_EXPR@9..17
17 L_BRACK@[9; 10) "[" 17 L_BRACK@9..10 "["
18 LITERAL@[10; 11) 18 LITERAL@10..11
19 INT_NUMBER@[10; 11) "1" 19 INT_NUMBER@10..11 "1"
20 COMMA@[11; 12) "," 20 COMMA@11..12 ","
21 WHITESPACE@[12; 13) " " 21 WHITESPACE@12..13 " "
22 LITERAL@[13; 14) 22 LITERAL@13..14
23 INT_NUMBER@[13; 14) "2" 23 INT_NUMBER@13..14 "2"
24 COMMA@[14; 15) "," 24 COMMA@14..15 ","
25 WHITESPACE@[15; 16) " " 25 WHITESPACE@15..16 " "
26 ERROR@[16; 17) 26 ERROR@16..17
27 AT@[16; 17) "@" 27 AT@16..17 "@"
28 EXPR_STMT@[17; 18) 28 EXPR_STMT@17..18
29 ERROR@[17; 18) 29 ERROR@17..18
30 COMMA@[17; 18) "," 30 COMMA@17..18 ","
31 WHITESPACE@[18; 19) " " 31 WHITESPACE@18..19 " "
32 STRUCT_DEF@[19; 26) 32 STRUCT_DEF@19..26
33 STRUCT_KW@[19; 25) "struct" 33 STRUCT_KW@19..25 "struct"
34 ERROR@[25; 26) 34 ERROR@25..26
35 COMMA@[25; 26) "," 35 COMMA@25..26 ","
36 WHITESPACE@[26; 27) " " 36 WHITESPACE@26..27 " "
37 LET_STMT@[27; 31) 37 LET_STMT@27..31
38 LET_KW@[27; 30) "let" 38 LET_KW@27..30 "let"
39 ERROR@[30; 31) 39 ERROR@30..31
40 R_BRACK@[30; 31) "]" 40 R_BRACK@30..31 "]"
41 WHITESPACE@[31; 32) " " 41 WHITESPACE@31..32 " "
42 R_CURLY@[32; 33) "}" 42 R_CURLY@32..33 "}"
43 WHITESPACE@[33; 34) "\n" 43 WHITESPACE@33..34 "\n"
44 FN_DEF@[34; 68) 44 FN_DEF@34..68
45 FN_KW@[34; 36) "fn" 45 FN_KW@34..36 "fn"
46 WHITESPACE@[36; 37) " " 46 WHITESPACE@36..37 " "
47 NAME@[37; 38) 47 NAME@37..38
48 IDENT@[37; 38) "b" 48 IDENT@37..38 "b"
49 PARAM_LIST@[38; 40) 49 PARAM_LIST@38..40
50 L_PAREN@[38; 39) "(" 50 L_PAREN@38..39 "("
51 R_PAREN@[39; 40) ")" 51 R_PAREN@39..40 ")"
52 WHITESPACE@[40; 41) " " 52 WHITESPACE@40..41 " "
53 BLOCK_EXPR@[41; 68) 53 BLOCK_EXPR@41..68
54 BLOCK@[41; 68) 54 BLOCK@41..68
55 L_CURLY@[41; 42) "{" 55 L_CURLY@41..42 "{"
56 WHITESPACE@[42; 43) " " 56 WHITESPACE@42..43 " "
57 EXPR_STMT@[43; 54) 57 EXPR_STMT@43..54
58 CALL_EXPR@[43; 54) 58 CALL_EXPR@43..54
59 PATH_EXPR@[43; 46) 59 PATH_EXPR@43..46
60 PATH@[43; 46) 60 PATH@43..46
61 PATH_SEGMENT@[43; 46) 61 PATH_SEGMENT@43..46
62 NAME_REF@[43; 46) 62 NAME_REF@43..46
63 IDENT@[43; 46) "foo" 63 IDENT@43..46 "foo"
64 ARG_LIST@[46; 54) 64 ARG_LIST@46..54
65 L_PAREN@[46; 47) "(" 65 L_PAREN@46..47 "("
66 LITERAL@[47; 48) 66 LITERAL@47..48
67 INT_NUMBER@[47; 48) "1" 67 INT_NUMBER@47..48 "1"
68 COMMA@[48; 49) "," 68 COMMA@48..49 ","
69 WHITESPACE@[49; 50) " " 69 WHITESPACE@49..50 " "
70 LITERAL@[50; 51) 70 LITERAL@50..51
71 INT_NUMBER@[50; 51) "2" 71 INT_NUMBER@50..51 "2"
72 COMMA@[51; 52) "," 72 COMMA@51..52 ","
73 WHITESPACE@[52; 53) " " 73 WHITESPACE@52..53 " "
74 ERROR@[53; 54) 74 ERROR@53..54
75 AT@[53; 54) "@" 75 AT@53..54 "@"
76 EXPR_STMT@[54; 55) 76 EXPR_STMT@54..55
77 ERROR@[54; 55) 77 ERROR@54..55
78 COMMA@[54; 55) "," 78 COMMA@54..55 ","
79 WHITESPACE@[55; 56) " " 79 WHITESPACE@55..56 " "
80 IMPL_DEF@[56; 60) 80 IMPL_DEF@56..60
81 IMPL_KW@[56; 60) "impl" 81 IMPL_KW@56..60 "impl"
82 EXPR_STMT@[60; 61) 82 EXPR_STMT@60..61
83 ERROR@[60; 61) 83 ERROR@60..61
84 COMMA@[60; 61) "," 84 COMMA@60..61 ","
85 WHITESPACE@[61; 62) " " 85 WHITESPACE@61..62 " "
86 LET_STMT@[62; 65) 86 LET_STMT@62..65
87 LET_KW@[62; 65) "let" 87 LET_KW@62..65 "let"
88 ERROR@[65; 66) 88 ERROR@65..66
89 R_PAREN@[65; 66) ")" 89 R_PAREN@65..66 ")"
90 WHITESPACE@[66; 67) " " 90 WHITESPACE@66..67 " "
91 R_CURLY@[67; 68) "}" 91 R_CURLY@67..68 "}"
92 WHITESPACE@[68; 69) "\n" 92 WHITESPACE@68..69 "\n"
93 FN_DEF@[69; 111) 93 FN_DEF@69..111
94 FN_KW@[69; 71) "fn" 94 FN_KW@69..71 "fn"
95 WHITESPACE@[71; 72) " " 95 WHITESPACE@71..72 " "
96 NAME@[72; 73) 96 NAME@72..73
97 IDENT@[72; 73) "c" 97 IDENT@72..73 "c"
98 PARAM_LIST@[73; 75) 98 PARAM_LIST@73..75
99 L_PAREN@[73; 74) "(" 99 L_PAREN@73..74 "("
100 R_PAREN@[74; 75) ")" 100 R_PAREN@74..75 ")"
101 WHITESPACE@[75; 76) " " 101 WHITESPACE@75..76 " "
102 BLOCK_EXPR@[76; 111) 102 BLOCK_EXPR@76..111
103 BLOCK@[76; 111) 103 BLOCK@76..111
104 L_CURLY@[76; 77) "{" 104 L_CURLY@76..77 "{"
105 WHITESPACE@[77; 78) " " 105 WHITESPACE@77..78 " "
106 EXPR_STMT@[78; 93) 106 EXPR_STMT@78..93
107 METHOD_CALL_EXPR@[78; 93) 107 METHOD_CALL_EXPR@78..93
108 PATH_EXPR@[78; 81) 108 PATH_EXPR@78..81
109 PATH@[78; 81) 109 PATH@78..81
110 PATH_SEGMENT@[78; 81) 110 PATH_SEGMENT@78..81
111 NAME_REF@[78; 81) 111 NAME_REF@78..81
112 IDENT@[78; 81) "foo" 112 IDENT@78..81 "foo"
113 DOT@[81; 82) "." 113 DOT@81..82 "."
114 NAME_REF@[82; 85) 114 NAME_REF@82..85
115 IDENT@[82; 85) "bar" 115 IDENT@82..85 "bar"
116 ARG_LIST@[85; 93) 116 ARG_LIST@85..93
117 L_PAREN@[85; 86) "(" 117 L_PAREN@85..86 "("
118 LITERAL@[86; 87) 118 LITERAL@86..87
119 INT_NUMBER@[86; 87) "1" 119 INT_NUMBER@86..87 "1"
120 COMMA@[87; 88) "," 120 COMMA@87..88 ","
121 WHITESPACE@[88; 89) " " 121 WHITESPACE@88..89 " "
122 LITERAL@[89; 90) 122 LITERAL@89..90
123 INT_NUMBER@[89; 90) "2" 123 INT_NUMBER@89..90 "2"
124 COMMA@[90; 91) "," 124 COMMA@90..91 ","
125 WHITESPACE@[91; 92) " " 125 WHITESPACE@91..92 " "
126 ERROR@[92; 93) 126 ERROR@92..93
127 AT@[92; 93) "@" 127 AT@92..93 "@"
128 EXPR_STMT@[93; 94) 128 EXPR_STMT@93..94
129 ERROR@[93; 94) 129 ERROR@93..94
130 COMMA@[93; 94) "," 130 COMMA@93..94 ","
131 WHITESPACE@[94; 95) " " 131 WHITESPACE@94..95 " "
132 EXPR_STMT@[95; 96) 132 EXPR_STMT@95..96
133 ERROR@[95; 96) 133 ERROR@95..96
134 R_BRACK@[95; 96) "]" 134 R_BRACK@95..96 "]"
135 EXPR_STMT@[96; 97) 135 EXPR_STMT@96..97
136 ERROR@[96; 97) 136 ERROR@96..97
137 COMMA@[96; 97) "," 137 COMMA@96..97 ","
138 WHITESPACE@[97; 98) " " 138 WHITESPACE@97..98 " "
139 TRAIT_DEF@[98; 104) 139 TRAIT_DEF@98..104
140 TRAIT_KW@[98; 103) "trait" 140 TRAIT_KW@98..103 "trait"
141 ERROR@[103; 104) 141 ERROR@103..104
142 COMMA@[103; 104) "," 142 COMMA@103..104 ","
143 WHITESPACE@[104; 105) " " 143 WHITESPACE@104..105 " "
144 LET_STMT@[105; 108) 144 LET_STMT@105..108
145 LET_KW@[105; 108) "let" 145 LET_KW@105..108 "let"
146 ERROR@[108; 109) 146 ERROR@108..109
147 R_PAREN@[108; 109) ")" 147 R_PAREN@108..109 ")"
148 WHITESPACE@[109; 110) " " 148 WHITESPACE@109..110 " "
149 R_CURLY@[110; 111) "}" 149 R_CURLY@110..111 "}"
150 WHITESPACE@[111; 112) "\n" 150 WHITESPACE@111..112 "\n"
151error [16; 16): expected expression 151error 16..16: expected expression
152error [17; 17): expected R_BRACK 152error 17..17: expected R_BRACK
153error [17; 17): expected SEMICOLON 153error 17..17: expected SEMICOLON
154error [17; 17): expected expression 154error 17..17: expected expression
155error [18; 18): expected SEMICOLON 155error 18..18: expected SEMICOLON
156error [25; 25): expected a name 156error 25..25: expected a name
157error [26; 26): expected `;`, `{`, or `(` 157error 26..26: expected `;`, `{`, or `(`
158error [30; 30): expected pattern 158error 30..30: expected pattern
159error [31; 31): expected SEMICOLON 159error 31..31: expected SEMICOLON
160error [53; 53): expected expression 160error 53..53: expected expression
161error [54; 54): expected SEMICOLON 161error 54..54: expected SEMICOLON
162error [54; 54): expected expression 162error 54..54: expected expression
163error [55; 55): expected SEMICOLON 163error 55..55: expected SEMICOLON
164error [60; 60): expected type 164error 60..60: expected type
165error [60; 60): expected `{` 165error 60..60: expected `{`
166error [60; 60): expected expression 166error 60..60: expected expression
167error [61; 61): expected SEMICOLON 167error 61..61: expected SEMICOLON
168error [65; 65): expected pattern 168error 65..65: expected pattern
169error [65; 65): expected SEMICOLON 169error 65..65: expected SEMICOLON
170error [65; 65): expected expression 170error 65..65: expected expression
171error [92; 92): expected expression 171error 92..92: expected expression
172error [93; 93): expected SEMICOLON 172error 93..93: expected SEMICOLON
173error [93; 93): expected expression 173error 93..93: expected expression
174error [94; 94): expected SEMICOLON 174error 94..94: expected SEMICOLON
175error [95; 95): expected expression 175error 95..95: expected expression
176error [96; 96): expected SEMICOLON 176error 96..96: expected SEMICOLON
177error [96; 96): expected expression 177error 96..96: expected expression
178error [97; 97): expected SEMICOLON 178error 97..97: expected SEMICOLON
179error [103; 103): expected a name 179error 103..103: expected a name
180error [104; 104): expected `{` 180error 104..104: expected `{`
181error [108; 108): expected pattern 181error 108..108: expected pattern
182error [108; 108): expected SEMICOLON 182error 108..108: expected SEMICOLON
183error [108; 108): expected expression 183error 108..108: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rast b/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rast
index 97abe9510..c37594146 100644
--- a/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rast
+++ b/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rast
@@ -1,44 +1,44 @@
1SOURCE_FILE@[0; 94) 1SOURCE_FILE@0..94
2 FN_DEF@[0; 55) 2 FN_DEF@0..55
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 55) 11 BLOCK_EXPR@10..55
12 BLOCK@[10; 55) 12 BLOCK@10..55
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 MACRO_CALL@[16; 49) 15 MACRO_CALL@16..49
16 PATH@[16; 19) 16 PATH@16..19
17 PATH_SEGMENT@[16; 19) 17 PATH_SEGMENT@16..19
18 NAME_REF@[16; 19) 18 NAME_REF@16..19
19 IDENT@[16; 19) "foo" 19 IDENT@16..19 "foo"
20 BANG@[19; 20) "!" 20 BANG@19..20 "!"
21 WHITESPACE@[20; 21) " " 21 WHITESPACE@20..21 " "
22 TOKEN_TREE@[21; 49) 22 TOKEN_TREE@21..49
23 L_PAREN@[21; 22) "(" 23 L_PAREN@21..22 "("
24 WHITESPACE@[22; 31) "\n " 24 WHITESPACE@22..31 "\n "
25 IDENT@[31; 34) "bar" 25 IDENT@31..34 "bar"
26 COMMA@[34; 35) "," 26 COMMA@34..35 ","
27 WHITESPACE@[35; 36) " " 27 WHITESPACE@35..36 " "
28 STRING@[36; 41) "\"baz\"" 28 STRING@36..41 "\"baz\""
29 COMMA@[41; 42) "," 29 COMMA@41..42 ","
30 WHITESPACE@[42; 43) " " 30 WHITESPACE@42..43 " "
31 INT_NUMBER@[43; 44) "1" 31 INT_NUMBER@43..44 "1"
32 COMMA@[44; 45) "," 32 COMMA@44..45 ","
33 WHITESPACE@[45; 46) " " 33 WHITESPACE@45..46 " "
34 FLOAT_NUMBER@[46; 49) "2.0" 34 FLOAT_NUMBER@46..49 "2.0"
35 WHITESPACE@[49; 54) "\n " 35 WHITESPACE@49..54 "\n "
36 R_CURLY@[54; 55) "}" 36 R_CURLY@54..55 "}"
37 WHITESPACE@[55; 56) " " 37 WHITESPACE@55..56 " "
38 COMMENT@[56; 91) "//~ ERROR incorrect c ..." 38 COMMENT@56..91 "//~ ERROR incorrect c ..."
39 WHITESPACE@[91; 92) "\n" 39 WHITESPACE@91..92 "\n"
40 ERROR@[92; 93) 40 ERROR@92..93
41 R_CURLY@[92; 93) "}" 41 R_CURLY@92..93 "}"
42 WHITESPACE@[93; 94) "\n" 42 WHITESPACE@93..94 "\n"
43error [49; 49): unmatched `}` 43error 49..49: unmatched `}`
44error [92; 92): unmatched `}` 44error 92..92: unmatched `}`
diff --git a/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rast b/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rast
index a3cf3e60a..4296355f2 100644
--- a/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rast
+++ b/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rast
@@ -1,321 +1,321 @@
1SOURCE_FILE@[0; 240) 1SOURCE_FILE@0..240
2 FN_DEF@[0; 53) 2 FN_DEF@0..53
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "f" 6 IDENT@3..4 "f"
7 TYPE_PARAM_LIST@[4; 48) 7 TYPE_PARAM_LIST@4..48
8 L_ANGLE@[4; 5) "<" 8 L_ANGLE@4..5 "<"
9 TYPE_PARAM@[5; 47) 9 TYPE_PARAM@5..47
10 NAME@[5; 6) 10 NAME@5..6
11 IDENT@[5; 6) "T" 11 IDENT@5..6 "T"
12 COLON@[6; 7) ":" 12 COLON@6..7 ":"
13 WHITESPACE@[7; 8) " " 13 WHITESPACE@7..8 " "
14 TYPE_BOUND_LIST@[8; 47) 14 TYPE_BOUND_LIST@8..47
15 TYPE_BOUND@[8; 14) 15 TYPE_BOUND@8..14
16 L_PAREN@[8; 9) "(" 16 L_PAREN@8..9 "("
17 PATH_TYPE@[9; 13) 17 PATH_TYPE@9..13
18 PATH@[9; 13) 18 PATH@9..13
19 PATH_SEGMENT@[9; 13) 19 PATH_SEGMENT@9..13
20 NAME_REF@[9; 13) 20 NAME_REF@9..13
21 IDENT@[9; 13) "Copy" 21 IDENT@9..13 "Copy"
22 R_PAREN@[13; 14) ")" 22 R_PAREN@13..14 ")"
23 WHITESPACE@[14; 15) " " 23 WHITESPACE@14..15 " "
24 PLUS@[15; 16) "+" 24 PLUS@15..16 "+"
25 WHITESPACE@[16; 17) " " 25 WHITESPACE@16..17 " "
26 TYPE_BOUND@[17; 25) 26 TYPE_BOUND@17..25
27 L_PAREN@[17; 18) "(" 27 L_PAREN@17..18 "("
28 QUESTION@[18; 19) "?" 28 QUESTION@18..19 "?"
29 PATH_TYPE@[19; 24) 29 PATH_TYPE@19..24
30 PATH@[19; 24) 30 PATH@19..24
31 PATH_SEGMENT@[19; 24) 31 PATH_SEGMENT@19..24
32 NAME_REF@[19; 24) 32 NAME_REF@19..24
33 IDENT@[19; 24) "Sized" 33 IDENT@19..24 "Sized"
34 R_PAREN@[24; 25) ")" 34 R_PAREN@24..25 ")"
35 WHITESPACE@[25; 26) " " 35 WHITESPACE@25..26 " "
36 PLUS@[26; 27) "+" 36 PLUS@26..27 "+"
37 WHITESPACE@[27; 28) " " 37 WHITESPACE@27..28 " "
38 TYPE_BOUND@[28; 47) 38 TYPE_BOUND@28..47
39 L_PAREN@[28; 29) "(" 39 L_PAREN@28..29 "("
40 FOR_TYPE@[29; 46) 40 FOR_TYPE@29..46
41 FOR_KW@[29; 32) "for" 41 FOR_KW@29..32 "for"
42 TYPE_PARAM_LIST@[32; 36) 42 TYPE_PARAM_LIST@32..36
43 L_ANGLE@[32; 33) "<" 43 L_ANGLE@32..33 "<"
44 LIFETIME_PARAM@[33; 35) 44 LIFETIME_PARAM@33..35
45 LIFETIME@[33; 35) "\'a" 45 LIFETIME@33..35 "\'a"
46 R_ANGLE@[35; 36) ">" 46 R_ANGLE@35..36 ">"
47 WHITESPACE@[36; 37) " " 47 WHITESPACE@36..37 " "
48 PATH_TYPE@[37; 46) 48 PATH_TYPE@37..46
49 PATH@[37; 46) 49 PATH@37..46
50 PATH_SEGMENT@[37; 46) 50 PATH_SEGMENT@37..46
51 NAME_REF@[37; 42) 51 NAME_REF@37..42
52 IDENT@[37; 42) "Trait" 52 IDENT@37..42 "Trait"
53 TYPE_ARG_LIST@[42; 46) 53 TYPE_ARG_LIST@42..46
54 L_ANGLE@[42; 43) "<" 54 L_ANGLE@42..43 "<"
55 LIFETIME_ARG@[43; 45) 55 LIFETIME_ARG@43..45
56 LIFETIME@[43; 45) "\'a" 56 LIFETIME@43..45 "\'a"
57 R_ANGLE@[45; 46) ">" 57 R_ANGLE@45..46 ">"
58 R_PAREN@[46; 47) ")" 58 R_PAREN@46..47 ")"
59 R_ANGLE@[47; 48) ">" 59 R_ANGLE@47..48 ">"
60 PARAM_LIST@[48; 50) 60 PARAM_LIST@48..50
61 L_PAREN@[48; 49) "(" 61 L_PAREN@48..49 "("
62 R_PAREN@[49; 50) ")" 62 R_PAREN@49..50 ")"
63 WHITESPACE@[50; 51) " " 63 WHITESPACE@50..51 " "
64 BLOCK_EXPR@[51; 53) 64 BLOCK_EXPR@51..53
65 BLOCK@[51; 53) 65 BLOCK@51..53
66 L_CURLY@[51; 52) "{" 66 L_CURLY@51..52 "{"
67 R_CURLY@[52; 53) "}" 67 R_CURLY@52..53 "}"
68 WHITESPACE@[53; 55) "\n\n" 68 WHITESPACE@53..55 "\n\n"
69 FN_DEF@[55; 239) 69 FN_DEF@55..239
70 FN_KW@[55; 57) "fn" 70 FN_KW@55..57 "fn"
71 WHITESPACE@[57; 58) " " 71 WHITESPACE@57..58 " "
72 NAME@[58; 62) 72 NAME@58..62
73 IDENT@[58; 62) "main" 73 IDENT@58..62 "main"
74 PARAM_LIST@[62; 64) 74 PARAM_LIST@62..64
75 L_PAREN@[62; 63) "(" 75 L_PAREN@62..63 "("
76 R_PAREN@[63; 64) ")" 76 R_PAREN@63..64 ")"
77 WHITESPACE@[64; 65) " " 77 WHITESPACE@64..65 " "
78 BLOCK_EXPR@[65; 239) 78 BLOCK_EXPR@65..239
79 BLOCK@[65; 239) 79 BLOCK@65..239
80 L_CURLY@[65; 66) "{" 80 L_CURLY@65..66 "{"
81 WHITESPACE@[66; 71) "\n " 81 WHITESPACE@66..71 "\n "
82 LET_STMT@[71; 121) 82 LET_STMT@71..121
83 LET_KW@[71; 74) "let" 83 LET_KW@71..74 "let"
84 WHITESPACE@[74; 75) " " 84 WHITESPACE@74..75 " "
85 PLACEHOLDER_PAT@[75; 76) 85 PLACEHOLDER_PAT@75..76
86 UNDERSCORE@[75; 76) "_" 86 UNDERSCORE@75..76 "_"
87 COLON@[76; 77) ":" 87 COLON@76..77 ":"
88 WHITESPACE@[77; 78) " " 88 WHITESPACE@77..78 " "
89 DYN_TRAIT_TYPE@[78; 121) 89 DYN_TRAIT_TYPE@78..121
90 TYPE_BOUND_LIST@[78; 121) 90 TYPE_BOUND_LIST@78..121
91 TYPE_BOUND@[78; 88) 91 TYPE_BOUND@78..88
92 PATH_TYPE@[78; 88) 92 PATH_TYPE@78..88
93 PATH@[78; 88) 93 PATH@78..88
94 PATH_SEGMENT@[78; 88) 94 PATH_SEGMENT@78..88
95 NAME_REF@[78; 81) 95 NAME_REF@78..81
96 IDENT@[78; 81) "Box" 96 IDENT@78..81 "Box"
97 TYPE_ARG_LIST@[81; 88) 97 TYPE_ARG_LIST@81..88
98 L_ANGLE@[81; 82) "<" 98 L_ANGLE@81..82 "<"
99 TYPE_ARG@[82; 88) 99 TYPE_ARG@82..88
100 PAREN_TYPE@[82; 88) 100 PAREN_TYPE@82..88
101 L_PAREN@[82; 83) "(" 101 L_PAREN@82..83 "("
102 PATH_TYPE@[83; 87) 102 PATH_TYPE@83..87
103 PATH@[83; 87) 103 PATH@83..87
104 PATH_SEGMENT@[83; 87) 104 PATH_SEGMENT@83..87
105 NAME_REF@[83; 87) 105 NAME_REF@83..87
106 IDENT@[83; 87) "Copy" 106 IDENT@83..87 "Copy"
107 R_PAREN@[87; 88) ")" 107 R_PAREN@87..88 ")"
108 WHITESPACE@[88; 89) " " 108 WHITESPACE@88..89 " "
109 PLUS@[89; 90) "+" 109 PLUS@89..90 "+"
110 WHITESPACE@[90; 91) " " 110 WHITESPACE@90..91 " "
111 TYPE_BOUND@[91; 99) 111 TYPE_BOUND@91..99
112 L_PAREN@[91; 92) "(" 112 L_PAREN@91..92 "("
113 QUESTION@[92; 93) "?" 113 QUESTION@92..93 "?"
114 PATH_TYPE@[93; 98) 114 PATH_TYPE@93..98
115 PATH@[93; 98) 115 PATH@93..98
116 PATH_SEGMENT@[93; 98) 116 PATH_SEGMENT@93..98
117 NAME_REF@[93; 98) 117 NAME_REF@93..98
118 IDENT@[93; 98) "Sized" 118 IDENT@93..98 "Sized"
119 R_PAREN@[98; 99) ")" 119 R_PAREN@98..99 ")"
120 WHITESPACE@[99; 100) " " 120 WHITESPACE@99..100 " "
121 PLUS@[100; 101) "+" 121 PLUS@100..101 "+"
122 WHITESPACE@[101; 102) " " 122 WHITESPACE@101..102 " "
123 TYPE_BOUND@[102; 121) 123 TYPE_BOUND@102..121
124 L_PAREN@[102; 103) "(" 124 L_PAREN@102..103 "("
125 FOR_TYPE@[103; 120) 125 FOR_TYPE@103..120
126 FOR_KW@[103; 106) "for" 126 FOR_KW@103..106 "for"
127 TYPE_PARAM_LIST@[106; 110) 127 TYPE_PARAM_LIST@106..110
128 L_ANGLE@[106; 107) "<" 128 L_ANGLE@106..107 "<"
129 LIFETIME_PARAM@[107; 109) 129 LIFETIME_PARAM@107..109
130 LIFETIME@[107; 109) "\'a" 130 LIFETIME@107..109 "\'a"
131 R_ANGLE@[109; 110) ">" 131 R_ANGLE@109..110 ">"
132 WHITESPACE@[110; 111) " " 132 WHITESPACE@110..111 " "
133 PATH_TYPE@[111; 120) 133 PATH_TYPE@111..120
134 PATH@[111; 120) 134 PATH@111..120
135 PATH_SEGMENT@[111; 120) 135 PATH_SEGMENT@111..120
136 NAME_REF@[111; 116) 136 NAME_REF@111..116
137 IDENT@[111; 116) "Trait" 137 IDENT@111..116 "Trait"
138 TYPE_ARG_LIST@[116; 120) 138 TYPE_ARG_LIST@116..120
139 L_ANGLE@[116; 117) "<" 139 L_ANGLE@116..117 "<"
140 LIFETIME_ARG@[117; 119) 140 LIFETIME_ARG@117..119
141 LIFETIME@[117; 119) "\'a" 141 LIFETIME@117..119 "\'a"
142 R_ANGLE@[119; 120) ">" 142 R_ANGLE@119..120 ">"
143 R_PAREN@[120; 121) ")" 143 R_PAREN@120..121 ")"
144 EXPR_STMT@[121; 123) 144 EXPR_STMT@121..123
145 ERROR@[121; 122) 145 ERROR@121..122
146 R_ANGLE@[121; 122) ">" 146 R_ANGLE@121..122 ">"
147 SEMICOLON@[122; 123) ";" 147 SEMICOLON@122..123 ";"
148 WHITESPACE@[123; 128) "\n " 148 WHITESPACE@123..128 "\n "
149 LET_STMT@[128; 141) 149 LET_STMT@128..141
150 LET_KW@[128; 131) "let" 150 LET_KW@128..131 "let"
151 WHITESPACE@[131; 132) " " 151 WHITESPACE@131..132 " "
152 PLACEHOLDER_PAT@[132; 133) 152 PLACEHOLDER_PAT@132..133
153 UNDERSCORE@[132; 133) "_" 153 UNDERSCORE@132..133 "_"
154 COLON@[133; 134) ":" 154 COLON@133..134 ":"
155 WHITESPACE@[134; 135) " " 155 WHITESPACE@134..135 " "
156 PATH_TYPE@[135; 141) 156 PATH_TYPE@135..141
157 PATH@[135; 141) 157 PATH@135..141
158 PATH_SEGMENT@[135; 141) 158 PATH_SEGMENT@135..141
159 NAME_REF@[135; 138) 159 NAME_REF@135..138
160 IDENT@[135; 138) "Box" 160 IDENT@135..138 "Box"
161 TYPE_ARG_LIST@[138; 141) 161 TYPE_ARG_LIST@138..141
162 L_ANGLE@[138; 139) "<" 162 L_ANGLE@138..139 "<"
163 TYPE_ARG@[139; 141) 163 TYPE_ARG@139..141
164 PAREN_TYPE@[139; 141) 164 PAREN_TYPE@139..141
165 L_PAREN@[139; 140) "(" 165 L_PAREN@139..140 "("
166 ERROR@[140; 141) 166 ERROR@140..141
167 QUESTION@[140; 141) "?" 167 QUESTION@140..141 "?"
168 EXPR_STMT@[141; 146) 168 EXPR_STMT@141..146
169 PATH_EXPR@[141; 146) 169 PATH_EXPR@141..146
170 PATH@[141; 146) 170 PATH@141..146
171 PATH_SEGMENT@[141; 146) 171 PATH_SEGMENT@141..146
172 NAME_REF@[141; 146) 172 NAME_REF@141..146
173 IDENT@[141; 146) "Sized" 173 IDENT@141..146 "Sized"
174 EXPR_STMT@[146; 147) 174 EXPR_STMT@146..147
175 ERROR@[146; 147) 175 ERROR@146..147
176 R_PAREN@[146; 147) ")" 176 R_PAREN@146..147 ")"
177 WHITESPACE@[147; 148) " " 177 WHITESPACE@147..148 " "
178 EXPR_STMT@[148; 149) 178 EXPR_STMT@148..149
179 ERROR@[148; 149) 179 ERROR@148..149
180 PLUS@[148; 149) "+" 180 PLUS@148..149 "+"
181 WHITESPACE@[149; 150) " " 181 WHITESPACE@149..150 " "
182 EXPR_STMT@[150; 180) 182 EXPR_STMT@150..180
183 TUPLE_EXPR@[150; 180) 183 TUPLE_EXPR@150..180
184 L_PAREN@[150; 151) "(" 184 L_PAREN@150..151 "("
185 BIN_EXPR@[151; 180) 185 BIN_EXPR@151..180
186 BIN_EXPR@[151; 178) 186 BIN_EXPR@151..178
187 BIN_EXPR@[151; 169) 187 BIN_EXPR@151..169
188 BIN_EXPR@[151; 167) 188 BIN_EXPR@151..167
189 BIN_EXPR@[151; 164) 189 BIN_EXPR@151..164
190 FOR_EXPR@[151; 157) 190 FOR_EXPR@151..157
191 FOR_KW@[151; 154) "for" 191 FOR_KW@151..154 "for"
192 ERROR@[154; 155) 192 ERROR@154..155
193 L_ANGLE@[154; 155) "<" 193 L_ANGLE@154..155 "<"
194 ERROR@[155; 157) 194 ERROR@155..157
195 LIFETIME@[155; 157) "\'a" 195 LIFETIME@155..157 "\'a"
196 R_ANGLE@[157; 158) ">" 196 R_ANGLE@157..158 ">"
197 WHITESPACE@[158; 159) " " 197 WHITESPACE@158..159 " "
198 PATH_EXPR@[159; 164) 198 PATH_EXPR@159..164
199 PATH@[159; 164) 199 PATH@159..164
200 PATH_SEGMENT@[159; 164) 200 PATH_SEGMENT@159..164
201 NAME_REF@[159; 164) 201 NAME_REF@159..164
202 IDENT@[159; 164) "Trait" 202 IDENT@159..164 "Trait"
203 L_ANGLE@[164; 165) "<" 203 L_ANGLE@164..165 "<"
204 ERROR@[165; 167) 204 ERROR@165..167
205 LIFETIME@[165; 167) "\'a" 205 LIFETIME@165..167 "\'a"
206 R_ANGLE@[167; 168) ">" 206 R_ANGLE@167..168 ">"
207 ERROR@[168; 169) 207 ERROR@168..169
208 R_PAREN@[168; 169) ")" 208 R_PAREN@168..169 ")"
209 WHITESPACE@[169; 170) " " 209 WHITESPACE@169..170 " "
210 PLUS@[170; 171) "+" 210 PLUS@170..171 "+"
211 WHITESPACE@[171; 172) " " 211 WHITESPACE@171..172 " "
212 PAREN_EXPR@[172; 178) 212 PAREN_EXPR@172..178
213 L_PAREN@[172; 173) "(" 213 L_PAREN@172..173 "("
214 PATH_EXPR@[173; 177) 214 PATH_EXPR@173..177
215 PATH@[173; 177) 215 PATH@173..177
216 PATH_SEGMENT@[173; 177) 216 PATH_SEGMENT@173..177
217 NAME_REF@[173; 177) 217 NAME_REF@173..177
218 IDENT@[173; 177) "Copy" 218 IDENT@173..177 "Copy"
219 R_PAREN@[177; 178) ")" 219 R_PAREN@177..178 ")"
220 R_ANGLE@[178; 179) ">" 220 R_ANGLE@178..179 ">"
221 ERROR@[179; 180) 221 ERROR@179..180
222 SEMICOLON@[179; 180) ";" 222 SEMICOLON@179..180 ";"
223 WHITESPACE@[180; 185) "\n " 223 WHITESPACE@180..185 "\n "
224 LET_STMT@[185; 235) 224 LET_STMT@185..235
225 LET_KW@[185; 188) "let" 225 LET_KW@185..188 "let"
226 WHITESPACE@[188; 189) " " 226 WHITESPACE@188..189 " "
227 PLACEHOLDER_PAT@[189; 190) 227 PLACEHOLDER_PAT@189..190
228 UNDERSCORE@[189; 190) "_" 228 UNDERSCORE@189..190 "_"
229 COLON@[190; 191) ":" 229 COLON@190..191 ":"
230 WHITESPACE@[191; 192) " " 230 WHITESPACE@191..192 " "
231 DYN_TRAIT_TYPE@[192; 235) 231 DYN_TRAIT_TYPE@192..235
232 TYPE_BOUND_LIST@[192; 235) 232 TYPE_BOUND_LIST@192..235
233 TYPE_BOUND@[192; 215) 233 TYPE_BOUND@192..215
234 PATH_TYPE@[192; 215) 234 PATH_TYPE@192..215
235 PATH@[192; 215) 235 PATH@192..215
236 PATH_SEGMENT@[192; 215) 236 PATH_SEGMENT@192..215
237 NAME_REF@[192; 195) 237 NAME_REF@192..195
238 IDENT@[192; 195) "Box" 238 IDENT@192..195 "Box"
239 TYPE_ARG_LIST@[195; 215) 239 TYPE_ARG_LIST@195..215
240 L_ANGLE@[195; 196) "<" 240 L_ANGLE@195..196 "<"
241 TYPE_ARG@[196; 215) 241 TYPE_ARG@196..215
242 PAREN_TYPE@[196; 215) 242 PAREN_TYPE@196..215
243 L_PAREN@[196; 197) "(" 243 L_PAREN@196..197 "("
244 FOR_TYPE@[197; 214) 244 FOR_TYPE@197..214
245 FOR_KW@[197; 200) "for" 245 FOR_KW@197..200 "for"
246 TYPE_PARAM_LIST@[200; 204) 246 TYPE_PARAM_LIST@200..204
247 L_ANGLE@[200; 201) "<" 247 L_ANGLE@200..201 "<"
248 LIFETIME_PARAM@[201; 203) 248 LIFETIME_PARAM@201..203
249 LIFETIME@[201; 203) "\'a" 249 LIFETIME@201..203 "\'a"
250 R_ANGLE@[203; 204) ">" 250 R_ANGLE@203..204 ">"
251 WHITESPACE@[204; 205) " " 251 WHITESPACE@204..205 " "
252 PATH_TYPE@[205; 214) 252 PATH_TYPE@205..214
253 PATH@[205; 214) 253 PATH@205..214
254 PATH_SEGMENT@[205; 214) 254 PATH_SEGMENT@205..214
255 NAME_REF@[205; 210) 255 NAME_REF@205..210
256 IDENT@[205; 210) "Trait" 256 IDENT@205..210 "Trait"
257 TYPE_ARG_LIST@[210; 214) 257 TYPE_ARG_LIST@210..214
258 L_ANGLE@[210; 211) "<" 258 L_ANGLE@210..211 "<"
259 LIFETIME_ARG@[211; 213) 259 LIFETIME_ARG@211..213
260 LIFETIME@[211; 213) "\'a" 260 LIFETIME@211..213 "\'a"
261 R_ANGLE@[213; 214) ">" 261 R_ANGLE@213..214 ">"
262 R_PAREN@[214; 215) ")" 262 R_PAREN@214..215 ")"
263 WHITESPACE@[215; 216) " " 263 WHITESPACE@215..216 " "
264 PLUS@[216; 217) "+" 264 PLUS@216..217 "+"
265 WHITESPACE@[217; 218) " " 265 WHITESPACE@217..218 " "
266 TYPE_BOUND@[218; 224) 266 TYPE_BOUND@218..224
267 L_PAREN@[218; 219) "(" 267 L_PAREN@218..219 "("
268 PATH_TYPE@[219; 223) 268 PATH_TYPE@219..223
269 PATH@[219; 223) 269 PATH@219..223
270 PATH_SEGMENT@[219; 223) 270 PATH_SEGMENT@219..223
271 NAME_REF@[219; 223) 271 NAME_REF@219..223
272 IDENT@[219; 223) "Copy" 272 IDENT@219..223 "Copy"
273 R_PAREN@[223; 224) ")" 273 R_PAREN@223..224 ")"
274 WHITESPACE@[224; 225) " " 274 WHITESPACE@224..225 " "
275 PLUS@[225; 226) "+" 275 PLUS@225..226 "+"
276 WHITESPACE@[226; 227) " " 276 WHITESPACE@226..227 " "
277 TYPE_BOUND@[227; 235) 277 TYPE_BOUND@227..235
278 L_PAREN@[227; 228) "(" 278 L_PAREN@227..228 "("
279 QUESTION@[228; 229) "?" 279 QUESTION@228..229 "?"
280 PATH_TYPE@[229; 234) 280 PATH_TYPE@229..234
281 PATH@[229; 234) 281 PATH@229..234
282 PATH_SEGMENT@[229; 234) 282 PATH_SEGMENT@229..234
283 NAME_REF@[229; 234) 283 NAME_REF@229..234
284 IDENT@[229; 234) "Sized" 284 IDENT@229..234 "Sized"
285 R_PAREN@[234; 235) ")" 285 R_PAREN@234..235 ")"
286 EXPR_STMT@[235; 237) 286 EXPR_STMT@235..237
287 ERROR@[235; 236) 287 ERROR@235..236
288 R_ANGLE@[235; 236) ">" 288 R_ANGLE@235..236 ">"
289 SEMICOLON@[236; 237) ";" 289 SEMICOLON@236..237 ";"
290 WHITESPACE@[237; 238) "\n" 290 WHITESPACE@237..238 "\n"
291 R_CURLY@[238; 239) "}" 291 R_CURLY@238..239 "}"
292 WHITESPACE@[239; 240) "\n" 292 WHITESPACE@239..240 "\n"
293error [88; 88): expected COMMA 293error 88..88: expected COMMA
294error [88; 88): expected R_ANGLE 294error 88..88: expected R_ANGLE
295error [121; 121): expected SEMICOLON 295error 121..121: expected SEMICOLON
296error [121; 121): expected expression 296error 121..121: expected expression
297error [140; 140): expected type 297error 140..140: expected type
298error [141; 141): expected R_PAREN 298error 141..141: expected R_PAREN
299error [141; 141): expected COMMA 299error 141..141: expected COMMA
300error [141; 141): expected R_ANGLE 300error 141..141: expected R_ANGLE
301error [141; 141): expected SEMICOLON 301error 141..141: expected SEMICOLON
302error [146; 146): expected SEMICOLON 302error 146..146: expected SEMICOLON
303error [146; 146): expected expression 303error 146..146: expected expression
304error [147; 147): expected SEMICOLON 304error 147..147: expected SEMICOLON
305error [148; 148): expected expression 305error 148..148: expected expression
306error [149; 149): expected SEMICOLON 306error 149..149: expected SEMICOLON
307error [154; 154): expected pattern 307error 154..154: expected pattern
308error [155; 155): expected IN_KW 308error 155..155: expected IN_KW
309error [155; 155): expected expression 309error 155..155: expected expression
310error [157; 157): expected a block 310error 157..157: expected a block
311error [165; 165): expected expression 311error 165..165: expected expression
312error [168; 168): expected expression 312error 168..168: expected expression
313error [179; 179): expected expression 313error 179..179: expected expression
314error [180; 180): expected COMMA 314error 180..180: expected COMMA
315error [180; 180): expected expression 315error 180..180: expected expression
316error [180; 180): expected R_PAREN 316error 180..180: expected R_PAREN
317error [180; 180): expected SEMICOLON 317error 180..180: expected SEMICOLON
318error [215; 215): expected COMMA 318error 215..215: expected COMMA
319error [215; 215): expected R_ANGLE 319error 215..215: expected R_ANGLE
320error [235; 235): expected SEMICOLON 320error 235..235: expected SEMICOLON
321error [235; 235): expected expression 321error 235..235: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0025_nope.rast b/crates/ra_syntax/test_data/parser/err/0025_nope.rast
index 2b37ce94d..195c08bd9 100644
--- a/crates/ra_syntax/test_data/parser/err/0025_nope.rast
+++ b/crates/ra_syntax/test_data/parser/err/0025_nope.rast
@@ -1,204 +1,204 @@
1SOURCE_FILE@[0; 575) 1SOURCE_FILE@0..575
2 FN_DEF@[0; 574) 2 FN_DEF@0..574
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 574) 11 BLOCK_EXPR@10..574
12 BLOCK@[10; 574) 12 BLOCK@10..574
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 ENUM_DEF@[16; 152) 15 ENUM_DEF@16..152
16 ENUM_KW@[16; 20) "enum" 16 ENUM_KW@16..20 "enum"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 NAME@[21; 25) 18 NAME@21..25
19 IDENT@[21; 25) "Test" 19 IDENT@21..25 "Test"
20 WHITESPACE@[25; 26) " " 20 WHITESPACE@25..26 " "
21 ENUM_VARIANT_LIST@[26; 152) 21 ENUM_VARIANT_LIST@26..152
22 L_CURLY@[26; 27) "{" 22 L_CURLY@26..27 "{"
23 WHITESPACE@[27; 36) "\n " 23 WHITESPACE@27..36 "\n "
24 ENUM_VARIANT@[36; 40) 24 ENUM_VARIANT@36..40
25 NAME@[36; 40) 25 NAME@36..40
26 IDENT@[36; 40) "Var1" 26 IDENT@36..40 "Var1"
27 COMMA@[40; 41) "," 27 COMMA@40..41 ","
28 WHITESPACE@[41; 50) "\n " 28 WHITESPACE@41..50 "\n "
29 ENUM_VARIANT@[50; 62) 29 ENUM_VARIANT@50..62
30 NAME@[50; 54) 30 NAME@50..54
31 IDENT@[50; 54) "Var2" 31 IDENT@50..54 "Var2"
32 TUPLE_FIELD_DEF_LIST@[54; 62) 32 TUPLE_FIELD_DEF_LIST@54..62
33 L_PAREN@[54; 55) "(" 33 L_PAREN@54..55 "("
34 TUPLE_FIELD_DEF@[55; 61) 34 TUPLE_FIELD_DEF@55..61
35 PATH_TYPE@[55; 61) 35 PATH_TYPE@55..61
36 PATH@[55; 61) 36 PATH@55..61
37 PATH_SEGMENT@[55; 61) 37 PATH_SEGMENT@55..61
38 NAME_REF@[55; 61) 38 NAME_REF@55..61
39 IDENT@[55; 61) "String" 39 IDENT@55..61 "String"
40 R_PAREN@[61; 62) ")" 40 R_PAREN@61..62 ")"
41 COMMA@[62; 63) "," 41 COMMA@62..63 ","
42 WHITESPACE@[63; 72) "\n " 42 WHITESPACE@63..72 "\n "
43 ENUM_VARIANT@[72; 145) 43 ENUM_VARIANT@72..145
44 NAME@[72; 76) 44 NAME@72..76
45 IDENT@[72; 76) "Var3" 45 IDENT@72..76 "Var3"
46 WHITESPACE@[76; 77) " " 46 WHITESPACE@76..77 " "
47 RECORD_FIELD_DEF_LIST@[77; 145) 47 RECORD_FIELD_DEF_LIST@77..145
48 L_CURLY@[77; 78) "{" 48 L_CURLY@77..78 "{"
49 WHITESPACE@[78; 91) "\n " 49 WHITESPACE@78..91 "\n "
50 RECORD_FIELD_DEF@[91; 95) 50 RECORD_FIELD_DEF@91..95
51 NAME@[91; 94) 51 NAME@91..94
52 IDENT@[91; 94) "abc" 52 IDENT@91..94 "abc"
53 COLON@[94; 95) ":" 53 COLON@94..95 ":"
54 WHITESPACE@[95; 96) " " 54 WHITESPACE@95..96 " "
55 ERROR@[96; 98) 55 ERROR@96..98
56 L_CURLY@[96; 97) "{" 56 L_CURLY@96..97 "{"
57 R_CURLY@[97; 98) "}" 57 R_CURLY@97..98 "}"
58 ERROR@[98; 99) 58 ERROR@98..99
59 COMMA@[98; 99) "," 59 COMMA@98..99 ","
60 WHITESPACE@[99; 100) " " 60 WHITESPACE@99..100 " "
61 COMMENT@[100; 135) "//~ ERROR: expected t ..." 61 COMMENT@100..135 "//~ ERROR: expected t ..."
62 WHITESPACE@[135; 144) "\n " 62 WHITESPACE@135..144 "\n "
63 R_CURLY@[144; 145) "}" 63 R_CURLY@144..145 "}"
64 COMMA@[145; 146) "," 64 COMMA@145..146 ","
65 WHITESPACE@[146; 151) "\n " 65 WHITESPACE@146..151 "\n "
66 R_CURLY@[151; 152) "}" 66 R_CURLY@151..152 "}"
67 WHITESPACE@[152; 158) "\n\n " 67 WHITESPACE@152..158 "\n\n "
68 COMMENT@[158; 171) "// recover..." 68 COMMENT@158..171 "// recover..."
69 WHITESPACE@[171; 176) "\n " 69 WHITESPACE@171..176 "\n "
70 LET_STMT@[176; 186) 70 LET_STMT@176..186
71 LET_KW@[176; 179) "let" 71 LET_KW@176..179 "let"
72 WHITESPACE@[179; 180) " " 72 WHITESPACE@179..180 " "
73 BIND_PAT@[180; 181) 73 BIND_PAT@180..181
74 NAME@[180; 181) 74 NAME@180..181
75 IDENT@[180; 181) "a" 75 IDENT@180..181 "a"
76 WHITESPACE@[181; 182) " " 76 WHITESPACE@181..182 " "
77 EQ@[182; 183) "=" 77 EQ@182..183 "="
78 WHITESPACE@[183; 184) " " 78 WHITESPACE@183..184 " "
79 LITERAL@[184; 185) 79 LITERAL@184..185
80 INT_NUMBER@[184; 185) "1" 80 INT_NUMBER@184..185 "1"
81 SEMICOLON@[185; 186) ";" 81 SEMICOLON@185..186 ";"
82 WHITESPACE@[186; 191) "\n " 82 WHITESPACE@186..191 "\n "
83 ENUM_DEF@[191; 223) 83 ENUM_DEF@191..223
84 ENUM_KW@[191; 195) "enum" 84 ENUM_KW@191..195 "enum"
85 WHITESPACE@[195; 196) " " 85 WHITESPACE@195..196 " "
86 NAME@[196; 201) 86 NAME@196..201
87 IDENT@[196; 201) "Test2" 87 IDENT@196..201 "Test2"
88 WHITESPACE@[201; 202) " " 88 WHITESPACE@201..202 " "
89 ENUM_VARIANT_LIST@[202; 223) 89 ENUM_VARIANT_LIST@202..223
90 L_CURLY@[202; 203) "{" 90 L_CURLY@202..203 "{"
91 WHITESPACE@[203; 212) "\n " 91 WHITESPACE@203..212 "\n "
92 ENUM_VARIANT@[212; 216) 92 ENUM_VARIANT@212..216
93 NAME@[212; 216) 93 NAME@212..216
94 IDENT@[212; 216) "Fine" 94 IDENT@212..216 "Fine"
95 COMMA@[216; 217) "," 95 COMMA@216..217 ","
96 WHITESPACE@[217; 222) "\n " 96 WHITESPACE@217..222 "\n "
97 R_CURLY@[222; 223) "}" 97 R_CURLY@222..223 "}"
98 WHITESPACE@[223; 229) "\n\n " 98 WHITESPACE@223..229 "\n\n "
99 ENUM_DEF@[229; 300) 99 ENUM_DEF@229..300
100 ENUM_KW@[229; 233) "enum" 100 ENUM_KW@229..233 "enum"
101 WHITESPACE@[233; 234) " " 101 WHITESPACE@233..234 " "
102 NAME@[234; 239) 102 NAME@234..239
103 IDENT@[234; 239) "Test3" 103 IDENT@234..239 "Test3"
104 WHITESPACE@[239; 240) " " 104 WHITESPACE@239..240 " "
105 ENUM_VARIANT_LIST@[240; 300) 105 ENUM_VARIANT_LIST@240..300
106 L_CURLY@[240; 241) "{" 106 L_CURLY@240..241 "{"
107 WHITESPACE@[241; 250) "\n " 107 WHITESPACE@241..250 "\n "
108 ENUM_VARIANT@[250; 293) 108 ENUM_VARIANT@250..293
109 NAME@[250; 259) 109 NAME@250..259
110 IDENT@[250; 259) "StillFine" 110 IDENT@250..259 "StillFine"
111 WHITESPACE@[259; 260) " " 111 WHITESPACE@259..260 " "
112 RECORD_FIELD_DEF_LIST@[260; 293) 112 RECORD_FIELD_DEF_LIST@260..293
113 L_CURLY@[260; 261) "{" 113 L_CURLY@260..261 "{"
114 WHITESPACE@[261; 274) "\n " 114 WHITESPACE@261..274 "\n "
115 RECORD_FIELD_DEF@[274; 282) 115 RECORD_FIELD_DEF@274..282
116 NAME@[274; 277) 116 NAME@274..277
117 IDENT@[274; 277) "def" 117 IDENT@274..277 "def"
118 COLON@[277; 278) ":" 118 COLON@277..278 ":"
119 WHITESPACE@[278; 279) " " 119 WHITESPACE@278..279 " "
120 PATH_TYPE@[279; 282) 120 PATH_TYPE@279..282
121 PATH@[279; 282) 121 PATH@279..282
122 PATH_SEGMENT@[279; 282) 122 PATH_SEGMENT@279..282
123 NAME_REF@[279; 282) 123 NAME_REF@279..282
124 IDENT@[279; 282) "i32" 124 IDENT@279..282 "i32"
125 COMMA@[282; 283) "," 125 COMMA@282..283 ","
126 WHITESPACE@[283; 292) "\n " 126 WHITESPACE@283..292 "\n "
127 R_CURLY@[292; 293) "}" 127 R_CURLY@292..293 "}"
128 COMMA@[293; 294) "," 128 COMMA@293..294 ","
129 WHITESPACE@[294; 299) "\n " 129 WHITESPACE@294..299 "\n "
130 R_CURLY@[299; 300) "}" 130 R_CURLY@299..300 "}"
131 WHITESPACE@[300; 306) "\n\n " 131 WHITESPACE@300..306 "\n\n "
132 EXPR_STMT@[306; 459) 132 EXPR_STMT@306..459
133 BLOCK_EXPR@[306; 459) 133 BLOCK_EXPR@306..459
134 BLOCK@[306; 459) 134 BLOCK@306..459
135 L_CURLY@[306; 307) "{" 135 L_CURLY@306..307 "{"
136 WHITESPACE@[307; 316) "\n " 136 WHITESPACE@307..316 "\n "
137 ENUM_DEF@[316; 453) 137 ENUM_DEF@316..453
138 COMMENT@[316; 329) "// fail again" 138 COMMENT@316..329 "// fail again"
139 WHITESPACE@[329; 338) "\n " 139 WHITESPACE@329..338 "\n "
140 ENUM_KW@[338; 342) "enum" 140 ENUM_KW@338..342 "enum"
141 WHITESPACE@[342; 343) " " 141 WHITESPACE@342..343 " "
142 NAME@[343; 348) 142 NAME@343..348
143 IDENT@[343; 348) "Test4" 143 IDENT@343..348 "Test4"
144 WHITESPACE@[348; 349) " " 144 WHITESPACE@348..349 " "
145 ENUM_VARIANT_LIST@[349; 453) 145 ENUM_VARIANT_LIST@349..453
146 L_CURLY@[349; 350) "{" 146 L_CURLY@349..350 "{"
147 WHITESPACE@[350; 363) "\n " 147 WHITESPACE@350..363 "\n "
148 ENUM_VARIANT@[363; 372) 148 ENUM_VARIANT@363..372
149 NAME@[363; 367) 149 NAME@363..367
150 IDENT@[363; 367) "Nope" 150 IDENT@363..367 "Nope"
151 TUPLE_FIELD_DEF_LIST@[367; 372) 151 TUPLE_FIELD_DEF_LIST@367..372
152 L_PAREN@[367; 368) "(" 152 L_PAREN@367..368 "("
153 TUPLE_FIELD_DEF@[368; 371) 153 TUPLE_FIELD_DEF@368..371
154 PATH_TYPE@[368; 371) 154 PATH_TYPE@368..371
155 PATH@[368; 371) 155 PATH@368..371
156 PATH_SEGMENT@[368; 371) 156 PATH_SEGMENT@368..371
157 NAME_REF@[368; 371) 157 NAME_REF@368..371
158 IDENT@[368; 371) "i32" 158 IDENT@368..371 "i32"
159 WHITESPACE@[371; 372) " " 159 WHITESPACE@371..372 " "
160 ERROR@[372; 372) 160 ERROR@372..372
161 ERROR@[372; 374) 161 ERROR@372..374
162 L_CURLY@[372; 373) "{" 162 L_CURLY@372..373 "{"
163 R_CURLY@[373; 374) "}" 163 R_CURLY@373..374 "}"
164 ERROR@[374; 375) 164 ERROR@374..375
165 R_PAREN@[374; 375) ")" 165 R_PAREN@374..375 ")"
166 WHITESPACE@[375; 376) " " 166 WHITESPACE@375..376 " "
167 COMMENT@[376; 396) "//~ ERROR: found `{`" 167 COMMENT@376..396 "//~ ERROR: found `{`"
168 WHITESPACE@[396; 422) "\n ..." 168 WHITESPACE@396..422 "\n ..."
169 COMMENT@[422; 443) "//~^ ERROR: found `{`" 169 COMMENT@422..443 "//~^ ERROR: found `{`"
170 WHITESPACE@[443; 452) "\n " 170 WHITESPACE@443..452 "\n "
171 R_CURLY@[452; 453) "}" 171 R_CURLY@452..453 "}"
172 WHITESPACE@[453; 458) "\n " 172 WHITESPACE@453..458 "\n "
173 R_CURLY@[458; 459) "}" 173 R_CURLY@458..459 "}"
174 WHITESPACE@[459; 464) "\n " 174 WHITESPACE@459..464 "\n "
175 COMMENT@[464; 486) "// still recover later" 175 COMMENT@464..486 "// still recover later"
176 WHITESPACE@[486; 491) "\n " 176 WHITESPACE@486..491 "\n "
177 LET_STMT@[491; 510) 177 LET_STMT@491..510
178 LET_KW@[491; 494) "let" 178 LET_KW@491..494 "let"
179 WHITESPACE@[494; 495) " " 179 WHITESPACE@494..495 " "
180 BIND_PAT@[495; 505) 180 BIND_PAT@495..505
181 NAME@[495; 505) 181 NAME@495..505
182 IDENT@[495; 505) "bad_syntax" 182 IDENT@495..505 "bad_syntax"
183 WHITESPACE@[505; 506) " " 183 WHITESPACE@505..506 " "
184 EQ@[506; 507) "=" 184 EQ@506..507 "="
185 WHITESPACE@[507; 508) " " 185 WHITESPACE@507..508 " "
186 ERROR@[508; 509) 186 ERROR@508..509
187 UNDERSCORE@[508; 509) "_" 187 UNDERSCORE@508..509 "_"
188 SEMICOLON@[509; 510) ";" 188 SEMICOLON@509..510 ";"
189 WHITESPACE@[510; 511) " " 189 WHITESPACE@510..511 " "
190 COMMENT@[511; 572) "//~ ERROR: expected e ..." 190 COMMENT@511..572 "//~ ERROR: expected e ..."
191 WHITESPACE@[572; 573) "\n" 191 WHITESPACE@572..573 "\n"
192 R_CURLY@[573; 574) "}" 192 R_CURLY@573..574 "}"
193 WHITESPACE@[574; 575) "\n" 193 WHITESPACE@574..575 "\n"
194error [95; 95): expected type 194error 95..95: expected type
195error [95; 95): expected COMMA 195error 95..95: expected COMMA
196error [96; 96): expected field 196error 96..96: expected field
197error [98; 98): expected field declaration 197error 98..98: expected field declaration
198error [371; 371): expected COMMA 198error 371..371: expected COMMA
199error [372; 372): expected a type 199error 372..372: expected a type
200error [372; 372): expected R_PAREN 200error 372..372: expected R_PAREN
201error [372; 372): expected COMMA 201error 372..372: expected COMMA
202error [372; 372): expected enum variant 202error 372..372: expected enum variant
203error [374; 374): expected enum variant 203error 374..374: expected enum variant
204error [508; 508): expected expression 204error 508..508: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rast b/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rast
index f239b7b1e..bf07409fb 100644
--- a/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rast
+++ b/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rast
@@ -1,49 +1,49 @@
1SOURCE_FILE@[0; 38) 1SOURCE_FILE@0..38
2 IMPL_DEF@[0; 14) 2 IMPL_DEF@0..14
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 TYPE_PARAM_LIST@[4; 14) 4 TYPE_PARAM_LIST@4..14
5 L_ANGLE@[4; 5) "<" 5 L_ANGLE@4..5 "<"
6 TYPE_PARAM@[5; 13) 6 TYPE_PARAM@5..13
7 NAME@[5; 6) 7 NAME@5..6
8 IDENT@[5; 6) "T" 8 IDENT@5..6 "T"
9 COLON@[6; 7) ":" 9 COLON@6..7 ":"
10 WHITESPACE@[7; 8) " " 10 WHITESPACE@7..8 " "
11 TYPE_BOUND_LIST@[8; 13) 11 TYPE_BOUND_LIST@8..13
12 TYPE_BOUND@[8; 13) 12 TYPE_BOUND@8..13
13 PATH_TYPE@[8; 13) 13 PATH_TYPE@8..13
14 PATH@[8; 13) 14 PATH@8..13
15 PATH_SEGMENT@[8; 13) 15 PATH_SEGMENT@8..13
16 NAME_REF@[8; 13) 16 NAME_REF@8..13
17 IDENT@[8; 13) "Clone" 17 IDENT@8..13 "Clone"
18 R_ANGLE@[13; 14) ">" 18 R_ANGLE@13..14 ">"
19 WHITESPACE@[14; 15) "\n" 19 WHITESPACE@14..15 "\n"
20 IMPL_DEF@[15; 37) 20 IMPL_DEF@15..37
21 IMPL_KW@[15; 19) "impl" 21 IMPL_KW@15..19 "impl"
22 TYPE_PARAM_LIST@[19; 22) 22 TYPE_PARAM_LIST@19..22
23 L_ANGLE@[19; 20) "<" 23 L_ANGLE@19..20 "<"
24 TYPE_PARAM@[20; 21) 24 TYPE_PARAM@20..21
25 NAME@[20; 21) 25 NAME@20..21
26 IDENT@[20; 21) "T" 26 IDENT@20..21 "T"
27 R_ANGLE@[21; 22) ">" 27 R_ANGLE@21..22 ">"
28 WHITESPACE@[22; 23) " " 28 WHITESPACE@22..23 " "
29 PATH_TYPE@[23; 34) 29 PATH_TYPE@23..34
30 PATH@[23; 34) 30 PATH@23..34
31 PATH_SEGMENT@[23; 34) 31 PATH_SEGMENT@23..34
32 NAME_REF@[23; 31) 32 NAME_REF@23..31
33 IDENT@[23; 31) "OnceCell" 33 IDENT@23..31 "OnceCell"
34 TYPE_ARG_LIST@[31; 34) 34 TYPE_ARG_LIST@31..34
35 L_ANGLE@[31; 32) "<" 35 L_ANGLE@31..32 "<"
36 TYPE_ARG@[32; 33) 36 TYPE_ARG@32..33
37 PATH_TYPE@[32; 33) 37 PATH_TYPE@32..33
38 PATH@[32; 33) 38 PATH@32..33
39 PATH_SEGMENT@[32; 33) 39 PATH_SEGMENT@32..33
40 NAME_REF@[32; 33) 40 NAME_REF@32..33
41 IDENT@[32; 33) "T" 41 IDENT@32..33 "T"
42 R_ANGLE@[33; 34) ">" 42 R_ANGLE@33..34 ">"
43 WHITESPACE@[34; 35) " " 43 WHITESPACE@34..35 " "
44 ITEM_LIST@[35; 37) 44 ITEM_LIST@35..37
45 L_CURLY@[35; 36) "{" 45 L_CURLY@35..36 "{"
46 R_CURLY@[36; 37) "}" 46 R_CURLY@36..37 "}"
47 WHITESPACE@[37; 38) "\n" 47 WHITESPACE@37..38 "\n"
48error [14; 14): expected trait or type 48error 14..14: expected trait or type
49error [14; 14): expected `{` 49error 14..14: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rast b/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rast
index 4a28bcabf..f2fada510 100644
--- a/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rast
+++ b/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rast
@@ -1,29 +1,29 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@0..30
2 FN_DEF@[0; 29) 2 FN_DEF@0..29
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 13) "\n " 10 WHITESPACE@8..13 "\n "
11 WHERE_CLAUSE@[13; 26) 11 WHERE_CLAUSE@13..26
12 WHERE_KW@[13; 18) "where" 12 WHERE_KW@13..18 "where"
13 WHITESPACE@[18; 19) " " 13 WHITESPACE@18..19 " "
14 WHERE_PRED@[19; 26) 14 WHERE_PRED@19..26
15 FOR_TYPE@[19; 26) 15 FOR_TYPE@19..26
16 FOR_KW@[19; 22) "for" 16 FOR_KW@19..22 "for"
17 TYPE_PARAM_LIST@[22; 26) 17 TYPE_PARAM_LIST@22..26
18 L_ANGLE@[22; 23) "<" 18 L_ANGLE@22..23 "<"
19 LIFETIME_PARAM@[23; 25) 19 LIFETIME_PARAM@23..25
20 LIFETIME@[23; 25) "\'a" 20 LIFETIME@23..25 "\'a"
21 R_ANGLE@[25; 26) ">" 21 R_ANGLE@25..26 ">"
22 WHITESPACE@[26; 27) "\n" 22 WHITESPACE@26..27 "\n"
23 BLOCK_EXPR@[27; 29) 23 BLOCK_EXPR@27..29
24 BLOCK@[27; 29) 24 BLOCK@27..29
25 L_CURLY@[27; 28) "{" 25 L_CURLY@27..28 "{"
26 R_CURLY@[28; 29) "}" 26 R_CURLY@28..29 "}"
27 WHITESPACE@[29; 30) "\n" 27 WHITESPACE@29..30 "\n"
28error [26; 26): expected a path 28error 26..26: expected a path
29error [26; 26): expected colon 29error 26..26: expected colon
diff --git a/crates/ra_syntax/test_data/parser/err/0029_field_completion.rast b/crates/ra_syntax/test_data/parser/err/0029_field_completion.rast
index 177849476..56682f966 100644
--- a/crates/ra_syntax/test_data/parser/err/0029_field_completion.rast
+++ b/crates/ra_syntax/test_data/parser/err/0029_field_completion.rast
@@ -1,36 +1,36 @@
1SOURCE_FILE@[0; 24) 1SOURCE_FILE@0..24
2 FN_DEF@[0; 23) 2 FN_DEF@0..23
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 12) 7 PARAM_LIST@6..12
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 11) 9 PARAM@7..11
10 BIND_PAT@[7; 8) 10 BIND_PAT@7..8
11 NAME@[7; 8) 11 NAME@7..8
12 IDENT@[7; 8) "a" 12 IDENT@7..8 "a"
13 COLON@[8; 9) ":" 13 COLON@8..9 ":"
14 WHITESPACE@[9; 10) " " 14 WHITESPACE@9..10 " "
15 PATH_TYPE@[10; 11) 15 PATH_TYPE@10..11
16 PATH@[10; 11) 16 PATH@10..11
17 PATH_SEGMENT@[10; 11) 17 PATH_SEGMENT@10..11
18 NAME_REF@[10; 11) 18 NAME_REF@10..11
19 IDENT@[10; 11) "A" 19 IDENT@10..11 "A"
20 R_PAREN@[11; 12) ")" 20 R_PAREN@11..12 ")"
21 WHITESPACE@[12; 13) " " 21 WHITESPACE@12..13 " "
22 BLOCK_EXPR@[13; 23) 22 BLOCK_EXPR@13..23
23 BLOCK@[13; 23) 23 BLOCK@13..23
24 L_CURLY@[13; 14) "{" 24 L_CURLY@13..14 "{"
25 WHITESPACE@[14; 19) "\n " 25 WHITESPACE@14..19 "\n "
26 FIELD_EXPR@[19; 21) 26 FIELD_EXPR@19..21
27 PATH_EXPR@[19; 20) 27 PATH_EXPR@19..20
28 PATH@[19; 20) 28 PATH@19..20
29 PATH_SEGMENT@[19; 20) 29 PATH_SEGMENT@19..20
30 NAME_REF@[19; 20) 30 NAME_REF@19..20
31 IDENT@[19; 20) "a" 31 IDENT@19..20 "a"
32 DOT@[20; 21) "." 32 DOT@20..21 "."
33 WHITESPACE@[21; 22) "\n" 33 WHITESPACE@21..22 "\n"
34 R_CURLY@[22; 23) "}" 34 R_CURLY@22..23 "}"
35 WHITESPACE@[23; 24) "\n" 35 WHITESPACE@23..24 "\n"
36error [21; 21): expected field name or number 36error 21..21: expected field name or number
diff --git a/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rast b/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rast
index 00d9fd511..aac476430 100644
--- a/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rast
@@ -1,125 +1,125 @@
1SOURCE_FILE@[0; 350) 1SOURCE_FILE@0..350
2 FN_DEF@[0; 349) 2 FN_DEF@0..349
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 8) 5 NAME@3..8
6 IDENT@[3; 8) "block" 6 IDENT@3..8 "block"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@8..10
8 L_PAREN@[8; 9) "(" 8 L_PAREN@8..9 "("
9 R_PAREN@[9; 10) ")" 9 R_PAREN@9..10 ")"
10 WHITESPACE@[10; 11) " " 10 WHITESPACE@10..11 " "
11 BLOCK_EXPR@[11; 349) 11 BLOCK_EXPR@11..349
12 BLOCK@[11; 349) 12 BLOCK@11..349
13 L_CURLY@[11; 12) "{" 13 L_CURLY@11..12 "{"
14 WHITESPACE@[12; 17) "\n " 14 WHITESPACE@12..17 "\n "
15 LET_STMT@[17; 129) 15 LET_STMT@17..129
16 LET_KW@[17; 20) "let" 16 LET_KW@17..20 "let"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 BIND_PAT@[21; 26) 18 BIND_PAT@21..26
19 NAME@[21; 26) 19 NAME@21..26
20 IDENT@[21; 26) "inner" 20 IDENT@21..26 "inner"
21 WHITESPACE@[26; 27) " " 21 WHITESPACE@26..27 " "
22 EQ@[27; 28) "=" 22 EQ@27..28 "="
23 WHITESPACE@[28; 29) " " 23 WHITESPACE@28..29 " "
24 BLOCK_EXPR@[29; 128) 24 BLOCK_EXPR@29..128
25 BLOCK@[29; 128) 25 BLOCK@29..128
26 L_CURLY@[29; 30) "{" 26 L_CURLY@29..30 "{"
27 WHITESPACE@[30; 39) "\n " 27 WHITESPACE@30..39 "\n "
28 ATTR@[39; 83) 28 ATTR@39..83
29 POUND@[39; 40) "#" 29 POUND@39..40 "#"
30 BANG@[40; 41) "!" 30 BANG@40..41 "!"
31 L_BRACK@[41; 42) "[" 31 L_BRACK@41..42 "["
32 PATH@[42; 45) 32 PATH@42..45
33 PATH_SEGMENT@[42; 45) 33 PATH_SEGMENT@42..45
34 NAME_REF@[42; 45) 34 NAME_REF@42..45
35 IDENT@[42; 45) "doc" 35 IDENT@42..45 "doc"
36 TOKEN_TREE@[45; 82) 36 TOKEN_TREE@45..82
37 L_PAREN@[45; 46) "(" 37 L_PAREN@45..46 "("
38 STRING@[46; 81) "\"Inner attributes not ..." 38 STRING@46..81 "\"Inner attributes not ..."
39 R_PAREN@[81; 82) ")" 39 R_PAREN@81..82 ")"
40 R_BRACK@[82; 83) "]" 40 R_BRACK@82..83 "]"
41 WHITESPACE@[83; 92) "\n " 41 WHITESPACE@83..92 "\n "
42 COMMENT@[92; 122) "//! Nor are ModuleDoc ..." 42 COMMENT@92..122 "//! Nor are ModuleDoc ..."
43 WHITESPACE@[122; 127) "\n " 43 WHITESPACE@122..127 "\n "
44 R_CURLY@[127; 128) "}" 44 R_CURLY@127..128 "}"
45 SEMICOLON@[128; 129) ";" 45 SEMICOLON@128..129 ";"
46 WHITESPACE@[129; 134) "\n " 46 WHITESPACE@129..134 "\n "
47 EXPR_STMT@[134; 257) 47 EXPR_STMT@134..257
48 IF_EXPR@[134; 257) 48 IF_EXPR@134..257
49 IF_KW@[134; 136) "if" 49 IF_KW@134..136 "if"
50 WHITESPACE@[136; 137) " " 50 WHITESPACE@136..137 " "
51 CONDITION@[137; 141) 51 CONDITION@137..141
52 LITERAL@[137; 141) 52 LITERAL@137..141
53 TRUE_KW@[137; 141) "true" 53 TRUE_KW@137..141 "true"
54 WHITESPACE@[141; 142) " " 54 WHITESPACE@141..142 " "
55 BLOCK_EXPR@[142; 257) 55 BLOCK_EXPR@142..257
56 BLOCK@[142; 257) 56 BLOCK@142..257
57 L_CURLY@[142; 143) "{" 57 L_CURLY@142..143 "{"
58 WHITESPACE@[143; 152) "\n " 58 WHITESPACE@143..152 "\n "
59 ATTR@[152; 171) 59 ATTR@152..171
60 POUND@[152; 153) "#" 60 POUND@152..153 "#"
61 BANG@[153; 154) "!" 61 BANG@153..154 "!"
62 L_BRACK@[154; 155) "[" 62 L_BRACK@154..155 "["
63 PATH@[155; 158) 63 PATH@155..158
64 PATH_SEGMENT@[155; 158) 64 PATH_SEGMENT@155..158
65 NAME_REF@[155; 158) 65 NAME_REF@155..158
66 IDENT@[155; 158) "doc" 66 IDENT@155..158 "doc"
67 TOKEN_TREE@[158; 170) 67 TOKEN_TREE@158..170
68 L_PAREN@[158; 159) "(" 68 L_PAREN@158..159 "("
69 STRING@[159; 169) "\"Nor here\"" 69 STRING@159..169 "\"Nor here\""
70 R_PAREN@[169; 170) ")" 70 R_PAREN@169..170 ")"
71 R_BRACK@[170; 171) "]" 71 R_BRACK@170..171 "]"
72 WHITESPACE@[171; 180) "\n " 72 WHITESPACE@171..180 "\n "
73 ATTR@[180; 212) 73 ATTR@180..212
74 POUND@[180; 181) "#" 74 POUND@180..181 "#"
75 BANG@[181; 182) "!" 75 BANG@181..182 "!"
76 L_BRACK@[182; 183) "[" 76 L_BRACK@182..183 "["
77 PATH@[183; 186) 77 PATH@183..186
78 PATH_SEGMENT@[183; 186) 78 PATH_SEGMENT@183..186
79 NAME_REF@[183; 186) 79 NAME_REF@183..186
80 IDENT@[183; 186) "doc" 80 IDENT@183..186 "doc"
81 TOKEN_TREE@[186; 211) 81 TOKEN_TREE@186..211
82 L_PAREN@[186; 187) "(" 82 L_PAREN@186..187 "("
83 STRING@[187; 210) "\"We error on each attr\"" 83 STRING@187..210 "\"We error on each attr\""
84 R_PAREN@[210; 211) ")" 84 R_PAREN@210..211 ")"
85 R_BRACK@[211; 212) "]" 85 R_BRACK@211..212 "]"
86 WHITESPACE@[212; 221) "\n " 86 WHITESPACE@212..221 "\n "
87 COMMENT@[221; 251) "//! Nor are ModuleDoc ..." 87 COMMENT@221..251 "//! Nor are ModuleDoc ..."
88 WHITESPACE@[251; 256) "\n " 88 WHITESPACE@251..256 "\n "
89 R_CURLY@[256; 257) "}" 89 R_CURLY@256..257 "}"
90 WHITESPACE@[257; 262) "\n " 90 WHITESPACE@257..262 "\n "
91 WHILE_EXPR@[262; 347) 91 WHILE_EXPR@262..347
92 WHILE_KW@[262; 267) "while" 92 WHILE_KW@262..267 "while"
93 WHITESPACE@[267; 268) " " 93 WHITESPACE@267..268 " "
94 CONDITION@[268; 272) 94 CONDITION@268..272
95 LITERAL@[268; 272) 95 LITERAL@268..272
96 TRUE_KW@[268; 272) "true" 96 TRUE_KW@268..272 "true"
97 WHITESPACE@[272; 273) " " 97 WHITESPACE@272..273 " "
98 BLOCK_EXPR@[273; 347) 98 BLOCK_EXPR@273..347
99 BLOCK@[273; 347) 99 BLOCK@273..347
100 L_CURLY@[273; 274) "{" 100 L_CURLY@273..274 "{"
101 WHITESPACE@[274; 283) "\n " 101 WHITESPACE@274..283 "\n "
102 ATTR@[283; 302) 102 ATTR@283..302
103 POUND@[283; 284) "#" 103 POUND@283..284 "#"
104 BANG@[284; 285) "!" 104 BANG@284..285 "!"
105 L_BRACK@[285; 286) "[" 105 L_BRACK@285..286 "["
106 PATH@[286; 289) 106 PATH@286..289
107 PATH_SEGMENT@[286; 289) 107 PATH_SEGMENT@286..289
108 NAME_REF@[286; 289) 108 NAME_REF@286..289
109 IDENT@[286; 289) "doc" 109 IDENT@286..289 "doc"
110 TOKEN_TREE@[289; 301) 110 TOKEN_TREE@289..301
111 L_PAREN@[289; 290) "(" 111 L_PAREN@289..290 "("
112 STRING@[290; 300) "\"Nor here\"" 112 STRING@290..300 "\"Nor here\""
113 R_PAREN@[300; 301) ")" 113 R_PAREN@300..301 ")"
114 R_BRACK@[301; 302) "]" 114 R_BRACK@301..302 "]"
115 WHITESPACE@[302; 311) "\n " 115 WHITESPACE@302..311 "\n "
116 COMMENT@[311; 341) "//! Nor are ModuleDoc ..." 116 COMMENT@311..341 "//! Nor are ModuleDoc ..."
117 WHITESPACE@[341; 346) "\n " 117 WHITESPACE@341..346 "\n "
118 R_CURLY@[346; 347) "}" 118 R_CURLY@346..347 "}"
119 WHITESPACE@[347; 348) "\n" 119 WHITESPACE@347..348 "\n"
120 R_CURLY@[348; 349) "}" 120 R_CURLY@348..349 "}"
121 WHITESPACE@[349; 350) "\n" 121 WHITESPACE@349..350 "\n"
122error [39; 83): A block in this position cannot accept inner attributes 122error 39..83: A block in this position cannot accept inner attributes
123error [152; 171): A block in this position cannot accept inner attributes 123error 152..171: A block in this position cannot accept inner attributes
124error [180; 212): A block in this position cannot accept inner attributes 124error 180..212: A block in this position cannot accept inner attributes
125error [283; 302): A block in this position cannot accept inner attributes 125error 283..302: A block in this position cannot accept inner attributes
diff --git a/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast b/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast
index b80101e60..f98de7f15 100644
--- a/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast
@@ -1,204 +1,204 @@
1SOURCE_FILE@[0; 293) 1SOURCE_FILE@0..293
2 FN_DEF@[0; 292) 2 FN_DEF@0..292
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 292) 11 BLOCK_EXPR@9..292
12 BLOCK@[9; 292) 12 BLOCK@9..292
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 101) 15 EXPR_STMT@15..101
16 MATCH_EXPR@[15; 101) 16 MATCH_EXPR@15..101
17 MATCH_KW@[15; 20) "match" 17 MATCH_KW@15..20 "match"
18 WHITESPACE@[20; 21) " " 18 WHITESPACE@20..21 " "
19 TUPLE_EXPR@[21; 23) 19 TUPLE_EXPR@21..23
20 L_PAREN@[21; 22) "(" 20 L_PAREN@21..22 "("
21 R_PAREN@[22; 23) ")" 21 R_PAREN@22..23 ")"
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 MATCH_ARM_LIST@[24; 101) 23 MATCH_ARM_LIST@24..101
24 L_CURLY@[24; 25) "{" 24 L_CURLY@24..25 "{"
25 WHITESPACE@[25; 34) "\n " 25 WHITESPACE@25..34 "\n "
26 MATCH_ARM@[34; 41) 26 MATCH_ARM@34..41
27 PLACEHOLDER_PAT@[34; 35) 27 PLACEHOLDER_PAT@34..35
28 UNDERSCORE@[34; 35) "_" 28 UNDERSCORE@34..35 "_"
29 WHITESPACE@[35; 36) " " 29 WHITESPACE@35..36 " "
30 FAT_ARROW@[36; 38) "=>" 30 FAT_ARROW@36..38 "=>"
31 WHITESPACE@[38; 39) " " 31 WHITESPACE@38..39 " "
32 TUPLE_EXPR@[39; 41) 32 TUPLE_EXPR@39..41
33 L_PAREN@[39; 40) "(" 33 L_PAREN@39..40 "("
34 R_PAREN@[40; 41) ")" 34 R_PAREN@40..41 ")"
35 COMMA@[41; 42) "," 35 COMMA@41..42 ","
36 WHITESPACE@[42; 51) "\n " 36 WHITESPACE@42..51 "\n "
37 MATCH_ARM@[51; 78) 37 MATCH_ARM@51..78
38 ATTR@[51; 52) 38 ATTR@51..52
39 POUND@[51; 52) "#" 39 POUND@51..52 "#"
40 ERROR@[52; 53) 40 ERROR@52..53
41 BANG@[52; 53) "!" 41 BANG@52..53 "!"
42 ARRAY_EXPR@[53; 78) 42 ARRAY_EXPR@53..78
43 L_BRACK@[53; 54) "[" 43 L_BRACK@53..54 "["
44 CALL_EXPR@[54; 77) 44 CALL_EXPR@54..77
45 PATH_EXPR@[54; 57) 45 PATH_EXPR@54..57
46 PATH@[54; 57) 46 PATH@54..57
47 PATH_SEGMENT@[54; 57) 47 PATH_SEGMENT@54..57
48 NAME_REF@[54; 57) 48 NAME_REF@54..57
49 IDENT@[54; 57) "doc" 49 IDENT@54..57 "doc"
50 ARG_LIST@[57; 77) 50 ARG_LIST@57..77
51 L_PAREN@[57; 58) "(" 51 L_PAREN@57..58 "("
52 LITERAL@[58; 76) 52 LITERAL@58..76
53 STRING@[58; 76) "\"Not allowed here\"" 53 STRING@58..76 "\"Not allowed here\""
54 R_PAREN@[76; 77) ")" 54 R_PAREN@76..77 ")"
55 R_BRACK@[77; 78) "]" 55 R_BRACK@77..78 "]"
56 WHITESPACE@[78; 87) "\n " 56 WHITESPACE@78..87 "\n "
57 MATCH_ARM@[87; 94) 57 MATCH_ARM@87..94
58 PLACEHOLDER_PAT@[87; 88) 58 PLACEHOLDER_PAT@87..88
59 UNDERSCORE@[87; 88) "_" 59 UNDERSCORE@87..88 "_"
60 WHITESPACE@[88; 89) " " 60 WHITESPACE@88..89 " "
61 FAT_ARROW@[89; 91) "=>" 61 FAT_ARROW@89..91 "=>"
62 WHITESPACE@[91; 92) " " 62 WHITESPACE@91..92 " "
63 TUPLE_EXPR@[92; 94) 63 TUPLE_EXPR@92..94
64 L_PAREN@[92; 93) "(" 64 L_PAREN@92..93 "("
65 R_PAREN@[93; 94) ")" 65 R_PAREN@93..94 ")"
66 COMMA@[94; 95) "," 66 COMMA@94..95 ","
67 WHITESPACE@[95; 100) "\n " 67 WHITESPACE@95..100 "\n "
68 R_CURLY@[100; 101) "}" 68 R_CURLY@100..101 "}"
69 WHITESPACE@[101; 107) "\n\n " 69 WHITESPACE@101..107 "\n\n "
70 EXPR_STMT@[107; 185) 70 EXPR_STMT@107..185
71 MATCH_EXPR@[107; 185) 71 MATCH_EXPR@107..185
72 MATCH_KW@[107; 112) "match" 72 MATCH_KW@107..112 "match"
73 WHITESPACE@[112; 113) " " 73 WHITESPACE@112..113 " "
74 TUPLE_EXPR@[113; 115) 74 TUPLE_EXPR@113..115
75 L_PAREN@[113; 114) "(" 75 L_PAREN@113..114 "("
76 R_PAREN@[114; 115) ")" 76 R_PAREN@114..115 ")"
77 WHITESPACE@[115; 116) " " 77 WHITESPACE@115..116 " "
78 MATCH_ARM_LIST@[116; 185) 78 MATCH_ARM_LIST@116..185
79 L_CURLY@[116; 117) "{" 79 L_CURLY@116..117 "{"
80 WHITESPACE@[117; 126) "\n " 80 WHITESPACE@117..126 "\n "
81 MATCH_ARM@[126; 133) 81 MATCH_ARM@126..133
82 PLACEHOLDER_PAT@[126; 127) 82 PLACEHOLDER_PAT@126..127
83 UNDERSCORE@[126; 127) "_" 83 UNDERSCORE@126..127 "_"
84 WHITESPACE@[127; 128) " " 84 WHITESPACE@127..128 " "
85 FAT_ARROW@[128; 130) "=>" 85 FAT_ARROW@128..130 "=>"
86 WHITESPACE@[130; 131) " " 86 WHITESPACE@130..131 " "
87 TUPLE_EXPR@[131; 133) 87 TUPLE_EXPR@131..133
88 L_PAREN@[131; 132) "(" 88 L_PAREN@131..132 "("
89 R_PAREN@[132; 133) ")" 89 R_PAREN@132..133 ")"
90 COMMA@[133; 134) "," 90 COMMA@133..134 ","
91 WHITESPACE@[134; 143) "\n " 91 WHITESPACE@134..143 "\n "
92 MATCH_ARM@[143; 150) 92 MATCH_ARM@143..150
93 PLACEHOLDER_PAT@[143; 144) 93 PLACEHOLDER_PAT@143..144
94 UNDERSCORE@[143; 144) "_" 94 UNDERSCORE@143..144 "_"
95 WHITESPACE@[144; 145) " " 95 WHITESPACE@144..145 " "
96 FAT_ARROW@[145; 147) "=>" 96 FAT_ARROW@145..147 "=>"
97 WHITESPACE@[147; 148) " " 97 WHITESPACE@147..148 " "
98 TUPLE_EXPR@[148; 150) 98 TUPLE_EXPR@148..150
99 L_PAREN@[148; 149) "(" 99 L_PAREN@148..149 "("
100 R_PAREN@[149; 150) ")" 100 R_PAREN@149..150 ")"
101 COMMA@[150; 151) "," 101 COMMA@150..151 ","
102 WHITESPACE@[151; 160) "\n " 102 WHITESPACE@151..160 "\n "
103 MATCH_ARM@[160; 179) 103 MATCH_ARM@160..179
104 ATTR@[160; 161) 104 ATTR@160..161
105 POUND@[160; 161) "#" 105 POUND@160..161 "#"
106 ERROR@[161; 162) 106 ERROR@161..162
107 BANG@[161; 162) "!" 107 BANG@161..162 "!"
108 ARRAY_EXPR@[162; 179) 108 ARRAY_EXPR@162..179
109 L_BRACK@[162; 163) "[" 109 L_BRACK@162..163 "["
110 CALL_EXPR@[163; 178) 110 CALL_EXPR@163..178
111 PATH_EXPR@[163; 166) 111 PATH_EXPR@163..166
112 PATH@[163; 166) 112 PATH@163..166
113 PATH_SEGMENT@[163; 166) 113 PATH_SEGMENT@163..166
114 NAME_REF@[163; 166) 114 NAME_REF@163..166
115 IDENT@[163; 166) "doc" 115 IDENT@163..166 "doc"
116 ARG_LIST@[166; 178) 116 ARG_LIST@166..178
117 L_PAREN@[166; 167) "(" 117 L_PAREN@166..167 "("
118 LITERAL@[167; 177) 118 LITERAL@167..177
119 STRING@[167; 177) "\"Nor here\"" 119 STRING@167..177 "\"Nor here\""
120 R_PAREN@[177; 178) ")" 120 R_PAREN@177..178 ")"
121 R_BRACK@[178; 179) "]" 121 R_BRACK@178..179 "]"
122 WHITESPACE@[179; 184) "\n " 122 WHITESPACE@179..184 "\n "
123 R_CURLY@[184; 185) "}" 123 R_CURLY@184..185 "}"
124 WHITESPACE@[185; 191) "\n\n " 124 WHITESPACE@185..191 "\n\n "
125 MATCH_EXPR@[191; 290) 125 MATCH_EXPR@191..290
126 MATCH_KW@[191; 196) "match" 126 MATCH_KW@191..196 "match"
127 WHITESPACE@[196; 197) " " 127 WHITESPACE@196..197 " "
128 TUPLE_EXPR@[197; 199) 128 TUPLE_EXPR@197..199
129 L_PAREN@[197; 198) "(" 129 L_PAREN@197..198 "("
130 R_PAREN@[198; 199) ")" 130 R_PAREN@198..199 ")"
131 WHITESPACE@[199; 200) " " 131 WHITESPACE@199..200 " "
132 MATCH_ARM_LIST@[200; 290) 132 MATCH_ARM_LIST@200..290
133 L_CURLY@[200; 201) "{" 133 L_CURLY@200..201 "{"
134 WHITESPACE@[201; 210) "\n " 134 WHITESPACE@201..210 "\n "
135 MATCH_ARM@[210; 250) 135 MATCH_ARM@210..250
136 ATTR@[210; 222) 136 ATTR@210..222
137 POUND@[210; 211) "#" 137 POUND@210..211 "#"
138 L_BRACK@[211; 212) "[" 138 L_BRACK@211..212 "["
139 PATH@[212; 215) 139 PATH@212..215
140 PATH_SEGMENT@[212; 215) 140 PATH_SEGMENT@212..215
141 NAME_REF@[212; 215) 141 NAME_REF@212..215
142 IDENT@[212; 215) "cfg" 142 IDENT@212..215 "cfg"
143 TOKEN_TREE@[215; 221) 143 TOKEN_TREE@215..221
144 L_PAREN@[215; 216) "(" 144 L_PAREN@215..216 "("
145 IDENT@[216; 220) "test" 145 IDENT@216..220 "test"
146 R_PAREN@[220; 221) ")" 146 R_PAREN@220..221 ")"
147 R_BRACK@[221; 222) "]" 147 R_BRACK@221..222 "]"
148 WHITESPACE@[222; 231) "\n " 148 WHITESPACE@222..231 "\n "
149 ATTR@[231; 232) 149 ATTR@231..232
150 POUND@[231; 232) "#" 150 POUND@231..232 "#"
151 ERROR@[232; 233) 151 ERROR@232..233
152 BANG@[232; 233) "!" 152 BANG@232..233 "!"
153 ARRAY_EXPR@[233; 250) 153 ARRAY_EXPR@233..250
154 L_BRACK@[233; 234) "[" 154 L_BRACK@233..234 "["
155 CALL_EXPR@[234; 249) 155 CALL_EXPR@234..249
156 PATH_EXPR@[234; 237) 156 PATH_EXPR@234..237
157 PATH@[234; 237) 157 PATH@234..237
158 PATH_SEGMENT@[234; 237) 158 PATH_SEGMENT@234..237
159 NAME_REF@[234; 237) 159 NAME_REF@234..237
160 IDENT@[234; 237) "doc" 160 IDENT@234..237 "doc"
161 ARG_LIST@[237; 249) 161 ARG_LIST@237..249
162 L_PAREN@[237; 238) "(" 162 L_PAREN@237..238 "("
163 LITERAL@[238; 248) 163 LITERAL@238..248
164 STRING@[238; 248) "\"Nor here\"" 164 STRING@238..248 "\"Nor here\""
165 R_PAREN@[248; 249) ")" 165 R_PAREN@248..249 ")"
166 R_BRACK@[249; 250) "]" 166 R_BRACK@249..250 "]"
167 WHITESPACE@[250; 259) "\n " 167 WHITESPACE@250..259 "\n "
168 MATCH_ARM@[259; 266) 168 MATCH_ARM@259..266
169 PLACEHOLDER_PAT@[259; 260) 169 PLACEHOLDER_PAT@259..260
170 UNDERSCORE@[259; 260) "_" 170 UNDERSCORE@259..260 "_"
171 WHITESPACE@[260; 261) " " 171 WHITESPACE@260..261 " "
172 FAT_ARROW@[261; 263) "=>" 172 FAT_ARROW@261..263 "=>"
173 WHITESPACE@[263; 264) " " 173 WHITESPACE@263..264 " "
174 TUPLE_EXPR@[264; 266) 174 TUPLE_EXPR@264..266
175 L_PAREN@[264; 265) "(" 175 L_PAREN@264..265 "("
176 R_PAREN@[265; 266) ")" 176 R_PAREN@265..266 ")"
177 COMMA@[266; 267) "," 177 COMMA@266..267 ","
178 WHITESPACE@[267; 276) "\n " 178 WHITESPACE@267..276 "\n "
179 MATCH_ARM@[276; 283) 179 MATCH_ARM@276..283
180 PLACEHOLDER_PAT@[276; 277) 180 PLACEHOLDER_PAT@276..277
181 UNDERSCORE@[276; 277) "_" 181 UNDERSCORE@276..277 "_"
182 WHITESPACE@[277; 278) " " 182 WHITESPACE@277..278 " "
183 FAT_ARROW@[278; 280) "=>" 183 FAT_ARROW@278..280 "=>"
184 WHITESPACE@[280; 281) " " 184 WHITESPACE@280..281 " "
185 TUPLE_EXPR@[281; 283) 185 TUPLE_EXPR@281..283
186 L_PAREN@[281; 282) "(" 186 L_PAREN@281..282 "("
187 R_PAREN@[282; 283) ")" 187 R_PAREN@282..283 ")"
188 COMMA@[283; 284) "," 188 COMMA@283..284 ","
189 WHITESPACE@[284; 289) "\n " 189 WHITESPACE@284..289 "\n "
190 R_CURLY@[289; 290) "}" 190 R_CURLY@289..290 "}"
191 WHITESPACE@[290; 291) "\n" 191 WHITESPACE@290..291 "\n"
192 R_CURLY@[291; 292) "}" 192 R_CURLY@291..292 "}"
193 WHITESPACE@[292; 293) "\n" 193 WHITESPACE@292..293 "\n"
194error [52; 52): expected `[` 194error 52..52: expected `[`
195error [52; 52): expected pattern 195error 52..52: expected pattern
196error [53; 53): expected FAT_ARROW 196error 53..53: expected FAT_ARROW
197error [78; 78): expected COMMA 197error 78..78: expected COMMA
198error [161; 161): expected `[` 198error 161..161: expected `[`
199error [161; 161): expected pattern 199error 161..161: expected pattern
200error [162; 162): expected FAT_ARROW 200error 162..162: expected FAT_ARROW
201error [232; 232): expected `[` 201error 232..232: expected `[`
202error [232; 232): expected pattern 202error 232..232: expected pattern
203error [233; 233): expected FAT_ARROW 203error 233..233: expected FAT_ARROW
204error [250; 250): expected COMMA 204error 250..250: expected COMMA
diff --git a/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast b/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast
index e914e688b..d0017c883 100644
--- a/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast
@@ -1,67 +1,67 @@
1SOURCE_FILE@[0; 89) 1SOURCE_FILE@0..89
2 FN_DEF@[0; 88) 2 FN_DEF@0..88
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 88) 11 BLOCK_EXPR@9..88
12 BLOCK@[9; 88) 12 BLOCK@9..88
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 MATCH_EXPR@[15; 86) 15 MATCH_EXPR@15..86
16 MATCH_KW@[15; 20) "match" 16 MATCH_KW@15..20 "match"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@21..23
19 L_PAREN@[21; 22) "(" 19 L_PAREN@21..22 "("
20 R_PAREN@[22; 23) ")" 20 R_PAREN@22..23 ")"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 MATCH_ARM_LIST@[24; 86) 22 MATCH_ARM_LIST@24..86
23 L_CURLY@[24; 25) "{" 23 L_CURLY@24..25 "{"
24 WHITESPACE@[25; 34) "\n " 24 WHITESPACE@25..34 "\n "
25 MATCH_ARM@[34; 41) 25 MATCH_ARM@34..41
26 PLACEHOLDER_PAT@[34; 35) 26 PLACEHOLDER_PAT@34..35
27 UNDERSCORE@[34; 35) "_" 27 UNDERSCORE@34..35 "_"
28 WHITESPACE@[35; 36) " " 28 WHITESPACE@35..36 " "
29 FAT_ARROW@[36; 38) "=>" 29 FAT_ARROW@36..38 "=>"
30 WHITESPACE@[38; 39) " " 30 WHITESPACE@38..39 " "
31 TUPLE_EXPR@[39; 41) 31 TUPLE_EXPR@39..41
32 L_PAREN@[39; 40) "(" 32 L_PAREN@39..40 "("
33 R_PAREN@[40; 41) ")" 33 R_PAREN@40..41 ")"
34 COMMA@[41; 42) "," 34 COMMA@41..42 ","
35 WHITESPACE@[42; 51) "\n " 35 WHITESPACE@42..51 "\n "
36 MATCH_ARM@[51; 58) 36 MATCH_ARM@51..58
37 PLACEHOLDER_PAT@[51; 52) 37 PLACEHOLDER_PAT@51..52
38 UNDERSCORE@[51; 52) "_" 38 UNDERSCORE@51..52 "_"
39 WHITESPACE@[52; 53) " " 39 WHITESPACE@52..53 " "
40 FAT_ARROW@[53; 55) "=>" 40 FAT_ARROW@53..55 "=>"
41 WHITESPACE@[55; 56) " " 41 WHITESPACE@55..56 " "
42 TUPLE_EXPR@[56; 58) 42 TUPLE_EXPR@56..58
43 L_PAREN@[56; 57) "(" 43 L_PAREN@56..57 "("
44 R_PAREN@[57; 58) ")" 44 R_PAREN@57..58 ")"
45 COMMA@[58; 59) "," 45 COMMA@58..59 ","
46 WHITESPACE@[59; 68) "\n " 46 WHITESPACE@59..68 "\n "
47 MATCH_ARM@[68; 80) 47 MATCH_ARM@68..80
48 ATTR@[68; 80) 48 ATTR@68..80
49 POUND@[68; 69) "#" 49 POUND@68..69 "#"
50 L_BRACK@[69; 70) "[" 50 L_BRACK@69..70 "["
51 PATH@[70; 73) 51 PATH@70..73
52 PATH_SEGMENT@[70; 73) 52 PATH_SEGMENT@70..73
53 NAME_REF@[70; 73) 53 NAME_REF@70..73
54 IDENT@[70; 73) "cfg" 54 IDENT@70..73 "cfg"
55 TOKEN_TREE@[73; 79) 55 TOKEN_TREE@73..79
56 L_PAREN@[73; 74) "(" 56 L_PAREN@73..74 "("
57 IDENT@[74; 78) "test" 57 IDENT@74..78 "test"
58 R_PAREN@[78; 79) ")" 58 R_PAREN@78..79 ")"
59 R_BRACK@[79; 80) "]" 59 R_BRACK@79..80 "]"
60 WHITESPACE@[80; 85) "\n " 60 WHITESPACE@80..85 "\n "
61 R_CURLY@[85; 86) "}" 61 R_CURLY@85..86 "}"
62 WHITESPACE@[86; 87) "\n" 62 WHITESPACE@86..87 "\n"
63 R_CURLY@[87; 88) "}" 63 R_CURLY@87..88 "}"
64 WHITESPACE@[88; 89) "\n" 64 WHITESPACE@88..89 "\n"
65error [80; 80): expected pattern 65error 80..80: expected pattern
66error [80; 80): expected FAT_ARROW 66error 80..80: expected FAT_ARROW
67error [80; 80): expected expression 67error 80..80: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.rast b/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.rast
index 2ab9ee56f..2c0bddec8 100644
--- a/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.rast
+++ b/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.rast
@@ -1,96 +1,96 @@
1SOURCE_FILE@[0; 91) 1SOURCE_FILE@0..91
2 FN_DEF@[0; 89) 2 FN_DEF@0..89
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 89) 11 BLOCK_EXPR@10..89
12 BLOCK@[10; 89) 12 BLOCK@10..89
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 27) 15 LET_STMT@16..27
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 BIND_PAT@[20; 27) 18 BIND_PAT@20..27
19 REF_KW@[20; 23) "ref" 19 REF_KW@20..23 "ref"
20 WHITESPACE@[23; 24) " " 20 WHITESPACE@23..24 " "
21 ERROR@[24; 27) 21 ERROR@24..27
22 BOX_KW@[24; 27) "box" 22 BOX_KW@24..27 "box"
23 WHITESPACE@[27; 28) " " 23 WHITESPACE@27..28 " "
24 EXPR_STMT@[28; 35) 24 EXPR_STMT@28..35
25 BIN_EXPR@[28; 34) 25 BIN_EXPR@28..34
26 PATH_EXPR@[28; 29) 26 PATH_EXPR@28..29
27 PATH@[28; 29) 27 PATH@28..29
28 PATH_SEGMENT@[28; 29) 28 PATH_SEGMENT@28..29
29 NAME_REF@[28; 29) 29 NAME_REF@28..29
30 IDENT@[28; 29) "i" 30 IDENT@28..29 "i"
31 WHITESPACE@[29; 30) " " 31 WHITESPACE@29..30 " "
32 EQ@[30; 31) "=" 32 EQ@30..31 "="
33 WHITESPACE@[31; 32) " " 33 WHITESPACE@31..32 " "
34 TUPLE_EXPR@[32; 34) 34 TUPLE_EXPR@32..34
35 L_PAREN@[32; 33) "(" 35 L_PAREN@32..33 "("
36 R_PAREN@[33; 34) ")" 36 R_PAREN@33..34 ")"
37 SEMICOLON@[34; 35) ";" 37 SEMICOLON@34..35 ";"
38 WHITESPACE@[35; 40) "\n " 38 WHITESPACE@35..40 "\n "
39 LET_STMT@[40; 51) 39 LET_STMT@40..51
40 LET_KW@[40; 43) "let" 40 LET_KW@40..43 "let"
41 WHITESPACE@[43; 44) " " 41 WHITESPACE@43..44 " "
42 BIND_PAT@[44; 51) 42 BIND_PAT@44..51
43 MUT_KW@[44; 47) "mut" 43 MUT_KW@44..47 "mut"
44 WHITESPACE@[47; 48) " " 44 WHITESPACE@47..48 " "
45 ERROR@[48; 51) 45 ERROR@48..51
46 BOX_KW@[48; 51) "box" 46 BOX_KW@48..51 "box"
47 WHITESPACE@[51; 52) " " 47 WHITESPACE@51..52 " "
48 EXPR_STMT@[52; 59) 48 EXPR_STMT@52..59
49 BIN_EXPR@[52; 58) 49 BIN_EXPR@52..58
50 PATH_EXPR@[52; 53) 50 PATH_EXPR@52..53
51 PATH@[52; 53) 51 PATH@52..53
52 PATH_SEGMENT@[52; 53) 52 PATH_SEGMENT@52..53
53 NAME_REF@[52; 53) 53 NAME_REF@52..53
54 IDENT@[52; 53) "i" 54 IDENT@52..53 "i"
55 WHITESPACE@[53; 54) " " 55 WHITESPACE@53..54 " "
56 EQ@[54; 55) "=" 56 EQ@54..55 "="
57 WHITESPACE@[55; 56) " " 57 WHITESPACE@55..56 " "
58 TUPLE_EXPR@[56; 58) 58 TUPLE_EXPR@56..58
59 L_PAREN@[56; 57) "(" 59 L_PAREN@56..57 "("
60 R_PAREN@[57; 58) ")" 60 R_PAREN@57..58 ")"
61 SEMICOLON@[58; 59) ";" 61 SEMICOLON@58..59 ";"
62 WHITESPACE@[59; 64) "\n " 62 WHITESPACE@59..64 "\n "
63 LET_STMT@[64; 79) 63 LET_STMT@64..79
64 LET_KW@[64; 67) "let" 64 LET_KW@64..67 "let"
65 WHITESPACE@[67; 68) " " 65 WHITESPACE@67..68 " "
66 BIND_PAT@[68; 79) 66 BIND_PAT@68..79
67 REF_KW@[68; 71) "ref" 67 REF_KW@68..71 "ref"
68 WHITESPACE@[71; 72) " " 68 WHITESPACE@71..72 " "
69 MUT_KW@[72; 75) "mut" 69 MUT_KW@72..75 "mut"
70 WHITESPACE@[75; 76) " " 70 WHITESPACE@75..76 " "
71 ERROR@[76; 79) 71 ERROR@76..79
72 BOX_KW@[76; 79) "box" 72 BOX_KW@76..79 "box"
73 WHITESPACE@[79; 80) " " 73 WHITESPACE@79..80 " "
74 EXPR_STMT@[80; 87) 74 EXPR_STMT@80..87
75 BIN_EXPR@[80; 86) 75 BIN_EXPR@80..86
76 PATH_EXPR@[80; 81) 76 PATH_EXPR@80..81
77 PATH@[80; 81) 77 PATH@80..81
78 PATH_SEGMENT@[80; 81) 78 PATH_SEGMENT@80..81
79 NAME_REF@[80; 81) 79 NAME_REF@80..81
80 IDENT@[80; 81) "i" 80 IDENT@80..81 "i"
81 WHITESPACE@[81; 82) " " 81 WHITESPACE@81..82 " "
82 EQ@[82; 83) "=" 82 EQ@82..83 "="
83 WHITESPACE@[83; 84) " " 83 WHITESPACE@83..84 " "
84 TUPLE_EXPR@[84; 86) 84 TUPLE_EXPR@84..86
85 L_PAREN@[84; 85) "(" 85 L_PAREN@84..85 "("
86 R_PAREN@[85; 86) ")" 86 R_PAREN@85..86 ")"
87 SEMICOLON@[86; 87) ";" 87 SEMICOLON@86..87 ";"
88 WHITESPACE@[87; 88) "\n" 88 WHITESPACE@87..88 "\n"
89 R_CURLY@[88; 89) "}" 89 R_CURLY@88..89 "}"
90 WHITESPACE@[89; 91) "\n\n" 90 WHITESPACE@89..91 "\n\n"
91error [24; 24): expected a name 91error 24..24: expected a name
92error [27; 27): expected SEMICOLON 92error 27..27: expected SEMICOLON
93error [48; 48): expected a name 93error 48..48: expected a name
94error [51; 51): expected SEMICOLON 94error 51..51: expected SEMICOLON
95error [76; 76): expected a name 95error 76..76: expected a name
96error [79; 79): expected SEMICOLON 96error 79..79: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0035_use_recover.rast b/crates/ra_syntax/test_data/parser/err/0035_use_recover.rast
index f255b0a6b..83851f5d2 100644
--- a/crates/ra_syntax/test_data/parser/err/0035_use_recover.rast
+++ b/crates/ra_syntax/test_data/parser/err/0035_use_recover.rast
@@ -1,54 +1,54 @@
1SOURCE_FILE@[0; 48) 1SOURCE_FILE@0..48
2 USE_ITEM@[0; 13) 2 USE_ITEM@0..13
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 12) 5 USE_TREE@4..12
6 PATH@[4; 12) 6 PATH@4..12
7 PATH@[4; 7) 7 PATH@4..7
8 PATH_SEGMENT@[4; 7) 8 PATH_SEGMENT@4..7
9 NAME_REF@[4; 7) 9 NAME_REF@4..7
10 IDENT@[4; 7) "foo" 10 IDENT@4..7 "foo"
11 COLON2@[7; 9) "::" 11 COLON2@7..9 "::"
12 PATH_SEGMENT@[9; 12) 12 PATH_SEGMENT@9..12
13 NAME_REF@[9; 12) 13 NAME_REF@9..12
14 IDENT@[9; 12) "bar" 14 IDENT@9..12 "bar"
15 SEMICOLON@[12; 13) ";" 15 SEMICOLON@12..13 ";"
16 WHITESPACE@[13; 14) "\n" 16 WHITESPACE@13..14 "\n"
17 USE_ITEM@[14; 17) 17 USE_ITEM@14..17
18 USE_KW@[14; 17) "use" 18 USE_KW@14..17 "use"
19 WHITESPACE@[17; 18) "\n" 19 WHITESPACE@17..18 "\n"
20 USE_ITEM@[18; 33) 20 USE_ITEM@18..33
21 USE_KW@[18; 21) "use" 21 USE_KW@18..21 "use"
22 WHITESPACE@[21; 22) " " 22 WHITESPACE@21..22 " "
23 USE_TREE@[22; 32) 23 USE_TREE@22..32
24 PATH@[22; 32) 24 PATH@22..32
25 PATH@[22; 27) 25 PATH@22..27
26 PATH_SEGMENT@[22; 27) 26 PATH_SEGMENT@22..27
27 CRATE_KW@[22; 27) "crate" 27 CRATE_KW@22..27 "crate"
28 COLON2@[27; 29) "::" 28 COLON2@27..29 "::"
29 PATH_SEGMENT@[29; 32) 29 PATH_SEGMENT@29..32
30 NAME_REF@[29; 32) 30 NAME_REF@29..32
31 IDENT@[29; 32) "baz" 31 IDENT@29..32 "baz"
32 SEMICOLON@[32; 33) ";" 32 SEMICOLON@32..33 ";"
33 WHITESPACE@[33; 34) "\n" 33 WHITESPACE@33..34 "\n"
34 USE_ITEM@[34; 37) 34 USE_ITEM@34..37
35 USE_KW@[34; 37) "use" 35 USE_KW@34..37 "use"
36 WHITESPACE@[37; 38) "\n" 36 WHITESPACE@37..38 "\n"
37 FN_DEF@[38; 47) 37 FN_DEF@38..47
38 FN_KW@[38; 40) "fn" 38 FN_KW@38..40 "fn"
39 WHITESPACE@[40; 41) " " 39 WHITESPACE@40..41 " "
40 NAME@[41; 42) 40 NAME@41..42
41 IDENT@[41; 42) "f" 41 IDENT@41..42 "f"
42 PARAM_LIST@[42; 44) 42 PARAM_LIST@42..44
43 L_PAREN@[42; 43) "(" 43 L_PAREN@42..43 "("
44 R_PAREN@[43; 44) ")" 44 R_PAREN@43..44 ")"
45 WHITESPACE@[44; 45) " " 45 WHITESPACE@44..45 " "
46 BLOCK_EXPR@[45; 47) 46 BLOCK_EXPR@45..47
47 BLOCK@[45; 47) 47 BLOCK@45..47
48 L_CURLY@[45; 46) "{" 48 L_CURLY@45..46 "{"
49 R_CURLY@[46; 47) "}" 49 R_CURLY@46..47 "}"
50 WHITESPACE@[47; 48) "\n" 50 WHITESPACE@47..48 "\n"
51error [17; 17): expected one of `*`, `::`, `{`, `self`, `super` or an identifier 51error 17..17: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
52error [17; 17): expected SEMICOLON 52error 17..17: expected SEMICOLON
53error [37; 37): expected one of `*`, `::`, `{`, `self`, `super` or an identifier 53error 37..37: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
54error [37; 37): expected SEMICOLON 54error 37..37: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0036_partial_use.rast b/crates/ra_syntax/test_data/parser/err/0036_partial_use.rast
index 1f2b4f6d9..f926b67d2 100644
--- a/crates/ra_syntax/test_data/parser/err/0036_partial_use.rast
+++ b/crates/ra_syntax/test_data/parser/err/0036_partial_use.rast
@@ -1,51 +1,51 @@
1SOURCE_FILE@[0; 37) 1SOURCE_FILE@0..37
2 USE_ITEM@[0; 36) 2 USE_ITEM@0..36
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 36) 5 USE_TREE@4..36
6 PATH@[4; 7) 6 PATH@4..7
7 PATH_SEGMENT@[4; 7) 7 PATH_SEGMENT@4..7
8 NAME_REF@[4; 7) 8 NAME_REF@4..7
9 IDENT@[4; 7) "std" 9 IDENT@4..7 "std"
10 COLON2@[7; 9) "::" 10 COLON2@7..9 "::"
11 USE_TREE_LIST@[9; 36) 11 USE_TREE_LIST@9..36
12 L_CURLY@[9; 10) "{" 12 L_CURLY@9..10 "{"
13 USE_TREE@[10; 22) 13 USE_TREE@10..22
14 PATH@[10; 22) 14 PATH@10..22
15 PATH@[10; 15) 15 PATH@10..15
16 PATH_SEGMENT@[10; 15) 16 PATH_SEGMENT@10..15
17 NAME_REF@[10; 15) 17 NAME_REF@10..15
18 IDENT@[10; 15) "error" 18 IDENT@10..15 "error"
19 COLON2@[15; 17) "::" 19 COLON2@15..17 "::"
20 PATH_SEGMENT@[17; 22) 20 PATH_SEGMENT@17..22
21 NAME_REF@[17; 22) 21 NAME_REF@17..22
22 IDENT@[17; 22) "Error" 22 IDENT@17..22 "Error"
23 ERROR@[22; 23) 23 ERROR@22..23
24 SEMICOLON@[22; 23) ";" 24 SEMICOLON@22..23 ";"
25 WHITESPACE@[23; 24) "\n" 25 WHITESPACE@23..24 "\n"
26 ERROR@[24; 27) 26 ERROR@24..27
27 USE_KW@[24; 27) "use" 27 USE_KW@24..27 "use"
28 WHITESPACE@[27; 28) " " 28 WHITESPACE@27..28 " "
29 USE_TREE@[28; 35) 29 USE_TREE@28..35
30 PATH@[28; 35) 30 PATH@28..35
31 PATH@[28; 31) 31 PATH@28..31
32 PATH_SEGMENT@[28; 31) 32 PATH_SEGMENT@28..31
33 NAME_REF@[28; 31) 33 NAME_REF@28..31
34 IDENT@[28; 31) "std" 34 IDENT@28..31 "std"
35 COLON2@[31; 33) "::" 35 COLON2@31..33 "::"
36 PATH_SEGMENT@[33; 35) 36 PATH_SEGMENT@33..35
37 NAME_REF@[33; 35) 37 NAME_REF@33..35
38 IDENT@[33; 35) "io" 38 IDENT@33..35 "io"
39 ERROR@[35; 36) 39 ERROR@35..36
40 SEMICOLON@[35; 36) ";" 40 SEMICOLON@35..36 ";"
41 WHITESPACE@[36; 37) "\n" 41 WHITESPACE@36..37 "\n"
42error [22; 22): expected COMMA 42error 22..22: expected COMMA
43error [22; 22): expected one of `*`, `::`, `{`, `self`, `super` or an identifier 43error 22..22: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
44error [23; 23): expected COMMA 44error 23..23: expected COMMA
45error [24; 24): expected one of `*`, `::`, `{`, `self`, `super` or an identifier 45error 24..24: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
46error [27; 27): expected COMMA 46error 27..27: expected COMMA
47error [35; 35): expected COMMA 47error 35..35: expected COMMA
48error [35; 35): expected one of `*`, `::`, `{`, `self`, `super` or an identifier 48error 35..35: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
49error [36; 36): expected COMMA 49error 36..36: expected COMMA
50error [36; 36): expected R_CURLY 50error 36..36: expected R_CURLY
51error [36; 36): expected SEMICOLON 51error 36..36: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/err/0037_visibility_in_traits.rast b/crates/ra_syntax/test_data/parser/err/0037_visibility_in_traits.rast
index 5319bf936..a328222aa 100644
--- a/crates/ra_syntax/test_data/parser/err/0037_visibility_in_traits.rast
+++ b/crates/ra_syntax/test_data/parser/err/0037_visibility_in_traits.rast
@@ -1,99 +1,99 @@
1SOURCE_FILE@[0; 118) 1SOURCE_FILE@0..118
2 IMPL_DEF@[0; 117) 2 IMPL_DEF@0..117
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "T" 9 IDENT@5..6 "T"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 FOR_KW@[7; 10) "for" 11 FOR_KW@7..10 "for"
12 WHITESPACE@[10; 11) " " 12 WHITESPACE@10..11 " "
13 TUPLE_TYPE@[11; 13) 13 TUPLE_TYPE@11..13
14 L_PAREN@[11; 12) "(" 14 L_PAREN@11..12 "("
15 R_PAREN@[12; 13) ")" 15 R_PAREN@12..13 ")"
16 WHITESPACE@[13; 14) " " 16 WHITESPACE@13..14 " "
17 ITEM_LIST@[14; 117) 17 ITEM_LIST@14..117
18 L_CURLY@[14; 15) "{" 18 L_CURLY@14..15 "{"
19 WHITESPACE@[15; 20) "\n " 19 WHITESPACE@15..20 "\n "
20 FN_DEF@[20; 31) 20 FN_DEF@20..31
21 FN_KW@[20; 22) "fn" 21 FN_KW@20..22 "fn"
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 NAME@[23; 26) 23 NAME@23..26
24 IDENT@[23; 26) "foo" 24 IDENT@23..26 "foo"
25 PARAM_LIST@[26; 28) 25 PARAM_LIST@26..28
26 L_PAREN@[26; 27) "(" 26 L_PAREN@26..27 "("
27 R_PAREN@[27; 28) ")" 27 R_PAREN@27..28 ")"
28 WHITESPACE@[28; 29) " " 28 WHITESPACE@28..29 " "
29 BLOCK_EXPR@[29; 31) 29 BLOCK_EXPR@29..31
30 BLOCK@[29; 31) 30 BLOCK@29..31
31 L_CURLY@[29; 30) "{" 31 L_CURLY@29..30 "{"
32 R_CURLY@[30; 31) "}" 32 R_CURLY@30..31 "}"
33 WHITESPACE@[31; 36) "\n " 33 WHITESPACE@31..36 "\n "
34 FN_DEF@[36; 51) 34 FN_DEF@36..51
35 VISIBILITY@[36; 39) 35 VISIBILITY@36..39
36 PUB_KW@[36; 39) "pub" 36 PUB_KW@36..39 "pub"
37 WHITESPACE@[39; 40) " " 37 WHITESPACE@39..40 " "
38 FN_KW@[40; 42) "fn" 38 FN_KW@40..42 "fn"
39 WHITESPACE@[42; 43) " " 39 WHITESPACE@42..43 " "
40 NAME@[43; 46) 40 NAME@43..46
41 IDENT@[43; 46) "bar" 41 IDENT@43..46 "bar"
42 PARAM_LIST@[46; 48) 42 PARAM_LIST@46..48
43 L_PAREN@[46; 47) "(" 43 L_PAREN@46..47 "("
44 R_PAREN@[47; 48) ")" 44 R_PAREN@47..48 ")"
45 WHITESPACE@[48; 49) " " 45 WHITESPACE@48..49 " "
46 BLOCK_EXPR@[49; 51) 46 BLOCK_EXPR@49..51
47 BLOCK@[49; 51) 47 BLOCK@49..51
48 L_CURLY@[49; 50) "{" 48 L_CURLY@49..50 "{"
49 R_CURLY@[50; 51) "}" 49 R_CURLY@50..51 "}"
50 WHITESPACE@[51; 56) "\n " 50 WHITESPACE@51..56 "\n "
51 TYPE_ALIAS_DEF@[56; 81) 51 TYPE_ALIAS_DEF@56..81
52 VISIBILITY@[56; 66) 52 VISIBILITY@56..66
53 PUB_KW@[56; 59) "pub" 53 PUB_KW@56..59 "pub"
54 L_PAREN@[59; 60) "(" 54 L_PAREN@59..60 "("
55 CRATE_KW@[60; 65) "crate" 55 CRATE_KW@60..65 "crate"
56 R_PAREN@[65; 66) ")" 56 R_PAREN@65..66 ")"
57 WHITESPACE@[66; 67) " " 57 WHITESPACE@66..67 " "
58 TYPE_KW@[67; 71) "type" 58 TYPE_KW@67..71 "type"
59 WHITESPACE@[71; 72) " " 59 WHITESPACE@71..72 " "
60 NAME@[72; 75) 60 NAME@72..75
61 IDENT@[72; 75) "Baz" 61 IDENT@72..75 "Baz"
62 WHITESPACE@[75; 76) " " 62 WHITESPACE@75..76 " "
63 EQ@[76; 77) "=" 63 EQ@76..77 "="
64 WHITESPACE@[77; 78) " " 64 WHITESPACE@77..78 " "
65 TUPLE_TYPE@[78; 80) 65 TUPLE_TYPE@78..80
66 L_PAREN@[78; 79) "(" 66 L_PAREN@78..79 "("
67 R_PAREN@[79; 80) ")" 67 R_PAREN@79..80 ")"
68 SEMICOLON@[80; 81) ";" 68 SEMICOLON@80..81 ";"
69 WHITESPACE@[81; 86) "\n " 69 WHITESPACE@81..86 "\n "
70 CONST_DEF@[86; 115) 70 CONST_DEF@86..115
71 VISIBILITY@[86; 96) 71 VISIBILITY@86..96
72 PUB_KW@[86; 89) "pub" 72 PUB_KW@86..89 "pub"
73 L_PAREN@[89; 90) "(" 73 L_PAREN@89..90 "("
74 CRATE_KW@[90; 95) "crate" 74 CRATE_KW@90..95 "crate"
75 R_PAREN@[95; 96) ")" 75 R_PAREN@95..96 ")"
76 WHITESPACE@[96; 97) " " 76 WHITESPACE@96..97 " "
77 CONST_KW@[97; 102) "const" 77 CONST_KW@97..102 "const"
78 WHITESPACE@[102; 103) " " 78 WHITESPACE@102..103 " "
79 NAME@[103; 104) 79 NAME@103..104
80 IDENT@[103; 104) "C" 80 IDENT@103..104 "C"
81 COLON@[104; 105) ":" 81 COLON@104..105 ":"
82 WHITESPACE@[105; 106) " " 82 WHITESPACE@105..106 " "
83 PATH_TYPE@[106; 109) 83 PATH_TYPE@106..109
84 PATH@[106; 109) 84 PATH@106..109
85 PATH_SEGMENT@[106; 109) 85 PATH_SEGMENT@106..109
86 NAME_REF@[106; 109) 86 NAME_REF@106..109
87 IDENT@[106; 109) "i32" 87 IDENT@106..109 "i32"
88 WHITESPACE@[109; 110) " " 88 WHITESPACE@109..110 " "
89 EQ@[110; 111) "=" 89 EQ@110..111 "="
90 WHITESPACE@[111; 112) " " 90 WHITESPACE@111..112 " "
91 LITERAL@[112; 114) 91 LITERAL@112..114
92 INT_NUMBER@[112; 114) "92" 92 INT_NUMBER@112..114 "92"
93 SEMICOLON@[114; 115) ";" 93 SEMICOLON@114..115 ";"
94 WHITESPACE@[115; 116) "\n" 94 WHITESPACE@115..116 "\n"
95 R_CURLY@[116; 117) "}" 95 R_CURLY@116..117 "}"
96 WHITESPACE@[117; 118) "\n" 96 WHITESPACE@117..118 "\n"
97error [36; 39): Unnecessary visibility qualifier 97error 36..39: Unnecessary visibility qualifier
98error [56; 66): Unnecessary visibility qualifier 98error 56..66: Unnecessary visibility qualifier
99error [86; 96): Unnecessary visibility qualifier 99error 86..96: Unnecessary visibility qualifier
diff --git a/crates/ra_syntax/test_data/parser/err/0038_endless_inclusive_range.rast b/crates/ra_syntax/test_data/parser/err/0038_endless_inclusive_range.rast
index 9efdf7ef4..bcd1fad69 100644
--- a/crates/ra_syntax/test_data/parser/err/0038_endless_inclusive_range.rast
+++ b/crates/ra_syntax/test_data/parser/err/0038_endless_inclusive_range.rast
@@ -1,30 +1,30 @@
1SOURCE_FILE@[0; 33) 1SOURCE_FILE@0..33
2 FN_DEF@[0; 32) 2 FN_DEF@0..32
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 32) 11 BLOCK_EXPR@10..32
12 BLOCK@[10; 32) 12 BLOCK@10..32
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 21) 15 EXPR_STMT@16..21
16 RANGE_EXPR@[16; 20) 16 RANGE_EXPR@16..20
17 LITERAL@[16; 17) 17 LITERAL@16..17
18 INT_NUMBER@[16; 17) "0" 18 INT_NUMBER@16..17 "0"
19 DOT2EQ@[17; 20) "..=" 19 DOT2EQ@17..20 "..="
20 SEMICOLON@[20; 21) ";" 20 SEMICOLON@20..21 ";"
21 WHITESPACE@[21; 26) "\n " 21 WHITESPACE@21..26 "\n "
22 EXPR_STMT@[26; 30) 22 EXPR_STMT@26..30
23 RANGE_EXPR@[26; 29) 23 RANGE_EXPR@26..29
24 DOT2EQ@[26; 29) "..=" 24 DOT2EQ@26..29 "..="
25 SEMICOLON@[29; 30) ";" 25 SEMICOLON@29..30 ";"
26 WHITESPACE@[30; 31) "\n" 26 WHITESPACE@30..31 "\n"
27 R_CURLY@[31; 32) "}" 27 R_CURLY@31..32 "}"
28 WHITESPACE@[32; 33) "\n" 28 WHITESPACE@32..33 "\n"
29error [16; 20): An inclusive range must have an end expression 29error 16..20: An inclusive range must have an end expression
30error [26; 29): An inclusive range must have an end expression 30error 26..29: An inclusive range must have an end expression
diff --git a/crates/ra_syntax/test_data/parser/err/0039_lambda_recovery.rast b/crates/ra_syntax/test_data/parser/err/0039_lambda_recovery.rast
index edf9c3247..433ea7bad 100644
--- a/crates/ra_syntax/test_data/parser/err/0039_lambda_recovery.rast
+++ b/crates/ra_syntax/test_data/parser/err/0039_lambda_recovery.rast
@@ -1,83 +1,83 @@
1SOURCE_FILE@[0; 83) 1SOURCE_FILE@0..83
2 FN_DEF@[0; 82) 2 FN_DEF@0..82
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 RET_TYPE@[9; 15) 11 RET_TYPE@9..15
12 THIN_ARROW@[9; 11) "->" 12 THIN_ARROW@9..11 "->"
13 WHITESPACE@[11; 12) " " 13 WHITESPACE@11..12 " "
14 PATH_TYPE@[12; 15) 14 PATH_TYPE@12..15
15 PATH@[12; 15) 15 PATH@12..15
16 PATH_SEGMENT@[12; 15) 16 PATH_SEGMENT@12..15
17 NAME_REF@[12; 15) 17 NAME_REF@12..15
18 IDENT@[12; 15) "i32" 18 IDENT@12..15 "i32"
19 WHITESPACE@[15; 16) " " 19 WHITESPACE@15..16 " "
20 BLOCK_EXPR@[16; 82) 20 BLOCK_EXPR@16..82
21 BLOCK@[16; 82) 21 BLOCK@16..82
22 L_CURLY@[16; 17) "{" 22 L_CURLY@16..17 "{"
23 WHITESPACE@[17; 22) "\n " 23 WHITESPACE@17..22 "\n "
24 EXPR_STMT@[22; 80) 24 EXPR_STMT@22..80
25 METHOD_CALL_EXPR@[22; 79) 25 METHOD_CALL_EXPR@22..79
26 METHOD_CALL_EXPR@[22; 57) 26 METHOD_CALL_EXPR@22..57
27 METHOD_CALL_EXPR@[22; 38) 27 METHOD_CALL_EXPR@22..38
28 ARRAY_EXPR@[22; 31) 28 ARRAY_EXPR@22..31
29 L_BRACK@[22; 23) "[" 29 L_BRACK@22..23 "["
30 LITERAL@[23; 24) 30 LITERAL@23..24
31 INT_NUMBER@[23; 24) "1" 31 INT_NUMBER@23..24 "1"
32 COMMA@[24; 25) "," 32 COMMA@24..25 ","
33 WHITESPACE@[25; 26) " " 33 WHITESPACE@25..26 " "
34 LITERAL@[26; 27) 34 LITERAL@26..27
35 INT_NUMBER@[26; 27) "2" 35 INT_NUMBER@26..27 "2"
36 COMMA@[27; 28) "," 36 COMMA@27..28 ","
37 WHITESPACE@[28; 29) " " 37 WHITESPACE@28..29 " "
38 LITERAL@[29; 30) 38 LITERAL@29..30
39 INT_NUMBER@[29; 30) "3" 39 INT_NUMBER@29..30 "3"
40 R_BRACK@[30; 31) "]" 40 R_BRACK@30..31 "]"
41 DOT@[31; 32) "." 41 DOT@31..32 "."
42 NAME_REF@[32; 36) 42 NAME_REF@32..36
43 IDENT@[32; 36) "iter" 43 IDENT@32..36 "iter"
44 ARG_LIST@[36; 38) 44 ARG_LIST@36..38
45 L_PAREN@[36; 37) "(" 45 L_PAREN@36..37 "("
46 R_PAREN@[37; 38) ")" 46 R_PAREN@37..38 ")"
47 WHITESPACE@[38; 47) "\n " 47 WHITESPACE@38..47 "\n "
48 DOT@[47; 48) "." 48 DOT@47..48 "."
49 NAME_REF@[48; 51) 49 NAME_REF@48..51
50 IDENT@[48; 51) "map" 50 IDENT@48..51 "map"
51 ARG_LIST@[51; 57) 51 ARG_LIST@51..57
52 L_PAREN@[51; 52) "(" 52 L_PAREN@51..52 "("
53 LAMBDA_EXPR@[52; 56) 53 LAMBDA_EXPR@52..56
54 PARAM_LIST@[52; 56) 54 PARAM_LIST@52..56
55 PIPE@[52; 53) "|" 55 PIPE@52..53 "|"
56 PARAM@[53; 55) 56 PARAM@53..55
57 BIND_PAT@[53; 55) 57 BIND_PAT@53..55
58 NAME@[53; 55) 58 NAME@53..55
59 IDENT@[53; 55) "it" 59 IDENT@53..55 "it"
60 PIPE@[55; 56) "|" 60 PIPE@55..56 "|"
61 R_PAREN@[56; 57) ")" 61 R_PAREN@56..57 ")"
62 WHITESPACE@[57; 66) "\n " 62 WHITESPACE@57..66 "\n "
63 DOT@[66; 67) "." 63 DOT@66..67 "."
64 NAME_REF@[67; 70) 64 NAME_REF@67..70
65 IDENT@[67; 70) "max" 65 IDENT@67..70 "max"
66 TYPE_ARG_LIST@[70; 77) 66 TYPE_ARG_LIST@70..77
67 COLON2@[70; 72) "::" 67 COLON2@70..72 "::"
68 L_ANGLE@[72; 73) "<" 68 L_ANGLE@72..73 "<"
69 TYPE_ARG@[73; 76) 69 TYPE_ARG@73..76
70 PATH_TYPE@[73; 76) 70 PATH_TYPE@73..76
71 PATH@[73; 76) 71 PATH@73..76
72 PATH_SEGMENT@[73; 76) 72 PATH_SEGMENT@73..76
73 NAME_REF@[73; 76) 73 NAME_REF@73..76
74 IDENT@[73; 76) "i32" 74 IDENT@73..76 "i32"
75 R_ANGLE@[76; 77) ">" 75 R_ANGLE@76..77 ">"
76 ARG_LIST@[77; 79) 76 ARG_LIST@77..79
77 L_PAREN@[77; 78) "(" 77 L_PAREN@77..78 "("
78 R_PAREN@[78; 79) ")" 78 R_PAREN@78..79 ")"
79 SEMICOLON@[79; 80) ";" 79 SEMICOLON@79..80 ";"
80 WHITESPACE@[80; 81) "\n" 80 WHITESPACE@80..81 "\n"
81 R_CURLY@[81; 82) "}" 81 R_CURLY@81..82 "}"
82 WHITESPACE@[82; 83) "\n" 82 WHITESPACE@82..83 "\n"
83error [56; 56): expected expression 83error 56..56: expected expression
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast b/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast
index 9d807c84f..bf70ebca4 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast
@@ -1,27 +1,27 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@0..18
2 TYPE_ALIAS_DEF@[0; 12) 2 TYPE_ALIAS_DEF@0..12
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "T" 6 IDENT@5..6 "T"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 SLICE_TYPE@[9; 12) 10 SLICE_TYPE@9..12
11 L_BRACK@[9; 10) "[" 11 L_BRACK@9..10 "["
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@10..12
13 L_PAREN@[10; 11) "(" 13 L_PAREN@10..11 "("
14 R_PAREN@[11; 12) ")" 14 R_PAREN@11..12 ")"
15 WHITESPACE@[12; 13) " " 15 WHITESPACE@12..13 " "
16 ERROR@[13; 15) 16 ERROR@13..15
17 INT_NUMBER@[13; 15) "92" 17 INT_NUMBER@13..15 "92"
18 ERROR@[15; 16) 18 ERROR@15..16
19 R_BRACK@[15; 16) "]" 19 R_BRACK@15..16 "]"
20 ERROR@[16; 17) 20 ERROR@16..17
21 SEMICOLON@[16; 17) ";" 21 SEMICOLON@16..17 ";"
22 WHITESPACE@[17; 18) "\n" 22 WHITESPACE@17..18 "\n"
23error [12; 12): expected `;` or `]` 23error 12..12: expected `;` or `]`
24error [12; 12): expected SEMICOLON 24error 12..12: expected SEMICOLON
25error [13; 13): expected an item 25error 13..13: expected an item
26error [15; 15): expected an item 26error 15..15: expected an item
27error [16; 16): expected an item 27error 16..16: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast b/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast
index a85855f8c..85bf276a0 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast
@@ -1,29 +1,29 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@0..30
2 FN_DEF@[0; 29) 2 FN_DEF@0..29
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 29) 11 BLOCK_EXPR@10..29
12 BLOCK@[10; 29) 12 BLOCK@10..29
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 22) 15 EXPR_STMT@16..22
16 ERROR@[16; 22) 16 ERROR@16..22
17 LABEL@[16; 22) 17 LABEL@16..22
18 LIFETIME@[16; 21) "\'loop" 18 LIFETIME@16..21 "\'loop"
19 COLON@[21; 22) ":" 19 COLON@21..22 ":"
20 WHITESPACE@[22; 23) " " 20 WHITESPACE@22..23 " "
21 IMPL_DEF@[23; 27) 21 IMPL_DEF@23..27
22 IMPL_KW@[23; 27) "impl" 22 IMPL_KW@23..27 "impl"
23 WHITESPACE@[27; 28) "\n" 23 WHITESPACE@27..28 "\n"
24 R_CURLY@[28; 29) "}" 24 R_CURLY@28..29 "}"
25 WHITESPACE@[29; 30) "\n" 25 WHITESPACE@29..30 "\n"
26error [22; 22): expected a loop 26error 22..22: expected a loop
27error [22; 22): expected SEMICOLON 27error 22..22: expected SEMICOLON
28error [27; 27): expected type 28error 27..27: expected type
29error [27; 27): expected `{` 29error 27..27: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast b/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast
index e9efad674..95bcc3c0a 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 14) 1SOURCE_FILE@0..14
2 TYPE_ALIAS_DEF@[0; 13) 2 TYPE_ALIAS_DEF@0..13
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "T" 6 IDENT@5..6 "T"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 POINTER_TYPE@[9; 12) 10 POINTER_TYPE@9..12
11 STAR@[9; 10) "*" 11 STAR@9..10 "*"
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@10..12
13 L_PAREN@[10; 11) "(" 13 L_PAREN@10..11 "("
14 R_PAREN@[11; 12) ")" 14 R_PAREN@11..12 ")"
15 SEMICOLON@[12; 13) ";" 15 SEMICOLON@12..13 ";"
16 WHITESPACE@[13; 14) "\n" 16 WHITESPACE@13..14 "\n"
17error [10; 10): expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate) 17error 10..10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rast b/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rast
index 124f0a891..fd939be8d 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rast
@@ -1,79 +1,79 @@
1SOURCE_FILE@[0; 87) 1SOURCE_FILE@0..87
2 IMPL_DEF@[0; 12) 2 IMPL_DEF@0..12
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 9) 5 PATH_TYPE@5..9
6 PATH@[5; 9) 6 PATH@5..9
7 PATH_SEGMENT@[5; 9) 7 PATH_SEGMENT@5..9
8 NAME_REF@[5; 9) 8 NAME_REF@5..9
9 IDENT@[5; 9) "Type" 9 IDENT@5..9 "Type"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 ITEM_LIST@[10; 12) 11 ITEM_LIST@10..12
12 L_CURLY@[10; 11) "{" 12 L_CURLY@10..11 "{"
13 R_CURLY@[11; 12) "}" 13 R_CURLY@11..12 "}"
14 WHITESPACE@[12; 13) "\n" 14 WHITESPACE@12..13 "\n"
15 IMPL_DEF@[13; 33) 15 IMPL_DEF@13..33
16 IMPL_KW@[13; 17) "impl" 16 IMPL_KW@13..17 "impl"
17 WHITESPACE@[17; 18) " " 17 WHITESPACE@17..18 " "
18 PATH_TYPE@[18; 24) 18 PATH_TYPE@18..24
19 PATH@[18; 24) 19 PATH@18..24
20 PATH_SEGMENT@[18; 24) 20 PATH_SEGMENT@18..24
21 NAME_REF@[18; 24) 21 NAME_REF@18..24
22 IDENT@[18; 24) "Trait1" 22 IDENT@18..24 "Trait1"
23 WHITESPACE@[24; 25) " " 23 WHITESPACE@24..25 " "
24 FOR_KW@[25; 28) "for" 24 FOR_KW@25..28 "for"
25 WHITESPACE@[28; 29) " " 25 WHITESPACE@28..29 " "
26 PATH_TYPE@[29; 30) 26 PATH_TYPE@29..30
27 PATH@[29; 30) 27 PATH@29..30
28 PATH_SEGMENT@[29; 30) 28 PATH_SEGMENT@29..30
29 NAME_REF@[29; 30) 29 NAME_REF@29..30
30 IDENT@[29; 30) "T" 30 IDENT@29..30 "T"
31 WHITESPACE@[30; 31) " " 31 WHITESPACE@30..31 " "
32 ITEM_LIST@[31; 33) 32 ITEM_LIST@31..33
33 L_CURLY@[31; 32) "{" 33 L_CURLY@31..32 "{"
34 R_CURLY@[32; 33) "}" 34 R_CURLY@32..33 "}"
35 WHITESPACE@[33; 34) "\n" 35 WHITESPACE@33..34 "\n"
36 IMPL_DEF@[34; 38) 36 IMPL_DEF@34..38
37 IMPL_KW@[34; 38) "impl" 37 IMPL_KW@34..38 "impl"
38 WHITESPACE@[38; 39) " " 38 WHITESPACE@38..39 " "
39 IMPL_DEF@[39; 54) 39 IMPL_DEF@39..54
40 IMPL_KW@[39; 43) "impl" 40 IMPL_KW@39..43 "impl"
41 WHITESPACE@[43; 44) " " 41 WHITESPACE@43..44 " "
42 PATH_TYPE@[44; 51) 42 PATH_TYPE@44..51
43 PATH@[44; 51) 43 PATH@44..51
44 PATH_SEGMENT@[44; 51) 44 PATH_SEGMENT@44..51
45 NAME_REF@[44; 51) 45 NAME_REF@44..51
46 IDENT@[44; 51) "NotType" 46 IDENT@44..51 "NotType"
47 WHITESPACE@[51; 52) " " 47 WHITESPACE@51..52 " "
48 ITEM_LIST@[52; 54) 48 ITEM_LIST@52..54
49 L_CURLY@[52; 53) "{" 49 L_CURLY@52..53 "{"
50 R_CURLY@[53; 54) "}" 50 R_CURLY@53..54 "}"
51 WHITESPACE@[54; 55) "\n" 51 WHITESPACE@54..55 "\n"
52 IMPL_DEF@[55; 70) 52 IMPL_DEF@55..70
53 IMPL_KW@[55; 59) "impl" 53 IMPL_KW@55..59 "impl"
54 WHITESPACE@[59; 60) " " 54 WHITESPACE@59..60 " "
55 PATH_TYPE@[60; 66) 55 PATH_TYPE@60..66
56 PATH@[60; 66) 56 PATH@60..66
57 PATH_SEGMENT@[60; 66) 57 PATH_SEGMENT@60..66
58 NAME_REF@[60; 66) 58 NAME_REF@60..66
59 IDENT@[60; 66) "Trait2" 59 IDENT@60..66 "Trait2"
60 WHITESPACE@[66; 67) " " 60 WHITESPACE@66..67 " "
61 FOR_KW@[67; 70) "for" 61 FOR_KW@67..70 "for"
62 WHITESPACE@[70; 71) " " 62 WHITESPACE@70..71 " "
63 IMPL_DEF@[71; 86) 63 IMPL_DEF@71..86
64 IMPL_KW@[71; 75) "impl" 64 IMPL_KW@71..75 "impl"
65 WHITESPACE@[75; 76) " " 65 WHITESPACE@75..76 " "
66 PATH_TYPE@[76; 83) 66 PATH_TYPE@76..83
67 PATH@[76; 83) 67 PATH@76..83
68 PATH_SEGMENT@[76; 83) 68 PATH_SEGMENT@76..83
69 NAME_REF@[76; 83) 69 NAME_REF@76..83
70 IDENT@[76; 83) "NotType" 70 IDENT@76..83 "NotType"
71 WHITESPACE@[83; 84) " " 71 WHITESPACE@83..84 " "
72 ITEM_LIST@[84; 86) 72 ITEM_LIST@84..86
73 L_CURLY@[84; 85) "{" 73 L_CURLY@84..85 "{"
74 R_CURLY@[85; 86) "}" 74 R_CURLY@85..86 "}"
75 WHITESPACE@[86; 87) "\n" 75 WHITESPACE@86..87 "\n"
76error [38; 38): expected trait or type 76error 38..38: expected trait or type
77error [38; 38): expected `{` 77error 38..38: expected `{`
78error [70; 70): expected trait or type 78error 70..70: expected trait or type
79error [70; 70): expected `{` 79error 70..70: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast b/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast
index b8a494085..90202d764 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast
@@ -1,23 +1,23 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@0..20
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@0..15
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "F" 6 IDENT@5..6 "F"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 UNSAFE_KW@[9; 15) "unsafe" 10 UNSAFE_KW@9..15 "unsafe"
11 WHITESPACE@[15; 16) " " 11 WHITESPACE@15..16 " "
12 ERROR@[16; 17) 12 ERROR@16..17
13 L_PAREN@[16; 17) "(" 13 L_PAREN@16..17 "("
14 ERROR@[17; 18) 14 ERROR@17..18
15 R_PAREN@[17; 18) ")" 15 R_PAREN@17..18 ")"
16 ERROR@[18; 19) 16 ERROR@18..19
17 SEMICOLON@[18; 19) ";" 17 SEMICOLON@18..19 ";"
18 WHITESPACE@[19; 20) "\n" 18 WHITESPACE@19..20 "\n"
19error [15; 15): expected `fn` 19error 15..15: expected `fn`
20error [15; 15): expected SEMICOLON 20error 15..15: expected SEMICOLON
21error [16; 16): expected an item 21error 16..16: expected an item
22error [17; 17): expected an item 22error 17..17: expected an item
23error [18; 18): expected an item 23error 18..18: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast b/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast
index 690acdca3..b901c17f7 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 33) 1SOURCE_FILE@0..33
2 FN_DEF@[0; 10) 2 FN_DEF@0..10
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 BLOCK_EXPR@[8; 10) 10 BLOCK_EXPR@8..10
11 BLOCK@[8; 10) 11 BLOCK@8..10
12 L_CURLY@[8; 9) "{" 12 L_CURLY@8..9 "{"
13 R_CURLY@[9; 10) "}" 13 R_CURLY@9..10 "}"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 ERROR@[11; 17) 15 ERROR@11..17
16 UNSAFE_KW@[11; 17) "unsafe" 16 UNSAFE_KW@11..17 "unsafe"
17 WHITESPACE@[17; 18) " " 17 WHITESPACE@17..18 " "
18 ERROR@[18; 21) 18 ERROR@18..21
19 L_CURLY@[18; 19) "{" 19 L_CURLY@18..19 "{"
20 WHITESPACE@[19; 20) " " 20 WHITESPACE@19..20 " "
21 R_CURLY@[20; 21) "}" 21 R_CURLY@20..21 "}"
22 WHITESPACE@[21; 22) " " 22 WHITESPACE@21..22 " "
23 FN_DEF@[22; 32) 23 FN_DEF@22..32
24 FN_KW@[22; 24) "fn" 24 FN_KW@22..24 "fn"
25 WHITESPACE@[24; 25) " " 25 WHITESPACE@24..25 " "
26 NAME@[25; 28) 26 NAME@25..28
27 IDENT@[25; 28) "bar" 27 IDENT@25..28 "bar"
28 PARAM_LIST@[28; 30) 28 PARAM_LIST@28..30
29 L_PAREN@[28; 29) "(" 29 L_PAREN@28..29 "("
30 R_PAREN@[29; 30) ")" 30 R_PAREN@29..30 ")"
31 BLOCK_EXPR@[30; 32) 31 BLOCK_EXPR@30..32
32 BLOCK@[30; 32) 32 BLOCK@30..32
33 L_CURLY@[30; 31) "{" 33 L_CURLY@30..31 "{"
34 R_CURLY@[31; 32) "}" 34 R_CURLY@31..32 "}"
35 WHITESPACE@[32; 33) "\n" 35 WHITESPACE@32..33 "\n"
36error [11; 11): expected an item 36error 11..11: expected an item
37error [18; 18): expected an item 37error 18..18: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast b/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast
index c3f7eb477..3f48b86ed 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@0..30
2 FN_DEF@[0; 29) 2 FN_DEF@0..29
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 29) 11 BLOCK_EXPR@9..29
12 BLOCK@[9; 29) 12 BLOCK@9..29
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 LET_STMT@[11; 27) 15 LET_STMT@11..27
16 LET_KW@[11; 14) "let" 16 LET_KW@11..14 "let"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 PLACEHOLDER_PAT@[15; 16) 18 PLACEHOLDER_PAT@15..16
19 UNDERSCORE@[15; 16) "_" 19 UNDERSCORE@15..16 "_"
20 WHITESPACE@[16; 17) " " 20 WHITESPACE@16..17 " "
21 EQ@[17; 18) "=" 21 EQ@17..18 "="
22 WHITESPACE@[18; 19) " " 22 WHITESPACE@18..19 " "
23 BLOCK_EXPR@[19; 27) 23 BLOCK_EXPR@19..27
24 ASYNC_KW@[19; 24) "async" 24 ASYNC_KW@19..24 "async"
25 WHITESPACE@[24; 25) " " 25 WHITESPACE@24..25 " "
26 BLOCK@[25; 27) 26 BLOCK@25..27
27 L_CURLY@[25; 26) "{" 27 L_CURLY@25..26 "{"
28 R_CURLY@[26; 27) "}" 28 R_CURLY@26..27 "}"
29 WHITESPACE@[27; 28) " " 29 WHITESPACE@27..28 " "
30 R_CURLY@[28; 29) "}" 30 R_CURLY@28..29 "}"
31 WHITESPACE@[29; 30) "\n" 31 WHITESPACE@29..30 "\n"
32error [27; 27): expected SEMICOLON 32error 27..27: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rast b/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rast
index a345f8488..be02eaeeb 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rast
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@0..21
2 FN_DEF@[0; 20) 2 FN_DEF@0..20
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 20) 11 BLOCK_EXPR@9..20
12 BLOCK@[9; 20) 12 BLOCK@9..20
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 ERROR@[11; 14) 15 ERROR@11..14
16 VISIBILITY@[11; 14) 16 VISIBILITY@11..14
17 PUB_KW@[11; 14) "pub" 17 PUB_KW@11..14 "pub"
18 WHITESPACE@[14; 15) " " 18 WHITESPACE@14..15 " "
19 EXPR_STMT@[15; 18) 19 EXPR_STMT@15..18
20 LITERAL@[15; 17) 20 LITERAL@15..17
21 INT_NUMBER@[15; 17) "92" 21 INT_NUMBER@15..17 "92"
22 SEMICOLON@[17; 18) ";" 22 SEMICOLON@17..18 ";"
23 WHITESPACE@[18; 19) " " 23 WHITESPACE@18..19 " "
24 R_CURLY@[19; 20) "}" 24 R_CURLY@19..20 "}"
25 WHITESPACE@[20; 21) "\n" 25 WHITESPACE@20..21 "\n"
26error [14; 14): expected an item 26error 14..14: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast b/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast
index c3a70147a..b344e4f7f 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast
@@ -1,61 +1,61 @@
1SOURCE_FILE@[0; 48) 1SOURCE_FILE@0..48
2 FN_DEF@[0; 47) 2 FN_DEF@0..47
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 47) 11 BLOCK_EXPR@9..47
12 BLOCK@[9; 47) 12 BLOCK@9..47
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 14) "\n " 14 WHITESPACE@10..14 "\n "
15 EXPR_STMT@[14; 25) 15 EXPR_STMT@14..25
16 ATTR@[14; 18) 16 ATTR@14..18
17 POUND@[14; 15) "#" 17 POUND@14..15 "#"
18 L_BRACK@[15; 16) "[" 18 L_BRACK@15..16 "["
19 PATH@[16; 17) 19 PATH@16..17
20 PATH_SEGMENT@[16; 17) 20 PATH_SEGMENT@16..17
21 NAME_REF@[16; 17) 21 NAME_REF@16..17
22 IDENT@[16; 17) "A" 22 IDENT@16..17 "A"
23 R_BRACK@[17; 18) "]" 23 R_BRACK@17..18 "]"
24 WHITESPACE@[18; 19) " " 24 WHITESPACE@18..19 " "
25 BIN_EXPR@[19; 24) 25 BIN_EXPR@19..24
26 LITERAL@[19; 20) 26 LITERAL@19..20
27 INT_NUMBER@[19; 20) "1" 27 INT_NUMBER@19..20 "1"
28 WHITESPACE@[20; 21) " " 28 WHITESPACE@20..21 " "
29 PLUS@[21; 22) "+" 29 PLUS@21..22 "+"
30 WHITESPACE@[22; 23) " " 30 WHITESPACE@22..23 " "
31 LITERAL@[23; 24) 31 LITERAL@23..24
32 INT_NUMBER@[23; 24) "2" 32 INT_NUMBER@23..24 "2"
33 SEMICOLON@[24; 25) ";" 33 SEMICOLON@24..25 ";"
34 WHITESPACE@[25; 29) "\n " 34 WHITESPACE@25..29 "\n "
35 EXPR_STMT@[29; 45) 35 EXPR_STMT@29..45
36 ATTR@[29; 33) 36 ATTR@29..33
37 POUND@[29; 30) "#" 37 POUND@29..30 "#"
38 L_BRACK@[30; 31) "[" 38 L_BRACK@30..31 "["
39 PATH@[31; 32) 39 PATH@31..32
40 PATH_SEGMENT@[31; 32) 40 PATH_SEGMENT@31..32
41 NAME_REF@[31; 32) 41 NAME_REF@31..32
42 IDENT@[31; 32) "B" 42 IDENT@31..32 "B"
43 R_BRACK@[32; 33) "]" 43 R_BRACK@32..33 "]"
44 WHITESPACE@[33; 34) " " 44 WHITESPACE@33..34 " "
45 IF_EXPR@[34; 44) 45 IF_EXPR@34..44
46 IF_KW@[34; 36) "if" 46 IF_KW@34..36 "if"
47 WHITESPACE@[36; 37) " " 47 WHITESPACE@36..37 " "
48 CONDITION@[37; 41) 48 CONDITION@37..41
49 LITERAL@[37; 41) 49 LITERAL@37..41
50 TRUE_KW@[37; 41) "true" 50 TRUE_KW@37..41 "true"
51 WHITESPACE@[41; 42) " " 51 WHITESPACE@41..42 " "
52 BLOCK_EXPR@[42; 44) 52 BLOCK_EXPR@42..44
53 BLOCK@[42; 44) 53 BLOCK@42..44
54 L_CURLY@[42; 43) "{" 54 L_CURLY@42..43 "{"
55 R_CURLY@[43; 44) "}" 55 R_CURLY@43..44 "}"
56 SEMICOLON@[44; 45) ";" 56 SEMICOLON@44..45 ";"
57 WHITESPACE@[45; 46) "\n" 57 WHITESPACE@45..46 "\n"
58 R_CURLY@[46; 47) "}" 58 R_CURLY@46..47 "}"
59 WHITESPACE@[47; 48) "\n" 59 WHITESPACE@47..48 "\n"
60error [24; 24): attributes are not allowed on BIN_EXPR 60error 24..24: attributes are not allowed on BIN_EXPR
61error [44; 44): attributes are not allowed on IF_EXPR 61error 44..44: attributes are not allowed on IF_EXPR
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast b/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast
index 61d737abe..5339a84d7 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast
@@ -1,53 +1,53 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@0..47
2 FN_DEF@[0; 46) 2 FN_DEF@0..46
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 46) 11 BLOCK_EXPR@9..46
12 BLOCK@[9; 46) 12 BLOCK@9..46
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 20) 15 EXPR_STMT@15..20
16 FIELD_EXPR@[15; 19) 16 FIELD_EXPR@15..19
17 PATH_EXPR@[15; 16) 17 PATH_EXPR@15..16
18 PATH@[15; 16) 18 PATH@15..16
19 PATH_SEGMENT@[15; 16) 19 PATH_SEGMENT@15..16
20 NAME_REF@[15; 16) 20 NAME_REF@15..16
21 IDENT@[15; 16) "x" 21 IDENT@15..16 "x"
22 DOT@[16; 17) "." 22 DOT@16..17 "."
23 FLOAT_NUMBER@[17; 19) "0." 23 FLOAT_NUMBER@17..19 "0."
24 SEMICOLON@[19; 20) ";" 24 SEMICOLON@19..20 ";"
25 WHITESPACE@[20; 25) "\n " 25 WHITESPACE@20..25 "\n "
26 EXPR_STMT@[25; 32) 26 EXPR_STMT@25..32
27 FIELD_EXPR@[25; 31) 27 FIELD_EXPR@25..31
28 PATH_EXPR@[25; 26) 28 PATH_EXPR@25..26
29 PATH@[25; 26) 29 PATH@25..26
30 PATH_SEGMENT@[25; 26) 30 PATH_SEGMENT@25..26
31 NAME_REF@[25; 26) 31 NAME_REF@25..26
32 IDENT@[25; 26) "x" 32 IDENT@25..26 "x"
33 DOT@[26; 27) "." 33 DOT@26..27 "."
34 NAME_REF@[27; 31) 34 NAME_REF@27..31
35 INT_NUMBER@[27; 31) "1i32" 35 INT_NUMBER@27..31 "1i32"
36 SEMICOLON@[31; 32) ";" 36 SEMICOLON@31..32 ";"
37 WHITESPACE@[32; 37) "\n " 37 WHITESPACE@32..37 "\n "
38 EXPR_STMT@[37; 44) 38 EXPR_STMT@37..44
39 FIELD_EXPR@[37; 43) 39 FIELD_EXPR@37..43
40 PATH_EXPR@[37; 38) 40 PATH_EXPR@37..38
41 PATH@[37; 38) 41 PATH@37..38
42 PATH_SEGMENT@[37; 38) 42 PATH_SEGMENT@37..38
43 NAME_REF@[37; 38) 43 NAME_REF@37..38
44 IDENT@[37; 38) "x" 44 IDENT@37..38 "x"
45 DOT@[38; 39) "." 45 DOT@38..39 "."
46 NAME_REF@[39; 43) 46 NAME_REF@39..43
47 INT_NUMBER@[39; 43) "0x01" 47 INT_NUMBER@39..43 "0x01"
48 SEMICOLON@[43; 44) ";" 48 SEMICOLON@43..44 ";"
49 WHITESPACE@[44; 45) "\n" 49 WHITESPACE@44..45 "\n"
50 R_CURLY@[45; 46) "}" 50 R_CURLY@45..46 "}"
51 WHITESPACE@[46; 47) "\n" 51 WHITESPACE@46..47 "\n"
52error [27; 31): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix 52error 27..31: Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
53error [39; 43): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix 53error 39..43: Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rast b/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rast
index f6ac0feaf..20ed39046 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rast
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 50) 1SOURCE_FILE@0..50
2 ERROR@[0; 6) 2 ERROR@0..6
3 UNSAFE_KW@[0; 6) "unsafe" 3 UNSAFE_KW@0..6 "unsafe"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 FN_DEF@[7; 24) 5 FN_DEF@7..24
6 ASYNC_KW@[7; 12) "async" 6 ASYNC_KW@7..12 "async"
7 WHITESPACE@[12; 13) " " 7 WHITESPACE@12..13 " "
8 FN_KW@[13; 15) "fn" 8 FN_KW@13..15 "fn"
9 WHITESPACE@[15; 16) " " 9 WHITESPACE@15..16 " "
10 NAME@[16; 19) 10 NAME@16..19
11 IDENT@[16; 19) "foo" 11 IDENT@16..19 "foo"
12 PARAM_LIST@[19; 21) 12 PARAM_LIST@19..21
13 L_PAREN@[19; 20) "(" 13 L_PAREN@19..20 "("
14 R_PAREN@[20; 21) ")" 14 R_PAREN@20..21 ")"
15 WHITESPACE@[21; 22) " " 15 WHITESPACE@21..22 " "
16 BLOCK_EXPR@[22; 24) 16 BLOCK_EXPR@22..24
17 BLOCK@[22; 24) 17 BLOCK@22..24
18 L_CURLY@[22; 23) "{" 18 L_CURLY@22..23 "{"
19 R_CURLY@[23; 24) "}" 19 R_CURLY@23..24 "}"
20 WHITESPACE@[24; 25) "\n" 20 WHITESPACE@24..25 "\n"
21 ERROR@[25; 31) 21 ERROR@25..31
22 UNSAFE_KW@[25; 31) "unsafe" 22 UNSAFE_KW@25..31 "unsafe"
23 WHITESPACE@[31; 32) " " 23 WHITESPACE@31..32 " "
24 FN_DEF@[32; 49) 24 FN_DEF@32..49
25 CONST_KW@[32; 37) "const" 25 CONST_KW@32..37 "const"
26 WHITESPACE@[37; 38) " " 26 WHITESPACE@37..38 " "
27 FN_KW@[38; 40) "fn" 27 FN_KW@38..40 "fn"
28 WHITESPACE@[40; 41) " " 28 WHITESPACE@40..41 " "
29 NAME@[41; 44) 29 NAME@41..44
30 IDENT@[41; 44) "bar" 30 IDENT@41..44 "bar"
31 PARAM_LIST@[44; 46) 31 PARAM_LIST@44..46
32 L_PAREN@[44; 45) "(" 32 L_PAREN@44..45 "("
33 R_PAREN@[45; 46) ")" 33 R_PAREN@45..46 ")"
34 WHITESPACE@[46; 47) " " 34 WHITESPACE@46..47 " "
35 BLOCK_EXPR@[47; 49) 35 BLOCK_EXPR@47..49
36 BLOCK@[47; 49) 36 BLOCK@47..49
37 L_CURLY@[47; 48) "{" 37 L_CURLY@47..48 "{"
38 R_CURLY@[48; 49) "}" 38 R_CURLY@48..49 "}"
39 WHITESPACE@[49; 50) "\n" 39 WHITESPACE@49..50 "\n"
40error [6; 6): expected existential, fn, trait or impl 40error 6..6: expected existential, fn, trait or impl
41error [31; 31): expected existential, fn, trait or impl 41error 31..31: expected existential, fn, trait or impl
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0013_static_underscore.rast b/crates/ra_syntax/test_data/parser/inline/err/0013_static_underscore.rast
index 62fca0a39..ebcc26e0d 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0013_static_underscore.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0013_static_underscore.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 STATIC_DEF@[0; 18) 2 STATIC_DEF@0..18
3 STATIC_KW@[0; 6) "static" 3 STATIC_KW@0..6 "static"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 ERROR@[7; 8) 5 ERROR@7..8
6 UNDERSCORE@[7; 8) "_" 6 UNDERSCORE@7..8 "_"
7 COLON@[8; 9) ":" 7 COLON@8..9 ":"
8 WHITESPACE@[9; 10) " " 8 WHITESPACE@9..10 " "
9 PATH_TYPE@[10; 13) 9 PATH_TYPE@10..13
10 PATH@[10; 13) 10 PATH@10..13
11 PATH_SEGMENT@[10; 13) 11 PATH_SEGMENT@10..13
12 NAME_REF@[10; 13) 12 NAME_REF@10..13
13 IDENT@[10; 13) "i32" 13 IDENT@10..13 "i32"
14 WHITESPACE@[13; 14) " " 14 WHITESPACE@13..14 " "
15 EQ@[14; 15) "=" 15 EQ@14..15 "="
16 WHITESPACE@[15; 16) " " 16 WHITESPACE@15..16 " "
17 LITERAL@[16; 17) 17 LITERAL@16..17
18 INT_NUMBER@[16; 17) "5" 18 INT_NUMBER@16..17 "5"
19 SEMICOLON@[17; 18) ";" 19 SEMICOLON@17..18 ";"
20 WHITESPACE@[18; 19) "\n" 20 WHITESPACE@18..19 "\n"
21error [7; 7): expected a name 21error 7..7: expected a name
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rast b/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rast
index aa960d3ef..88567263e 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 62) 1SOURCE_FILE@0..62
2 TRAIT_DEF@[0; 61) 2 TRAIT_DEF@0..61
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "T" 6 IDENT@6..7 "T"
7 WHITESPACE@[7; 8) " " 7 WHITESPACE@7..8 " "
8 ITEM_LIST@[8; 61) 8 ITEM_LIST@8..61
9 L_CURLY@[8; 9) "{" 9 L_CURLY@8..9 "{"
10 WHITESPACE@[9; 14) "\n " 10 WHITESPACE@9..14 "\n "
11 MACRO_CALL@[14; 21) 11 MACRO_CALL@14..21
12 PATH@[14; 21) 12 PATH@14..21
13 PATH_SEGMENT@[14; 21) 13 PATH_SEGMENT@14..21
14 NAME_REF@[14; 21) 14 NAME_REF@14..21
15 IDENT@[14; 21) "default" 15 IDENT@14..21 "default"
16 WHITESPACE@[21; 22) " " 16 WHITESPACE@21..22 " "
17 TYPE_ALIAS_DEF@[22; 35) 17 TYPE_ALIAS_DEF@22..35
18 TYPE_KW@[22; 26) "type" 18 TYPE_KW@22..26 "type"
19 WHITESPACE@[26; 27) " " 19 WHITESPACE@26..27 " "
20 NAME@[27; 28) 20 NAME@27..28
21 IDENT@[27; 28) "T" 21 IDENT@27..28 "T"
22 WHITESPACE@[28; 29) " " 22 WHITESPACE@28..29 " "
23 EQ@[29; 30) "=" 23 EQ@29..30 "="
24 WHITESPACE@[30; 31) " " 24 WHITESPACE@30..31 " "
25 PATH_TYPE@[31; 34) 25 PATH_TYPE@31..34
26 PATH@[31; 34) 26 PATH@31..34
27 PATH_SEGMENT@[31; 34) 27 PATH_SEGMENT@31..34
28 NAME_REF@[31; 34) 28 NAME_REF@31..34
29 IDENT@[31; 34) "Bar" 29 IDENT@31..34 "Bar"
30 SEMICOLON@[34; 35) ";" 30 SEMICOLON@34..35 ";"
31 WHITESPACE@[35; 40) "\n " 31 WHITESPACE@35..40 "\n "
32 MACRO_CALL@[40; 47) 32 MACRO_CALL@40..47
33 PATH@[40; 47) 33 PATH@40..47
34 PATH_SEGMENT@[40; 47) 34 PATH_SEGMENT@40..47
35 NAME_REF@[40; 47) 35 NAME_REF@40..47
36 IDENT@[40; 47) "default" 36 IDENT@40..47 "default"
37 WHITESPACE@[47; 48) " " 37 WHITESPACE@47..48 " "
38 FN_DEF@[48; 59) 38 FN_DEF@48..59
39 FN_KW@[48; 50) "fn" 39 FN_KW@48..50 "fn"
40 WHITESPACE@[50; 51) " " 40 WHITESPACE@50..51 " "
41 NAME@[51; 54) 41 NAME@51..54
42 IDENT@[51; 54) "foo" 42 IDENT@51..54 "foo"
43 PARAM_LIST@[54; 56) 43 PARAM_LIST@54..56
44 L_PAREN@[54; 55) "(" 44 L_PAREN@54..55 "("
45 R_PAREN@[55; 56) ")" 45 R_PAREN@55..56 ")"
46 WHITESPACE@[56; 57) " " 46 WHITESPACE@56..57 " "
47 BLOCK_EXPR@[57; 59) 47 BLOCK_EXPR@57..59
48 BLOCK@[57; 59) 48 BLOCK@57..59
49 L_CURLY@[57; 58) "{" 49 L_CURLY@57..58 "{"
50 R_CURLY@[58; 59) "}" 50 R_CURLY@58..59 "}"
51 WHITESPACE@[59; 60) "\n" 51 WHITESPACE@59..60 "\n"
52 R_CURLY@[60; 61) "}" 52 R_CURLY@60..61 "}"
53 WHITESPACE@[61; 62) "\n" 53 WHITESPACE@61..62 "\n"
54error [21; 21): expected BANG 54error 21..21: expected BANG
55error [21; 21): expected `{`, `[`, `(` 55error 21..21: expected `{`, `[`, `(`
56error [21; 21): expected SEMICOLON 56error 21..21: expected SEMICOLON
57error [47; 47): expected BANG 57error 47..47: expected BANG
58error [47; 47): expected `{`, `[`, `(` 58error 47..47: expected `{`, `[`, `(`
59error [47; 47): expected SEMICOLON 59error 47..47: expected SEMICOLON
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast b/crates/ra_syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast
index 75043c9c0..578befa56 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast
+++ b/crates/ra_syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast
@@ -1,49 +1,49 @@
1SOURCE_FILE@[0; 45) 1SOURCE_FILE@0..45
2 FN_DEF@[0; 44) 2 FN_DEF@0..44
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 44) 11 BLOCK_EXPR@10..44
12 BLOCK@[10; 44) 12 BLOCK@10..44
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 RECORD_LIT@[16; 42) 15 RECORD_LIT@16..42
16 PATH@[16; 17) 16 PATH@16..17
17 PATH_SEGMENT@[16; 17) 17 PATH_SEGMENT@16..17
18 NAME_REF@[16; 17) 18 NAME_REF@16..17
19 IDENT@[16; 17) "S" 19 IDENT@16..17 "S"
20 WHITESPACE@[17; 18) " " 20 WHITESPACE@17..18 " "
21 RECORD_FIELD_LIST@[18; 42) 21 RECORD_FIELD_LIST@18..42
22 L_CURLY@[18; 19) "{" 22 L_CURLY@18..19 "{"
23 WHITESPACE@[19; 20) " " 23 WHITESPACE@19..20 " "
24 RECORD_FIELD@[20; 40) 24 RECORD_FIELD@20..40
25 NAME_REF@[20; 25) 25 NAME_REF@20..25
26 IDENT@[20; 25) "field" 26 IDENT@20..25 "field"
27 WHITESPACE@[25; 26) " " 27 WHITESPACE@25..26 " "
28 RANGE_EXPR@[26; 40) 28 RANGE_EXPR@26..40
29 DOT2@[26; 28) ".." 29 DOT2@26..28 ".."
30 CALL_EXPR@[28; 40) 30 CALL_EXPR@28..40
31 PATH_EXPR@[28; 38) 31 PATH_EXPR@28..38
32 PATH@[28; 38) 32 PATH@28..38
33 PATH@[28; 29) 33 PATH@28..29
34 PATH_SEGMENT@[28; 29) 34 PATH_SEGMENT@28..29
35 NAME_REF@[28; 29) 35 NAME_REF@28..29
36 IDENT@[28; 29) "S" 36 IDENT@28..29 "S"
37 COLON2@[29; 31) "::" 37 COLON2@29..31 "::"
38 PATH_SEGMENT@[31; 38) 38 PATH_SEGMENT@31..38
39 NAME_REF@[31; 38) 39 NAME_REF@31..38
40 IDENT@[31; 38) "default" 40 IDENT@31..38 "default"
41 ARG_LIST@[38; 40) 41 ARG_LIST@38..40
42 L_PAREN@[38; 39) "(" 42 L_PAREN@38..39 "("
43 R_PAREN@[39; 40) ")" 43 R_PAREN@39..40 ")"
44 WHITESPACE@[40; 41) " " 44 WHITESPACE@40..41 " "
45 R_CURLY@[41; 42) "}" 45 R_CURLY@41..42 "}"
46 WHITESPACE@[42; 43) "\n" 46 WHITESPACE@42..43 "\n"
47 R_CURLY@[43; 44) "}" 47 R_CURLY@43..44 "}"
48 WHITESPACE@[44; 45) "\n" 48 WHITESPACE@44..45 "\n"
49error [25; 25): expected COLON 49error 25..25: expected COLON
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rast b/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rast
index 25c6ef7e3..a1fabb557 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rast
@@ -1,72 +1,72 @@
1SOURCE_FILE@[0; 83) 1SOURCE_FILE@0..83
2 IMPL_DEF@[0; 82) 2 IMPL_DEF@0..82
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "F" 9 IDENT@5..6 "F"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 ITEM_LIST@[7; 82) 11 ITEM_LIST@7..82
12 L_CURLY@[7; 8) "{" 12 L_CURLY@7..8 "{"
13 WHITESPACE@[8; 13) "\n " 13 WHITESPACE@8..13 "\n "
14 TYPE_ALIAS_DEF@[13; 27) 14 TYPE_ALIAS_DEF@13..27
15 TYPE_KW@[13; 17) "type" 15 TYPE_KW@13..17 "type"
16 WHITESPACE@[17; 18) " " 16 WHITESPACE@17..18 " "
17 NAME@[18; 19) 17 NAME@18..19
18 IDENT@[18; 19) "A" 18 IDENT@18..19 "A"
19 COLON@[19; 20) ":" 19 COLON@19..20 ":"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 TYPE_BOUND_LIST@[21; 26) 21 TYPE_BOUND_LIST@21..26
22 TYPE_BOUND@[21; 26) 22 TYPE_BOUND@21..26
23 PATH_TYPE@[21; 26) 23 PATH_TYPE@21..26
24 PATH@[21; 26) 24 PATH@21..26
25 PATH_SEGMENT@[21; 26) 25 PATH_SEGMENT@21..26
26 NAME_REF@[21; 26) 26 NAME_REF@21..26
27 IDENT@[21; 26) "Clone" 27 IDENT@21..26 "Clone"
28 SEMICOLON@[26; 27) ";" 28 SEMICOLON@26..27 ";"
29 WHITESPACE@[27; 32) "\n " 29 WHITESPACE@27..32 "\n "
30 CONST_DEF@[32; 45) 30 CONST_DEF@32..45
31 CONST_KW@[32; 37) "const" 31 CONST_KW@32..37 "const"
32 WHITESPACE@[37; 38) " " 32 WHITESPACE@37..38 " "
33 NAME@[38; 39) 33 NAME@38..39
34 IDENT@[38; 39) "B" 34 IDENT@38..39 "B"
35 COLON@[39; 40) ":" 35 COLON@39..40 ":"
36 WHITESPACE@[40; 41) " " 36 WHITESPACE@40..41 " "
37 PATH_TYPE@[41; 44) 37 PATH_TYPE@41..44
38 PATH@[41; 44) 38 PATH@41..44
39 PATH_SEGMENT@[41; 44) 39 PATH_SEGMENT@41..44
40 NAME_REF@[41; 44) 40 NAME_REF@41..44
41 IDENT@[41; 44) "i32" 41 IDENT@41..44 "i32"
42 SEMICOLON@[44; 45) ";" 42 SEMICOLON@44..45 ";"
43 WHITESPACE@[45; 50) "\n " 43 WHITESPACE@45..50 "\n "
44 FN_DEF@[50; 61) 44 FN_DEF@50..61
45 FN_KW@[50; 52) "fn" 45 FN_KW@50..52 "fn"
46 WHITESPACE@[52; 53) " " 46 WHITESPACE@52..53 " "
47 NAME@[53; 56) 47 NAME@53..56
48 IDENT@[53; 56) "foo" 48 IDENT@53..56 "foo"
49 PARAM_LIST@[56; 58) 49 PARAM_LIST@56..58
50 L_PAREN@[56; 57) "(" 50 L_PAREN@56..57 "("
51 R_PAREN@[57; 58) ")" 51 R_PAREN@57..58 ")"
52 WHITESPACE@[58; 59) " " 52 WHITESPACE@58..59 " "
53 BLOCK_EXPR@[59; 61) 53 BLOCK_EXPR@59..61
54 BLOCK@[59; 61) 54 BLOCK@59..61
55 L_CURLY@[59; 60) "{" 55 L_CURLY@59..60 "{"
56 R_CURLY@[60; 61) "}" 56 R_CURLY@60..61 "}"
57 WHITESPACE@[61; 66) "\n " 57 WHITESPACE@61..66 "\n "
58 FN_DEF@[66; 80) 58 FN_DEF@66..80
59 FN_KW@[66; 68) "fn" 59 FN_KW@66..68 "fn"
60 WHITESPACE@[68; 69) " " 60 WHITESPACE@68..69 " "
61 NAME@[69; 72) 61 NAME@69..72
62 IDENT@[69; 72) "bar" 62 IDENT@69..72 "bar"
63 PARAM_LIST@[72; 79) 63 PARAM_LIST@72..79
64 L_PAREN@[72; 73) "(" 64 L_PAREN@72..73 "("
65 SELF_PARAM@[73; 78) 65 SELF_PARAM@73..78
66 AMP@[73; 74) "&" 66 AMP@73..74 "&"
67 SELF_KW@[74; 78) "self" 67 SELF_KW@74..78 "self"
68 R_PAREN@[78; 79) ")" 68 R_PAREN@78..79 ")"
69 SEMICOLON@[79; 80) ";" 69 SEMICOLON@79..80 ";"
70 WHITESPACE@[80; 81) "\n" 70 WHITESPACE@80..81 "\n"
71 R_CURLY@[81; 82) "}" 71 R_CURLY@81..82 "}"
72 WHITESPACE@[82; 83) "\n" 72 WHITESPACE@82..83 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast
index 69c459daf..bd74b44a6 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast
@@ -1,135 +1,135 @@
1SOURCE_FILE@[0; 250) 1SOURCE_FILE@0..250
2 USE_ITEM@[0; 58) 2 USE_ITEM@0..58
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 57) 5 USE_TREE@4..57
6 USE_TREE_LIST@[4; 57) 6 USE_TREE_LIST@4..57
7 L_CURLY@[4; 5) "{" 7 L_CURLY@4..5 "{"
8 USE_TREE@[5; 28) 8 USE_TREE@5..28
9 PATH@[5; 28) 9 PATH@5..28
10 PATH@[5; 22) 10 PATH@5..22
11 PATH@[5; 16) 11 PATH@5..16
12 PATH@[5; 10) 12 PATH@5..10
13 PATH_SEGMENT@[5; 10) 13 PATH_SEGMENT@5..10
14 CRATE_KW@[5; 10) "crate" 14 CRATE_KW@5..10 "crate"
15 COLON2@[10; 12) "::" 15 COLON2@10..12 "::"
16 PATH_SEGMENT@[12; 16) 16 PATH_SEGMENT@12..16
17 NAME_REF@[12; 16) 17 NAME_REF@12..16
18 IDENT@[12; 16) "path" 18 IDENT@12..16 "path"
19 COLON2@[16; 18) "::" 19 COLON2@16..18 "::"
20 PATH_SEGMENT@[18; 22) 20 PATH_SEGMENT@18..22
21 NAME_REF@[18; 22) 21 NAME_REF@18..22
22 IDENT@[18; 22) "from" 22 IDENT@18..22 "from"
23 COLON2@[22; 24) "::" 23 COLON2@22..24 "::"
24 PATH_SEGMENT@[24; 28) 24 PATH_SEGMENT@24..28
25 NAME_REF@[24; 28) 25 NAME_REF@24..28
26 IDENT@[24; 28) "root" 26 IDENT@24..28 "root"
27 COMMA@[28; 29) "," 27 COMMA@28..29 ","
28 WHITESPACE@[29; 30) " " 28 WHITESPACE@29..30 " "
29 USE_TREE@[30; 56) 29 USE_TREE@30..56
30 PATH@[30; 56) 30 PATH@30..56
31 PATH@[30; 44) 31 PATH@30..44
32 PATH@[30; 38) 32 PATH@30..38
33 PATH@[30; 32) 33 PATH@30..32
34 PATH_SEGMENT@[30; 32) 34 PATH_SEGMENT@30..32
35 NAME_REF@[30; 32) 35 NAME_REF@30..32
36 IDENT@[30; 32) "or" 36 IDENT@30..32 "or"
37 COLON2@[32; 34) "::" 37 COLON2@32..34 "::"
38 PATH_SEGMENT@[34; 38) 38 PATH_SEGMENT@34..38
39 NAME_REF@[34; 38) 39 NAME_REF@34..38
40 IDENT@[34; 38) "path" 40 IDENT@34..38 "path"
41 COLON2@[38; 40) "::" 41 COLON2@38..40 "::"
42 PATH_SEGMENT@[40; 44) 42 PATH_SEGMENT@40..44
43 NAME_REF@[40; 44) 43 NAME_REF@40..44
44 IDENT@[40; 44) "from" 44 IDENT@40..44 "from"
45 COLON2@[44; 46) "::" 45 COLON2@44..46 "::"
46 PATH_SEGMENT@[46; 56) 46 PATH_SEGMENT@46..56
47 NAME_REF@[46; 56) 47 NAME_REF@46..56
48 IDENT@[46; 56) "crate_name" 48 IDENT@46..56 "crate_name"
49 R_CURLY@[56; 57) "}" 49 R_CURLY@56..57 "}"
50 SEMICOLON@[57; 58) ";" 50 SEMICOLON@57..58 ";"
51 WHITESPACE@[58; 59) " " 51 WHITESPACE@58..59 " "
52 COMMENT@[59; 97) "// Rust 2018 (with a ..." 52 COMMENT@59..97 "// Rust 2018 (with a ..."
53 WHITESPACE@[97; 98) "\n" 53 WHITESPACE@97..98 "\n"
54 USE_ITEM@[98; 121) 54 USE_ITEM@98..121
55 USE_KW@[98; 101) "use" 55 USE_KW@98..101 "use"
56 WHITESPACE@[101; 102) " " 56 WHITESPACE@101..102 " "
57 USE_TREE@[102; 120) 57 USE_TREE@102..120
58 USE_TREE_LIST@[102; 120) 58 USE_TREE_LIST@102..120
59 L_CURLY@[102; 103) "{" 59 L_CURLY@102..103 "{"
60 USE_TREE@[103; 119) 60 USE_TREE@103..119
61 PATH@[103; 119) 61 PATH@103..119
62 PATH@[103; 113) 62 PATH@103..113
63 PATH@[103; 107) 63 PATH@103..107
64 PATH_SEGMENT@[103; 107) 64 PATH_SEGMENT@103..107
65 NAME_REF@[103; 107) 65 NAME_REF@103..107
66 IDENT@[103; 107) "path" 66 IDENT@103..107 "path"
67 COLON2@[107; 109) "::" 67 COLON2@107..109 "::"
68 PATH_SEGMENT@[109; 113) 68 PATH_SEGMENT@109..113
69 NAME_REF@[109; 113) 69 NAME_REF@109..113
70 IDENT@[109; 113) "from" 70 IDENT@109..113 "from"
71 COLON2@[113; 115) "::" 71 COLON2@113..115 "::"
72 PATH_SEGMENT@[115; 119) 72 PATH_SEGMENT@115..119
73 NAME_REF@[115; 119) 73 NAME_REF@115..119
74 IDENT@[115; 119) "root" 74 IDENT@115..119 "root"
75 R_CURLY@[119; 120) "}" 75 R_CURLY@119..120 "}"
76 SEMICOLON@[120; 121) ";" 76 SEMICOLON@120..121 ";"
77 WHITESPACE@[121; 122) " " 77 WHITESPACE@121..122 " "
78 COMMENT@[122; 134) "// Rust 2015" 78 COMMENT@122..134 "// Rust 2015"
79 WHITESPACE@[134; 135) "\n" 79 WHITESPACE@134..135 "\n"
80 USE_ITEM@[135; 166) 80 USE_ITEM@135..166
81 USE_KW@[135; 138) "use" 81 USE_KW@135..138 "use"
82 WHITESPACE@[138; 139) " " 82 WHITESPACE@138..139 " "
83 USE_TREE@[139; 165) 83 USE_TREE@139..165
84 COLON2@[139; 141) "::" 84 COLON2@139..141 "::"
85 USE_TREE_LIST@[141; 165) 85 USE_TREE_LIST@141..165
86 L_CURLY@[141; 142) "{" 86 L_CURLY@141..142 "{"
87 USE_TREE@[142; 164) 87 USE_TREE@142..164
88 PATH@[142; 164) 88 PATH@142..164
89 PATH@[142; 158) 89 PATH@142..158
90 PATH@[142; 146) 90 PATH@142..146
91 PATH_SEGMENT@[142; 146) 91 PATH_SEGMENT@142..146
92 NAME_REF@[142; 146) 92 NAME_REF@142..146
93 IDENT@[142; 146) "some" 93 IDENT@142..146 "some"
94 COLON2@[146; 148) "::" 94 COLON2@146..148 "::"
95 PATH_SEGMENT@[148; 158) 95 PATH_SEGMENT@148..158
96 NAME_REF@[148; 158) 96 NAME_REF@148..158
97 IDENT@[148; 158) "arbritrary" 97 IDENT@148..158 "arbritrary"
98 COLON2@[158; 160) "::" 98 COLON2@158..160 "::"
99 PATH_SEGMENT@[160; 164) 99 PATH_SEGMENT@160..164
100 NAME_REF@[160; 164) 100 NAME_REF@160..164
101 IDENT@[160; 164) "path" 101 IDENT@160..164 "path"
102 R_CURLY@[164; 165) "}" 102 R_CURLY@164..165 "}"
103 SEMICOLON@[165; 166) ";" 103 SEMICOLON@165..166 ";"
104 WHITESPACE@[166; 167) " " 104 WHITESPACE@166..167 " "
105 COMMENT@[167; 179) "// Rust 2015" 105 COMMENT@167..179 "// Rust 2015"
106 WHITESPACE@[179; 180) "\n" 106 WHITESPACE@179..180 "\n"
107 USE_ITEM@[180; 206) 107 USE_ITEM@180..206
108 USE_KW@[180; 183) "use" 108 USE_KW@180..183 "use"
109 WHITESPACE@[183; 184) " " 109 WHITESPACE@183..184 " "
110 USE_TREE@[184; 205) 110 USE_TREE@184..205
111 COLON2@[184; 186) "::" 111 COLON2@184..186 "::"
112 USE_TREE_LIST@[186; 205) 112 USE_TREE_LIST@186..205
113 L_CURLY@[186; 187) "{" 113 L_CURLY@186..187 "{"
114 USE_TREE@[187; 204) 114 USE_TREE@187..204
115 USE_TREE_LIST@[187; 204) 115 USE_TREE_LIST@187..204
116 L_CURLY@[187; 188) "{" 116 L_CURLY@187..188 "{"
117 USE_TREE@[188; 203) 117 USE_TREE@188..203
118 USE_TREE_LIST@[188; 203) 118 USE_TREE_LIST@188..203
119 L_CURLY@[188; 189) "{" 119 L_CURLY@188..189 "{"
120 USE_TREE@[189; 202) 120 USE_TREE@189..202
121 PATH@[189; 202) 121 PATH@189..202
122 PATH@[189; 194) 122 PATH@189..194
123 PATH_SEGMENT@[189; 194) 123 PATH_SEGMENT@189..194
124 CRATE_KW@[189; 194) "crate" 124 CRATE_KW@189..194 "crate"
125 COLON2@[194; 196) "::" 125 COLON2@194..196 "::"
126 PATH_SEGMENT@[196; 202) 126 PATH_SEGMENT@196..202
127 NAME_REF@[196; 202) 127 NAME_REF@196..202
128 IDENT@[196; 202) "export" 128 IDENT@196..202 "export"
129 R_CURLY@[202; 203) "}" 129 R_CURLY@202..203 "}"
130 R_CURLY@[203; 204) "}" 130 R_CURLY@203..204 "}"
131 R_CURLY@[204; 205) "}" 131 R_CURLY@204..205 "}"
132 SEMICOLON@[205; 206) ";" 132 SEMICOLON@205..206 ";"
133 WHITESPACE@[206; 207) " " 133 WHITESPACE@206..207 " "
134 COMMENT@[207; 249) "// Nonsensical but pe ..." 134 COMMENT@207..249 "// Nonsensical but pe ..."
135 WHITESPACE@[249; 250) "\n" 135 WHITESPACE@249..250 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rast b/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rast
index e3f5a7f04..a46d76fde 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rast
@@ -1,62 +1,62 @@
1SOURCE_FILE@[0; 49) 1SOURCE_FILE@0..49
2 FN_DEF@[0; 48) 2 FN_DEF@0..48
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "test" 6 IDENT@3..7 "test"
7 TYPE_PARAM_LIST@[7; 10) 7 TYPE_PARAM_LIST@7..10
8 L_ANGLE@[7; 8) "<" 8 L_ANGLE@7..8 "<"
9 TYPE_PARAM@[8; 9) 9 TYPE_PARAM@8..9
10 NAME@[8; 9) 10 NAME@8..9
11 IDENT@[8; 9) "F" 11 IDENT@8..9 "F"
12 R_ANGLE@[9; 10) ">" 12 R_ANGLE@9..10 ">"
13 PARAM_LIST@[10; 12) 13 PARAM_LIST@10..12
14 L_PAREN@[10; 11) "(" 14 L_PAREN@10..11 "("
15 R_PAREN@[11; 12) ")" 15 R_PAREN@11..12 ")"
16 WHITESPACE@[12; 13) "\n" 16 WHITESPACE@12..13 "\n"
17 WHERE_CLAUSE@[13; 44) 17 WHERE_CLAUSE@13..44
18 WHERE_KW@[13; 18) "where" 18 WHERE_KW@13..18 "where"
19 WHITESPACE@[18; 22) "\n " 19 WHITESPACE@18..22 "\n "
20 WHERE_PRED@[22; 44) 20 WHERE_PRED@22..44
21 FOR_TYPE@[22; 31) 21 FOR_TYPE@22..31
22 FOR_KW@[22; 25) "for" 22 FOR_KW@22..25 "for"
23 TYPE_PARAM_LIST@[25; 29) 23 TYPE_PARAM_LIST@25..29
24 L_ANGLE@[25; 26) "<" 24 L_ANGLE@25..26 "<"
25 LIFETIME_PARAM@[26; 28) 25 LIFETIME_PARAM@26..28
26 LIFETIME@[26; 28) "\'a" 26 LIFETIME@26..28 "\'a"
27 R_ANGLE@[28; 29) ">" 27 R_ANGLE@28..29 ">"
28 WHITESPACE@[29; 30) " " 28 WHITESPACE@29..30 " "
29 PATH_TYPE@[30; 31) 29 PATH_TYPE@30..31
30 PATH@[30; 31) 30 PATH@30..31
31 PATH_SEGMENT@[30; 31) 31 PATH_SEGMENT@30..31
32 NAME_REF@[30; 31) 32 NAME_REF@30..31
33 IDENT@[30; 31) "F" 33 IDENT@30..31 "F"
34 COLON@[31; 32) ":" 34 COLON@31..32 ":"
35 WHITESPACE@[32; 33) " " 35 WHITESPACE@32..33 " "
36 TYPE_BOUND_LIST@[33; 44) 36 TYPE_BOUND_LIST@33..44
37 TYPE_BOUND@[33; 44) 37 TYPE_BOUND@33..44
38 PATH_TYPE@[33; 44) 38 PATH_TYPE@33..44
39 PATH@[33; 44) 39 PATH@33..44
40 PATH_SEGMENT@[33; 44) 40 PATH_SEGMENT@33..44
41 NAME_REF@[33; 35) 41 NAME_REF@33..35
42 IDENT@[33; 35) "Fn" 42 IDENT@33..35 "Fn"
43 PARAM_LIST@[35; 44) 43 PARAM_LIST@35..44
44 L_PAREN@[35; 36) "(" 44 L_PAREN@35..36 "("
45 PARAM@[36; 43) 45 PARAM@36..43
46 REFERENCE_TYPE@[36; 43) 46 REFERENCE_TYPE@36..43
47 AMP@[36; 37) "&" 47 AMP@36..37 "&"
48 LIFETIME@[37; 39) "\'a" 48 LIFETIME@37..39 "\'a"
49 WHITESPACE@[39; 40) " " 49 WHITESPACE@39..40 " "
50 PATH_TYPE@[40; 43) 50 PATH_TYPE@40..43
51 PATH@[40; 43) 51 PATH@40..43
52 PATH_SEGMENT@[40; 43) 52 PATH_SEGMENT@40..43
53 NAME_REF@[40; 43) 53 NAME_REF@40..43
54 IDENT@[40; 43) "str" 54 IDENT@40..43 "str"
55 R_PAREN@[43; 44) ")" 55 R_PAREN@43..44 ")"
56 WHITESPACE@[44; 45) "\n" 56 WHITESPACE@44..45 "\n"
57 BLOCK_EXPR@[45; 48) 57 BLOCK_EXPR@45..48
58 BLOCK@[45; 48) 58 BLOCK@45..48
59 L_CURLY@[45; 46) "{" 59 L_CURLY@45..46 "{"
60 WHITESPACE@[46; 47) " " 60 WHITESPACE@46..47 " "
61 R_CURLY@[47; 48) "}" 61 R_CURLY@47..48 "}"
62 WHITESPACE@[48; 49) "\n" 62 WHITESPACE@48..49 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast b/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast
index a0cf1e4f6..20eba09f5 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast
@@ -1,60 +1,60 @@
1SOURCE_FILE@[0; 39) 1SOURCE_FILE@0..39
2 TYPE_ALIAS_DEF@[0; 38) 2 TYPE_ALIAS_DEF@0..38
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "F" 6 IDENT@5..6 "F"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 PATH_TYPE@[9; 37) 10 PATH_TYPE@9..37
11 PATH@[9; 37) 11 PATH@9..37
12 PATH_SEGMENT@[9; 37) 12 PATH_SEGMENT@9..37
13 NAME_REF@[9; 12) 13 NAME_REF@9..12
14 IDENT@[9; 12) "Box" 14 IDENT@9..12 "Box"
15 TYPE_ARG_LIST@[12; 37) 15 TYPE_ARG_LIST@12..37
16 L_ANGLE@[12; 13) "<" 16 L_ANGLE@12..13 "<"
17 TYPE_ARG@[13; 36) 17 TYPE_ARG@13..36
18 PATH_TYPE@[13; 36) 18 PATH_TYPE@13..36
19 PATH@[13; 36) 19 PATH@13..36
20 PATH_SEGMENT@[13; 36) 20 PATH_SEGMENT@13..36
21 NAME_REF@[13; 15) 21 NAME_REF@13..15
22 IDENT@[13; 15) "Fn" 22 IDENT@13..15 "Fn"
23 PARAM_LIST@[15; 36) 23 PARAM_LIST@15..36
24 L_PAREN@[15; 16) "(" 24 L_PAREN@15..16 "("
25 PARAM@[16; 19) 25 PARAM@16..19
26 PATH_TYPE@[16; 19) 26 PATH_TYPE@16..19
27 PATH@[16; 19) 27 PATH@16..19
28 PATH_SEGMENT@[16; 19) 28 PATH_SEGMENT@16..19
29 NAME_REF@[16; 19) 29 NAME_REF@16..19
30 IDENT@[16; 19) "i32" 30 IDENT@16..19 "i32"
31 COMMA@[19; 20) "," 31 COMMA@19..20 ","
32 WHITESPACE@[20; 21) " " 32 WHITESPACE@20..21 " "
33 PARAM@[21; 25) 33 PARAM@21..25
34 REFERENCE_TYPE@[21; 25) 34 REFERENCE_TYPE@21..25
35 AMP@[21; 22) "&" 35 AMP@21..22 "&"
36 PATH_TYPE@[22; 25) 36 PATH_TYPE@22..25
37 PATH@[22; 25) 37 PATH@22..25
38 PATH_SEGMENT@[22; 25) 38 PATH_SEGMENT@22..25
39 NAME_REF@[22; 25) 39 NAME_REF@22..25
40 IDENT@[22; 25) "i32" 40 IDENT@22..25 "i32"
41 COMMA@[25; 26) "," 41 COMMA@25..26 ","
42 WHITESPACE@[26; 27) " " 42 WHITESPACE@26..27 " "
43 PARAM@[27; 31) 43 PARAM@27..31
44 REFERENCE_TYPE@[27; 31) 44 REFERENCE_TYPE@27..31
45 AMP@[27; 28) "&" 45 AMP@27..28 "&"
46 PATH_TYPE@[28; 31) 46 PATH_TYPE@28..31
47 PATH@[28; 31) 47 PATH@28..31
48 PATH_SEGMENT@[28; 31) 48 PATH_SEGMENT@28..31
49 NAME_REF@[28; 31) 49 NAME_REF@28..31
50 IDENT@[28; 31) "i32" 50 IDENT@28..31 "i32"
51 COMMA@[31; 32) "," 51 COMMA@31..32 ","
52 WHITESPACE@[32; 33) " " 52 WHITESPACE@32..33 " "
53 PARAM@[33; 35) 53 PARAM@33..35
54 TUPLE_TYPE@[33; 35) 54 TUPLE_TYPE@33..35
55 L_PAREN@[33; 34) "(" 55 L_PAREN@33..34 "("
56 R_PAREN@[34; 35) ")" 56 R_PAREN@34..35 ")"
57 R_PAREN@[35; 36) ")" 57 R_PAREN@35..36 ")"
58 R_ANGLE@[36; 37) ">" 58 R_ANGLE@36..37 ">"
59 SEMICOLON@[37; 38) ";" 59 SEMICOLON@37..38 ";"
60 WHITESPACE@[38; 39) "\n" 60 WHITESPACE@38..39 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rast b/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rast
index 8ae7909f9..5181fcd2b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rast
@@ -1,38 +1,38 @@
1SOURCE_FILE@[0; 28) 1SOURCE_FILE@0..28
2 FN_DEF@[0; 27) 2 FN_DEF@0..27
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 TYPE_PARAM_LIST@[6; 23) 7 TYPE_PARAM_LIST@6..23
8 L_ANGLE@[6; 7) "<" 8 L_ANGLE@6..7 "<"
9 TYPE_PARAM@[7; 22) 9 TYPE_PARAM@7..22
10 NAME@[7; 8) 10 NAME@7..8
11 IDENT@[7; 8) "T" 11 IDENT@7..8 "T"
12 COLON@[8; 9) ":" 12 COLON@8..9 ":"
13 WHITESPACE@[9; 10) " " 13 WHITESPACE@9..10 " "
14 TYPE_BOUND_LIST@[10; 22) 14 TYPE_BOUND_LIST@10..22
15 TYPE_BOUND@[10; 15) 15 TYPE_BOUND@10..15
16 PATH_TYPE@[10; 15) 16 PATH_TYPE@10..15
17 PATH@[10; 15) 17 PATH@10..15
18 PATH_SEGMENT@[10; 15) 18 PATH_SEGMENT@10..15
19 NAME_REF@[10; 15) 19 NAME_REF@10..15
20 IDENT@[10; 15) "Clone" 20 IDENT@10..15 "Clone"
21 WHITESPACE@[15; 16) " " 21 WHITESPACE@15..16 " "
22 PLUS@[16; 17) "+" 22 PLUS@16..17 "+"
23 WHITESPACE@[17; 18) " " 23 WHITESPACE@17..18 " "
24 TYPE_BOUND@[18; 22) 24 TYPE_BOUND@18..22
25 PATH_TYPE@[18; 22) 25 PATH_TYPE@18..22
26 PATH@[18; 22) 26 PATH@18..22
27 PATH_SEGMENT@[18; 22) 27 PATH_SEGMENT@18..22
28 NAME_REF@[18; 22) 28 NAME_REF@18..22
29 IDENT@[18; 22) "Copy" 29 IDENT@18..22 "Copy"
30 R_ANGLE@[22; 23) ">" 30 R_ANGLE@22..23 ">"
31 PARAM_LIST@[23; 25) 31 PARAM_LIST@23..25
32 L_PAREN@[23; 24) "(" 32 L_PAREN@23..24 "("
33 R_PAREN@[24; 25) ")" 33 R_PAREN@24..25 ")"
34 BLOCK_EXPR@[25; 27) 34 BLOCK_EXPR@25..27
35 BLOCK@[25; 27) 35 BLOCK@25..27
36 L_CURLY@[25; 26) "{" 36 L_CURLY@25..26 "{"
37 R_CURLY@[26; 27) "}" 37 R_CURLY@26..27 "}"
38 WHITESPACE@[27; 28) "\n" 38 WHITESPACE@27..28 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rast b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rast
index 757ac092a..dd41b44e1 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rast
@@ -1,121 +1,121 @@
1SOURCE_FILE@[0; 128) 1SOURCE_FILE@0..128
2 IMPL_DEF@[0; 127) 2 IMPL_DEF@0..127
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "S" 9 IDENT@5..6 "S"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 ITEM_LIST@[7; 127) 11 ITEM_LIST@7..127
12 L_CURLY@[7; 8) "{" 12 L_CURLY@7..8 "{"
13 WHITESPACE@[8; 13) "\n " 13 WHITESPACE@8..13 "\n "
14 FN_DEF@[13; 26) 14 FN_DEF@13..26
15 FN_KW@[13; 15) "fn" 15 FN_KW@13..15 "fn"
16 WHITESPACE@[15; 16) " " 16 WHITESPACE@15..16 " "
17 NAME@[16; 17) 17 NAME@16..17
18 IDENT@[16; 17) "a" 18 IDENT@16..17 "a"
19 PARAM_LIST@[17; 23) 19 PARAM_LIST@17..23
20 L_PAREN@[17; 18) "(" 20 L_PAREN@17..18 "("
21 SELF_PARAM@[18; 22) 21 SELF_PARAM@18..22
22 SELF_KW@[18; 22) "self" 22 SELF_KW@18..22 "self"
23 R_PAREN@[22; 23) ")" 23 R_PAREN@22..23 ")"
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 BLOCK_EXPR@[24; 26) 25 BLOCK_EXPR@24..26
26 BLOCK@[24; 26) 26 BLOCK@24..26
27 L_CURLY@[24; 25) "{" 27 L_CURLY@24..25 "{"
28 R_CURLY@[25; 26) "}" 28 R_CURLY@25..26 "}"
29 WHITESPACE@[26; 31) "\n " 29 WHITESPACE@26..31 "\n "
30 FN_DEF@[31; 46) 30 FN_DEF@31..46
31 FN_KW@[31; 33) "fn" 31 FN_KW@31..33 "fn"
32 WHITESPACE@[33; 34) " " 32 WHITESPACE@33..34 " "
33 NAME@[34; 35) 33 NAME@34..35
34 IDENT@[34; 35) "b" 34 IDENT@34..35 "b"
35 PARAM_LIST@[35; 43) 35 PARAM_LIST@35..43
36 L_PAREN@[35; 36) "(" 36 L_PAREN@35..36 "("
37 SELF_PARAM@[36; 41) 37 SELF_PARAM@36..41
38 AMP@[36; 37) "&" 38 AMP@36..37 "&"
39 SELF_KW@[37; 41) "self" 39 SELF_KW@37..41 "self"
40 COMMA@[41; 42) "," 40 COMMA@41..42 ","
41 R_PAREN@[42; 43) ")" 41 R_PAREN@42..43 ")"
42 WHITESPACE@[43; 44) " " 42 WHITESPACE@43..44 " "
43 BLOCK_EXPR@[44; 46) 43 BLOCK_EXPR@44..46
44 BLOCK@[44; 46) 44 BLOCK@44..46
45 L_CURLY@[44; 45) "{" 45 L_CURLY@44..45 "{"
46 R_CURLY@[45; 46) "}" 46 R_CURLY@45..46 "}"
47 WHITESPACE@[46; 51) "\n " 47 WHITESPACE@46..51 "\n "
48 FN_DEF@[51; 69) 48 FN_DEF@51..69
49 FN_KW@[51; 53) "fn" 49 FN_KW@51..53 "fn"
50 WHITESPACE@[53; 54) " " 50 WHITESPACE@53..54 " "
51 NAME@[54; 55) 51 NAME@54..55
52 IDENT@[54; 55) "c" 52 IDENT@54..55 "c"
53 PARAM_LIST@[55; 66) 53 PARAM_LIST@55..66
54 L_PAREN@[55; 56) "(" 54 L_PAREN@55..56 "("
55 SELF_PARAM@[56; 64) 55 SELF_PARAM@56..64
56 AMP@[56; 57) "&" 56 AMP@56..57 "&"
57 LIFETIME@[57; 59) "\'a" 57 LIFETIME@57..59 "\'a"
58 WHITESPACE@[59; 60) " " 58 WHITESPACE@59..60 " "
59 SELF_KW@[60; 64) "self" 59 SELF_KW@60..64 "self"
60 COMMA@[64; 65) "," 60 COMMA@64..65 ","
61 R_PAREN@[65; 66) ")" 61 R_PAREN@65..66 ")"
62 WHITESPACE@[66; 67) " " 62 WHITESPACE@66..67 " "
63 BLOCK_EXPR@[67; 69) 63 BLOCK_EXPR@67..69
64 BLOCK@[67; 69) 64 BLOCK@67..69
65 L_CURLY@[67; 68) "{" 65 L_CURLY@67..68 "{"
66 R_CURLY@[68; 69) "}" 66 R_CURLY@68..69 "}"
67 WHITESPACE@[69; 74) "\n " 67 WHITESPACE@69..74 "\n "
68 FN_DEF@[74; 103) 68 FN_DEF@74..103
69 FN_KW@[74; 76) "fn" 69 FN_KW@74..76 "fn"
70 WHITESPACE@[76; 77) " " 70 WHITESPACE@76..77 " "
71 NAME@[77; 78) 71 NAME@77..78
72 IDENT@[77; 78) "d" 72 IDENT@77..78 "d"
73 PARAM_LIST@[78; 100) 73 PARAM_LIST@78..100
74 L_PAREN@[78; 79) "(" 74 L_PAREN@78..79 "("
75 SELF_PARAM@[79; 91) 75 SELF_PARAM@79..91
76 AMP@[79; 80) "&" 76 AMP@79..80 "&"
77 LIFETIME@[80; 82) "\'a" 77 LIFETIME@80..82 "\'a"
78 WHITESPACE@[82; 83) " " 78 WHITESPACE@82..83 " "
79 MUT_KW@[83; 86) "mut" 79 MUT_KW@83..86 "mut"
80 WHITESPACE@[86; 87) " " 80 WHITESPACE@86..87 " "
81 SELF_KW@[87; 91) "self" 81 SELF_KW@87..91 "self"
82 COMMA@[91; 92) "," 82 COMMA@91..92 ","
83 WHITESPACE@[92; 93) " " 83 WHITESPACE@92..93 " "
84 PARAM@[93; 99) 84 PARAM@93..99
85 BIND_PAT@[93; 94) 85 BIND_PAT@93..94
86 NAME@[93; 94) 86 NAME@93..94
87 IDENT@[93; 94) "x" 87 IDENT@93..94 "x"
88 COLON@[94; 95) ":" 88 COLON@94..95 ":"
89 WHITESPACE@[95; 96) " " 89 WHITESPACE@95..96 " "
90 PATH_TYPE@[96; 99) 90 PATH_TYPE@96..99
91 PATH@[96; 99) 91 PATH@96..99
92 PATH_SEGMENT@[96; 99) 92 PATH_SEGMENT@96..99
93 NAME_REF@[96; 99) 93 NAME_REF@96..99
94 IDENT@[96; 99) "i32" 94 IDENT@96..99 "i32"
95 R_PAREN@[99; 100) ")" 95 R_PAREN@99..100 ")"
96 WHITESPACE@[100; 101) " " 96 WHITESPACE@100..101 " "
97 BLOCK_EXPR@[101; 103) 97 BLOCK_EXPR@101..103
98 BLOCK@[101; 103) 98 BLOCK@101..103
99 L_CURLY@[101; 102) "{" 99 L_CURLY@101..102 "{"
100 R_CURLY@[102; 103) "}" 100 R_CURLY@102..103 "}"
101 WHITESPACE@[103; 108) "\n " 101 WHITESPACE@103..108 "\n "
102 FN_DEF@[108; 125) 102 FN_DEF@108..125
103 FN_KW@[108; 110) "fn" 103 FN_KW@108..110 "fn"
104 WHITESPACE@[110; 111) " " 104 WHITESPACE@110..111 " "
105 NAME@[111; 112) 105 NAME@111..112
106 IDENT@[111; 112) "e" 106 IDENT@111..112 "e"
107 PARAM_LIST@[112; 122) 107 PARAM_LIST@112..122
108 L_PAREN@[112; 113) "(" 108 L_PAREN@112..113 "("
109 SELF_PARAM@[113; 121) 109 SELF_PARAM@113..121
110 MUT_KW@[113; 116) "mut" 110 MUT_KW@113..116 "mut"
111 WHITESPACE@[116; 117) " " 111 WHITESPACE@116..117 " "
112 SELF_KW@[117; 121) "self" 112 SELF_KW@117..121 "self"
113 R_PAREN@[121; 122) ")" 113 R_PAREN@121..122 ")"
114 WHITESPACE@[122; 123) " " 114 WHITESPACE@122..123 " "
115 BLOCK_EXPR@[123; 125) 115 BLOCK_EXPR@123..125
116 BLOCK@[123; 125) 116 BLOCK@123..125
117 L_CURLY@[123; 124) "{" 117 L_CURLY@123..124 "{"
118 R_CURLY@[124; 125) "}" 118 R_CURLY@124..125 "}"
119 WHITESPACE@[125; 126) "\n" 119 WHITESPACE@125..126 "\n"
120 R_CURLY@[126; 127) "}" 120 R_CURLY@126..127 "}"
121 WHITESPACE@[127; 128) "\n" 121 WHITESPACE@127..128 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast b/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast
index 027abf179..7cb9e1d55 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@0..35
2 STRUCT_DEF@[0; 34) 2 STRUCT_DEF@0..34
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 TYPE_PARAM_LIST@[8; 33) 7 TYPE_PARAM_LIST@8..33
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 TYPE_PARAM@[9; 32) 9 TYPE_PARAM@9..32
10 NAME@[9; 10) 10 NAME@9..10
11 IDENT@[9; 10) "T" 11 IDENT@9..10 "T"
12 COLON@[10; 11) ":" 12 COLON@10..11 ":"
13 WHITESPACE@[11; 12) " " 13 WHITESPACE@11..12 " "
14 TYPE_BOUND_LIST@[12; 32) 14 TYPE_BOUND_LIST@12..32
15 TYPE_BOUND@[12; 14) 15 TYPE_BOUND@12..14
16 LIFETIME@[12; 14) "\'a" 16 LIFETIME@12..14 "\'a"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 PLUS@[15; 16) "+" 18 PLUS@15..16 "+"
19 WHITESPACE@[16; 17) " " 19 WHITESPACE@16..17 " "
20 TYPE_BOUND@[17; 23) 20 TYPE_BOUND@17..23
21 QUESTION@[17; 18) "?" 21 QUESTION@17..18 "?"
22 PATH_TYPE@[18; 23) 22 PATH_TYPE@18..23
23 PATH@[18; 23) 23 PATH@18..23
24 PATH_SEGMENT@[18; 23) 24 PATH_SEGMENT@18..23
25 NAME_REF@[18; 23) 25 NAME_REF@18..23
26 IDENT@[18; 23) "Sized" 26 IDENT@18..23 "Sized"
27 WHITESPACE@[23; 24) " " 27 WHITESPACE@23..24 " "
28 PLUS@[24; 25) "+" 28 PLUS@24..25 "+"
29 WHITESPACE@[25; 26) " " 29 WHITESPACE@25..26 " "
30 TYPE_BOUND@[26; 32) 30 TYPE_BOUND@26..32
31 L_PAREN@[26; 27) "(" 31 L_PAREN@26..27 "("
32 PATH_TYPE@[27; 31) 32 PATH_TYPE@27..31
33 PATH@[27; 31) 33 PATH@27..31
34 PATH_SEGMENT@[27; 31) 34 PATH_SEGMENT@27..31
35 NAME_REF@[27; 31) 35 NAME_REF@27..31
36 IDENT@[27; 31) "Copy" 36 IDENT@27..31 "Copy"
37 R_PAREN@[31; 32) ")" 37 R_PAREN@31..32 ")"
38 R_ANGLE@[32; 33) ">" 38 R_ANGLE@32..33 ">"
39 SEMICOLON@[33; 34) ";" 39 SEMICOLON@33..34 ";"
40 WHITESPACE@[34; 35) "\n" 40 WHITESPACE@34..35 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rast b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rast
index f4697fed6..a8ddd20c9 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rast
@@ -1,97 +1,97 @@
1SOURCE_FILE@[0; 103) 1SOURCE_FILE@0..103
2 FN_DEF@[0; 102) 2 FN_DEF@0..102
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 102) 11 BLOCK_EXPR@9..102
12 BLOCK@[9; 102) 12 BLOCK@9..102
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 33) 15 LET_STMT@15..33
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PATH_PAT@[19; 27) 18 PATH_PAT@19..27
19 PATH@[19; 27) 19 PATH@19..27
20 PATH@[19; 22) 20 PATH@19..22
21 PATH_SEGMENT@[19; 22) 21 PATH_SEGMENT@19..22
22 NAME_REF@[19; 22) 22 NAME_REF@19..22
23 IDENT@[19; 22) "foo" 23 IDENT@19..22 "foo"
24 COLON2@[22; 24) "::" 24 COLON2@22..24 "::"
25 PATH_SEGMENT@[24; 27) 25 PATH_SEGMENT@24..27
26 NAME_REF@[24; 27) 26 NAME_REF@24..27
27 IDENT@[24; 27) "Bar" 27 IDENT@24..27 "Bar"
28 WHITESPACE@[27; 28) " " 28 WHITESPACE@27..28 " "
29 EQ@[28; 29) "=" 29 EQ@28..29 "="
30 WHITESPACE@[29; 30) " " 30 WHITESPACE@29..30 " "
31 TUPLE_EXPR@[30; 32) 31 TUPLE_EXPR@30..32
32 L_PAREN@[30; 31) "(" 32 L_PAREN@30..31 "("
33 R_PAREN@[31; 32) ")" 33 R_PAREN@31..32 ")"
34 SEMICOLON@[32; 33) ";" 34 SEMICOLON@32..33 ";"
35 WHITESPACE@[33; 38) "\n " 35 WHITESPACE@33..38 "\n "
36 LET_STMT@[38; 53) 36 LET_STMT@38..53
37 LET_KW@[38; 41) "let" 37 LET_KW@38..41 "let"
38 WHITESPACE@[41; 42) " " 38 WHITESPACE@41..42 " "
39 PATH_PAT@[42; 47) 39 PATH_PAT@42..47
40 PATH@[42; 47) 40 PATH@42..47
41 PATH_SEGMENT@[42; 47) 41 PATH_SEGMENT@42..47
42 COLON2@[42; 44) "::" 42 COLON2@42..44 "::"
43 NAME_REF@[44; 47) 43 NAME_REF@44..47
44 IDENT@[44; 47) "Bar" 44 IDENT@44..47 "Bar"
45 WHITESPACE@[47; 48) " " 45 WHITESPACE@47..48 " "
46 EQ@[48; 49) "=" 46 EQ@48..49 "="
47 WHITESPACE@[49; 50) " " 47 WHITESPACE@49..50 " "
48 TUPLE_EXPR@[50; 52) 48 TUPLE_EXPR@50..52
49 L_PAREN@[50; 51) "(" 49 L_PAREN@50..51 "("
50 R_PAREN@[51; 52) ")" 50 R_PAREN@51..52 ")"
51 SEMICOLON@[52; 53) ";" 51 SEMICOLON@52..53 ";"
52 WHITESPACE@[53; 58) "\n " 52 WHITESPACE@53..58 "\n "
53 LET_STMT@[58; 78) 53 LET_STMT@58..78
54 LET_KW@[58; 61) "let" 54 LET_KW@58..61 "let"
55 WHITESPACE@[61; 62) " " 55 WHITESPACE@61..62 " "
56 RECORD_PAT@[62; 72) 56 RECORD_PAT@62..72
57 PATH@[62; 65) 57 PATH@62..65
58 PATH_SEGMENT@[62; 65) 58 PATH_SEGMENT@62..65
59 NAME_REF@[62; 65) 59 NAME_REF@62..65
60 IDENT@[62; 65) "Bar" 60 IDENT@62..65 "Bar"
61 WHITESPACE@[65; 66) " " 61 WHITESPACE@65..66 " "
62 RECORD_FIELD_PAT_LIST@[66; 72) 62 RECORD_FIELD_PAT_LIST@66..72
63 L_CURLY@[66; 67) "{" 63 L_CURLY@66..67 "{"
64 WHITESPACE@[67; 68) " " 64 WHITESPACE@67..68 " "
65 DOT2@[68; 70) ".." 65 DOT2@68..70 ".."
66 WHITESPACE@[70; 71) " " 66 WHITESPACE@70..71 " "
67 R_CURLY@[71; 72) "}" 67 R_CURLY@71..72 "}"
68 WHITESPACE@[72; 73) " " 68 WHITESPACE@72..73 " "
69 EQ@[73; 74) "=" 69 EQ@73..74 "="
70 WHITESPACE@[74; 75) " " 70 WHITESPACE@74..75 " "
71 TUPLE_EXPR@[75; 77) 71 TUPLE_EXPR@75..77
72 L_PAREN@[75; 76) "(" 72 L_PAREN@75..76 "("
73 R_PAREN@[76; 77) ")" 73 R_PAREN@76..77 ")"
74 SEMICOLON@[77; 78) ";" 74 SEMICOLON@77..78 ";"
75 WHITESPACE@[78; 83) "\n " 75 WHITESPACE@78..83 "\n "
76 LET_STMT@[83; 100) 76 LET_STMT@83..100
77 LET_KW@[83; 86) "let" 77 LET_KW@83..86 "let"
78 WHITESPACE@[86; 87) " " 78 WHITESPACE@86..87 " "
79 TUPLE_STRUCT_PAT@[87; 94) 79 TUPLE_STRUCT_PAT@87..94
80 PATH@[87; 90) 80 PATH@87..90
81 PATH_SEGMENT@[87; 90) 81 PATH_SEGMENT@87..90
82 NAME_REF@[87; 90) 82 NAME_REF@87..90
83 IDENT@[87; 90) "Bar" 83 IDENT@87..90 "Bar"
84 L_PAREN@[90; 91) "(" 84 L_PAREN@90..91 "("
85 DOT_DOT_PAT@[91; 93) 85 DOT_DOT_PAT@91..93
86 DOT2@[91; 93) ".." 86 DOT2@91..93 ".."
87 R_PAREN@[93; 94) ")" 87 R_PAREN@93..94 ")"
88 WHITESPACE@[94; 95) " " 88 WHITESPACE@94..95 " "
89 EQ@[95; 96) "=" 89 EQ@95..96 "="
90 WHITESPACE@[96; 97) " " 90 WHITESPACE@96..97 " "
91 TUPLE_EXPR@[97; 99) 91 TUPLE_EXPR@97..99
92 L_PAREN@[97; 98) "(" 92 L_PAREN@97..98 "("
93 R_PAREN@[98; 99) ")" 93 R_PAREN@98..99 ")"
94 SEMICOLON@[99; 100) ";" 94 SEMICOLON@99..100 ";"
95 WHITESPACE@[100; 101) "\n" 95 WHITESPACE@100..101 "\n"
96 R_CURLY@[101; 102) "}" 96 R_CURLY@101..102 "}"
97 WHITESPACE@[102; 103) "\n" 97 WHITESPACE@102..103 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rast
index cc759310a..df8ada62a 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rast
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@0..26
2 FN_DEF@[0; 25) 2 FN_DEF@0..25
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 25) 11 BLOCK_EXPR@9..25
12 BLOCK@[9; 25) 12 BLOCK@9..25
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 23) 15 EXPR_STMT@15..23
16 LOOP_EXPR@[15; 22) 16 LOOP_EXPR@15..22
17 LOOP_KW@[15; 19) "loop" 17 LOOP_KW@15..19 "loop"
18 WHITESPACE@[19; 20) " " 18 WHITESPACE@19..20 " "
19 BLOCK_EXPR@[20; 22) 19 BLOCK_EXPR@20..22
20 BLOCK@[20; 22) 20 BLOCK@20..22
21 L_CURLY@[20; 21) "{" 21 L_CURLY@20..21 "{"
22 R_CURLY@[21; 22) "}" 22 R_CURLY@21..22 "}"
23 SEMICOLON@[22; 23) ";" 23 SEMICOLON@22..23 ";"
24 WHITESPACE@[23; 24) "\n" 24 WHITESPACE@23..24 "\n"
25 R_CURLY@[24; 25) "}" 25 R_CURLY@24..25 "}"
26 WHITESPACE@[25; 26) "\n" 26 WHITESPACE@25..26 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rast b/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rast
index 506f56fff..869875875 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rast
@@ -1,9 +1,9 @@
1SOURCE_FILE@[0; 10) 1SOURCE_FILE@0..10
2 EXTERN_BLOCK@[0; 9) 2 EXTERN_BLOCK@0..9
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 EXTERN_ITEM_LIST@[7; 9) 6 EXTERN_ITEM_LIST@7..9
7 L_CURLY@[7; 8) "{" 7 L_CURLY@7..8 "{"
8 R_CURLY@[8; 9) "}" 8 R_CURLY@8..9 "}"
9 WHITESPACE@[9; 10) "\n" 9 WHITESPACE@9..10 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rast
index c2fafe472..de01cc79e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rast
@@ -1,60 +1,60 @@
1SOURCE_FILE@[0; 48) 1SOURCE_FILE@0..48
2 FN_DEF@[0; 47) 2 FN_DEF@0..47
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 47) 11 BLOCK_EXPR@9..47
12 BLOCK@[9; 47) 12 BLOCK@9..47
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 21) 15 EXPR_STMT@15..21
16 FIELD_EXPR@[15; 20) 16 FIELD_EXPR@15..20
17 PATH_EXPR@[15; 16) 17 PATH_EXPR@15..16
18 PATH@[15; 16) 18 PATH@15..16
19 PATH_SEGMENT@[15; 16) 19 PATH_SEGMENT@15..16
20 NAME_REF@[15; 16) 20 NAME_REF@15..16
21 IDENT@[15; 16) "x" 21 IDENT@15..16 "x"
22 DOT@[16; 17) "." 22 DOT@16..17 "."
23 NAME_REF@[17; 20) 23 NAME_REF@17..20
24 IDENT@[17; 20) "foo" 24 IDENT@17..20 "foo"
25 SEMICOLON@[20; 21) ";" 25 SEMICOLON@20..21 ";"
26 WHITESPACE@[21; 26) "\n " 26 WHITESPACE@21..26 "\n "
27 EXPR_STMT@[26; 34) 27 EXPR_STMT@26..34
28 FIELD_EXPR@[26; 33) 28 FIELD_EXPR@26..33
29 FIELD_EXPR@[26; 29) 29 FIELD_EXPR@26..29
30 PATH_EXPR@[26; 27) 30 PATH_EXPR@26..27
31 PATH@[26; 27) 31 PATH@26..27
32 PATH_SEGMENT@[26; 27) 32 PATH_SEGMENT@26..27
33 NAME_REF@[26; 27) 33 NAME_REF@26..27
34 IDENT@[26; 27) "x" 34 IDENT@26..27 "x"
35 DOT@[27; 28) "." 35 DOT@27..28 "."
36 NAME_REF@[28; 29) 36 NAME_REF@28..29
37 INT_NUMBER@[28; 29) "0" 37 INT_NUMBER@28..29 "0"
38 DOT@[29; 30) "." 38 DOT@29..30 "."
39 NAME_REF@[30; 33) 39 NAME_REF@30..33
40 IDENT@[30; 33) "bar" 40 IDENT@30..33 "bar"
41 SEMICOLON@[33; 34) ";" 41 SEMICOLON@33..34 ";"
42 WHITESPACE@[34; 39) "\n " 42 WHITESPACE@34..39 "\n "
43 EXPR_STMT@[39; 45) 43 EXPR_STMT@39..45
44 CALL_EXPR@[39; 44) 44 CALL_EXPR@39..44
45 FIELD_EXPR@[39; 42) 45 FIELD_EXPR@39..42
46 PATH_EXPR@[39; 40) 46 PATH_EXPR@39..40
47 PATH@[39; 40) 47 PATH@39..40
48 PATH_SEGMENT@[39; 40) 48 PATH_SEGMENT@39..40
49 NAME_REF@[39; 40) 49 NAME_REF@39..40
50 IDENT@[39; 40) "x" 50 IDENT@39..40 "x"
51 DOT@[40; 41) "." 51 DOT@40..41 "."
52 NAME_REF@[41; 42) 52 NAME_REF@41..42
53 INT_NUMBER@[41; 42) "0" 53 INT_NUMBER@41..42 "0"
54 ARG_LIST@[42; 44) 54 ARG_LIST@42..44
55 L_PAREN@[42; 43) "(" 55 L_PAREN@42..43 "("
56 R_PAREN@[43; 44) ")" 56 R_PAREN@43..44 ")"
57 SEMICOLON@[44; 45) ";" 57 SEMICOLON@44..45 ";"
58 WHITESPACE@[45; 46) "\n" 58 WHITESPACE@45..46 "\n"
59 R_CURLY@[46; 47) "}" 59 R_CURLY@46..47 "}"
60 WHITESPACE@[47; 48) "\n" 60 WHITESPACE@47..48 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast b/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast
index 15d8c736d..283442a8b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 31) 1SOURCE_FILE@0..31
2 TYPE_ALIAS_DEF@[0; 30) 2 TYPE_ALIAS_DEF@0..30
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 8) 5 NAME@5..8
6 IDENT@[5; 8) "Foo" 6 IDENT@5..8 "Foo"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 WHERE_CLAUSE@[9; 24) 8 WHERE_CLAUSE@9..24
9 WHERE_KW@[9; 14) "where" 9 WHERE_KW@9..14 "where"
10 WHITESPACE@[14; 15) " " 10 WHITESPACE@14..15 " "
11 WHERE_PRED@[15; 24) 11 WHERE_PRED@15..24
12 PATH_TYPE@[15; 18) 12 PATH_TYPE@15..18
13 PATH@[15; 18) 13 PATH@15..18
14 PATH_SEGMENT@[15; 18) 14 PATH_SEGMENT@15..18
15 NAME_REF@[15; 18) 15 NAME_REF@15..18
16 IDENT@[15; 18) "Foo" 16 IDENT@15..18 "Foo"
17 COLON@[18; 19) ":" 17 COLON@18..19 ":"
18 WHITESPACE@[19; 20) " " 18 WHITESPACE@19..20 " "
19 TYPE_BOUND_LIST@[20; 24) 19 TYPE_BOUND_LIST@20..24
20 TYPE_BOUND@[20; 24) 20 TYPE_BOUND@20..24
21 PATH_TYPE@[20; 24) 21 PATH_TYPE@20..24
22 PATH@[20; 24) 22 PATH@20..24
23 PATH_SEGMENT@[20; 24) 23 PATH_SEGMENT@20..24
24 NAME_REF@[20; 24) 24 NAME_REF@20..24
25 IDENT@[20; 24) "Copy" 25 IDENT@20..24 "Copy"
26 WHITESPACE@[24; 25) " " 26 WHITESPACE@24..25 " "
27 EQ@[25; 26) "=" 27 EQ@25..26 "="
28 WHITESPACE@[26; 27) " " 28 WHITESPACE@26..27 " "
29 TUPLE_TYPE@[27; 29) 29 TUPLE_TYPE@27..29
30 L_PAREN@[27; 28) "(" 30 L_PAREN@27..28 "("
31 R_PAREN@[28; 29) ")" 31 R_PAREN@28..29 ")"
32 SEMICOLON@[29; 30) ";" 32 SEMICOLON@29..30 ";"
33 WHITESPACE@[30; 31) "\n" 33 WHITESPACE@30..31 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast b/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast
index a72d56495..e2e871dda 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 36) 1SOURCE_FILE@0..36
2 TYPE_ALIAS_DEF@[0; 17) 2 TYPE_ALIAS_DEF@0..17
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "M" 6 IDENT@5..6 "M"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 POINTER_TYPE@[9; 16) 10 POINTER_TYPE@9..16
11 STAR@[9; 10) "*" 11 STAR@9..10 "*"
12 MUT_KW@[10; 13) "mut" 12 MUT_KW@10..13 "mut"
13 WHITESPACE@[13; 14) " " 13 WHITESPACE@13..14 " "
14 TUPLE_TYPE@[14; 16) 14 TUPLE_TYPE@14..16
15 L_PAREN@[14; 15) "(" 15 L_PAREN@14..15 "("
16 R_PAREN@[15; 16) ")" 16 R_PAREN@15..16 ")"
17 SEMICOLON@[16; 17) ";" 17 SEMICOLON@16..17 ";"
18 WHITESPACE@[17; 18) "\n" 18 WHITESPACE@17..18 "\n"
19 TYPE_ALIAS_DEF@[18; 35) 19 TYPE_ALIAS_DEF@18..35
20 TYPE_KW@[18; 22) "type" 20 TYPE_KW@18..22 "type"
21 WHITESPACE@[22; 23) " " 21 WHITESPACE@22..23 " "
22 NAME@[23; 24) 22 NAME@23..24
23 IDENT@[23; 24) "C" 23 IDENT@23..24 "C"
24 WHITESPACE@[24; 25) " " 24 WHITESPACE@24..25 " "
25 EQ@[25; 26) "=" 25 EQ@25..26 "="
26 WHITESPACE@[26; 27) " " 26 WHITESPACE@26..27 " "
27 POINTER_TYPE@[27; 34) 27 POINTER_TYPE@27..34
28 STAR@[27; 28) "*" 28 STAR@27..28 "*"
29 MUT_KW@[28; 31) "mut" 29 MUT_KW@28..31 "mut"
30 WHITESPACE@[31; 32) " " 30 WHITESPACE@31..32 " "
31 TUPLE_TYPE@[32; 34) 31 TUPLE_TYPE@32..34
32 L_PAREN@[32; 33) "(" 32 L_PAREN@32..33 "("
33 R_PAREN@[33; 34) ")" 33 R_PAREN@33..34 ")"
34 SEMICOLON@[34; 35) ";" 34 SEMICOLON@34..35 ";"
35 WHITESPACE@[35; 36) "\n" 35 WHITESPACE@35..36 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rast
index 3c98467c7..a60940fcf 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rast
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@0..16
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@0..15
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 10) 5 NAME@5..10
6 IDENT@[5; 10) "Never" 6 IDENT@5..10 "Never"
7 WHITESPACE@[10; 11) " " 7 WHITESPACE@10..11 " "
8 EQ@[11; 12) "=" 8 EQ@11..12 "="
9 WHITESPACE@[12; 13) " " 9 WHITESPACE@12..13 " "
10 NEVER_TYPE@[13; 14) 10 NEVER_TYPE@13..14
11 BANG@[13; 14) "!" 11 BANG@13..14 "!"
12 SEMICOLON@[14; 15) ";" 12 SEMICOLON@14..15 ";"
13 WHITESPACE@[15; 16) "\n" 13 WHITESPACE@15..16 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rast
index adaece119..8ac307cb3 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rast
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@0..69
2 FN_DEF@[0; 68) 2 FN_DEF@0..68
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 68) 11 BLOCK_EXPR@9..68
12 BLOCK@[9; 68) 12 BLOCK@9..68
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LOOP_EXPR@[15; 66) 15 LOOP_EXPR@15..66
16 LOOP_KW@[15; 19) "loop" 16 LOOP_KW@15..19 "loop"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 BLOCK_EXPR@[20; 66) 18 BLOCK_EXPR@20..66
19 BLOCK@[20; 66) 19 BLOCK@20..66
20 L_CURLY@[20; 21) "{" 20 L_CURLY@20..21 "{"
21 WHITESPACE@[21; 30) "\n " 21 WHITESPACE@21..30 "\n "
22 EXPR_STMT@[30; 39) 22 EXPR_STMT@30..39
23 CONTINUE_EXPR@[30; 38) 23 CONTINUE_EXPR@30..38
24 CONTINUE_KW@[30; 38) "continue" 24 CONTINUE_KW@30..38 "continue"
25 SEMICOLON@[38; 39) ";" 25 SEMICOLON@38..39 ";"
26 WHITESPACE@[39; 48) "\n " 26 WHITESPACE@39..48 "\n "
27 EXPR_STMT@[48; 60) 27 EXPR_STMT@48..60
28 CONTINUE_EXPR@[48; 59) 28 CONTINUE_EXPR@48..59
29 CONTINUE_KW@[48; 56) "continue" 29 CONTINUE_KW@48..56 "continue"
30 WHITESPACE@[56; 57) " " 30 WHITESPACE@56..57 " "
31 LIFETIME@[57; 59) "\'l" 31 LIFETIME@57..59 "\'l"
32 SEMICOLON@[59; 60) ";" 32 SEMICOLON@59..60 ";"
33 WHITESPACE@[60; 65) "\n " 33 WHITESPACE@60..65 "\n "
34 R_CURLY@[65; 66) "}" 34 R_CURLY@65..66 "}"
35 WHITESPACE@[66; 67) "\n" 35 WHITESPACE@66..67 "\n"
36 R_CURLY@[67; 68) "}" 36 R_CURLY@67..68 "}"
37 WHITESPACE@[68; 69) "\n" 37 WHITESPACE@68..69 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rast b/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rast
index 7b43f1294..d59c6006d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rast
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@0..18
2 TRAIT_DEF@[0; 17) 2 TRAIT_DEF@0..17
3 UNSAFE_KW@[0; 6) "unsafe" 3 UNSAFE_KW@0..6 "unsafe"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 TRAIT_KW@[7; 12) "trait" 5 TRAIT_KW@7..12 "trait"
6 WHITESPACE@[12; 13) " " 6 WHITESPACE@12..13 " "
7 NAME@[13; 14) 7 NAME@13..14
8 IDENT@[13; 14) "T" 8 IDENT@13..14 "T"
9 WHITESPACE@[14; 15) " " 9 WHITESPACE@14..15 " "
10 ITEM_LIST@[15; 17) 10 ITEM_LIST@15..17
11 L_CURLY@[15; 16) "{" 11 L_CURLY@15..16 "{"
12 R_CURLY@[16; 17) "}" 12 R_CURLY@16..17 "}"
13 WHITESPACE@[17; 18) "\n" 13 WHITESPACE@17..18 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rast
index f4c86a05f..61a0b22f4 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 TYPE_ALIAS_DEF@[0; 18) 2 TYPE_ALIAS_DEF@0..18
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "T" 6 IDENT@5..6 "T"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 ARRAY_TYPE@[9; 17) 10 ARRAY_TYPE@9..17
11 L_BRACK@[9; 10) "[" 11 L_BRACK@9..10 "["
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@10..12
13 L_PAREN@[10; 11) "(" 13 L_PAREN@10..11 "("
14 R_PAREN@[11; 12) ")" 14 R_PAREN@11..12 ")"
15 SEMICOLON@[12; 13) ";" 15 SEMICOLON@12..13 ";"
16 WHITESPACE@[13; 14) " " 16 WHITESPACE@13..14 " "
17 LITERAL@[14; 16) 17 LITERAL@14..16
18 INT_NUMBER@[14; 16) "92" 18 INT_NUMBER@14..16 "92"
19 R_BRACK@[16; 17) "]" 19 R_BRACK@16..17 "]"
20 SEMICOLON@[17; 18) ";" 20 SEMICOLON@17..18 ";"
21 WHITESPACE@[18; 19) "\n" 21 WHITESPACE@18..19 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rast b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rast
index 89caee543..6f6400d00 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rast
@@ -1,74 +1,74 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@0..69
2 IMPL_DEF@[0; 68) 2 IMPL_DEF@0..68
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "S" 9 IDENT@5..6 "S"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 ITEM_LIST@[7; 68) 11 ITEM_LIST@7..68
12 L_CURLY@[7; 8) "{" 12 L_CURLY@7..8 "{"
13 WHITESPACE@[8; 13) "\n " 13 WHITESPACE@8..13 "\n "
14 FN_DEF@[13; 33) 14 FN_DEF@13..33
15 FN_KW@[13; 15) "fn" 15 FN_KW@13..15 "fn"
16 WHITESPACE@[15; 16) " " 16 WHITESPACE@15..16 " "
17 NAME@[16; 17) 17 NAME@16..17
18 IDENT@[16; 17) "a" 18 IDENT@16..17 "a"
19 PARAM_LIST@[17; 30) 19 PARAM_LIST@17..30
20 L_PAREN@[17; 18) "(" 20 L_PAREN@17..18 "("
21 SELF_PARAM@[18; 29) 21 SELF_PARAM@18..29
22 SELF_KW@[18; 22) "self" 22 SELF_KW@18..22 "self"
23 COLON@[22; 23) ":" 23 COLON@22..23 ":"
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 REFERENCE_TYPE@[24; 29) 25 REFERENCE_TYPE@24..29
26 AMP@[24; 25) "&" 26 AMP@24..25 "&"
27 PATH_TYPE@[25; 29) 27 PATH_TYPE@25..29
28 PATH@[25; 29) 28 PATH@25..29
29 PATH_SEGMENT@[25; 29) 29 PATH_SEGMENT@25..29
30 NAME_REF@[25; 29) 30 NAME_REF@25..29
31 IDENT@[25; 29) "Self" 31 IDENT@25..29 "Self"
32 R_PAREN@[29; 30) ")" 32 R_PAREN@29..30 ")"
33 WHITESPACE@[30; 31) " " 33 WHITESPACE@30..31 " "
34 BLOCK_EXPR@[31; 33) 34 BLOCK_EXPR@31..33
35 BLOCK@[31; 33) 35 BLOCK@31..33
36 L_CURLY@[31; 32) "{" 36 L_CURLY@31..32 "{"
37 R_CURLY@[32; 33) "}" 37 R_CURLY@32..33 "}"
38 WHITESPACE@[33; 38) "\n " 38 WHITESPACE@33..38 "\n "
39 FN_DEF@[38; 66) 39 FN_DEF@38..66
40 FN_KW@[38; 40) "fn" 40 FN_KW@38..40 "fn"
41 WHITESPACE@[40; 41) " " 41 WHITESPACE@40..41 " "
42 NAME@[41; 42) 42 NAME@41..42
43 IDENT@[41; 42) "b" 43 IDENT@41..42 "b"
44 PARAM_LIST@[42; 63) 44 PARAM_LIST@42..63
45 L_PAREN@[42; 43) "(" 45 L_PAREN@42..43 "("
46 SELF_PARAM@[43; 62) 46 SELF_PARAM@43..62
47 MUT_KW@[43; 46) "mut" 47 MUT_KW@43..46 "mut"
48 WHITESPACE@[46; 47) " " 48 WHITESPACE@46..47 " "
49 SELF_KW@[47; 51) "self" 49 SELF_KW@47..51 "self"
50 COLON@[51; 52) ":" 50 COLON@51..52 ":"
51 WHITESPACE@[52; 53) " " 51 WHITESPACE@52..53 " "
52 PATH_TYPE@[53; 62) 52 PATH_TYPE@53..62
53 PATH@[53; 62) 53 PATH@53..62
54 PATH_SEGMENT@[53; 62) 54 PATH_SEGMENT@53..62
55 NAME_REF@[53; 56) 55 NAME_REF@53..56
56 IDENT@[53; 56) "Box" 56 IDENT@53..56 "Box"
57 TYPE_ARG_LIST@[56; 62) 57 TYPE_ARG_LIST@56..62
58 L_ANGLE@[56; 57) "<" 58 L_ANGLE@56..57 "<"
59 TYPE_ARG@[57; 61) 59 TYPE_ARG@57..61
60 PATH_TYPE@[57; 61) 60 PATH_TYPE@57..61
61 PATH@[57; 61) 61 PATH@57..61
62 PATH_SEGMENT@[57; 61) 62 PATH_SEGMENT@57..61
63 NAME_REF@[57; 61) 63 NAME_REF@57..61
64 IDENT@[57; 61) "Self" 64 IDENT@57..61 "Self"
65 R_ANGLE@[61; 62) ">" 65 R_ANGLE@61..62 ">"
66 R_PAREN@[62; 63) ")" 66 R_PAREN@62..63 ")"
67 WHITESPACE@[63; 64) " " 67 WHITESPACE@63..64 " "
68 BLOCK_EXPR@[64; 66) 68 BLOCK_EXPR@64..66
69 BLOCK@[64; 66) 69 BLOCK@64..66
70 L_CURLY@[64; 65) "{" 70 L_CURLY@64..65 "{"
71 R_CURLY@[65; 66) "}" 71 R_CURLY@65..66 "}"
72 WHITESPACE@[66; 67) "\n" 72 WHITESPACE@66..67 "\n"
73 R_CURLY@[67; 68) "}" 73 R_CURLY@67..68 "}"
74 WHITESPACE@[68; 69) "\n" 74 WHITESPACE@68..69 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rast
index 5a42f360c..ba422f1ae 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rast
@@ -1,45 +1,45 @@
1SOURCE_FILE@[0; 44) 1SOURCE_FILE@0..44
2 FN_DEF@[0; 43) 2 FN_DEF@0..43
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 43) 11 BLOCK_EXPR@9..43
12 BLOCK@[9; 43) 12 BLOCK@9..43
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 20) 15 EXPR_STMT@15..20
16 PREFIX_EXPR@[15; 19) 16 PREFIX_EXPR@15..19
17 STAR@[15; 16) "*" 17 STAR@15..16 "*"
18 PREFIX_EXPR@[16; 19) 18 PREFIX_EXPR@16..19
19 STAR@[16; 17) "*" 19 STAR@16..17 "*"
20 REF_EXPR@[17; 19) 20 REF_EXPR@17..19
21 AMP@[17; 18) "&" 21 AMP@17..18 "&"
22 LITERAL@[18; 19) 22 LITERAL@18..19
23 INT_NUMBER@[18; 19) "1" 23 INT_NUMBER@18..19 "1"
24 SEMICOLON@[19; 20) ";" 24 SEMICOLON@19..20 ";"
25 WHITESPACE@[20; 25) "\n " 25 WHITESPACE@20..25 "\n "
26 EXPR_STMT@[25; 32) 26 EXPR_STMT@25..32
27 PREFIX_EXPR@[25; 31) 27 PREFIX_EXPR@25..31
28 BANG@[25; 26) "!" 28 BANG@25..26 "!"
29 PREFIX_EXPR@[26; 31) 29 PREFIX_EXPR@26..31
30 BANG@[26; 27) "!" 30 BANG@26..27 "!"
31 LITERAL@[27; 31) 31 LITERAL@27..31
32 TRUE_KW@[27; 31) "true" 32 TRUE_KW@27..31 "true"
33 SEMICOLON@[31; 32) ";" 33 SEMICOLON@31..32 ";"
34 WHITESPACE@[32; 37) "\n " 34 WHITESPACE@32..37 "\n "
35 EXPR_STMT@[37; 41) 35 EXPR_STMT@37..41
36 PREFIX_EXPR@[37; 40) 36 PREFIX_EXPR@37..40
37 MINUS@[37; 38) "-" 37 MINUS@37..38 "-"
38 PREFIX_EXPR@[38; 40) 38 PREFIX_EXPR@38..40
39 MINUS@[38; 39) "-" 39 MINUS@38..39 "-"
40 LITERAL@[39; 40) 40 LITERAL@39..40
41 INT_NUMBER@[39; 40) "1" 41 INT_NUMBER@39..40 "1"
42 SEMICOLON@[40; 41) ";" 42 SEMICOLON@40..41 ";"
43 WHITESPACE@[41; 42) "\n" 43 WHITESPACE@41..42 "\n"
44 R_CURLY@[42; 43) "}" 44 R_CURLY@42..43 "}"
45 WHITESPACE@[43; 44) "\n" 45 WHITESPACE@43..44 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rast b/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rast
index c1bedb37c..9e898b7b9 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 60) 1SOURCE_FILE@0..60
2 USE_ITEM@[0; 6) 2 USE_ITEM@0..6
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 5) 5 USE_TREE@4..5
6 STAR@[4; 5) "*" 6 STAR@4..5 "*"
7 SEMICOLON@[5; 6) ";" 7 SEMICOLON@5..6 ";"
8 WHITESPACE@[6; 7) "\n" 8 WHITESPACE@6..7 "\n"
9 USE_ITEM@[7; 15) 9 USE_ITEM@7..15
10 USE_KW@[7; 10) "use" 10 USE_KW@7..10 "use"
11 WHITESPACE@[10; 11) " " 11 WHITESPACE@10..11 " "
12 USE_TREE@[11; 14) 12 USE_TREE@11..14
13 COLON2@[11; 13) "::" 13 COLON2@11..13 "::"
14 STAR@[13; 14) "*" 14 STAR@13..14 "*"
15 SEMICOLON@[14; 15) ";" 15 SEMICOLON@14..15 ";"
16 WHITESPACE@[15; 16) "\n" 16 WHITESPACE@15..16 "\n"
17 USE_ITEM@[16; 36) 17 USE_ITEM@16..36
18 USE_KW@[16; 19) "use" 18 USE_KW@16..19 "use"
19 WHITESPACE@[19; 20) " " 19 WHITESPACE@19..20 " "
20 USE_TREE@[20; 35) 20 USE_TREE@20..35
21 PATH@[20; 30) 21 PATH@20..30
22 PATH@[20; 24) 22 PATH@20..24
23 PATH_SEGMENT@[20; 24) 23 PATH_SEGMENT@20..24
24 NAME_REF@[20; 24) 24 NAME_REF@20..24
25 IDENT@[20; 24) "some" 25 IDENT@20..24 "some"
26 COLON2@[24; 26) "::" 26 COLON2@24..26 "::"
27 PATH_SEGMENT@[26; 30) 27 PATH_SEGMENT@26..30
28 NAME_REF@[26; 30) 28 NAME_REF@26..30
29 IDENT@[26; 30) "path" 29 IDENT@26..30 "path"
30 COLON2@[30; 32) "::" 30 COLON2@30..32 "::"
31 USE_TREE_LIST@[32; 35) 31 USE_TREE_LIST@32..35
32 L_CURLY@[32; 33) "{" 32 L_CURLY@32..33 "{"
33 USE_TREE@[33; 34) 33 USE_TREE@33..34
34 STAR@[33; 34) "*" 34 STAR@33..34 "*"
35 R_CURLY@[34; 35) "}" 35 R_CURLY@34..35 "}"
36 SEMICOLON@[35; 36) ";" 36 SEMICOLON@35..36 ";"
37 WHITESPACE@[36; 37) "\n" 37 WHITESPACE@36..37 "\n"
38 USE_ITEM@[37; 59) 38 USE_ITEM@37..59
39 USE_KW@[37; 40) "use" 39 USE_KW@37..40 "use"
40 WHITESPACE@[40; 41) " " 40 WHITESPACE@40..41 " "
41 USE_TREE@[41; 58) 41 USE_TREE@41..58
42 PATH@[41; 51) 42 PATH@41..51
43 PATH@[41; 45) 43 PATH@41..45
44 PATH_SEGMENT@[41; 45) 44 PATH_SEGMENT@41..45
45 NAME_REF@[41; 45) 45 NAME_REF@41..45
46 IDENT@[41; 45) "some" 46 IDENT@41..45 "some"
47 COLON2@[45; 47) "::" 47 COLON2@45..47 "::"
48 PATH_SEGMENT@[47; 51) 48 PATH_SEGMENT@47..51
49 NAME_REF@[47; 51) 49 NAME_REF@47..51
50 IDENT@[47; 51) "path" 50 IDENT@47..51 "path"
51 COLON2@[51; 53) "::" 51 COLON2@51..53 "::"
52 USE_TREE_LIST@[53; 58) 52 USE_TREE_LIST@53..58
53 L_CURLY@[53; 54) "{" 53 L_CURLY@53..54 "{"
54 USE_TREE@[54; 57) 54 USE_TREE@54..57
55 COLON2@[54; 56) "::" 55 COLON2@54..56 "::"
56 STAR@[56; 57) "*" 56 STAR@56..57 "*"
57 R_CURLY@[57; 58) "}" 57 R_CURLY@57..58 "}"
58 SEMICOLON@[58; 59) ";" 58 SEMICOLON@58..59 ";"
59 WHITESPACE@[59; 60) "\n" 59 WHITESPACE@59..60 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rast b/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rast
index 767a49ce6..de22b22dd 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rast
@@ -1,80 +1,80 @@
1SOURCE_FILE@[0; 89) 1SOURCE_FILE@0..89
2 IMPL_DEF@[0; 88) 2 IMPL_DEF@0..88
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "F" 9 IDENT@5..6 "F"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 ITEM_LIST@[7; 88) 11 ITEM_LIST@7..88
12 L_CURLY@[7; 8) "{" 12 L_CURLY@7..8 "{"
13 WHITESPACE@[8; 13) "\n " 13 WHITESPACE@8..13 "\n "
14 TYPE_ALIAS_DEF@[13; 26) 14 TYPE_ALIAS_DEF@13..26
15 TYPE_KW@[13; 17) "type" 15 TYPE_KW@13..17 "type"
16 WHITESPACE@[17; 18) " " 16 WHITESPACE@17..18 " "
17 NAME@[18; 19) 17 NAME@18..19
18 IDENT@[18; 19) "A" 18 IDENT@18..19 "A"
19 WHITESPACE@[19; 20) " " 19 WHITESPACE@19..20 " "
20 EQ@[20; 21) "=" 20 EQ@20..21 "="
21 WHITESPACE@[21; 22) " " 21 WHITESPACE@21..22 " "
22 PATH_TYPE@[22; 25) 22 PATH_TYPE@22..25
23 PATH@[22; 25) 23 PATH@22..25
24 PATH_SEGMENT@[22; 25) 24 PATH_SEGMENT@22..25
25 NAME_REF@[22; 25) 25 NAME_REF@22..25
26 IDENT@[22; 25) "i32" 26 IDENT@22..25 "i32"
27 SEMICOLON@[25; 26) ";" 27 SEMICOLON@25..26 ";"
28 WHITESPACE@[26; 31) "\n " 28 WHITESPACE@26..31 "\n "
29 CONST_DEF@[31; 49) 29 CONST_DEF@31..49
30 CONST_KW@[31; 36) "const" 30 CONST_KW@31..36 "const"
31 WHITESPACE@[36; 37) " " 31 WHITESPACE@36..37 " "
32 NAME@[37; 38) 32 NAME@37..38
33 IDENT@[37; 38) "B" 33 IDENT@37..38 "B"
34 COLON@[38; 39) ":" 34 COLON@38..39 ":"
35 WHITESPACE@[39; 40) " " 35 WHITESPACE@39..40 " "
36 PATH_TYPE@[40; 43) 36 PATH_TYPE@40..43
37 PATH@[40; 43) 37 PATH@40..43
38 PATH_SEGMENT@[40; 43) 38 PATH_SEGMENT@40..43
39 NAME_REF@[40; 43) 39 NAME_REF@40..43
40 IDENT@[40; 43) "i32" 40 IDENT@40..43 "i32"
41 WHITESPACE@[43; 44) " " 41 WHITESPACE@43..44 " "
42 EQ@[44; 45) "=" 42 EQ@44..45 "="
43 WHITESPACE@[45; 46) " " 43 WHITESPACE@45..46 " "
44 LITERAL@[46; 48) 44 LITERAL@46..48
45 INT_NUMBER@[46; 48) "92" 45 INT_NUMBER@46..48 "92"
46 SEMICOLON@[48; 49) ";" 46 SEMICOLON@48..49 ";"
47 WHITESPACE@[49; 54) "\n " 47 WHITESPACE@49..54 "\n "
48 FN_DEF@[54; 65) 48 FN_DEF@54..65
49 FN_KW@[54; 56) "fn" 49 FN_KW@54..56 "fn"
50 WHITESPACE@[56; 57) " " 50 WHITESPACE@56..57 " "
51 NAME@[57; 60) 51 NAME@57..60
52 IDENT@[57; 60) "foo" 52 IDENT@57..60 "foo"
53 PARAM_LIST@[60; 62) 53 PARAM_LIST@60..62
54 L_PAREN@[60; 61) "(" 54 L_PAREN@60..61 "("
55 R_PAREN@[61; 62) ")" 55 R_PAREN@61..62 ")"
56 WHITESPACE@[62; 63) " " 56 WHITESPACE@62..63 " "
57 BLOCK_EXPR@[63; 65) 57 BLOCK_EXPR@63..65
58 BLOCK@[63; 65) 58 BLOCK@63..65
59 L_CURLY@[63; 64) "{" 59 L_CURLY@63..64 "{"
60 R_CURLY@[64; 65) "}" 60 R_CURLY@64..65 "}"
61 WHITESPACE@[65; 70) "\n " 61 WHITESPACE@65..70 "\n "
62 FN_DEF@[70; 86) 62 FN_DEF@70..86
63 FN_KW@[70; 72) "fn" 63 FN_KW@70..72 "fn"
64 WHITESPACE@[72; 73) " " 64 WHITESPACE@72..73 " "
65 NAME@[73; 76) 65 NAME@73..76
66 IDENT@[73; 76) "bar" 66 IDENT@73..76 "bar"
67 PARAM_LIST@[76; 83) 67 PARAM_LIST@76..83
68 L_PAREN@[76; 77) "(" 68 L_PAREN@76..77 "("
69 SELF_PARAM@[77; 82) 69 SELF_PARAM@77..82
70 AMP@[77; 78) "&" 70 AMP@77..78 "&"
71 SELF_KW@[78; 82) "self" 71 SELF_KW@78..82 "self"
72 R_PAREN@[82; 83) ")" 72 R_PAREN@82..83 ")"
73 WHITESPACE@[83; 84) " " 73 WHITESPACE@83..84 " "
74 BLOCK_EXPR@[84; 86) 74 BLOCK_EXPR@84..86
75 BLOCK@[84; 86) 75 BLOCK@84..86
76 L_CURLY@[84; 85) "{" 76 L_CURLY@84..85 "{"
77 R_CURLY@[85; 86) "}" 77 R_CURLY@85..86 "}"
78 WHITESPACE@[86; 87) "\n" 78 WHITESPACE@86..87 "\n"
79 R_CURLY@[87; 88) "}" 79 R_CURLY@87..88 "}"
80 WHITESPACE@[88; 89) "\n" 80 WHITESPACE@88..89 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rast b/crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rast
index e0fc96d33..1b810607e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rast
@@ -1,53 +1,53 @@
1SOURCE_FILE@[0; 81) 1SOURCE_FILE@0..81
2 STRUCT_DEF@[0; 20) 2 STRUCT_DEF@0..20
3 VISIBILITY@[0; 10) 3 VISIBILITY@0..10
4 PUB_KW@[0; 3) "pub" 4 PUB_KW@0..3 "pub"
5 L_PAREN@[3; 4) "(" 5 L_PAREN@3..4 "("
6 CRATE_KW@[4; 9) "crate" 6 CRATE_KW@4..9 "crate"
7 R_PAREN@[9; 10) ")" 7 R_PAREN@9..10 ")"
8 WHITESPACE@[10; 11) " " 8 WHITESPACE@10..11 " "
9 STRUCT_KW@[11; 17) "struct" 9 STRUCT_KW@11..17 "struct"
10 WHITESPACE@[17; 18) " " 10 WHITESPACE@17..18 " "
11 NAME@[18; 19) 11 NAME@18..19
12 IDENT@[18; 19) "S" 12 IDENT@18..19 "S"
13 SEMICOLON@[19; 20) ";" 13 SEMICOLON@19..20 ";"
14 WHITESPACE@[20; 21) "\n" 14 WHITESPACE@20..21 "\n"
15 STRUCT_DEF@[21; 40) 15 STRUCT_DEF@21..40
16 VISIBILITY@[21; 30) 16 VISIBILITY@21..30
17 PUB_KW@[21; 24) "pub" 17 PUB_KW@21..24 "pub"
18 L_PAREN@[24; 25) "(" 18 L_PAREN@24..25 "("
19 SELF_KW@[25; 29) "self" 19 SELF_KW@25..29 "self"
20 R_PAREN@[29; 30) ")" 20 R_PAREN@29..30 ")"
21 WHITESPACE@[30; 31) " " 21 WHITESPACE@30..31 " "
22 STRUCT_KW@[31; 37) "struct" 22 STRUCT_KW@31..37 "struct"
23 WHITESPACE@[37; 38) " " 23 WHITESPACE@37..38 " "
24 NAME@[38; 39) 24 NAME@38..39
25 IDENT@[38; 39) "S" 25 IDENT@38..39 "S"
26 SEMICOLON@[39; 40) ";" 26 SEMICOLON@39..40 ";"
27 WHITESPACE@[40; 41) "\n" 27 WHITESPACE@40..41 "\n"
28 STRUCT_DEF@[41; 60) 28 STRUCT_DEF@41..60
29 VISIBILITY@[41; 50) 29 VISIBILITY@41..50
30 PUB_KW@[41; 44) "pub" 30 PUB_KW@41..44 "pub"
31 L_PAREN@[44; 45) "(" 31 L_PAREN@44..45 "("
32 SELF_KW@[45; 49) "self" 32 SELF_KW@45..49 "self"
33 R_PAREN@[49; 50) ")" 33 R_PAREN@49..50 ")"
34 WHITESPACE@[50; 51) " " 34 WHITESPACE@50..51 " "
35 STRUCT_KW@[51; 57) "struct" 35 STRUCT_KW@51..57 "struct"
36 WHITESPACE@[57; 58) " " 36 WHITESPACE@57..58 " "
37 NAME@[58; 59) 37 NAME@58..59
38 IDENT@[58; 59) "S" 38 IDENT@58..59 "S"
39 SEMICOLON@[59; 60) ";" 39 SEMICOLON@59..60 ";"
40 WHITESPACE@[60; 61) "\n" 40 WHITESPACE@60..61 "\n"
41 STRUCT_DEF@[61; 80) 41 STRUCT_DEF@61..80
42 VISIBILITY@[61; 70) 42 VISIBILITY@61..70
43 PUB_KW@[61; 64) "pub" 43 PUB_KW@61..64 "pub"
44 L_PAREN@[64; 65) "(" 44 L_PAREN@64..65 "("
45 SELF_KW@[65; 69) "self" 45 SELF_KW@65..69 "self"
46 R_PAREN@[69; 70) ")" 46 R_PAREN@69..70 ")"
47 WHITESPACE@[70; 71) " " 47 WHITESPACE@70..71 " "
48 STRUCT_KW@[71; 77) "struct" 48 STRUCT_KW@71..77 "struct"
49 WHITESPACE@[77; 78) " " 49 WHITESPACE@77..78 " "
50 NAME@[78; 79) 50 NAME@78..79
51 IDENT@[78; 79) "S" 51 IDENT@78..79 "S"
52 SEMICOLON@[79; 80) ";" 52 SEMICOLON@79..80 ";"
53 WHITESPACE@[80; 81) "\n" 53 WHITESPACE@80..81 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rast
index b7acc3f07..17687617b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rast
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 22) 1SOURCE_FILE@0..22
2 TYPE_ALIAS_DEF@[0; 21) 2 TYPE_ALIAS_DEF@0..21
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 16) 5 NAME@5..16
6 IDENT@[5; 16) "Placeholder" 6 IDENT@5..16 "Placeholder"
7 WHITESPACE@[16; 17) " " 7 WHITESPACE@16..17 " "
8 EQ@[17; 18) "=" 8 EQ@17..18 "="
9 WHITESPACE@[18; 19) " " 9 WHITESPACE@18..19 " "
10 PLACEHOLDER_TYPE@[19; 20) 10 PLACEHOLDER_TYPE@19..20
11 UNDERSCORE@[19; 20) "_" 11 UNDERSCORE@19..20 "_"
12 SEMICOLON@[20; 21) ";" 12 SEMICOLON@20..21 ";"
13 WHITESPACE@[21; 22) "\n" 13 WHITESPACE@21..22 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rast
index 430e4a999..7da292a2d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rast
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 39) 1SOURCE_FILE@0..39
2 FN_DEF@[0; 38) 2 FN_DEF@0..38
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 38) 11 BLOCK_EXPR@10..38
12 BLOCK@[10; 38) 12 BLOCK@10..38
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 36) 15 LET_STMT@16..36
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 SLICE_PAT@[20; 30) 18 SLICE_PAT@20..30
19 L_BRACK@[20; 21) "[" 19 L_BRACK@20..21 "["
20 BIND_PAT@[21; 22) 20 BIND_PAT@21..22
21 NAME@[21; 22) 21 NAME@21..22
22 IDENT@[21; 22) "a" 22 IDENT@21..22 "a"
23 COMMA@[22; 23) "," 23 COMMA@22..23 ","
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 BIND_PAT@[24; 25) 25 BIND_PAT@24..25
26 NAME@[24; 25) 26 NAME@24..25
27 IDENT@[24; 25) "b" 27 IDENT@24..25 "b"
28 COMMA@[25; 26) "," 28 COMMA@25..26 ","
29 WHITESPACE@[26; 27) " " 29 WHITESPACE@26..27 " "
30 DOT_DOT_PAT@[27; 29) 30 DOT_DOT_PAT@27..29
31 DOT2@[27; 29) ".." 31 DOT2@27..29 ".."
32 R_BRACK@[29; 30) "]" 32 R_BRACK@29..30 "]"
33 WHITESPACE@[30; 31) " " 33 WHITESPACE@30..31 " "
34 EQ@[31; 32) "=" 34 EQ@31..32 "="
35 WHITESPACE@[32; 33) " " 35 WHITESPACE@32..33 " "
36 ARRAY_EXPR@[33; 35) 36 ARRAY_EXPR@33..35
37 L_BRACK@[33; 34) "[" 37 L_BRACK@33..34 "["
38 R_BRACK@[34; 35) "]" 38 R_BRACK@34..35 "]"
39 SEMICOLON@[35; 36) ";" 39 SEMICOLON@35..36 ";"
40 WHITESPACE@[36; 37) "\n" 40 WHITESPACE@36..37 "\n"
41 R_CURLY@[37; 38) "}" 41 R_CURLY@37..38 "}"
42 WHITESPACE@[38; 39) "\n" 42 WHITESPACE@38..39 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rast
index 4eee1e7f1..0a6d77f45 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rast
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 15) 1SOURCE_FILE@0..15
2 TYPE_ALIAS_DEF@[0; 14) 2 TYPE_ALIAS_DEF@0..14
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "T" 6 IDENT@5..6 "T"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 SLICE_TYPE@[9; 13) 10 SLICE_TYPE@9..13
11 L_BRACK@[9; 10) "[" 11 L_BRACK@9..10 "["
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@10..12
13 L_PAREN@[10; 11) "(" 13 L_PAREN@10..11 "("
14 R_PAREN@[11; 12) ")" 14 R_PAREN@11..12 ")"
15 R_BRACK@[12; 13) "]" 15 R_BRACK@12..13 "]"
16 SEMICOLON@[13; 14) ";" 16 SEMICOLON@13..14 ";"
17 WHITESPACE@[14; 15) "\n" 17 WHITESPACE@14..15 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast
index d8d82dacc..574942f06 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast
@@ -1,105 +1,105 @@
1SOURCE_FILE@[0; 97) 1SOURCE_FILE@0..97
2 FN_DEF@[0; 96) 2 FN_DEF@0..96
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 96) 11 BLOCK_EXPR@9..96
12 BLOCK@[9; 96) 12 BLOCK@9..96
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 28) 15 LET_STMT@15..28
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 TUPLE_STRUCT_PAT@[19; 22) 18 TUPLE_STRUCT_PAT@19..22
19 PATH@[19; 20) 19 PATH@19..20
20 PATH_SEGMENT@[19; 20) 20 PATH_SEGMENT@19..20
21 NAME_REF@[19; 20) 21 NAME_REF@19..20
22 IDENT@[19; 20) "S" 22 IDENT@19..20 "S"
23 L_PAREN@[20; 21) "(" 23 L_PAREN@20..21 "("
24 R_PAREN@[21; 22) ")" 24 R_PAREN@21..22 ")"
25 WHITESPACE@[22; 23) " " 25 WHITESPACE@22..23 " "
26 EQ@[23; 24) "=" 26 EQ@23..24 "="
27 WHITESPACE@[24; 25) " " 27 WHITESPACE@24..25 " "
28 TUPLE_EXPR@[25; 27) 28 TUPLE_EXPR@25..27
29 L_PAREN@[25; 26) "(" 29 L_PAREN@25..26 "("
30 R_PAREN@[26; 27) ")" 30 R_PAREN@26..27 ")"
31 SEMICOLON@[27; 28) ";" 31 SEMICOLON@27..28 ";"
32 WHITESPACE@[28; 33) "\n " 32 WHITESPACE@28..33 "\n "
33 LET_STMT@[33; 47) 33 LET_STMT@33..47
34 LET_KW@[33; 36) "let" 34 LET_KW@33..36 "let"
35 WHITESPACE@[36; 37) " " 35 WHITESPACE@36..37 " "
36 TUPLE_STRUCT_PAT@[37; 41) 36 TUPLE_STRUCT_PAT@37..41
37 PATH@[37; 38) 37 PATH@37..38
38 PATH_SEGMENT@[37; 38) 38 PATH_SEGMENT@37..38
39 NAME_REF@[37; 38) 39 NAME_REF@37..38
40 IDENT@[37; 38) "S" 40 IDENT@37..38 "S"
41 L_PAREN@[38; 39) "(" 41 L_PAREN@38..39 "("
42 PLACEHOLDER_PAT@[39; 40) 42 PLACEHOLDER_PAT@39..40
43 UNDERSCORE@[39; 40) "_" 43 UNDERSCORE@39..40 "_"
44 R_PAREN@[40; 41) ")" 44 R_PAREN@40..41 ")"
45 WHITESPACE@[41; 42) " " 45 WHITESPACE@41..42 " "
46 EQ@[42; 43) "=" 46 EQ@42..43 "="
47 WHITESPACE@[43; 44) " " 47 WHITESPACE@43..44 " "
48 TUPLE_EXPR@[44; 46) 48 TUPLE_EXPR@44..46
49 L_PAREN@[44; 45) "(" 49 L_PAREN@44..45 "("
50 R_PAREN@[45; 46) ")" 50 R_PAREN@45..46 ")"
51 SEMICOLON@[46; 47) ";" 51 SEMICOLON@46..47 ";"
52 WHITESPACE@[47; 52) "\n " 52 WHITESPACE@47..52 "\n "
53 LET_STMT@[52; 67) 53 LET_STMT@52..67
54 LET_KW@[52; 55) "let" 54 LET_KW@52..55 "let"
55 WHITESPACE@[55; 56) " " 55 WHITESPACE@55..56 " "
56 TUPLE_STRUCT_PAT@[56; 61) 56 TUPLE_STRUCT_PAT@56..61
57 PATH@[56; 57) 57 PATH@56..57
58 PATH_SEGMENT@[56; 57) 58 PATH_SEGMENT@56..57
59 NAME_REF@[56; 57) 59 NAME_REF@56..57
60 IDENT@[56; 57) "S" 60 IDENT@56..57 "S"
61 L_PAREN@[57; 58) "(" 61 L_PAREN@57..58 "("
62 PLACEHOLDER_PAT@[58; 59) 62 PLACEHOLDER_PAT@58..59
63 UNDERSCORE@[58; 59) "_" 63 UNDERSCORE@58..59 "_"
64 COMMA@[59; 60) "," 64 COMMA@59..60 ","
65 R_PAREN@[60; 61) ")" 65 R_PAREN@60..61 ")"
66 WHITESPACE@[61; 62) " " 66 WHITESPACE@61..62 " "
67 EQ@[62; 63) "=" 67 EQ@62..63 "="
68 WHITESPACE@[63; 64) " " 68 WHITESPACE@63..64 " "
69 TUPLE_EXPR@[64; 66) 69 TUPLE_EXPR@64..66
70 L_PAREN@[64; 65) "(" 70 L_PAREN@64..65 "("
71 R_PAREN@[65; 66) ")" 71 R_PAREN@65..66 ")"
72 SEMICOLON@[66; 67) ";" 72 SEMICOLON@66..67 ";"
73 WHITESPACE@[67; 72) "\n " 73 WHITESPACE@67..72 "\n "
74 LET_STMT@[72; 94) 74 LET_STMT@72..94
75 LET_KW@[72; 75) "let" 75 LET_KW@72..75 "let"
76 WHITESPACE@[75; 76) " " 76 WHITESPACE@75..76 " "
77 TUPLE_STRUCT_PAT@[76; 88) 77 TUPLE_STRUCT_PAT@76..88
78 PATH@[76; 77) 78 PATH@76..77
79 PATH_SEGMENT@[76; 77) 79 PATH_SEGMENT@76..77
80 NAME_REF@[76; 77) 80 NAME_REF@76..77
81 IDENT@[76; 77) "S" 81 IDENT@76..77 "S"
82 L_PAREN@[77; 78) "(" 82 L_PAREN@77..78 "("
83 PLACEHOLDER_PAT@[78; 79) 83 PLACEHOLDER_PAT@78..79
84 UNDERSCORE@[78; 79) "_" 84 UNDERSCORE@78..79 "_"
85 COMMA@[79; 80) "," 85 COMMA@79..80 ","
86 WHITESPACE@[80; 81) " " 86 WHITESPACE@80..81 " "
87 DOT_DOT_PAT@[81; 83) 87 DOT_DOT_PAT@81..83
88 DOT2@[81; 83) ".." 88 DOT2@81..83 ".."
89 WHITESPACE@[83; 84) " " 89 WHITESPACE@83..84 " "
90 COMMA@[84; 85) "," 90 COMMA@84..85 ","
91 WHITESPACE@[85; 86) " " 91 WHITESPACE@85..86 " "
92 BIND_PAT@[86; 87) 92 BIND_PAT@86..87
93 NAME@[86; 87) 93 NAME@86..87
94 IDENT@[86; 87) "x" 94 IDENT@86..87 "x"
95 R_PAREN@[87; 88) ")" 95 R_PAREN@87..88 ")"
96 WHITESPACE@[88; 89) " " 96 WHITESPACE@88..89 " "
97 EQ@[89; 90) "=" 97 EQ@89..90 "="
98 WHITESPACE@[90; 91) " " 98 WHITESPACE@90..91 " "
99 TUPLE_EXPR@[91; 93) 99 TUPLE_EXPR@91..93
100 L_PAREN@[91; 92) "(" 100 L_PAREN@91..92 "("
101 R_PAREN@[92; 93) ")" 101 R_PAREN@92..93 ")"
102 SEMICOLON@[93; 94) ";" 102 SEMICOLON@93..94 ";"
103 WHITESPACE@[94; 95) "\n" 103 WHITESPACE@94..95 "\n"
104 R_CURLY@[95; 96) "}" 104 R_CURLY@95..96 "}"
105 WHITESPACE@[96; 97) "\n" 105 WHITESPACE@96..97 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rast
index ac6ab31f2..1927438bb 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rast
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 52) 1SOURCE_FILE@0..52
2 FN_DEF@[0; 51) 2 FN_DEF@0..51
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 51) 11 BLOCK_EXPR@10..51
12 BLOCK@[10; 51) 12 BLOCK@10..51
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 28) 15 LET_STMT@16..28
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 REF_PAT@[20; 22) 18 REF_PAT@20..22
19 AMP@[20; 21) "&" 19 AMP@20..21 "&"
20 BIND_PAT@[21; 22) 20 BIND_PAT@21..22
21 NAME@[21; 22) 21 NAME@21..22
22 IDENT@[21; 22) "a" 22 IDENT@21..22 "a"
23 WHITESPACE@[22; 23) " " 23 WHITESPACE@22..23 " "
24 EQ@[23; 24) "=" 24 EQ@23..24 "="
25 WHITESPACE@[24; 25) " " 25 WHITESPACE@24..25 " "
26 TUPLE_EXPR@[25; 27) 26 TUPLE_EXPR@25..27
27 L_PAREN@[25; 26) "(" 27 L_PAREN@25..26 "("
28 R_PAREN@[26; 27) ")" 28 R_PAREN@26..27 ")"
29 SEMICOLON@[27; 28) ";" 29 SEMICOLON@27..28 ";"
30 WHITESPACE@[28; 33) "\n " 30 WHITESPACE@28..33 "\n "
31 LET_STMT@[33; 49) 31 LET_STMT@33..49
32 LET_KW@[33; 36) "let" 32 LET_KW@33..36 "let"
33 WHITESPACE@[36; 37) " " 33 WHITESPACE@36..37 " "
34 REF_PAT@[37; 43) 34 REF_PAT@37..43
35 AMP@[37; 38) "&" 35 AMP@37..38 "&"
36 MUT_KW@[38; 41) "mut" 36 MUT_KW@38..41 "mut"
37 WHITESPACE@[41; 42) " " 37 WHITESPACE@41..42 " "
38 BIND_PAT@[42; 43) 38 BIND_PAT@42..43
39 NAME@[42; 43) 39 NAME@42..43
40 IDENT@[42; 43) "b" 40 IDENT@42..43 "b"
41 WHITESPACE@[43; 44) " " 41 WHITESPACE@43..44 " "
42 EQ@[44; 45) "=" 42 EQ@44..45 "="
43 WHITESPACE@[45; 46) " " 43 WHITESPACE@45..46 " "
44 TUPLE_EXPR@[46; 48) 44 TUPLE_EXPR@46..48
45 L_PAREN@[46; 47) "(" 45 L_PAREN@46..47 "("
46 R_PAREN@[47; 48) ")" 46 R_PAREN@47..48 ")"
47 SEMICOLON@[48; 49) ";" 47 SEMICOLON@48..49 ";"
48 WHITESPACE@[49; 50) "\n" 48 WHITESPACE@49..50 "\n"
49 R_CURLY@[50; 51) "}" 49 R_CURLY@50..51 "}"
50 WHITESPACE@[51; 52) "\n" 50 WHITESPACE@51..52 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast
index 3371cab82..93f5c738c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 43) 1SOURCE_FILE@0..43
2 TYPE_ALIAS_DEF@[0; 42) 2 TYPE_ALIAS_DEF@0..42
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 IMPL_TRAIT_TYPE@[9; 41) 10 IMPL_TRAIT_TYPE@9..41
11 IMPL_KW@[9; 13) "impl" 11 IMPL_KW@9..13 "impl"
12 WHITESPACE@[13; 14) " " 12 WHITESPACE@13..14 " "
13 TYPE_BOUND_LIST@[14; 41) 13 TYPE_BOUND_LIST@14..41
14 TYPE_BOUND@[14; 36) 14 TYPE_BOUND@14..36
15 PATH_TYPE@[14; 36) 15 PATH_TYPE@14..36
16 PATH@[14; 36) 16 PATH@14..36
17 PATH_SEGMENT@[14; 36) 17 PATH_SEGMENT@14..36
18 NAME_REF@[14; 22) 18 NAME_REF@14..22
19 IDENT@[14; 22) "Iterator" 19 IDENT@14..22 "Iterator"
20 TYPE_ARG_LIST@[22; 36) 20 TYPE_ARG_LIST@22..36
21 L_ANGLE@[22; 23) "<" 21 L_ANGLE@22..23 "<"
22 ASSOC_TYPE_ARG@[23; 35) 22 ASSOC_TYPE_ARG@23..35
23 NAME_REF@[23; 27) 23 NAME_REF@23..27
24 IDENT@[23; 27) "Item" 24 IDENT@23..27 "Item"
25 EQ@[27; 28) "=" 25 EQ@27..28 "="
26 PATH_TYPE@[28; 35) 26 PATH_TYPE@28..35
27 PATH@[28; 35) 27 PATH@28..35
28 PATH_SEGMENT@[28; 35) 28 PATH_SEGMENT@28..35
29 NAME_REF@[28; 31) 29 NAME_REF@28..31
30 IDENT@[28; 31) "Foo" 30 IDENT@28..31 "Foo"
31 TYPE_ARG_LIST@[31; 35) 31 TYPE_ARG_LIST@31..35
32 L_ANGLE@[31; 32) "<" 32 L_ANGLE@31..32 "<"
33 LIFETIME_ARG@[32; 34) 33 LIFETIME_ARG@32..34
34 LIFETIME@[32; 34) "\'a" 34 LIFETIME@32..34 "\'a"
35 R_ANGLE@[34; 35) ">" 35 R_ANGLE@34..35 ">"
36 R_ANGLE@[35; 36) ">" 36 R_ANGLE@35..36 ">"
37 WHITESPACE@[36; 37) " " 37 WHITESPACE@36..37 " "
38 PLUS@[37; 38) "+" 38 PLUS@37..38 "+"
39 WHITESPACE@[38; 39) " " 39 WHITESPACE@38..39 " "
40 TYPE_BOUND@[39; 41) 40 TYPE_BOUND@39..41
41 LIFETIME@[39; 41) "\'a" 41 LIFETIME@39..41 "\'a"
42 SEMICOLON@[41; 42) ";" 42 SEMICOLON@41..42 ";"
43 WHITESPACE@[42; 43) "\n" 43 WHITESPACE@42..43 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rast
index e9ca214bb..9effb345f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rast
@@ -1,90 +1,90 @@
1SOURCE_FILE@[0; 89) 1SOURCE_FILE@0..89
2 FN_DEF@[0; 88) 2 FN_DEF@0..88
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 88) 11 BLOCK_EXPR@9..88
12 BLOCK@[9; 88) 12 BLOCK@9..88
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 25) 15 EXPR_STMT@15..25
16 CAST_EXPR@[15; 24) 16 CAST_EXPR@15..24
17 LITERAL@[15; 17) 17 LITERAL@15..17
18 INT_NUMBER@[15; 17) "82" 18 INT_NUMBER@15..17 "82"
19 WHITESPACE@[17; 18) " " 19 WHITESPACE@17..18 " "
20 AS_KW@[18; 20) "as" 20 AS_KW@18..20 "as"
21 WHITESPACE@[20; 21) " " 21 WHITESPACE@20..21 " "
22 PATH_TYPE@[21; 24) 22 PATH_TYPE@21..24
23 PATH@[21; 24) 23 PATH@21..24
24 PATH_SEGMENT@[21; 24) 24 PATH_SEGMENT@21..24
25 NAME_REF@[21; 24) 25 NAME_REF@21..24
26 IDENT@[21; 24) "i32" 26 IDENT@21..24 "i32"
27 SEMICOLON@[24; 25) ";" 27 SEMICOLON@24..25 ";"
28 WHITESPACE@[25; 30) "\n " 28 WHITESPACE@25..30 "\n "
29 EXPR_STMT@[30; 43) 29 EXPR_STMT@30..43
30 BIN_EXPR@[30; 42) 30 BIN_EXPR@30..42
31 CAST_EXPR@[30; 38) 31 CAST_EXPR@30..38
32 LITERAL@[30; 32) 32 LITERAL@30..32
33 INT_NUMBER@[30; 32) "81" 33 INT_NUMBER@30..32 "81"
34 WHITESPACE@[32; 33) " " 34 WHITESPACE@32..33 " "
35 AS_KW@[33; 35) "as" 35 AS_KW@33..35 "as"
36 WHITESPACE@[35; 36) " " 36 WHITESPACE@35..36 " "
37 PATH_TYPE@[36; 38) 37 PATH_TYPE@36..38
38 PATH@[36; 38) 38 PATH@36..38
39 PATH_SEGMENT@[36; 38) 39 PATH_SEGMENT@36..38
40 NAME_REF@[36; 38) 40 NAME_REF@36..38
41 IDENT@[36; 38) "i8" 41 IDENT@36..38 "i8"
42 WHITESPACE@[38; 39) " " 42 WHITESPACE@38..39 " "
43 PLUS@[39; 40) "+" 43 PLUS@39..40 "+"
44 WHITESPACE@[40; 41) " " 44 WHITESPACE@40..41 " "
45 LITERAL@[41; 42) 45 LITERAL@41..42
46 INT_NUMBER@[41; 42) "1" 46 INT_NUMBER@41..42 "1"
47 SEMICOLON@[42; 43) ";" 47 SEMICOLON@42..43 ";"
48 WHITESPACE@[43; 48) "\n " 48 WHITESPACE@43..48 "\n "
49 EXPR_STMT@[48; 62) 49 EXPR_STMT@48..62
50 BIN_EXPR@[48; 61) 50 BIN_EXPR@48..61
51 CAST_EXPR@[48; 57) 51 CAST_EXPR@48..57
52 LITERAL@[48; 50) 52 LITERAL@48..50
53 INT_NUMBER@[48; 50) "79" 53 INT_NUMBER@48..50 "79"
54 WHITESPACE@[50; 51) " " 54 WHITESPACE@50..51 " "
55 AS_KW@[51; 53) "as" 55 AS_KW@51..53 "as"
56 WHITESPACE@[53; 54) " " 56 WHITESPACE@53..54 " "
57 PATH_TYPE@[54; 57) 57 PATH_TYPE@54..57
58 PATH@[54; 57) 58 PATH@54..57
59 PATH_SEGMENT@[54; 57) 59 PATH_SEGMENT@54..57
60 NAME_REF@[54; 57) 60 NAME_REF@54..57
61 IDENT@[54; 57) "i16" 61 IDENT@54..57 "i16"
62 WHITESPACE@[57; 58) " " 62 WHITESPACE@57..58 " "
63 MINUS@[58; 59) "-" 63 MINUS@58..59 "-"
64 WHITESPACE@[59; 60) " " 64 WHITESPACE@59..60 " "
65 LITERAL@[60; 61) 65 LITERAL@60..61
66 INT_NUMBER@[60; 61) "1" 66 INT_NUMBER@60..61 "1"
67 SEMICOLON@[61; 62) ";" 67 SEMICOLON@61..62 ";"
68 WHITESPACE@[62; 67) "\n " 68 WHITESPACE@62..67 "\n "
69 EXPR_STMT@[67; 86) 69 EXPR_STMT@67..86
70 BIN_EXPR@[67; 85) 70 BIN_EXPR@67..85
71 CAST_EXPR@[67; 77) 71 CAST_EXPR@67..77
72 LITERAL@[67; 71) 72 LITERAL@67..71
73 INT_NUMBER@[67; 71) "0x36" 73 INT_NUMBER@67..71 "0x36"
74 WHITESPACE@[71; 72) " " 74 WHITESPACE@71..72 " "
75 AS_KW@[72; 74) "as" 75 AS_KW@72..74 "as"
76 WHITESPACE@[74; 75) " " 76 WHITESPACE@74..75 " "
77 PATH_TYPE@[75; 77) 77 PATH_TYPE@75..77
78 PATH@[75; 77) 78 PATH@75..77
79 PATH_SEGMENT@[75; 77) 79 PATH_SEGMENT@75..77
80 NAME_REF@[75; 77) 80 NAME_REF@75..77
81 IDENT@[75; 77) "u8" 81 IDENT@75..77 "u8"
82 WHITESPACE@[77; 78) " " 82 WHITESPACE@77..78 " "
83 LTEQ@[78; 80) "<=" 83 LTEQ@78..80 "<="
84 WHITESPACE@[80; 81) " " 84 WHITESPACE@80..81 " "
85 LITERAL@[81; 85) 85 LITERAL@81..85
86 INT_NUMBER@[81; 85) "0x37" 86 INT_NUMBER@81..85 "0x37"
87 SEMICOLON@[85; 86) ";" 87 SEMICOLON@85..86 ";"
88 WHITESPACE@[86; 87) "\n" 88 WHITESPACE@86..87 "\n"
89 R_CURLY@[87; 88) "}" 89 R_CURLY@87..88 "}"
90 WHITESPACE@[88; 89) "\n" 90 WHITESPACE@88..89 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rast b/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rast
index 6fd49c7bc..b6759541e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rast
@@ -1,209 +1,209 @@
1SOURCE_FILE@[0; 197) 1SOURCE_FILE@0..197
2 FN_DEF@[0; 37) 2 FN_DEF@0..37
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 37) 11 BLOCK_EXPR@9..37
12 BLOCK@[9; 37) 12 BLOCK@9..37
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 IF_EXPR@[11; 35) 15 IF_EXPR@11..35
16 IF_KW@[11; 13) "if" 16 IF_KW@11..13 "if"
17 WHITESPACE@[13; 14) " " 17 WHITESPACE@13..14 " "
18 CONDITION@[14; 32) 18 CONDITION@14..32
19 LET_KW@[14; 17) "let" 19 LET_KW@14..17 "let"
20 WHITESPACE@[17; 18) " " 20 WHITESPACE@17..18 " "
21 TUPLE_STRUCT_PAT@[18; 25) 21 TUPLE_STRUCT_PAT@18..25
22 PATH@[18; 22) 22 PATH@18..22
23 PATH_SEGMENT@[18; 22) 23 PATH_SEGMENT@18..22
24 NAME_REF@[18; 22) 24 NAME_REF@18..22
25 IDENT@[18; 22) "Some" 25 IDENT@18..22 "Some"
26 L_PAREN@[22; 23) "(" 26 L_PAREN@22..23 "("
27 PLACEHOLDER_PAT@[23; 24) 27 PLACEHOLDER_PAT@23..24
28 UNDERSCORE@[23; 24) "_" 28 UNDERSCORE@23..24 "_"
29 R_PAREN@[24; 25) ")" 29 R_PAREN@24..25 ")"
30 WHITESPACE@[25; 26) " " 30 WHITESPACE@25..26 " "
31 EQ@[26; 27) "=" 31 EQ@26..27 "="
32 WHITESPACE@[27; 28) " " 32 WHITESPACE@27..28 " "
33 PATH_EXPR@[28; 32) 33 PATH_EXPR@28..32
34 PATH@[28; 32) 34 PATH@28..32
35 PATH_SEGMENT@[28; 32) 35 PATH_SEGMENT@28..32
36 NAME_REF@[28; 32) 36 NAME_REF@28..32
37 IDENT@[28; 32) "None" 37 IDENT@28..32 "None"
38 WHITESPACE@[32; 33) " " 38 WHITESPACE@32..33 " "
39 BLOCK_EXPR@[33; 35) 39 BLOCK_EXPR@33..35
40 BLOCK@[33; 35) 40 BLOCK@33..35
41 L_CURLY@[33; 34) "{" 41 L_CURLY@33..34 "{"
42 R_CURLY@[34; 35) "}" 42 R_CURLY@34..35 "}"
43 WHITESPACE@[35; 36) " " 43 WHITESPACE@35..36 " "
44 R_CURLY@[36; 37) "}" 44 R_CURLY@36..37 "}"
45 WHITESPACE@[37; 38) "\n" 45 WHITESPACE@37..38 "\n"
46 FN_DEF@[38; 196) 46 FN_DEF@38..196
47 FN_KW@[38; 40) "fn" 47 FN_KW@38..40 "fn"
48 WHITESPACE@[40; 41) " " 48 WHITESPACE@40..41 " "
49 NAME@[41; 44) 49 NAME@41..44
50 IDENT@[41; 44) "bar" 50 IDENT@41..44 "bar"
51 PARAM_LIST@[44; 46) 51 PARAM_LIST@44..46
52 L_PAREN@[44; 45) "(" 52 L_PAREN@44..45 "("
53 R_PAREN@[45; 46) ")" 53 R_PAREN@45..46 ")"
54 WHITESPACE@[46; 47) " " 54 WHITESPACE@46..47 " "
55 BLOCK_EXPR@[47; 196) 55 BLOCK_EXPR@47..196
56 BLOCK@[47; 196) 56 BLOCK@47..196
57 L_CURLY@[47; 48) "{" 57 L_CURLY@47..48 "{"
58 WHITESPACE@[48; 53) "\n " 58 WHITESPACE@48..53 "\n "
59 EXPR_STMT@[53; 87) 59 EXPR_STMT@53..87
60 IF_EXPR@[53; 87) 60 IF_EXPR@53..87
61 IF_KW@[53; 55) "if" 61 IF_KW@53..55 "if"
62 WHITESPACE@[55; 56) " " 62 WHITESPACE@55..56 " "
63 CONDITION@[56; 84) 63 CONDITION@56..84
64 LET_KW@[56; 59) "let" 64 LET_KW@56..59 "let"
65 WHITESPACE@[59; 60) " " 65 WHITESPACE@59..60 " "
66 OR_PAT@[60; 77) 66 OR_PAT@60..77
67 TUPLE_STRUCT_PAT@[60; 67) 67 TUPLE_STRUCT_PAT@60..67
68 PATH@[60; 64) 68 PATH@60..64
69 PATH_SEGMENT@[60; 64) 69 PATH_SEGMENT@60..64
70 NAME_REF@[60; 64) 70 NAME_REF@60..64
71 IDENT@[60; 64) "Some" 71 IDENT@60..64 "Some"
72 L_PAREN@[64; 65) "(" 72 L_PAREN@64..65 "("
73 PLACEHOLDER_PAT@[65; 66) 73 PLACEHOLDER_PAT@65..66
74 UNDERSCORE@[65; 66) "_" 74 UNDERSCORE@65..66 "_"
75 R_PAREN@[66; 67) ")" 75 R_PAREN@66..67 ")"
76 WHITESPACE@[67; 68) " " 76 WHITESPACE@67..68 " "
77 PIPE@[68; 69) "|" 77 PIPE@68..69 "|"
78 WHITESPACE@[69; 70) " " 78 WHITESPACE@69..70 " "
79 TUPLE_STRUCT_PAT@[70; 77) 79 TUPLE_STRUCT_PAT@70..77
80 PATH@[70; 74) 80 PATH@70..74
81 PATH_SEGMENT@[70; 74) 81 PATH_SEGMENT@70..74
82 NAME_REF@[70; 74) 82 NAME_REF@70..74
83 IDENT@[70; 74) "Some" 83 IDENT@70..74 "Some"
84 L_PAREN@[74; 75) "(" 84 L_PAREN@74..75 "("
85 PLACEHOLDER_PAT@[75; 76) 85 PLACEHOLDER_PAT@75..76
86 UNDERSCORE@[75; 76) "_" 86 UNDERSCORE@75..76 "_"
87 R_PAREN@[76; 77) ")" 87 R_PAREN@76..77 ")"
88 WHITESPACE@[77; 78) " " 88 WHITESPACE@77..78 " "
89 EQ@[78; 79) "=" 89 EQ@78..79 "="
90 WHITESPACE@[79; 80) " " 90 WHITESPACE@79..80 " "
91 PATH_EXPR@[80; 84) 91 PATH_EXPR@80..84
92 PATH@[80; 84) 92 PATH@80..84
93 PATH_SEGMENT@[80; 84) 93 PATH_SEGMENT@80..84
94 NAME_REF@[80; 84) 94 NAME_REF@80..84
95 IDENT@[80; 84) "None" 95 IDENT@80..84 "None"
96 WHITESPACE@[84; 85) " " 96 WHITESPACE@84..85 " "
97 BLOCK_EXPR@[85; 87) 97 BLOCK_EXPR@85..87
98 BLOCK@[85; 87) 98 BLOCK@85..87
99 L_CURLY@[85; 86) "{" 99 L_CURLY@85..86 "{"
100 R_CURLY@[86; 87) "}" 100 R_CURLY@86..87 "}"
101 WHITESPACE@[87; 92) "\n " 101 WHITESPACE@87..92 "\n "
102 EXPR_STMT@[92; 118) 102 EXPR_STMT@92..118
103 IF_EXPR@[92; 118) 103 IF_EXPR@92..118
104 IF_KW@[92; 94) "if" 104 IF_KW@92..94 "if"
105 WHITESPACE@[94; 95) " " 105 WHITESPACE@94..95 " "
106 CONDITION@[95; 115) 106 CONDITION@95..115
107 LET_KW@[95; 98) "let" 107 LET_KW@95..98 "let"
108 WHITESPACE@[98; 99) " " 108 WHITESPACE@98..99 " "
109 PIPE@[99; 100) "|" 109 PIPE@99..100 "|"
110 WHITESPACE@[100; 101) " " 110 WHITESPACE@100..101 " "
111 TUPLE_STRUCT_PAT@[101; 108) 111 TUPLE_STRUCT_PAT@101..108
112 PATH@[101; 105) 112 PATH@101..105
113 PATH_SEGMENT@[101; 105) 113 PATH_SEGMENT@101..105
114 NAME_REF@[101; 105) 114 NAME_REF@101..105
115 IDENT@[101; 105) "Some" 115 IDENT@101..105 "Some"
116 L_PAREN@[105; 106) "(" 116 L_PAREN@105..106 "("
117 PLACEHOLDER_PAT@[106; 107) 117 PLACEHOLDER_PAT@106..107
118 UNDERSCORE@[106; 107) "_" 118 UNDERSCORE@106..107 "_"
119 R_PAREN@[107; 108) ")" 119 R_PAREN@107..108 ")"
120 WHITESPACE@[108; 109) " " 120 WHITESPACE@108..109 " "
121 EQ@[109; 110) "=" 121 EQ@109..110 "="
122 WHITESPACE@[110; 111) " " 122 WHITESPACE@110..111 " "
123 PATH_EXPR@[111; 115) 123 PATH_EXPR@111..115
124 PATH@[111; 115) 124 PATH@111..115
125 PATH_SEGMENT@[111; 115) 125 PATH_SEGMENT@111..115
126 NAME_REF@[111; 115) 126 NAME_REF@111..115
127 IDENT@[111; 115) "None" 127 IDENT@111..115 "None"
128 WHITESPACE@[115; 116) " " 128 WHITESPACE@115..116 " "
129 BLOCK_EXPR@[116; 118) 129 BLOCK_EXPR@116..118
130 BLOCK@[116; 118) 130 BLOCK@116..118
131 L_CURLY@[116; 117) "{" 131 L_CURLY@116..117 "{"
132 R_CURLY@[117; 118) "}" 132 R_CURLY@117..118 "}"
133 WHITESPACE@[118; 123) "\n " 133 WHITESPACE@118..123 "\n "
134 EXPR_STMT@[123; 160) 134 EXPR_STMT@123..160
135 WHILE_EXPR@[123; 160) 135 WHILE_EXPR@123..160
136 WHILE_KW@[123; 128) "while" 136 WHILE_KW@123..128 "while"
137 WHITESPACE@[128; 129) " " 137 WHITESPACE@128..129 " "
138 CONDITION@[129; 157) 138 CONDITION@129..157
139 LET_KW@[129; 132) "let" 139 LET_KW@129..132 "let"
140 WHITESPACE@[132; 133) " " 140 WHITESPACE@132..133 " "
141 OR_PAT@[133; 150) 141 OR_PAT@133..150
142 TUPLE_STRUCT_PAT@[133; 140) 142 TUPLE_STRUCT_PAT@133..140
143 PATH@[133; 137) 143 PATH@133..137
144 PATH_SEGMENT@[133; 137) 144 PATH_SEGMENT@133..137
145 NAME_REF@[133; 137) 145 NAME_REF@133..137
146 IDENT@[133; 137) "Some" 146 IDENT@133..137 "Some"
147 L_PAREN@[137; 138) "(" 147 L_PAREN@137..138 "("
148 PLACEHOLDER_PAT@[138; 139) 148 PLACEHOLDER_PAT@138..139
149 UNDERSCORE@[138; 139) "_" 149 UNDERSCORE@138..139 "_"
150 R_PAREN@[139; 140) ")" 150 R_PAREN@139..140 ")"
151 WHITESPACE@[140; 141) " " 151 WHITESPACE@140..141 " "
152 PIPE@[141; 142) "|" 152 PIPE@141..142 "|"
153 WHITESPACE@[142; 143) " " 153 WHITESPACE@142..143 " "
154 TUPLE_STRUCT_PAT@[143; 150) 154 TUPLE_STRUCT_PAT@143..150
155 PATH@[143; 147) 155 PATH@143..147
156 PATH_SEGMENT@[143; 147) 156 PATH_SEGMENT@143..147
157 NAME_REF@[143; 147) 157 NAME_REF@143..147
158 IDENT@[143; 147) "Some" 158 IDENT@143..147 "Some"
159 L_PAREN@[147; 148) "(" 159 L_PAREN@147..148 "("
160 PLACEHOLDER_PAT@[148; 149) 160 PLACEHOLDER_PAT@148..149
161 UNDERSCORE@[148; 149) "_" 161 UNDERSCORE@148..149 "_"
162 R_PAREN@[149; 150) ")" 162 R_PAREN@149..150 ")"
163 WHITESPACE@[150; 151) " " 163 WHITESPACE@150..151 " "
164 EQ@[151; 152) "=" 164 EQ@151..152 "="
165 WHITESPACE@[152; 153) " " 165 WHITESPACE@152..153 " "
166 PATH_EXPR@[153; 157) 166 PATH_EXPR@153..157
167 PATH@[153; 157) 167 PATH@153..157
168 PATH_SEGMENT@[153; 157) 168 PATH_SEGMENT@153..157
169 NAME_REF@[153; 157) 169 NAME_REF@153..157
170 IDENT@[153; 157) "None" 170 IDENT@153..157 "None"
171 WHITESPACE@[157; 158) " " 171 WHITESPACE@157..158 " "
172 BLOCK_EXPR@[158; 160) 172 BLOCK_EXPR@158..160
173 BLOCK@[158; 160) 173 BLOCK@158..160
174 L_CURLY@[158; 159) "{" 174 L_CURLY@158..159 "{"
175 R_CURLY@[159; 160) "}" 175 R_CURLY@159..160 "}"
176 WHITESPACE@[160; 165) "\n " 176 WHITESPACE@160..165 "\n "
177 WHILE_EXPR@[165; 194) 177 WHILE_EXPR@165..194
178 WHILE_KW@[165; 170) "while" 178 WHILE_KW@165..170 "while"
179 WHITESPACE@[170; 171) " " 179 WHITESPACE@170..171 " "
180 CONDITION@[171; 191) 180 CONDITION@171..191
181 LET_KW@[171; 174) "let" 181 LET_KW@171..174 "let"
182 WHITESPACE@[174; 175) " " 182 WHITESPACE@174..175 " "
183 PIPE@[175; 176) "|" 183 PIPE@175..176 "|"
184 WHITESPACE@[176; 177) " " 184 WHITESPACE@176..177 " "
185 TUPLE_STRUCT_PAT@[177; 184) 185 TUPLE_STRUCT_PAT@177..184
186 PATH@[177; 181) 186 PATH@177..181
187 PATH_SEGMENT@[177; 181) 187 PATH_SEGMENT@177..181
188 NAME_REF@[177; 181) 188 NAME_REF@177..181
189 IDENT@[177; 181) "Some" 189 IDENT@177..181 "Some"
190 L_PAREN@[181; 182) "(" 190 L_PAREN@181..182 "("
191 PLACEHOLDER_PAT@[182; 183) 191 PLACEHOLDER_PAT@182..183
192 UNDERSCORE@[182; 183) "_" 192 UNDERSCORE@182..183 "_"
193 R_PAREN@[183; 184) ")" 193 R_PAREN@183..184 ")"
194 WHITESPACE@[184; 185) " " 194 WHITESPACE@184..185 " "
195 EQ@[185; 186) "=" 195 EQ@185..186 "="
196 WHITESPACE@[186; 187) " " 196 WHITESPACE@186..187 " "
197 PATH_EXPR@[187; 191) 197 PATH_EXPR@187..191
198 PATH@[187; 191) 198 PATH@187..191
199 PATH_SEGMENT@[187; 191) 199 PATH_SEGMENT@187..191
200 NAME_REF@[187; 191) 200 NAME_REF@187..191
201 IDENT@[187; 191) "None" 201 IDENT@187..191 "None"
202 WHITESPACE@[191; 192) " " 202 WHITESPACE@191..192 " "
203 BLOCK_EXPR@[192; 194) 203 BLOCK_EXPR@192..194
204 BLOCK@[192; 194) 204 BLOCK@192..194
205 L_CURLY@[192; 193) "{" 205 L_CURLY@192..193 "{"
206 R_CURLY@[193; 194) "}" 206 R_CURLY@193..194 "}"
207 WHITESPACE@[194; 195) "\n" 207 WHITESPACE@194..195 "\n"
208 R_CURLY@[195; 196) "}" 208 R_CURLY@195..196 "}"
209 WHITESPACE@[196; 197) "\n" 209 WHITESPACE@196..197 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rast
index aaef408cc..e5138a599 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rast
@@ -1,89 +1,89 @@
1SOURCE_FILE@[0; 93) 1SOURCE_FILE@0..93
2 FN_DEF@[0; 92) 2 FN_DEF@0..92
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 92) 11 BLOCK_EXPR@9..92
12 BLOCK@[9; 92) 12 BLOCK@9..92
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 29) 15 EXPR_STMT@15..29
16 WHILE_EXPR@[15; 28) 16 WHILE_EXPR@15..28
17 WHILE_KW@[15; 20) "while" 17 WHILE_KW@15..20 "while"
18 WHITESPACE@[20; 21) " " 18 WHITESPACE@20..21 " "
19 CONDITION@[21; 25) 19 CONDITION@21..25
20 LITERAL@[21; 25) 20 LITERAL@21..25
21 TRUE_KW@[21; 25) "true" 21 TRUE_KW@21..25 "true"
22 WHITESPACE@[25; 26) " " 22 WHITESPACE@25..26 " "
23 BLOCK_EXPR@[26; 28) 23 BLOCK_EXPR@26..28
24 BLOCK@[26; 28) 24 BLOCK@26..28
25 L_CURLY@[26; 27) "{" 25 L_CURLY@26..27 "{"
26 R_CURLY@[27; 28) "}" 26 R_CURLY@27..28 "}"
27 SEMICOLON@[28; 29) ";" 27 SEMICOLON@28..29 ";"
28 WHITESPACE@[29; 34) "\n " 28 WHITESPACE@29..34 "\n "
29 EXPR_STMT@[34; 67) 29 EXPR_STMT@34..67
30 WHILE_EXPR@[34; 66) 30 WHILE_EXPR@34..66
31 WHILE_KW@[34; 39) "while" 31 WHILE_KW@34..39 "while"
32 WHITESPACE@[39; 40) " " 32 WHITESPACE@39..40 " "
33 CONDITION@[40; 63) 33 CONDITION@40..63
34 LET_KW@[40; 43) "let" 34 LET_KW@40..43 "let"
35 WHITESPACE@[43; 44) " " 35 WHITESPACE@43..44 " "
36 TUPLE_STRUCT_PAT@[44; 51) 36 TUPLE_STRUCT_PAT@44..51
37 PATH@[44; 48) 37 PATH@44..48
38 PATH_SEGMENT@[44; 48) 38 PATH_SEGMENT@44..48
39 NAME_REF@[44; 48) 39 NAME_REF@44..48
40 IDENT@[44; 48) "Some" 40 IDENT@44..48 "Some"
41 L_PAREN@[48; 49) "(" 41 L_PAREN@48..49 "("
42 BIND_PAT@[49; 50) 42 BIND_PAT@49..50
43 NAME@[49; 50) 43 NAME@49..50
44 IDENT@[49; 50) "x" 44 IDENT@49..50 "x"
45 R_PAREN@[50; 51) ")" 45 R_PAREN@50..51 ")"
46 WHITESPACE@[51; 52) " " 46 WHITESPACE@51..52 " "
47 EQ@[52; 53) "=" 47 EQ@52..53 "="
48 WHITESPACE@[53; 54) " " 48 WHITESPACE@53..54 " "
49 METHOD_CALL_EXPR@[54; 63) 49 METHOD_CALL_EXPR@54..63
50 PATH_EXPR@[54; 56) 50 PATH_EXPR@54..56
51 PATH@[54; 56) 51 PATH@54..56
52 PATH_SEGMENT@[54; 56) 52 PATH_SEGMENT@54..56
53 NAME_REF@[54; 56) 53 NAME_REF@54..56
54 IDENT@[54; 56) "it" 54 IDENT@54..56 "it"
55 DOT@[56; 57) "." 55 DOT@56..57 "."
56 NAME_REF@[57; 61) 56 NAME_REF@57..61
57 IDENT@[57; 61) "next" 57 IDENT@57..61 "next"
58 ARG_LIST@[61; 63) 58 ARG_LIST@61..63
59 L_PAREN@[61; 62) "(" 59 L_PAREN@61..62 "("
60 R_PAREN@[62; 63) ")" 60 R_PAREN@62..63 ")"
61 WHITESPACE@[63; 64) " " 61 WHITESPACE@63..64 " "
62 BLOCK_EXPR@[64; 66) 62 BLOCK_EXPR@64..66
63 BLOCK@[64; 66) 63 BLOCK@64..66
64 L_CURLY@[64; 65) "{" 64 L_CURLY@64..65 "{"
65 R_CURLY@[65; 66) "}" 65 R_CURLY@65..66 "}"
66 SEMICOLON@[66; 67) ";" 66 SEMICOLON@66..67 ";"
67 WHITESPACE@[67; 72) "\n " 67 WHITESPACE@67..72 "\n "
68 EXPR_STMT@[72; 90) 68 EXPR_STMT@72..90
69 WHILE_EXPR@[72; 89) 69 WHILE_EXPR@72..89
70 WHILE_KW@[72; 77) "while" 70 WHILE_KW@72..77 "while"
71 WHITESPACE@[77; 78) " " 71 WHITESPACE@77..78 " "
72 CONDITION@[78; 86) 72 CONDITION@78..86
73 BLOCK_EXPR@[78; 86) 73 BLOCK_EXPR@78..86
74 BLOCK@[78; 86) 74 BLOCK@78..86
75 L_CURLY@[78; 79) "{" 75 L_CURLY@78..79 "{"
76 WHITESPACE@[79; 80) " " 76 WHITESPACE@79..80 " "
77 LITERAL@[80; 84) 77 LITERAL@80..84
78 TRUE_KW@[80; 84) "true" 78 TRUE_KW@80..84 "true"
79 WHITESPACE@[84; 85) " " 79 WHITESPACE@84..85 " "
80 R_CURLY@[85; 86) "}" 80 R_CURLY@85..86 "}"
81 WHITESPACE@[86; 87) " " 81 WHITESPACE@86..87 " "
82 BLOCK_EXPR@[87; 89) 82 BLOCK_EXPR@87..89
83 BLOCK@[87; 89) 83 BLOCK@87..89
84 L_CURLY@[87; 88) "{" 84 L_CURLY@87..88 "{"
85 R_CURLY@[88; 89) "}" 85 R_CURLY@88..89 "}"
86 SEMICOLON@[89; 90) ";" 86 SEMICOLON@89..90 ";"
87 WHITESPACE@[90; 91) "\n" 87 WHITESPACE@90..91 "\n"
88 R_CURLY@[91; 92) "}" 88 R_CURLY@91..92 "}"
89 WHITESPACE@[92; 93) "\n" 89 WHITESPACE@92..93 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast
index bad769850..72705e148 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast
@@ -1,98 +1,98 @@
1SOURCE_FILE@[0; 113) 1SOURCE_FILE@0..113
2 TYPE_ALIAS_DEF@[0; 14) 2 TYPE_ALIAS_DEF@0..14
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 FN_POINTER_TYPE@[9; 13) 10 FN_POINTER_TYPE@9..13
11 FN_KW@[9; 11) "fn" 11 FN_KW@9..11 "fn"
12 PARAM_LIST@[11; 13) 12 PARAM_LIST@11..13
13 L_PAREN@[11; 12) "(" 13 L_PAREN@11..12 "("
14 R_PAREN@[12; 13) ")" 14 R_PAREN@12..13 ")"
15 SEMICOLON@[13; 14) ";" 15 SEMICOLON@13..14 ";"
16 WHITESPACE@[14; 15) "\n" 16 WHITESPACE@14..15 "\n"
17 TYPE_ALIAS_DEF@[15; 36) 17 TYPE_ALIAS_DEF@15..36
18 TYPE_KW@[15; 19) "type" 18 TYPE_KW@15..19 "type"
19 WHITESPACE@[19; 20) " " 19 WHITESPACE@19..20 " "
20 NAME@[20; 21) 20 NAME@20..21
21 IDENT@[20; 21) "B" 21 IDENT@20..21 "B"
22 WHITESPACE@[21; 22) " " 22 WHITESPACE@21..22 " "
23 EQ@[22; 23) "=" 23 EQ@22..23 "="
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 FN_POINTER_TYPE@[24; 35) 25 FN_POINTER_TYPE@24..35
26 UNSAFE_KW@[24; 30) "unsafe" 26 UNSAFE_KW@24..30 "unsafe"
27 WHITESPACE@[30; 31) " " 27 WHITESPACE@30..31 " "
28 FN_KW@[31; 33) "fn" 28 FN_KW@31..33 "fn"
29 PARAM_LIST@[33; 35) 29 PARAM_LIST@33..35
30 L_PAREN@[33; 34) "(" 30 L_PAREN@33..34 "("
31 R_PAREN@[34; 35) ")" 31 R_PAREN@34..35 ")"
32 SEMICOLON@[35; 36) ";" 32 SEMICOLON@35..36 ";"
33 WHITESPACE@[36; 37) "\n" 33 WHITESPACE@36..37 "\n"
34 TYPE_ALIAS_DEF@[37; 69) 34 TYPE_ALIAS_DEF@37..69
35 TYPE_KW@[37; 41) "type" 35 TYPE_KW@37..41 "type"
36 WHITESPACE@[41; 42) " " 36 WHITESPACE@41..42 " "
37 NAME@[42; 43) 37 NAME@42..43
38 IDENT@[42; 43) "C" 38 IDENT@42..43 "C"
39 WHITESPACE@[43; 44) " " 39 WHITESPACE@43..44 " "
40 EQ@[44; 45) "=" 40 EQ@44..45 "="
41 WHITESPACE@[45; 46) " " 41 WHITESPACE@45..46 " "
42 FN_POINTER_TYPE@[46; 68) 42 FN_POINTER_TYPE@46..68
43 UNSAFE_KW@[46; 52) "unsafe" 43 UNSAFE_KW@46..52 "unsafe"
44 WHITESPACE@[52; 53) " " 44 WHITESPACE@52..53 " "
45 ABI@[53; 63) 45 ABI@53..63
46 EXTERN_KW@[53; 59) "extern" 46 EXTERN_KW@53..59 "extern"
47 WHITESPACE@[59; 60) " " 47 WHITESPACE@59..60 " "
48 STRING@[60; 63) "\"C\"" 48 STRING@60..63 "\"C\""
49 WHITESPACE@[63; 64) " " 49 WHITESPACE@63..64 " "
50 FN_KW@[64; 66) "fn" 50 FN_KW@64..66 "fn"
51 PARAM_LIST@[66; 68) 51 PARAM_LIST@66..68
52 L_PAREN@[66; 67) "(" 52 L_PAREN@66..67 "("
53 R_PAREN@[67; 68) ")" 53 R_PAREN@67..68 ")"
54 SEMICOLON@[68; 69) ";" 54 SEMICOLON@68..69 ";"
55 WHITESPACE@[69; 70) "\n" 55 WHITESPACE@69..70 "\n"
56 TYPE_ALIAS_DEF@[70; 112) 56 TYPE_ALIAS_DEF@70..112
57 TYPE_KW@[70; 74) "type" 57 TYPE_KW@70..74 "type"
58 WHITESPACE@[74; 75) " " 58 WHITESPACE@74..75 " "
59 NAME@[75; 76) 59 NAME@75..76
60 IDENT@[75; 76) "D" 60 IDENT@75..76 "D"
61 WHITESPACE@[76; 77) " " 61 WHITESPACE@76..77 " "
62 EQ@[77; 78) "=" 62 EQ@77..78 "="
63 WHITESPACE@[78; 79) " " 63 WHITESPACE@78..79 " "
64 FN_POINTER_TYPE@[79; 111) 64 FN_POINTER_TYPE@79..111
65 ABI@[79; 89) 65 ABI@79..89
66 EXTERN_KW@[79; 85) "extern" 66 EXTERN_KW@79..85 "extern"
67 WHITESPACE@[85; 86) " " 67 WHITESPACE@85..86 " "
68 STRING@[86; 89) "\"C\"" 68 STRING@86..89 "\"C\""
69 WHITESPACE@[89; 90) " " 69 WHITESPACE@89..90 " "
70 FN_KW@[90; 92) "fn" 70 FN_KW@90..92 "fn"
71 WHITESPACE@[92; 93) " " 71 WHITESPACE@92..93 " "
72 PARAM_LIST@[93; 105) 72 PARAM_LIST@93..105
73 L_PAREN@[93; 94) "(" 73 L_PAREN@93..94 "("
74 WHITESPACE@[94; 95) " " 74 WHITESPACE@94..95 " "
75 PARAM@[95; 97) 75 PARAM@95..97
76 PATH_TYPE@[95; 97) 76 PATH_TYPE@95..97
77 PATH@[95; 97) 77 PATH@95..97
78 PATH_SEGMENT@[95; 97) 78 PATH_SEGMENT@95..97
79 NAME_REF@[95; 97) 79 NAME_REF@95..97
80 IDENT@[95; 97) "u8" 80 IDENT@95..97 "u8"
81 WHITESPACE@[97; 98) " " 81 WHITESPACE@97..98 " "
82 COMMA@[98; 99) "," 82 COMMA@98..99 ","
83 WHITESPACE@[99; 100) " " 83 WHITESPACE@99..100 " "
84 PARAM@[100; 103) 84 PARAM@100..103
85 DOT3@[100; 103) "..." 85 DOT3@100..103 "..."
86 WHITESPACE@[103; 104) " " 86 WHITESPACE@103..104 " "
87 R_PAREN@[104; 105) ")" 87 R_PAREN@104..105 ")"
88 WHITESPACE@[105; 106) " " 88 WHITESPACE@105..106 " "
89 RET_TYPE@[106; 111) 89 RET_TYPE@106..111
90 THIN_ARROW@[106; 108) "->" 90 THIN_ARROW@106..108 "->"
91 WHITESPACE@[108; 109) " " 91 WHITESPACE@108..109 " "
92 PATH_TYPE@[109; 111) 92 PATH_TYPE@109..111
93 PATH@[109; 111) 93 PATH@109..111
94 PATH_SEGMENT@[109; 111) 94 PATH_SEGMENT@109..111
95 NAME_REF@[109; 111) 95 NAME_REF@109..111
96 IDENT@[109; 111) "u8" 96 IDENT@109..111 "u8"
97 SEMICOLON@[111; 112) ";" 97 SEMICOLON@111..112 ";"
98 WHITESPACE@[112; 113) "\n" 98 WHITESPACE@112..113 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rast b/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rast
index e6ee20b9a..784fbb592 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rast
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 54) 1SOURCE_FILE@0..54
2 TYPE_ALIAS_DEF@[0; 13) 2 TYPE_ALIAS_DEF@0..13
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 REFERENCE_TYPE@[9; 12) 10 REFERENCE_TYPE@9..12
11 AMP@[9; 10) "&" 11 AMP@9..10 "&"
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@10..12
13 L_PAREN@[10; 11) "(" 13 L_PAREN@10..11 "("
14 R_PAREN@[11; 12) ")" 14 R_PAREN@11..12 ")"
15 SEMICOLON@[12; 13) ";" 15 SEMICOLON@12..13 ";"
16 WHITESPACE@[13; 14) "\n" 16 WHITESPACE@13..14 "\n"
17 TYPE_ALIAS_DEF@[14; 35) 17 TYPE_ALIAS_DEF@14..35
18 TYPE_KW@[14; 18) "type" 18 TYPE_KW@14..18 "type"
19 WHITESPACE@[18; 19) " " 19 WHITESPACE@18..19 " "
20 NAME@[19; 20) 20 NAME@19..20
21 IDENT@[19; 20) "B" 21 IDENT@19..20 "B"
22 WHITESPACE@[20; 21) " " 22 WHITESPACE@20..21 " "
23 EQ@[21; 22) "=" 23 EQ@21..22 "="
24 WHITESPACE@[22; 23) " " 24 WHITESPACE@22..23 " "
25 REFERENCE_TYPE@[23; 34) 25 REFERENCE_TYPE@23..34
26 AMP@[23; 24) "&" 26 AMP@23..24 "&"
27 LIFETIME@[24; 31) "\'static" 27 LIFETIME@24..31 "\'static"
28 WHITESPACE@[31; 32) " " 28 WHITESPACE@31..32 " "
29 TUPLE_TYPE@[32; 34) 29 TUPLE_TYPE@32..34
30 L_PAREN@[32; 33) "(" 30 L_PAREN@32..33 "("
31 R_PAREN@[33; 34) ")" 31 R_PAREN@33..34 ")"
32 SEMICOLON@[34; 35) ";" 32 SEMICOLON@34..35 ";"
33 WHITESPACE@[35; 36) "\n" 33 WHITESPACE@35..36 "\n"
34 TYPE_ALIAS_DEF@[36; 53) 34 TYPE_ALIAS_DEF@36..53
35 TYPE_KW@[36; 40) "type" 35 TYPE_KW@36..40 "type"
36 WHITESPACE@[40; 41) " " 36 WHITESPACE@40..41 " "
37 NAME@[41; 42) 37 NAME@41..42
38 IDENT@[41; 42) "C" 38 IDENT@41..42 "C"
39 WHITESPACE@[42; 43) " " 39 WHITESPACE@42..43 " "
40 EQ@[43; 44) "=" 40 EQ@43..44 "="
41 WHITESPACE@[44; 45) " " 41 WHITESPACE@44..45 " "
42 REFERENCE_TYPE@[45; 52) 42 REFERENCE_TYPE@45..52
43 AMP@[45; 46) "&" 43 AMP@45..46 "&"
44 MUT_KW@[46; 49) "mut" 44 MUT_KW@46..49 "mut"
45 WHITESPACE@[49; 50) " " 45 WHITESPACE@49..50 " "
46 TUPLE_TYPE@[50; 52) 46 TUPLE_TYPE@50..52
47 L_PAREN@[50; 51) "(" 47 L_PAREN@50..51 "("
48 R_PAREN@[51; 52) ")" 48 R_PAREN@51..52 ")"
49 SEMICOLON@[52; 53) ";" 49 SEMICOLON@52..53 ";"
50 WHITESPACE@[53; 54) "\n" 50 WHITESPACE@53..54 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rast
index 4bb95314f..52644da8f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rast
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 102) 1SOURCE_FILE@0..102
2 FN_DEF@[0; 101) 2 FN_DEF@0..101
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 101) 11 BLOCK_EXPR@9..101
12 BLOCK@[9; 101) 12 BLOCK@9..101
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LOOP_EXPR@[15; 99) 15 LOOP_EXPR@15..99
16 LOOP_KW@[15; 19) "loop" 16 LOOP_KW@15..19 "loop"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 BLOCK_EXPR@[20; 99) 18 BLOCK_EXPR@20..99
19 BLOCK@[20; 99) 19 BLOCK@20..99
20 L_CURLY@[20; 21) "{" 20 L_CURLY@20..21 "{"
21 WHITESPACE@[21; 30) "\n " 21 WHITESPACE@21..30 "\n "
22 EXPR_STMT@[30; 36) 22 EXPR_STMT@30..36
23 BREAK_EXPR@[30; 35) 23 BREAK_EXPR@30..35
24 BREAK_KW@[30; 35) "break" 24 BREAK_KW@30..35 "break"
25 SEMICOLON@[35; 36) ";" 25 SEMICOLON@35..36 ";"
26 WHITESPACE@[36; 45) "\n " 26 WHITESPACE@36..45 "\n "
27 EXPR_STMT@[45; 54) 27 EXPR_STMT@45..54
28 BREAK_EXPR@[45; 53) 28 BREAK_EXPR@45..53
29 BREAK_KW@[45; 50) "break" 29 BREAK_KW@45..50 "break"
30 WHITESPACE@[50; 51) " " 30 WHITESPACE@50..51 " "
31 LIFETIME@[51; 53) "\'l" 31 LIFETIME@51..53 "\'l"
32 SEMICOLON@[53; 54) ";" 32 SEMICOLON@53..54 ";"
33 WHITESPACE@[54; 63) "\n " 33 WHITESPACE@54..63 "\n "
34 EXPR_STMT@[63; 72) 34 EXPR_STMT@63..72
35 BREAK_EXPR@[63; 71) 35 BREAK_EXPR@63..71
36 BREAK_KW@[63; 68) "break" 36 BREAK_KW@63..68 "break"
37 WHITESPACE@[68; 69) " " 37 WHITESPACE@68..69 " "
38 LITERAL@[69; 71) 38 LITERAL@69..71
39 INT_NUMBER@[69; 71) "92" 39 INT_NUMBER@69..71 "92"
40 SEMICOLON@[71; 72) ";" 40 SEMICOLON@71..72 ";"
41 WHITESPACE@[72; 81) "\n " 41 WHITESPACE@72..81 "\n "
42 EXPR_STMT@[81; 93) 42 EXPR_STMT@81..93
43 BREAK_EXPR@[81; 92) 43 BREAK_EXPR@81..92
44 BREAK_KW@[81; 86) "break" 44 BREAK_KW@81..86 "break"
45 WHITESPACE@[86; 87) " " 45 WHITESPACE@86..87 " "
46 LIFETIME@[87; 89) "\'l" 46 LIFETIME@87..89 "\'l"
47 WHITESPACE@[89; 90) " " 47 WHITESPACE@89..90 " "
48 LITERAL@[90; 92) 48 LITERAL@90..92
49 INT_NUMBER@[90; 92) "92" 49 INT_NUMBER@90..92 "92"
50 SEMICOLON@[92; 93) ";" 50 SEMICOLON@92..93 ";"
51 WHITESPACE@[93; 98) "\n " 51 WHITESPACE@93..98 "\n "
52 R_CURLY@[98; 99) "}" 52 R_CURLY@98..99 "}"
53 WHITESPACE@[99; 100) "\n" 53 WHITESPACE@99..100 "\n"
54 R_CURLY@[100; 101) "}" 54 R_CURLY@100..101 "}"
55 WHITESPACE@[101; 102) "\n" 55 WHITESPACE@101..102 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rast b/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rast
index a7dfe167c..f061c0cac 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rast
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@0..30
2 FN_DEF@[0; 29) 2 FN_DEF@0..29
3 UNSAFE_KW@[0; 6) "unsafe" 3 UNSAFE_KW@0..6 "unsafe"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 ABI@[7; 17) 5 ABI@7..17
6 EXTERN_KW@[7; 13) "extern" 6 EXTERN_KW@7..13 "extern"
7 WHITESPACE@[13; 14) " " 7 WHITESPACE@13..14 " "
8 STRING@[14; 17) "\"C\"" 8 STRING@14..17 "\"C\""
9 WHITESPACE@[17; 18) " " 9 WHITESPACE@17..18 " "
10 FN_KW@[18; 20) "fn" 10 FN_KW@18..20 "fn"
11 WHITESPACE@[20; 21) " " 11 WHITESPACE@20..21 " "
12 NAME@[21; 24) 12 NAME@21..24
13 IDENT@[21; 24) "foo" 13 IDENT@21..24 "foo"
14 PARAM_LIST@[24; 26) 14 PARAM_LIST@24..26
15 L_PAREN@[24; 25) "(" 15 L_PAREN@24..25 "("
16 R_PAREN@[25; 26) ")" 16 R_PAREN@25..26 ")"
17 WHITESPACE@[26; 27) " " 17 WHITESPACE@26..27 " "
18 BLOCK_EXPR@[27; 29) 18 BLOCK_EXPR@27..29
19 BLOCK@[27; 29) 19 BLOCK@27..29
20 L_CURLY@[27; 28) "{" 20 L_CURLY@27..28 "{"
21 R_CURLY@[28; 29) "}" 21 R_CURLY@28..29 "}"
22 WHITESPACE@[29; 30) "\n" 22 WHITESPACE@29..30 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rast b/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rast
index 1cd7a443f..e25fc8c3e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rast
@@ -1,79 +1,79 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@0..71
2 TYPE_ALIAS_DEF@[0; 26) 2 TYPE_ALIAS_DEF@0..26
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "X" 6 IDENT@5..6 "X"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 PATH_TYPE@[9; 25) 10 PATH_TYPE@9..25
11 PATH@[9; 25) 11 PATH@9..25
12 PATH@[9; 17) 12 PATH@9..17
13 PATH_SEGMENT@[9; 17) 13 PATH_SEGMENT@9..17
14 L_ANGLE@[9; 10) "<" 14 L_ANGLE@9..10 "<"
15 PATH_TYPE@[10; 11) 15 PATH_TYPE@10..11
16 PATH@[10; 11) 16 PATH@10..11
17 PATH_SEGMENT@[10; 11) 17 PATH_SEGMENT@10..11
18 NAME_REF@[10; 11) 18 NAME_REF@10..11
19 IDENT@[10; 11) "A" 19 IDENT@10..11 "A"
20 WHITESPACE@[11; 12) " " 20 WHITESPACE@11..12 " "
21 AS_KW@[12; 14) "as" 21 AS_KW@12..14 "as"
22 WHITESPACE@[14; 15) " " 22 WHITESPACE@14..15 " "
23 PATH_TYPE@[15; 16) 23 PATH_TYPE@15..16
24 PATH@[15; 16) 24 PATH@15..16
25 PATH_SEGMENT@[15; 16) 25 PATH_SEGMENT@15..16
26 NAME_REF@[15; 16) 26 NAME_REF@15..16
27 IDENT@[15; 16) "B" 27 IDENT@15..16 "B"
28 R_ANGLE@[16; 17) ">" 28 R_ANGLE@16..17 ">"
29 COLON2@[17; 19) "::" 29 COLON2@17..19 "::"
30 PATH_SEGMENT@[19; 25) 30 PATH_SEGMENT@19..25
31 NAME_REF@[19; 25) 31 NAME_REF@19..25
32 IDENT@[19; 25) "Output" 32 IDENT@19..25 "Output"
33 SEMICOLON@[25; 26) ";" 33 SEMICOLON@25..26 ";"
34 WHITESPACE@[26; 27) "\n" 34 WHITESPACE@26..27 "\n"
35 FN_DEF@[27; 70) 35 FN_DEF@27..70
36 FN_KW@[27; 29) "fn" 36 FN_KW@27..29 "fn"
37 WHITESPACE@[29; 30) " " 37 WHITESPACE@29..30 " "
38 NAME@[30; 33) 38 NAME@30..33
39 IDENT@[30; 33) "foo" 39 IDENT@30..33 "foo"
40 PARAM_LIST@[33; 35) 40 PARAM_LIST@33..35
41 L_PAREN@[33; 34) "(" 41 L_PAREN@33..34 "("
42 R_PAREN@[34; 35) ")" 42 R_PAREN@34..35 ")"
43 WHITESPACE@[35; 36) " " 43 WHITESPACE@35..36 " "
44 BLOCK_EXPR@[36; 70) 44 BLOCK_EXPR@36..70
45 BLOCK@[36; 70) 45 BLOCK@36..70
46 L_CURLY@[36; 37) "{" 46 L_CURLY@36..37 "{"
47 WHITESPACE@[37; 38) " " 47 WHITESPACE@37..38 " "
48 EXPR_STMT@[38; 68) 48 EXPR_STMT@38..68
49 CALL_EXPR@[38; 67) 49 CALL_EXPR@38..67
50 PATH_EXPR@[38; 65) 50 PATH_EXPR@38..65
51 PATH@[38; 65) 51 PATH@38..65
52 PATH@[38; 56) 52 PATH@38..56
53 PATH_SEGMENT@[38; 56) 53 PATH_SEGMENT@38..56
54 L_ANGLE@[38; 39) "<" 54 L_ANGLE@38..39 "<"
55 PATH_TYPE@[39; 44) 55 PATH_TYPE@39..44
56 PATH@[39; 44) 56 PATH@39..44
57 PATH_SEGMENT@[39; 44) 57 PATH_SEGMENT@39..44
58 NAME_REF@[39; 44) 58 NAME_REF@39..44
59 IDENT@[39; 44) "usize" 59 IDENT@39..44 "usize"
60 WHITESPACE@[44; 45) " " 60 WHITESPACE@44..45 " "
61 AS_KW@[45; 47) "as" 61 AS_KW@45..47 "as"
62 WHITESPACE@[47; 48) " " 62 WHITESPACE@47..48 " "
63 PATH_TYPE@[48; 55) 63 PATH_TYPE@48..55
64 PATH@[48; 55) 64 PATH@48..55
65 PATH_SEGMENT@[48; 55) 65 PATH_SEGMENT@48..55
66 NAME_REF@[48; 55) 66 NAME_REF@48..55
67 IDENT@[48; 55) "Default" 67 IDENT@48..55 "Default"
68 R_ANGLE@[55; 56) ">" 68 R_ANGLE@55..56 ">"
69 COLON2@[56; 58) "::" 69 COLON2@56..58 "::"
70 PATH_SEGMENT@[58; 65) 70 PATH_SEGMENT@58..65
71 NAME_REF@[58; 65) 71 NAME_REF@58..65
72 IDENT@[58; 65) "default" 72 IDENT@58..65 "default"
73 ARG_LIST@[65; 67) 73 ARG_LIST@65..67
74 L_PAREN@[65; 66) "(" 74 L_PAREN@65..66 "("
75 R_PAREN@[66; 67) ")" 75 R_PAREN@66..67 ")"
76 SEMICOLON@[67; 68) ";" 76 SEMICOLON@67..68 ";"
77 WHITESPACE@[68; 69) " " 77 WHITESPACE@68..69 " "
78 R_CURLY@[69; 70) "}" 78 R_CURLY@69..70 "}"
79 WHITESPACE@[70; 71) "\n" 79 WHITESPACE@70..71 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rast
index f5db5a9e6..a1238d610 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rast
@@ -1,29 +1,29 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@0..21
2 FN_DEF@[0; 20) 2 FN_DEF@0..20
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 20) 11 BLOCK_EXPR@9..20
12 BLOCK@[9; 20) 12 BLOCK@9..20
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 EXPR_STMT@[11; 18) 15 EXPR_STMT@11..18
16 INDEX_EXPR@[11; 17) 16 INDEX_EXPR@11..17
17 PATH_EXPR@[11; 13) 17 PATH_EXPR@11..13
18 PATH@[11; 13) 18 PATH@11..13
19 PATH_SEGMENT@[11; 13) 19 PATH_SEGMENT@11..13
20 NAME_REF@[11; 13) 20 NAME_REF@11..13
21 IDENT@[11; 13) "xs" 21 IDENT@11..13 "xs"
22 L_BRACK@[13; 14) "[" 22 L_BRACK@13..14 "["
23 RANGE_EXPR@[14; 16) 23 RANGE_EXPR@14..16
24 DOT2@[14; 16) ".." 24 DOT2@14..16 ".."
25 R_BRACK@[16; 17) "]" 25 R_BRACK@16..17 "]"
26 SEMICOLON@[17; 18) ";" 26 SEMICOLON@17..18 ";"
27 WHITESPACE@[18; 19) " " 27 WHITESPACE@18..19 " "
28 R_CURLY@[19; 20) "}" 28 R_CURLY@19..20 "}"
29 WHITESPACE@[20; 21) "\n" 29 WHITESPACE@20..21 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rast b/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rast
index 2d9db61b3..69e5fe4bc 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rast
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 46) 1SOURCE_FILE@0..46
2 TYPE_ALIAS_DEF@[0; 45) 2 TYPE_ALIAS_DEF@0..45
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 PATH_TYPE@[9; 44) 10 PATH_TYPE@9..44
11 PATH@[9; 44) 11 PATH@9..44
12 PATH_SEGMENT@[9; 44) 12 PATH_SEGMENT@9..44
13 NAME_REF@[9; 10) 13 NAME_REF@9..10
14 IDENT@[9; 10) "B" 14 IDENT@9..10 "B"
15 TYPE_ARG_LIST@[10; 44) 15 TYPE_ARG_LIST@10..44
16 L_ANGLE@[10; 11) "<" 16 L_ANGLE@10..11 "<"
17 LIFETIME_ARG@[11; 18) 17 LIFETIME_ARG@11..18
18 LIFETIME@[11; 18) "\'static" 18 LIFETIME@11..18 "\'static"
19 COMMA@[18; 19) "," 19 COMMA@18..19 ","
20 WHITESPACE@[19; 20) " " 20 WHITESPACE@19..20 " "
21 TYPE_ARG@[20; 23) 21 TYPE_ARG@20..23
22 PATH_TYPE@[20; 23) 22 PATH_TYPE@20..23
23 PATH@[20; 23) 23 PATH@20..23
24 PATH_SEGMENT@[20; 23) 24 PATH_SEGMENT@20..23
25 NAME_REF@[20; 23) 25 NAME_REF@20..23
26 IDENT@[20; 23) "i32" 26 IDENT@20..23 "i32"
27 COMMA@[23; 24) "," 27 COMMA@23..24 ","
28 WHITESPACE@[24; 25) " " 28 WHITESPACE@24..25 " "
29 CONST_ARG@[25; 26) 29 CONST_ARG@25..26
30 INT_NUMBER@[25; 26) "1" 30 INT_NUMBER@25..26 "1"
31 COMMA@[26; 27) "," 31 COMMA@26..27 ","
32 WHITESPACE@[27; 28) " " 32 WHITESPACE@27..28 " "
33 CONST_ARG@[28; 33) 33 CONST_ARG@28..33
34 BLOCK_EXPR@[28; 33) 34 BLOCK_EXPR@28..33
35 BLOCK@[28; 33) 35 BLOCK@28..33
36 L_CURLY@[28; 29) "{" 36 L_CURLY@28..29 "{"
37 WHITESPACE@[29; 30) " " 37 WHITESPACE@29..30 " "
38 LITERAL@[30; 31) 38 LITERAL@30..31
39 INT_NUMBER@[30; 31) "2" 39 INT_NUMBER@30..31 "2"
40 WHITESPACE@[31; 32) " " 40 WHITESPACE@31..32 " "
41 R_CURLY@[32; 33) "}" 41 R_CURLY@32..33 "}"
42 COMMA@[33; 34) "," 42 COMMA@33..34 ","
43 WHITESPACE@[34; 35) " " 43 WHITESPACE@34..35 " "
44 ASSOC_TYPE_ARG@[35; 43) 44 ASSOC_TYPE_ARG@35..43
45 NAME_REF@[35; 39) 45 NAME_REF@35..39
46 IDENT@[35; 39) "Item" 46 IDENT@35..39 "Item"
47 EQ@[39; 40) "=" 47 EQ@39..40 "="
48 PATH_TYPE@[40; 43) 48 PATH_TYPE@40..43
49 PATH@[40; 43) 49 PATH@40..43
50 PATH_SEGMENT@[40; 43) 50 PATH_SEGMENT@40..43
51 NAME_REF@[40; 43) 51 NAME_REF@40..43
52 IDENT@[40; 43) "u64" 52 IDENT@40..43 "u64"
53 R_ANGLE@[43; 44) ">" 53 R_ANGLE@43..44 ">"
54 SEMICOLON@[44; 45) ";" 54 SEMICOLON@44..45 ";"
55 WHITESPACE@[45; 46) "\n" 55 WHITESPACE@45..46 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast b/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast
index 4c175e210..1a98e2610 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast
@@ -1,63 +1,63 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@0..71
2 FN_DEF@[0; 19) 2 FN_DEF@0..19
3 VISIBILITY@[0; 5) 3 VISIBILITY@0..5
4 CRATE_KW@[0; 5) "crate" 4 CRATE_KW@0..5 "crate"
5 WHITESPACE@[5; 6) " " 5 WHITESPACE@5..6 " "
6 FN_KW@[6; 8) "fn" 6 FN_KW@6..8 "fn"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 NAME@[9; 13) 8 NAME@9..13
9 IDENT@[9; 13) "main" 9 IDENT@9..13 "main"
10 PARAM_LIST@[13; 15) 10 PARAM_LIST@13..15
11 L_PAREN@[13; 14) "(" 11 L_PAREN@13..14 "("
12 R_PAREN@[14; 15) ")" 12 R_PAREN@14..15 ")"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 BLOCK_EXPR@[16; 19) 14 BLOCK_EXPR@16..19
15 BLOCK@[16; 19) 15 BLOCK@16..19
16 L_CURLY@[16; 17) "{" 16 L_CURLY@16..17 "{"
17 WHITESPACE@[17; 18) " " 17 WHITESPACE@17..18 " "
18 R_CURLY@[18; 19) "}" 18 R_CURLY@18..19 "}"
19 WHITESPACE@[19; 20) "\n" 19 WHITESPACE@19..20 "\n"
20 STRUCT_DEF@[20; 49) 20 STRUCT_DEF@20..49
21 STRUCT_KW@[20; 26) "struct" 21 STRUCT_KW@20..26 "struct"
22 WHITESPACE@[26; 27) " " 22 WHITESPACE@26..27 " "
23 NAME@[27; 28) 23 NAME@27..28
24 IDENT@[27; 28) "S" 24 IDENT@27..28 "S"
25 WHITESPACE@[28; 29) " " 25 WHITESPACE@28..29 " "
26 RECORD_FIELD_DEF_LIST@[29; 49) 26 RECORD_FIELD_DEF_LIST@29..49
27 L_CURLY@[29; 30) "{" 27 L_CURLY@29..30 "{"
28 WHITESPACE@[30; 31) " " 28 WHITESPACE@30..31 " "
29 RECORD_FIELD_DEF@[31; 47) 29 RECORD_FIELD_DEF@31..47
30 VISIBILITY@[31; 36) 30 VISIBILITY@31..36
31 CRATE_KW@[31; 36) "crate" 31 CRATE_KW@31..36 "crate"
32 WHITESPACE@[36; 37) " " 32 WHITESPACE@36..37 " "
33 NAME@[37; 42) 33 NAME@37..42
34 IDENT@[37; 42) "field" 34 IDENT@37..42 "field"
35 COLON@[42; 43) ":" 35 COLON@42..43 ":"
36 WHITESPACE@[43; 44) " " 36 WHITESPACE@43..44 " "
37 PATH_TYPE@[44; 47) 37 PATH_TYPE@44..47
38 PATH@[44; 47) 38 PATH@44..47
39 PATH_SEGMENT@[44; 47) 39 PATH_SEGMENT@44..47
40 NAME_REF@[44; 47) 40 NAME_REF@44..47
41 IDENT@[44; 47) "u32" 41 IDENT@44..47 "u32"
42 WHITESPACE@[47; 48) " " 42 WHITESPACE@47..48 " "
43 R_CURLY@[48; 49) "}" 43 R_CURLY@48..49 "}"
44 WHITESPACE@[49; 50) "\n" 44 WHITESPACE@49..50 "\n"
45 STRUCT_DEF@[50; 70) 45 STRUCT_DEF@50..70
46 STRUCT_KW@[50; 56) "struct" 46 STRUCT_KW@50..56 "struct"
47 WHITESPACE@[56; 57) " " 47 WHITESPACE@56..57 " "
48 NAME@[57; 58) 48 NAME@57..58
49 IDENT@[57; 58) "T" 49 IDENT@57..58 "T"
50 TUPLE_FIELD_DEF_LIST@[58; 69) 50 TUPLE_FIELD_DEF_LIST@58..69
51 L_PAREN@[58; 59) "(" 51 L_PAREN@58..59 "("
52 TUPLE_FIELD_DEF@[59; 68) 52 TUPLE_FIELD_DEF@59..68
53 VISIBILITY@[59; 64) 53 VISIBILITY@59..64
54 CRATE_KW@[59; 64) "crate" 54 CRATE_KW@59..64 "crate"
55 WHITESPACE@[64; 65) " " 55 WHITESPACE@64..65 " "
56 PATH_TYPE@[65; 68) 56 PATH_TYPE@65..68
57 PATH@[65; 68) 57 PATH@65..68
58 PATH_SEGMENT@[65; 68) 58 PATH_SEGMENT@65..68
59 NAME_REF@[65; 68) 59 NAME_REF@65..68
60 IDENT@[65; 68) "u32" 60 IDENT@65..68 "u32"
61 R_PAREN@[68; 69) ")" 61 R_PAREN@68..69 ")"
62 SEMICOLON@[69; 70) ";" 62 SEMICOLON@69..70 ";"
63 WHITESPACE@[70; 71) "\n" 63 WHITESPACE@70..71 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rast b/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rast
index 578361715..1ae791361 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rast
@@ -1,125 +1,125 @@
1SOURCE_FILE@[0; 101) 1SOURCE_FILE@0..101
2 TRAIT_DEF@[0; 41) 2 TRAIT_DEF@0..41
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "T" 6 IDENT@6..7 "T"
7 TYPE_PARAM_LIST@[7; 10) 7 TYPE_PARAM_LIST@7..10
8 L_ANGLE@[7; 8) "<" 8 L_ANGLE@7..8 "<"
9 TYPE_PARAM@[8; 9) 9 TYPE_PARAM@8..9
10 NAME@[8; 9) 10 NAME@8..9
11 IDENT@[8; 9) "U" 11 IDENT@8..9 "U"
12 R_ANGLE@[9; 10) ">" 12 R_ANGLE@9..10 ">"
13 COLON@[10; 11) ":" 13 COLON@10..11 ":"
14 WHITESPACE@[11; 12) " " 14 WHITESPACE@11..12 " "
15 TYPE_BOUND_LIST@[12; 24) 15 TYPE_BOUND_LIST@12..24
16 TYPE_BOUND@[12; 16) 16 TYPE_BOUND@12..16
17 PATH_TYPE@[12; 16) 17 PATH_TYPE@12..16
18 PATH@[12; 16) 18 PATH@12..16
19 PATH_SEGMENT@[12; 16) 19 PATH_SEGMENT@12..16
20 NAME_REF@[12; 16) 20 NAME_REF@12..16
21 IDENT@[12; 16) "Hash" 21 IDENT@12..16 "Hash"
22 WHITESPACE@[16; 17) " " 22 WHITESPACE@16..17 " "
23 PLUS@[17; 18) "+" 23 PLUS@17..18 "+"
24 WHITESPACE@[18; 19) " " 24 WHITESPACE@18..19 " "
25 TYPE_BOUND@[19; 24) 25 TYPE_BOUND@19..24
26 PATH_TYPE@[19; 24) 26 PATH_TYPE@19..24
27 PATH@[19; 24) 27 PATH@19..24
28 PATH_SEGMENT@[19; 24) 28 PATH_SEGMENT@19..24
29 NAME_REF@[19; 24) 29 NAME_REF@19..24
30 IDENT@[19; 24) "Clone" 30 IDENT@19..24 "Clone"
31 WHITESPACE@[24; 25) " " 31 WHITESPACE@24..25 " "
32 WHERE_CLAUSE@[25; 38) 32 WHERE_CLAUSE@25..38
33 WHERE_KW@[25; 30) "where" 33 WHERE_KW@25..30 "where"
34 WHITESPACE@[30; 31) " " 34 WHITESPACE@30..31 " "
35 WHERE_PRED@[31; 38) 35 WHERE_PRED@31..38
36 PATH_TYPE@[31; 32) 36 PATH_TYPE@31..32
37 PATH@[31; 32) 37 PATH@31..32
38 PATH_SEGMENT@[31; 32) 38 PATH_SEGMENT@31..32
39 NAME_REF@[31; 32) 39 NAME_REF@31..32
40 IDENT@[31; 32) "U" 40 IDENT@31..32 "U"
41 COLON@[32; 33) ":" 41 COLON@32..33 ":"
42 WHITESPACE@[33; 34) " " 42 WHITESPACE@33..34 " "
43 TYPE_BOUND_LIST@[34; 38) 43 TYPE_BOUND_LIST@34..38
44 TYPE_BOUND@[34; 38) 44 TYPE_BOUND@34..38
45 PATH_TYPE@[34; 38) 45 PATH_TYPE@34..38
46 PATH@[34; 38) 46 PATH@34..38
47 PATH_SEGMENT@[34; 38) 47 PATH_SEGMENT@34..38
48 NAME_REF@[34; 38) 48 NAME_REF@34..38
49 IDENT@[34; 38) "Copy" 49 IDENT@34..38 "Copy"
50 WHITESPACE@[38; 39) " " 50 WHITESPACE@38..39 " "
51 ITEM_LIST@[39; 41) 51 ITEM_LIST@39..41
52 L_CURLY@[39; 40) "{" 52 L_CURLY@39..40 "{"
53 R_CURLY@[40; 41) "}" 53 R_CURLY@40..41 "}"
54 WHITESPACE@[41; 42) "\n" 54 WHITESPACE@41..42 "\n"
55 TRAIT_DEF@[42; 100) 55 TRAIT_DEF@42..100
56 TRAIT_KW@[42; 47) "trait" 56 TRAIT_KW@42..47 "trait"
57 WHITESPACE@[47; 48) " " 57 WHITESPACE@47..48 " "
58 NAME@[48; 49) 58 NAME@48..49
59 IDENT@[48; 49) "X" 59 IDENT@48..49 "X"
60 TYPE_PARAM_LIST@[49; 69) 60 TYPE_PARAM_LIST@49..69
61 L_ANGLE@[49; 50) "<" 61 L_ANGLE@49..50 "<"
62 TYPE_PARAM@[50; 68) 62 TYPE_PARAM@50..68
63 NAME@[50; 51) 63 NAME@50..51
64 IDENT@[50; 51) "U" 64 IDENT@50..51 "U"
65 COLON@[51; 52) ":" 65 COLON@51..52 ":"
66 WHITESPACE@[52; 53) " " 66 WHITESPACE@52..53 " "
67 TYPE_BOUND_LIST@[53; 68) 67 TYPE_BOUND_LIST@53..68
68 TYPE_BOUND@[53; 58) 68 TYPE_BOUND@53..58
69 PATH_TYPE@[53; 58) 69 PATH_TYPE@53..58
70 PATH@[53; 58) 70 PATH@53..58
71 PATH_SEGMENT@[53; 58) 71 PATH_SEGMENT@53..58
72 NAME_REF@[53; 58) 72 NAME_REF@53..58
73 IDENT@[53; 58) "Debug" 73 IDENT@53..58 "Debug"
74 WHITESPACE@[58; 59) " " 74 WHITESPACE@58..59 " "
75 PLUS@[59; 60) "+" 75 PLUS@59..60 "+"
76 WHITESPACE@[60; 61) " " 76 WHITESPACE@60..61 " "
77 TYPE_BOUND@[61; 68) 77 TYPE_BOUND@61..68
78 PATH_TYPE@[61; 68) 78 PATH_TYPE@61..68
79 PATH@[61; 68) 79 PATH@61..68
80 PATH_SEGMENT@[61; 68) 80 PATH_SEGMENT@61..68
81 NAME_REF@[61; 68) 81 NAME_REF@61..68
82 IDENT@[61; 68) "Display" 82 IDENT@61..68 "Display"
83 R_ANGLE@[68; 69) ">" 83 R_ANGLE@68..69 ">"
84 COLON@[69; 70) ":" 84 COLON@69..70 ":"
85 WHITESPACE@[70; 71) " " 85 WHITESPACE@70..71 " "
86 TYPE_BOUND_LIST@[71; 83) 86 TYPE_BOUND_LIST@71..83
87 TYPE_BOUND@[71; 75) 87 TYPE_BOUND@71..75
88 PATH_TYPE@[71; 75) 88 PATH_TYPE@71..75
89 PATH@[71; 75) 89 PATH@71..75
90 PATH_SEGMENT@[71; 75) 90 PATH_SEGMENT@71..75
91 NAME_REF@[71; 75) 91 NAME_REF@71..75
92 IDENT@[71; 75) "Hash" 92 IDENT@71..75 "Hash"
93 WHITESPACE@[75; 76) " " 93 WHITESPACE@75..76 " "
94 PLUS@[76; 77) "+" 94 PLUS@76..77 "+"
95 WHITESPACE@[77; 78) " " 95 WHITESPACE@77..78 " "
96 TYPE_BOUND@[78; 83) 96 TYPE_BOUND@78..83
97 PATH_TYPE@[78; 83) 97 PATH_TYPE@78..83
98 PATH@[78; 83) 98 PATH@78..83
99 PATH_SEGMENT@[78; 83) 99 PATH_SEGMENT@78..83
100 NAME_REF@[78; 83) 100 NAME_REF@78..83
101 IDENT@[78; 83) "Clone" 101 IDENT@78..83 "Clone"
102 WHITESPACE@[83; 84) " " 102 WHITESPACE@83..84 " "
103 WHERE_CLAUSE@[84; 97) 103 WHERE_CLAUSE@84..97
104 WHERE_KW@[84; 89) "where" 104 WHERE_KW@84..89 "where"
105 WHITESPACE@[89; 90) " " 105 WHITESPACE@89..90 " "
106 WHERE_PRED@[90; 97) 106 WHERE_PRED@90..97
107 PATH_TYPE@[90; 91) 107 PATH_TYPE@90..91
108 PATH@[90; 91) 108 PATH@90..91
109 PATH_SEGMENT@[90; 91) 109 PATH_SEGMENT@90..91
110 NAME_REF@[90; 91) 110 NAME_REF@90..91
111 IDENT@[90; 91) "U" 111 IDENT@90..91 "U"
112 COLON@[91; 92) ":" 112 COLON@91..92 ":"
113 WHITESPACE@[92; 93) " " 113 WHITESPACE@92..93 " "
114 TYPE_BOUND_LIST@[93; 97) 114 TYPE_BOUND_LIST@93..97
115 TYPE_BOUND@[93; 97) 115 TYPE_BOUND@93..97
116 PATH_TYPE@[93; 97) 116 PATH_TYPE@93..97
117 PATH@[93; 97) 117 PATH@93..97
118 PATH_SEGMENT@[93; 97) 118 PATH_SEGMENT@93..97
119 NAME_REF@[93; 97) 119 NAME_REF@93..97
120 IDENT@[93; 97) "Copy" 120 IDENT@93..97 "Copy"
121 WHITESPACE@[97; 98) " " 121 WHITESPACE@97..98 " "
122 ITEM_LIST@[98; 100) 122 ITEM_LIST@98..100
123 L_CURLY@[98; 99) "{" 123 L_CURLY@98..99 "{"
124 R_CURLY@[99; 100) "}" 124 R_CURLY@99..100 "}"
125 WHITESPACE@[100; 101) "\n" 125 WHITESPACE@100..101 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rast
index f9e677a03..bbf6dc494 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rast
@@ -1,148 +1,148 @@
1SOURCE_FILE@[0; 118) 1SOURCE_FILE@0..118
2 FN_DEF@[0; 117) 2 FN_DEF@0..117
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 117) 11 BLOCK_EXPR@9..117
12 BLOCK@[9; 117) 12 BLOCK@9..117
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 27) 15 LET_STMT@15..27
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PLACEHOLDER_PAT@[19; 20) 18 PLACEHOLDER_PAT@19..20
19 UNDERSCORE@[19; 20) "_" 19 UNDERSCORE@19..20 "_"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 EQ@[21; 22) "=" 21 EQ@21..22 "="
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 CALL_EXPR@[23; 26) 23 CALL_EXPR@23..26
24 PATH_EXPR@[23; 24) 24 PATH_EXPR@23..24
25 PATH@[23; 24) 25 PATH@23..24
26 PATH_SEGMENT@[23; 24) 26 PATH_SEGMENT@23..24
27 NAME_REF@[23; 24) 27 NAME_REF@23..24
28 IDENT@[23; 24) "f" 28 IDENT@23..24 "f"
29 ARG_LIST@[24; 26) 29 ARG_LIST@24..26
30 L_PAREN@[24; 25) "(" 30 L_PAREN@24..25 "("
31 R_PAREN@[25; 26) ")" 31 R_PAREN@25..26 ")"
32 SEMICOLON@[26; 27) ";" 32 SEMICOLON@26..27 ";"
33 WHITESPACE@[27; 32) "\n " 33 WHITESPACE@27..32 "\n "
34 LET_STMT@[32; 54) 34 LET_STMT@32..54
35 LET_KW@[32; 35) "let" 35 LET_KW@32..35 "let"
36 WHITESPACE@[35; 36) " " 36 WHITESPACE@35..36 " "
37 PLACEHOLDER_PAT@[36; 37) 37 PLACEHOLDER_PAT@36..37
38 UNDERSCORE@[36; 37) "_" 38 UNDERSCORE@36..37 "_"
39 WHITESPACE@[37; 38) " " 39 WHITESPACE@37..38 " "
40 EQ@[38; 39) "=" 40 EQ@38..39 "="
41 WHITESPACE@[39; 40) " " 41 WHITESPACE@39..40 " "
42 CALL_EXPR@[40; 53) 42 CALL_EXPR@40..53
43 CALL_EXPR@[40; 46) 43 CALL_EXPR@40..46
44 CALL_EXPR@[40; 43) 44 CALL_EXPR@40..43
45 PATH_EXPR@[40; 41) 45 PATH_EXPR@40..41
46 PATH@[40; 41) 46 PATH@40..41
47 PATH_SEGMENT@[40; 41) 47 PATH_SEGMENT@40..41
48 NAME_REF@[40; 41) 48 NAME_REF@40..41
49 IDENT@[40; 41) "f" 49 IDENT@40..41 "f"
50 ARG_LIST@[41; 43) 50 ARG_LIST@41..43
51 L_PAREN@[41; 42) "(" 51 L_PAREN@41..42 "("
52 R_PAREN@[42; 43) ")" 52 R_PAREN@42..43 ")"
53 ARG_LIST@[43; 46) 53 ARG_LIST@43..46
54 L_PAREN@[43; 44) "(" 54 L_PAREN@43..44 "("
55 LITERAL@[44; 45) 55 LITERAL@44..45
56 INT_NUMBER@[44; 45) "1" 56 INT_NUMBER@44..45 "1"
57 R_PAREN@[45; 46) ")" 57 R_PAREN@45..46 ")"
58 ARG_LIST@[46; 53) 58 ARG_LIST@46..53
59 L_PAREN@[46; 47) "(" 59 L_PAREN@46..47 "("
60 LITERAL@[47; 48) 60 LITERAL@47..48
61 INT_NUMBER@[47; 48) "1" 61 INT_NUMBER@47..48 "1"
62 COMMA@[48; 49) "," 62 COMMA@48..49 ","
63 WHITESPACE@[49; 50) " " 63 WHITESPACE@49..50 " "
64 LITERAL@[50; 51) 64 LITERAL@50..51
65 INT_NUMBER@[50; 51) "2" 65 INT_NUMBER@50..51 "2"
66 COMMA@[51; 52) "," 66 COMMA@51..52 ","
67 R_PAREN@[52; 53) ")" 67 R_PAREN@52..53 ")"
68 SEMICOLON@[53; 54) ";" 68 SEMICOLON@53..54 ";"
69 WHITESPACE@[54; 59) "\n " 69 WHITESPACE@54..59 "\n "
70 LET_STMT@[59; 84) 70 LET_STMT@59..84
71 LET_KW@[59; 62) "let" 71 LET_KW@59..62 "let"
72 WHITESPACE@[62; 63) " " 72 WHITESPACE@62..63 " "
73 PLACEHOLDER_PAT@[63; 64) 73 PLACEHOLDER_PAT@63..64
74 UNDERSCORE@[63; 64) "_" 74 UNDERSCORE@63..64 "_"
75 WHITESPACE@[64; 65) " " 75 WHITESPACE@64..65 " "
76 EQ@[65; 66) "=" 76 EQ@65..66 "="
77 WHITESPACE@[66; 67) " " 77 WHITESPACE@66..67 " "
78 CALL_EXPR@[67; 83) 78 CALL_EXPR@67..83
79 PATH_EXPR@[67; 68) 79 PATH_EXPR@67..68
80 PATH@[67; 68) 80 PATH@67..68
81 PATH_SEGMENT@[67; 68) 81 PATH_SEGMENT@67..68
82 NAME_REF@[67; 68) 82 NAME_REF@67..68
83 IDENT@[67; 68) "f" 83 IDENT@67..68 "f"
84 ARG_LIST@[68; 83) 84 ARG_LIST@68..83
85 L_PAREN@[68; 69) "(" 85 L_PAREN@68..69 "("
86 CALL_EXPR@[69; 82) 86 CALL_EXPR@69..82
87 PATH_EXPR@[69; 80) 87 PATH_EXPR@69..80
88 PATH@[69; 80) 88 PATH@69..80
89 PATH@[69; 74) 89 PATH@69..74
90 PATH_SEGMENT@[69; 74) 90 PATH_SEGMENT@69..74
91 L_ANGLE@[69; 70) "<" 91 L_ANGLE@69..70 "<"
92 PATH_TYPE@[70; 73) 92 PATH_TYPE@70..73
93 PATH@[70; 73) 93 PATH@70..73
94 PATH_SEGMENT@[70; 73) 94 PATH_SEGMENT@70..73
95 NAME_REF@[70; 73) 95 NAME_REF@70..73
96 IDENT@[70; 73) "Foo" 96 IDENT@70..73 "Foo"
97 R_ANGLE@[73; 74) ">" 97 R_ANGLE@73..74 ">"
98 COLON2@[74; 76) "::" 98 COLON2@74..76 "::"
99 PATH_SEGMENT@[76; 80) 99 PATH_SEGMENT@76..80
100 NAME_REF@[76; 80) 100 NAME_REF@76..80
101 IDENT@[76; 80) "func" 101 IDENT@76..80 "func"
102 ARG_LIST@[80; 82) 102 ARG_LIST@80..82
103 L_PAREN@[80; 81) "(" 103 L_PAREN@80..81 "("
104 R_PAREN@[81; 82) ")" 104 R_PAREN@81..82 ")"
105 R_PAREN@[82; 83) ")" 105 R_PAREN@82..83 ")"
106 SEMICOLON@[83; 84) ";" 106 SEMICOLON@83..84 ";"
107 WHITESPACE@[84; 89) "\n " 107 WHITESPACE@84..89 "\n "
108 EXPR_STMT@[89; 115) 108 EXPR_STMT@89..115
109 CALL_EXPR@[89; 114) 109 CALL_EXPR@89..114
110 PATH_EXPR@[89; 90) 110 PATH_EXPR@89..90
111 PATH@[89; 90) 111 PATH@89..90
112 PATH_SEGMENT@[89; 90) 112 PATH_SEGMENT@89..90
113 NAME_REF@[89; 90) 113 NAME_REF@89..90
114 IDENT@[89; 90) "f" 114 IDENT@89..90 "f"
115 ARG_LIST@[90; 114) 115 ARG_LIST@90..114
116 L_PAREN@[90; 91) "(" 116 L_PAREN@90..91 "("
117 CALL_EXPR@[91; 113) 117 CALL_EXPR@91..113
118 PATH_EXPR@[91; 111) 118 PATH_EXPR@91..111
119 PATH@[91; 111) 119 PATH@91..111
120 PATH@[91; 105) 120 PATH@91..105
121 PATH_SEGMENT@[91; 105) 121 PATH_SEGMENT@91..105
122 L_ANGLE@[91; 92) "<" 122 L_ANGLE@91..92 "<"
123 PATH_TYPE@[92; 95) 123 PATH_TYPE@92..95
124 PATH@[92; 95) 124 PATH@92..95
125 PATH_SEGMENT@[92; 95) 125 PATH_SEGMENT@92..95
126 NAME_REF@[92; 95) 126 NAME_REF@92..95
127 IDENT@[92; 95) "Foo" 127 IDENT@92..95 "Foo"
128 WHITESPACE@[95; 96) " " 128 WHITESPACE@95..96 " "
129 AS_KW@[96; 98) "as" 129 AS_KW@96..98 "as"
130 WHITESPACE@[98; 99) " " 130 WHITESPACE@98..99 " "
131 PATH_TYPE@[99; 104) 131 PATH_TYPE@99..104
132 PATH@[99; 104) 132 PATH@99..104
133 PATH_SEGMENT@[99; 104) 133 PATH_SEGMENT@99..104
134 NAME_REF@[99; 104) 134 NAME_REF@99..104
135 IDENT@[99; 104) "Trait" 135 IDENT@99..104 "Trait"
136 R_ANGLE@[104; 105) ">" 136 R_ANGLE@104..105 ">"
137 COLON2@[105; 107) "::" 137 COLON2@105..107 "::"
138 PATH_SEGMENT@[107; 111) 138 PATH_SEGMENT@107..111
139 NAME_REF@[107; 111) 139 NAME_REF@107..111
140 IDENT@[107; 111) "func" 140 IDENT@107..111 "func"
141 ARG_LIST@[111; 113) 141 ARG_LIST@111..113
142 L_PAREN@[111; 112) "(" 142 L_PAREN@111..112 "("
143 R_PAREN@[112; 113) ")" 143 R_PAREN@112..113 ")"
144 R_PAREN@[113; 114) ")" 144 R_PAREN@113..114 ")"
145 SEMICOLON@[114; 115) ";" 145 SEMICOLON@114..115 ";"
146 WHITESPACE@[115; 116) "\n" 146 WHITESPACE@115..116 "\n"
147 R_CURLY@[116; 117) "}" 147 R_CURLY@116..117 "}"
148 WHITESPACE@[117; 118) "\n" 148 WHITESPACE@117..118 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rast b/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rast
index 580f29cfb..f0e09d40d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rast
@@ -1,138 +1,138 @@
1SOURCE_FILE@[0; 198) 1SOURCE_FILE@0..198
2 USE_ITEM@[0; 28) 2 USE_ITEM@0..28
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 27) 5 USE_TREE@4..27
6 PATH@[4; 14) 6 PATH@4..14
7 PATH@[4; 8) 7 PATH@4..8
8 PATH_SEGMENT@[4; 8) 8 PATH_SEGMENT@4..8
9 NAME_REF@[4; 8) 9 NAME_REF@4..8
10 IDENT@[4; 8) "some" 10 IDENT@4..8 "some"
11 COLON2@[8; 10) "::" 11 COLON2@8..10 "::"
12 PATH_SEGMENT@[10; 14) 12 PATH_SEGMENT@10..14
13 NAME_REF@[10; 14) 13 NAME_REF@10..14
14 IDENT@[10; 14) "path" 14 IDENT@10..14 "path"
15 WHITESPACE@[14; 15) " " 15 WHITESPACE@14..15 " "
16 ALIAS@[15; 27) 16 ALIAS@15..27
17 AS_KW@[15; 17) "as" 17 AS_KW@15..17 "as"
18 WHITESPACE@[17; 18) " " 18 WHITESPACE@17..18 " "
19 NAME@[18; 27) 19 NAME@18..27
20 IDENT@[18; 27) "some_name" 20 IDENT@18..27 "some_name"
21 SEMICOLON@[27; 28) ";" 21 SEMICOLON@27..28 ";"
22 WHITESPACE@[28; 29) "\n" 22 WHITESPACE@28..29 "\n"
23 USE_ITEM@[29; 181) 23 USE_ITEM@29..181
24 USE_KW@[29; 32) "use" 24 USE_KW@29..32 "use"
25 WHITESPACE@[32; 33) " " 25 WHITESPACE@32..33 " "
26 USE_TREE@[33; 180) 26 USE_TREE@33..180
27 PATH@[33; 37) 27 PATH@33..37
28 PATH_SEGMENT@[33; 37) 28 PATH_SEGMENT@33..37
29 NAME_REF@[33; 37) 29 NAME_REF@33..37
30 IDENT@[33; 37) "some" 30 IDENT@33..37 "some"
31 COLON2@[37; 39) "::" 31 COLON2@37..39 "::"
32 USE_TREE_LIST@[39; 180) 32 USE_TREE_LIST@39..180
33 L_CURLY@[39; 40) "{" 33 L_CURLY@39..40 "{"
34 WHITESPACE@[40; 42) "\n " 34 WHITESPACE@40..42 "\n "
35 USE_TREE@[42; 72) 35 USE_TREE@42..72
36 PATH@[42; 53) 36 PATH@42..53
37 PATH@[42; 47) 37 PATH@42..47
38 PATH_SEGMENT@[42; 47) 38 PATH_SEGMENT@42..47
39 NAME_REF@[42; 47) 39 NAME_REF@42..47
40 IDENT@[42; 47) "other" 40 IDENT@42..47 "other"
41 COLON2@[47; 49) "::" 41 COLON2@47..49 "::"
42 PATH_SEGMENT@[49; 53) 42 PATH_SEGMENT@49..53
43 NAME_REF@[49; 53) 43 NAME_REF@49..53
44 IDENT@[49; 53) "path" 44 IDENT@49..53 "path"
45 WHITESPACE@[53; 54) " " 45 WHITESPACE@53..54 " "
46 ALIAS@[54; 72) 46 ALIAS@54..72
47 AS_KW@[54; 56) "as" 47 AS_KW@54..56 "as"
48 WHITESPACE@[56; 57) " " 48 WHITESPACE@56..57 " "
49 NAME@[57; 72) 49 NAME@57..72
50 IDENT@[57; 72) "some_other_name" 50 IDENT@57..72 "some_other_name"
51 COMMA@[72; 73) "," 51 COMMA@72..73 ","
52 WHITESPACE@[73; 75) "\n " 52 WHITESPACE@73..75 "\n "
53 USE_TREE@[75; 108) 53 USE_TREE@75..108
54 PATH@[75; 90) 54 PATH@75..90
55 PATH@[75; 84) 55 PATH@75..84
56 PATH_SEGMENT@[75; 84) 56 PATH_SEGMENT@75..84
57 NAME_REF@[75; 84) 57 NAME_REF@75..84
58 IDENT@[75; 84) "different" 58 IDENT@75..84 "different"
59 COLON2@[84; 86) "::" 59 COLON2@84..86 "::"
60 PATH_SEGMENT@[86; 90) 60 PATH_SEGMENT@86..90
61 NAME_REF@[86; 90) 61 NAME_REF@86..90
62 IDENT@[86; 90) "path" 62 IDENT@86..90 "path"
63 WHITESPACE@[90; 91) " " 63 WHITESPACE@90..91 " "
64 ALIAS@[91; 108) 64 ALIAS@91..108
65 AS_KW@[91; 93) "as" 65 AS_KW@91..93 "as"
66 WHITESPACE@[93; 94) " " 66 WHITESPACE@93..94 " "
67 NAME@[94; 108) 67 NAME@94..108
68 IDENT@[94; 108) "different_name" 68 IDENT@94..108 "different_name"
69 COMMA@[108; 109) "," 69 COMMA@108..109 ","
70 WHITESPACE@[109; 111) "\n " 70 WHITESPACE@109..111 "\n "
71 USE_TREE@[111; 129) 71 USE_TREE@111..129
72 PATH@[111; 129) 72 PATH@111..129
73 PATH@[111; 123) 73 PATH@111..123
74 PATH@[111; 114) 74 PATH@111..114
75 PATH_SEGMENT@[111; 114) 75 PATH_SEGMENT@111..114
76 NAME_REF@[111; 114) 76 NAME_REF@111..114
77 IDENT@[111; 114) "yet" 77 IDENT@111..114 "yet"
78 COLON2@[114; 116) "::" 78 COLON2@114..116 "::"
79 PATH_SEGMENT@[116; 123) 79 PATH_SEGMENT@116..123
80 NAME_REF@[116; 123) 80 NAME_REF@116..123
81 IDENT@[116; 123) "another" 81 IDENT@116..123 "another"
82 COLON2@[123; 125) "::" 82 COLON2@123..125 "::"
83 PATH_SEGMENT@[125; 129) 83 PATH_SEGMENT@125..129
84 NAME_REF@[125; 129) 84 NAME_REF@125..129
85 IDENT@[125; 129) "path" 85 IDENT@125..129 "path"
86 COMMA@[129; 130) "," 86 COMMA@129..130 ","
87 WHITESPACE@[130; 132) "\n " 87 WHITESPACE@130..132 "\n "
88 USE_TREE@[132; 178) 88 USE_TREE@132..178
89 PATH@[132; 175) 89 PATH@132..175
90 PATH@[132; 164) 90 PATH@132..164
91 PATH@[132; 158) 91 PATH@132..158
92 PATH@[132; 148) 92 PATH@132..148
93 PATH@[132; 144) 93 PATH@132..144
94 PATH@[132; 139) 94 PATH@132..139
95 PATH_SEGMENT@[132; 139) 95 PATH_SEGMENT@132..139
96 NAME_REF@[132; 139) 96 NAME_REF@132..139
97 IDENT@[132; 139) "running" 97 IDENT@132..139 "running"
98 COLON2@[139; 141) "::" 98 COLON2@139..141 "::"
99 PATH_SEGMENT@[141; 144) 99 PATH_SEGMENT@141..144
100 NAME_REF@[141; 144) 100 NAME_REF@141..144
101 IDENT@[141; 144) "out" 101 IDENT@141..144 "out"
102 COLON2@[144; 146) "::" 102 COLON2@144..146 "::"
103 PATH_SEGMENT@[146; 148) 103 PATH_SEGMENT@146..148
104 NAME_REF@[146; 148) 104 NAME_REF@146..148
105 IDENT@[146; 148) "of" 105 IDENT@146..148 "of"
106 COLON2@[148; 150) "::" 106 COLON2@148..150 "::"
107 PATH_SEGMENT@[150; 158) 107 PATH_SEGMENT@150..158
108 NAME_REF@[150; 158) 108 NAME_REF@150..158
109 IDENT@[150; 158) "synonyms" 109 IDENT@150..158 "synonyms"
110 COLON2@[158; 160) "::" 110 COLON2@158..160 "::"
111 PATH_SEGMENT@[160; 164) 111 PATH_SEGMENT@160..164
112 NAME_REF@[160; 164) 112 NAME_REF@160..164
113 IDENT@[160; 164) "for_" 113 IDENT@160..164 "for_"
114 COLON2@[164; 166) "::" 114 COLON2@164..166 "::"
115 PATH_SEGMENT@[166; 175) 115 PATH_SEGMENT@166..175
116 NAME_REF@[166; 175) 116 NAME_REF@166..175
117 IDENT@[166; 175) "different" 117 IDENT@166..175 "different"
118 COLON2@[175; 177) "::" 118 COLON2@175..177 "::"
119 STAR@[177; 178) "*" 119 STAR@177..178 "*"
120 WHITESPACE@[178; 179) "\n" 120 WHITESPACE@178..179 "\n"
121 R_CURLY@[179; 180) "}" 121 R_CURLY@179..180 "}"
122 SEMICOLON@[180; 181) ";" 122 SEMICOLON@180..181 ";"
123 WHITESPACE@[181; 182) "\n" 123 WHITESPACE@181..182 "\n"
124 USE_ITEM@[182; 197) 124 USE_ITEM@182..197
125 USE_KW@[182; 185) "use" 125 USE_KW@182..185 "use"
126 WHITESPACE@[185; 186) " " 126 WHITESPACE@185..186 " "
127 USE_TREE@[186; 196) 127 USE_TREE@186..196
128 PATH@[186; 191) 128 PATH@186..191
129 PATH_SEGMENT@[186; 191) 129 PATH_SEGMENT@186..191
130 NAME_REF@[186; 191) 130 NAME_REF@186..191
131 IDENT@[186; 191) "Trait" 131 IDENT@186..191 "Trait"
132 WHITESPACE@[191; 192) " " 132 WHITESPACE@191..192 " "
133 ALIAS@[192; 196) 133 ALIAS@192..196
134 AS_KW@[192; 194) "as" 134 AS_KW@192..194 "as"
135 WHITESPACE@[194; 195) " " 135 WHITESPACE@194..195 " "
136 UNDERSCORE@[195; 196) "_" 136 UNDERSCORE@195..196 "_"
137 SEMICOLON@[196; 197) ";" 137 SEMICOLON@196..197 ";"
138 WHITESPACE@[197; 198) "\n" 138 WHITESPACE@197..198 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rast b/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rast
index e75d569f0..a454dfc3a 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rast
@@ -1,30 +1,30 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@0..21
2 FN_DEF@[0; 20) 2 FN_DEF@0..20
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 BLOCK_EXPR@[7; 20) 11 BLOCK_EXPR@7..20
12 BLOCK@[7; 20) 12 BLOCK@7..20
13 L_CURLY@[7; 8) "{" 13 L_CURLY@7..8 "{"
14 WHITESPACE@[8; 9) " " 14 WHITESPACE@8..9 " "
15 FN_DEF@[9; 18) 15 FN_DEF@9..18
16 FN_KW@[9; 11) "fn" 16 FN_KW@9..11 "fn"
17 WHITESPACE@[11; 12) " " 17 WHITESPACE@11..12 " "
18 NAME@[12; 13) 18 NAME@12..13
19 IDENT@[12; 13) "b" 19 IDENT@12..13 "b"
20 PARAM_LIST@[13; 15) 20 PARAM_LIST@13..15
21 L_PAREN@[13; 14) "(" 21 L_PAREN@13..14 "("
22 R_PAREN@[14; 15) ")" 22 R_PAREN@14..15 ")"
23 WHITESPACE@[15; 16) " " 23 WHITESPACE@15..16 " "
24 BLOCK_EXPR@[16; 18) 24 BLOCK_EXPR@16..18
25 BLOCK@[16; 18) 25 BLOCK@16..18
26 L_CURLY@[16; 17) "{" 26 L_CURLY@16..17 "{"
27 R_CURLY@[17; 18) "}" 27 R_CURLY@17..18 "}"
28 WHITESPACE@[18; 19) " " 28 WHITESPACE@18..19 " "
29 R_CURLY@[19; 20) "}" 29 R_CURLY@19..20 "}"
30 WHITESPACE@[20; 21) "\n" 30 WHITESPACE@20..21 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast
index 33886154d..2a50f796c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast
@@ -1,47 +1,47 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@0..35
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 TYPE_PARAM_LIST@[6; 30) 7 TYPE_PARAM_LIST@6..30
8 L_ANGLE@[6; 7) "<" 8 L_ANGLE@6..7 "<"
9 TYPE_PARAM@[7; 29) 9 TYPE_PARAM@7..29
10 NAME@[7; 8) 10 NAME@7..8
11 IDENT@[7; 8) "F" 11 IDENT@7..8 "F"
12 COLON@[8; 9) ":" 12 COLON@8..9 ":"
13 WHITESPACE@[9; 10) " " 13 WHITESPACE@9..10 " "
14 TYPE_BOUND_LIST@[10; 29) 14 TYPE_BOUND_LIST@10..29
15 TYPE_BOUND@[10; 29) 15 TYPE_BOUND@10..29
16 PATH_TYPE@[10; 29) 16 PATH_TYPE@10..29
17 PATH@[10; 29) 17 PATH@10..29
18 PATH_SEGMENT@[10; 29) 18 PATH_SEGMENT@10..29
19 NAME_REF@[10; 15) 19 NAME_REF@10..15
20 IDENT@[10; 15) "FnMut" 20 IDENT@10..15 "FnMut"
21 PARAM_LIST@[15; 29) 21 PARAM_LIST@15..29
22 L_PAREN@[15; 16) "(" 22 L_PAREN@15..16 "("
23 PARAM@[16; 28) 23 PARAM@16..28
24 REFERENCE_TYPE@[16; 28) 24 REFERENCE_TYPE@16..28
25 AMP@[16; 17) "&" 25 AMP@16..17 "&"
26 MUT_KW@[17; 20) "mut" 26 MUT_KW@17..20 "mut"
27 WHITESPACE@[20; 21) " " 27 WHITESPACE@20..21 " "
28 PATH_TYPE@[21; 28) 28 PATH_TYPE@21..28
29 PATH@[21; 28) 29 PATH@21..28
30 PATH_SEGMENT@[21; 28) 30 PATH_SEGMENT@21..28
31 NAME_REF@[21; 24) 31 NAME_REF@21..24
32 IDENT@[21; 24) "Foo" 32 IDENT@21..24 "Foo"
33 TYPE_ARG_LIST@[24; 28) 33 TYPE_ARG_LIST@24..28
34 L_ANGLE@[24; 25) "<" 34 L_ANGLE@24..25 "<"
35 LIFETIME_ARG@[25; 27) 35 LIFETIME_ARG@25..27
36 LIFETIME@[25; 27) "\'a" 36 LIFETIME@25..27 "\'a"
37 R_ANGLE@[27; 28) ">" 37 R_ANGLE@27..28 ">"
38 R_PAREN@[28; 29) ")" 38 R_PAREN@28..29 ")"
39 R_ANGLE@[29; 30) ">" 39 R_ANGLE@29..30 ">"
40 PARAM_LIST@[30; 32) 40 PARAM_LIST@30..32
41 L_PAREN@[30; 31) "(" 41 L_PAREN@30..31 "("
42 R_PAREN@[31; 32) ")" 42 R_PAREN@31..32 ")"
43 BLOCK_EXPR@[32; 34) 43 BLOCK_EXPR@32..34
44 BLOCK@[32; 34) 44 BLOCK@32..34
45 L_CURLY@[32; 33) "{" 45 L_CURLY@32..33 "{"
46 R_CURLY@[33; 34) "}" 46 R_CURLY@33..34 "}"
47 WHITESPACE@[34; 35) "\n" 47 WHITESPACE@34..35 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast
index 988b58d82..c28dc9d61 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast
@@ -1,20 +1,20 @@
1SOURCE_FILE@[0; 17) 1SOURCE_FILE@0..17
2 TYPE_ALIAS_DEF@[0; 16) 2 TYPE_ALIAS_DEF@0..16
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "T" 6 IDENT@5..6 "T"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 TUPLE_TYPE@[9; 15) 10 TUPLE_TYPE@9..15
11 L_PAREN@[9; 10) "(" 11 L_PAREN@9..10 "("
12 PATH_TYPE@[10; 13) 12 PATH_TYPE@10..13
13 PATH@[10; 13) 13 PATH@10..13
14 PATH_SEGMENT@[10; 13) 14 PATH_SEGMENT@10..13
15 NAME_REF@[10; 13) 15 NAME_REF@10..13
16 IDENT@[10; 13) "i32" 16 IDENT@10..13 "i32"
17 COMMA@[13; 14) "," 17 COMMA@13..14 ","
18 R_PAREN@[14; 15) ")" 18 R_PAREN@14..15 ")"
19 SEMICOLON@[15; 16) ";" 19 SEMICOLON@15..16 ";"
20 WHITESPACE@[16; 17) "\n" 20 WHITESPACE@16..17 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rast b/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rast
index 0a768a8e3..52de6023b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rast
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@0..27
2 IMPL_DEF@[0; 26) 2 IMPL_DEF@0..26
3 UNSAFE_KW@[0; 6) "unsafe" 3 UNSAFE_KW@0..6 "unsafe"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 DEFAULT_KW@[7; 14) "default" 5 DEFAULT_KW@7..14 "default"
6 WHITESPACE@[14; 15) " " 6 WHITESPACE@14..15 " "
7 IMPL_KW@[15; 19) "impl" 7 IMPL_KW@15..19 "impl"
8 WHITESPACE@[19; 20) " " 8 WHITESPACE@19..20 " "
9 PATH_TYPE@[20; 23) 9 PATH_TYPE@20..23
10 PATH@[20; 23) 10 PATH@20..23
11 PATH_SEGMENT@[20; 23) 11 PATH_SEGMENT@20..23
12 NAME_REF@[20; 23) 12 NAME_REF@20..23
13 IDENT@[20; 23) "Foo" 13 IDENT@20..23 "Foo"
14 WHITESPACE@[23; 24) " " 14 WHITESPACE@23..24 " "
15 ITEM_LIST@[24; 26) 15 ITEM_LIST@24..26
16 L_CURLY@[24; 25) "{" 16 L_CURLY@24..25 "{"
17 R_CURLY@[25; 26) "}" 17 R_CURLY@25..26 "}"
18 WHITESPACE@[26; 27) "\n" 18 WHITESPACE@26..27 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast b/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast
index 02f2a9db6..7f87e05ec 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast
@@ -1,83 +1,83 @@
1SOURCE_FILE@[0; 58) 1SOURCE_FILE@0..58
2 FN_DEF@[0; 26) 2 FN_DEF@0..26
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 RET_TYPE@[9; 23) 11 RET_TYPE@9..23
12 THIN_ARROW@[9; 11) "->" 12 THIN_ARROW@9..11 "->"
13 WHITESPACE@[11; 12) " " 13 WHITESPACE@11..12 " "
14 PATH_TYPE@[12; 23) 14 PATH_TYPE@12..23
15 PATH@[12; 23) 15 PATH@12..23
16 PATH_SEGMENT@[12; 23) 16 PATH_SEGMENT@12..23
17 NAME_REF@[12; 15) 17 NAME_REF@12..15
18 IDENT@[12; 15) "Box" 18 IDENT@12..15 "Box"
19 TYPE_ARG_LIST@[15; 23) 19 TYPE_ARG_LIST@15..23
20 L_ANGLE@[15; 16) "<" 20 L_ANGLE@15..16 "<"
21 TYPE_ARG@[16; 22) 21 TYPE_ARG@16..22
22 DYN_TRAIT_TYPE@[16; 22) 22 DYN_TRAIT_TYPE@16..22
23 TYPE_BOUND_LIST@[16; 22) 23 TYPE_BOUND_LIST@16..22
24 TYPE_BOUND@[16; 17) 24 TYPE_BOUND@16..17
25 PATH_TYPE@[16; 17) 25 PATH_TYPE@16..17
26 PATH@[16; 17) 26 PATH@16..17
27 PATH_SEGMENT@[16; 17) 27 PATH_SEGMENT@16..17
28 NAME_REF@[16; 17) 28 NAME_REF@16..17
29 IDENT@[16; 17) "T" 29 IDENT@16..17 "T"
30 WHITESPACE@[17; 18) " " 30 WHITESPACE@17..18 " "
31 PLUS@[18; 19) "+" 31 PLUS@18..19 "+"
32 WHITESPACE@[19; 20) " " 32 WHITESPACE@19..20 " "
33 TYPE_BOUND@[20; 22) 33 TYPE_BOUND@20..22
34 LIFETIME@[20; 22) "\'f" 34 LIFETIME@20..22 "\'f"
35 R_ANGLE@[22; 23) ">" 35 R_ANGLE@22..23 ">"
36 WHITESPACE@[23; 24) " " 36 WHITESPACE@23..24 " "
37 BLOCK_EXPR@[24; 26) 37 BLOCK_EXPR@24..26
38 BLOCK@[24; 26) 38 BLOCK@24..26
39 L_CURLY@[24; 25) "{" 39 L_CURLY@24..25 "{"
40 R_CURLY@[25; 26) "}" 40 R_CURLY@25..26 "}"
41 WHITESPACE@[26; 27) "\n" 41 WHITESPACE@26..27 "\n"
42 FN_DEF@[27; 57) 42 FN_DEF@27..57
43 FN_KW@[27; 29) "fn" 43 FN_KW@27..29 "fn"
44 WHITESPACE@[29; 30) " " 44 WHITESPACE@29..30 " "
45 NAME@[30; 33) 45 NAME@30..33
46 IDENT@[30; 33) "foo" 46 IDENT@30..33 "foo"
47 PARAM_LIST@[33; 35) 47 PARAM_LIST@33..35
48 L_PAREN@[33; 34) "(" 48 L_PAREN@33..34 "("
49 R_PAREN@[34; 35) ")" 49 R_PAREN@34..35 ")"
50 WHITESPACE@[35; 36) " " 50 WHITESPACE@35..36 " "
51 RET_TYPE@[36; 54) 51 RET_TYPE@36..54
52 THIN_ARROW@[36; 38) "->" 52 THIN_ARROW@36..38 "->"
53 WHITESPACE@[38; 39) " " 53 WHITESPACE@38..39 " "
54 PATH_TYPE@[39; 54) 54 PATH_TYPE@39..54
55 PATH@[39; 54) 55 PATH@39..54
56 PATH_SEGMENT@[39; 54) 56 PATH_SEGMENT@39..54
57 NAME_REF@[39; 42) 57 NAME_REF@39..42
58 IDENT@[39; 42) "Box" 58 IDENT@39..42 "Box"
59 TYPE_ARG_LIST@[42; 54) 59 TYPE_ARG_LIST@42..54
60 L_ANGLE@[42; 43) "<" 60 L_ANGLE@42..43 "<"
61 TYPE_ARG@[43; 53) 61 TYPE_ARG@43..53
62 DYN_TRAIT_TYPE@[43; 53) 62 DYN_TRAIT_TYPE@43..53
63 DYN_KW@[43; 46) "dyn" 63 DYN_KW@43..46 "dyn"
64 WHITESPACE@[46; 47) " " 64 WHITESPACE@46..47 " "
65 TYPE_BOUND_LIST@[47; 53) 65 TYPE_BOUND_LIST@47..53
66 TYPE_BOUND@[47; 48) 66 TYPE_BOUND@47..48
67 PATH_TYPE@[47; 48) 67 PATH_TYPE@47..48
68 PATH@[47; 48) 68 PATH@47..48
69 PATH_SEGMENT@[47; 48) 69 PATH_SEGMENT@47..48
70 NAME_REF@[47; 48) 70 NAME_REF@47..48
71 IDENT@[47; 48) "T" 71 IDENT@47..48 "T"
72 WHITESPACE@[48; 49) " " 72 WHITESPACE@48..49 " "
73 PLUS@[49; 50) "+" 73 PLUS@49..50 "+"
74 WHITESPACE@[50; 51) " " 74 WHITESPACE@50..51 " "
75 TYPE_BOUND@[51; 53) 75 TYPE_BOUND@51..53
76 LIFETIME@[51; 53) "\'f" 76 LIFETIME@51..53 "\'f"
77 R_ANGLE@[53; 54) ">" 77 R_ANGLE@53..54 ">"
78 WHITESPACE@[54; 55) " " 78 WHITESPACE@54..55 " "
79 BLOCK_EXPR@[55; 57) 79 BLOCK_EXPR@55..57
80 BLOCK@[55; 57) 80 BLOCK@55..57
81 L_CURLY@[55; 56) "{" 81 L_CURLY@55..56 "{"
82 R_CURLY@[56; 57) "}" 82 R_CURLY@56..57 "}"
83 WHITESPACE@[57; 58) "\n" 83 WHITESPACE@57..58 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rast b/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rast
index 036035f6c..8bf62cda9 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rast
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 22) 1SOURCE_FILE@0..22
2 TRAIT_DEF@[0; 21) 2 TRAIT_DEF@0..21
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "T" 6 IDENT@6..7 "T"
7 WHITESPACE@[7; 8) " " 7 WHITESPACE@7..8 " "
8 ITEM_LIST@[8; 21) 8 ITEM_LIST@8..21
9 L_CURLY@[8; 9) "{" 9 L_CURLY@8..9 "{"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 FN_DEF@[10; 19) 11 FN_DEF@10..19
12 FN_KW@[10; 12) "fn" 12 FN_KW@10..12 "fn"
13 WHITESPACE@[12; 13) " " 13 WHITESPACE@12..13 " "
14 NAME@[13; 16) 14 NAME@13..16
15 IDENT@[13; 16) "foo" 15 IDENT@13..16 "foo"
16 PARAM_LIST@[16; 18) 16 PARAM_LIST@16..18
17 L_PAREN@[16; 17) "(" 17 L_PAREN@16..17 "("
18 R_PAREN@[17; 18) ")" 18 R_PAREN@17..18 ")"
19 SEMICOLON@[18; 19) ";" 19 SEMICOLON@18..19 ";"
20 WHITESPACE@[19; 20) " " 20 WHITESPACE@19..20 " "
21 R_CURLY@[20; 21) "}" 21 R_CURLY@20..21 "}"
22 WHITESPACE@[21; 22) "\n" 22 WHITESPACE@21..22 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rast
index d9fc5eb8a..798ef2a48 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rast
@@ -1,14 +1,14 @@
1SOURCE_FILE@[0; 13) 1SOURCE_FILE@0..13
2 TYPE_ALIAS_DEF@[0; 12) 2 TYPE_ALIAS_DEF@0..12
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "T" 6 IDENT@5..6 "T"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 TUPLE_TYPE@[9; 11) 10 TUPLE_TYPE@9..11
11 L_PAREN@[9; 10) "(" 11 L_PAREN@9..10 "("
12 R_PAREN@[10; 11) ")" 12 R_PAREN@10..11 ")"
13 SEMICOLON@[11; 12) ";" 13 SEMICOLON@11..12 ";"
14 WHITESPACE@[12; 13) "\n" 14 WHITESPACE@12..13 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rast
index 8647c23bf..0d2f5ff56 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rast
@@ -1,70 +1,70 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@0..71
2 TYPE_ALIAS_DEF@[0; 13) 2 TYPE_ALIAS_DEF@0..13
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 PATH_TYPE@[9; 12) 10 PATH_TYPE@9..12
11 PATH@[9; 12) 11 PATH@9..12
12 PATH_SEGMENT@[9; 12) 12 PATH_SEGMENT@9..12
13 NAME_REF@[9; 12) 13 NAME_REF@9..12
14 IDENT@[9; 12) "Foo" 14 IDENT@9..12 "Foo"
15 SEMICOLON@[12; 13) ";" 15 SEMICOLON@12..13 ";"
16 WHITESPACE@[13; 14) "\n" 16 WHITESPACE@13..14 "\n"
17 TYPE_ALIAS_DEF@[14; 29) 17 TYPE_ALIAS_DEF@14..29
18 TYPE_KW@[14; 18) "type" 18 TYPE_KW@14..18 "type"
19 WHITESPACE@[18; 19) " " 19 WHITESPACE@18..19 " "
20 NAME@[19; 20) 20 NAME@19..20
21 IDENT@[19; 20) "B" 21 IDENT@19..20 "B"
22 WHITESPACE@[20; 21) " " 22 WHITESPACE@20..21 " "
23 EQ@[21; 22) "=" 23 EQ@21..22 "="
24 WHITESPACE@[22; 23) " " 24 WHITESPACE@22..23 " "
25 PATH_TYPE@[23; 28) 25 PATH_TYPE@23..28
26 PATH@[23; 28) 26 PATH@23..28
27 PATH_SEGMENT@[23; 28) 27 PATH_SEGMENT@23..28
28 COLON2@[23; 25) "::" 28 COLON2@23..25 "::"
29 NAME_REF@[25; 28) 29 NAME_REF@25..28
30 IDENT@[25; 28) "Foo" 30 IDENT@25..28 "Foo"
31 SEMICOLON@[28; 29) ";" 31 SEMICOLON@28..29 ";"
32 WHITESPACE@[29; 30) "\n" 32 WHITESPACE@29..30 "\n"
33 TYPE_ALIAS_DEF@[30; 49) 33 TYPE_ALIAS_DEF@30..49
34 TYPE_KW@[30; 34) "type" 34 TYPE_KW@30..34 "type"
35 WHITESPACE@[34; 35) " " 35 WHITESPACE@34..35 " "
36 NAME@[35; 36) 36 NAME@35..36
37 IDENT@[35; 36) "C" 37 IDENT@35..36 "C"
38 WHITESPACE@[36; 37) " " 38 WHITESPACE@36..37 " "
39 EQ@[37; 38) "=" 39 EQ@37..38 "="
40 WHITESPACE@[38; 39) " " 40 WHITESPACE@38..39 " "
41 PATH_TYPE@[39; 48) 41 PATH_TYPE@39..48
42 PATH@[39; 48) 42 PATH@39..48
43 PATH@[39; 43) 43 PATH@39..43
44 PATH_SEGMENT@[39; 43) 44 PATH_SEGMENT@39..43
45 SELF_KW@[39; 43) "self" 45 SELF_KW@39..43 "self"
46 COLON2@[43; 45) "::" 46 COLON2@43..45 "::"
47 PATH_SEGMENT@[45; 48) 47 PATH_SEGMENT@45..48
48 NAME_REF@[45; 48) 48 NAME_REF@45..48
49 IDENT@[45; 48) "Foo" 49 IDENT@45..48 "Foo"
50 SEMICOLON@[48; 49) ";" 50 SEMICOLON@48..49 ";"
51 WHITESPACE@[49; 50) "\n" 51 WHITESPACE@49..50 "\n"
52 TYPE_ALIAS_DEF@[50; 70) 52 TYPE_ALIAS_DEF@50..70
53 TYPE_KW@[50; 54) "type" 53 TYPE_KW@50..54 "type"
54 WHITESPACE@[54; 55) " " 54 WHITESPACE@54..55 " "
55 NAME@[55; 56) 55 NAME@55..56
56 IDENT@[55; 56) "D" 56 IDENT@55..56 "D"
57 WHITESPACE@[56; 57) " " 57 WHITESPACE@56..57 " "
58 EQ@[57; 58) "=" 58 EQ@57..58 "="
59 WHITESPACE@[58; 59) " " 59 WHITESPACE@58..59 " "
60 PATH_TYPE@[59; 69) 60 PATH_TYPE@59..69
61 PATH@[59; 69) 61 PATH@59..69
62 PATH@[59; 64) 62 PATH@59..64
63 PATH_SEGMENT@[59; 64) 63 PATH_SEGMENT@59..64
64 SUPER_KW@[59; 64) "super" 64 SUPER_KW@59..64 "super"
65 COLON2@[64; 66) "::" 65 COLON2@64..66 "::"
66 PATH_SEGMENT@[66; 69) 66 PATH_SEGMENT@66..69
67 NAME_REF@[66; 69) 67 NAME_REF@66..69
68 IDENT@[66; 69) "Foo" 68 IDENT@66..69 "Foo"
69 SEMICOLON@[69; 70) ";" 69 SEMICOLON@69..70 ";"
70 WHITESPACE@[70; 71) "\n" 70 WHITESPACE@70..71 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rast
index 690d8504e..5f846177e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rast
@@ -1,96 +1,96 @@
1SOURCE_FILE@[0; 91) 1SOURCE_FILE@0..91
2 FN_DEF@[0; 90) 2 FN_DEF@0..90
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 90) 11 BLOCK_EXPR@9..90
12 BLOCK@[9; 90) 12 BLOCK@9..90
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 25) 15 LET_STMT@15..25
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PLACEHOLDER_PAT@[19; 20) 18 PLACEHOLDER_PAT@19..20
19 UNDERSCORE@[19; 20) "_" 19 UNDERSCORE@19..20 "_"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 EQ@[21; 22) "=" 21 EQ@21..22 "="
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 PATH_EXPR@[23; 24) 23 PATH_EXPR@23..24
24 PATH@[23; 24) 24 PATH@23..24
25 PATH_SEGMENT@[23; 24) 25 PATH_SEGMENT@23..24
26 NAME_REF@[23; 24) 26 NAME_REF@23..24
27 IDENT@[23; 24) "a" 27 IDENT@23..24 "a"
28 SEMICOLON@[24; 25) ";" 28 SEMICOLON@24..25 ";"
29 WHITESPACE@[25; 30) "\n " 29 WHITESPACE@25..30 "\n "
30 LET_STMT@[30; 43) 30 LET_STMT@30..43
31 LET_KW@[30; 33) "let" 31 LET_KW@30..33 "let"
32 WHITESPACE@[33; 34) " " 32 WHITESPACE@33..34 " "
33 PLACEHOLDER_PAT@[34; 35) 33 PLACEHOLDER_PAT@34..35
34 UNDERSCORE@[34; 35) "_" 34 UNDERSCORE@34..35 "_"
35 WHITESPACE@[35; 36) " " 35 WHITESPACE@35..36 " "
36 EQ@[36; 37) "=" 36 EQ@36..37 "="
37 WHITESPACE@[37; 38) " " 37 WHITESPACE@37..38 " "
38 PATH_EXPR@[38; 42) 38 PATH_EXPR@38..42
39 PATH@[38; 42) 39 PATH@38..42
40 PATH@[38; 39) 40 PATH@38..39
41 PATH_SEGMENT@[38; 39) 41 PATH_SEGMENT@38..39
42 NAME_REF@[38; 39) 42 NAME_REF@38..39
43 IDENT@[38; 39) "a" 43 IDENT@38..39 "a"
44 COLON2@[39; 41) "::" 44 COLON2@39..41 "::"
45 PATH_SEGMENT@[41; 42) 45 PATH_SEGMENT@41..42
46 NAME_REF@[41; 42) 46 NAME_REF@41..42
47 IDENT@[41; 42) "b" 47 IDENT@41..42 "b"
48 SEMICOLON@[42; 43) ";" 48 SEMICOLON@42..43 ";"
49 WHITESPACE@[43; 48) "\n " 49 WHITESPACE@43..48 "\n "
50 LET_STMT@[48; 65) 50 LET_STMT@48..65
51 LET_KW@[48; 51) "let" 51 LET_KW@48..51 "let"
52 WHITESPACE@[51; 52) " " 52 WHITESPACE@51..52 " "
53 PLACEHOLDER_PAT@[52; 53) 53 PLACEHOLDER_PAT@52..53
54 UNDERSCORE@[52; 53) "_" 54 UNDERSCORE@52..53 "_"
55 WHITESPACE@[53; 54) " " 55 WHITESPACE@53..54 " "
56 EQ@[54; 55) "=" 56 EQ@54..55 "="
57 WHITESPACE@[55; 56) " " 57 WHITESPACE@55..56 " "
58 PATH_EXPR@[56; 64) 58 PATH_EXPR@56..64
59 PATH@[56; 64) 59 PATH@56..64
60 PATH_SEGMENT@[56; 64) 60 PATH_SEGMENT@56..64
61 COLON2@[56; 58) "::" 61 COLON2@56..58 "::"
62 NAME_REF@[58; 59) 62 NAME_REF@58..59
63 IDENT@[58; 59) "a" 63 IDENT@58..59 "a"
64 TYPE_ARG_LIST@[59; 64) 64 TYPE_ARG_LIST@59..64
65 COLON2@[59; 61) "::" 65 COLON2@59..61 "::"
66 L_ANGLE@[61; 62) "<" 66 L_ANGLE@61..62 "<"
67 TYPE_ARG@[62; 63) 67 TYPE_ARG@62..63
68 PATH_TYPE@[62; 63) 68 PATH_TYPE@62..63
69 PATH@[62; 63) 69 PATH@62..63
70 PATH_SEGMENT@[62; 63) 70 PATH_SEGMENT@62..63
71 NAME_REF@[62; 63) 71 NAME_REF@62..63
72 IDENT@[62; 63) "b" 72 IDENT@62..63 "b"
73 R_ANGLE@[63; 64) ">" 73 R_ANGLE@63..64 ">"
74 SEMICOLON@[64; 65) ";" 74 SEMICOLON@64..65 ";"
75 WHITESPACE@[65; 70) "\n " 75 WHITESPACE@65..70 "\n "
76 LET_STMT@[70; 88) 76 LET_STMT@70..88
77 LET_KW@[70; 73) "let" 77 LET_KW@70..73 "let"
78 WHITESPACE@[73; 74) " " 78 WHITESPACE@73..74 " "
79 PLACEHOLDER_PAT@[74; 75) 79 PLACEHOLDER_PAT@74..75
80 UNDERSCORE@[74; 75) "_" 80 UNDERSCORE@74..75 "_"
81 WHITESPACE@[75; 76) " " 81 WHITESPACE@75..76 " "
82 EQ@[76; 77) "=" 82 EQ@76..77 "="
83 WHITESPACE@[77; 78) " " 83 WHITESPACE@77..78 " "
84 MACRO_CALL@[78; 87) 84 MACRO_CALL@78..87
85 PATH@[78; 84) 85 PATH@78..84
86 PATH_SEGMENT@[78; 84) 86 PATH_SEGMENT@78..84
87 NAME_REF@[78; 84) 87 NAME_REF@78..84
88 IDENT@[78; 84) "format" 88 IDENT@78..84 "format"
89 BANG@[84; 85) "!" 89 BANG@84..85 "!"
90 TOKEN_TREE@[85; 87) 90 TOKEN_TREE@85..87
91 L_PAREN@[85; 86) "(" 91 L_PAREN@85..86 "("
92 R_PAREN@[86; 87) ")" 92 R_PAREN@86..87 ")"
93 SEMICOLON@[87; 88) ";" 93 SEMICOLON@87..88 ";"
94 WHITESPACE@[88; 89) "\n" 94 WHITESPACE@88..89 "\n"
95 R_CURLY@[89; 90) "}" 95 R_CURLY@89..90 "}"
96 WHITESPACE@[90; 91) "\n" 96 WHITESPACE@90..91 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast b/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast
index 731c31f76..6362aa02d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast
@@ -1,44 +1,44 @@
1SOURCE_FILE@[0; 64) 1SOURCE_FILE@0..64
2 STRUCT_DEF@[0; 63) 2 STRUCT_DEF@0..63
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 63) 8 RECORD_FIELD_DEF_LIST@9..63
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 60) 11 RECORD_FIELD_DEF@15..60
12 ATTR@[15; 43) 12 ATTR@15..43
13 POUND@[15; 16) "#" 13 POUND@15..16 "#"
14 L_BRACK@[16; 17) "[" 14 L_BRACK@16..17 "["
15 PATH@[17; 22) 15 PATH@17..22
16 PATH_SEGMENT@[17; 22) 16 PATH_SEGMENT@17..22
17 NAME_REF@[17; 22) 17 NAME_REF@17..22
18 IDENT@[17; 22) "serde" 18 IDENT@17..22 "serde"
19 TOKEN_TREE@[22; 42) 19 TOKEN_TREE@22..42
20 L_PAREN@[22; 23) "(" 20 L_PAREN@22..23 "("
21 IDENT@[23; 27) "with" 21 IDENT@23..27 "with"
22 WHITESPACE@[27; 28) " " 22 WHITESPACE@27..28 " "
23 EQ@[28; 29) "=" 23 EQ@28..29 "="
24 WHITESPACE@[29; 30) " " 24 WHITESPACE@29..30 " "
25 STRING@[30; 41) "\"url_serde\"" 25 STRING@30..41 "\"url_serde\""
26 R_PAREN@[41; 42) ")" 26 R_PAREN@41..42 ")"
27 R_BRACK@[42; 43) "]" 27 R_BRACK@42..43 "]"
28 WHITESPACE@[43; 48) "\n " 28 WHITESPACE@43..48 "\n "
29 VISIBILITY@[48; 51) 29 VISIBILITY@48..51
30 PUB_KW@[48; 51) "pub" 30 PUB_KW@48..51 "pub"
31 WHITESPACE@[51; 52) " " 31 WHITESPACE@51..52 " "
32 NAME@[52; 55) 32 NAME@52..55
33 IDENT@[52; 55) "uri" 33 IDENT@52..55 "uri"
34 COLON@[55; 56) ":" 34 COLON@55..56 ":"
35 WHITESPACE@[56; 57) " " 35 WHITESPACE@56..57 " "
36 PATH_TYPE@[57; 60) 36 PATH_TYPE@57..60
37 PATH@[57; 60) 37 PATH@57..60
38 PATH_SEGMENT@[57; 60) 38 PATH_SEGMENT@57..60
39 NAME_REF@[57; 60) 39 NAME_REF@57..60
40 IDENT@[57; 60) "Uri" 40 IDENT@57..60 "Uri"
41 COMMA@[60; 61) "," 41 COMMA@60..61 ","
42 WHITESPACE@[61; 62) "\n" 42 WHITESPACE@61..62 "\n"
43 R_CURLY@[62; 63) "}" 43 R_CURLY@62..63 "}"
44 WHITESPACE@[63; 64) "\n" 44 WHITESPACE@63..64 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rast b/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rast
index 2b28cec67..d9310e82e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rast
@@ -1,77 +1,77 @@
1SOURCE_FILE@[0; 113) 1SOURCE_FILE@0..113
2 FN_DEF@[0; 112) 2 FN_DEF@0..112
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 112) 11 BLOCK_EXPR@10..112
12 BLOCK@[10; 112) 12 BLOCK@10..112
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 MATCH_EXPR@[16; 110) 15 MATCH_EXPR@16..110
16 MATCH_KW@[16; 21) "match" 16 MATCH_KW@16..21 "match"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 TUPLE_EXPR@[22; 24) 18 TUPLE_EXPR@22..24
19 L_PAREN@[22; 23) "(" 19 L_PAREN@22..23 "("
20 R_PAREN@[23; 24) ")" 20 R_PAREN@23..24 ")"
21 WHITESPACE@[24; 25) " " 21 WHITESPACE@24..25 " "
22 MATCH_ARM_LIST@[25; 110) 22 MATCH_ARM_LIST@25..110
23 L_CURLY@[25; 26) "{" 23 L_CURLY@25..26 "{"
24 WHITESPACE@[26; 35) "\n " 24 WHITESPACE@26..35 "\n "
25 MATCH_ARM@[35; 43) 25 MATCH_ARM@35..43
26 LITERAL_PAT@[35; 37) 26 LITERAL_PAT@35..37
27 MINUS@[35; 36) "-" 27 MINUS@35..36 "-"
28 LITERAL@[36; 37) 28 LITERAL@36..37
29 INT_NUMBER@[36; 37) "1" 29 INT_NUMBER@36..37 "1"
30 WHITESPACE@[37; 38) " " 30 WHITESPACE@37..38 " "
31 FAT_ARROW@[38; 40) "=>" 31 FAT_ARROW@38..40 "=>"
32 WHITESPACE@[40; 41) " " 32 WHITESPACE@40..41 " "
33 TUPLE_EXPR@[41; 43) 33 TUPLE_EXPR@41..43
34 L_PAREN@[41; 42) "(" 34 L_PAREN@41..42 "("
35 R_PAREN@[42; 43) ")" 35 R_PAREN@42..43 ")"
36 COMMA@[43; 44) "," 36 COMMA@43..44 ","
37 WHITESPACE@[44; 53) "\n " 37 WHITESPACE@44..53 "\n "
38 MATCH_ARM@[53; 61) 38 MATCH_ARM@53..61
39 LITERAL_PAT@[53; 55) 39 LITERAL_PAT@53..55
40 LITERAL@[53; 55) 40 LITERAL@53..55
41 INT_NUMBER@[53; 55) "92" 41 INT_NUMBER@53..55 "92"
42 WHITESPACE@[55; 56) " " 42 WHITESPACE@55..56 " "
43 FAT_ARROW@[56; 58) "=>" 43 FAT_ARROW@56..58 "=>"
44 WHITESPACE@[58; 59) " " 44 WHITESPACE@58..59 " "
45 TUPLE_EXPR@[59; 61) 45 TUPLE_EXPR@59..61
46 L_PAREN@[59; 60) "(" 46 L_PAREN@59..60 "("
47 R_PAREN@[60; 61) ")" 47 R_PAREN@60..61 ")"
48 COMMA@[61; 62) "," 48 COMMA@61..62 ","
49 WHITESPACE@[62; 71) "\n " 49 WHITESPACE@62..71 "\n "
50 MATCH_ARM@[71; 80) 50 MATCH_ARM@71..80
51 LITERAL_PAT@[71; 74) 51 LITERAL_PAT@71..74
52 LITERAL@[71; 74) 52 LITERAL@71..74
53 CHAR@[71; 74) "\'c\'" 53 CHAR@71..74 "\'c\'"
54 WHITESPACE@[74; 75) " " 54 WHITESPACE@74..75 " "
55 FAT_ARROW@[75; 77) "=>" 55 FAT_ARROW@75..77 "=>"
56 WHITESPACE@[77; 78) " " 56 WHITESPACE@77..78 " "
57 TUPLE_EXPR@[78; 80) 57 TUPLE_EXPR@78..80
58 L_PAREN@[78; 79) "(" 58 L_PAREN@78..79 "("
59 R_PAREN@[79; 80) ")" 59 R_PAREN@79..80 ")"
60 COMMA@[80; 81) "," 60 COMMA@80..81 ","
61 WHITESPACE@[81; 90) "\n " 61 WHITESPACE@81..90 "\n "
62 MATCH_ARM@[90; 103) 62 MATCH_ARM@90..103
63 LITERAL_PAT@[90; 97) 63 LITERAL_PAT@90..97
64 LITERAL@[90; 97) 64 LITERAL@90..97
65 STRING@[90; 97) "\"hello\"" 65 STRING@90..97 "\"hello\""
66 WHITESPACE@[97; 98) " " 66 WHITESPACE@97..98 " "
67 FAT_ARROW@[98; 100) "=>" 67 FAT_ARROW@98..100 "=>"
68 WHITESPACE@[100; 101) " " 68 WHITESPACE@100..101 " "
69 TUPLE_EXPR@[101; 103) 69 TUPLE_EXPR@101..103
70 L_PAREN@[101; 102) "(" 70 L_PAREN@101..102 "("
71 R_PAREN@[102; 103) ")" 71 R_PAREN@102..103 ")"
72 COMMA@[103; 104) "," 72 COMMA@103..104 ","
73 WHITESPACE@[104; 109) "\n " 73 WHITESPACE@104..109 "\n "
74 R_CURLY@[109; 110) "}" 74 R_CURLY@109..110 "}"
75 WHITESPACE@[110; 111) "\n" 75 WHITESPACE@110..111 "\n"
76 R_CURLY@[111; 112) "}" 76 R_CURLY@111..112 "}"
77 WHITESPACE@[112; 113) "\n" 77 WHITESPACE@112..113 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rast b/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rast
index c6082791a..2e727c1ef 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rast
@@ -1,111 +1,111 @@
1SOURCE_FILE@[0; 116) 1SOURCE_FILE@0..116
2 FN_DEF@[0; 115) 2 FN_DEF@0..115
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) "\n" 10 WHITESPACE@8..9 "\n"
11 WHERE_CLAUSE@[9; 112) 11 WHERE_CLAUSE@9..112
12 WHERE_KW@[9; 14) "where" 12 WHERE_KW@9..14 "where"
13 WHITESPACE@[14; 18) "\n " 13 WHITESPACE@14..18 "\n "
14 WHERE_PRED@[18; 29) 14 WHERE_PRED@18..29
15 LIFETIME@[18; 20) "\'a" 15 LIFETIME@18..20 "\'a"
16 COLON@[20; 21) ":" 16 COLON@20..21 ":"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 TYPE_BOUND_LIST@[22; 29) 18 TYPE_BOUND_LIST@22..29
19 TYPE_BOUND@[22; 24) 19 TYPE_BOUND@22..24
20 LIFETIME@[22; 24) "\'b" 20 LIFETIME@22..24 "\'b"
21 WHITESPACE@[24; 25) " " 21 WHITESPACE@24..25 " "
22 PLUS@[25; 26) "+" 22 PLUS@25..26 "+"
23 WHITESPACE@[26; 27) " " 23 WHITESPACE@26..27 " "
24 TYPE_BOUND@[27; 29) 24 TYPE_BOUND@27..29
25 LIFETIME@[27; 29) "\'c" 25 LIFETIME@27..29 "\'c"
26 COMMA@[29; 30) "," 26 COMMA@29..30 ","
27 WHITESPACE@[30; 34) "\n " 27 WHITESPACE@30..34 "\n "
28 WHERE_PRED@[34; 59) 28 WHERE_PRED@34..59
29 PATH_TYPE@[34; 35) 29 PATH_TYPE@34..35
30 PATH@[34; 35) 30 PATH@34..35
31 PATH_SEGMENT@[34; 35) 31 PATH_SEGMENT@34..35
32 NAME_REF@[34; 35) 32 NAME_REF@34..35
33 IDENT@[34; 35) "T" 33 IDENT@34..35 "T"
34 COLON@[35; 36) ":" 34 COLON@35..36 ":"
35 WHITESPACE@[36; 37) " " 35 WHITESPACE@36..37 " "
36 TYPE_BOUND_LIST@[37; 59) 36 TYPE_BOUND_LIST@37..59
37 TYPE_BOUND@[37; 42) 37 TYPE_BOUND@37..42
38 PATH_TYPE@[37; 42) 38 PATH_TYPE@37..42
39 PATH@[37; 42) 39 PATH@37..42
40 PATH_SEGMENT@[37; 42) 40 PATH_SEGMENT@37..42
41 NAME_REF@[37; 42) 41 NAME_REF@37..42
42 IDENT@[37; 42) "Clone" 42 IDENT@37..42 "Clone"
43 WHITESPACE@[42; 43) " " 43 WHITESPACE@42..43 " "
44 PLUS@[43; 44) "+" 44 PLUS@43..44 "+"
45 WHITESPACE@[44; 45) " " 45 WHITESPACE@44..45 " "
46 TYPE_BOUND@[45; 49) 46 TYPE_BOUND@45..49
47 PATH_TYPE@[45; 49) 47 PATH_TYPE@45..49
48 PATH@[45; 49) 48 PATH@45..49
49 PATH_SEGMENT@[45; 49) 49 PATH_SEGMENT@45..49
50 NAME_REF@[45; 49) 50 NAME_REF@45..49
51 IDENT@[45; 49) "Copy" 51 IDENT@45..49 "Copy"
52 WHITESPACE@[49; 50) " " 52 WHITESPACE@49..50 " "
53 PLUS@[50; 51) "+" 53 PLUS@50..51 "+"
54 WHITESPACE@[51; 52) " " 54 WHITESPACE@51..52 " "
55 TYPE_BOUND@[52; 59) 55 TYPE_BOUND@52..59
56 LIFETIME@[52; 59) "\'static" 56 LIFETIME@52..59 "\'static"
57 COMMA@[59; 60) "," 57 COMMA@59..60 ","
58 WHITESPACE@[60; 64) "\n " 58 WHITESPACE@60..64 "\n "
59 WHERE_PRED@[64; 82) 59 WHERE_PRED@64..82
60 PATH_TYPE@[64; 78) 60 PATH_TYPE@64..78
61 PATH@[64; 78) 61 PATH@64..78
62 PATH@[64; 72) 62 PATH@64..72
63 PATH_SEGMENT@[64; 72) 63 PATH_SEGMENT@64..72
64 NAME_REF@[64; 72) 64 NAME_REF@64..72
65 IDENT@[64; 72) "Iterator" 65 IDENT@64..72 "Iterator"
66 COLON2@[72; 74) "::" 66 COLON2@72..74 "::"
67 PATH_SEGMENT@[74; 78) 67 PATH_SEGMENT@74..78
68 NAME_REF@[74; 78) 68 NAME_REF@74..78
69 IDENT@[74; 78) "Item" 69 IDENT@74..78 "Item"
70 COLON@[78; 79) ":" 70 COLON@78..79 ":"
71 WHITESPACE@[79; 80) " " 71 WHITESPACE@79..80 " "
72 TYPE_BOUND_LIST@[80; 82) 72 TYPE_BOUND_LIST@80..82
73 TYPE_BOUND@[80; 82) 73 TYPE_BOUND@80..82
74 LIFETIME@[80; 82) "\'a" 74 LIFETIME@80..82 "\'a"
75 COMMA@[82; 83) "," 75 COMMA@82..83 ","
76 WHITESPACE@[83; 87) "\n " 76 WHITESPACE@83..87 "\n "
77 WHERE_PRED@[87; 112) 77 WHERE_PRED@87..112
78 PATH_TYPE@[87; 108) 78 PATH_TYPE@87..108
79 PATH@[87; 108) 79 PATH@87..108
80 PATH@[87; 102) 80 PATH@87..102
81 PATH_SEGMENT@[87; 102) 81 PATH_SEGMENT@87..102
82 L_ANGLE@[87; 88) "<" 82 L_ANGLE@87..88 "<"
83 PATH_TYPE@[88; 89) 83 PATH_TYPE@88..89
84 PATH@[88; 89) 84 PATH@88..89
85 PATH_SEGMENT@[88; 89) 85 PATH_SEGMENT@88..89
86 NAME_REF@[88; 89) 86 NAME_REF@88..89
87 IDENT@[88; 89) "T" 87 IDENT@88..89 "T"
88 WHITESPACE@[89; 90) " " 88 WHITESPACE@89..90 " "
89 AS_KW@[90; 92) "as" 89 AS_KW@90..92 "as"
90 WHITESPACE@[92; 93) " " 90 WHITESPACE@92..93 " "
91 PATH_TYPE@[93; 101) 91 PATH_TYPE@93..101
92 PATH@[93; 101) 92 PATH@93..101
93 PATH_SEGMENT@[93; 101) 93 PATH_SEGMENT@93..101
94 NAME_REF@[93; 101) 94 NAME_REF@93..101
95 IDENT@[93; 101) "Iterator" 95 IDENT@93..101 "Iterator"
96 R_ANGLE@[101; 102) ">" 96 R_ANGLE@101..102 ">"
97 COLON2@[102; 104) "::" 97 COLON2@102..104 "::"
98 PATH_SEGMENT@[104; 108) 98 PATH_SEGMENT@104..108
99 NAME_REF@[104; 108) 99 NAME_REF@104..108
100 IDENT@[104; 108) "Item" 100 IDENT@104..108 "Item"
101 COLON@[108; 109) ":" 101 COLON@108..109 ":"
102 WHITESPACE@[109; 110) " " 102 WHITESPACE@109..110 " "
103 TYPE_BOUND_LIST@[110; 112) 103 TYPE_BOUND_LIST@110..112
104 TYPE_BOUND@[110; 112) 104 TYPE_BOUND@110..112
105 LIFETIME@[110; 112) "\'a" 105 LIFETIME@110..112 "\'a"
106 WHITESPACE@[112; 113) "\n" 106 WHITESPACE@112..113 "\n"
107 BLOCK_EXPR@[113; 115) 107 BLOCK_EXPR@113..115
108 BLOCK@[113; 115) 108 BLOCK@113..115
109 L_CURLY@[113; 114) "{" 109 L_CURLY@113..114 "{"
110 R_CURLY@[114; 115) "}" 110 R_CURLY@114..115 "}"
111 WHITESPACE@[115; 116) "\n" 111 WHITESPACE@115..116 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rast b/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rast
index 9788197be..c1e58f9bf 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rast
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@0..18
2 FN_DEF@[0; 17) 2 FN_DEF@0..17
3 CONST_KW@[0; 5) "const" 3 CONST_KW@0..5 "const"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 FN_KW@[6; 8) "fn" 5 FN_KW@6..8 "fn"
6 WHITESPACE@[8; 9) " " 6 WHITESPACE@8..9 " "
7 NAME@[9; 12) 7 NAME@9..12
8 IDENT@[9; 12) "foo" 8 IDENT@9..12 "foo"
9 PARAM_LIST@[12; 14) 9 PARAM_LIST@12..14
10 L_PAREN@[12; 13) "(" 10 L_PAREN@12..13 "("
11 R_PAREN@[13; 14) ")" 11 R_PAREN@13..14 ")"
12 WHITESPACE@[14; 15) " " 12 WHITESPACE@14..15 " "
13 BLOCK_EXPR@[15; 17) 13 BLOCK_EXPR@15..17
14 BLOCK@[15; 17) 14 BLOCK@15..17
15 L_CURLY@[15; 16) "{" 15 L_CURLY@15..16 "{"
16 R_CURLY@[16; 17) "}" 16 R_CURLY@16..17 "}"
17 WHITESPACE@[17; 18) "\n" 17 WHITESPACE@17..18 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rast
index 8d7083e97..9bdf2379f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rast
@@ -1,83 +1,83 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@0..112
2 FN_DEF@[0; 111) 2 FN_DEF@0..111
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 111) 11 BLOCK_EXPR@10..111
12 BLOCK@[10; 111) 12 BLOCK@10..111
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 MATCH_EXPR@[16; 109) 15 MATCH_EXPR@16..109
16 MATCH_KW@[16; 21) "match" 16 MATCH_KW@16..21 "match"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 LITERAL@[22; 24) 18 LITERAL@22..24
19 INT_NUMBER@[22; 24) "92" 19 INT_NUMBER@22..24 "92"
20 WHITESPACE@[24; 25) " " 20 WHITESPACE@24..25 " "
21 MATCH_ARM_LIST@[25; 109) 21 MATCH_ARM_LIST@25..109
22 L_CURLY@[25; 26) "{" 22 L_CURLY@25..26 "{"
23 WHITESPACE@[26; 35) "\n " 23 WHITESPACE@26..35 "\n "
24 MATCH_ARM@[35; 50) 24 MATCH_ARM@35..50
25 RANGE_PAT@[35; 44) 25 RANGE_PAT@35..44
26 LITERAL_PAT@[35; 36) 26 LITERAL_PAT@35..36
27 LITERAL@[35; 36) 27 LITERAL@35..36
28 INT_NUMBER@[35; 36) "0" 28 INT_NUMBER@35..36 "0"
29 WHITESPACE@[36; 37) " " 29 WHITESPACE@36..37 " "
30 DOT3@[37; 40) "..." 30 DOT3@37..40 "..."
31 WHITESPACE@[40; 41) " " 31 WHITESPACE@40..41 " "
32 LITERAL_PAT@[41; 44) 32 LITERAL_PAT@41..44
33 LITERAL@[41; 44) 33 LITERAL@41..44
34 INT_NUMBER@[41; 44) "100" 34 INT_NUMBER@41..44 "100"
35 WHITESPACE@[44; 45) " " 35 WHITESPACE@44..45 " "
36 FAT_ARROW@[45; 47) "=>" 36 FAT_ARROW@45..47 "=>"
37 WHITESPACE@[47; 48) " " 37 WHITESPACE@47..48 " "
38 TUPLE_EXPR@[48; 50) 38 TUPLE_EXPR@48..50
39 L_PAREN@[48; 49) "(" 39 L_PAREN@48..49 "("
40 R_PAREN@[49; 50) ")" 40 R_PAREN@49..50 ")"
41 COMMA@[50; 51) "," 41 COMMA@50..51 ","
42 WHITESPACE@[51; 60) "\n " 42 WHITESPACE@51..60 "\n "
43 MATCH_ARM@[60; 77) 43 MATCH_ARM@60..77
44 RANGE_PAT@[60; 71) 44 RANGE_PAT@60..71
45 LITERAL_PAT@[60; 63) 45 LITERAL_PAT@60..63
46 LITERAL@[60; 63) 46 LITERAL@60..63
47 INT_NUMBER@[60; 63) "101" 47 INT_NUMBER@60..63 "101"
48 WHITESPACE@[63; 64) " " 48 WHITESPACE@63..64 " "
49 DOT2EQ@[64; 67) "..=" 49 DOT2EQ@64..67 "..="
50 WHITESPACE@[67; 68) " " 50 WHITESPACE@67..68 " "
51 LITERAL_PAT@[68; 71) 51 LITERAL_PAT@68..71
52 LITERAL@[68; 71) 52 LITERAL@68..71
53 INT_NUMBER@[68; 71) "200" 53 INT_NUMBER@68..71 "200"
54 WHITESPACE@[71; 72) " " 54 WHITESPACE@71..72 " "
55 FAT_ARROW@[72; 74) "=>" 55 FAT_ARROW@72..74 "=>"
56 WHITESPACE@[74; 75) " " 56 WHITESPACE@74..75 " "
57 TUPLE_EXPR@[75; 77) 57 TUPLE_EXPR@75..77
58 L_PAREN@[75; 76) "(" 58 L_PAREN@75..76 "("
59 R_PAREN@[76; 77) ")" 59 R_PAREN@76..77 ")"
60 COMMA@[77; 78) "," 60 COMMA@77..78 ","
61 WHITESPACE@[78; 87) "\n " 61 WHITESPACE@78..87 "\n "
62 MATCH_ARM@[87; 102) 62 MATCH_ARM@87..102
63 RANGE_PAT@[87; 97) 63 RANGE_PAT@87..97
64 LITERAL_PAT@[87; 90) 64 LITERAL_PAT@87..90
65 LITERAL@[87; 90) 65 LITERAL@87..90
66 INT_NUMBER@[87; 90) "200" 66 INT_NUMBER@87..90 "200"
67 WHITESPACE@[90; 91) " " 67 WHITESPACE@90..91 " "
68 DOT2@[91; 93) ".." 68 DOT2@91..93 ".."
69 WHITESPACE@[93; 94) " " 69 WHITESPACE@93..94 " "
70 LITERAL_PAT@[94; 97) 70 LITERAL_PAT@94..97
71 LITERAL@[94; 97) 71 LITERAL@94..97
72 INT_NUMBER@[94; 97) "301" 72 INT_NUMBER@94..97 "301"
73 FAT_ARROW@[97; 99) "=>" 73 FAT_ARROW@97..99 "=>"
74 WHITESPACE@[99; 100) " " 74 WHITESPACE@99..100 " "
75 TUPLE_EXPR@[100; 102) 75 TUPLE_EXPR@100..102
76 L_PAREN@[100; 101) "(" 76 L_PAREN@100..101 "("
77 R_PAREN@[101; 102) ")" 77 R_PAREN@101..102 ")"
78 COMMA@[102; 103) "," 78 COMMA@102..103 ","
79 WHITESPACE@[103; 108) "\n " 79 WHITESPACE@103..108 "\n "
80 R_CURLY@[108; 109) "}" 80 R_CURLY@108..109 "}"
81 WHITESPACE@[109; 110) "\n" 81 WHITESPACE@109..110 "\n"
82 R_CURLY@[110; 111) "}" 82 R_CURLY@110..111 "}"
83 WHITESPACE@[111; 112) "\n" 83 WHITESPACE@111..112 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast b/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast
index efcd89c4c..e9ca92364 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast
@@ -1,60 +1,60 @@
1SOURCE_FILE@[0; 83) 1SOURCE_FILE@0..83
2 FN_DEF@[0; 82) 2 FN_DEF@0..82
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 82) 11 BLOCK_EXPR@9..82
12 BLOCK@[9; 82) 12 BLOCK@9..82
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 MATCH_EXPR@[15; 80) 15 MATCH_EXPR@15..80
16 MATCH_KW@[15; 20) "match" 16 MATCH_KW@15..20 "match"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@21..23
19 L_PAREN@[21; 22) "(" 19 L_PAREN@21..22 "("
20 R_PAREN@[22; 23) ")" 20 R_PAREN@22..23 ")"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 MATCH_ARM_LIST@[24; 80) 22 MATCH_ARM_LIST@24..80
23 L_CURLY@[24; 25) "{" 23 L_CURLY@24..25 "{"
24 WHITESPACE@[25; 34) "\n " 24 WHITESPACE@25..34 "\n "
25 MATCH_ARM@[34; 41) 25 MATCH_ARM@34..41
26 PLACEHOLDER_PAT@[34; 35) 26 PLACEHOLDER_PAT@34..35
27 UNDERSCORE@[34; 35) "_" 27 UNDERSCORE@34..35 "_"
28 WHITESPACE@[35; 36) " " 28 WHITESPACE@35..36 " "
29 FAT_ARROW@[36; 38) "=>" 29 FAT_ARROW@36..38 "=>"
30 WHITESPACE@[38; 39) " " 30 WHITESPACE@38..39 " "
31 TUPLE_EXPR@[39; 41) 31 TUPLE_EXPR@39..41
32 L_PAREN@[39; 40) "(" 32 L_PAREN@39..40 "("
33 R_PAREN@[40; 41) ")" 33 R_PAREN@40..41 ")"
34 COMMA@[41; 42) "," 34 COMMA@41..42 ","
35 WHITESPACE@[42; 51) "\n " 35 WHITESPACE@42..51 "\n "
36 MATCH_ARM@[51; 58) 36 MATCH_ARM@51..58
37 PLACEHOLDER_PAT@[51; 52) 37 PLACEHOLDER_PAT@51..52
38 UNDERSCORE@[51; 52) "_" 38 UNDERSCORE@51..52 "_"
39 WHITESPACE@[52; 53) " " 39 WHITESPACE@52..53 " "
40 FAT_ARROW@[53; 55) "=>" 40 FAT_ARROW@53..55 "=>"
41 WHITESPACE@[55; 56) " " 41 WHITESPACE@55..56 " "
42 BLOCK_EXPR@[56; 58) 42 BLOCK_EXPR@56..58
43 BLOCK@[56; 58) 43 BLOCK@56..58
44 L_CURLY@[56; 57) "{" 44 L_CURLY@56..57 "{"
45 R_CURLY@[57; 58) "}" 45 R_CURLY@57..58 "}"
46 WHITESPACE@[58; 67) "\n " 46 WHITESPACE@58..67 "\n "
47 MATCH_ARM@[67; 74) 47 MATCH_ARM@67..74
48 PLACEHOLDER_PAT@[67; 68) 48 PLACEHOLDER_PAT@67..68
49 UNDERSCORE@[67; 68) "_" 49 UNDERSCORE@67..68 "_"
50 WHITESPACE@[68; 69) " " 50 WHITESPACE@68..69 " "
51 FAT_ARROW@[69; 71) "=>" 51 FAT_ARROW@69..71 "=>"
52 WHITESPACE@[71; 72) " " 52 WHITESPACE@71..72 " "
53 TUPLE_EXPR@[72; 74) 53 TUPLE_EXPR@72..74
54 L_PAREN@[72; 73) "(" 54 L_PAREN@72..73 "("
55 R_PAREN@[73; 74) ")" 55 R_PAREN@73..74 ")"
56 WHITESPACE@[74; 79) "\n " 56 WHITESPACE@74..79 "\n "
57 R_CURLY@[79; 80) "}" 57 R_CURLY@79..80 "}"
58 WHITESPACE@[80; 81) "\n" 58 WHITESPACE@80..81 "\n"
59 R_CURLY@[81; 82) "}" 59 R_CURLY@81..82 "}"
60 WHITESPACE@[82; 83) "\n" 60 WHITESPACE@82..83 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rast b/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rast
index c6e4ee532..d06fc0be5 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rast
@@ -1,10 +1,10 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@0..18
2 EXTERN_CRATE_ITEM@[0; 17) 2 EXTERN_CRATE_ITEM@0..17
3 EXTERN_KW@[0; 6) "extern" 3 EXTERN_KW@0..6 "extern"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 CRATE_KW@[7; 12) "crate" 5 CRATE_KW@7..12 "crate"
6 WHITESPACE@[12; 13) " " 6 WHITESPACE@12..13 " "
7 NAME_REF@[13; 16) 7 NAME_REF@13..16
8 IDENT@[13; 16) "foo" 8 IDENT@13..16 "foo"
9 SEMICOLON@[16; 17) ";" 9 SEMICOLON@16..17 ";"
10 WHITESPACE@[17; 18) "\n" 10 WHITESPACE@17..18 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0061_record_lit.rast b/crates/ra_syntax/test_data/parser/inline/ok/0061_record_lit.rast
index 89a611799..15d332938 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0061_record_lit.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0061_record_lit.rast
@@ -1,125 +1,125 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@0..112
2 FN_DEF@[0; 111) 2 FN_DEF@0..111
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 111) 11 BLOCK_EXPR@9..111
12 BLOCK@[9; 111) 12 BLOCK@9..111
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 20) 15 EXPR_STMT@15..20
16 RECORD_LIT@[15; 19) 16 RECORD_LIT@15..19
17 PATH@[15; 16) 17 PATH@15..16
18 PATH_SEGMENT@[15; 16) 18 PATH_SEGMENT@15..16
19 NAME_REF@[15; 16) 19 NAME_REF@15..16
20 IDENT@[15; 16) "S" 20 IDENT@15..16 "S"
21 WHITESPACE@[16; 17) " " 21 WHITESPACE@16..17 " "
22 RECORD_FIELD_LIST@[17; 19) 22 RECORD_FIELD_LIST@17..19
23 L_CURLY@[17; 18) "{" 23 L_CURLY@17..18 "{"
24 R_CURLY@[18; 19) "}" 24 R_CURLY@18..19 "}"
25 SEMICOLON@[19; 20) ";" 25 SEMICOLON@19..20 ";"
26 WHITESPACE@[20; 25) "\n " 26 WHITESPACE@20..25 "\n "
27 EXPR_STMT@[25; 41) 27 EXPR_STMT@25..41
28 RECORD_LIT@[25; 40) 28 RECORD_LIT@25..40
29 PATH@[25; 26) 29 PATH@25..26
30 PATH_SEGMENT@[25; 26) 30 PATH_SEGMENT@25..26
31 NAME_REF@[25; 26) 31 NAME_REF@25..26
32 IDENT@[25; 26) "S" 32 IDENT@25..26 "S"
33 WHITESPACE@[26; 27) " " 33 WHITESPACE@26..27 " "
34 RECORD_FIELD_LIST@[27; 40) 34 RECORD_FIELD_LIST@27..40
35 L_CURLY@[27; 28) "{" 35 L_CURLY@27..28 "{"
36 WHITESPACE@[28; 29) " " 36 WHITESPACE@28..29 " "
37 RECORD_FIELD@[29; 30) 37 RECORD_FIELD@29..30
38 PATH_EXPR@[29; 30) 38 PATH_EXPR@29..30
39 PATH@[29; 30) 39 PATH@29..30
40 PATH_SEGMENT@[29; 30) 40 PATH_SEGMENT@29..30
41 NAME_REF@[29; 30) 41 NAME_REF@29..30
42 IDENT@[29; 30) "x" 42 IDENT@29..30 "x"
43 COMMA@[30; 31) "," 43 COMMA@30..31 ","
44 WHITESPACE@[31; 32) " " 44 WHITESPACE@31..32 " "
45 RECORD_FIELD@[32; 37) 45 RECORD_FIELD@32..37
46 NAME_REF@[32; 33) 46 NAME_REF@32..33
47 IDENT@[32; 33) "y" 47 IDENT@32..33 "y"
48 COLON@[33; 34) ":" 48 COLON@33..34 ":"
49 WHITESPACE@[34; 35) " " 49 WHITESPACE@34..35 " "
50 LITERAL@[35; 37) 50 LITERAL@35..37
51 INT_NUMBER@[35; 37) "32" 51 INT_NUMBER@35..37 "32"
52 COMMA@[37; 38) "," 52 COMMA@37..38 ","
53 WHITESPACE@[38; 39) " " 53 WHITESPACE@38..39 " "
54 R_CURLY@[39; 40) "}" 54 R_CURLY@39..40 "}"
55 SEMICOLON@[40; 41) ";" 55 SEMICOLON@40..41 ";"
56 WHITESPACE@[41; 46) "\n " 56 WHITESPACE@41..46 "\n "
57 EXPR_STMT@[46; 83) 57 EXPR_STMT@46..83
58 RECORD_LIT@[46; 82) 58 RECORD_LIT@46..82
59 PATH@[46; 47) 59 PATH@46..47
60 PATH_SEGMENT@[46; 47) 60 PATH_SEGMENT@46..47
61 NAME_REF@[46; 47) 61 NAME_REF@46..47
62 IDENT@[46; 47) "S" 62 IDENT@46..47 "S"
63 WHITESPACE@[47; 48) " " 63 WHITESPACE@47..48 " "
64 RECORD_FIELD_LIST@[48; 82) 64 RECORD_FIELD_LIST@48..82
65 L_CURLY@[48; 49) "{" 65 L_CURLY@48..49 "{"
66 WHITESPACE@[49; 50) " " 66 WHITESPACE@49..50 " "
67 RECORD_FIELD@[50; 51) 67 RECORD_FIELD@50..51
68 PATH_EXPR@[50; 51) 68 PATH_EXPR@50..51
69 PATH@[50; 51) 69 PATH@50..51
70 PATH_SEGMENT@[50; 51) 70 PATH_SEGMENT@50..51
71 NAME_REF@[50; 51) 71 NAME_REF@50..51
72 IDENT@[50; 51) "x" 72 IDENT@50..51 "x"
73 COMMA@[51; 52) "," 73 COMMA@51..52 ","
74 WHITESPACE@[52; 53) " " 74 WHITESPACE@52..53 " "
75 RECORD_FIELD@[53; 58) 75 RECORD_FIELD@53..58
76 NAME_REF@[53; 54) 76 NAME_REF@53..54
77 IDENT@[53; 54) "y" 77 IDENT@53..54 "y"
78 COLON@[54; 55) ":" 78 COLON@54..55 ":"
79 WHITESPACE@[55; 56) " " 79 WHITESPACE@55..56 " "
80 LITERAL@[56; 58) 80 LITERAL@56..58
81 INT_NUMBER@[56; 58) "32" 81 INT_NUMBER@56..58 "32"
82 COMMA@[58; 59) "," 82 COMMA@58..59 ","
83 WHITESPACE@[59; 60) " " 83 WHITESPACE@59..60 " "
84 DOT2@[60; 62) ".." 84 DOT2@60..62 ".."
85 CALL_EXPR@[62; 80) 85 CALL_EXPR@62..80
86 PATH_EXPR@[62; 78) 86 PATH_EXPR@62..78
87 PATH@[62; 78) 87 PATH@62..78
88 PATH@[62; 69) 88 PATH@62..69
89 PATH_SEGMENT@[62; 69) 89 PATH_SEGMENT@62..69
90 NAME_REF@[62; 69) 90 NAME_REF@62..69
91 IDENT@[62; 69) "Default" 91 IDENT@62..69 "Default"
92 COLON2@[69; 71) "::" 92 COLON2@69..71 "::"
93 PATH_SEGMENT@[71; 78) 93 PATH_SEGMENT@71..78
94 NAME_REF@[71; 78) 94 NAME_REF@71..78
95 IDENT@[71; 78) "default" 95 IDENT@71..78 "default"
96 ARG_LIST@[78; 80) 96 ARG_LIST@78..80
97 L_PAREN@[78; 79) "(" 97 L_PAREN@78..79 "("
98 R_PAREN@[79; 80) ")" 98 R_PAREN@79..80 ")"
99 WHITESPACE@[80; 81) " " 99 WHITESPACE@80..81 " "
100 R_CURLY@[81; 82) "}" 100 R_CURLY@81..82 "}"
101 SEMICOLON@[82; 83) ";" 101 SEMICOLON@82..83 ";"
102 WHITESPACE@[83; 88) "\n " 102 WHITESPACE@83..88 "\n "
103 EXPR_STMT@[88; 109) 103 EXPR_STMT@88..109
104 RECORD_LIT@[88; 108) 104 RECORD_LIT@88..108
105 PATH@[88; 99) 105 PATH@88..99
106 PATH_SEGMENT@[88; 99) 106 PATH_SEGMENT@88..99
107 NAME_REF@[88; 99) 107 NAME_REF@88..99
108 IDENT@[88; 99) "TupleStruct" 108 IDENT@88..99 "TupleStruct"
109 WHITESPACE@[99; 100) " " 109 WHITESPACE@99..100 " "
110 RECORD_FIELD_LIST@[100; 108) 110 RECORD_FIELD_LIST@100..108
111 L_CURLY@[100; 101) "{" 111 L_CURLY@100..101 "{"
112 WHITESPACE@[101; 102) " " 112 WHITESPACE@101..102 " "
113 RECORD_FIELD@[102; 106) 113 RECORD_FIELD@102..106
114 NAME_REF@[102; 103) 114 NAME_REF@102..103
115 INT_NUMBER@[102; 103) "0" 115 INT_NUMBER@102..103 "0"
116 COLON@[103; 104) ":" 116 COLON@103..104 ":"
117 WHITESPACE@[104; 105) " " 117 WHITESPACE@104..105 " "
118 LITERAL@[105; 106) 118 LITERAL@105..106
119 INT_NUMBER@[105; 106) "1" 119 INT_NUMBER@105..106 "1"
120 WHITESPACE@[106; 107) " " 120 WHITESPACE@106..107 " "
121 R_CURLY@[107; 108) "}" 121 R_CURLY@107..108 "}"
122 SEMICOLON@[108; 109) ";" 122 SEMICOLON@108..109 ";"
123 WHITESPACE@[109; 110) "\n" 123 WHITESPACE@109..110 "\n"
124 R_CURLY@[110; 111) "}" 124 R_CURLY@110..111 "}"
125 WHITESPACE@[111; 112) "\n" 125 WHITESPACE@111..112 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rast b/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rast
index 99e0a0bec..3cce106e4 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rast
@@ -1,67 +1,67 @@
1SOURCE_FILE@[0; 70) 1SOURCE_FILE@0..70
2 FN_DEF@[0; 11) 2 FN_DEF@0..11
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 11) 11 BLOCK_EXPR@9..11
12 BLOCK@[9; 11) 12 BLOCK@9..11
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 R_CURLY@[10; 11) "}" 14 R_CURLY@10..11 "}"
15 WHITESPACE@[11; 12) "\n" 15 WHITESPACE@11..12 "\n"
16 MACRO_CALL@[12; 31) 16 MACRO_CALL@12..31
17 PATH@[12; 23) 17 PATH@12..23
18 PATH_SEGMENT@[12; 23) 18 PATH_SEGMENT@12..23
19 NAME_REF@[12; 23) 19 NAME_REF@12..23
20 IDENT@[12; 23) "macro_rules" 20 IDENT@12..23 "macro_rules"
21 BANG@[23; 24) "!" 21 BANG@23..24 "!"
22 WHITESPACE@[24; 25) " " 22 WHITESPACE@24..25 " "
23 NAME@[25; 28) 23 NAME@25..28
24 IDENT@[25; 28) "foo" 24 IDENT@25..28 "foo"
25 WHITESPACE@[28; 29) " " 25 WHITESPACE@28..29 " "
26 TOKEN_TREE@[29; 31) 26 TOKEN_TREE@29..31
27 L_CURLY@[29; 30) "{" 27 L_CURLY@29..30 "{"
28 R_CURLY@[30; 31) "}" 28 R_CURLY@30..31 "}"
29 WHITESPACE@[31; 32) "\n" 29 WHITESPACE@31..32 "\n"
30 MACRO_CALL@[32; 44) 30 MACRO_CALL@32..44
31 PATH@[32; 40) 31 PATH@32..40
32 PATH@[32; 35) 32 PATH@32..35
33 PATH_SEGMENT@[32; 35) 33 PATH_SEGMENT@32..35
34 NAME_REF@[32; 35) 34 NAME_REF@32..35
35 IDENT@[32; 35) "foo" 35 IDENT@32..35 "foo"
36 COLON2@[35; 37) "::" 36 COLON2@35..37 "::"
37 PATH_SEGMENT@[37; 40) 37 PATH_SEGMENT@37..40
38 NAME_REF@[37; 40) 38 NAME_REF@37..40
39 IDENT@[37; 40) "bar" 39 IDENT@37..40 "bar"
40 BANG@[40; 41) "!" 40 BANG@40..41 "!"
41 TOKEN_TREE@[41; 43) 41 TOKEN_TREE@41..43
42 L_PAREN@[41; 42) "(" 42 L_PAREN@41..42 "("
43 R_PAREN@[42; 43) ")" 43 R_PAREN@42..43 ")"
44 SEMICOLON@[43; 44) ";" 44 SEMICOLON@43..44 ";"
45 WHITESPACE@[44; 45) "\n" 45 WHITESPACE@44..45 "\n"
46 MACRO_CALL@[45; 59) 46 MACRO_CALL@45..59
47 PATH@[45; 55) 47 PATH@45..55
48 PATH@[45; 50) 48 PATH@45..50
49 PATH_SEGMENT@[45; 50) 49 PATH_SEGMENT@45..50
50 SUPER_KW@[45; 50) "super" 50 SUPER_KW@45..50 "super"
51 COLON2@[50; 52) "::" 51 COLON2@50..52 "::"
52 PATH_SEGMENT@[52; 55) 52 PATH_SEGMENT@52..55
53 NAME_REF@[52; 55) 53 NAME_REF@52..55
54 IDENT@[52; 55) "baz" 54 IDENT@52..55 "baz"
55 BANG@[55; 56) "!" 55 BANG@55..56 "!"
56 WHITESPACE@[56; 57) " " 56 WHITESPACE@56..57 " "
57 TOKEN_TREE@[57; 59) 57 TOKEN_TREE@57..59
58 L_CURLY@[57; 58) "{" 58 L_CURLY@57..58 "{"
59 R_CURLY@[58; 59) "}" 59 R_CURLY@58..59 "}"
60 WHITESPACE@[59; 60) "\n" 60 WHITESPACE@59..60 "\n"
61 STRUCT_DEF@[60; 69) 61 STRUCT_DEF@60..69
62 STRUCT_KW@[60; 66) "struct" 62 STRUCT_KW@60..66 "struct"
63 WHITESPACE@[66; 67) " " 63 WHITESPACE@66..67 " "
64 NAME@[67; 68) 64 NAME@67..68
65 IDENT@[67; 68) "S" 65 IDENT@67..68 "S"
66 SEMICOLON@[68; 69) ";" 66 SEMICOLON@68..69 ";"
67 WHITESPACE@[69; 70) "\n" 67 WHITESPACE@69..70 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast b/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast
index 278549a46..24b9a1f46 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast
@@ -1,23 +1,23 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@0..20
2 IMPL_DEF@[0; 19) 2 IMPL_DEF@0..19
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 BANG@[5; 6) "!" 5 BANG@5..6 "!"
6 PATH_TYPE@[6; 10) 6 PATH_TYPE@6..10
7 PATH@[6; 10) 7 PATH@6..10
8 PATH_SEGMENT@[6; 10) 8 PATH_SEGMENT@6..10
9 NAME_REF@[6; 10) 9 NAME_REF@6..10
10 IDENT@[6; 10) "Send" 10 IDENT@6..10 "Send"
11 WHITESPACE@[10; 11) " " 11 WHITESPACE@10..11 " "
12 FOR_KW@[11; 14) "for" 12 FOR_KW@11..14 "for"
13 WHITESPACE@[14; 15) " " 13 WHITESPACE@14..15 " "
14 PATH_TYPE@[15; 16) 14 PATH_TYPE@15..16
15 PATH@[15; 16) 15 PATH@15..16
16 PATH_SEGMENT@[15; 16) 16 PATH_SEGMENT@15..16
17 NAME_REF@[15; 16) 17 NAME_REF@15..16
18 IDENT@[15; 16) "X" 18 IDENT@15..16 "X"
19 WHITESPACE@[16; 17) " " 19 WHITESPACE@16..17 " "
20 ITEM_LIST@[17; 19) 20 ITEM_LIST@17..19
21 L_CURLY@[17; 18) "{" 21 L_CURLY@17..18 "{"
22 R_CURLY@[18; 19) "}" 22 R_CURLY@18..19 "}"
23 WHITESPACE@[19; 20) "\n" 23 WHITESPACE@19..20 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rast
index df24ae189..5e1b4cc68 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rast
@@ -1,132 +1,132 @@
1SOURCE_FILE@[0; 137) 1SOURCE_FILE@0..137
2 FN_DEF@[0; 136) 2 FN_DEF@0..136
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 136) 11 BLOCK_EXPR@9..136
12 BLOCK@[9; 136) 12 BLOCK@9..136
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 26) 15 EXPR_STMT@15..26
16 IF_EXPR@[15; 25) 16 IF_EXPR@15..25
17 IF_KW@[15; 17) "if" 17 IF_KW@15..17 "if"
18 WHITESPACE@[17; 18) " " 18 WHITESPACE@17..18 " "
19 CONDITION@[18; 22) 19 CONDITION@18..22
20 LITERAL@[18; 22) 20 LITERAL@18..22
21 TRUE_KW@[18; 22) "true" 21 TRUE_KW@18..22 "true"
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 BLOCK_EXPR@[23; 25) 23 BLOCK_EXPR@23..25
24 BLOCK@[23; 25) 24 BLOCK@23..25
25 L_CURLY@[23; 24) "{" 25 L_CURLY@23..24 "{"
26 R_CURLY@[24; 25) "}" 26 R_CURLY@24..25 "}"
27 SEMICOLON@[25; 26) ";" 27 SEMICOLON@25..26 ";"
28 WHITESPACE@[26; 31) "\n " 28 WHITESPACE@26..31 "\n "
29 EXPR_STMT@[31; 50) 29 EXPR_STMT@31..50
30 IF_EXPR@[31; 49) 30 IF_EXPR@31..49
31 IF_KW@[31; 33) "if" 31 IF_KW@31..33 "if"
32 WHITESPACE@[33; 34) " " 32 WHITESPACE@33..34 " "
33 CONDITION@[34; 38) 33 CONDITION@34..38
34 LITERAL@[34; 38) 34 LITERAL@34..38
35 TRUE_KW@[34; 38) "true" 35 TRUE_KW@34..38 "true"
36 WHITESPACE@[38; 39) " " 36 WHITESPACE@38..39 " "
37 BLOCK_EXPR@[39; 41) 37 BLOCK_EXPR@39..41
38 BLOCK@[39; 41) 38 BLOCK@39..41
39 L_CURLY@[39; 40) "{" 39 L_CURLY@39..40 "{"
40 R_CURLY@[40; 41) "}" 40 R_CURLY@40..41 "}"
41 WHITESPACE@[41; 42) " " 41 WHITESPACE@41..42 " "
42 ELSE_KW@[42; 46) "else" 42 ELSE_KW@42..46 "else"
43 WHITESPACE@[46; 47) " " 43 WHITESPACE@46..47 " "
44 BLOCK_EXPR@[47; 49) 44 BLOCK_EXPR@47..49
45 BLOCK@[47; 49) 45 BLOCK@47..49
46 L_CURLY@[47; 48) "{" 46 L_CURLY@47..48 "{"
47 R_CURLY@[48; 49) "}" 47 R_CURLY@48..49 "}"
48 SEMICOLON@[49; 50) ";" 48 SEMICOLON@49..50 ";"
49 WHITESPACE@[50; 55) "\n " 49 WHITESPACE@50..55 "\n "
50 EXPR_STMT@[55; 91) 50 EXPR_STMT@55..91
51 IF_EXPR@[55; 90) 51 IF_EXPR@55..90
52 IF_KW@[55; 57) "if" 52 IF_KW@55..57 "if"
53 WHITESPACE@[57; 58) " " 53 WHITESPACE@57..58 " "
54 CONDITION@[58; 62) 54 CONDITION@58..62
55 LITERAL@[58; 62) 55 LITERAL@58..62
56 TRUE_KW@[58; 62) "true" 56 TRUE_KW@58..62 "true"
57 WHITESPACE@[62; 63) " " 57 WHITESPACE@62..63 " "
58 BLOCK_EXPR@[63; 65) 58 BLOCK_EXPR@63..65
59 BLOCK@[63; 65) 59 BLOCK@63..65
60 L_CURLY@[63; 64) "{" 60 L_CURLY@63..64 "{"
61 R_CURLY@[64; 65) "}" 61 R_CURLY@64..65 "}"
62 WHITESPACE@[65; 66) " " 62 WHITESPACE@65..66 " "
63 ELSE_KW@[66; 70) "else" 63 ELSE_KW@66..70 "else"
64 WHITESPACE@[70; 71) " " 64 WHITESPACE@70..71 " "
65 IF_EXPR@[71; 90) 65 IF_EXPR@71..90
66 IF_KW@[71; 73) "if" 66 IF_KW@71..73 "if"
67 WHITESPACE@[73; 74) " " 67 WHITESPACE@73..74 " "
68 CONDITION@[74; 79) 68 CONDITION@74..79
69 LITERAL@[74; 79) 69 LITERAL@74..79
70 FALSE_KW@[74; 79) "false" 70 FALSE_KW@74..79 "false"
71 WHITESPACE@[79; 80) " " 71 WHITESPACE@79..80 " "
72 BLOCK_EXPR@[80; 82) 72 BLOCK_EXPR@80..82
73 BLOCK@[80; 82) 73 BLOCK@80..82
74 L_CURLY@[80; 81) "{" 74 L_CURLY@80..81 "{"
75 R_CURLY@[81; 82) "}" 75 R_CURLY@81..82 "}"
76 WHITESPACE@[82; 83) " " 76 WHITESPACE@82..83 " "
77 ELSE_KW@[83; 87) "else" 77 ELSE_KW@83..87 "else"
78 WHITESPACE@[87; 88) " " 78 WHITESPACE@87..88 " "
79 BLOCK_EXPR@[88; 90) 79 BLOCK_EXPR@88..90
80 BLOCK@[88; 90) 80 BLOCK@88..90
81 L_CURLY@[88; 89) "{" 81 L_CURLY@88..89 "{"
82 R_CURLY@[89; 90) "}" 82 R_CURLY@89..90 "}"
83 SEMICOLON@[90; 91) ";" 83 SEMICOLON@90..91 ";"
84 WHITESPACE@[91; 96) "\n " 84 WHITESPACE@91..96 "\n "
85 EXPR_STMT@[96; 104) 85 EXPR_STMT@96..104
86 IF_EXPR@[96; 103) 86 IF_EXPR@96..103
87 IF_KW@[96; 98) "if" 87 IF_KW@96..98 "if"
88 WHITESPACE@[98; 99) " " 88 WHITESPACE@98..99 " "
89 CONDITION@[99; 100) 89 CONDITION@99..100
90 PATH_EXPR@[99; 100) 90 PATH_EXPR@99..100
91 PATH@[99; 100) 91 PATH@99..100
92 PATH_SEGMENT@[99; 100) 92 PATH_SEGMENT@99..100
93 NAME_REF@[99; 100) 93 NAME_REF@99..100
94 IDENT@[99; 100) "S" 94 IDENT@99..100 "S"
95 WHITESPACE@[100; 101) " " 95 WHITESPACE@100..101 " "
96 BLOCK_EXPR@[101; 103) 96 BLOCK_EXPR@101..103
97 BLOCK@[101; 103) 97 BLOCK@101..103
98 L_CURLY@[101; 102) "{" 98 L_CURLY@101..102 "{"
99 R_CURLY@[102; 103) "}" 99 R_CURLY@102..103 "}"
100 SEMICOLON@[103; 104) ";" 100 SEMICOLON@103..104 ";"
101 WHITESPACE@[104; 109) "\n " 101 WHITESPACE@104..109 "\n "
102 EXPR_STMT@[109; 134) 102 EXPR_STMT@109..134
103 IF_EXPR@[109; 133) 103 IF_EXPR@109..133
104 IF_KW@[109; 111) "if" 104 IF_KW@109..111 "if"
105 WHITESPACE@[111; 112) " " 105 WHITESPACE@111..112 " "
106 CONDITION@[112; 120) 106 CONDITION@112..120
107 BLOCK_EXPR@[112; 120) 107 BLOCK_EXPR@112..120
108 BLOCK@[112; 120) 108 BLOCK@112..120
109 L_CURLY@[112; 113) "{" 109 L_CURLY@112..113 "{"
110 WHITESPACE@[113; 114) " " 110 WHITESPACE@113..114 " "
111 LITERAL@[114; 118) 111 LITERAL@114..118
112 TRUE_KW@[114; 118) "true" 112 TRUE_KW@114..118 "true"
113 WHITESPACE@[118; 119) " " 113 WHITESPACE@118..119 " "
114 R_CURLY@[119; 120) "}" 114 R_CURLY@119..120 "}"
115 WHITESPACE@[120; 121) " " 115 WHITESPACE@120..121 " "
116 BLOCK_EXPR@[121; 124) 116 BLOCK_EXPR@121..124
117 BLOCK@[121; 124) 117 BLOCK@121..124
118 L_CURLY@[121; 122) "{" 118 L_CURLY@121..122 "{"
119 WHITESPACE@[122; 123) " " 119 WHITESPACE@122..123 " "
120 R_CURLY@[123; 124) "}" 120 R_CURLY@123..124 "}"
121 WHITESPACE@[124; 125) " " 121 WHITESPACE@124..125 " "
122 ELSE_KW@[125; 129) "else" 122 ELSE_KW@125..129 "else"
123 WHITESPACE@[129; 130) " " 123 WHITESPACE@129..130 " "
124 BLOCK_EXPR@[130; 133) 124 BLOCK_EXPR@130..133
125 BLOCK@[130; 133) 125 BLOCK@130..133
126 L_CURLY@[130; 131) "{" 126 L_CURLY@130..131 "{"
127 WHITESPACE@[131; 132) " " 127 WHITESPACE@131..132 " "
128 R_CURLY@[132; 133) "}" 128 R_CURLY@132..133 "}"
129 SEMICOLON@[133; 134) ";" 129 SEMICOLON@133..134 ";"
130 WHITESPACE@[134; 135) "\n" 130 WHITESPACE@134..135 "\n"
131 R_CURLY@[135; 136) "}" 131 R_CURLY@135..136 "}"
132 WHITESPACE@[136; 137) "\n" 132 WHITESPACE@136..137 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast
index bbf347580..8e10f3673 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@0..42
2 TYPE_ALIAS_DEF@[0; 41) 2 TYPE_ALIAS_DEF@0..41
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 DYN_TRAIT_TYPE@[9; 40) 10 DYN_TRAIT_TYPE@9..40
11 DYN_KW@[9; 12) "dyn" 11 DYN_KW@9..12 "dyn"
12 WHITESPACE@[12; 13) " " 12 WHITESPACE@12..13 " "
13 TYPE_BOUND_LIST@[13; 40) 13 TYPE_BOUND_LIST@13..40
14 TYPE_BOUND@[13; 35) 14 TYPE_BOUND@13..35
15 PATH_TYPE@[13; 35) 15 PATH_TYPE@13..35
16 PATH@[13; 35) 16 PATH@13..35
17 PATH_SEGMENT@[13; 35) 17 PATH_SEGMENT@13..35
18 NAME_REF@[13; 21) 18 NAME_REF@13..21
19 IDENT@[13; 21) "Iterator" 19 IDENT@13..21 "Iterator"
20 TYPE_ARG_LIST@[21; 35) 20 TYPE_ARG_LIST@21..35
21 L_ANGLE@[21; 22) "<" 21 L_ANGLE@21..22 "<"
22 ASSOC_TYPE_ARG@[22; 34) 22 ASSOC_TYPE_ARG@22..34
23 NAME_REF@[22; 26) 23 NAME_REF@22..26
24 IDENT@[22; 26) "Item" 24 IDENT@22..26 "Item"
25 EQ@[26; 27) "=" 25 EQ@26..27 "="
26 PATH_TYPE@[27; 34) 26 PATH_TYPE@27..34
27 PATH@[27; 34) 27 PATH@27..34
28 PATH_SEGMENT@[27; 34) 28 PATH_SEGMENT@27..34
29 NAME_REF@[27; 30) 29 NAME_REF@27..30
30 IDENT@[27; 30) "Foo" 30 IDENT@27..30 "Foo"
31 TYPE_ARG_LIST@[30; 34) 31 TYPE_ARG_LIST@30..34
32 L_ANGLE@[30; 31) "<" 32 L_ANGLE@30..31 "<"
33 LIFETIME_ARG@[31; 33) 33 LIFETIME_ARG@31..33
34 LIFETIME@[31; 33) "\'a" 34 LIFETIME@31..33 "\'a"
35 R_ANGLE@[33; 34) ">" 35 R_ANGLE@33..34 ">"
36 R_ANGLE@[34; 35) ">" 36 R_ANGLE@34..35 ">"
37 WHITESPACE@[35; 36) " " 37 WHITESPACE@35..36 " "
38 PLUS@[36; 37) "+" 38 PLUS@36..37 "+"
39 WHITESPACE@[37; 38) " " 39 WHITESPACE@37..38 " "
40 TYPE_BOUND@[38; 40) 40 TYPE_BOUND@38..40
41 LIFETIME@[38; 40) "\'a" 41 LIFETIME@38..40 "\'a"
42 SEMICOLON@[40; 41) ";" 42 SEMICOLON@40..41 ";"
43 WHITESPACE@[41; 42) "\n" 43 WHITESPACE@41..42 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rast b/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rast
index 85edd0845..108e5c5cc 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rast
@@ -1,152 +1,152 @@
1SOURCE_FILE@[0; 167) 1SOURCE_FILE@0..167
2 FN_DEF@[0; 166) 2 FN_DEF@0..166
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 166) 11 BLOCK_EXPR@9..166
12 BLOCK@[9; 166) 12 BLOCK@9..166
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 164) 15 EXPR_STMT@15..164
16 MATCH_EXPR@[15; 163) 16 MATCH_EXPR@15..163
17 MATCH_KW@[15; 20) "match" 17 MATCH_KW@15..20 "match"
18 WHITESPACE@[20; 21) " " 18 WHITESPACE@20..21 " "
19 TUPLE_EXPR@[21; 23) 19 TUPLE_EXPR@21..23
20 L_PAREN@[21; 22) "(" 20 L_PAREN@21..22 "("
21 R_PAREN@[22; 23) ")" 21 R_PAREN@22..23 ")"
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 MATCH_ARM_LIST@[24; 163) 23 MATCH_ARM_LIST@24..163
24 L_CURLY@[24; 25) "{" 24 L_CURLY@24..25 "{"
25 WHITESPACE@[25; 34) "\n " 25 WHITESPACE@25..34 "\n "
26 MATCH_ARM@[34; 41) 26 MATCH_ARM@34..41
27 PLACEHOLDER_PAT@[34; 35) 27 PLACEHOLDER_PAT@34..35
28 UNDERSCORE@[34; 35) "_" 28 UNDERSCORE@34..35 "_"
29 WHITESPACE@[35; 36) " " 29 WHITESPACE@35..36 " "
30 FAT_ARROW@[36; 38) "=>" 30 FAT_ARROW@36..38 "=>"
31 WHITESPACE@[38; 39) " " 31 WHITESPACE@38..39 " "
32 TUPLE_EXPR@[39; 41) 32 TUPLE_EXPR@39..41
33 L_PAREN@[39; 40) "(" 33 L_PAREN@39..40 "("
34 R_PAREN@[40; 41) ")" 34 R_PAREN@40..41 ")"
35 COMMA@[41; 42) "," 35 COMMA@41..42 ","
36 WHITESPACE@[42; 51) "\n " 36 WHITESPACE@42..51 "\n "
37 MATCH_ARM@[51; 83) 37 MATCH_ARM@51..83
38 PLACEHOLDER_PAT@[51; 52) 38 PLACEHOLDER_PAT@51..52
39 UNDERSCORE@[51; 52) "_" 39 UNDERSCORE@51..52 "_"
40 WHITESPACE@[52; 53) " " 40 WHITESPACE@52..53 " "
41 MATCH_GUARD@[53; 77) 41 MATCH_GUARD@53..77
42 IF_KW@[53; 55) "if" 42 IF_KW@53..55 "if"
43 WHITESPACE@[55; 56) " " 43 WHITESPACE@55..56 " "
44 BIN_EXPR@[56; 77) 44 BIN_EXPR@56..77
45 PATH_EXPR@[56; 60) 45 PATH_EXPR@56..60
46 PATH@[56; 60) 46 PATH@56..60
47 PATH_SEGMENT@[56; 60) 47 PATH_SEGMENT@56..60
48 NAME_REF@[56; 60) 48 NAME_REF@56..60
49 IDENT@[56; 60) "Test" 49 IDENT@56..60 "Test"
50 WHITESPACE@[60; 61) " " 50 WHITESPACE@60..61 " "
51 R_ANGLE@[61; 62) ">" 51 R_ANGLE@61..62 ">"
52 WHITESPACE@[62; 63) " " 52 WHITESPACE@62..63 " "
53 RECORD_LIT@[63; 77) 53 RECORD_LIT@63..77
54 PATH@[63; 67) 54 PATH@63..67
55 PATH_SEGMENT@[63; 67) 55 PATH_SEGMENT@63..67
56 NAME_REF@[63; 67) 56 NAME_REF@63..67
57 IDENT@[63; 67) "Test" 57 IDENT@63..67 "Test"
58 RECORD_FIELD_LIST@[67; 77) 58 RECORD_FIELD_LIST@67..77
59 L_CURLY@[67; 68) "{" 59 L_CURLY@67..68 "{"
60 RECORD_FIELD@[68; 76) 60 RECORD_FIELD@68..76
61 NAME_REF@[68; 73) 61 NAME_REF@68..73
62 IDENT@[68; 73) "field" 62 IDENT@68..73 "field"
63 COLON@[73; 74) ":" 63 COLON@73..74 ":"
64 WHITESPACE@[74; 75) " " 64 WHITESPACE@74..75 " "
65 LITERAL@[75; 76) 65 LITERAL@75..76
66 INT_NUMBER@[75; 76) "0" 66 INT_NUMBER@75..76 "0"
67 R_CURLY@[76; 77) "}" 67 R_CURLY@76..77 "}"
68 WHITESPACE@[77; 78) " " 68 WHITESPACE@77..78 " "
69 FAT_ARROW@[78; 80) "=>" 69 FAT_ARROW@78..80 "=>"
70 WHITESPACE@[80; 81) " " 70 WHITESPACE@80..81 " "
71 TUPLE_EXPR@[81; 83) 71 TUPLE_EXPR@81..83
72 L_PAREN@[81; 82) "(" 72 L_PAREN@81..82 "("
73 R_PAREN@[82; 83) ")" 73 R_PAREN@82..83 ")"
74 COMMA@[83; 84) "," 74 COMMA@83..84 ","
75 WHITESPACE@[84; 93) "\n " 75 WHITESPACE@84..93 "\n "
76 MATCH_ARM@[93; 109) 76 MATCH_ARM@93..109
77 OR_PAT@[93; 98) 77 OR_PAT@93..98
78 BIND_PAT@[93; 94) 78 BIND_PAT@93..94
79 NAME@[93; 94) 79 NAME@93..94
80 IDENT@[93; 94) "X" 80 IDENT@93..94 "X"
81 WHITESPACE@[94; 95) " " 81 WHITESPACE@94..95 " "
82 PIPE@[95; 96) "|" 82 PIPE@95..96 "|"
83 WHITESPACE@[96; 97) " " 83 WHITESPACE@96..97 " "
84 BIND_PAT@[97; 98) 84 BIND_PAT@97..98
85 NAME@[97; 98) 85 NAME@97..98
86 IDENT@[97; 98) "Y" 86 IDENT@97..98 "Y"
87 WHITESPACE@[98; 99) " " 87 WHITESPACE@98..99 " "
88 MATCH_GUARD@[99; 103) 88 MATCH_GUARD@99..103
89 IF_KW@[99; 101) "if" 89 IF_KW@99..101 "if"
90 WHITESPACE@[101; 102) " " 90 WHITESPACE@101..102 " "
91 PATH_EXPR@[102; 103) 91 PATH_EXPR@102..103
92 PATH@[102; 103) 92 PATH@102..103
93 PATH_SEGMENT@[102; 103) 93 PATH_SEGMENT@102..103
94 NAME_REF@[102; 103) 94 NAME_REF@102..103
95 IDENT@[102; 103) "Z" 95 IDENT@102..103 "Z"
96 WHITESPACE@[103; 104) " " 96 WHITESPACE@103..104 " "
97 FAT_ARROW@[104; 106) "=>" 97 FAT_ARROW@104..106 "=>"
98 WHITESPACE@[106; 107) " " 98 WHITESPACE@106..107 " "
99 TUPLE_EXPR@[107; 109) 99 TUPLE_EXPR@107..109
100 L_PAREN@[107; 108) "(" 100 L_PAREN@107..108 "("
101 R_PAREN@[108; 109) ")" 101 R_PAREN@108..109 ")"
102 COMMA@[109; 110) "," 102 COMMA@109..110 ","
103 WHITESPACE@[110; 119) "\n " 103 WHITESPACE@110..119 "\n "
104 MATCH_ARM@[119; 137) 104 MATCH_ARM@119..137
105 PIPE@[119; 120) "|" 105 PIPE@119..120 "|"
106 WHITESPACE@[120; 121) " " 106 WHITESPACE@120..121 " "
107 OR_PAT@[121; 126) 107 OR_PAT@121..126
108 BIND_PAT@[121; 122) 108 BIND_PAT@121..122
109 NAME@[121; 122) 109 NAME@121..122
110 IDENT@[121; 122) "X" 110 IDENT@121..122 "X"
111 WHITESPACE@[122; 123) " " 111 WHITESPACE@122..123 " "
112 PIPE@[123; 124) "|" 112 PIPE@123..124 "|"
113 WHITESPACE@[124; 125) " " 113 WHITESPACE@124..125 " "
114 BIND_PAT@[125; 126) 114 BIND_PAT@125..126
115 NAME@[125; 126) 115 NAME@125..126
116 IDENT@[125; 126) "Y" 116 IDENT@125..126 "Y"
117 WHITESPACE@[126; 127) " " 117 WHITESPACE@126..127 " "
118 MATCH_GUARD@[127; 131) 118 MATCH_GUARD@127..131
119 IF_KW@[127; 129) "if" 119 IF_KW@127..129 "if"
120 WHITESPACE@[129; 130) " " 120 WHITESPACE@129..130 " "
121 PATH_EXPR@[130; 131) 121 PATH_EXPR@130..131
122 PATH@[130; 131) 122 PATH@130..131
123 PATH_SEGMENT@[130; 131) 123 PATH_SEGMENT@130..131
124 NAME_REF@[130; 131) 124 NAME_REF@130..131
125 IDENT@[130; 131) "Z" 125 IDENT@130..131 "Z"
126 WHITESPACE@[131; 132) " " 126 WHITESPACE@131..132 " "
127 FAT_ARROW@[132; 134) "=>" 127 FAT_ARROW@132..134 "=>"
128 WHITESPACE@[134; 135) " " 128 WHITESPACE@134..135 " "
129 TUPLE_EXPR@[135; 137) 129 TUPLE_EXPR@135..137
130 L_PAREN@[135; 136) "(" 130 L_PAREN@135..136 "("
131 R_PAREN@[136; 137) ")" 131 R_PAREN@136..137 ")"
132 COMMA@[137; 138) "," 132 COMMA@137..138 ","
133 WHITESPACE@[138; 147) "\n " 133 WHITESPACE@138..147 "\n "
134 MATCH_ARM@[147; 156) 134 MATCH_ARM@147..156
135 PIPE@[147; 148) "|" 135 PIPE@147..148 "|"
136 WHITESPACE@[148; 149) " " 136 WHITESPACE@148..149 " "
137 BIND_PAT@[149; 150) 137 BIND_PAT@149..150
138 NAME@[149; 150) 138 NAME@149..150
139 IDENT@[149; 150) "X" 139 IDENT@149..150 "X"
140 WHITESPACE@[150; 151) " " 140 WHITESPACE@150..151 " "
141 FAT_ARROW@[151; 153) "=>" 141 FAT_ARROW@151..153 "=>"
142 WHITESPACE@[153; 154) " " 142 WHITESPACE@153..154 " "
143 TUPLE_EXPR@[154; 156) 143 TUPLE_EXPR@154..156
144 L_PAREN@[154; 155) "(" 144 L_PAREN@154..155 "("
145 R_PAREN@[155; 156) ")" 145 R_PAREN@155..156 ")"
146 COMMA@[156; 157) "," 146 COMMA@156..157 ","
147 WHITESPACE@[157; 162) "\n " 147 WHITESPACE@157..162 "\n "
148 R_CURLY@[162; 163) "}" 148 R_CURLY@162..163 "}"
149 SEMICOLON@[163; 164) ";" 149 SEMICOLON@163..164 ";"
150 WHITESPACE@[164; 165) "\n" 150 WHITESPACE@164..165 "\n"
151 R_CURLY@[165; 166) "}" 151 R_CURLY@165..166 "}"
152 WHITESPACE@[166; 167) "\n" 152 WHITESPACE@166..167 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rast b/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rast
index 35994e3fd..caa76fe8a 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rast
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@0..16
2 USE_ITEM@[0; 15) 2 USE_ITEM@0..15
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 14) 5 USE_TREE@4..14
6 PATH@[4; 14) 6 PATH@4..14
7 PATH@[4; 9) 7 PATH@4..9
8 PATH_SEGMENT@[4; 9) 8 PATH_SEGMENT@4..9
9 CRATE_KW@[4; 9) "crate" 9 CRATE_KW@4..9 "crate"
10 COLON2@[9; 11) "::" 10 COLON2@9..11 "::"
11 PATH_SEGMENT@[11; 14) 11 PATH_SEGMENT@11..14
12 NAME_REF@[11; 14) 12 NAME_REF@11..14
13 IDENT@[11; 14) "foo" 13 IDENT@11..14 "foo"
14 SEMICOLON@[14; 15) ";" 14 SEMICOLON@14..15 ";"
15 WHITESPACE@[15; 16) "\n" 15 WHITESPACE@15..16 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rast b/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rast
index 9d7982684..ec2496072 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rast
@@ -1,46 +1,46 @@
1SOURCE_FILE@[0; 51) 1SOURCE_FILE@0..51
2 UNION_DEF@[0; 12) 2 UNION_DEF@0..12
3 UNION_KW@[0; 5) "union" 3 UNION_KW@0..5 "union"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 9) 5 NAME@6..9
6 IDENT@[6; 9) "Foo" 6 IDENT@6..9 "Foo"
7 WHITESPACE@[9; 10) " " 7 WHITESPACE@9..10 " "
8 RECORD_FIELD_DEF_LIST@[10; 12) 8 RECORD_FIELD_DEF_LIST@10..12
9 L_CURLY@[10; 11) "{" 9 L_CURLY@10..11 "{"
10 R_CURLY@[11; 12) "}" 10 R_CURLY@11..12 "}"
11 WHITESPACE@[12; 13) "\n" 11 WHITESPACE@12..13 "\n"
12 UNION_DEF@[13; 50) 12 UNION_DEF@13..50
13 UNION_KW@[13; 18) "union" 13 UNION_KW@13..18 "union"
14 WHITESPACE@[18; 19) " " 14 WHITESPACE@18..19 " "
15 NAME@[19; 22) 15 NAME@19..22
16 IDENT@[19; 22) "Foo" 16 IDENT@19..22 "Foo"
17 WHITESPACE@[22; 23) " " 17 WHITESPACE@22..23 " "
18 RECORD_FIELD_DEF_LIST@[23; 50) 18 RECORD_FIELD_DEF_LIST@23..50
19 L_CURLY@[23; 24) "{" 19 L_CURLY@23..24 "{"
20 WHITESPACE@[24; 29) "\n " 20 WHITESPACE@24..29 "\n "
21 RECORD_FIELD_DEF@[29; 35) 21 RECORD_FIELD_DEF@29..35
22 NAME@[29; 30) 22 NAME@29..30
23 IDENT@[29; 30) "a" 23 IDENT@29..30 "a"
24 COLON@[30; 31) ":" 24 COLON@30..31 ":"
25 WHITESPACE@[31; 32) " " 25 WHITESPACE@31..32 " "
26 PATH_TYPE@[32; 35) 26 PATH_TYPE@32..35
27 PATH@[32; 35) 27 PATH@32..35
28 PATH_SEGMENT@[32; 35) 28 PATH_SEGMENT@32..35
29 NAME_REF@[32; 35) 29 NAME_REF@32..35
30 IDENT@[32; 35) "i32" 30 IDENT@32..35 "i32"
31 COMMA@[35; 36) "," 31 COMMA@35..36 ","
32 WHITESPACE@[36; 41) "\n " 32 WHITESPACE@36..41 "\n "
33 RECORD_FIELD_DEF@[41; 47) 33 RECORD_FIELD_DEF@41..47
34 NAME@[41; 42) 34 NAME@41..42
35 IDENT@[41; 42) "b" 35 IDENT@41..42 "b"
36 COLON@[42; 43) ":" 36 COLON@42..43 ":"
37 WHITESPACE@[43; 44) " " 37 WHITESPACE@43..44 " "
38 PATH_TYPE@[44; 47) 38 PATH_TYPE@44..47
39 PATH@[44; 47) 39 PATH@44..47
40 PATH_SEGMENT@[44; 47) 40 PATH_SEGMENT@44..47
41 NAME_REF@[44; 47) 41 NAME_REF@44..47
42 IDENT@[44; 47) "f32" 42 IDENT@44..47 "f32"
43 COMMA@[47; 48) "," 43 COMMA@47..48 ","
44 WHITESPACE@[48; 49) "\n" 44 WHITESPACE@48..49 "\n"
45 R_CURLY@[49; 50) "}" 45 R_CURLY@49..50 "}"
46 WHITESPACE@[50; 51) "\n" 46 WHITESPACE@50..51 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast b/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast
index e24247890..18cd5271f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 37) 1SOURCE_FILE@0..37
2 USE_ITEM@[0; 18) 2 USE_ITEM@0..18
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 17) 5 USE_TREE@4..17
6 PATH@[4; 9) 6 PATH@4..9
7 PATH_SEGMENT@[4; 9) 7 PATH_SEGMENT@4..9
8 CRATE_KW@[4; 9) "crate" 8 CRATE_KW@4..9 "crate"
9 COLON2@[9; 11) "::" 9 COLON2@9..11 "::"
10 USE_TREE_LIST@[11; 17) 10 USE_TREE_LIST@11..17
11 L_CURLY@[11; 12) "{" 11 L_CURLY@11..12 "{"
12 USE_TREE@[12; 16) 12 USE_TREE@12..16
13 PATH@[12; 16) 13 PATH@12..16
14 PATH_SEGMENT@[12; 16) 14 PATH_SEGMENT@12..16
15 NAME_REF@[12; 16) 15 NAME_REF@12..16
16 IDENT@[12; 16) "Item" 16 IDENT@12..16 "Item"
17 R_CURLY@[16; 17) "}" 17 R_CURLY@16..17 "}"
18 SEMICOLON@[17; 18) ";" 18 SEMICOLON@17..18 ";"
19 WHITESPACE@[18; 19) "\n" 19 WHITESPACE@18..19 "\n"
20 USE_ITEM@[19; 36) 20 USE_ITEM@19..36
21 USE_KW@[19; 22) "use" 21 USE_KW@19..22 "use"
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 USE_TREE@[23; 35) 23 USE_TREE@23..35
24 PATH@[23; 27) 24 PATH@23..27
25 PATH_SEGMENT@[23; 27) 25 PATH_SEGMENT@23..27
26 SELF_KW@[23; 27) "self" 26 SELF_KW@23..27 "self"
27 COLON2@[27; 29) "::" 27 COLON2@27..29 "::"
28 USE_TREE_LIST@[29; 35) 28 USE_TREE_LIST@29..35
29 L_CURLY@[29; 30) "{" 29 L_CURLY@29..30 "{"
30 USE_TREE@[30; 34) 30 USE_TREE@30..34
31 PATH@[30; 34) 31 PATH@30..34
32 PATH_SEGMENT@[30; 34) 32 PATH_SEGMENT@30..34
33 NAME_REF@[30; 34) 33 NAME_REF@30..34
34 IDENT@[30; 34) "Item" 34 IDENT@30..34 "Item"
35 R_CURLY@[34; 35) "}" 35 R_CURLY@34..35 "}"
36 SEMICOLON@[35; 36) ";" 36 SEMICOLON@35..36 ";"
37 WHITESPACE@[36; 37) "\n" 37 WHITESPACE@36..37 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast b/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast
index 4b075569a..1e888063e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast
@@ -1,53 +1,53 @@
1SOURCE_FILE@[0; 46) 1SOURCE_FILE@0..46
2 FN_DEF@[0; 45) 2 FN_DEF@0..45
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 45) 11 BLOCK_EXPR@9..45
12 BLOCK@[9; 45) 12 BLOCK@9..45
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 31) 15 LET_STMT@15..31
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PLACEHOLDER_PAT@[19; 20) 18 PLACEHOLDER_PAT@19..20
19 UNDERSCORE@[19; 20) "_" 19 UNDERSCORE@19..20 "_"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 EQ@[21; 22) "=" 21 EQ@21..22 "="
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 BIN_EXPR@[23; 30) 23 BIN_EXPR@23..30
24 BLOCK_EXPR@[23; 26) 24 BLOCK_EXPR@23..26
25 BLOCK@[23; 26) 25 BLOCK@23..26
26 L_CURLY@[23; 24) "{" 26 L_CURLY@23..24 "{"
27 LITERAL@[24; 25) 27 LITERAL@24..25
28 INT_NUMBER@[24; 25) "1" 28 INT_NUMBER@24..25 "1"
29 R_CURLY@[25; 26) "}" 29 R_CURLY@25..26 "}"
30 WHITESPACE@[26; 27) " " 30 WHITESPACE@26..27 " "
31 AMP@[27; 28) "&" 31 AMP@27..28 "&"
32 WHITESPACE@[28; 29) " " 32 WHITESPACE@28..29 " "
33 LITERAL@[29; 30) 33 LITERAL@29..30
34 INT_NUMBER@[29; 30) "2" 34 INT_NUMBER@29..30 "2"
35 SEMICOLON@[30; 31) ";" 35 SEMICOLON@30..31 ";"
36 WHITESPACE@[31; 36) "\n " 36 WHITESPACE@31..36 "\n "
37 EXPR_STMT@[36; 39) 37 EXPR_STMT@36..39
38 BLOCK_EXPR@[36; 39) 38 BLOCK_EXPR@36..39
39 BLOCK@[36; 39) 39 BLOCK@36..39
40 L_CURLY@[36; 37) "{" 40 L_CURLY@36..37 "{"
41 LITERAL@[37; 38) 41 LITERAL@37..38
42 INT_NUMBER@[37; 38) "1" 42 INT_NUMBER@37..38 "1"
43 R_CURLY@[38; 39) "}" 43 R_CURLY@38..39 "}"
44 WHITESPACE@[39; 40) " " 44 WHITESPACE@39..40 " "
45 EXPR_STMT@[40; 43) 45 EXPR_STMT@40..43
46 REF_EXPR@[40; 42) 46 REF_EXPR@40..42
47 AMP@[40; 41) "&" 47 AMP@40..41 "&"
48 LITERAL@[41; 42) 48 LITERAL@41..42
49 INT_NUMBER@[41; 42) "2" 49 INT_NUMBER@41..42 "2"
50 SEMICOLON@[42; 43) ";" 50 SEMICOLON@42..43 ";"
51 WHITESPACE@[43; 44) "\n" 51 WHITESPACE@43..44 "\n"
52 R_CURLY@[44; 45) "}" 52 R_CURLY@44..45 "}"
53 WHITESPACE@[45; 46) "\n" 53 WHITESPACE@45..46 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rast
index 559ffb578..218b3ec9e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rast
@@ -1,96 +1,96 @@
1SOURCE_FILE@[0; 97) 1SOURCE_FILE@0..97
2 FN_DEF@[0; 96) 2 FN_DEF@0..96
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 96) 11 BLOCK_EXPR@9..96
12 BLOCK@[9; 96) 12 BLOCK@9..96
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 28) 15 EXPR_STMT@15..28
16 MATCH_EXPR@[15; 27) 16 MATCH_EXPR@15..27
17 MATCH_KW@[15; 20) "match" 17 MATCH_KW@15..20 "match"
18 WHITESPACE@[20; 21) " " 18 WHITESPACE@20..21 " "
19 TUPLE_EXPR@[21; 23) 19 TUPLE_EXPR@21..23
20 L_PAREN@[21; 22) "(" 20 L_PAREN@21..22 "("
21 R_PAREN@[22; 23) ")" 21 R_PAREN@22..23 ")"
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 MATCH_ARM_LIST@[24; 27) 23 MATCH_ARM_LIST@24..27
24 L_CURLY@[24; 25) "{" 24 L_CURLY@24..25 "{"
25 WHITESPACE@[25; 26) " " 25 WHITESPACE@25..26 " "
26 R_CURLY@[26; 27) "}" 26 R_CURLY@26..27 "}"
27 SEMICOLON@[27; 28) ";" 27 SEMICOLON@27..28 ";"
28 WHITESPACE@[28; 33) "\n " 28 WHITESPACE@28..33 "\n "
29 EXPR_STMT@[33; 44) 29 EXPR_STMT@33..44
30 MATCH_EXPR@[33; 43) 30 MATCH_EXPR@33..43
31 MATCH_KW@[33; 38) "match" 31 MATCH_KW@33..38 "match"
32 WHITESPACE@[38; 39) " " 32 WHITESPACE@38..39 " "
33 PATH_EXPR@[39; 40) 33 PATH_EXPR@39..40
34 PATH@[39; 40) 34 PATH@39..40
35 PATH_SEGMENT@[39; 40) 35 PATH_SEGMENT@39..40
36 NAME_REF@[39; 40) 36 NAME_REF@39..40
37 IDENT@[39; 40) "S" 37 IDENT@39..40 "S"
38 WHITESPACE@[40; 41) " " 38 WHITESPACE@40..41 " "
39 MATCH_ARM_LIST@[41; 43) 39 MATCH_ARM_LIST@41..43
40 L_CURLY@[41; 42) "{" 40 L_CURLY@41..42 "{"
41 R_CURLY@[42; 43) "}" 41 R_CURLY@42..43 "}"
42 SEMICOLON@[43; 44) ";" 42 SEMICOLON@43..44 ";"
43 WHITESPACE@[44; 49) "\n " 43 WHITESPACE@44..49 "\n "
44 EXPR_STMT@[49; 71) 44 EXPR_STMT@49..71
45 MATCH_EXPR@[49; 70) 45 MATCH_EXPR@49..70
46 MATCH_KW@[49; 54) "match" 46 MATCH_KW@49..54 "match"
47 WHITESPACE@[54; 55) " " 47 WHITESPACE@54..55 " "
48 BLOCK_EXPR@[55; 58) 48 BLOCK_EXPR@55..58
49 BLOCK@[55; 58) 49 BLOCK@55..58
50 L_CURLY@[55; 56) "{" 50 L_CURLY@55..56 "{"
51 WHITESPACE@[56; 57) " " 51 WHITESPACE@56..57 " "
52 R_CURLY@[57; 58) "}" 52 R_CURLY@57..58 "}"
53 WHITESPACE@[58; 59) " " 53 WHITESPACE@58..59 " "
54 MATCH_ARM_LIST@[59; 70) 54 MATCH_ARM_LIST@59..70
55 L_CURLY@[59; 60) "{" 55 L_CURLY@59..60 "{"
56 WHITESPACE@[60; 61) " " 56 WHITESPACE@60..61 " "
57 MATCH_ARM@[61; 68) 57 MATCH_ARM@61..68
58 PLACEHOLDER_PAT@[61; 62) 58 PLACEHOLDER_PAT@61..62
59 UNDERSCORE@[61; 62) "_" 59 UNDERSCORE@61..62 "_"
60 WHITESPACE@[62; 63) " " 60 WHITESPACE@62..63 " "
61 FAT_ARROW@[63; 65) "=>" 61 FAT_ARROW@63..65 "=>"
62 WHITESPACE@[65; 66) " " 62 WHITESPACE@65..66 " "
63 TUPLE_EXPR@[66; 68) 63 TUPLE_EXPR@66..68
64 L_PAREN@[66; 67) "(" 64 L_PAREN@66..67 "("
65 R_PAREN@[67; 68) ")" 65 R_PAREN@67..68 ")"
66 WHITESPACE@[68; 69) " " 66 WHITESPACE@68..69 " "
67 R_CURLY@[69; 70) "}" 67 R_CURLY@69..70 "}"
68 SEMICOLON@[70; 71) ";" 68 SEMICOLON@70..71 ";"
69 WHITESPACE@[71; 76) "\n " 69 WHITESPACE@71..76 "\n "
70 EXPR_STMT@[76; 94) 70 EXPR_STMT@76..94
71 MATCH_EXPR@[76; 93) 71 MATCH_EXPR@76..93
72 MATCH_KW@[76; 81) "match" 72 MATCH_KW@76..81 "match"
73 WHITESPACE@[81; 82) " " 73 WHITESPACE@81..82 " "
74 BLOCK_EXPR@[82; 90) 74 BLOCK_EXPR@82..90
75 BLOCK@[82; 90) 75 BLOCK@82..90
76 L_CURLY@[82; 83) "{" 76 L_CURLY@82..83 "{"
77 WHITESPACE@[83; 84) " " 77 WHITESPACE@83..84 " "
78 RECORD_LIT@[84; 88) 78 RECORD_LIT@84..88
79 PATH@[84; 85) 79 PATH@84..85
80 PATH_SEGMENT@[84; 85) 80 PATH_SEGMENT@84..85
81 NAME_REF@[84; 85) 81 NAME_REF@84..85
82 IDENT@[84; 85) "S" 82 IDENT@84..85 "S"
83 WHITESPACE@[85; 86) " " 83 WHITESPACE@85..86 " "
84 RECORD_FIELD_LIST@[86; 88) 84 RECORD_FIELD_LIST@86..88
85 L_CURLY@[86; 87) "{" 85 L_CURLY@86..87 "{"
86 R_CURLY@[87; 88) "}" 86 R_CURLY@87..88 "}"
87 WHITESPACE@[88; 89) " " 87 WHITESPACE@88..89 " "
88 R_CURLY@[89; 90) "}" 88 R_CURLY@89..90 "}"
89 WHITESPACE@[90; 91) " " 89 WHITESPACE@90..91 " "
90 MATCH_ARM_LIST@[91; 93) 90 MATCH_ARM_LIST@91..93
91 L_CURLY@[91; 92) "{" 91 L_CURLY@91..92 "{"
92 R_CURLY@[92; 93) "}" 92 R_CURLY@92..93 "}"
93 SEMICOLON@[93; 94) ";" 93 SEMICOLON@93..94 ";"
94 WHITESPACE@[94; 95) "\n" 94 WHITESPACE@94..95 "\n"
95 R_CURLY@[95; 96) "}" 95 R_CURLY@95..96 "}"
96 WHITESPACE@[96; 97) "\n" 96 WHITESPACE@96..97 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rast
index 084efaee2..b8171dc9c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rast
@@ -1,29 +1,29 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 FN_DEF@[0; 39) 2 FN_DEF@0..39
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 39) 11 BLOCK_EXPR@9..39
12 BLOCK@[9; 39) 12 BLOCK@9..39
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 22) 15 EXPR_STMT@15..22
16 RETURN_EXPR@[15; 21) 16 RETURN_EXPR@15..21
17 RETURN_KW@[15; 21) "return" 17 RETURN_KW@15..21 "return"
18 SEMICOLON@[21; 22) ";" 18 SEMICOLON@21..22 ";"
19 WHITESPACE@[22; 27) "\n " 19 WHITESPACE@22..27 "\n "
20 EXPR_STMT@[27; 37) 20 EXPR_STMT@27..37
21 RETURN_EXPR@[27; 36) 21 RETURN_EXPR@27..36
22 RETURN_KW@[27; 33) "return" 22 RETURN_KW@27..33 "return"
23 WHITESPACE@[33; 34) " " 23 WHITESPACE@33..34 " "
24 LITERAL@[34; 36) 24 LITERAL@34..36
25 INT_NUMBER@[34; 36) "92" 25 INT_NUMBER@34..36 "92"
26 SEMICOLON@[36; 37) ";" 26 SEMICOLON@36..37 ";"
27 WHITESPACE@[37; 38) "\n" 27 WHITESPACE@37..38 "\n"
28 R_CURLY@[38; 39) "}" 28 R_CURLY@38..39 "}"
29 WHITESPACE@[39; 40) "\n" 29 WHITESPACE@39..40 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast b/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast
index 64150b774..cc871ac0c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast
@@ -1,20 +1,20 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@0..21
2 TYPE_ALIAS_DEF@[0; 20) 2 TYPE_ALIAS_DEF@0..20
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 11) 5 NAME@5..11
6 IDENT@[5; 11) "Result" 6 IDENT@5..11 "Result"
7 TYPE_PARAM_LIST@[11; 14) 7 TYPE_PARAM_LIST@11..14
8 L_ANGLE@[11; 12) "<" 8 L_ANGLE@11..12 "<"
9 TYPE_PARAM@[12; 13) 9 TYPE_PARAM@12..13
10 NAME@[12; 13) 10 NAME@12..13
11 IDENT@[12; 13) "T" 11 IDENT@12..13 "T"
12 R_ANGLE@[13; 14) ">" 12 R_ANGLE@13..14 ">"
13 WHITESPACE@[14; 15) " " 13 WHITESPACE@14..15 " "
14 EQ@[15; 16) "=" 14 EQ@15..16 "="
15 WHITESPACE@[16; 17) " " 15 WHITESPACE@16..17 " "
16 TUPLE_TYPE@[17; 19) 16 TUPLE_TYPE@17..19
17 L_PAREN@[17; 18) "(" 17 L_PAREN@17..18 "("
18 R_PAREN@[18; 19) ")" 18 R_PAREN@18..19 ")"
19 SEMICOLON@[19; 20) ";" 19 SEMICOLON@19..20 ";"
20 WHITESPACE@[20; 21) "\n" 20 WHITESPACE@20..21 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast b/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast
index cbd2d5fbf..c2a73ef25 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast
@@ -1,63 +1,63 @@
1SOURCE_FILE@[0; 84) 1SOURCE_FILE@0..84
2 FN_DEF@[0; 83) 2 FN_DEF@0..83
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 83) 11 BLOCK_EXPR@9..83
12 BLOCK@[9; 83) 12 BLOCK@9..83
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 MATCH_EXPR@[15; 81) 15 MATCH_EXPR@15..81
16 MATCH_KW@[15; 20) "match" 16 MATCH_KW@15..20 "match"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@21..23
19 L_PAREN@[21; 22) "(" 19 L_PAREN@21..22 "("
20 R_PAREN@[22; 23) ")" 20 R_PAREN@22..23 ")"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 MATCH_ARM_LIST@[24; 81) 22 MATCH_ARM_LIST@24..81
23 L_CURLY@[24; 25) "{" 23 L_CURLY@24..25 "{"
24 WHITESPACE@[25; 34) "\n " 24 WHITESPACE@25..34 "\n "
25 MATCH_ARM@[34; 41) 25 MATCH_ARM@34..41
26 PLACEHOLDER_PAT@[34; 35) 26 PLACEHOLDER_PAT@34..35
27 UNDERSCORE@[34; 35) "_" 27 UNDERSCORE@34..35 "_"
28 WHITESPACE@[35; 36) " " 28 WHITESPACE@35..36 " "
29 FAT_ARROW@[36; 38) "=>" 29 FAT_ARROW@36..38 "=>"
30 WHITESPACE@[38; 39) " " 30 WHITESPACE@38..39 " "
31 BLOCK_EXPR@[39; 41) 31 BLOCK_EXPR@39..41
32 BLOCK@[39; 41) 32 BLOCK@39..41
33 L_CURLY@[39; 40) "{" 33 L_CURLY@39..40 "{"
34 R_CURLY@[40; 41) "}" 34 R_CURLY@40..41 "}"
35 WHITESPACE@[41; 50) "\n " 35 WHITESPACE@41..50 "\n "
36 MATCH_ARM@[50; 58) 36 MATCH_ARM@50..58
37 TUPLE_PAT@[50; 52) 37 TUPLE_PAT@50..52
38 L_PAREN@[50; 51) "(" 38 L_PAREN@50..51 "("
39 R_PAREN@[51; 52) ")" 39 R_PAREN@51..52 ")"
40 WHITESPACE@[52; 53) " " 40 WHITESPACE@52..53 " "
41 FAT_ARROW@[53; 55) "=>" 41 FAT_ARROW@53..55 "=>"
42 WHITESPACE@[55; 56) " " 42 WHITESPACE@55..56 " "
43 BLOCK_EXPR@[56; 58) 43 BLOCK_EXPR@56..58
44 BLOCK@[56; 58) 44 BLOCK@56..58
45 L_CURLY@[56; 57) "{" 45 L_CURLY@56..57 "{"
46 R_CURLY@[57; 58) "}" 46 R_CURLY@57..58 "}"
47 WHITESPACE@[58; 67) "\n " 47 WHITESPACE@58..67 "\n "
48 MATCH_ARM@[67; 75) 48 MATCH_ARM@67..75
49 SLICE_PAT@[67; 69) 49 SLICE_PAT@67..69
50 L_BRACK@[67; 68) "[" 50 L_BRACK@67..68 "["
51 R_BRACK@[68; 69) "]" 51 R_BRACK@68..69 "]"
52 WHITESPACE@[69; 70) " " 52 WHITESPACE@69..70 " "
53 FAT_ARROW@[70; 72) "=>" 53 FAT_ARROW@70..72 "=>"
54 WHITESPACE@[72; 73) " " 54 WHITESPACE@72..73 " "
55 BLOCK_EXPR@[73; 75) 55 BLOCK_EXPR@73..75
56 BLOCK@[73; 75) 56 BLOCK@73..75
57 L_CURLY@[73; 74) "{" 57 L_CURLY@73..74 "{"
58 R_CURLY@[74; 75) "}" 58 R_CURLY@74..75 "}"
59 WHITESPACE@[75; 80) "\n " 59 WHITESPACE@75..80 "\n "
60 R_CURLY@[80; 81) "}" 60 R_CURLY@80..81 "}"
61 WHITESPACE@[81; 82) "\n" 61 WHITESPACE@81..82 "\n"
62 R_CURLY@[82; 83) "}" 62 R_CURLY@82..83 "}"
63 WHITESPACE@[83; 84) "\n" 63 WHITESPACE@83..84 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0075_block.rast b/crates/ra_syntax/test_data/parser/inline/ok/0075_block.rast
index 5c7cb4a88..39a86d002 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0075_block.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0075_block.rast
@@ -1,90 +1,90 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@0..65
2 FN_DEF@[0; 9) 2 FN_DEF@0..9
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 BLOCK_EXPR@[7; 9) 11 BLOCK_EXPR@7..9
12 BLOCK@[7; 9) 12 BLOCK@7..9
13 L_CURLY@[7; 8) "{" 13 L_CURLY@7..8 "{"
14 R_CURLY@[8; 9) "}" 14 R_CURLY@8..9 "}"
15 WHITESPACE@[9; 10) "\n" 15 WHITESPACE@9..10 "\n"
16 FN_DEF@[10; 31) 16 FN_DEF@10..31
17 FN_KW@[10; 12) "fn" 17 FN_KW@10..12 "fn"
18 WHITESPACE@[12; 13) " " 18 WHITESPACE@12..13 " "
19 NAME@[13; 14) 19 NAME@13..14
20 IDENT@[13; 14) "b" 20 IDENT@13..14 "b"
21 PARAM_LIST@[14; 16) 21 PARAM_LIST@14..16
22 L_PAREN@[14; 15) "(" 22 L_PAREN@14..15 "("
23 R_PAREN@[15; 16) ")" 23 R_PAREN@15..16 ")"
24 WHITESPACE@[16; 17) " " 24 WHITESPACE@16..17 " "
25 BLOCK_EXPR@[17; 31) 25 BLOCK_EXPR@17..31
26 BLOCK@[17; 31) 26 BLOCK@17..31
27 L_CURLY@[17; 18) "{" 27 L_CURLY@17..18 "{"
28 WHITESPACE@[18; 19) " " 28 WHITESPACE@18..19 " "
29 LET_STMT@[19; 29) 29 LET_STMT@19..29
30 LET_KW@[19; 22) "let" 30 LET_KW@19..22 "let"
31 WHITESPACE@[22; 23) " " 31 WHITESPACE@22..23 " "
32 PLACEHOLDER_PAT@[23; 24) 32 PLACEHOLDER_PAT@23..24
33 UNDERSCORE@[23; 24) "_" 33 UNDERSCORE@23..24 "_"
34 WHITESPACE@[24; 25) " " 34 WHITESPACE@24..25 " "
35 EQ@[25; 26) "=" 35 EQ@25..26 "="
36 WHITESPACE@[26; 27) " " 36 WHITESPACE@26..27 " "
37 LITERAL@[27; 28) 37 LITERAL@27..28
38 INT_NUMBER@[27; 28) "1" 38 INT_NUMBER@27..28 "1"
39 SEMICOLON@[28; 29) ";" 39 SEMICOLON@28..29 ";"
40 WHITESPACE@[29; 30) " " 40 WHITESPACE@29..30 " "
41 R_CURLY@[30; 31) "}" 41 R_CURLY@30..31 "}"
42 WHITESPACE@[31; 32) "\n" 42 WHITESPACE@31..32 "\n"
43 FN_DEF@[32; 48) 43 FN_DEF@32..48
44 FN_KW@[32; 34) "fn" 44 FN_KW@32..34 "fn"
45 WHITESPACE@[34; 35) " " 45 WHITESPACE@34..35 " "
46 NAME@[35; 36) 46 NAME@35..36
47 IDENT@[35; 36) "c" 47 IDENT@35..36 "c"
48 PARAM_LIST@[36; 38) 48 PARAM_LIST@36..38
49 L_PAREN@[36; 37) "(" 49 L_PAREN@36..37 "("
50 R_PAREN@[37; 38) ")" 50 R_PAREN@37..38 ")"
51 WHITESPACE@[38; 39) " " 51 WHITESPACE@38..39 " "
52 BLOCK_EXPR@[39; 48) 52 BLOCK_EXPR@39..48
53 BLOCK@[39; 48) 53 BLOCK@39..48
54 L_CURLY@[39; 40) "{" 54 L_CURLY@39..40 "{"
55 WHITESPACE@[40; 41) " " 55 WHITESPACE@40..41 " "
56 EXPR_STMT@[41; 43) 56 EXPR_STMT@41..43
57 LITERAL@[41; 42) 57 LITERAL@41..42
58 INT_NUMBER@[41; 42) "1" 58 INT_NUMBER@41..42 "1"
59 SEMICOLON@[42; 43) ";" 59 SEMICOLON@42..43 ";"
60 WHITESPACE@[43; 44) " " 60 WHITESPACE@43..44 " "
61 EXPR_STMT@[44; 46) 61 EXPR_STMT@44..46
62 LITERAL@[44; 45) 62 LITERAL@44..45
63 INT_NUMBER@[44; 45) "2" 63 INT_NUMBER@44..45 "2"
64 SEMICOLON@[45; 46) ";" 64 SEMICOLON@45..46 ";"
65 WHITESPACE@[46; 47) " " 65 WHITESPACE@46..47 " "
66 R_CURLY@[47; 48) "}" 66 R_CURLY@47..48 "}"
67 WHITESPACE@[48; 49) "\n" 67 WHITESPACE@48..49 "\n"
68 FN_DEF@[49; 64) 68 FN_DEF@49..64
69 FN_KW@[49; 51) "fn" 69 FN_KW@49..51 "fn"
70 WHITESPACE@[51; 52) " " 70 WHITESPACE@51..52 " "
71 NAME@[52; 53) 71 NAME@52..53
72 IDENT@[52; 53) "d" 72 IDENT@52..53 "d"
73 PARAM_LIST@[53; 55) 73 PARAM_LIST@53..55
74 L_PAREN@[53; 54) "(" 74 L_PAREN@53..54 "("
75 R_PAREN@[54; 55) ")" 75 R_PAREN@54..55 ")"
76 WHITESPACE@[55; 56) " " 76 WHITESPACE@55..56 " "
77 BLOCK_EXPR@[56; 64) 77 BLOCK_EXPR@56..64
78 BLOCK@[56; 64) 78 BLOCK@56..64
79 L_CURLY@[56; 57) "{" 79 L_CURLY@56..57 "{"
80 WHITESPACE@[57; 58) " " 80 WHITESPACE@57..58 " "
81 EXPR_STMT@[58; 60) 81 EXPR_STMT@58..60
82 LITERAL@[58; 59) 82 LITERAL@58..59
83 INT_NUMBER@[58; 59) "1" 83 INT_NUMBER@58..59 "1"
84 SEMICOLON@[59; 60) ";" 84 SEMICOLON@59..60 ";"
85 WHITESPACE@[60; 61) " " 85 WHITESPACE@60..61 " "
86 LITERAL@[61; 62) 86 LITERAL@61..62
87 INT_NUMBER@[61; 62) "2" 87 INT_NUMBER@61..62 "2"
88 WHITESPACE@[62; 63) " " 88 WHITESPACE@62..63 " "
89 R_CURLY@[63; 64) "}" 89 R_CURLY@63..64 "}"
90 WHITESPACE@[64; 65) "\n" 90 WHITESPACE@64..65 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rast b/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rast
index 8e4b63f02..9621ba59e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rast
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 29) 1SOURCE_FILE@0..29
2 FN_DEF@[0; 28) 2 FN_DEF@0..28
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 TYPE_PARAM_LIST@[6; 9) 7 TYPE_PARAM_LIST@6..9
8 L_ANGLE@[6; 7) "<" 8 L_ANGLE@6..7 "<"
9 TYPE_PARAM@[7; 8) 9 TYPE_PARAM@7..8
10 NAME@[7; 8) 10 NAME@7..8
11 IDENT@[7; 8) "T" 11 IDENT@7..8 "T"
12 R_ANGLE@[8; 9) ">" 12 R_ANGLE@8..9 ">"
13 PARAM_LIST@[9; 11) 13 PARAM_LIST@9..11
14 L_PAREN@[9; 10) "(" 14 L_PAREN@9..10 "("
15 R_PAREN@[10; 11) ")" 15 R_PAREN@10..11 ")"
16 WHITESPACE@[11; 12) " " 16 WHITESPACE@11..12 " "
17 WHERE_CLAUSE@[12; 25) 17 WHERE_CLAUSE@12..25
18 WHERE_KW@[12; 17) "where" 18 WHERE_KW@12..17 "where"
19 WHITESPACE@[17; 18) " " 19 WHITESPACE@17..18 " "
20 WHERE_PRED@[18; 25) 20 WHERE_PRED@18..25
21 PATH_TYPE@[18; 19) 21 PATH_TYPE@18..19
22 PATH@[18; 19) 22 PATH@18..19
23 PATH_SEGMENT@[18; 19) 23 PATH_SEGMENT@18..19
24 NAME_REF@[18; 19) 24 NAME_REF@18..19
25 IDENT@[18; 19) "T" 25 IDENT@18..19 "T"
26 COLON@[19; 20) ":" 26 COLON@19..20 ":"
27 WHITESPACE@[20; 21) " " 27 WHITESPACE@20..21 " "
28 TYPE_BOUND_LIST@[21; 25) 28 TYPE_BOUND_LIST@21..25
29 TYPE_BOUND@[21; 25) 29 TYPE_BOUND@21..25
30 PATH_TYPE@[21; 25) 30 PATH_TYPE@21..25
31 PATH@[21; 25) 31 PATH@21..25
32 PATH_SEGMENT@[21; 25) 32 PATH_SEGMENT@21..25
33 NAME_REF@[21; 25) 33 NAME_REF@21..25
34 IDENT@[21; 25) "Copy" 34 IDENT@21..25 "Copy"
35 WHITESPACE@[25; 26) " " 35 WHITESPACE@25..26 " "
36 BLOCK_EXPR@[26; 28) 36 BLOCK_EXPR@26..28
37 BLOCK@[26; 28) 37 BLOCK@26..28
38 L_CURLY@[26; 27) "{" 38 L_CURLY@26..27 "{"
39 R_CURLY@[27; 28) "}" 39 R_CURLY@27..28 "}"
40 WHITESPACE@[28; 29) "\n" 40 WHITESPACE@28..29 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rast
index bb9f674e1..ed9d62c5f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rast
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@0..21
2 FN_DEF@[0; 20) 2 FN_DEF@0..20
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 20) 11 BLOCK_EXPR@9..20
12 BLOCK@[9; 20) 12 BLOCK@9..20
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 18) 15 EXPR_STMT@15..18
16 TRY_EXPR@[15; 17) 16 TRY_EXPR@15..17
17 PATH_EXPR@[15; 16) 17 PATH_EXPR@15..16
18 PATH@[15; 16) 18 PATH@15..16
19 PATH_SEGMENT@[15; 16) 19 PATH_SEGMENT@15..16
20 NAME_REF@[15; 16) 20 NAME_REF@15..16
21 IDENT@[15; 16) "x" 21 IDENT@15..16 "x"
22 QUESTION@[16; 17) "?" 22 QUESTION@16..17 "?"
23 SEMICOLON@[17; 18) ";" 23 SEMICOLON@17..18 ";"
24 WHITESPACE@[18; 19) "\n" 24 WHITESPACE@18..19 "\n"
25 R_CURLY@[19; 20) "}" 25 R_CURLY@19..20 "}"
26 WHITESPACE@[20; 21) "\n" 26 WHITESPACE@20..21 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rast b/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rast
index 9a38192d9..a08e16fab 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@0..16
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@0..15
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 8) 5 NAME@5..8
6 IDENT@[5; 8) "Foo" 6 IDENT@5..8 "Foo"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 EQ@[9; 10) "=" 8 EQ@9..10 "="
9 WHITESPACE@[10; 11) " " 9 WHITESPACE@10..11 " "
10 PATH_TYPE@[11; 14) 10 PATH_TYPE@11..14
11 PATH@[11; 14) 11 PATH@11..14
12 PATH_SEGMENT@[11; 14) 12 PATH_SEGMENT@11..14
13 NAME_REF@[11; 14) 13 NAME_REF@11..14
14 IDENT@[11; 14) "Bar" 14 IDENT@11..14 "Bar"
15 SEMICOLON@[14; 15) ";" 15 SEMICOLON@14..15 ";"
16 WHITESPACE@[15; 16) "\n" 16 WHITESPACE@15..16 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_def.rast b/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_def.rast
index 4c2863ba7..a00ab40f9 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_def.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_def.rast
@@ -1,14 +1,14 @@
1SOURCE_FILE@[0; 12) 1SOURCE_FILE@0..12
2 IMPL_DEF@[0; 11) 2 IMPL_DEF@0..11
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 8) 5 PATH_TYPE@5..8
6 PATH@[5; 8) 6 PATH@5..8
7 PATH_SEGMENT@[5; 8) 7 PATH_SEGMENT@5..8
8 NAME_REF@[5; 8) 8 NAME_REF@5..8
9 IDENT@[5; 8) "Foo" 9 IDENT@5..8 "Foo"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 ITEM_LIST@[9; 11) 11 ITEM_LIST@9..11
12 L_CURLY@[9; 10) "{" 12 L_CURLY@9..10 "{"
13 R_CURLY@[10; 11) "}" 13 R_CURLY@10..11 "}"
14 WHITESPACE@[11; 12) "\n" 14 WHITESPACE@11..12 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rast b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rast
index b8bafc220..5141ce70d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rast
@@ -1,96 +1,96 @@
1SOURCE_FILE@[0; 89) 1SOURCE_FILE@0..89
2 FN_DEF@[0; 88) 2 FN_DEF@0..88
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 88) 11 BLOCK_EXPR@9..88
12 BLOCK@[9; 88) 12 BLOCK@9..88
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 27) 15 LET_STMT@15..27
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 BIND_PAT@[19; 20) 18 BIND_PAT@19..20
19 NAME@[19; 20) 19 NAME@19..20
20 IDENT@[19; 20) "x" 20 IDENT@19..20 "x"
21 WHITESPACE@[20; 21) " " 21 WHITESPACE@20..21 " "
22 EQ@[21; 22) "=" 22 EQ@21..22 "="
23 WHITESPACE@[22; 23) " " 23 WHITESPACE@22..23 " "
24 RANGE_EXPR@[23; 26) 24 RANGE_EXPR@23..26
25 LITERAL@[23; 24) 25 LITERAL@23..24
26 INT_NUMBER@[23; 24) "1" 26 INT_NUMBER@23..24 "1"
27 DOT2@[24; 26) ".." 27 DOT2@24..26 ".."
28 SEMICOLON@[26; 27) ";" 28 SEMICOLON@26..27 ";"
29 WHITESPACE@[27; 32) "\n " 29 WHITESPACE@27..32 "\n "
30 EXPR_STMT@[32; 54) 30 EXPR_STMT@32..54
31 MATCH_EXPR@[32; 53) 31 MATCH_EXPR@32..53
32 MATCH_KW@[32; 37) "match" 32 MATCH_KW@32..37 "match"
33 WHITESPACE@[37; 38) " " 33 WHITESPACE@37..38 " "
34 RANGE_EXPR@[38; 41) 34 RANGE_EXPR@38..41
35 LITERAL@[38; 39) 35 LITERAL@38..39
36 INT_NUMBER@[38; 39) "1" 36 INT_NUMBER@38..39 "1"
37 DOT2@[39; 41) ".." 37 DOT2@39..41 ".."
38 WHITESPACE@[41; 42) " " 38 WHITESPACE@41..42 " "
39 MATCH_ARM_LIST@[42; 53) 39 MATCH_ARM_LIST@42..53
40 L_CURLY@[42; 43) "{" 40 L_CURLY@42..43 "{"
41 WHITESPACE@[43; 44) " " 41 WHITESPACE@43..44 " "
42 MATCH_ARM@[44; 51) 42 MATCH_ARM@44..51
43 PLACEHOLDER_PAT@[44; 45) 43 PLACEHOLDER_PAT@44..45
44 UNDERSCORE@[44; 45) "_" 44 UNDERSCORE@44..45 "_"
45 WHITESPACE@[45; 46) " " 45 WHITESPACE@45..46 " "
46 FAT_ARROW@[46; 48) "=>" 46 FAT_ARROW@46..48 "=>"
47 WHITESPACE@[48; 49) " " 47 WHITESPACE@48..49 " "
48 TUPLE_EXPR@[49; 51) 48 TUPLE_EXPR@49..51
49 L_PAREN@[49; 50) "(" 49 L_PAREN@49..50 "("
50 R_PAREN@[50; 51) ")" 50 R_PAREN@50..51 ")"
51 WHITESPACE@[51; 52) " " 51 WHITESPACE@51..52 " "
52 R_CURLY@[52; 53) "}" 52 R_CURLY@52..53 "}"
53 SEMICOLON@[53; 54) ";" 53 SEMICOLON@53..54 ";"
54 WHITESPACE@[54; 59) "\n " 54 WHITESPACE@54..59 "\n "
55 EXPR_STMT@[59; 86) 55 EXPR_STMT@59..86
56 MATCH_EXPR@[59; 85) 56 MATCH_EXPR@59..85
57 MATCH_KW@[59; 64) "match" 57 MATCH_KW@59..64 "match"
58 WHITESPACE@[64; 65) " " 58 WHITESPACE@64..65 " "
59 RANGE_EXPR@[65; 73) 59 RANGE_EXPR@65..73
60 METHOD_CALL_EXPR@[65; 70) 60 METHOD_CALL_EXPR@65..70
61 PATH_EXPR@[65; 66) 61 PATH_EXPR@65..66
62 PATH@[65; 66) 62 PATH@65..66
63 PATH_SEGMENT@[65; 66) 63 PATH_SEGMENT@65..66
64 NAME_REF@[65; 66) 64 NAME_REF@65..66
65 IDENT@[65; 66) "a" 65 IDENT@65..66 "a"
66 DOT@[66; 67) "." 66 DOT@66..67 "."
67 NAME_REF@[67; 68) 67 NAME_REF@67..68
68 IDENT@[67; 68) "b" 68 IDENT@67..68 "b"
69 ARG_LIST@[68; 70) 69 ARG_LIST@68..70
70 L_PAREN@[68; 69) "(" 70 L_PAREN@68..69 "("
71 R_PAREN@[69; 70) ")" 71 R_PAREN@69..70 ")"
72 DOT2@[70; 72) ".." 72 DOT2@70..72 ".."
73 PATH_EXPR@[72; 73) 73 PATH_EXPR@72..73
74 PATH@[72; 73) 74 PATH@72..73
75 PATH_SEGMENT@[72; 73) 75 PATH_SEGMENT@72..73
76 NAME_REF@[72; 73) 76 NAME_REF@72..73
77 IDENT@[72; 73) "S" 77 IDENT@72..73 "S"
78 WHITESPACE@[73; 74) " " 78 WHITESPACE@73..74 " "
79 MATCH_ARM_LIST@[74; 85) 79 MATCH_ARM_LIST@74..85
80 L_CURLY@[74; 75) "{" 80 L_CURLY@74..75 "{"
81 WHITESPACE@[75; 76) " " 81 WHITESPACE@75..76 " "
82 MATCH_ARM@[76; 83) 82 MATCH_ARM@76..83
83 PLACEHOLDER_PAT@[76; 77) 83 PLACEHOLDER_PAT@76..77
84 UNDERSCORE@[76; 77) "_" 84 UNDERSCORE@76..77 "_"
85 WHITESPACE@[77; 78) " " 85 WHITESPACE@77..78 " "
86 FAT_ARROW@[78; 80) "=>" 86 FAT_ARROW@78..80 "=>"
87 WHITESPACE@[80; 81) " " 87 WHITESPACE@80..81 " "
88 TUPLE_EXPR@[81; 83) 88 TUPLE_EXPR@81..83
89 L_PAREN@[81; 82) "(" 89 L_PAREN@81..82 "("
90 R_PAREN@[82; 83) ")" 90 R_PAREN@82..83 ")"
91 WHITESPACE@[83; 84) " " 91 WHITESPACE@83..84 " "
92 R_CURLY@[84; 85) "}" 92 R_CURLY@84..85 "}"
93 SEMICOLON@[85; 86) ";" 93 SEMICOLON@85..86 ";"
94 WHITESPACE@[86; 87) "\n" 94 WHITESPACE@86..87 "\n"
95 R_CURLY@[87; 88) "}" 95 R_CURLY@87..88 "}"
96 WHITESPACE@[88; 89) "\n" 96 WHITESPACE@88..89 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rast
index 00c4e4220..cdbe64180 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rast
@@ -1,243 +1,243 @@
1SOURCE_FILE@[0; 200) 1SOURCE_FILE@0..200
2 TYPE_ALIAS_DEF@[0; 28) 2 TYPE_ALIAS_DEF@0..28
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 FOR_TYPE@[9; 27) 10 FOR_TYPE@9..27
11 FOR_KW@[9; 12) "for" 11 FOR_KW@9..12 "for"
12 TYPE_PARAM_LIST@[12; 16) 12 TYPE_PARAM_LIST@12..16
13 L_ANGLE@[12; 13) "<" 13 L_ANGLE@12..13 "<"
14 LIFETIME_PARAM@[13; 15) 14 LIFETIME_PARAM@13..15
15 LIFETIME@[13; 15) "\'a" 15 LIFETIME@13..15 "\'a"
16 R_ANGLE@[15; 16) ">" 16 R_ANGLE@15..16 ">"
17 WHITESPACE@[16; 17) " " 17 WHITESPACE@16..17 " "
18 FN_POINTER_TYPE@[17; 27) 18 FN_POINTER_TYPE@17..27
19 FN_KW@[17; 19) "fn" 19 FN_KW@17..19 "fn"
20 PARAM_LIST@[19; 21) 20 PARAM_LIST@19..21
21 L_PAREN@[19; 20) "(" 21 L_PAREN@19..20 "("
22 R_PAREN@[20; 21) ")" 22 R_PAREN@20..21 ")"
23 WHITESPACE@[21; 22) " " 23 WHITESPACE@21..22 " "
24 RET_TYPE@[22; 27) 24 RET_TYPE@22..27
25 THIN_ARROW@[22; 24) "->" 25 THIN_ARROW@22..24 "->"
26 WHITESPACE@[24; 25) " " 26 WHITESPACE@24..25 " "
27 TUPLE_TYPE@[25; 27) 27 TUPLE_TYPE@25..27
28 L_PAREN@[25; 26) "(" 28 L_PAREN@25..26 "("
29 R_PAREN@[26; 27) ")" 29 R_PAREN@26..27 ")"
30 SEMICOLON@[27; 28) ";" 30 SEMICOLON@27..28 ";"
31 WHITESPACE@[28; 29) "\n" 31 WHITESPACE@28..29 "\n"
32 FN_DEF@[29; 79) 32 FN_DEF@29..79
33 FN_KW@[29; 31) "fn" 33 FN_KW@29..31 "fn"
34 WHITESPACE@[31; 32) " " 34 WHITESPACE@31..32 " "
35 NAME@[32; 35) 35 NAME@32..35
36 IDENT@[32; 35) "foo" 36 IDENT@32..35 "foo"
37 TYPE_PARAM_LIST@[35; 38) 37 TYPE_PARAM_LIST@35..38
38 L_ANGLE@[35; 36) "<" 38 L_ANGLE@35..36 "<"
39 TYPE_PARAM@[36; 37) 39 TYPE_PARAM@36..37
40 NAME@[36; 37) 40 NAME@36..37
41 IDENT@[36; 37) "T" 41 IDENT@36..37 "T"
42 R_ANGLE@[37; 38) ">" 42 R_ANGLE@37..38 ">"
43 PARAM_LIST@[38; 46) 43 PARAM_LIST@38..46
44 L_PAREN@[38; 39) "(" 44 L_PAREN@38..39 "("
45 PARAM@[39; 45) 45 PARAM@39..45
46 BIND_PAT@[39; 41) 46 BIND_PAT@39..41
47 NAME@[39; 41) 47 NAME@39..41
48 IDENT@[39; 41) "_t" 48 IDENT@39..41 "_t"
49 COLON@[41; 42) ":" 49 COLON@41..42 ":"
50 WHITESPACE@[42; 43) " " 50 WHITESPACE@42..43 " "
51 REFERENCE_TYPE@[43; 45) 51 REFERENCE_TYPE@43..45
52 AMP@[43; 44) "&" 52 AMP@43..44 "&"
53 PATH_TYPE@[44; 45) 53 PATH_TYPE@44..45
54 PATH@[44; 45) 54 PATH@44..45
55 PATH_SEGMENT@[44; 45) 55 PATH_SEGMENT@44..45
56 NAME_REF@[44; 45) 56 NAME_REF@44..45
57 IDENT@[44; 45) "T" 57 IDENT@44..45 "T"
58 R_PAREN@[45; 46) ")" 58 R_PAREN@45..46 ")"
59 WHITESPACE@[46; 47) " " 59 WHITESPACE@46..47 " "
60 WHERE_CLAUSE@[47; 76) 60 WHERE_CLAUSE@47..76
61 WHERE_KW@[47; 52) "where" 61 WHERE_KW@47..52 "where"
62 WHITESPACE@[52; 53) " " 62 WHITESPACE@52..53 " "
63 WHERE_PRED@[53; 76) 63 WHERE_PRED@53..76
64 FOR_TYPE@[53; 66) 64 FOR_TYPE@53..66
65 FOR_KW@[53; 56) "for" 65 FOR_KW@53..56 "for"
66 TYPE_PARAM_LIST@[56; 60) 66 TYPE_PARAM_LIST@56..60
67 L_ANGLE@[56; 57) "<" 67 L_ANGLE@56..57 "<"
68 LIFETIME_PARAM@[57; 59) 68 LIFETIME_PARAM@57..59
69 LIFETIME@[57; 59) "\'a" 69 LIFETIME@57..59 "\'a"
70 R_ANGLE@[59; 60) ">" 70 R_ANGLE@59..60 ">"
71 WHITESPACE@[60; 61) " " 71 WHITESPACE@60..61 " "
72 REFERENCE_TYPE@[61; 66) 72 REFERENCE_TYPE@61..66
73 AMP@[61; 62) "&" 73 AMP@61..62 "&"
74 LIFETIME@[62; 64) "\'a" 74 LIFETIME@62..64 "\'a"
75 WHITESPACE@[64; 65) " " 75 WHITESPACE@64..65 " "
76 PATH_TYPE@[65; 66) 76 PATH_TYPE@65..66
77 PATH@[65; 66) 77 PATH@65..66
78 PATH_SEGMENT@[65; 66) 78 PATH_SEGMENT@65..66
79 NAME_REF@[65; 66) 79 NAME_REF@65..66
80 IDENT@[65; 66) "T" 80 IDENT@65..66 "T"
81 COLON@[66; 67) ":" 81 COLON@66..67 ":"
82 WHITESPACE@[67; 68) " " 82 WHITESPACE@67..68 " "
83 TYPE_BOUND_LIST@[68; 76) 83 TYPE_BOUND_LIST@68..76
84 TYPE_BOUND@[68; 76) 84 TYPE_BOUND@68..76
85 PATH_TYPE@[68; 76) 85 PATH_TYPE@68..76
86 PATH@[68; 76) 86 PATH@68..76
87 PATH_SEGMENT@[68; 76) 87 PATH_SEGMENT@68..76
88 NAME_REF@[68; 76) 88 NAME_REF@68..76
89 IDENT@[68; 76) "Iterator" 89 IDENT@68..76 "Iterator"
90 WHITESPACE@[76; 77) " " 90 WHITESPACE@76..77 " "
91 BLOCK_EXPR@[77; 79) 91 BLOCK_EXPR@77..79
92 BLOCK@[77; 79) 92 BLOCK@77..79
93 L_CURLY@[77; 78) "{" 93 L_CURLY@77..78 "{"
94 R_CURLY@[78; 79) "}" 94 R_CURLY@78..79 "}"
95 WHITESPACE@[79; 80) "\n" 95 WHITESPACE@79..80 "\n"
96 FN_DEF@[80; 134) 96 FN_DEF@80..134
97 FN_KW@[80; 82) "fn" 97 FN_KW@80..82 "fn"
98 WHITESPACE@[82; 83) " " 98 WHITESPACE@82..83 " "
99 NAME@[83; 86) 99 NAME@83..86
100 IDENT@[83; 86) "bar" 100 IDENT@83..86 "bar"
101 TYPE_PARAM_LIST@[86; 89) 101 TYPE_PARAM_LIST@86..89
102 L_ANGLE@[86; 87) "<" 102 L_ANGLE@86..87 "<"
103 TYPE_PARAM@[87; 88) 103 TYPE_PARAM@87..88
104 NAME@[87; 88) 104 NAME@87..88
105 IDENT@[87; 88) "T" 105 IDENT@87..88 "T"
106 R_ANGLE@[88; 89) ">" 106 R_ANGLE@88..89 ">"
107 PARAM_LIST@[89; 97) 107 PARAM_LIST@89..97
108 L_PAREN@[89; 90) "(" 108 L_PAREN@89..90 "("
109 PARAM@[90; 96) 109 PARAM@90..96
110 BIND_PAT@[90; 92) 110 BIND_PAT@90..92
111 NAME@[90; 92) 111 NAME@90..92
112 IDENT@[90; 92) "_t" 112 IDENT@90..92 "_t"
113 COLON@[92; 93) ":" 113 COLON@92..93 ":"
114 WHITESPACE@[93; 94) " " 114 WHITESPACE@93..94 " "
115 REFERENCE_TYPE@[94; 96) 115 REFERENCE_TYPE@94..96
116 AMP@[94; 95) "&" 116 AMP@94..95 "&"
117 PATH_TYPE@[95; 96) 117 PATH_TYPE@95..96
118 PATH@[95; 96) 118 PATH@95..96
119 PATH_SEGMENT@[95; 96) 119 PATH_SEGMENT@95..96
120 NAME_REF@[95; 96) 120 NAME_REF@95..96
121 IDENT@[95; 96) "T" 121 IDENT@95..96 "T"
122 R_PAREN@[96; 97) ")" 122 R_PAREN@96..97 ")"
123 WHITESPACE@[97; 98) " " 123 WHITESPACE@97..98 " "
124 WHERE_CLAUSE@[98; 131) 124 WHERE_CLAUSE@98..131
125 WHERE_KW@[98; 103) "where" 125 WHERE_KW@98..103 "where"
126 WHITESPACE@[103; 104) " " 126 WHITESPACE@103..104 " "
127 WHERE_PRED@[104; 131) 127 WHERE_PRED@104..131
128 FOR_TYPE@[104; 121) 128 FOR_TYPE@104..121
129 FOR_KW@[104; 107) "for" 129 FOR_KW@104..107 "for"
130 TYPE_PARAM_LIST@[107; 111) 130 TYPE_PARAM_LIST@107..111
131 L_ANGLE@[107; 108) "<" 131 L_ANGLE@107..108 "<"
132 LIFETIME_PARAM@[108; 110) 132 LIFETIME_PARAM@108..110
133 LIFETIME@[108; 110) "\'a" 133 LIFETIME@108..110 "\'a"
134 R_ANGLE@[110; 111) ">" 134 R_ANGLE@110..111 ">"
135 WHITESPACE@[111; 112) " " 135 WHITESPACE@111..112 " "
136 REFERENCE_TYPE@[112; 121) 136 REFERENCE_TYPE@112..121
137 AMP@[112; 113) "&" 137 AMP@112..113 "&"
138 LIFETIME@[113; 115) "\'a" 138 LIFETIME@113..115 "\'a"
139 WHITESPACE@[115; 116) " " 139 WHITESPACE@115..116 " "
140 MUT_KW@[116; 119) "mut" 140 MUT_KW@116..119 "mut"
141 WHITESPACE@[119; 120) " " 141 WHITESPACE@119..120 " "
142 PATH_TYPE@[120; 121) 142 PATH_TYPE@120..121
143 PATH@[120; 121) 143 PATH@120..121
144 PATH_SEGMENT@[120; 121) 144 PATH_SEGMENT@120..121
145 NAME_REF@[120; 121) 145 NAME_REF@120..121
146 IDENT@[120; 121) "T" 146 IDENT@120..121 "T"
147 COLON@[121; 122) ":" 147 COLON@121..122 ":"
148 WHITESPACE@[122; 123) " " 148 WHITESPACE@122..123 " "
149 TYPE_BOUND_LIST@[123; 131) 149 TYPE_BOUND_LIST@123..131
150 TYPE_BOUND@[123; 131) 150 TYPE_BOUND@123..131
151 PATH_TYPE@[123; 131) 151 PATH_TYPE@123..131
152 PATH@[123; 131) 152 PATH@123..131
153 PATH_SEGMENT@[123; 131) 153 PATH_SEGMENT@123..131
154 NAME_REF@[123; 131) 154 NAME_REF@123..131
155 IDENT@[123; 131) "Iterator" 155 IDENT@123..131 "Iterator"
156 WHITESPACE@[131; 132) " " 156 WHITESPACE@131..132 " "
157 BLOCK_EXPR@[132; 134) 157 BLOCK_EXPR@132..134
158 BLOCK@[132; 134) 158 BLOCK@132..134
159 L_CURLY@[132; 133) "{" 159 L_CURLY@132..133 "{"
160 R_CURLY@[133; 134) "}" 160 R_CURLY@133..134 "}"
161 WHITESPACE@[134; 135) "\n" 161 WHITESPACE@134..135 "\n"
162 FN_DEF@[135; 199) 162 FN_DEF@135..199
163 FN_KW@[135; 137) "fn" 163 FN_KW@135..137 "fn"
164 WHITESPACE@[137; 138) " " 164 WHITESPACE@137..138 " "
165 NAME@[138; 141) 165 NAME@138..141
166 IDENT@[138; 141) "baz" 166 IDENT@138..141 "baz"
167 TYPE_PARAM_LIST@[141; 144) 167 TYPE_PARAM_LIST@141..144
168 L_ANGLE@[141; 142) "<" 168 L_ANGLE@141..142 "<"
169 TYPE_PARAM@[142; 143) 169 TYPE_PARAM@142..143
170 NAME@[142; 143) 170 NAME@142..143
171 IDENT@[142; 143) "T" 171 IDENT@142..143 "T"
172 R_ANGLE@[143; 144) ">" 172 R_ANGLE@143..144 ">"
173 PARAM_LIST@[144; 152) 173 PARAM_LIST@144..152
174 L_PAREN@[144; 145) "(" 174 L_PAREN@144..145 "("
175 PARAM@[145; 151) 175 PARAM@145..151
176 BIND_PAT@[145; 147) 176 BIND_PAT@145..147
177 NAME@[145; 147) 177 NAME@145..147
178 IDENT@[145; 147) "_t" 178 IDENT@145..147 "_t"
179 COLON@[147; 148) ":" 179 COLON@147..148 ":"
180 WHITESPACE@[148; 149) " " 180 WHITESPACE@148..149 " "
181 REFERENCE_TYPE@[149; 151) 181 REFERENCE_TYPE@149..151
182 AMP@[149; 150) "&" 182 AMP@149..150 "&"
183 PATH_TYPE@[150; 151) 183 PATH_TYPE@150..151
184 PATH@[150; 151) 184 PATH@150..151
185 PATH_SEGMENT@[150; 151) 185 PATH_SEGMENT@150..151
186 NAME_REF@[150; 151) 186 NAME_REF@150..151
187 IDENT@[150; 151) "T" 187 IDENT@150..151 "T"
188 R_PAREN@[151; 152) ")" 188 R_PAREN@151..152 ")"
189 WHITESPACE@[152; 153) " " 189 WHITESPACE@152..153 " "
190 WHERE_CLAUSE@[153; 196) 190 WHERE_CLAUSE@153..196
191 WHERE_KW@[153; 158) "where" 191 WHERE_KW@153..158 "where"
192 WHITESPACE@[158; 159) " " 192 WHITESPACE@158..159 " "
193 WHERE_PRED@[159; 196) 193 WHERE_PRED@159..196
194 FOR_TYPE@[159; 186) 194 FOR_TYPE@159..186
195 FOR_KW@[159; 162) "for" 195 FOR_KW@159..162 "for"
196 TYPE_PARAM_LIST@[162; 166) 196 TYPE_PARAM_LIST@162..166
197 L_ANGLE@[162; 163) "<" 197 L_ANGLE@162..163 "<"
198 LIFETIME_PARAM@[163; 165) 198 LIFETIME_PARAM@163..165
199 LIFETIME@[163; 165) "\'a" 199 LIFETIME@163..165 "\'a"
200 R_ANGLE@[165; 166) ">" 200 R_ANGLE@165..166 ">"
201 WHITESPACE@[166; 167) " " 201 WHITESPACE@166..167 " "
202 PATH_TYPE@[167; 186) 202 PATH_TYPE@167..186
203 PATH@[167; 186) 203 PATH@167..186
204 PATH@[167; 181) 204 PATH@167..181
205 PATH_SEGMENT@[167; 181) 205 PATH_SEGMENT@167..181
206 L_ANGLE@[167; 168) "<" 206 L_ANGLE@167..168 "<"
207 REFERENCE_TYPE@[168; 173) 207 REFERENCE_TYPE@168..173
208 AMP@[168; 169) "&" 208 AMP@168..169 "&"
209 LIFETIME@[169; 171) "\'a" 209 LIFETIME@169..171 "\'a"
210 WHITESPACE@[171; 172) " " 210 WHITESPACE@171..172 " "
211 PATH_TYPE@[172; 173) 211 PATH_TYPE@172..173
212 PATH@[172; 173) 212 PATH@172..173
213 PATH_SEGMENT@[172; 173) 213 PATH_SEGMENT@172..173
214 NAME_REF@[172; 173) 214 NAME_REF@172..173
215 IDENT@[172; 173) "T" 215 IDENT@172..173 "T"
216 WHITESPACE@[173; 174) " " 216 WHITESPACE@173..174 " "
217 AS_KW@[174; 176) "as" 217 AS_KW@174..176 "as"
218 WHITESPACE@[176; 177) " " 218 WHITESPACE@176..177 " "
219 PATH_TYPE@[177; 180) 219 PATH_TYPE@177..180
220 PATH@[177; 180) 220 PATH@177..180
221 PATH_SEGMENT@[177; 180) 221 PATH_SEGMENT@177..180
222 NAME_REF@[177; 180) 222 NAME_REF@177..180
223 IDENT@[177; 180) "Baz" 223 IDENT@177..180 "Baz"
224 R_ANGLE@[180; 181) ">" 224 R_ANGLE@180..181 ">"
225 COLON2@[181; 183) "::" 225 COLON2@181..183 "::"
226 PATH_SEGMENT@[183; 186) 226 PATH_SEGMENT@183..186
227 NAME_REF@[183; 186) 227 NAME_REF@183..186
228 IDENT@[183; 186) "Foo" 228 IDENT@183..186 "Foo"
229 COLON@[186; 187) ":" 229 COLON@186..187 ":"
230 WHITESPACE@[187; 188) " " 230 WHITESPACE@187..188 " "
231 TYPE_BOUND_LIST@[188; 196) 231 TYPE_BOUND_LIST@188..196
232 TYPE_BOUND@[188; 196) 232 TYPE_BOUND@188..196
233 PATH_TYPE@[188; 196) 233 PATH_TYPE@188..196
234 PATH@[188; 196) 234 PATH@188..196
235 PATH_SEGMENT@[188; 196) 235 PATH_SEGMENT@188..196
236 NAME_REF@[188; 196) 236 NAME_REF@188..196
237 IDENT@[188; 196) "Iterator" 237 IDENT@188..196 "Iterator"
238 WHITESPACE@[196; 197) " " 238 WHITESPACE@196..197 " "
239 BLOCK_EXPR@[197; 199) 239 BLOCK_EXPR@197..199
240 BLOCK@[197; 199) 240 BLOCK@197..199
241 L_CURLY@[197; 198) "{" 241 L_CURLY@197..198 "{"
242 R_CURLY@[198; 199) "}" 242 R_CURLY@198..199 "}"
243 WHITESPACE@[199; 200) "\n" 243 WHITESPACE@199..200 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rast
index 2999977fc..fbad33389 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rast
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 52) 1SOURCE_FILE@0..52
2 FN_DEF@[0; 51) 2 FN_DEF@0..51
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 51) 11 BLOCK_EXPR@9..51
12 BLOCK@[9; 51) 12 BLOCK@9..51
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 26) 15 LET_STMT@15..26
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PLACEHOLDER_PAT@[19; 20) 18 PLACEHOLDER_PAT@19..20
19 UNDERSCORE@[19; 20) "_" 19 UNDERSCORE@19..20 "_"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 EQ@[21; 22) "=" 21 EQ@21..22 "="
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 REF_EXPR@[23; 25) 23 REF_EXPR@23..25
24 AMP@[23; 24) "&" 24 AMP@23..24 "&"
25 LITERAL@[24; 25) 25 LITERAL@24..25
26 INT_NUMBER@[24; 25) "1" 26 INT_NUMBER@24..25 "1"
27 SEMICOLON@[25; 26) ";" 27 SEMICOLON@25..26 ";"
28 WHITESPACE@[26; 31) "\n " 28 WHITESPACE@26..31 "\n "
29 LET_STMT@[31; 49) 29 LET_STMT@31..49
30 LET_KW@[31; 34) "let" 30 LET_KW@31..34 "let"
31 WHITESPACE@[34; 35) " " 31 WHITESPACE@34..35 " "
32 PLACEHOLDER_PAT@[35; 36) 32 PLACEHOLDER_PAT@35..36
33 UNDERSCORE@[35; 36) "_" 33 UNDERSCORE@35..36 "_"
34 WHITESPACE@[36; 37) " " 34 WHITESPACE@36..37 " "
35 EQ@[37; 38) "=" 35 EQ@37..38 "="
36 WHITESPACE@[38; 39) " " 36 WHITESPACE@38..39 " "
37 REF_EXPR@[39; 48) 37 REF_EXPR@39..48
38 AMP@[39; 40) "&" 38 AMP@39..40 "&"
39 MUT_KW@[40; 43) "mut" 39 MUT_KW@40..43 "mut"
40 WHITESPACE@[43; 44) " " 40 WHITESPACE@43..44 " "
41 REF_EXPR@[44; 48) 41 REF_EXPR@44..48
42 AMP@[44; 45) "&" 42 AMP@44..45 "&"
43 CALL_EXPR@[45; 48) 43 CALL_EXPR@45..48
44 PATH_EXPR@[45; 46) 44 PATH_EXPR@45..46
45 PATH@[45; 46) 45 PATH@45..46
46 PATH_SEGMENT@[45; 46) 46 PATH_SEGMENT@45..46
47 NAME_REF@[45; 46) 47 NAME_REF@45..46
48 IDENT@[45; 46) "f" 48 IDENT@45..46 "f"
49 ARG_LIST@[46; 48) 49 ARG_LIST@46..48
50 L_PAREN@[46; 47) "(" 50 L_PAREN@46..47 "("
51 R_PAREN@[47; 48) ")" 51 R_PAREN@47..48 ")"
52 SEMICOLON@[48; 49) ";" 52 SEMICOLON@48..49 ";"
53 WHITESPACE@[49; 50) "\n" 53 WHITESPACE@49..50 "\n"
54 R_CURLY@[50; 51) "}" 54 R_CURLY@50..51 "}"
55 WHITESPACE@[51; 52) "\n" 55 WHITESPACE@51..52 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rast b/crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rast
index 13393e4b8..217b07e59 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rast
@@ -1,87 +1,87 @@
1SOURCE_FILE@[0; 106) 1SOURCE_FILE@0..106
2 STRUCT_DEF@[0; 11) 2 STRUCT_DEF@0..11
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 10) 5 NAME@7..10
6 IDENT@[7; 10) "Foo" 6 IDENT@7..10 "Foo"
7 SEMICOLON@[10; 11) ";" 7 SEMICOLON@10..11 ";"
8 WHITESPACE@[11; 12) "\n" 8 WHITESPACE@11..12 "\n"
9 STRUCT_DEF@[12; 25) 9 STRUCT_DEF@12..25
10 STRUCT_KW@[12; 18) "struct" 10 STRUCT_KW@12..18 "struct"
11 WHITESPACE@[18; 19) " " 11 WHITESPACE@18..19 " "
12 NAME@[19; 22) 12 NAME@19..22
13 IDENT@[19; 22) "Foo" 13 IDENT@19..22 "Foo"
14 WHITESPACE@[22; 23) " " 14 WHITESPACE@22..23 " "
15 RECORD_FIELD_DEF_LIST@[23; 25) 15 RECORD_FIELD_DEF_LIST@23..25
16 L_CURLY@[23; 24) "{" 16 L_CURLY@23..24 "{"
17 R_CURLY@[24; 25) "}" 17 R_CURLY@24..25 "}"
18 WHITESPACE@[25; 26) "\n" 18 WHITESPACE@25..26 "\n"
19 STRUCT_DEF@[26; 39) 19 STRUCT_DEF@26..39
20 STRUCT_KW@[26; 32) "struct" 20 STRUCT_KW@26..32 "struct"
21 WHITESPACE@[32; 33) " " 21 WHITESPACE@32..33 " "
22 NAME@[33; 36) 22 NAME@33..36
23 IDENT@[33; 36) "Foo" 23 IDENT@33..36 "Foo"
24 TUPLE_FIELD_DEF_LIST@[36; 38) 24 TUPLE_FIELD_DEF_LIST@36..38
25 L_PAREN@[36; 37) "(" 25 L_PAREN@36..37 "("
26 R_PAREN@[37; 38) ")" 26 R_PAREN@37..38 ")"
27 SEMICOLON@[38; 39) ";" 27 SEMICOLON@38..39 ";"
28 WHITESPACE@[39; 40) "\n" 28 WHITESPACE@39..40 "\n"
29 STRUCT_DEF@[40; 66) 29 STRUCT_DEF@40..66
30 STRUCT_KW@[40; 46) "struct" 30 STRUCT_KW@40..46 "struct"
31 WHITESPACE@[46; 47) " " 31 WHITESPACE@46..47 " "
32 NAME@[47; 50) 32 NAME@47..50
33 IDENT@[47; 50) "Foo" 33 IDENT@47..50 "Foo"
34 TUPLE_FIELD_DEF_LIST@[50; 65) 34 TUPLE_FIELD_DEF_LIST@50..65
35 L_PAREN@[50; 51) "(" 35 L_PAREN@50..51 "("
36 TUPLE_FIELD_DEF@[51; 57) 36 TUPLE_FIELD_DEF@51..57
37 PATH_TYPE@[51; 57) 37 PATH_TYPE@51..57
38 PATH@[51; 57) 38 PATH@51..57
39 PATH_SEGMENT@[51; 57) 39 PATH_SEGMENT@51..57
40 NAME_REF@[51; 57) 40 NAME_REF@51..57
41 IDENT@[51; 57) "String" 41 IDENT@51..57 "String"
42 COMMA@[57; 58) "," 42 COMMA@57..58 ","
43 WHITESPACE@[58; 59) " " 43 WHITESPACE@58..59 " "
44 TUPLE_FIELD_DEF@[59; 64) 44 TUPLE_FIELD_DEF@59..64
45 PATH_TYPE@[59; 64) 45 PATH_TYPE@59..64
46 PATH@[59; 64) 46 PATH@59..64
47 PATH_SEGMENT@[59; 64) 47 PATH_SEGMENT@59..64
48 NAME_REF@[59; 64) 48 NAME_REF@59..64
49 IDENT@[59; 64) "usize" 49 IDENT@59..64 "usize"
50 R_PAREN@[64; 65) ")" 50 R_PAREN@64..65 ")"
51 SEMICOLON@[65; 66) ";" 51 SEMICOLON@65..66 ";"
52 WHITESPACE@[66; 67) "\n" 52 WHITESPACE@66..67 "\n"
53 STRUCT_DEF@[67; 105) 53 STRUCT_DEF@67..105
54 STRUCT_KW@[67; 73) "struct" 54 STRUCT_KW@67..73 "struct"
55 WHITESPACE@[73; 74) " " 55 WHITESPACE@73..74 " "
56 NAME@[74; 77) 56 NAME@74..77
57 IDENT@[74; 77) "Foo" 57 IDENT@74..77 "Foo"
58 WHITESPACE@[77; 78) " " 58 WHITESPACE@77..78 " "
59 RECORD_FIELD_DEF_LIST@[78; 105) 59 RECORD_FIELD_DEF_LIST@78..105
60 L_CURLY@[78; 79) "{" 60 L_CURLY@78..79 "{"
61 WHITESPACE@[79; 84) "\n " 61 WHITESPACE@79..84 "\n "
62 RECORD_FIELD_DEF@[84; 90) 62 RECORD_FIELD_DEF@84..90
63 NAME@[84; 85) 63 NAME@84..85
64 IDENT@[84; 85) "a" 64 IDENT@84..85 "a"
65 COLON@[85; 86) ":" 65 COLON@85..86 ":"
66 WHITESPACE@[86; 87) " " 66 WHITESPACE@86..87 " "
67 PATH_TYPE@[87; 90) 67 PATH_TYPE@87..90
68 PATH@[87; 90) 68 PATH@87..90
69 PATH_SEGMENT@[87; 90) 69 PATH_SEGMENT@87..90
70 NAME_REF@[87; 90) 70 NAME_REF@87..90
71 IDENT@[87; 90) "i32" 71 IDENT@87..90 "i32"
72 COMMA@[90; 91) "," 72 COMMA@90..91 ","
73 WHITESPACE@[91; 96) "\n " 73 WHITESPACE@91..96 "\n "
74 RECORD_FIELD_DEF@[96; 102) 74 RECORD_FIELD_DEF@96..102
75 NAME@[96; 97) 75 NAME@96..97
76 IDENT@[96; 97) "b" 76 IDENT@96..97 "b"
77 COLON@[97; 98) ":" 77 COLON@97..98 ":"
78 WHITESPACE@[98; 99) " " 78 WHITESPACE@98..99 " "
79 PATH_TYPE@[99; 102) 79 PATH_TYPE@99..102
80 PATH@[99; 102) 80 PATH@99..102
81 PATH_SEGMENT@[99; 102) 81 PATH_SEGMENT@99..102
82 NAME_REF@[99; 102) 82 NAME_REF@99..102
83 IDENT@[99; 102) "f32" 83 IDENT@99..102 "f32"
84 COMMA@[102; 103) "," 84 COMMA@102..103 ","
85 WHITESPACE@[103; 104) "\n" 85 WHITESPACE@103..104 "\n"
86 R_CURLY@[104; 105) "}" 86 R_CURLY@104..105 "}"
87 WHITESPACE@[105; 106) "\n" 87 WHITESPACE@105..106 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rast
index 79d193616..9cd8910d4 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rast
@@ -1,19 +1,19 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@0..16
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@0..15
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "T" 6 IDENT@5..6 "T"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 PAREN_TYPE@[9; 14) 10 PAREN_TYPE@9..14
11 L_PAREN@[9; 10) "(" 11 L_PAREN@9..10 "("
12 PATH_TYPE@[10; 13) 12 PATH_TYPE@10..13
13 PATH@[10; 13) 13 PATH@10..13
14 PATH_SEGMENT@[10; 13) 14 PATH_SEGMENT@10..13
15 NAME_REF@[10; 13) 15 NAME_REF@10..13
16 IDENT@[10; 13) "i32" 16 IDENT@10..13 "i32"
17 R_PAREN@[13; 14) ")" 17 R_PAREN@13..14 ")"
18 SEMICOLON@[14; 15) ";" 18 SEMICOLON@14..15 ";"
19 WHITESPACE@[15; 16) "\n" 19 WHITESPACE@15..16 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rast b/crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rast
index c2cec89b4..b165789fd 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rast
@@ -1,136 +1,136 @@
1SOURCE_FILE@[0; 189) 1SOURCE_FILE@0..189
2 FN_DEF@[0; 188) 2 FN_DEF@0..188
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 188) 11 BLOCK_EXPR@9..188
12 BLOCK@[9; 188) 12 BLOCK@9..188
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 28) 15 LET_STMT@15..28
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PLACEHOLDER_PAT@[19; 20) 18 PLACEHOLDER_PAT@19..20
19 UNDERSCORE@[19; 20) "_" 19 UNDERSCORE@19..20 "_"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 EQ@[21; 22) "=" 21 EQ@21..22 "="
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 LITERAL@[23; 27) 23 LITERAL@23..27
24 TRUE_KW@[23; 27) "true" 24 TRUE_KW@23..27 "true"
25 SEMICOLON@[27; 28) ";" 25 SEMICOLON@27..28 ";"
26 WHITESPACE@[28; 33) "\n " 26 WHITESPACE@28..33 "\n "
27 LET_STMT@[33; 47) 27 LET_STMT@33..47
28 LET_KW@[33; 36) "let" 28 LET_KW@33..36 "let"
29 WHITESPACE@[36; 37) " " 29 WHITESPACE@36..37 " "
30 PLACEHOLDER_PAT@[37; 38) 30 PLACEHOLDER_PAT@37..38
31 UNDERSCORE@[37; 38) "_" 31 UNDERSCORE@37..38 "_"
32 WHITESPACE@[38; 39) " " 32 WHITESPACE@38..39 " "
33 EQ@[39; 40) "=" 33 EQ@39..40 "="
34 WHITESPACE@[40; 41) " " 34 WHITESPACE@40..41 " "
35 LITERAL@[41; 46) 35 LITERAL@41..46
36 FALSE_KW@[41; 46) "false" 36 FALSE_KW@41..46 "false"
37 SEMICOLON@[46; 47) ";" 37 SEMICOLON@46..47 ";"
38 WHITESPACE@[47; 52) "\n " 38 WHITESPACE@47..52 "\n "
39 LET_STMT@[52; 62) 39 LET_STMT@52..62
40 LET_KW@[52; 55) "let" 40 LET_KW@52..55 "let"
41 WHITESPACE@[55; 56) " " 41 WHITESPACE@55..56 " "
42 PLACEHOLDER_PAT@[56; 57) 42 PLACEHOLDER_PAT@56..57
43 UNDERSCORE@[56; 57) "_" 43 UNDERSCORE@56..57 "_"
44 WHITESPACE@[57; 58) " " 44 WHITESPACE@57..58 " "
45 EQ@[58; 59) "=" 45 EQ@58..59 "="
46 WHITESPACE@[59; 60) " " 46 WHITESPACE@59..60 " "
47 LITERAL@[60; 61) 47 LITERAL@60..61
48 INT_NUMBER@[60; 61) "1" 48 INT_NUMBER@60..61 "1"
49 SEMICOLON@[61; 62) ";" 49 SEMICOLON@61..62 ";"
50 WHITESPACE@[62; 67) "\n " 50 WHITESPACE@62..67 "\n "
51 LET_STMT@[67; 79) 51 LET_STMT@67..79
52 LET_KW@[67; 70) "let" 52 LET_KW@67..70 "let"
53 WHITESPACE@[70; 71) " " 53 WHITESPACE@70..71 " "
54 PLACEHOLDER_PAT@[71; 72) 54 PLACEHOLDER_PAT@71..72
55 UNDERSCORE@[71; 72) "_" 55 UNDERSCORE@71..72 "_"
56 WHITESPACE@[72; 73) " " 56 WHITESPACE@72..73 " "
57 EQ@[73; 74) "=" 57 EQ@73..74 "="
58 WHITESPACE@[74; 75) " " 58 WHITESPACE@74..75 " "
59 LITERAL@[75; 78) 59 LITERAL@75..78
60 FLOAT_NUMBER@[75; 78) "2.0" 60 FLOAT_NUMBER@75..78 "2.0"
61 SEMICOLON@[78; 79) ";" 61 SEMICOLON@78..79 ";"
62 WHITESPACE@[79; 84) "\n " 62 WHITESPACE@79..84 "\n "
63 LET_STMT@[84; 97) 63 LET_STMT@84..97
64 LET_KW@[84; 87) "let" 64 LET_KW@84..87 "let"
65 WHITESPACE@[87; 88) " " 65 WHITESPACE@87..88 " "
66 PLACEHOLDER_PAT@[88; 89) 66 PLACEHOLDER_PAT@88..89
67 UNDERSCORE@[88; 89) "_" 67 UNDERSCORE@88..89 "_"
68 WHITESPACE@[89; 90) " " 68 WHITESPACE@89..90 " "
69 EQ@[90; 91) "=" 69 EQ@90..91 "="
70 WHITESPACE@[91; 92) " " 70 WHITESPACE@91..92 " "
71 LITERAL@[92; 96) 71 LITERAL@92..96
72 BYTE@[92; 96) "b\'a\'" 72 BYTE@92..96 "b\'a\'"
73 SEMICOLON@[96; 97) ";" 73 SEMICOLON@96..97 ";"
74 WHITESPACE@[97; 102) "\n " 74 WHITESPACE@97..102 "\n "
75 LET_STMT@[102; 114) 75 LET_STMT@102..114
76 LET_KW@[102; 105) "let" 76 LET_KW@102..105 "let"
77 WHITESPACE@[105; 106) " " 77 WHITESPACE@105..106 " "
78 PLACEHOLDER_PAT@[106; 107) 78 PLACEHOLDER_PAT@106..107
79 UNDERSCORE@[106; 107) "_" 79 UNDERSCORE@106..107 "_"
80 WHITESPACE@[107; 108) " " 80 WHITESPACE@107..108 " "
81 EQ@[108; 109) "=" 81 EQ@108..109 "="
82 WHITESPACE@[109; 110) " " 82 WHITESPACE@109..110 " "
83 LITERAL@[110; 113) 83 LITERAL@110..113
84 CHAR@[110; 113) "\'b\'" 84 CHAR@110..113 "\'b\'"
85 SEMICOLON@[113; 114) ";" 85 SEMICOLON@113..114 ";"
86 WHITESPACE@[114; 119) "\n " 86 WHITESPACE@114..119 "\n "
87 LET_STMT@[119; 131) 87 LET_STMT@119..131
88 LET_KW@[119; 122) "let" 88 LET_KW@119..122 "let"
89 WHITESPACE@[122; 123) " " 89 WHITESPACE@122..123 " "
90 PLACEHOLDER_PAT@[123; 124) 90 PLACEHOLDER_PAT@123..124
91 UNDERSCORE@[123; 124) "_" 91 UNDERSCORE@123..124 "_"
92 WHITESPACE@[124; 125) " " 92 WHITESPACE@124..125 " "
93 EQ@[125; 126) "=" 93 EQ@125..126 "="
94 WHITESPACE@[126; 127) " " 94 WHITESPACE@126..127 " "
95 LITERAL@[127; 130) 95 LITERAL@127..130
96 STRING@[127; 130) "\"c\"" 96 STRING@127..130 "\"c\""
97 SEMICOLON@[130; 131) ";" 97 SEMICOLON@130..131 ";"
98 WHITESPACE@[131; 136) "\n " 98 WHITESPACE@131..136 "\n "
99 LET_STMT@[136; 149) 99 LET_STMT@136..149
100 LET_KW@[136; 139) "let" 100 LET_KW@136..139 "let"
101 WHITESPACE@[139; 140) " " 101 WHITESPACE@139..140 " "
102 PLACEHOLDER_PAT@[140; 141) 102 PLACEHOLDER_PAT@140..141
103 UNDERSCORE@[140; 141) "_" 103 UNDERSCORE@140..141 "_"
104 WHITESPACE@[141; 142) " " 104 WHITESPACE@141..142 " "
105 EQ@[142; 143) "=" 105 EQ@142..143 "="
106 WHITESPACE@[143; 144) " " 106 WHITESPACE@143..144 " "
107 LITERAL@[144; 148) 107 LITERAL@144..148
108 RAW_STRING@[144; 148) "r\"d\"" 108 RAW_STRING@144..148 "r\"d\""
109 SEMICOLON@[148; 149) ";" 109 SEMICOLON@148..149 ";"
110 WHITESPACE@[149; 154) "\n " 110 WHITESPACE@149..154 "\n "
111 LET_STMT@[154; 167) 111 LET_STMT@154..167
112 LET_KW@[154; 157) "let" 112 LET_KW@154..157 "let"
113 WHITESPACE@[157; 158) " " 113 WHITESPACE@157..158 " "
114 PLACEHOLDER_PAT@[158; 159) 114 PLACEHOLDER_PAT@158..159
115 UNDERSCORE@[158; 159) "_" 115 UNDERSCORE@158..159 "_"
116 WHITESPACE@[159; 160) " " 116 WHITESPACE@159..160 " "
117 EQ@[160; 161) "=" 117 EQ@160..161 "="
118 WHITESPACE@[161; 162) " " 118 WHITESPACE@161..162 " "
119 LITERAL@[162; 166) 119 LITERAL@162..166
120 BYTE_STRING@[162; 166) "b\"e\"" 120 BYTE_STRING@162..166 "b\"e\""
121 SEMICOLON@[166; 167) ";" 121 SEMICOLON@166..167 ";"
122 WHITESPACE@[167; 172) "\n " 122 WHITESPACE@167..172 "\n "
123 LET_STMT@[172; 186) 123 LET_STMT@172..186
124 LET_KW@[172; 175) "let" 124 LET_KW@172..175 "let"
125 WHITESPACE@[175; 176) " " 125 WHITESPACE@175..176 " "
126 PLACEHOLDER_PAT@[176; 177) 126 PLACEHOLDER_PAT@176..177
127 UNDERSCORE@[176; 177) "_" 127 UNDERSCORE@176..177 "_"
128 WHITESPACE@[177; 178) " " 128 WHITESPACE@177..178 " "
129 EQ@[178; 179) "=" 129 EQ@178..179 "="
130 WHITESPACE@[179; 180) " " 130 WHITESPACE@179..180 " "
131 LITERAL@[180; 185) 131 LITERAL@180..185
132 RAW_BYTE_STRING@[180; 185) "br\"f\"" 132 RAW_BYTE_STRING@180..185 "br\"f\""
133 SEMICOLON@[185; 186) ";" 133 SEMICOLON@185..186 ";"
134 WHITESPACE@[186; 187) "\n" 134 WHITESPACE@186..187 "\n"
135 R_CURLY@[187; 188) "}" 135 R_CURLY@187..188 "}"
136 WHITESPACE@[188; 189) "\n" 136 WHITESPACE@188..189 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rast
index ca1a97161..36f17133d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rast
@@ -1,36 +1,36 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@0..30
2 FN_DEF@[0; 11) 2 FN_DEF@0..11
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 11) 11 BLOCK_EXPR@9..11
12 BLOCK@[9; 11) 12 BLOCK@9..11
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 R_CURLY@[10; 11) "}" 14 R_CURLY@10..11 "}"
15 WHITESPACE@[11; 12) "\n" 15 WHITESPACE@11..12 "\n"
16 FN_DEF@[12; 29) 16 FN_DEF@12..29
17 FN_KW@[12; 14) "fn" 17 FN_KW@12..14 "fn"
18 WHITESPACE@[14; 15) " " 18 WHITESPACE@14..15 " "
19 NAME@[15; 18) 19 NAME@15..18
20 IDENT@[15; 18) "bar" 20 IDENT@15..18 "bar"
21 PARAM_LIST@[18; 20) 21 PARAM_LIST@18..20
22 L_PAREN@[18; 19) "(" 22 L_PAREN@18..19 "("
23 R_PAREN@[19; 20) ")" 23 R_PAREN@19..20 ")"
24 WHITESPACE@[20; 21) " " 24 WHITESPACE@20..21 " "
25 RET_TYPE@[21; 26) 25 RET_TYPE@21..26
26 THIN_ARROW@[21; 23) "->" 26 THIN_ARROW@21..23 "->"
27 WHITESPACE@[23; 24) " " 27 WHITESPACE@23..24 " "
28 TUPLE_TYPE@[24; 26) 28 TUPLE_TYPE@24..26
29 L_PAREN@[24; 25) "(" 29 L_PAREN@24..25 "("
30 R_PAREN@[25; 26) ")" 30 R_PAREN@25..26 ")"
31 WHITESPACE@[26; 27) " " 31 WHITESPACE@26..27 " "
32 BLOCK_EXPR@[27; 29) 32 BLOCK_EXPR@27..29
33 BLOCK@[27; 29) 33 BLOCK@27..29
34 L_CURLY@[27; 28) "{" 34 L_CURLY@27..28 "{"
35 R_CURLY@[28; 29) "}" 35 R_CURLY@28..29 "}"
36 WHITESPACE@[29; 30) "\n" 36 WHITESPACE@29..30 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rast b/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rast
index e614acc6f..01ed3afca 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 IMPL_DEF@[0; 18) 2 IMPL_DEF@0..18
3 UNSAFE_KW@[0; 6) "unsafe" 3 UNSAFE_KW@0..6 "unsafe"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 IMPL_KW@[7; 11) "impl" 5 IMPL_KW@7..11 "impl"
6 WHITESPACE@[11; 12) " " 6 WHITESPACE@11..12 " "
7 PATH_TYPE@[12; 15) 7 PATH_TYPE@12..15
8 PATH@[12; 15) 8 PATH@12..15
9 PATH_SEGMENT@[12; 15) 9 PATH_SEGMENT@12..15
10 NAME_REF@[12; 15) 10 NAME_REF@12..15
11 IDENT@[12; 15) "Foo" 11 IDENT@12..15 "Foo"
12 WHITESPACE@[15; 16) " " 12 WHITESPACE@15..16 " "
13 ITEM_LIST@[16; 18) 13 ITEM_LIST@16..18
14 L_CURLY@[16; 17) "{" 14 L_CURLY@16..17 "{"
15 R_CURLY@[17; 18) "}" 15 R_CURLY@17..18 "}"
16 WHITESPACE@[18; 19) "\n" 16 WHITESPACE@18..19 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast b/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast
index b23f43b46..ca5aa007e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast
@@ -1,69 +1,69 @@
1SOURCE_FILE@[0; 88) 1SOURCE_FILE@0..88
2 FN_DEF@[0; 87) 2 FN_DEF@0..87
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 BLOCK_EXPR@[8; 87) 10 BLOCK_EXPR@8..87
11 BLOCK@[8; 87) 11 BLOCK@8..87
12 L_CURLY@[8; 9) "{" 12 L_CURLY@8..9 "{"
13 WHITESPACE@[9; 14) "\n " 13 WHITESPACE@9..14 "\n "
14 EXPR_STMT@[14; 25) 14 EXPR_STMT@14..25
15 IF_EXPR@[14; 25) 15 IF_EXPR@14..25
16 IF_KW@[14; 16) "if" 16 IF_KW@14..16 "if"
17 WHITESPACE@[16; 17) " " 17 WHITESPACE@16..17 " "
18 CONDITION@[17; 22) 18 CONDITION@17..22
19 BREAK_EXPR@[17; 22) 19 BREAK_EXPR@17..22
20 BREAK_KW@[17; 22) "break" 20 BREAK_KW@17..22 "break"
21 WHITESPACE@[22; 23) " " 21 WHITESPACE@22..23 " "
22 BLOCK_EXPR@[23; 25) 22 BLOCK_EXPR@23..25
23 BLOCK@[23; 25) 23 BLOCK@23..25
24 L_CURLY@[23; 24) "{" 24 L_CURLY@23..24 "{"
25 R_CURLY@[24; 25) "}" 25 R_CURLY@24..25 "}"
26 WHITESPACE@[25; 30) "\n " 26 WHITESPACE@25..30 "\n "
27 EXPR_STMT@[30; 44) 27 EXPR_STMT@30..44
28 WHILE_EXPR@[30; 44) 28 WHILE_EXPR@30..44
29 WHILE_KW@[30; 35) "while" 29 WHILE_KW@30..35 "while"
30 WHITESPACE@[35; 36) " " 30 WHITESPACE@35..36 " "
31 CONDITION@[36; 41) 31 CONDITION@36..41
32 BREAK_EXPR@[36; 41) 32 BREAK_EXPR@36..41
33 BREAK_KW@[36; 41) "break" 33 BREAK_KW@36..41 "break"
34 WHITESPACE@[41; 42) " " 34 WHITESPACE@41..42 " "
35 BLOCK_EXPR@[42; 44) 35 BLOCK_EXPR@42..44
36 BLOCK@[42; 44) 36 BLOCK@42..44
37 L_CURLY@[42; 43) "{" 37 L_CURLY@42..43 "{"
38 R_CURLY@[43; 44) "}" 38 R_CURLY@43..44 "}"
39 WHITESPACE@[44; 49) "\n " 39 WHITESPACE@44..49 "\n "
40 EXPR_STMT@[49; 66) 40 EXPR_STMT@49..66
41 FOR_EXPR@[49; 66) 41 FOR_EXPR@49..66
42 FOR_KW@[49; 52) "for" 42 FOR_KW@49..52 "for"
43 WHITESPACE@[52; 53) " " 43 WHITESPACE@52..53 " "
44 BIND_PAT@[53; 54) 44 BIND_PAT@53..54
45 NAME@[53; 54) 45 NAME@53..54
46 IDENT@[53; 54) "i" 46 IDENT@53..54 "i"
47 WHITESPACE@[54; 55) " " 47 WHITESPACE@54..55 " "
48 IN_KW@[55; 57) "in" 48 IN_KW@55..57 "in"
49 WHITESPACE@[57; 58) " " 49 WHITESPACE@57..58 " "
50 BREAK_EXPR@[58; 63) 50 BREAK_EXPR@58..63
51 BREAK_KW@[58; 63) "break" 51 BREAK_KW@58..63 "break"
52 WHITESPACE@[63; 64) " " 52 WHITESPACE@63..64 " "
53 BLOCK_EXPR@[64; 66) 53 BLOCK_EXPR@64..66
54 BLOCK@[64; 66) 54 BLOCK@64..66
55 L_CURLY@[64; 65) "{" 55 L_CURLY@64..65 "{"
56 R_CURLY@[65; 66) "}" 56 R_CURLY@65..66 "}"
57 WHITESPACE@[66; 71) "\n " 57 WHITESPACE@66..71 "\n "
58 MATCH_EXPR@[71; 85) 58 MATCH_EXPR@71..85
59 MATCH_KW@[71; 76) "match" 59 MATCH_KW@71..76 "match"
60 WHITESPACE@[76; 77) " " 60 WHITESPACE@76..77 " "
61 BREAK_EXPR@[77; 82) 61 BREAK_EXPR@77..82
62 BREAK_KW@[77; 82) "break" 62 BREAK_KW@77..82 "break"
63 WHITESPACE@[82; 83) " " 63 WHITESPACE@82..83 " "
64 MATCH_ARM_LIST@[83; 85) 64 MATCH_ARM_LIST@83..85
65 L_CURLY@[83; 84) "{" 65 L_CURLY@83..84 "{"
66 R_CURLY@[84; 85) "}" 66 R_CURLY@84..85 "}"
67 WHITESPACE@[85; 86) "\n" 67 WHITESPACE@85..86 "\n"
68 R_CURLY@[86; 87) "}" 68 R_CURLY@86..87 "}"
69 WHITESPACE@[87; 88) "\n" 69 WHITESPACE@87..88 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rast b/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rast
index b494f6c59..1c1e349e1 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rast
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 FN_DEF@[0; 18) 2 FN_DEF@0..18
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 FN_KW@[7; 9) "fn" 6 FN_KW@7..9 "fn"
7 WHITESPACE@[9; 10) " " 7 WHITESPACE@9..10 " "
8 NAME@[10; 13) 8 NAME@10..13
9 IDENT@[10; 13) "foo" 9 IDENT@10..13 "foo"
10 PARAM_LIST@[13; 15) 10 PARAM_LIST@13..15
11 L_PAREN@[13; 14) "(" 11 L_PAREN@13..14 "("
12 R_PAREN@[14; 15) ")" 12 R_PAREN@14..15 ")"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 BLOCK_EXPR@[16; 18) 14 BLOCK_EXPR@16..18
15 BLOCK@[16; 18) 15 BLOCK@16..18
16 L_CURLY@[16; 17) "{" 16 L_CURLY@16..17 "{"
17 R_CURLY@[17; 18) "}" 17 R_CURLY@17..18 "}"
18 WHITESPACE@[18; 19) "\n" 18 WHITESPACE@18..19 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rast b/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rast
index 1d7796449..cee2bc906 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rast
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 STRUCT_DEF@[0; 18) 2 STRUCT_DEF@0..18
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 TYPE_PARAM_LIST@[8; 17) 7 TYPE_PARAM_LIST@8..17
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 TYPE_PARAM@[9; 16) 9 TYPE_PARAM@9..16
10 NAME@[9; 10) 10 NAME@9..10
11 IDENT@[9; 10) "T" 11 IDENT@9..10 "T"
12 WHITESPACE@[10; 11) " " 12 WHITESPACE@10..11 " "
13 EQ@[11; 12) "=" 13 EQ@11..12 "="
14 WHITESPACE@[12; 13) " " 14 WHITESPACE@12..13 " "
15 PATH_TYPE@[13; 16) 15 PATH_TYPE@13..16
16 PATH@[13; 16) 16 PATH@13..16
17 PATH_SEGMENT@[13; 16) 17 PATH_SEGMENT@13..16
18 NAME_REF@[13; 16) 18 NAME_REF@13..16
19 IDENT@[13; 16) "i32" 19 IDENT@13..16 "i32"
20 R_ANGLE@[16; 17) ">" 20 R_ANGLE@16..17 ">"
21 SEMICOLON@[17; 18) ";" 21 SEMICOLON@17..18 ";"
22 WHITESPACE@[18; 19) "\n" 22 WHITESPACE@18..19 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rast b/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rast
index 7093c2b1f..800412cef 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rast
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@0..16
2 TRAIT_DEF@[0; 15) 2 TRAIT_DEF@0..15
3 AUTO_KW@[0; 4) "auto" 3 AUTO_KW@0..4 "auto"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 TRAIT_KW@[5; 10) "trait" 5 TRAIT_KW@5..10 "trait"
6 WHITESPACE@[10; 11) " " 6 WHITESPACE@10..11 " "
7 NAME@[11; 12) 7 NAME@11..12
8 IDENT@[11; 12) "T" 8 IDENT@11..12 "T"
9 WHITESPACE@[12; 13) " " 9 WHITESPACE@12..13 " "
10 ITEM_LIST@[13; 15) 10 ITEM_LIST@13..15
11 L_CURLY@[13; 14) "{" 11 L_CURLY@13..14 "{"
12 R_CURLY@[14; 15) "}" 12 R_CURLY@14..15 "}"
13 WHITESPACE@[15; 16) "\n" 13 WHITESPACE@15..16 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast b/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast
index db6013c6f..1e2d7db7c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast
@@ -1,23 +1,23 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@0..21
2 TYPE_ALIAS_DEF@[0; 20) 2 TYPE_ALIAS_DEF@0..20
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "F" 6 IDENT@5..6 "F"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 FN_POINTER_TYPE@[9; 19) 10 FN_POINTER_TYPE@9..19
11 FN_KW@[9; 11) "fn" 11 FN_KW@9..11 "fn"
12 PARAM_LIST@[11; 13) 12 PARAM_LIST@11..13
13 L_PAREN@[11; 12) "(" 13 L_PAREN@11..12 "("
14 R_PAREN@[12; 13) ")" 14 R_PAREN@12..13 ")"
15 WHITESPACE@[13; 14) " " 15 WHITESPACE@13..14 " "
16 RET_TYPE@[14; 19) 16 RET_TYPE@14..19
17 THIN_ARROW@[14; 16) "->" 17 THIN_ARROW@14..16 "->"
18 WHITESPACE@[16; 17) " " 18 WHITESPACE@16..17 " "
19 TUPLE_TYPE@[17; 19) 19 TUPLE_TYPE@17..19
20 L_PAREN@[17; 18) "(" 20 L_PAREN@17..18 "("
21 R_PAREN@[18; 19) ")" 21 R_PAREN@18..19 ")"
22 SEMICOLON@[19; 20) ";" 22 SEMICOLON@19..20 ";"
23 WHITESPACE@[20; 21) "\n" 23 WHITESPACE@20..21 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rast
index 118cfc096..c264dae5e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rast
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@0..26
2 FN_DEF@[0; 25) 2 FN_DEF@0..25
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 25) 11 BLOCK_EXPR@9..25
12 BLOCK@[9; 25) 12 BLOCK@9..25
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 23) 15 EXPR_STMT@15..23
16 INDEX_EXPR@[15; 22) 16 INDEX_EXPR@15..22
17 INDEX_EXPR@[15; 19) 17 INDEX_EXPR@15..19
18 PATH_EXPR@[15; 16) 18 PATH_EXPR@15..16
19 PATH@[15; 16) 19 PATH@15..16
20 PATH_SEGMENT@[15; 16) 20 PATH_SEGMENT@15..16
21 NAME_REF@[15; 16) 21 NAME_REF@15..16
22 IDENT@[15; 16) "x" 22 IDENT@15..16 "x"
23 L_BRACK@[16; 17) "[" 23 L_BRACK@16..17 "["
24 LITERAL@[17; 18) 24 LITERAL@17..18
25 INT_NUMBER@[17; 18) "1" 25 INT_NUMBER@17..18 "1"
26 R_BRACK@[18; 19) "]" 26 R_BRACK@18..19 "]"
27 L_BRACK@[19; 20) "[" 27 L_BRACK@19..20 "["
28 LITERAL@[20; 21) 28 LITERAL@20..21
29 INT_NUMBER@[20; 21) "2" 29 INT_NUMBER@20..21 "2"
30 R_BRACK@[21; 22) "]" 30 R_BRACK@21..22 "]"
31 SEMICOLON@[22; 23) ";" 31 SEMICOLON@22..23 ";"
32 WHITESPACE@[23; 24) "\n" 32 WHITESPACE@23..24 "\n"
33 R_CURLY@[24; 25) "}" 33 R_CURLY@24..25 "}"
34 WHITESPACE@[25; 26) "\n" 34 WHITESPACE@25..26 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rast b/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rast
index 3da3beaf4..9370f6ae7 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rast
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@0..23
2 TRAIT_DEF@[0; 22) 2 TRAIT_DEF@0..22
3 UNSAFE_KW@[0; 6) "unsafe" 3 UNSAFE_KW@0..6 "unsafe"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 AUTO_KW@[7; 11) "auto" 5 AUTO_KW@7..11 "auto"
6 WHITESPACE@[11; 12) " " 6 WHITESPACE@11..12 " "
7 TRAIT_KW@[12; 17) "trait" 7 TRAIT_KW@12..17 "trait"
8 WHITESPACE@[17; 18) " " 8 WHITESPACE@17..18 " "
9 NAME@[18; 19) 9 NAME@18..19
10 IDENT@[18; 19) "T" 10 IDENT@18..19 "T"
11 WHITESPACE@[19; 20) " " 11 WHITESPACE@19..20 " "
12 ITEM_LIST@[20; 22) 12 ITEM_LIST@20..22
13 L_CURLY@[20; 21) "{" 13 L_CURLY@20..21 "{"
14 R_CURLY@[21; 22) "}" 14 R_CURLY@21..22 "}"
15 WHITESPACE@[22; 23) "\n" 15 WHITESPACE@22..23 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast
index ebe7816a4..24e1ba8a0 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast
@@ -1,29 +1,29 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@0..26
2 FN_DEF@[0; 25) 2 FN_DEF@0..25
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 25) 11 BLOCK_EXPR@10..25
12 BLOCK@[10; 25) 12 BLOCK@10..25
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 12) " " 14 WHITESPACE@11..12 " "
15 LET_STMT@[12; 23) 15 LET_STMT@12..23
16 LET_KW@[12; 15) "let" 16 LET_KW@12..15 "let"
17 WHITESPACE@[15; 16) " " 17 WHITESPACE@15..16 " "
18 PLACEHOLDER_PAT@[16; 17) 18 PLACEHOLDER_PAT@16..17
19 UNDERSCORE@[16; 17) "_" 19 UNDERSCORE@16..17 "_"
20 WHITESPACE@[17; 18) " " 20 WHITESPACE@17..18 " "
21 EQ@[18; 19) "=" 21 EQ@18..19 "="
22 WHITESPACE@[19; 20) " " 22 WHITESPACE@19..20 " "
23 TUPLE_EXPR@[20; 22) 23 TUPLE_EXPR@20..22
24 L_PAREN@[20; 21) "(" 24 L_PAREN@20..21 "("
25 R_PAREN@[21; 22) ")" 25 R_PAREN@21..22 ")"
26 SEMICOLON@[22; 23) ";" 26 SEMICOLON@22..23 ";"
27 WHITESPACE@[23; 24) " " 27 WHITESPACE@23..24 " "
28 R_CURLY@[24; 25) "}" 28 R_CURLY@24..25 "}"
29 WHITESPACE@[25; 26) "\n" 29 WHITESPACE@25..26 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast b/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast
index 6bd6f5a6b..47462d44e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast
@@ -1,130 +1,130 @@
1SOURCE_FILE@[0; 167) 1SOURCE_FILE@0..167
2 FN_DEF@[0; 166) 2 FN_DEF@0..166
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 166) 11 BLOCK_EXPR@9..166
12 BLOCK@[9; 166) 12 BLOCK@9..166
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 25) 15 EXPR_STMT@15..25
16 IF_EXPR@[15; 25) 16 IF_EXPR@15..25
17 IF_KW@[15; 17) "if" 17 IF_KW@15..17 "if"
18 WHITESPACE@[17; 18) " " 18 WHITESPACE@17..18 " "
19 CONDITION@[18; 22) 19 CONDITION@18..22
20 LITERAL@[18; 22) 20 LITERAL@18..22
21 TRUE_KW@[18; 22) "true" 21 TRUE_KW@18..22 "true"
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 BLOCK_EXPR@[23; 25) 23 BLOCK_EXPR@23..25
24 BLOCK@[23; 25) 24 BLOCK@23..25
25 L_CURLY@[23; 24) "{" 25 L_CURLY@23..24 "{"
26 R_CURLY@[24; 25) "}" 26 R_CURLY@24..25 "}"
27 WHITESPACE@[25; 30) "\n " 27 WHITESPACE@25..30 "\n "
28 EXPR_STMT@[30; 37) 28 EXPR_STMT@30..37
29 LOOP_EXPR@[30; 37) 29 LOOP_EXPR@30..37
30 LOOP_KW@[30; 34) "loop" 30 LOOP_KW@30..34 "loop"
31 WHITESPACE@[34; 35) " " 31 WHITESPACE@34..35 " "
32 BLOCK_EXPR@[35; 37) 32 BLOCK_EXPR@35..37
33 BLOCK@[35; 37) 33 BLOCK@35..37
34 L_CURLY@[35; 36) "{" 34 L_CURLY@35..36 "{"
35 R_CURLY@[36; 37) "}" 35 R_CURLY@36..37 "}"
36 WHITESPACE@[37; 42) "\n " 36 WHITESPACE@37..42 "\n "
37 EXPR_STMT@[42; 53) 37 EXPR_STMT@42..53
38 MATCH_EXPR@[42; 53) 38 MATCH_EXPR@42..53
39 MATCH_KW@[42; 47) "match" 39 MATCH_KW@42..47 "match"
40 WHITESPACE@[47; 48) " " 40 WHITESPACE@47..48 " "
41 TUPLE_EXPR@[48; 50) 41 TUPLE_EXPR@48..50
42 L_PAREN@[48; 49) "(" 42 L_PAREN@48..49 "("
43 R_PAREN@[49; 50) ")" 43 R_PAREN@49..50 ")"
44 WHITESPACE@[50; 51) " " 44 WHITESPACE@50..51 " "
45 MATCH_ARM_LIST@[51; 53) 45 MATCH_ARM_LIST@51..53
46 L_CURLY@[51; 52) "{" 46 L_CURLY@51..52 "{"
47 R_CURLY@[52; 53) "}" 47 R_CURLY@52..53 "}"
48 WHITESPACE@[53; 58) "\n " 48 WHITESPACE@53..58 "\n "
49 EXPR_STMT@[58; 71) 49 EXPR_STMT@58..71
50 WHILE_EXPR@[58; 71) 50 WHILE_EXPR@58..71
51 WHILE_KW@[58; 63) "while" 51 WHILE_KW@58..63 "while"
52 WHITESPACE@[63; 64) " " 52 WHITESPACE@63..64 " "
53 CONDITION@[64; 68) 53 CONDITION@64..68
54 LITERAL@[64; 68) 54 LITERAL@64..68
55 TRUE_KW@[64; 68) "true" 55 TRUE_KW@64..68 "true"
56 WHITESPACE@[68; 69) " " 56 WHITESPACE@68..69 " "
57 BLOCK_EXPR@[69; 71) 57 BLOCK_EXPR@69..71
58 BLOCK@[69; 71) 58 BLOCK@69..71
59 L_CURLY@[69; 70) "{" 59 L_CURLY@69..70 "{"
60 R_CURLY@[70; 71) "}" 60 R_CURLY@70..71 "}"
61 WHITESPACE@[71; 76) "\n " 61 WHITESPACE@71..76 "\n "
62 EXPR_STMT@[76; 90) 62 EXPR_STMT@76..90
63 FOR_EXPR@[76; 90) 63 FOR_EXPR@76..90
64 FOR_KW@[76; 79) "for" 64 FOR_KW@76..79 "for"
65 WHITESPACE@[79; 80) " " 65 WHITESPACE@79..80 " "
66 PLACEHOLDER_PAT@[80; 81) 66 PLACEHOLDER_PAT@80..81
67 UNDERSCORE@[80; 81) "_" 67 UNDERSCORE@80..81 "_"
68 WHITESPACE@[81; 82) " " 68 WHITESPACE@81..82 " "
69 IN_KW@[82; 84) "in" 69 IN_KW@82..84 "in"
70 WHITESPACE@[84; 85) " " 70 WHITESPACE@84..85 " "
71 TUPLE_EXPR@[85; 87) 71 TUPLE_EXPR@85..87
72 L_PAREN@[85; 86) "(" 72 L_PAREN@85..86 "("
73 R_PAREN@[86; 87) ")" 73 R_PAREN@86..87 ")"
74 WHITESPACE@[87; 88) " " 74 WHITESPACE@87..88 " "
75 BLOCK_EXPR@[88; 90) 75 BLOCK_EXPR@88..90
76 BLOCK@[88; 90) 76 BLOCK@88..90
77 L_CURLY@[88; 89) "{" 77 L_CURLY@88..89 "{"
78 R_CURLY@[89; 90) "}" 78 R_CURLY@89..90 "}"
79 WHITESPACE@[90; 95) "\n " 79 WHITESPACE@90..95 "\n "
80 EXPR_STMT@[95; 97) 80 EXPR_STMT@95..97
81 BLOCK_EXPR@[95; 97) 81 BLOCK_EXPR@95..97
82 BLOCK@[95; 97) 82 BLOCK@95..97
83 L_CURLY@[95; 96) "{" 83 L_CURLY@95..96 "{"
84 R_CURLY@[96; 97) "}" 84 R_CURLY@96..97 "}"
85 WHITESPACE@[97; 102) "\n " 85 WHITESPACE@97..102 "\n "
86 EXPR_STMT@[102; 104) 86 EXPR_STMT@102..104
87 BLOCK_EXPR@[102; 104) 87 BLOCK_EXPR@102..104
88 BLOCK@[102; 104) 88 BLOCK@102..104
89 L_CURLY@[102; 103) "{" 89 L_CURLY@102..103 "{"
90 R_CURLY@[103; 104) "}" 90 R_CURLY@103..104 "}"
91 WHITESPACE@[104; 109) "\n " 91 WHITESPACE@104..109 "\n "
92 EXPR_STMT@[109; 152) 92 EXPR_STMT@109..152
93 MACRO_CALL@[109; 152) 93 MACRO_CALL@109..152
94 PATH@[109; 120) 94 PATH@109..120
95 PATH_SEGMENT@[109; 120) 95 PATH_SEGMENT@109..120
96 NAME_REF@[109; 120) 96 NAME_REF@109..120
97 IDENT@[109; 120) "macro_rules" 97 IDENT@109..120 "macro_rules"
98 BANG@[120; 121) "!" 98 BANG@120..121 "!"
99 WHITESPACE@[121; 122) " " 99 WHITESPACE@121..122 " "
100 NAME@[122; 126) 100 NAME@122..126
101 IDENT@[122; 126) "test" 101 IDENT@122..126 "test"
102 WHITESPACE@[126; 127) " " 102 WHITESPACE@126..127 " "
103 TOKEN_TREE@[127; 152) 103 TOKEN_TREE@127..152
104 L_CURLY@[127; 128) "{" 104 L_CURLY@127..128 "{"
105 WHITESPACE@[128; 138) "\n " 105 WHITESPACE@128..138 "\n "
106 TOKEN_TREE@[138; 140) 106 TOKEN_TREE@138..140
107 L_PAREN@[138; 139) "(" 107 L_PAREN@138..139 "("
108 R_PAREN@[139; 140) ")" 108 R_PAREN@139..140 ")"
109 WHITESPACE@[140; 141) " " 109 WHITESPACE@140..141 " "
110 EQ@[141; 142) "=" 110 EQ@141..142 "="
111 R_ANGLE@[142; 143) ">" 111 R_ANGLE@142..143 ">"
112 WHITESPACE@[143; 144) " " 112 WHITESPACE@143..144 " "
113 TOKEN_TREE@[144; 146) 113 TOKEN_TREE@144..146
114 L_CURLY@[144; 145) "{" 114 L_CURLY@144..145 "{"
115 R_CURLY@[145; 146) "}" 115 R_CURLY@145..146 "}"
116 WHITESPACE@[146; 151) "\n " 116 WHITESPACE@146..151 "\n "
117 R_CURLY@[151; 152) "}" 117 R_CURLY@151..152 "}"
118 WHITESPACE@[152; 157) "\n " 118 WHITESPACE@152..157 "\n "
119 MACRO_CALL@[157; 164) 119 MACRO_CALL@157..164
120 PATH@[157; 161) 120 PATH@157..161
121 PATH_SEGMENT@[157; 161) 121 PATH_SEGMENT@157..161
122 NAME_REF@[157; 161) 122 NAME_REF@157..161
123 IDENT@[157; 161) "test" 123 IDENT@157..161 "test"
124 BANG@[161; 162) "!" 124 BANG@161..162 "!"
125 TOKEN_TREE@[162; 164) 125 TOKEN_TREE@162..164
126 L_CURLY@[162; 163) "{" 126 L_CURLY@162..163 "{"
127 R_CURLY@[163; 164) "}" 127 R_CURLY@163..164 "}"
128 WHITESPACE@[164; 165) "\n" 128 WHITESPACE@164..165 "\n"
129 R_CURLY@[165; 166) "}" 129 R_CURLY@165..166 "}"
130 WHITESPACE@[166; 167) "\n" 130 WHITESPACE@166..167 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rast b/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rast
index af9077270..80bda4ba7 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@0..20
2 IMPL_DEF@[0; 19) 2 IMPL_DEF@0..19
3 DEFAULT_KW@[0; 7) "default" 3 DEFAULT_KW@0..7 "default"
4 WHITESPACE@[7; 8) " " 4 WHITESPACE@7..8 " "
5 IMPL_KW@[8; 12) "impl" 5 IMPL_KW@8..12 "impl"
6 WHITESPACE@[12; 13) " " 6 WHITESPACE@12..13 " "
7 PATH_TYPE@[13; 16) 7 PATH_TYPE@13..16
8 PATH@[13; 16) 8 PATH@13..16
9 PATH_SEGMENT@[13; 16) 9 PATH_SEGMENT@13..16
10 NAME_REF@[13; 16) 10 NAME_REF@13..16
11 IDENT@[13; 16) "Foo" 11 IDENT@13..16 "Foo"
12 WHITESPACE@[16; 17) " " 12 WHITESPACE@16..17 " "
13 ITEM_LIST@[17; 19) 13 ITEM_LIST@17..19
14 L_CURLY@[17; 18) "{" 14 L_CURLY@17..18 "{"
15 R_CURLY@[18; 19) "}" 15 R_CURLY@18..19 "}"
16 WHITESPACE@[19; 20) "\n" 16 WHITESPACE@19..20 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rast b/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rast
index 072dc9d16..a51fb5511 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rast
@@ -1,19 +1,19 @@
1SOURCE_FILE@[0; 25) 1SOURCE_FILE@0..25
2 FN_DEF@[0; 24) 2 FN_DEF@0..24
3 CONST_KW@[0; 5) "const" 3 CONST_KW@0..5 "const"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 UNSAFE_KW@[6; 12) "unsafe" 5 UNSAFE_KW@6..12 "unsafe"
6 WHITESPACE@[12; 13) " " 6 WHITESPACE@12..13 " "
7 FN_KW@[13; 15) "fn" 7 FN_KW@13..15 "fn"
8 WHITESPACE@[15; 16) " " 8 WHITESPACE@15..16 " "
9 NAME@[16; 19) 9 NAME@16..19
10 IDENT@[16; 19) "foo" 10 IDENT@16..19 "foo"
11 PARAM_LIST@[19; 21) 11 PARAM_LIST@19..21
12 L_PAREN@[19; 20) "(" 12 L_PAREN@19..20 "("
13 R_PAREN@[20; 21) ")" 13 R_PAREN@20..21 ")"
14 WHITESPACE@[21; 22) " " 14 WHITESPACE@21..22 " "
15 BLOCK_EXPR@[22; 24) 15 BLOCK_EXPR@22..24
16 BLOCK@[22; 24) 16 BLOCK@22..24
17 L_CURLY@[22; 23) "{" 17 L_CURLY@22..23 "{"
18 R_CURLY@[23; 24) "}" 18 R_CURLY@23..24 "}"
19 WHITESPACE@[24; 25) "\n" 19 WHITESPACE@24..25 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rast b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rast
index ed57a9eea..61b47bf35 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rast
@@ -1,103 +1,103 @@
1SOURCE_FILE@[0; 67) 1SOURCE_FILE@0..67
2 FN_DEF@[0; 9) 2 FN_DEF@0..9
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 BLOCK_EXPR@[7; 9) 11 BLOCK_EXPR@7..9
12 BLOCK@[7; 9) 12 BLOCK@7..9
13 L_CURLY@[7; 8) "{" 13 L_CURLY@7..8 "{"
14 R_CURLY@[8; 9) "}" 14 R_CURLY@8..9 "}"
15 WHITESPACE@[9; 10) "\n" 15 WHITESPACE@9..10 "\n"
16 FN_DEF@[10; 25) 16 FN_DEF@10..25
17 FN_KW@[10; 12) "fn" 17 FN_KW@10..12 "fn"
18 WHITESPACE@[12; 13) " " 18 WHITESPACE@12..13 " "
19 NAME@[13; 14) 19 NAME@13..14
20 IDENT@[13; 14) "b" 20 IDENT@13..14 "b"
21 PARAM_LIST@[14; 22) 21 PARAM_LIST@14..22
22 L_PAREN@[14; 15) "(" 22 L_PAREN@14..15 "("
23 PARAM@[15; 21) 23 PARAM@15..21
24 BIND_PAT@[15; 16) 24 BIND_PAT@15..16
25 NAME@[15; 16) 25 NAME@15..16
26 IDENT@[15; 16) "x" 26 IDENT@15..16 "x"
27 COLON@[16; 17) ":" 27 COLON@16..17 ":"
28 WHITESPACE@[17; 18) " " 28 WHITESPACE@17..18 " "
29 PATH_TYPE@[18; 21) 29 PATH_TYPE@18..21
30 PATH@[18; 21) 30 PATH@18..21
31 PATH_SEGMENT@[18; 21) 31 PATH_SEGMENT@18..21
32 NAME_REF@[18; 21) 32 NAME_REF@18..21
33 IDENT@[18; 21) "i32" 33 IDENT@18..21 "i32"
34 R_PAREN@[21; 22) ")" 34 R_PAREN@21..22 ")"
35 WHITESPACE@[22; 23) " " 35 WHITESPACE@22..23 " "
36 BLOCK_EXPR@[23; 25) 36 BLOCK_EXPR@23..25
37 BLOCK@[23; 25) 37 BLOCK@23..25
38 L_CURLY@[23; 24) "{" 38 L_CURLY@23..24 "{"
39 R_CURLY@[24; 25) "}" 39 R_CURLY@24..25 "}"
40 WHITESPACE@[25; 26) "\n" 40 WHITESPACE@25..26 "\n"
41 FN_DEF@[26; 43) 41 FN_DEF@26..43
42 FN_KW@[26; 28) "fn" 42 FN_KW@26..28 "fn"
43 WHITESPACE@[28; 29) " " 43 WHITESPACE@28..29 " "
44 NAME@[29; 30) 44 NAME@29..30
45 IDENT@[29; 30) "c" 45 IDENT@29..30 "c"
46 PARAM_LIST@[30; 40) 46 PARAM_LIST@30..40
47 L_PAREN@[30; 31) "(" 47 L_PAREN@30..31 "("
48 PARAM@[31; 37) 48 PARAM@31..37
49 BIND_PAT@[31; 32) 49 BIND_PAT@31..32
50 NAME@[31; 32) 50 NAME@31..32
51 IDENT@[31; 32) "x" 51 IDENT@31..32 "x"
52 COLON@[32; 33) ":" 52 COLON@32..33 ":"
53 WHITESPACE@[33; 34) " " 53 WHITESPACE@33..34 " "
54 PATH_TYPE@[34; 37) 54 PATH_TYPE@34..37
55 PATH@[34; 37) 55 PATH@34..37
56 PATH_SEGMENT@[34; 37) 56 PATH_SEGMENT@34..37
57 NAME_REF@[34; 37) 57 NAME_REF@34..37
58 IDENT@[34; 37) "i32" 58 IDENT@34..37 "i32"
59 COMMA@[37; 38) "," 59 COMMA@37..38 ","
60 WHITESPACE@[38; 39) " " 60 WHITESPACE@38..39 " "
61 R_PAREN@[39; 40) ")" 61 R_PAREN@39..40 ")"
62 WHITESPACE@[40; 41) " " 62 WHITESPACE@40..41 " "
63 BLOCK_EXPR@[41; 43) 63 BLOCK_EXPR@41..43
64 BLOCK@[41; 43) 64 BLOCK@41..43
65 L_CURLY@[41; 42) "{" 65 L_CURLY@41..42 "{"
66 R_CURLY@[42; 43) "}" 66 R_CURLY@42..43 "}"
67 WHITESPACE@[43; 44) "\n" 67 WHITESPACE@43..44 "\n"
68 FN_DEF@[44; 66) 68 FN_DEF@44..66
69 FN_KW@[44; 46) "fn" 69 FN_KW@44..46 "fn"
70 WHITESPACE@[46; 47) " " 70 WHITESPACE@46..47 " "
71 NAME@[47; 48) 71 NAME@47..48
72 IDENT@[47; 48) "d" 72 IDENT@47..48 "d"
73 PARAM_LIST@[48; 63) 73 PARAM_LIST@48..63
74 L_PAREN@[48; 49) "(" 74 L_PAREN@48..49 "("
75 PARAM@[49; 55) 75 PARAM@49..55
76 BIND_PAT@[49; 50) 76 BIND_PAT@49..50
77 NAME@[49; 50) 77 NAME@49..50
78 IDENT@[49; 50) "x" 78 IDENT@49..50 "x"
79 COLON@[50; 51) ":" 79 COLON@50..51 ":"
80 WHITESPACE@[51; 52) " " 80 WHITESPACE@51..52 " "
81 PATH_TYPE@[52; 55) 81 PATH_TYPE@52..55
82 PATH@[52; 55) 82 PATH@52..55
83 PATH_SEGMENT@[52; 55) 83 PATH_SEGMENT@52..55
84 NAME_REF@[52; 55) 84 NAME_REF@52..55
85 IDENT@[52; 55) "i32" 85 IDENT@52..55 "i32"
86 COMMA@[55; 56) "," 86 COMMA@55..56 ","
87 WHITESPACE@[56; 57) " " 87 WHITESPACE@56..57 " "
88 PARAM@[57; 62) 88 PARAM@57..62
89 BIND_PAT@[57; 58) 89 BIND_PAT@57..58
90 NAME@[57; 58) 90 NAME@57..58
91 IDENT@[57; 58) "y" 91 IDENT@57..58 "y"
92 COLON@[58; 59) ":" 92 COLON@58..59 ":"
93 WHITESPACE@[59; 60) " " 93 WHITESPACE@59..60 " "
94 TUPLE_TYPE@[60; 62) 94 TUPLE_TYPE@60..62
95 L_PAREN@[60; 61) "(" 95 L_PAREN@60..61 "("
96 R_PAREN@[61; 62) ")" 96 R_PAREN@61..62 ")"
97 R_PAREN@[62; 63) ")" 97 R_PAREN@62..63 ")"
98 WHITESPACE@[63; 64) " " 98 WHITESPACE@63..64 " "
99 BLOCK_EXPR@[64; 66) 99 BLOCK_EXPR@64..66
100 BLOCK@[64; 66) 100 BLOCK@64..66
101 L_CURLY@[64; 65) "{" 101 L_CURLY@64..65 "{"
102 R_CURLY@[65; 66) "}" 102 R_CURLY@65..66 "}"
103 WHITESPACE@[66; 67) "\n" 103 WHITESPACE@66..67 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rast
index d25f087a5..89d435d1f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rast
@@ -1,36 +1,36 @@
1SOURCE_FILE@[0; 33) 1SOURCE_FILE@0..33
2 FN_DEF@[0; 32) 2 FN_DEF@0..32
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 32) 11 BLOCK_EXPR@9..32
12 BLOCK@[9; 32) 12 BLOCK@9..32
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 30) 15 EXPR_STMT@15..30
16 FOR_EXPR@[15; 29) 16 FOR_EXPR@15..29
17 FOR_KW@[15; 18) "for" 17 FOR_KW@15..18 "for"
18 WHITESPACE@[18; 19) " " 18 WHITESPACE@18..19 " "
19 BIND_PAT@[19; 20) 19 BIND_PAT@19..20
20 NAME@[19; 20) 20 NAME@19..20
21 IDENT@[19; 20) "x" 21 IDENT@19..20 "x"
22 WHITESPACE@[20; 21) " " 22 WHITESPACE@20..21 " "
23 IN_KW@[21; 23) "in" 23 IN_KW@21..23 "in"
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 ARRAY_EXPR@[24; 26) 25 ARRAY_EXPR@24..26
26 L_BRACK@[24; 25) "[" 26 L_BRACK@24..25 "["
27 R_BRACK@[25; 26) "]" 27 R_BRACK@25..26 "]"
28 WHITESPACE@[26; 27) " " 28 WHITESPACE@26..27 " "
29 BLOCK_EXPR@[27; 29) 29 BLOCK_EXPR@27..29
30 BLOCK@[27; 29) 30 BLOCK@27..29
31 L_CURLY@[27; 28) "{" 31 L_CURLY@27..28 "{"
32 R_CURLY@[28; 29) "}" 32 R_CURLY@28..29 "}"
33 SEMICOLON@[29; 30) ";" 33 SEMICOLON@29..30 ";"
34 WHITESPACE@[30; 31) "\n" 34 WHITESPACE@30..31 "\n"
35 R_CURLY@[31; 32) "}" 35 R_CURLY@31..32 "}"
36 WHITESPACE@[32; 33) "\n" 36 WHITESPACE@32..33 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rast b/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rast
index b7979fbf5..57b4d0c4f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rast
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 FN_DEF@[0; 18) 2 FN_DEF@0..18
3 UNSAFE_KW@[0; 6) "unsafe" 3 UNSAFE_KW@0..6 "unsafe"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 FN_KW@[7; 9) "fn" 5 FN_KW@7..9 "fn"
6 WHITESPACE@[9; 10) " " 6 WHITESPACE@9..10 " "
7 NAME@[10; 13) 7 NAME@10..13
8 IDENT@[10; 13) "foo" 8 IDENT@10..13 "foo"
9 PARAM_LIST@[13; 15) 9 PARAM_LIST@13..15
10 L_PAREN@[13; 14) "(" 10 L_PAREN@13..14 "("
11 R_PAREN@[14; 15) ")" 11 R_PAREN@14..15 ")"
12 WHITESPACE@[15; 16) " " 12 WHITESPACE@15..16 " "
13 BLOCK_EXPR@[16; 18) 13 BLOCK_EXPR@16..18
14 BLOCK@[16; 18) 14 BLOCK@16..18
15 L_CURLY@[16; 17) "{" 15 L_CURLY@16..17 "{"
16 R_CURLY@[17; 18) "}" 16 R_CURLY@17..18 "}"
17 WHITESPACE@[18; 19) "\n" 17 WHITESPACE@18..19 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast b/crates/ra_syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast
index fcd099de9..ed6f6f326 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast
@@ -1,133 +1,133 @@
1SOURCE_FILE@[0; 119) 1SOURCE_FILE@0..119
2 FN_DEF@[0; 118) 2 FN_DEF@0..118
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 118) 11 BLOCK_EXPR@9..118
12 BLOCK@[9; 118) 12 BLOCK@9..118
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 29) 15 LET_STMT@15..29
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 RECORD_PAT@[19; 23) 18 RECORD_PAT@19..23
19 PATH@[19; 20) 19 PATH@19..20
20 PATH_SEGMENT@[19; 20) 20 PATH_SEGMENT@19..20
21 NAME_REF@[19; 20) 21 NAME_REF@19..20
22 IDENT@[19; 20) "S" 22 IDENT@19..20 "S"
23 WHITESPACE@[20; 21) " " 23 WHITESPACE@20..21 " "
24 RECORD_FIELD_PAT_LIST@[21; 23) 24 RECORD_FIELD_PAT_LIST@21..23
25 L_CURLY@[21; 22) "{" 25 L_CURLY@21..22 "{"
26 R_CURLY@[22; 23) "}" 26 R_CURLY@22..23 "}"
27 WHITESPACE@[23; 24) " " 27 WHITESPACE@23..24 " "
28 EQ@[24; 25) "=" 28 EQ@24..25 "="
29 WHITESPACE@[25; 26) " " 29 WHITESPACE@25..26 " "
30 TUPLE_EXPR@[26; 28) 30 TUPLE_EXPR@26..28
31 L_PAREN@[26; 27) "(" 31 L_PAREN@26..27 "("
32 R_PAREN@[27; 28) ")" 32 R_PAREN@27..28 ")"
33 SEMICOLON@[28; 29) ";" 33 SEMICOLON@28..29 ";"
34 WHITESPACE@[29; 34) "\n " 34 WHITESPACE@29..34 "\n "
35 LET_STMT@[34; 62) 35 LET_STMT@34..62
36 LET_KW@[34; 37) "let" 36 LET_KW@34..37 "let"
37 WHITESPACE@[37; 38) " " 37 WHITESPACE@37..38 " "
38 RECORD_PAT@[38; 56) 38 RECORD_PAT@38..56
39 PATH@[38; 39) 39 PATH@38..39
40 PATH_SEGMENT@[38; 39) 40 PATH_SEGMENT@38..39
41 NAME_REF@[38; 39) 41 NAME_REF@38..39
42 IDENT@[38; 39) "S" 42 IDENT@38..39 "S"
43 WHITESPACE@[39; 40) " " 43 WHITESPACE@39..40 " "
44 RECORD_FIELD_PAT_LIST@[40; 56) 44 RECORD_FIELD_PAT_LIST@40..56
45 L_CURLY@[40; 41) "{" 45 L_CURLY@40..41 "{"
46 WHITESPACE@[41; 42) " " 46 WHITESPACE@41..42 " "
47 RECORD_FIELD_PAT@[42; 43) 47 RECORD_FIELD_PAT@42..43
48 BIND_PAT@[42; 43) 48 BIND_PAT@42..43
49 NAME@[42; 43) 49 NAME@42..43
50 IDENT@[42; 43) "f" 50 IDENT@42..43 "f"
51 COMMA@[43; 44) "," 51 COMMA@43..44 ","
52 WHITESPACE@[44; 45) " " 52 WHITESPACE@44..45 " "
53 RECORD_FIELD_PAT@[45; 54) 53 RECORD_FIELD_PAT@45..54
54 BIND_PAT@[45; 54) 54 BIND_PAT@45..54
55 REF_KW@[45; 48) "ref" 55 REF_KW@45..48 "ref"
56 WHITESPACE@[48; 49) " " 56 WHITESPACE@48..49 " "
57 MUT_KW@[49; 52) "mut" 57 MUT_KW@49..52 "mut"
58 WHITESPACE@[52; 53) " " 58 WHITESPACE@52..53 " "
59 NAME@[53; 54) 59 NAME@53..54
60 IDENT@[53; 54) "g" 60 IDENT@53..54 "g"
61 WHITESPACE@[54; 55) " " 61 WHITESPACE@54..55 " "
62 R_CURLY@[55; 56) "}" 62 R_CURLY@55..56 "}"
63 WHITESPACE@[56; 57) " " 63 WHITESPACE@56..57 " "
64 EQ@[57; 58) "=" 64 EQ@57..58 "="
65 WHITESPACE@[58; 59) " " 65 WHITESPACE@58..59 " "
66 TUPLE_EXPR@[59; 61) 66 TUPLE_EXPR@59..61
67 L_PAREN@[59; 60) "(" 67 L_PAREN@59..60 "("
68 R_PAREN@[60; 61) ")" 68 R_PAREN@60..61 ")"
69 SEMICOLON@[61; 62) ";" 69 SEMICOLON@61..62 ";"
70 WHITESPACE@[62; 67) "\n " 70 WHITESPACE@62..67 "\n "
71 LET_STMT@[67; 90) 71 LET_STMT@67..90
72 LET_KW@[67; 70) "let" 72 LET_KW@67..70 "let"
73 WHITESPACE@[70; 71) " " 73 WHITESPACE@70..71 " "
74 RECORD_PAT@[71; 84) 74 RECORD_PAT@71..84
75 PATH@[71; 72) 75 PATH@71..72
76 PATH_SEGMENT@[71; 72) 76 PATH_SEGMENT@71..72
77 NAME_REF@[71; 72) 77 NAME_REF@71..72
78 IDENT@[71; 72) "S" 78 IDENT@71..72 "S"
79 WHITESPACE@[72; 73) " " 79 WHITESPACE@72..73 " "
80 RECORD_FIELD_PAT_LIST@[73; 84) 80 RECORD_FIELD_PAT_LIST@73..84
81 L_CURLY@[73; 74) "{" 81 L_CURLY@73..74 "{"
82 WHITESPACE@[74; 75) " " 82 WHITESPACE@74..75 " "
83 RECORD_FIELD_PAT@[75; 79) 83 RECORD_FIELD_PAT@75..79
84 NAME_REF@[75; 76) 84 NAME_REF@75..76
85 IDENT@[75; 76) "h" 85 IDENT@75..76 "h"
86 COLON@[76; 77) ":" 86 COLON@76..77 ":"
87 WHITESPACE@[77; 78) " " 87 WHITESPACE@77..78 " "
88 PLACEHOLDER_PAT@[78; 79) 88 PLACEHOLDER_PAT@78..79
89 UNDERSCORE@[78; 79) "_" 89 UNDERSCORE@78..79 "_"
90 COMMA@[79; 80) "," 90 COMMA@79..80 ","
91 WHITESPACE@[80; 81) " " 91 WHITESPACE@80..81 " "
92 DOT2@[81; 83) ".." 92 DOT2@81..83 ".."
93 R_CURLY@[83; 84) "}" 93 R_CURLY@83..84 "}"
94 WHITESPACE@[84; 85) " " 94 WHITESPACE@84..85 " "
95 EQ@[85; 86) "=" 95 EQ@85..86 "="
96 WHITESPACE@[86; 87) " " 96 WHITESPACE@86..87 " "
97 TUPLE_EXPR@[87; 89) 97 TUPLE_EXPR@87..89
98 L_PAREN@[87; 88) "(" 98 L_PAREN@87..88 "("
99 R_PAREN@[88; 89) ")" 99 R_PAREN@88..89 ")"
100 SEMICOLON@[89; 90) ";" 100 SEMICOLON@89..90 ";"
101 WHITESPACE@[90; 95) "\n " 101 WHITESPACE@90..95 "\n "
102 LET_STMT@[95; 116) 102 LET_STMT@95..116
103 LET_KW@[95; 98) "let" 103 LET_KW@95..98 "let"
104 WHITESPACE@[98; 99) " " 104 WHITESPACE@98..99 " "
105 RECORD_PAT@[99; 110) 105 RECORD_PAT@99..110
106 PATH@[99; 100) 106 PATH@99..100
107 PATH_SEGMENT@[99; 100) 107 PATH_SEGMENT@99..100
108 NAME_REF@[99; 100) 108 NAME_REF@99..100
109 IDENT@[99; 100) "S" 109 IDENT@99..100 "S"
110 WHITESPACE@[100; 101) " " 110 WHITESPACE@100..101 " "
111 RECORD_FIELD_PAT_LIST@[101; 110) 111 RECORD_FIELD_PAT_LIST@101..110
112 L_CURLY@[101; 102) "{" 112 L_CURLY@101..102 "{"
113 WHITESPACE@[102; 103) " " 113 WHITESPACE@102..103 " "
114 RECORD_FIELD_PAT@[103; 107) 114 RECORD_FIELD_PAT@103..107
115 NAME_REF@[103; 104) 115 NAME_REF@103..104
116 IDENT@[103; 104) "h" 116 IDENT@103..104 "h"
117 COLON@[104; 105) ":" 117 COLON@104..105 ":"
118 WHITESPACE@[105; 106) " " 118 WHITESPACE@105..106 " "
119 PLACEHOLDER_PAT@[106; 107) 119 PLACEHOLDER_PAT@106..107
120 UNDERSCORE@[106; 107) "_" 120 UNDERSCORE@106..107 "_"
121 COMMA@[107; 108) "," 121 COMMA@107..108 ","
122 WHITESPACE@[108; 109) " " 122 WHITESPACE@108..109 " "
123 R_CURLY@[109; 110) "}" 123 R_CURLY@109..110 "}"
124 WHITESPACE@[110; 111) " " 124 WHITESPACE@110..111 " "
125 EQ@[111; 112) "=" 125 EQ@111..112 "="
126 WHITESPACE@[112; 113) " " 126 WHITESPACE@112..113 " "
127 TUPLE_EXPR@[113; 115) 127 TUPLE_EXPR@113..115
128 L_PAREN@[113; 114) "(" 128 L_PAREN@113..114 "("
129 R_PAREN@[114; 115) ")" 129 R_PAREN@114..115 ")"
130 SEMICOLON@[115; 116) ";" 130 SEMICOLON@115..116 ";"
131 WHITESPACE@[116; 117) "\n" 131 WHITESPACE@116..117 "\n"
132 R_CURLY@[117; 118) "}" 132 R_CURLY@117..118 "}"
133 WHITESPACE@[118; 119) "\n" 133 WHITESPACE@118..119 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rast
index 60fbf2771..461c61914 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rast
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 55) 1SOURCE_FILE@0..55
2 FN_DEF@[0; 54) 2 FN_DEF@0..54
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 54) 11 BLOCK_EXPR@9..54
12 BLOCK@[9; 54) 12 BLOCK@9..54
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 18) 15 EXPR_STMT@15..18
16 ARRAY_EXPR@[15; 17) 16 ARRAY_EXPR@15..17
17 L_BRACK@[15; 16) "[" 17 L_BRACK@15..16 "["
18 R_BRACK@[16; 17) "]" 18 R_BRACK@16..17 "]"
19 SEMICOLON@[17; 18) ";" 19 SEMICOLON@17..18 ";"
20 WHITESPACE@[18; 23) "\n " 20 WHITESPACE@18..23 "\n "
21 EXPR_STMT@[23; 27) 21 EXPR_STMT@23..27
22 ARRAY_EXPR@[23; 26) 22 ARRAY_EXPR@23..26
23 L_BRACK@[23; 24) "[" 23 L_BRACK@23..24 "["
24 LITERAL@[24; 25) 24 LITERAL@24..25
25 INT_NUMBER@[24; 25) "1" 25 INT_NUMBER@24..25 "1"
26 R_BRACK@[25; 26) "]" 26 R_BRACK@25..26 "]"
27 SEMICOLON@[26; 27) ";" 27 SEMICOLON@26..27 ";"
28 WHITESPACE@[27; 32) "\n " 28 WHITESPACE@27..32 "\n "
29 EXPR_STMT@[32; 40) 29 EXPR_STMT@32..40
30 ARRAY_EXPR@[32; 39) 30 ARRAY_EXPR@32..39
31 L_BRACK@[32; 33) "[" 31 L_BRACK@32..33 "["
32 LITERAL@[33; 34) 32 LITERAL@33..34
33 INT_NUMBER@[33; 34) "1" 33 INT_NUMBER@33..34 "1"
34 COMMA@[34; 35) "," 34 COMMA@34..35 ","
35 WHITESPACE@[35; 36) " " 35 WHITESPACE@35..36 " "
36 LITERAL@[36; 37) 36 LITERAL@36..37
37 INT_NUMBER@[36; 37) "2" 37 INT_NUMBER@36..37 "2"
38 COMMA@[37; 38) "," 38 COMMA@37..38 ","
39 R_BRACK@[38; 39) "]" 39 R_BRACK@38..39 "]"
40 SEMICOLON@[39; 40) ";" 40 SEMICOLON@39..40 ";"
41 WHITESPACE@[40; 45) "\n " 41 WHITESPACE@40..45 "\n "
42 EXPR_STMT@[45; 52) 42 EXPR_STMT@45..52
43 ARRAY_EXPR@[45; 51) 43 ARRAY_EXPR@45..51
44 L_BRACK@[45; 46) "[" 44 L_BRACK@45..46 "["
45 LITERAL@[46; 47) 45 LITERAL@46..47
46 INT_NUMBER@[46; 47) "1" 46 INT_NUMBER@46..47 "1"
47 SEMICOLON@[47; 48) ";" 47 SEMICOLON@47..48 ";"
48 WHITESPACE@[48; 49) " " 48 WHITESPACE@48..49 " "
49 LITERAL@[49; 50) 49 LITERAL@49..50
50 INT_NUMBER@[49; 50) "2" 50 INT_NUMBER@49..50 "2"
51 R_BRACK@[50; 51) "]" 51 R_BRACK@50..51 "]"
52 SEMICOLON@[51; 52) ";" 52 SEMICOLON@51..52 ";"
53 WHITESPACE@[52; 53) "\n" 53 WHITESPACE@52..53 "\n"
54 R_CURLY@[53; 54) "}" 54 R_CURLY@53..54 "}"
55 WHITESPACE@[54; 55) "\n" 55 WHITESPACE@54..55 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast b/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast
index d65c75c65..e3c4cfeb3 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 29) 1SOURCE_FILE@0..29
2 TYPE_ALIAS_DEF@[0; 28) 2 TYPE_ALIAS_DEF@0..28
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "F" 6 IDENT@5..6 "F"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 PATH_TYPE@[9; 27) 10 PATH_TYPE@9..27
11 PATH@[9; 27) 11 PATH@9..27
12 PATH_SEGMENT@[9; 27) 12 PATH_SEGMENT@9..27
13 NAME_REF@[9; 12) 13 NAME_REF@9..12
14 IDENT@[9; 12) "Box" 14 IDENT@9..12 "Box"
15 TYPE_ARG_LIST@[12; 27) 15 TYPE_ARG_LIST@12..27
16 L_ANGLE@[12; 13) "<" 16 L_ANGLE@12..13 "<"
17 TYPE_ARG@[13; 26) 17 TYPE_ARG@13..26
18 PATH_TYPE@[13; 26) 18 PATH_TYPE@13..26
19 PATH@[13; 26) 19 PATH@13..26
20 PATH_SEGMENT@[13; 26) 20 PATH_SEGMENT@13..26
21 NAME_REF@[13; 15) 21 NAME_REF@13..15
22 IDENT@[13; 15) "Fn" 22 IDENT@13..15 "Fn"
23 PARAM_LIST@[15; 20) 23 PARAM_LIST@15..20
24 L_PAREN@[15; 16) "(" 24 L_PAREN@15..16 "("
25 PARAM@[16; 19) 25 PARAM@16..19
26 PATH_TYPE@[16; 19) 26 PATH_TYPE@16..19
27 PATH@[16; 19) 27 PATH@16..19
28 PATH_SEGMENT@[16; 19) 28 PATH_SEGMENT@16..19
29 NAME_REF@[16; 19) 29 NAME_REF@16..19
30 IDENT@[16; 19) "i32" 30 IDENT@16..19 "i32"
31 R_PAREN@[19; 20) ")" 31 R_PAREN@19..20 ")"
32 WHITESPACE@[20; 21) " " 32 WHITESPACE@20..21 " "
33 RET_TYPE@[21; 26) 33 RET_TYPE@21..26
34 THIN_ARROW@[21; 23) "->" 34 THIN_ARROW@21..23 "->"
35 WHITESPACE@[23; 24) " " 35 WHITESPACE@23..24 " "
36 TUPLE_TYPE@[24; 26) 36 TUPLE_TYPE@24..26
37 L_PAREN@[24; 25) "(" 37 L_PAREN@24..25 "("
38 R_PAREN@[25; 26) ")" 38 R_PAREN@25..26 ")"
39 R_ANGLE@[26; 27) ">" 39 R_ANGLE@26..27 ">"
40 SEMICOLON@[27; 28) ";" 40 SEMICOLON@27..28 ";"
41 WHITESPACE@[28; 29) "\n" 41 WHITESPACE@28..29 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rast
index 5635cba9b..8b2323cf2 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 52) 1SOURCE_FILE@0..52
2 FN_DEF@[0; 51) 2 FN_DEF@0..51
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 51) 11 BLOCK_EXPR@9..51
12 BLOCK@[9; 51) 12 BLOCK@9..51
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 18) 15 EXPR_STMT@15..18
16 BLOCK_EXPR@[15; 17) 16 BLOCK_EXPR@15..17
17 BLOCK@[15; 17) 17 BLOCK@15..17
18 L_CURLY@[15; 16) "{" 18 L_CURLY@15..16 "{"
19 R_CURLY@[16; 17) "}" 19 R_CURLY@16..17 "}"
20 SEMICOLON@[17; 18) ";" 20 SEMICOLON@17..18 ";"
21 WHITESPACE@[18; 23) "\n " 21 WHITESPACE@18..23 "\n "
22 EXPR_STMT@[23; 33) 22 EXPR_STMT@23..33
23 BLOCK_EXPR@[23; 32) 23 BLOCK_EXPR@23..32
24 UNSAFE_KW@[23; 29) "unsafe" 24 UNSAFE_KW@23..29 "unsafe"
25 WHITESPACE@[29; 30) " " 25 WHITESPACE@29..30 " "
26 BLOCK@[30; 32) 26 BLOCK@30..32
27 L_CURLY@[30; 31) "{" 27 L_CURLY@30..31 "{"
28 R_CURLY@[31; 32) "}" 28 R_CURLY@31..32 "}"
29 SEMICOLON@[32; 33) ";" 29 SEMICOLON@32..33 ";"
30 WHITESPACE@[33; 38) "\n " 30 WHITESPACE@33..38 "\n "
31 EXPR_STMT@[38; 49) 31 EXPR_STMT@38..49
32 BLOCK_EXPR@[38; 48) 32 BLOCK_EXPR@38..48
33 LABEL@[38; 45) 33 LABEL@38..45
34 LIFETIME@[38; 44) "\'label" 34 LIFETIME@38..44 "\'label"
35 COLON@[44; 45) ":" 35 COLON@44..45 ":"
36 WHITESPACE@[45; 46) " " 36 WHITESPACE@45..46 " "
37 BLOCK@[46; 48) 37 BLOCK@46..48
38 L_CURLY@[46; 47) "{" 38 L_CURLY@46..47 "{"
39 R_CURLY@[47; 48) "}" 39 R_CURLY@47..48 "}"
40 SEMICOLON@[48; 49) ";" 40 SEMICOLON@48..49 ";"
41 WHITESPACE@[49; 50) "\n" 41 WHITESPACE@49..50 "\n"
42 R_CURLY@[50; 51) "}" 42 R_CURLY@50..51 "}"
43 WHITESPACE@[51; 52) "\n" 43 WHITESPACE@51..52 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rast
index 157dfcdb8..73c314e07 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rast
@@ -1,140 +1,140 @@
1SOURCE_FILE@[0; 134) 1SOURCE_FILE@0..134
2 FN_DEF@[0; 133) 2 FN_DEF@0..133
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 133) 11 BLOCK_EXPR@9..133
12 BLOCK@[9; 133) 12 BLOCK@9..133
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 21) 15 EXPR_STMT@15..21
16 LAMBDA_EXPR@[15; 20) 16 LAMBDA_EXPR@15..20
17 PARAM_LIST@[15; 17) 17 PARAM_LIST@15..17
18 PIPE@[15; 16) "|" 18 PIPE@15..16 "|"
19 PIPE@[16; 17) "|" 19 PIPE@16..17 "|"
20 WHITESPACE@[17; 18) " " 20 WHITESPACE@17..18 " "
21 TUPLE_EXPR@[18; 20) 21 TUPLE_EXPR@18..20
22 L_PAREN@[18; 19) "(" 22 L_PAREN@18..19 "("
23 R_PAREN@[19; 20) ")" 23 R_PAREN@19..20 ")"
24 SEMICOLON@[20; 21) ";" 24 SEMICOLON@20..21 ";"
25 WHITESPACE@[21; 26) "\n " 25 WHITESPACE@21..26 "\n "
26 EXPR_STMT@[26; 43) 26 EXPR_STMT@26..43
27 LAMBDA_EXPR@[26; 42) 27 LAMBDA_EXPR@26..42
28 PARAM_LIST@[26; 28) 28 PARAM_LIST@26..28
29 PIPE@[26; 27) "|" 29 PIPE@26..27 "|"
30 PIPE@[27; 28) "|" 30 PIPE@27..28 "|"
31 WHITESPACE@[28; 29) " " 31 WHITESPACE@28..29 " "
32 RET_TYPE@[29; 35) 32 RET_TYPE@29..35
33 THIN_ARROW@[29; 31) "->" 33 THIN_ARROW@29..31 "->"
34 WHITESPACE@[31; 32) " " 34 WHITESPACE@31..32 " "
35 PATH_TYPE@[32; 35) 35 PATH_TYPE@32..35
36 PATH@[32; 35) 36 PATH@32..35
37 PATH_SEGMENT@[32; 35) 37 PATH_SEGMENT@32..35
38 NAME_REF@[32; 35) 38 NAME_REF@32..35
39 IDENT@[32; 35) "i32" 39 IDENT@32..35 "i32"
40 WHITESPACE@[35; 36) " " 40 WHITESPACE@35..36 " "
41 BLOCK_EXPR@[36; 42) 41 BLOCK_EXPR@36..42
42 BLOCK@[36; 42) 42 BLOCK@36..42
43 L_CURLY@[36; 37) "{" 43 L_CURLY@36..37 "{"
44 WHITESPACE@[37; 38) " " 44 WHITESPACE@37..38 " "
45 LITERAL@[38; 40) 45 LITERAL@38..40
46 INT_NUMBER@[38; 40) "92" 46 INT_NUMBER@38..40 "92"
47 WHITESPACE@[40; 41) " " 47 WHITESPACE@40..41 " "
48 R_CURLY@[41; 42) "}" 48 R_CURLY@41..42 "}"
49 SEMICOLON@[42; 43) ";" 49 SEMICOLON@42..43 ";"
50 WHITESPACE@[43; 48) "\n " 50 WHITESPACE@43..48 "\n "
51 EXPR_STMT@[48; 54) 51 EXPR_STMT@48..54
52 LAMBDA_EXPR@[48; 53) 52 LAMBDA_EXPR@48..53
53 PARAM_LIST@[48; 51) 53 PARAM_LIST@48..51
54 PIPE@[48; 49) "|" 54 PIPE@48..49 "|"
55 PARAM@[49; 50) 55 PARAM@49..50
56 BIND_PAT@[49; 50) 56 BIND_PAT@49..50
57 NAME@[49; 50) 57 NAME@49..50
58 IDENT@[49; 50) "x" 58 IDENT@49..50 "x"
59 PIPE@[50; 51) "|" 59 PIPE@50..51 "|"
60 WHITESPACE@[51; 52) " " 60 WHITESPACE@51..52 " "
61 PATH_EXPR@[52; 53) 61 PATH_EXPR@52..53
62 PATH@[52; 53) 62 PATH@52..53
63 PATH_SEGMENT@[52; 53) 63 PATH_SEGMENT@52..53
64 NAME_REF@[52; 53) 64 NAME_REF@52..53
65 IDENT@[52; 53) "x" 65 IDENT@52..53 "x"
66 SEMICOLON@[53; 54) ";" 66 SEMICOLON@53..54 ";"
67 WHITESPACE@[54; 59) "\n " 67 WHITESPACE@54..59 "\n "
68 EXPR_STMT@[59; 76) 68 EXPR_STMT@59..76
69 LAMBDA_EXPR@[59; 75) 69 LAMBDA_EXPR@59..75
70 MOVE_KW@[59; 63) "move" 70 MOVE_KW@59..63 "move"
71 WHITESPACE@[63; 64) " " 71 WHITESPACE@63..64 " "
72 PARAM_LIST@[64; 73) 72 PARAM_LIST@64..73
73 PIPE@[64; 65) "|" 73 PIPE@64..65 "|"
74 PARAM@[65; 71) 74 PARAM@65..71
75 BIND_PAT@[65; 66) 75 BIND_PAT@65..66
76 NAME@[65; 66) 76 NAME@65..66
77 IDENT@[65; 66) "x" 77 IDENT@65..66 "x"
78 COLON@[66; 67) ":" 78 COLON@66..67 ":"
79 WHITESPACE@[67; 68) " " 79 WHITESPACE@67..68 " "
80 PATH_TYPE@[68; 71) 80 PATH_TYPE@68..71
81 PATH@[68; 71) 81 PATH@68..71
82 PATH_SEGMENT@[68; 71) 82 PATH_SEGMENT@68..71
83 NAME_REF@[68; 71) 83 NAME_REF@68..71
84 IDENT@[68; 71) "i32" 84 IDENT@68..71 "i32"
85 COMMA@[71; 72) "," 85 COMMA@71..72 ","
86 PIPE@[72; 73) "|" 86 PIPE@72..73 "|"
87 WHITESPACE@[73; 74) " " 87 WHITESPACE@73..74 " "
88 PATH_EXPR@[74; 75) 88 PATH_EXPR@74..75
89 PATH@[74; 75) 89 PATH@74..75
90 PATH_SEGMENT@[74; 75) 90 PATH_SEGMENT@74..75
91 NAME_REF@[74; 75) 91 NAME_REF@74..75
92 IDENT@[74; 75) "x" 92 IDENT@74..75 "x"
93 SEMICOLON@[75; 76) ";" 93 SEMICOLON@75..76 ";"
94 WHITESPACE@[76; 81) "\n " 94 WHITESPACE@76..81 "\n "
95 EXPR_STMT@[81; 93) 95 EXPR_STMT@81..93
96 LAMBDA_EXPR@[81; 92) 96 LAMBDA_EXPR@81..92
97 ASYNC_KW@[81; 86) "async" 97 ASYNC_KW@81..86 "async"
98 WHITESPACE@[86; 87) " " 98 WHITESPACE@86..87 " "
99 PARAM_LIST@[87; 89) 99 PARAM_LIST@87..89
100 PIPE@[87; 88) "|" 100 PIPE@87..88 "|"
101 PIPE@[88; 89) "|" 101 PIPE@88..89 "|"
102 WHITESPACE@[89; 90) " " 102 WHITESPACE@89..90 " "
103 BLOCK_EXPR@[90; 92) 103 BLOCK_EXPR@90..92
104 BLOCK@[90; 92) 104 BLOCK@90..92
105 L_CURLY@[90; 91) "{" 105 L_CURLY@90..91 "{"
106 R_CURLY@[91; 92) "}" 106 R_CURLY@91..92 "}"
107 SEMICOLON@[92; 93) ";" 107 SEMICOLON@92..93 ";"
108 WHITESPACE@[93; 98) "\n " 108 WHITESPACE@93..98 "\n "
109 EXPR_STMT@[98; 109) 109 EXPR_STMT@98..109
110 LAMBDA_EXPR@[98; 108) 110 LAMBDA_EXPR@98..108
111 MOVE_KW@[98; 102) "move" 111 MOVE_KW@98..102 "move"
112 WHITESPACE@[102; 103) " " 112 WHITESPACE@102..103 " "
113 PARAM_LIST@[103; 105) 113 PARAM_LIST@103..105
114 PIPE@[103; 104) "|" 114 PIPE@103..104 "|"
115 PIPE@[104; 105) "|" 115 PIPE@104..105 "|"
116 WHITESPACE@[105; 106) " " 116 WHITESPACE@105..106 " "
117 BLOCK_EXPR@[106; 108) 117 BLOCK_EXPR@106..108
118 BLOCK@[106; 108) 118 BLOCK@106..108
119 L_CURLY@[106; 107) "{" 119 L_CURLY@106..107 "{"
120 R_CURLY@[107; 108) "}" 120 R_CURLY@107..108 "}"
121 SEMICOLON@[108; 109) ";" 121 SEMICOLON@108..109 ";"
122 WHITESPACE@[109; 114) "\n " 122 WHITESPACE@109..114 "\n "
123 EXPR_STMT@[114; 131) 123 EXPR_STMT@114..131
124 LAMBDA_EXPR@[114; 130) 124 LAMBDA_EXPR@114..130
125 ASYNC_KW@[114; 119) "async" 125 ASYNC_KW@114..119 "async"
126 WHITESPACE@[119; 120) " " 126 WHITESPACE@119..120 " "
127 MOVE_KW@[120; 124) "move" 127 MOVE_KW@120..124 "move"
128 WHITESPACE@[124; 125) " " 128 WHITESPACE@124..125 " "
129 PARAM_LIST@[125; 127) 129 PARAM_LIST@125..127
130 PIPE@[125; 126) "|" 130 PIPE@125..126 "|"
131 PIPE@[126; 127) "|" 131 PIPE@126..127 "|"
132 WHITESPACE@[127; 128) " " 132 WHITESPACE@127..128 " "
133 BLOCK_EXPR@[128; 130) 133 BLOCK_EXPR@128..130
134 BLOCK@[128; 130) 134 BLOCK@128..130
135 L_CURLY@[128; 129) "{" 135 L_CURLY@128..129 "{"
136 R_CURLY@[129; 130) "}" 136 R_CURLY@129..130 "}"
137 SEMICOLON@[130; 131) ";" 137 SEMICOLON@130..131 ";"
138 WHITESPACE@[131; 132) "\n" 138 WHITESPACE@131..132 "\n"
139 R_CURLY@[132; 133) "}" 139 R_CURLY@132..133 "}"
140 WHITESPACE@[133; 134) "\n" 140 WHITESPACE@133..134 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rast
index cc813038c..5392b1a74 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rast
@@ -1,63 +1,63 @@
1SOURCE_FILE@[0; 49) 1SOURCE_FILE@0..49
2 FN_DEF@[0; 48) 2 FN_DEF@0..48
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 48) 11 BLOCK_EXPR@9..48
12 BLOCK@[9; 48) 12 BLOCK@9..48
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 23) 15 EXPR_STMT@15..23
16 METHOD_CALL_EXPR@[15; 22) 16 METHOD_CALL_EXPR@15..22
17 PATH_EXPR@[15; 16) 17 PATH_EXPR@15..16
18 PATH@[15; 16) 18 PATH@15..16
19 PATH_SEGMENT@[15; 16) 19 PATH_SEGMENT@15..16
20 NAME_REF@[15; 16) 20 NAME_REF@15..16
21 IDENT@[15; 16) "x" 21 IDENT@15..16 "x"
22 DOT@[16; 17) "." 22 DOT@16..17 "."
23 NAME_REF@[17; 20) 23 NAME_REF@17..20
24 IDENT@[17; 20) "foo" 24 IDENT@17..20 "foo"
25 ARG_LIST@[20; 22) 25 ARG_LIST@20..22
26 L_PAREN@[20; 21) "(" 26 L_PAREN@20..21 "("
27 R_PAREN@[21; 22) ")" 27 R_PAREN@21..22 ")"
28 SEMICOLON@[22; 23) ";" 28 SEMICOLON@22..23 ";"
29 WHITESPACE@[23; 28) "\n " 29 WHITESPACE@23..28 "\n "
30 EXPR_STMT@[28; 46) 30 EXPR_STMT@28..46
31 METHOD_CALL_EXPR@[28; 45) 31 METHOD_CALL_EXPR@28..45
32 PATH_EXPR@[28; 29) 32 PATH_EXPR@28..29
33 PATH@[28; 29) 33 PATH@28..29
34 PATH_SEGMENT@[28; 29) 34 PATH_SEGMENT@28..29
35 NAME_REF@[28; 29) 35 NAME_REF@28..29
36 IDENT@[28; 29) "y" 36 IDENT@28..29 "y"
37 DOT@[29; 30) "." 37 DOT@29..30 "."
38 NAME_REF@[30; 33) 38 NAME_REF@30..33
39 IDENT@[30; 33) "bar" 39 IDENT@30..33 "bar"
40 TYPE_ARG_LIST@[33; 38) 40 TYPE_ARG_LIST@33..38
41 COLON2@[33; 35) "::" 41 COLON2@33..35 "::"
42 L_ANGLE@[35; 36) "<" 42 L_ANGLE@35..36 "<"
43 TYPE_ARG@[36; 37) 43 TYPE_ARG@36..37
44 PATH_TYPE@[36; 37) 44 PATH_TYPE@36..37
45 PATH@[36; 37) 45 PATH@36..37
46 PATH_SEGMENT@[36; 37) 46 PATH_SEGMENT@36..37
47 NAME_REF@[36; 37) 47 NAME_REF@36..37
48 IDENT@[36; 37) "T" 48 IDENT@36..37 "T"
49 R_ANGLE@[37; 38) ">" 49 R_ANGLE@37..38 ">"
50 ARG_LIST@[38; 45) 50 ARG_LIST@38..45
51 L_PAREN@[38; 39) "(" 51 L_PAREN@38..39 "("
52 LITERAL@[39; 40) 52 LITERAL@39..40
53 INT_NUMBER@[39; 40) "1" 53 INT_NUMBER@39..40 "1"
54 COMMA@[40; 41) "," 54 COMMA@40..41 ","
55 WHITESPACE@[41; 42) " " 55 WHITESPACE@41..42 " "
56 LITERAL@[42; 43) 56 LITERAL@42..43
57 INT_NUMBER@[42; 43) "2" 57 INT_NUMBER@42..43 "2"
58 COMMA@[43; 44) "," 58 COMMA@43..44 ","
59 R_PAREN@[44; 45) ")" 59 R_PAREN@44..45 ")"
60 SEMICOLON@[45; 46) ";" 60 SEMICOLON@45..46 ";"
61 WHITESPACE@[46; 47) "\n" 61 WHITESPACE@46..47 "\n"
62 R_CURLY@[47; 48) "}" 62 R_CURLY@47..48 "}"
63 WHITESPACE@[48; 49) "\n" 63 WHITESPACE@48..49 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rast
index 27c3f398e..54f18adac 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rast
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 FN_DEF@[0; 39) 2 FN_DEF@0..39
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 39) 11 BLOCK_EXPR@9..39
12 BLOCK@[9; 39) 12 BLOCK@9..39
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 18) 15 EXPR_STMT@15..18
16 TUPLE_EXPR@[15; 17) 16 TUPLE_EXPR@15..17
17 L_PAREN@[15; 16) "(" 17 L_PAREN@15..16 "("
18 R_PAREN@[16; 17) ")" 18 R_PAREN@16..17 ")"
19 SEMICOLON@[17; 18) ";" 19 SEMICOLON@17..18 ";"
20 WHITESPACE@[18; 23) "\n " 20 WHITESPACE@18..23 "\n "
21 EXPR_STMT@[23; 27) 21 EXPR_STMT@23..27
22 PAREN_EXPR@[23; 26) 22 PAREN_EXPR@23..26
23 L_PAREN@[23; 24) "(" 23 L_PAREN@23..24 "("
24 LITERAL@[24; 25) 24 LITERAL@24..25
25 INT_NUMBER@[24; 25) "1" 25 INT_NUMBER@24..25 "1"
26 R_PAREN@[25; 26) ")" 26 R_PAREN@25..26 ")"
27 SEMICOLON@[26; 27) ";" 27 SEMICOLON@26..27 ";"
28 WHITESPACE@[27; 32) "\n " 28 WHITESPACE@27..32 "\n "
29 EXPR_STMT@[32; 37) 29 EXPR_STMT@32..37
30 TUPLE_EXPR@[32; 36) 30 TUPLE_EXPR@32..36
31 L_PAREN@[32; 33) "(" 31 L_PAREN@32..33 "("
32 LITERAL@[33; 34) 32 LITERAL@33..34
33 INT_NUMBER@[33; 34) "1" 33 INT_NUMBER@33..34 "1"
34 COMMA@[34; 35) "," 34 COMMA@34..35 ","
35 R_PAREN@[35; 36) ")" 35 R_PAREN@35..36 ")"
36 SEMICOLON@[36; 37) ";" 36 SEMICOLON@36..37 ";"
37 WHITESPACE@[37; 38) "\n" 37 WHITESPACE@37..38 "\n"
38 R_CURLY@[38; 39) "}" 38 R_CURLY@38..39 "}"
39 WHITESPACE@[39; 40) "\n" 39 WHITESPACE@39..40 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0109_label.rast b/crates/ra_syntax/test_data/parser/inline/ok/0109_label.rast
index 3376a90cb..6c9e45684 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0109_label.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0109_label.rast
@@ -1,68 +1,68 @@
1SOURCE_FILE@[0; 74) 1SOURCE_FILE@0..74
2 FN_DEF@[0; 73) 2 FN_DEF@0..73
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 73) 11 BLOCK_EXPR@9..73
12 BLOCK@[9; 73) 12 BLOCK@9..73
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 26) 15 EXPR_STMT@15..26
16 LOOP_EXPR@[15; 26) 16 LOOP_EXPR@15..26
17 LABEL@[15; 18) 17 LABEL@15..18
18 LIFETIME@[15; 17) "\'a" 18 LIFETIME@15..17 "\'a"
19 COLON@[17; 18) ":" 19 COLON@17..18 ":"
20 WHITESPACE@[18; 19) " " 20 WHITESPACE@18..19 " "
21 LOOP_KW@[19; 23) "loop" 21 LOOP_KW@19..23 "loop"
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 BLOCK_EXPR@[24; 26) 23 BLOCK_EXPR@24..26
24 BLOCK@[24; 26) 24 BLOCK@24..26
25 L_CURLY@[24; 25) "{" 25 L_CURLY@24..25 "{"
26 R_CURLY@[25; 26) "}" 26 R_CURLY@25..26 "}"
27 WHITESPACE@[26; 31) "\n " 27 WHITESPACE@26..31 "\n "
28 EXPR_STMT@[31; 48) 28 EXPR_STMT@31..48
29 WHILE_EXPR@[31; 48) 29 WHILE_EXPR@31..48
30 LABEL@[31; 34) 30 LABEL@31..34
31 LIFETIME@[31; 33) "\'b" 31 LIFETIME@31..33 "\'b"
32 COLON@[33; 34) ":" 32 COLON@33..34 ":"
33 WHITESPACE@[34; 35) " " 33 WHITESPACE@34..35 " "
34 WHILE_KW@[35; 40) "while" 34 WHILE_KW@35..40 "while"
35 WHITESPACE@[40; 41) " " 35 WHITESPACE@40..41 " "
36 CONDITION@[41; 45) 36 CONDITION@41..45
37 LITERAL@[41; 45) 37 LITERAL@41..45
38 TRUE_KW@[41; 45) "true" 38 TRUE_KW@41..45 "true"
39 WHITESPACE@[45; 46) " " 39 WHITESPACE@45..46 " "
40 BLOCK_EXPR@[46; 48) 40 BLOCK_EXPR@46..48
41 BLOCK@[46; 48) 41 BLOCK@46..48
42 L_CURLY@[46; 47) "{" 42 L_CURLY@46..47 "{"
43 R_CURLY@[47; 48) "}" 43 R_CURLY@47..48 "}"
44 WHITESPACE@[48; 53) "\n " 44 WHITESPACE@48..53 "\n "
45 FOR_EXPR@[53; 71) 45 FOR_EXPR@53..71
46 LABEL@[53; 56) 46 LABEL@53..56
47 LIFETIME@[53; 55) "\'c" 47 LIFETIME@53..55 "\'c"
48 COLON@[55; 56) ":" 48 COLON@55..56 ":"
49 WHITESPACE@[56; 57) " " 49 WHITESPACE@56..57 " "
50 FOR_KW@[57; 60) "for" 50 FOR_KW@57..60 "for"
51 WHITESPACE@[60; 61) " " 51 WHITESPACE@60..61 " "
52 BIND_PAT@[61; 62) 52 BIND_PAT@61..62
53 NAME@[61; 62) 53 NAME@61..62
54 IDENT@[61; 62) "x" 54 IDENT@61..62 "x"
55 WHITESPACE@[62; 63) " " 55 WHITESPACE@62..63 " "
56 IN_KW@[63; 65) "in" 56 IN_KW@63..65 "in"
57 WHITESPACE@[65; 66) " " 57 WHITESPACE@65..66 " "
58 TUPLE_EXPR@[66; 68) 58 TUPLE_EXPR@66..68
59 L_PAREN@[66; 67) "(" 59 L_PAREN@66..67 "("
60 R_PAREN@[67; 68) ")" 60 R_PAREN@67..68 ")"
61 WHITESPACE@[68; 69) " " 61 WHITESPACE@68..69 " "
62 BLOCK_EXPR@[69; 71) 62 BLOCK_EXPR@69..71
63 BLOCK@[69; 71) 63 BLOCK@69..71
64 L_CURLY@[69; 70) "{" 64 L_CURLY@69..70 "{"
65 R_CURLY@[70; 71) "}" 65 R_CURLY@70..71 "}"
66 WHITESPACE@[71; 72) "\n" 66 WHITESPACE@71..72 "\n"
67 R_CURLY@[72; 73) "}" 67 R_CURLY@72..73 "}"
68 WHITESPACE@[73; 74) "\n" 68 WHITESPACE@73..74 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rast b/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rast
index d4f5737d5..015a7a7d2 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rast
@@ -1,38 +1,38 @@
1SOURCE_FILE@[0; 154) 1SOURCE_FILE@0..154
2 USE_ITEM@[0; 17) 2 USE_ITEM@0..17
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 16) 5 USE_TREE@4..16
6 PATH@[4; 16) 6 PATH@4..16
7 PATH_SEGMENT@[4; 16) 7 PATH_SEGMENT@4..16
8 COLON2@[4; 6) "::" 8 COLON2@4..6 "::"
9 NAME_REF@[6; 16) 9 NAME_REF@6..16
10 IDENT@[6; 16) "crate_name" 10 IDENT@6..16 "crate_name"
11 SEMICOLON@[16; 17) ";" 11 SEMICOLON@16..17 ";"
12 WHITESPACE@[17; 18) " " 12 WHITESPACE@17..18 " "
13 COMMENT@[18; 45) "// Rust 2018 - All fl ..." 13 COMMENT@18..45 "// Rust 2018 - All fl ..."
14 WHITESPACE@[45; 46) "\n" 14 WHITESPACE@45..46 "\n"
15 USE_ITEM@[46; 61) 15 USE_ITEM@46..61
16 USE_KW@[46; 49) "use" 16 USE_KW@46..49 "use"
17 WHITESPACE@[49; 50) " " 17 WHITESPACE@49..50 " "
18 USE_TREE@[50; 60) 18 USE_TREE@50..60
19 PATH@[50; 60) 19 PATH@50..60
20 PATH_SEGMENT@[50; 60) 20 PATH_SEGMENT@50..60
21 NAME_REF@[50; 60) 21 NAME_REF@50..60
22 IDENT@[50; 60) "crate_name" 22 IDENT@50..60 "crate_name"
23 SEMICOLON@[60; 61) ";" 23 SEMICOLON@60..61 ";"
24 WHITESPACE@[61; 62) " " 24 WHITESPACE@61..62 " "
25 COMMENT@[62; 91) "// Rust 2018 - Anchor ..." 25 COMMENT@62..91 "// Rust 2018 - Anchor ..."
26 WHITESPACE@[91; 92) "\n" 26 WHITESPACE@91..92 "\n"
27 USE_ITEM@[92; 124) 27 USE_ITEM@92..124
28 USE_KW@[92; 95) "use" 28 USE_KW@92..95 "use"
29 WHITESPACE@[95; 96) " " 29 WHITESPACE@95..96 " "
30 USE_TREE@[96; 123) 30 USE_TREE@96..123
31 PATH@[96; 123) 31 PATH@96..123
32 PATH_SEGMENT@[96; 123) 32 PATH_SEGMENT@96..123
33 NAME_REF@[96; 123) 33 NAME_REF@96..123
34 IDENT@[96; 123) "item_in_scope_or_crat ..." 34 IDENT@96..123 "item_in_scope_or_crat ..."
35 SEMICOLON@[123; 124) ";" 35 SEMICOLON@123..124 ";"
36 WHITESPACE@[124; 125) " " 36 WHITESPACE@124..125 " "
37 COMMENT@[125; 153) "// Rust 2018 - Unifor ..." 37 COMMENT@125..153 "// Rust 2018 - Unifor ..."
38 WHITESPACE@[153; 154) "\n" 38 WHITESPACE@153..154 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rast
index 88e72d057..a1c5475e7 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rast
@@ -1,90 +1,90 @@
1SOURCE_FILE@[0; 94) 1SOURCE_FILE@0..94
2 FN_DEF@[0; 93) 2 FN_DEF@0..93
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 93) 11 BLOCK_EXPR@10..93
12 BLOCK@[10; 93) 12 BLOCK@10..93
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 36) 15 LET_STMT@16..36
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 TUPLE_PAT@[20; 30) 18 TUPLE_PAT@20..30
19 L_PAREN@[20; 21) "(" 19 L_PAREN@20..21 "("
20 BIND_PAT@[21; 22) 20 BIND_PAT@21..22
21 NAME@[21; 22) 21 NAME@21..22
22 IDENT@[21; 22) "a" 22 IDENT@21..22 "a"
23 COMMA@[22; 23) "," 23 COMMA@22..23 ","
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 BIND_PAT@[24; 25) 25 BIND_PAT@24..25
26 NAME@[24; 25) 26 NAME@24..25
27 IDENT@[24; 25) "b" 27 IDENT@24..25 "b"
28 COMMA@[25; 26) "," 28 COMMA@25..26 ","
29 WHITESPACE@[26; 27) " " 29 WHITESPACE@26..27 " "
30 DOT_DOT_PAT@[27; 29) 30 DOT_DOT_PAT@27..29
31 DOT2@[27; 29) ".." 31 DOT2@27..29 ".."
32 R_PAREN@[29; 30) ")" 32 R_PAREN@29..30 ")"
33 WHITESPACE@[30; 31) " " 33 WHITESPACE@30..31 " "
34 EQ@[31; 32) "=" 34 EQ@31..32 "="
35 WHITESPACE@[32; 33) " " 35 WHITESPACE@32..33 " "
36 TUPLE_EXPR@[33; 35) 36 TUPLE_EXPR@33..35
37 L_PAREN@[33; 34) "(" 37 L_PAREN@33..34 "("
38 R_PAREN@[34; 35) ")" 38 R_PAREN@34..35 ")"
39 SEMICOLON@[35; 36) ";" 39 SEMICOLON@35..36 ";"
40 WHITESPACE@[36; 41) "\n " 40 WHITESPACE@36..41 "\n "
41 LET_STMT@[41; 55) 41 LET_STMT@41..55
42 LET_KW@[41; 44) "let" 42 LET_KW@41..44 "let"
43 WHITESPACE@[44; 45) " " 43 WHITESPACE@44..45 " "
44 TUPLE_PAT@[45; 49) 44 TUPLE_PAT@45..49
45 L_PAREN@[45; 46) "(" 45 L_PAREN@45..46 "("
46 BIND_PAT@[46; 47) 46 BIND_PAT@46..47
47 NAME@[46; 47) 47 NAME@46..47
48 IDENT@[46; 47) "a" 48 IDENT@46..47 "a"
49 COMMA@[47; 48) "," 49 COMMA@47..48 ","
50 R_PAREN@[48; 49) ")" 50 R_PAREN@48..49 ")"
51 WHITESPACE@[49; 50) " " 51 WHITESPACE@49..50 " "
52 EQ@[50; 51) "=" 52 EQ@50..51 "="
53 WHITESPACE@[51; 52) " " 53 WHITESPACE@51..52 " "
54 TUPLE_EXPR@[52; 54) 54 TUPLE_EXPR@52..54
55 L_PAREN@[52; 53) "(" 55 L_PAREN@52..53 "("
56 R_PAREN@[53; 54) ")" 56 R_PAREN@53..54 ")"
57 SEMICOLON@[54; 55) ";" 57 SEMICOLON@54..55 ";"
58 WHITESPACE@[55; 60) "\n " 58 WHITESPACE@55..60 "\n "
59 LET_STMT@[60; 74) 59 LET_STMT@60..74
60 LET_KW@[60; 63) "let" 60 LET_KW@60..63 "let"
61 WHITESPACE@[63; 64) " " 61 WHITESPACE@63..64 " "
62 TUPLE_PAT@[64; 68) 62 TUPLE_PAT@64..68
63 L_PAREN@[64; 65) "(" 63 L_PAREN@64..65 "("
64 DOT_DOT_PAT@[65; 67) 64 DOT_DOT_PAT@65..67
65 DOT2@[65; 67) ".." 65 DOT2@65..67 ".."
66 R_PAREN@[67; 68) ")" 66 R_PAREN@67..68 ")"
67 WHITESPACE@[68; 69) " " 67 WHITESPACE@68..69 " "
68 EQ@[69; 70) "=" 68 EQ@69..70 "="
69 WHITESPACE@[70; 71) " " 69 WHITESPACE@70..71 " "
70 TUPLE_EXPR@[71; 73) 70 TUPLE_EXPR@71..73
71 L_PAREN@[71; 72) "(" 71 L_PAREN@71..72 "("
72 R_PAREN@[72; 73) ")" 72 R_PAREN@72..73 ")"
73 SEMICOLON@[73; 74) ";" 73 SEMICOLON@73..74 ";"
74 WHITESPACE@[74; 79) "\n " 74 WHITESPACE@74..79 "\n "
75 LET_STMT@[79; 91) 75 LET_STMT@79..91
76 LET_KW@[79; 82) "let" 76 LET_KW@79..82 "let"
77 WHITESPACE@[82; 83) " " 77 WHITESPACE@82..83 " "
78 TUPLE_PAT@[83; 85) 78 TUPLE_PAT@83..85
79 L_PAREN@[83; 84) "(" 79 L_PAREN@83..84 "("
80 R_PAREN@[84; 85) ")" 80 R_PAREN@84..85 ")"
81 WHITESPACE@[85; 86) " " 81 WHITESPACE@85..86 " "
82 EQ@[86; 87) "=" 82 EQ@86..87 "="
83 WHITESPACE@[87; 88) " " 83 WHITESPACE@87..88 " "
84 TUPLE_EXPR@[88; 90) 84 TUPLE_EXPR@88..90
85 L_PAREN@[88; 89) "(" 85 L_PAREN@88..89 "("
86 R_PAREN@[89; 90) ")" 86 R_PAREN@89..90 ")"
87 SEMICOLON@[90; 91) ";" 87 SEMICOLON@90..91 ";"
88 WHITESPACE@[91; 92) "\n" 88 WHITESPACE@91..92 "\n"
89 R_CURLY@[92; 93) "}" 89 R_CURLY@92..93 "}"
90 WHITESPACE@[93; 94) "\n" 90 WHITESPACE@93..94 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rast
index 5e8f625dc..42a770a83 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rast
@@ -1,128 +1,128 @@
1SOURCE_FILE@[0; 146) 1SOURCE_FILE@0..146
2 FN_DEF@[0; 145) 2 FN_DEF@0..145
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 145) 11 BLOCK_EXPR@10..145
12 BLOCK@[10; 145) 12 BLOCK@10..145
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 27) 15 LET_STMT@16..27
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 BIND_PAT@[20; 21) 18 BIND_PAT@20..21
19 NAME@[20; 21) 19 NAME@20..21
20 IDENT@[20; 21) "a" 20 IDENT@20..21 "a"
21 WHITESPACE@[21; 22) " " 21 WHITESPACE@21..22 " "
22 EQ@[22; 23) "=" 22 EQ@22..23 "="
23 WHITESPACE@[23; 24) " " 23 WHITESPACE@23..24 " "
24 TUPLE_EXPR@[24; 26) 24 TUPLE_EXPR@24..26
25 L_PAREN@[24; 25) "(" 25 L_PAREN@24..25 "("
26 R_PAREN@[25; 26) ")" 26 R_PAREN@25..26 ")"
27 SEMICOLON@[26; 27) ";" 27 SEMICOLON@26..27 ";"
28 WHITESPACE@[27; 32) "\n " 28 WHITESPACE@27..32 "\n "
29 LET_STMT@[32; 47) 29 LET_STMT@32..47
30 LET_KW@[32; 35) "let" 30 LET_KW@32..35 "let"
31 WHITESPACE@[35; 36) " " 31 WHITESPACE@35..36 " "
32 BIND_PAT@[36; 41) 32 BIND_PAT@36..41
33 MUT_KW@[36; 39) "mut" 33 MUT_KW@36..39 "mut"
34 WHITESPACE@[39; 40) " " 34 WHITESPACE@39..40 " "
35 NAME@[40; 41) 35 NAME@40..41
36 IDENT@[40; 41) "b" 36 IDENT@40..41 "b"
37 WHITESPACE@[41; 42) " " 37 WHITESPACE@41..42 " "
38 EQ@[42; 43) "=" 38 EQ@42..43 "="
39 WHITESPACE@[43; 44) " " 39 WHITESPACE@43..44 " "
40 TUPLE_EXPR@[44; 46) 40 TUPLE_EXPR@44..46
41 L_PAREN@[44; 45) "(" 41 L_PAREN@44..45 "("
42 R_PAREN@[45; 46) ")" 42 R_PAREN@45..46 ")"
43 SEMICOLON@[46; 47) ";" 43 SEMICOLON@46..47 ";"
44 WHITESPACE@[47; 52) "\n " 44 WHITESPACE@47..52 "\n "
45 LET_STMT@[52; 67) 45 LET_STMT@52..67
46 LET_KW@[52; 55) "let" 46 LET_KW@52..55 "let"
47 WHITESPACE@[55; 56) " " 47 WHITESPACE@55..56 " "
48 BIND_PAT@[56; 61) 48 BIND_PAT@56..61
49 REF_KW@[56; 59) "ref" 49 REF_KW@56..59 "ref"
50 WHITESPACE@[59; 60) " " 50 WHITESPACE@59..60 " "
51 NAME@[60; 61) 51 NAME@60..61
52 IDENT@[60; 61) "c" 52 IDENT@60..61 "c"
53 WHITESPACE@[61; 62) " " 53 WHITESPACE@61..62 " "
54 EQ@[62; 63) "=" 54 EQ@62..63 "="
55 WHITESPACE@[63; 64) " " 55 WHITESPACE@63..64 " "
56 TUPLE_EXPR@[64; 66) 56 TUPLE_EXPR@64..66
57 L_PAREN@[64; 65) "(" 57 L_PAREN@64..65 "("
58 R_PAREN@[65; 66) ")" 58 R_PAREN@65..66 ")"
59 SEMICOLON@[66; 67) ";" 59 SEMICOLON@66..67 ";"
60 WHITESPACE@[67; 72) "\n " 60 WHITESPACE@67..72 "\n "
61 LET_STMT@[72; 91) 61 LET_STMT@72..91
62 LET_KW@[72; 75) "let" 62 LET_KW@72..75 "let"
63 WHITESPACE@[75; 76) " " 63 WHITESPACE@75..76 " "
64 BIND_PAT@[76; 85) 64 BIND_PAT@76..85
65 REF_KW@[76; 79) "ref" 65 REF_KW@76..79 "ref"
66 WHITESPACE@[79; 80) " " 66 WHITESPACE@79..80 " "
67 MUT_KW@[80; 83) "mut" 67 MUT_KW@80..83 "mut"
68 WHITESPACE@[83; 84) " " 68 WHITESPACE@83..84 " "
69 NAME@[84; 85) 69 NAME@84..85
70 IDENT@[84; 85) "d" 70 IDENT@84..85 "d"
71 WHITESPACE@[85; 86) " " 71 WHITESPACE@85..86 " "
72 EQ@[86; 87) "=" 72 EQ@86..87 "="
73 WHITESPACE@[87; 88) " " 73 WHITESPACE@87..88 " "
74 TUPLE_EXPR@[88; 90) 74 TUPLE_EXPR@88..90
75 L_PAREN@[88; 89) "(" 75 L_PAREN@88..89 "("
76 R_PAREN@[89; 90) ")" 76 R_PAREN@89..90 ")"
77 SEMICOLON@[90; 91) ";" 77 SEMICOLON@90..91 ";"
78 WHITESPACE@[91; 96) "\n " 78 WHITESPACE@91..96 "\n "
79 LET_STMT@[96; 111) 79 LET_STMT@96..111
80 LET_KW@[96; 99) "let" 80 LET_KW@96..99 "let"
81 WHITESPACE@[99; 100) " " 81 WHITESPACE@99..100 " "
82 BIND_PAT@[100; 105) 82 BIND_PAT@100..105
83 NAME@[100; 101) 83 NAME@100..101
84 IDENT@[100; 101) "e" 84 IDENT@100..101 "e"
85 WHITESPACE@[101; 102) " " 85 WHITESPACE@101..102 " "
86 AT@[102; 103) "@" 86 AT@102..103 "@"
87 WHITESPACE@[103; 104) " " 87 WHITESPACE@103..104 " "
88 PLACEHOLDER_PAT@[104; 105) 88 PLACEHOLDER_PAT@104..105
89 UNDERSCORE@[104; 105) "_" 89 UNDERSCORE@104..105 "_"
90 WHITESPACE@[105; 106) " " 90 WHITESPACE@105..106 " "
91 EQ@[106; 107) "=" 91 EQ@106..107 "="
92 WHITESPACE@[107; 108) " " 92 WHITESPACE@107..108 " "
93 TUPLE_EXPR@[108; 110) 93 TUPLE_EXPR@108..110
94 L_PAREN@[108; 109) "(" 94 L_PAREN@108..109 "("
95 R_PAREN@[109; 110) ")" 95 R_PAREN@109..110 ")"
96 SEMICOLON@[110; 111) ";" 96 SEMICOLON@110..111 ";"
97 WHITESPACE@[111; 116) "\n " 97 WHITESPACE@111..116 "\n "
98 LET_STMT@[116; 143) 98 LET_STMT@116..143
99 LET_KW@[116; 119) "let" 99 LET_KW@116..119 "let"
100 WHITESPACE@[119; 120) " " 100 WHITESPACE@119..120 " "
101 BIND_PAT@[120; 137) 101 BIND_PAT@120..137
102 REF_KW@[120; 123) "ref" 102 REF_KW@120..123 "ref"
103 WHITESPACE@[123; 124) " " 103 WHITESPACE@123..124 " "
104 MUT_KW@[124; 127) "mut" 104 MUT_KW@124..127 "mut"
105 WHITESPACE@[127; 128) " " 105 WHITESPACE@127..128 " "
106 NAME@[128; 129) 106 NAME@128..129
107 IDENT@[128; 129) "f" 107 IDENT@128..129 "f"
108 WHITESPACE@[129; 130) " " 108 WHITESPACE@129..130 " "
109 AT@[130; 131) "@" 109 AT@130..131 "@"
110 WHITESPACE@[131; 132) " " 110 WHITESPACE@131..132 " "
111 BIND_PAT@[132; 137) 111 BIND_PAT@132..137
112 NAME@[132; 133) 112 NAME@132..133
113 IDENT@[132; 133) "g" 113 IDENT@132..133 "g"
114 WHITESPACE@[133; 134) " " 114 WHITESPACE@133..134 " "
115 AT@[134; 135) "@" 115 AT@134..135 "@"
116 WHITESPACE@[135; 136) " " 116 WHITESPACE@135..136 " "
117 PLACEHOLDER_PAT@[136; 137) 117 PLACEHOLDER_PAT@136..137
118 UNDERSCORE@[136; 137) "_" 118 UNDERSCORE@136..137 "_"
119 WHITESPACE@[137; 138) " " 119 WHITESPACE@137..138 " "
120 EQ@[138; 139) "=" 120 EQ@138..139 "="
121 WHITESPACE@[139; 140) " " 121 WHITESPACE@139..140 " "
122 TUPLE_EXPR@[140; 142) 122 TUPLE_EXPR@140..142
123 L_PAREN@[140; 141) "(" 123 L_PAREN@140..141 "("
124 R_PAREN@[141; 142) ")" 124 R_PAREN@141..142 ")"
125 SEMICOLON@[142; 143) ";" 125 SEMICOLON@142..143 ";"
126 WHITESPACE@[143; 144) "\n" 126 WHITESPACE@143..144 "\n"
127 R_CURLY@[144; 145) "}" 127 R_CURLY@144..145 "}"
128 WHITESPACE@[145; 146) "\n" 128 WHITESPACE@145..146 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast
index f2f649410..5414c90b8 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast
@@ -1,57 +1,57 @@
1SOURCE_FILE@[0; 50) 1SOURCE_FILE@0..50
2 FN_DEF@[0; 49) 2 FN_DEF@0..49
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 BLOCK_EXPR@[8; 49) 10 BLOCK_EXPR@8..49
11 BLOCK@[8; 49) 11 BLOCK@8..49
12 L_CURLY@[8; 9) "{" 12 L_CURLY@8..9 "{"
13 WHITESPACE@[9; 14) "\n " 13 WHITESPACE@9..14 "\n "
14 SEMICOLON@[14; 15) ";" 14 SEMICOLON@14..15 ";"
15 SEMICOLON@[15; 16) ";" 15 SEMICOLON@15..16 ";"
16 SEMICOLON@[16; 17) ";" 16 SEMICOLON@16..17 ";"
17 EXPR_STMT@[17; 29) 17 EXPR_STMT@17..29
18 CALL_EXPR@[17; 28) 18 CALL_EXPR@17..28
19 PATH_EXPR@[17; 26) 19 PATH_EXPR@17..26
20 PATH@[17; 26) 20 PATH@17..26
21 PATH_SEGMENT@[17; 26) 21 PATH_SEGMENT@17..26
22 NAME_REF@[17; 26) 22 NAME_REF@17..26
23 IDENT@[17; 26) "some_expr" 23 IDENT@17..26 "some_expr"
24 ARG_LIST@[26; 28) 24 ARG_LIST@26..28
25 L_PAREN@[26; 27) "(" 25 L_PAREN@26..27 "("
26 R_PAREN@[27; 28) ")" 26 R_PAREN@27..28 ")"
27 SEMICOLON@[28; 29) ";" 27 SEMICOLON@28..29 ";"
28 SEMICOLON@[29; 30) ";" 28 SEMICOLON@29..30 ";"
29 SEMICOLON@[30; 31) ";" 29 SEMICOLON@30..31 ";"
30 SEMICOLON@[31; 32) ";" 30 SEMICOLON@31..32 ";"
31 EXPR_STMT@[32; 38) 31 EXPR_STMT@32..38
32 BLOCK_EXPR@[32; 37) 32 BLOCK_EXPR@32..37
33 BLOCK@[32; 37) 33 BLOCK@32..37
34 L_CURLY@[32; 33) "{" 34 L_CURLY@32..33 "{"
35 SEMICOLON@[33; 34) ";" 35 SEMICOLON@33..34 ";"
36 SEMICOLON@[34; 35) ";" 36 SEMICOLON@34..35 ";"
37 SEMICOLON@[35; 36) ";" 37 SEMICOLON@35..36 ";"
38 R_CURLY@[36; 37) "}" 38 R_CURLY@36..37 "}"
39 SEMICOLON@[37; 38) ";" 39 SEMICOLON@37..38 ";"
40 SEMICOLON@[38; 39) ";" 40 SEMICOLON@38..39 ";"
41 SEMICOLON@[39; 40) ";" 41 SEMICOLON@39..40 ";"
42 SEMICOLON@[40; 41) ";" 42 SEMICOLON@40..41 ";"
43 CALL_EXPR@[41; 47) 43 CALL_EXPR@41..47
44 PATH_EXPR@[41; 43) 44 PATH_EXPR@41..43
45 PATH@[41; 43) 45 PATH@41..43
46 PATH_SEGMENT@[41; 43) 46 PATH_SEGMENT@41..43
47 NAME_REF@[41; 43) 47 NAME_REF@41..43
48 IDENT@[41; 43) "Ok" 48 IDENT@41..43 "Ok"
49 ARG_LIST@[43; 47) 49 ARG_LIST@43..47
50 L_PAREN@[43; 44) "(" 50 L_PAREN@43..44 "("
51 TUPLE_EXPR@[44; 46) 51 TUPLE_EXPR@44..46
52 L_PAREN@[44; 45) "(" 52 L_PAREN@44..45 "("
53 R_PAREN@[45; 46) ")" 53 R_PAREN@45..46 ")"
54 R_PAREN@[46; 47) ")" 54 R_PAREN@46..47 ")"
55 WHITESPACE@[47; 48) "\n" 55 WHITESPACE@47..48 "\n"
56 R_CURLY@[48; 49) "}" 56 R_CURLY@48..49 "}"
57 WHITESPACE@[49; 50) "\n" 57 WHITESPACE@49..50 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast b/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast
index 457c82e74..01d717d6b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast
@@ -1,64 +1,64 @@
1SOURCE_FILE@[0; 53) 1SOURCE_FILE@0..53
2 STRUCT_DEF@[0; 33) 2 STRUCT_DEF@0..33
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 11) 5 NAME@7..11
6 IDENT@[7; 11) "Test" 6 IDENT@7..11 "Test"
7 TYPE_PARAM_LIST@[11; 14) 7 TYPE_PARAM_LIST@11..14
8 L_ANGLE@[11; 12) "<" 8 L_ANGLE@11..12 "<"
9 TYPE_PARAM@[12; 13) 9 TYPE_PARAM@12..13
10 NAME@[12; 13) 10 NAME@12..13
11 IDENT@[12; 13) "T" 11 IDENT@12..13 "T"
12 R_ANGLE@[13; 14) ">" 12 R_ANGLE@13..14 ">"
13 TUPLE_FIELD_DEF_LIST@[14; 17) 13 TUPLE_FIELD_DEF_LIST@14..17
14 L_PAREN@[14; 15) "(" 14 L_PAREN@14..15 "("
15 TUPLE_FIELD_DEF@[15; 16) 15 TUPLE_FIELD_DEF@15..16
16 PATH_TYPE@[15; 16) 16 PATH_TYPE@15..16
17 PATH@[15; 16) 17 PATH@15..16
18 PATH_SEGMENT@[15; 16) 18 PATH_SEGMENT@15..16
19 NAME_REF@[15; 16) 19 NAME_REF@15..16
20 IDENT@[15; 16) "T" 20 IDENT@15..16 "T"
21 R_PAREN@[16; 17) ")" 21 R_PAREN@16..17 ")"
22 WHITESPACE@[17; 18) " " 22 WHITESPACE@17..18 " "
23 WHERE_CLAUSE@[18; 32) 23 WHERE_CLAUSE@18..32
24 WHERE_KW@[18; 23) "where" 24 WHERE_KW@18..23 "where"
25 WHITESPACE@[23; 24) " " 25 WHITESPACE@23..24 " "
26 WHERE_PRED@[24; 32) 26 WHERE_PRED@24..32
27 PATH_TYPE@[24; 25) 27 PATH_TYPE@24..25
28 PATH@[24; 25) 28 PATH@24..25
29 PATH_SEGMENT@[24; 25) 29 PATH_SEGMENT@24..25
30 NAME_REF@[24; 25) 30 NAME_REF@24..25
31 IDENT@[24; 25) "T" 31 IDENT@24..25 "T"
32 COLON@[25; 26) ":" 32 COLON@25..26 ":"
33 WHITESPACE@[26; 27) " " 33 WHITESPACE@26..27 " "
34 TYPE_BOUND_LIST@[27; 32) 34 TYPE_BOUND_LIST@27..32
35 TYPE_BOUND@[27; 32) 35 TYPE_BOUND@27..32
36 PATH_TYPE@[27; 32) 36 PATH_TYPE@27..32
37 PATH@[27; 32) 37 PATH@27..32
38 PATH_SEGMENT@[27; 32) 38 PATH_SEGMENT@27..32
39 NAME_REF@[27; 32) 39 NAME_REF@27..32
40 IDENT@[27; 32) "Clone" 40 IDENT@27..32 "Clone"
41 SEMICOLON@[32; 33) ";" 41 SEMICOLON@32..33 ";"
42 WHITESPACE@[33; 34) "\n" 42 WHITESPACE@33..34 "\n"
43 STRUCT_DEF@[34; 52) 43 STRUCT_DEF@34..52
44 STRUCT_KW@[34; 40) "struct" 44 STRUCT_KW@34..40 "struct"
45 WHITESPACE@[40; 41) " " 45 WHITESPACE@40..41 " "
46 NAME@[41; 45) 46 NAME@41..45
47 IDENT@[41; 45) "Test" 47 IDENT@41..45 "Test"
48 TYPE_PARAM_LIST@[45; 48) 48 TYPE_PARAM_LIST@45..48
49 L_ANGLE@[45; 46) "<" 49 L_ANGLE@45..46 "<"
50 TYPE_PARAM@[46; 47) 50 TYPE_PARAM@46..47
51 NAME@[46; 47) 51 NAME@46..47
52 IDENT@[46; 47) "T" 52 IDENT@46..47 "T"
53 R_ANGLE@[47; 48) ">" 53 R_ANGLE@47..48 ">"
54 TUPLE_FIELD_DEF_LIST@[48; 51) 54 TUPLE_FIELD_DEF_LIST@48..51
55 L_PAREN@[48; 49) "(" 55 L_PAREN@48..49 "("
56 TUPLE_FIELD_DEF@[49; 50) 56 TUPLE_FIELD_DEF@49..50
57 PATH_TYPE@[49; 50) 57 PATH_TYPE@49..50
58 PATH@[49; 50) 58 PATH@49..50
59 PATH_SEGMENT@[49; 50) 59 PATH_SEGMENT@49..50
60 NAME_REF@[49; 50) 60 NAME_REF@49..50
61 IDENT@[49; 50) "T" 61 IDENT@49..50 "T"
62 R_PAREN@[50; 51) ")" 62 R_PAREN@50..51 ")"
63 SEMICOLON@[51; 52) ";" 63 SEMICOLON@51..52 ";"
64 WHITESPACE@[52; 53) "\n" 64 WHITESPACE@52..53 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast b/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast
index 0b1552a9d..3c0ef9005 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 60) 1SOURCE_FILE@0..60
2 STRUCT_DEF@[0; 59) 2 STRUCT_DEF@0..59
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 TUPLE_FIELD_DEF_LIST@[9; 58) 8 TUPLE_FIELD_DEF_LIST@9..58
9 L_PAREN@[9; 10) "(" 9 L_PAREN@9..10 "("
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 TUPLE_FIELD_DEF@[15; 55) 11 TUPLE_FIELD_DEF@15..55
12 ATTR@[15; 43) 12 ATTR@15..43
13 POUND@[15; 16) "#" 13 POUND@15..16 "#"
14 L_BRACK@[16; 17) "[" 14 L_BRACK@16..17 "["
15 PATH@[17; 22) 15 PATH@17..22
16 PATH_SEGMENT@[17; 22) 16 PATH_SEGMENT@17..22
17 NAME_REF@[17; 22) 17 NAME_REF@17..22
18 IDENT@[17; 22) "serde" 18 IDENT@17..22 "serde"
19 TOKEN_TREE@[22; 42) 19 TOKEN_TREE@22..42
20 L_PAREN@[22; 23) "(" 20 L_PAREN@22..23 "("
21 IDENT@[23; 27) "with" 21 IDENT@23..27 "with"
22 WHITESPACE@[27; 28) " " 22 WHITESPACE@27..28 " "
23 EQ@[28; 29) "=" 23 EQ@28..29 "="
24 WHITESPACE@[29; 30) " " 24 WHITESPACE@29..30 " "
25 STRING@[30; 41) "\"url_serde\"" 25 STRING@30..41 "\"url_serde\""
26 R_PAREN@[41; 42) ")" 26 R_PAREN@41..42 ")"
27 R_BRACK@[42; 43) "]" 27 R_BRACK@42..43 "]"
28 WHITESPACE@[43; 48) "\n " 28 WHITESPACE@43..48 "\n "
29 VISIBILITY@[48; 51) 29 VISIBILITY@48..51
30 PUB_KW@[48; 51) "pub" 30 PUB_KW@48..51 "pub"
31 WHITESPACE@[51; 52) " " 31 WHITESPACE@51..52 " "
32 PATH_TYPE@[52; 55) 32 PATH_TYPE@52..55
33 PATH@[52; 55) 33 PATH@52..55
34 PATH_SEGMENT@[52; 55) 34 PATH_SEGMENT@52..55
35 NAME_REF@[52; 55) 35 NAME_REF@52..55
36 IDENT@[52; 55) "Uri" 36 IDENT@52..55 "Uri"
37 COMMA@[55; 56) "," 37 COMMA@55..56 ","
38 WHITESPACE@[56; 57) "\n" 38 WHITESPACE@56..57 "\n"
39 R_PAREN@[57; 58) ")" 39 R_PAREN@57..58 ")"
40 SEMICOLON@[58; 59) ";" 40 SEMICOLON@58..59 ";"
41 WHITESPACE@[59; 60) "\n" 41 WHITESPACE@59..60 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rast
index 4f9e80e2e..ddfcf974e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 41) 1SOURCE_FILE@0..41
2 TYPE_ALIAS_DEF@[0; 16) 2 TYPE_ALIAS_DEF@0..16
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "A" 6 IDENT@5..6 "A"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 MACRO_CALL@[9; 15) 10 MACRO_CALL@9..15
11 PATH@[9; 12) 11 PATH@9..12
12 PATH_SEGMENT@[9; 12) 12 PATH_SEGMENT@9..12
13 NAME_REF@[9; 12) 13 NAME_REF@9..12
14 IDENT@[9; 12) "foo" 14 IDENT@9..12 "foo"
15 BANG@[12; 13) "!" 15 BANG@12..13 "!"
16 TOKEN_TREE@[13; 15) 16 TOKEN_TREE@13..15
17 L_PAREN@[13; 14) "(" 17 L_PAREN@13..14 "("
18 R_PAREN@[14; 15) ")" 18 R_PAREN@14..15 ")"
19 SEMICOLON@[15; 16) ";" 19 SEMICOLON@15..16 ";"
20 WHITESPACE@[16; 17) "\n" 20 WHITESPACE@16..17 "\n"
21 TYPE_ALIAS_DEF@[17; 40) 21 TYPE_ALIAS_DEF@17..40
22 TYPE_KW@[17; 21) "type" 22 TYPE_KW@17..21 "type"
23 WHITESPACE@[21; 22) " " 23 WHITESPACE@21..22 " "
24 NAME@[22; 23) 24 NAME@22..23
25 IDENT@[22; 23) "B" 25 IDENT@22..23 "B"
26 WHITESPACE@[23; 24) " " 26 WHITESPACE@23..24 " "
27 EQ@[24; 25) "=" 27 EQ@24..25 "="
28 WHITESPACE@[25; 26) " " 28 WHITESPACE@25..26 " "
29 MACRO_CALL@[26; 39) 29 MACRO_CALL@26..39
30 PATH@[26; 36) 30 PATH@26..36
31 PATH@[26; 31) 31 PATH@26..31
32 PATH_SEGMENT@[26; 31) 32 PATH_SEGMENT@26..31
33 CRATE_KW@[26; 31) "crate" 33 CRATE_KW@26..31 "crate"
34 COLON2@[31; 33) "::" 34 COLON2@31..33 "::"
35 PATH_SEGMENT@[33; 36) 35 PATH_SEGMENT@33..36
36 NAME_REF@[33; 36) 36 NAME_REF@33..36
37 IDENT@[33; 36) "foo" 37 IDENT@33..36 "foo"
38 BANG@[36; 37) "!" 38 BANG@36..37 "!"
39 TOKEN_TREE@[37; 39) 39 TOKEN_TREE@37..39
40 L_PAREN@[37; 38) "(" 40 L_PAREN@37..38 "("
41 R_PAREN@[38; 39) ")" 41 R_PAREN@38..39 ")"
42 SEMICOLON@[39; 40) ";" 42 SEMICOLON@39..40 ";"
43 WHITESPACE@[40; 41) "\n" 43 WHITESPACE@40..41 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast b/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast
index f9a4bc81b..a65a5c85f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 94) 1SOURCE_FILE@0..94
2 ENUM_DEF@[0; 8) 2 ENUM_DEF@0..8
3 ENUM_KW@[0; 4) "enum" 3 ENUM_KW@0..4 "enum"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "F" 6 IDENT@5..6 "F"
7 ENUM_VARIANT_LIST@[6; 8) 7 ENUM_VARIANT_LIST@6..8
8 L_CURLY@[6; 7) "{" 8 L_CURLY@6..7 "{"
9 R_CURLY@[7; 8) "}" 9 R_CURLY@7..8 "}"
10 WHITESPACE@[8; 9) "\n" 10 WHITESPACE@8..9 "\n"
11 IMPL_DEF@[9; 93) 11 IMPL_DEF@9..93
12 IMPL_KW@[9; 13) "impl" 12 IMPL_KW@9..13 "impl"
13 WHITESPACE@[13; 14) " " 13 WHITESPACE@13..14 " "
14 PATH_TYPE@[14; 15) 14 PATH_TYPE@14..15
15 PATH@[14; 15) 15 PATH@14..15
16 PATH_SEGMENT@[14; 15) 16 PATH_SEGMENT@14..15
17 NAME_REF@[14; 15) 17 NAME_REF@14..15
18 IDENT@[14; 15) "F" 18 IDENT@14..15 "F"
19 WHITESPACE@[15; 16) " " 19 WHITESPACE@15..16 " "
20 ITEM_LIST@[16; 93) 20 ITEM_LIST@16..93
21 L_CURLY@[16; 17) "{" 21 L_CURLY@16..17 "{"
22 WHITESPACE@[17; 23) "\n " 22 WHITESPACE@17..23 "\n "
23 COMMENT@[23; 48) "//! This is a doc com ..." 23 COMMENT@23..48 "//! This is a doc com ..."
24 WHITESPACE@[48; 54) "\n " 24 WHITESPACE@48..54 "\n "
25 ATTR@[54; 91) 25 ATTR@54..91
26 POUND@[54; 55) "#" 26 POUND@54..55 "#"
27 BANG@[55; 56) "!" 27 BANG@55..56 "!"
28 L_BRACK@[56; 57) "[" 28 L_BRACK@56..57 "["
29 PATH@[57; 60) 29 PATH@57..60
30 PATH_SEGMENT@[57; 60) 30 PATH_SEGMENT@57..60
31 NAME_REF@[57; 60) 31 NAME_REF@57..60
32 IDENT@[57; 60) "doc" 32 IDENT@57..60 "doc"
33 TOKEN_TREE@[60; 90) 33 TOKEN_TREE@60..90
34 L_PAREN@[60; 61) "(" 34 L_PAREN@60..61 "("
35 STRING@[61; 89) "\"This is also a doc c ..." 35 STRING@61..89 "\"This is also a doc c ..."
36 R_PAREN@[89; 90) ")" 36 R_PAREN@89..90 ")"
37 R_BRACK@[90; 91) "]" 37 R_BRACK@90..91 "]"
38 WHITESPACE@[91; 92) "\n" 38 WHITESPACE@91..92 "\n"
39 R_CURLY@[92; 93) "}" 39 R_CURLY@92..93 "}"
40 WHITESPACE@[93; 94) "\n" 40 WHITESPACE@93..94 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rast b/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rast
index 852e4e489..8e080fb60 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rast
@@ -1,48 +1,48 @@
1SOURCE_FILE@[0; 58) 1SOURCE_FILE@0..58
2 FN_DEF@[0; 57) 2 FN_DEF@0..57
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 57) 11 BLOCK_EXPR@9..57
12 BLOCK@[9; 57) 12 BLOCK@9..57
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 MATCH_EXPR@[15; 55) 15 MATCH_EXPR@15..55
16 MATCH_KW@[15; 20) "match" 16 MATCH_KW@15..20 "match"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@21..23
19 L_PAREN@[21; 22) "(" 19 L_PAREN@21..22 "("
20 R_PAREN@[22; 23) ")" 20 R_PAREN@22..23 ")"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 MATCH_ARM_LIST@[24; 55) 22 MATCH_ARM_LIST@24..55
23 L_CURLY@[24; 25) "{" 23 L_CURLY@24..25 "{"
24 WHITESPACE@[25; 34) "\n " 24 WHITESPACE@25..34 "\n "
25 MATCH_ARM@[34; 48) 25 MATCH_ARM@34..48
26 PLACEHOLDER_PAT@[34; 35) 26 PLACEHOLDER_PAT@34..35
27 UNDERSCORE@[34; 35) "_" 27 UNDERSCORE@34..35 "_"
28 WHITESPACE@[35; 36) " " 28 WHITESPACE@35..36 " "
29 MATCH_GUARD@[36; 42) 29 MATCH_GUARD@36..42
30 IF_KW@[36; 38) "if" 30 IF_KW@36..38 "if"
31 WHITESPACE@[38; 39) " " 31 WHITESPACE@38..39 " "
32 PATH_EXPR@[39; 42) 32 PATH_EXPR@39..42
33 PATH@[39; 42) 33 PATH@39..42
34 PATH_SEGMENT@[39; 42) 34 PATH_SEGMENT@39..42
35 NAME_REF@[39; 42) 35 NAME_REF@39..42
36 IDENT@[39; 42) "foo" 36 IDENT@39..42 "foo"
37 WHITESPACE@[42; 43) " " 37 WHITESPACE@42..43 " "
38 FAT_ARROW@[43; 45) "=>" 38 FAT_ARROW@43..45 "=>"
39 WHITESPACE@[45; 46) " " 39 WHITESPACE@45..46 " "
40 TUPLE_EXPR@[46; 48) 40 TUPLE_EXPR@46..48
41 L_PAREN@[46; 47) "(" 41 L_PAREN@46..47 "("
42 R_PAREN@[47; 48) ")" 42 R_PAREN@47..48 ")"
43 COMMA@[48; 49) "," 43 COMMA@48..49 ","
44 WHITESPACE@[49; 54) "\n " 44 WHITESPACE@49..54 "\n "
45 R_CURLY@[54; 55) "}" 45 R_CURLY@54..55 "}"
46 WHITESPACE@[55; 56) "\n" 46 WHITESPACE@55..56 "\n"
47 R_CURLY@[56; 57) "}" 47 R_CURLY@56..57 "}"
48 WHITESPACE@[57; 58) "\n" 48 WHITESPACE@57..58 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast b/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast
index 7eec92e1b..728164f8e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast
@@ -1,81 +1,81 @@
1SOURCE_FILE@[0; 139) 1SOURCE_FILE@0..139
2 FN_DEF@[0; 138) 2 FN_DEF@0..138
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 138) 11 BLOCK_EXPR@9..138
12 BLOCK@[9; 138) 12 BLOCK@9..138
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 MATCH_EXPR@[15; 136) 15 MATCH_EXPR@15..136
16 MATCH_KW@[15; 20) "match" 16 MATCH_KW@15..20 "match"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@21..23
19 L_PAREN@[21; 22) "(" 19 L_PAREN@21..22 "("
20 R_PAREN@[22; 23) ")" 20 R_PAREN@22..23 ")"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 MATCH_ARM_LIST@[24; 136) 22 MATCH_ARM_LIST@24..136
23 L_CURLY@[24; 25) "{" 23 L_CURLY@24..25 "{"
24 WHITESPACE@[25; 34) "\n " 24 WHITESPACE@25..34 "\n "
25 ATTR@[34; 60) 25 ATTR@34..60
26 POUND@[34; 35) "#" 26 POUND@34..35 "#"
27 BANG@[35; 36) "!" 27 BANG@35..36 "!"
28 L_BRACK@[36; 37) "[" 28 L_BRACK@36..37 "["
29 PATH@[37; 40) 29 PATH@37..40
30 PATH_SEGMENT@[37; 40) 30 PATH_SEGMENT@37..40
31 NAME_REF@[37; 40) 31 NAME_REF@37..40
32 IDENT@[37; 40) "doc" 32 IDENT@37..40 "doc"
33 TOKEN_TREE@[40; 59) 33 TOKEN_TREE@40..59
34 L_PAREN@[40; 41) "(" 34 L_PAREN@40..41 "("
35 STRING@[41; 58) "\"Inner attribute\"" 35 STRING@41..58 "\"Inner attribute\""
36 R_PAREN@[58; 59) ")" 36 R_PAREN@58..59 ")"
37 R_BRACK@[59; 60) "]" 37 R_BRACK@59..60 "]"
38 WHITESPACE@[60; 69) "\n " 38 WHITESPACE@60..69 "\n "
39 ATTR@[69; 86) 39 ATTR@69..86
40 POUND@[69; 70) "#" 40 POUND@69..70 "#"
41 BANG@[70; 71) "!" 41 BANG@70..71 "!"
42 L_BRACK@[71; 72) "[" 42 L_BRACK@71..72 "["
43 PATH@[72; 75) 43 PATH@72..75
44 PATH_SEGMENT@[72; 75) 44 PATH_SEGMENT@72..75
45 NAME_REF@[72; 75) 45 NAME_REF@72..75
46 IDENT@[72; 75) "doc" 46 IDENT@72..75 "doc"
47 TOKEN_TREE@[75; 85) 47 TOKEN_TREE@75..85
48 L_PAREN@[75; 76) "(" 48 L_PAREN@75..76 "("
49 STRING@[76; 84) "\"Can be\"" 49 STRING@76..84 "\"Can be\""
50 R_PAREN@[84; 85) ")" 50 R_PAREN@84..85 ")"
51 R_BRACK@[85; 86) "]" 51 R_BRACK@85..86 "]"
52 WHITESPACE@[86; 95) "\n " 52 WHITESPACE@86..95 "\n "
53 ATTR@[95; 113) 53 ATTR@95..113
54 POUND@[95; 96) "#" 54 POUND@95..96 "#"
55 BANG@[96; 97) "!" 55 BANG@96..97 "!"
56 L_BRACK@[97; 98) "[" 56 L_BRACK@97..98 "["
57 PATH@[98; 101) 57 PATH@98..101
58 PATH_SEGMENT@[98; 101) 58 PATH_SEGMENT@98..101
59 NAME_REF@[98; 101) 59 NAME_REF@98..101
60 IDENT@[98; 101) "doc" 60 IDENT@98..101 "doc"
61 TOKEN_TREE@[101; 112) 61 TOKEN_TREE@101..112
62 L_PAREN@[101; 102) "(" 62 L_PAREN@101..102 "("
63 STRING@[102; 111) "\"Stacked\"" 63 STRING@102..111 "\"Stacked\""
64 R_PAREN@[111; 112) ")" 64 R_PAREN@111..112 ")"
65 R_BRACK@[112; 113) "]" 65 R_BRACK@112..113 "]"
66 WHITESPACE@[113; 122) "\n " 66 WHITESPACE@113..122 "\n "
67 MATCH_ARM@[122; 129) 67 MATCH_ARM@122..129
68 PLACEHOLDER_PAT@[122; 123) 68 PLACEHOLDER_PAT@122..123
69 UNDERSCORE@[122; 123) "_" 69 UNDERSCORE@122..123 "_"
70 WHITESPACE@[123; 124) " " 70 WHITESPACE@123..124 " "
71 FAT_ARROW@[124; 126) "=>" 71 FAT_ARROW@124..126 "=>"
72 WHITESPACE@[126; 127) " " 72 WHITESPACE@126..127 " "
73 TUPLE_EXPR@[127; 129) 73 TUPLE_EXPR@127..129
74 L_PAREN@[127; 128) "(" 74 L_PAREN@127..128 "("
75 R_PAREN@[128; 129) ")" 75 R_PAREN@128..129 ")"
76 COMMA@[129; 130) "," 76 COMMA@129..130 ","
77 WHITESPACE@[130; 135) "\n " 77 WHITESPACE@130..135 "\n "
78 R_CURLY@[135; 136) "}" 78 R_CURLY@135..136 "}"
79 WHITESPACE@[136; 137) "\n" 79 WHITESPACE@136..137 "\n"
80 R_CURLY@[137; 138) "}" 80 R_CURLY@137..138 "}"
81 WHITESPACE@[138; 139) "\n" 81 WHITESPACE@138..139 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast b/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast
index ff380b448..6123885e3 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast
@@ -1,146 +1,146 @@
1SOURCE_FILE@[0; 259) 1SOURCE_FILE@0..259
2 FN_DEF@[0; 258) 2 FN_DEF@0..258
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 258) 11 BLOCK_EXPR@9..258
12 BLOCK@[9; 258) 12 BLOCK@9..258
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 MATCH_EXPR@[15; 256) 15 MATCH_EXPR@15..256
16 MATCH_KW@[15; 20) "match" 16 MATCH_KW@15..20 "match"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@21..23
19 L_PAREN@[21; 22) "(" 19 L_PAREN@21..22 "("
20 R_PAREN@[22; 23) ")" 20 R_PAREN@22..23 ")"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 MATCH_ARM_LIST@[24; 256) 22 MATCH_ARM_LIST@24..256
23 L_CURLY@[24; 25) "{" 23 L_CURLY@24..25 "{"
24 WHITESPACE@[25; 34) "\n " 24 WHITESPACE@25..34 "\n "
25 MATCH_ARM@[34; 74) 25 MATCH_ARM@34..74
26 ATTR@[34; 58) 26 ATTR@34..58
27 POUND@[34; 35) "#" 27 POUND@34..35 "#"
28 L_BRACK@[35; 36) "[" 28 L_BRACK@35..36 "["
29 PATH@[36; 39) 29 PATH@36..39
30 PATH_SEGMENT@[36; 39) 30 PATH_SEGMENT@36..39
31 NAME_REF@[36; 39) 31 NAME_REF@36..39
32 IDENT@[36; 39) "cfg" 32 IDENT@36..39 "cfg"
33 TOKEN_TREE@[39; 57) 33 TOKEN_TREE@39..57
34 L_PAREN@[39; 40) "(" 34 L_PAREN@39..40 "("
35 IDENT@[40; 47) "feature" 35 IDENT@40..47 "feature"
36 WHITESPACE@[47; 48) " " 36 WHITESPACE@47..48 " "
37 EQ@[48; 49) "=" 37 EQ@48..49 "="
38 WHITESPACE@[49; 50) " " 38 WHITESPACE@49..50 " "
39 STRING@[50; 56) "\"some\"" 39 STRING@50..56 "\"some\""
40 R_PAREN@[56; 57) ")" 40 R_PAREN@56..57 ")"
41 R_BRACK@[57; 58) "]" 41 R_BRACK@57..58 "]"
42 WHITESPACE@[58; 67) "\n " 42 WHITESPACE@58..67 "\n "
43 PLACEHOLDER_PAT@[67; 68) 43 PLACEHOLDER_PAT@67..68
44 UNDERSCORE@[67; 68) "_" 44 UNDERSCORE@67..68 "_"
45 WHITESPACE@[68; 69) " " 45 WHITESPACE@68..69 " "
46 FAT_ARROW@[69; 71) "=>" 46 FAT_ARROW@69..71 "=>"
47 WHITESPACE@[71; 72) " " 47 WHITESPACE@71..72 " "
48 TUPLE_EXPR@[72; 74) 48 TUPLE_EXPR@72..74
49 L_PAREN@[72; 73) "(" 49 L_PAREN@72..73 "("
50 R_PAREN@[73; 74) ")" 50 R_PAREN@73..74 ")"
51 COMMA@[74; 75) "," 51 COMMA@74..75 ","
52 WHITESPACE@[75; 84) "\n " 52 WHITESPACE@75..84 "\n "
53 MATCH_ARM@[84; 125) 53 MATCH_ARM@84..125
54 ATTR@[84; 109) 54 ATTR@84..109
55 POUND@[84; 85) "#" 55 POUND@84..85 "#"
56 L_BRACK@[85; 86) "[" 56 L_BRACK@85..86 "["
57 PATH@[86; 89) 57 PATH@86..89
58 PATH_SEGMENT@[86; 89) 58 PATH_SEGMENT@86..89
59 NAME_REF@[86; 89) 59 NAME_REF@86..89
60 IDENT@[86; 89) "cfg" 60 IDENT@86..89 "cfg"
61 TOKEN_TREE@[89; 108) 61 TOKEN_TREE@89..108
62 L_PAREN@[89; 90) "(" 62 L_PAREN@89..90 "("
63 IDENT@[90; 97) "feature" 63 IDENT@90..97 "feature"
64 WHITESPACE@[97; 98) " " 64 WHITESPACE@97..98 " "
65 EQ@[98; 99) "=" 65 EQ@98..99 "="
66 WHITESPACE@[99; 100) " " 66 WHITESPACE@99..100 " "
67 STRING@[100; 107) "\"other\"" 67 STRING@100..107 "\"other\""
68 R_PAREN@[107; 108) ")" 68 R_PAREN@107..108 ")"
69 R_BRACK@[108; 109) "]" 69 R_BRACK@108..109 "]"
70 WHITESPACE@[109; 118) "\n " 70 WHITESPACE@109..118 "\n "
71 PLACEHOLDER_PAT@[118; 119) 71 PLACEHOLDER_PAT@118..119
72 UNDERSCORE@[118; 119) "_" 72 UNDERSCORE@118..119 "_"
73 WHITESPACE@[119; 120) " " 73 WHITESPACE@119..120 " "
74 FAT_ARROW@[120; 122) "=>" 74 FAT_ARROW@120..122 "=>"
75 WHITESPACE@[122; 123) " " 75 WHITESPACE@122..123 " "
76 TUPLE_EXPR@[123; 125) 76 TUPLE_EXPR@123..125
77 L_PAREN@[123; 124) "(" 77 L_PAREN@123..124 "("
78 R_PAREN@[124; 125) ")" 78 R_PAREN@124..125 ")"
79 COMMA@[125; 126) "," 79 COMMA@125..126 ","
80 WHITESPACE@[126; 135) "\n " 80 WHITESPACE@126..135 "\n "
81 MATCH_ARM@[135; 249) 81 MATCH_ARM@135..249
82 ATTR@[135; 159) 82 ATTR@135..159
83 POUND@[135; 136) "#" 83 POUND@135..136 "#"
84 L_BRACK@[136; 137) "[" 84 L_BRACK@136..137 "["
85 PATH@[137; 140) 85 PATH@137..140
86 PATH_SEGMENT@[137; 140) 86 PATH_SEGMENT@137..140
87 NAME_REF@[137; 140) 87 NAME_REF@137..140
88 IDENT@[137; 140) "cfg" 88 IDENT@137..140 "cfg"
89 TOKEN_TREE@[140; 158) 89 TOKEN_TREE@140..158
90 L_PAREN@[140; 141) "(" 90 L_PAREN@140..141 "("
91 IDENT@[141; 148) "feature" 91 IDENT@141..148 "feature"
92 WHITESPACE@[148; 149) " " 92 WHITESPACE@148..149 " "
93 EQ@[149; 150) "=" 93 EQ@149..150 "="
94 WHITESPACE@[150; 151) " " 94 WHITESPACE@150..151 " "
95 STRING@[151; 157) "\"many\"" 95 STRING@151..157 "\"many\""
96 R_PAREN@[157; 158) ")" 96 R_PAREN@157..158 ")"
97 R_BRACK@[158; 159) "]" 97 R_BRACK@158..159 "]"
98 WHITESPACE@[159; 168) "\n " 98 WHITESPACE@159..168 "\n "
99 ATTR@[168; 198) 99 ATTR@168..198
100 POUND@[168; 169) "#" 100 POUND@168..169 "#"
101 L_BRACK@[169; 170) "[" 101 L_BRACK@169..170 "["
102 PATH@[170; 173) 102 PATH@170..173
103 PATH_SEGMENT@[170; 173) 103 PATH_SEGMENT@170..173
104 NAME_REF@[170; 173) 104 NAME_REF@170..173
105 IDENT@[170; 173) "cfg" 105 IDENT@170..173 "cfg"
106 TOKEN_TREE@[173; 197) 106 TOKEN_TREE@173..197
107 L_PAREN@[173; 174) "(" 107 L_PAREN@173..174 "("
108 IDENT@[174; 181) "feature" 108 IDENT@174..181 "feature"
109 WHITESPACE@[181; 182) " " 109 WHITESPACE@181..182 " "
110 EQ@[182; 183) "=" 110 EQ@182..183 "="
111 WHITESPACE@[183; 184) " " 111 WHITESPACE@183..184 " "
112 STRING@[184; 196) "\"attributes\"" 112 STRING@184..196 "\"attributes\""
113 R_PAREN@[196; 197) ")" 113 R_PAREN@196..197 ")"
114 R_BRACK@[197; 198) "]" 114 R_BRACK@197..198 "]"
115 WHITESPACE@[198; 207) "\n " 115 WHITESPACE@198..207 "\n "
116 ATTR@[207; 233) 116 ATTR@207..233
117 POUND@[207; 208) "#" 117 POUND@207..208 "#"
118 L_BRACK@[208; 209) "[" 118 L_BRACK@208..209 "["
119 PATH@[209; 212) 119 PATH@209..212
120 PATH_SEGMENT@[209; 212) 120 PATH_SEGMENT@209..212
121 NAME_REF@[209; 212) 121 NAME_REF@209..212
122 IDENT@[209; 212) "cfg" 122 IDENT@209..212 "cfg"
123 TOKEN_TREE@[212; 232) 123 TOKEN_TREE@212..232
124 L_PAREN@[212; 213) "(" 124 L_PAREN@212..213 "("
125 IDENT@[213; 220) "feature" 125 IDENT@213..220 "feature"
126 WHITESPACE@[220; 221) " " 126 WHITESPACE@220..221 " "
127 EQ@[221; 222) "=" 127 EQ@221..222 "="
128 WHITESPACE@[222; 223) " " 128 WHITESPACE@222..223 " "
129 STRING@[223; 231) "\"before\"" 129 STRING@223..231 "\"before\""
130 R_PAREN@[231; 232) ")" 130 R_PAREN@231..232 ")"
131 R_BRACK@[232; 233) "]" 131 R_BRACK@232..233 "]"
132 WHITESPACE@[233; 242) "\n " 132 WHITESPACE@233..242 "\n "
133 PLACEHOLDER_PAT@[242; 243) 133 PLACEHOLDER_PAT@242..243
134 UNDERSCORE@[242; 243) "_" 134 UNDERSCORE@242..243 "_"
135 WHITESPACE@[243; 244) " " 135 WHITESPACE@243..244 " "
136 FAT_ARROW@[244; 246) "=>" 136 FAT_ARROW@244..246 "=>"
137 WHITESPACE@[246; 247) " " 137 WHITESPACE@246..247 " "
138 TUPLE_EXPR@[247; 249) 138 TUPLE_EXPR@247..249
139 L_PAREN@[247; 248) "(" 139 L_PAREN@247..248 "("
140 R_PAREN@[248; 249) ")" 140 R_PAREN@248..249 ")"
141 COMMA@[249; 250) "," 141 COMMA@249..250 ","
142 WHITESPACE@[250; 255) "\n " 142 WHITESPACE@250..255 "\n "
143 R_CURLY@[255; 256) "}" 143 R_CURLY@255..256 "}"
144 WHITESPACE@[256; 257) "\n" 144 WHITESPACE@256..257 "\n"
145 R_CURLY@[257; 258) "}" 145 R_CURLY@257..258 "}"
146 WHITESPACE@[258; 259) "\n" 146 WHITESPACE@258..259 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast b/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast
index a73ff9c90..67b9c10d5 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast
@@ -1,66 +1,66 @@
1SOURCE_FILE@[0; 64) 1SOURCE_FILE@0..64
2 FN_DEF@[0; 63) 2 FN_DEF@0..63
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 TYPE_PARAM_LIST@[6; 49) 7 TYPE_PARAM_LIST@6..49
8 L_ANGLE@[6; 7) "<" 8 L_ANGLE@6..7 "<"
9 LIFETIME_PARAM@[7; 29) 9 LIFETIME_PARAM@7..29
10 ATTR@[7; 26) 10 ATTR@7..26
11 POUND@[7; 8) "#" 11 POUND@7..8 "#"
12 L_BRACK@[8; 9) "[" 12 L_BRACK@8..9 "["
13 PATH@[9; 15) 13 PATH@9..15
14 PATH_SEGMENT@[9; 15) 14 PATH_SEGMENT@9..15
15 NAME_REF@[9; 15) 15 NAME_REF@9..15
16 IDENT@[9; 15) "derive" 16 IDENT@9..15 "derive"
17 TOKEN_TREE@[15; 25) 17 TOKEN_TREE@15..25
18 L_PAREN@[15; 16) "(" 18 L_PAREN@15..16 "("
19 IDENT@[16; 24) "Lifetime" 19 IDENT@16..24 "Lifetime"
20 R_PAREN@[24; 25) ")" 20 R_PAREN@24..25 ")"
21 R_BRACK@[25; 26) "]" 21 R_BRACK@25..26 "]"
22 WHITESPACE@[26; 27) " " 22 WHITESPACE@26..27 " "
23 LIFETIME@[27; 29) "\'a" 23 LIFETIME@27..29 "\'a"
24 COMMA@[29; 30) "," 24 COMMA@29..30 ","
25 WHITESPACE@[30; 31) " " 25 WHITESPACE@30..31 " "
26 TYPE_PARAM@[31; 48) 26 TYPE_PARAM@31..48
27 ATTR@[31; 46) 27 ATTR@31..46
28 POUND@[31; 32) "#" 28 POUND@31..32 "#"
29 L_BRACK@[32; 33) "[" 29 L_BRACK@32..33 "["
30 PATH@[33; 39) 30 PATH@33..39
31 PATH_SEGMENT@[33; 39) 31 PATH_SEGMENT@33..39
32 NAME_REF@[33; 39) 32 NAME_REF@33..39
33 IDENT@[33; 39) "derive" 33 IDENT@33..39 "derive"
34 TOKEN_TREE@[39; 45) 34 TOKEN_TREE@39..45
35 L_PAREN@[39; 40) "(" 35 L_PAREN@39..40 "("
36 IDENT@[40; 44) "Type" 36 IDENT@40..44 "Type"
37 R_PAREN@[44; 45) ")" 37 R_PAREN@44..45 ")"
38 R_BRACK@[45; 46) "]" 38 R_BRACK@45..46 "]"
39 WHITESPACE@[46; 47) " " 39 WHITESPACE@46..47 " "
40 NAME@[47; 48) 40 NAME@47..48
41 IDENT@[47; 48) "T" 41 IDENT@47..48 "T"
42 R_ANGLE@[48; 49) ">" 42 R_ANGLE@48..49 ">"
43 PARAM_LIST@[49; 59) 43 PARAM_LIST@49..59
44 L_PAREN@[49; 50) "(" 44 L_PAREN@49..50 "("
45 PARAM@[50; 58) 45 PARAM@50..58
46 PLACEHOLDER_PAT@[50; 51) 46 PLACEHOLDER_PAT@50..51
47 UNDERSCORE@[50; 51) "_" 47 UNDERSCORE@50..51 "_"
48 COLON@[51; 52) ":" 48 COLON@51..52 ":"
49 WHITESPACE@[52; 53) " " 49 WHITESPACE@52..53 " "
50 REFERENCE_TYPE@[53; 58) 50 REFERENCE_TYPE@53..58
51 AMP@[53; 54) "&" 51 AMP@53..54 "&"
52 LIFETIME@[54; 56) "\'a" 52 LIFETIME@54..56 "\'a"
53 WHITESPACE@[56; 57) " " 53 WHITESPACE@56..57 " "
54 PATH_TYPE@[57; 58) 54 PATH_TYPE@57..58
55 PATH@[57; 58) 55 PATH@57..58
56 PATH_SEGMENT@[57; 58) 56 PATH_SEGMENT@57..58
57 NAME_REF@[57; 58) 57 NAME_REF@57..58
58 IDENT@[57; 58) "T" 58 IDENT@57..58 "T"
59 R_PAREN@[58; 59) ")" 59 R_PAREN@58..59 ")"
60 WHITESPACE@[59; 60) " " 60 WHITESPACE@59..60 " "
61 BLOCK_EXPR@[60; 63) 61 BLOCK_EXPR@60..63
62 BLOCK@[60; 63) 62 BLOCK@60..63
63 L_CURLY@[60; 61) "{" 63 L_CURLY@60..61 "{"
64 WHITESPACE@[61; 62) "\n" 64 WHITESPACE@61..62 "\n"
65 R_CURLY@[62; 63) "}" 65 R_CURLY@62..63 "}"
66 WHITESPACE@[63; 64) "\n" 66 WHITESPACE@63..64 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast
index af8067b12..b3a33c14d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 57) 1SOURCE_FILE@0..57
2 EXTERN_BLOCK@[0; 56) 2 EXTERN_BLOCK@0..56
3 ABI@[0; 10) 3 ABI@0..10
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 STRING@[7; 10) "\"C\"" 6 STRING@7..10 "\"C\""
7 WHITESPACE@[10; 11) " " 7 WHITESPACE@10..11 " "
8 EXTERN_ITEM_LIST@[11; 56) 8 EXTERN_ITEM_LIST@11..56
9 L_CURLY@[11; 12) "{" 9 L_CURLY@11..12 "{"
10 WHITESPACE@[12; 13) " " 10 WHITESPACE@12..13 " "
11 FN_DEF@[13; 54) 11 FN_DEF@13..54
12 FN_KW@[13; 15) "fn" 12 FN_KW@13..15 "fn"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 NAME@[16; 22) 14 NAME@16..22
15 IDENT@[16; 22) "printf" 15 IDENT@16..22 "printf"
16 PARAM_LIST@[22; 46) 16 PARAM_LIST@22..46
17 L_PAREN@[22; 23) "(" 17 L_PAREN@22..23 "("
18 PARAM@[23; 40) 18 PARAM@23..40
19 BIND_PAT@[23; 29) 19 BIND_PAT@23..29
20 NAME@[23; 29) 20 NAME@23..29
21 IDENT@[23; 29) "format" 21 IDENT@23..29 "format"
22 COLON@[29; 30) ":" 22 COLON@29..30 ":"
23 WHITESPACE@[30; 31) " " 23 WHITESPACE@30..31 " "
24 POINTER_TYPE@[31; 40) 24 POINTER_TYPE@31..40
25 STAR@[31; 32) "*" 25 STAR@31..32 "*"
26 CONST_KW@[32; 37) "const" 26 CONST_KW@32..37 "const"
27 WHITESPACE@[37; 38) " " 27 WHITESPACE@37..38 " "
28 PATH_TYPE@[38; 40) 28 PATH_TYPE@38..40
29 PATH@[38; 40) 29 PATH@38..40
30 PATH_SEGMENT@[38; 40) 30 PATH_SEGMENT@38..40
31 NAME_REF@[38; 40) 31 NAME_REF@38..40
32 IDENT@[38; 40) "i8" 32 IDENT@38..40 "i8"
33 COMMA@[40; 41) "," 33 COMMA@40..41 ","
34 WHITESPACE@[41; 42) " " 34 WHITESPACE@41..42 " "
35 PARAM@[42; 45) 35 PARAM@42..45
36 DOT3@[42; 45) "..." 36 DOT3@42..45 "..."
37 R_PAREN@[45; 46) ")" 37 R_PAREN@45..46 ")"
38 WHITESPACE@[46; 47) " " 38 WHITESPACE@46..47 " "
39 RET_TYPE@[47; 53) 39 RET_TYPE@47..53
40 THIN_ARROW@[47; 49) "->" 40 THIN_ARROW@47..49 "->"
41 WHITESPACE@[49; 50) " " 41 WHITESPACE@49..50 " "
42 PATH_TYPE@[50; 53) 42 PATH_TYPE@50..53
43 PATH@[50; 53) 43 PATH@50..53
44 PATH_SEGMENT@[50; 53) 44 PATH_SEGMENT@50..53
45 NAME_REF@[50; 53) 45 NAME_REF@50..53
46 IDENT@[50; 53) "i32" 46 IDENT@50..53 "i32"
47 SEMICOLON@[53; 54) ";" 47 SEMICOLON@53..54 ";"
48 WHITESPACE@[54; 55) " " 48 WHITESPACE@54..55 " "
49 R_CURLY@[55; 56) "}" 49 R_CURLY@55..56 "}"
50 WHITESPACE@[56; 57) "\n" 50 WHITESPACE@56..57 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rast b/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rast
index 9c4bd7f11..baf22a8d7 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rast
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@0..18
2 FN_DEF@[0; 17) 2 FN_DEF@0..17
3 ASYNC_KW@[0; 5) "async" 3 ASYNC_KW@0..5 "async"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 FN_KW@[6; 8) "fn" 5 FN_KW@6..8 "fn"
6 WHITESPACE@[8; 9) " " 6 WHITESPACE@8..9 " "
7 NAME@[9; 12) 7 NAME@9..12
8 IDENT@[9; 12) "foo" 8 IDENT@9..12 "foo"
9 PARAM_LIST@[12; 14) 9 PARAM_LIST@12..14
10 L_PAREN@[12; 13) "(" 10 L_PAREN@12..13 "("
11 R_PAREN@[13; 14) ")" 11 R_PAREN@13..14 ")"
12 WHITESPACE@[14; 15) " " 12 WHITESPACE@14..15 " "
13 BLOCK_EXPR@[15; 17) 13 BLOCK_EXPR@15..17
14 BLOCK@[15; 17) 14 BLOCK@15..17
15 L_CURLY@[15; 16) "{" 15 L_CURLY@15..16 "{"
16 R_CURLY@[16; 17) "}" 16 R_CURLY@16..17 "}"
17 WHITESPACE@[17; 18) "\n" 17 WHITESPACE@17..18 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast b/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast
index f1f4de976..16f5b90b6 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@0..27
2 FN_DEF@[0; 26) 2 FN_DEF@0..26
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 26) 11 BLOCK_EXPR@9..26
12 BLOCK@[9; 26) 12 BLOCK@9..26
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 EXPR_STMT@[11; 24) 15 EXPR_STMT@11..24
16 CALL_EXPR@[11; 23) 16 CALL_EXPR@11..23
17 PATH_EXPR@[11; 21) 17 PATH_EXPR@11..21
18 PATH@[11; 21) 18 PATH@11..21
19 PATH@[11; 16) 19 PATH@11..16
20 PATH_SEGMENT@[11; 16) 20 PATH_SEGMENT@11..16
21 CRATE_KW@[11; 16) "crate" 21 CRATE_KW@11..16 "crate"
22 COLON2@[16; 18) "::" 22 COLON2@16..18 "::"
23 PATH_SEGMENT@[18; 21) 23 PATH_SEGMENT@18..21
24 NAME_REF@[18; 21) 24 NAME_REF@18..21
25 IDENT@[18; 21) "foo" 25 IDENT@18..21 "foo"
26 ARG_LIST@[21; 23) 26 ARG_LIST@21..23
27 L_PAREN@[21; 22) "(" 27 L_PAREN@21..22 "("
28 R_PAREN@[22; 23) ")" 28 R_PAREN@22..23 ")"
29 SEMICOLON@[23; 24) ";" 29 SEMICOLON@23..24 ";"
30 WHITESPACE@[24; 25) " " 30 WHITESPACE@24..25 " "
31 R_CURLY@[25; 26) "}" 31 R_CURLY@25..26 "}"
32 WHITESPACE@[26; 27) "\n" 32 WHITESPACE@26..27 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast
index a36c3df0e..07ed14773 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast
@@ -1,48 +1,48 @@
1SOURCE_FILE@[0; 46) 1SOURCE_FILE@0..46
2 FN_DEF@[0; 45) 2 FN_DEF@0..45
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 45) 11 BLOCK_EXPR@10..45
12 BLOCK@[10; 45) 12 BLOCK@10..45
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 RECORD_LIT@[16; 43) 15 RECORD_LIT@16..43
16 PATH@[16; 17) 16 PATH@16..17
17 PATH_SEGMENT@[16; 17) 17 PATH_SEGMENT@16..17
18 NAME_REF@[16; 17) 18 NAME_REF@16..17
19 IDENT@[16; 17) "S" 19 IDENT@16..17 "S"
20 WHITESPACE@[17; 18) " " 20 WHITESPACE@17..18 " "
21 RECORD_FIELD_LIST@[18; 43) 21 RECORD_FIELD_LIST@18..43
22 L_CURLY@[18; 19) "{" 22 L_CURLY@18..19 "{"
23 WHITESPACE@[19; 20) " " 23 WHITESPACE@19..20 " "
24 RECORD_FIELD@[20; 41) 24 RECORD_FIELD@20..41
25 ATTR@[20; 32) 25 ATTR@20..32
26 POUND@[20; 21) "#" 26 POUND@20..21 "#"
27 L_BRACK@[21; 22) "[" 27 L_BRACK@21..22 "["
28 PATH@[22; 25) 28 PATH@22..25
29 PATH_SEGMENT@[22; 25) 29 PATH_SEGMENT@22..25
30 NAME_REF@[22; 25) 30 NAME_REF@22..25
31 IDENT@[22; 25) "cfg" 31 IDENT@22..25 "cfg"
32 TOKEN_TREE@[25; 31) 32 TOKEN_TREE@25..31
33 L_PAREN@[25; 26) "(" 33 L_PAREN@25..26 "("
34 IDENT@[26; 30) "test" 34 IDENT@26..30 "test"
35 R_PAREN@[30; 31) ")" 35 R_PAREN@30..31 ")"
36 R_BRACK@[31; 32) "]" 36 R_BRACK@31..32 "]"
37 WHITESPACE@[32; 33) " " 37 WHITESPACE@32..33 " "
38 NAME_REF@[33; 38) 38 NAME_REF@33..38
39 IDENT@[33; 38) "field" 39 IDENT@33..38 "field"
40 COLON@[38; 39) ":" 40 COLON@38..39 ":"
41 WHITESPACE@[39; 40) " " 41 WHITESPACE@39..40 " "
42 LITERAL@[40; 41) 42 LITERAL@40..41
43 INT_NUMBER@[40; 41) "1" 43 INT_NUMBER@40..41 "1"
44 WHITESPACE@[41; 42) " " 44 WHITESPACE@41..42 " "
45 R_CURLY@[42; 43) "}" 45 R_CURLY@42..43 "}"
46 WHITESPACE@[43; 44) "\n" 46 WHITESPACE@43..44 "\n"
47 R_CURLY@[44; 45) "}" 47 R_CURLY@44..45 "}"
48 WHITESPACE@[45; 46) "\n" 48 WHITESPACE@45..46 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast b/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast
index 3b462871a..8307d4c15 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast
@@ -1,99 +1,99 @@
1SOURCE_FILE@[0; 82) 1SOURCE_FILE@0..82
2 FN_DEF@[0; 81) 2 FN_DEF@0..81
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 81) 11 BLOCK_EXPR@9..81
12 BLOCK@[9; 81) 12 BLOCK@9..81
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 26) 15 EXPR_STMT@15..26
16 ATTR@[15; 19) 16 ATTR@15..19
17 POUND@[15; 16) "#" 17 POUND@15..16 "#"
18 L_BRACK@[16; 17) "[" 18 L_BRACK@16..17 "["
19 PATH@[17; 18) 19 PATH@17..18
20 PATH_SEGMENT@[17; 18) 20 PATH_SEGMENT@17..18
21 NAME_REF@[17; 18) 21 NAME_REF@17..18
22 IDENT@[17; 18) "A" 22 IDENT@17..18 "A"
23 R_BRACK@[18; 19) "]" 23 R_BRACK@18..19 "]"
24 WHITESPACE@[19; 20) " " 24 WHITESPACE@19..20 " "
25 CALL_EXPR@[20; 25) 25 CALL_EXPR@20..25
26 PATH_EXPR@[20; 23) 26 PATH_EXPR@20..23
27 PATH@[20; 23) 27 PATH@20..23
28 PATH_SEGMENT@[20; 23) 28 PATH_SEGMENT@20..23
29 NAME_REF@[20; 23) 29 NAME_REF@20..23
30 IDENT@[20; 23) "foo" 30 IDENT@20..23 "foo"
31 ARG_LIST@[23; 25) 31 ARG_LIST@23..25
32 L_PAREN@[23; 24) "(" 32 L_PAREN@23..24 "("
33 R_PAREN@[24; 25) ")" 33 R_PAREN@24..25 ")"
34 SEMICOLON@[25; 26) ";" 34 SEMICOLON@25..26 ";"
35 WHITESPACE@[26; 31) "\n " 35 WHITESPACE@26..31 "\n "
36 EXPR_STMT@[31; 42) 36 EXPR_STMT@31..42
37 ATTR@[31; 35) 37 ATTR@31..35
38 POUND@[31; 32) "#" 38 POUND@31..32 "#"
39 L_BRACK@[32; 33) "[" 39 L_BRACK@32..33 "["
40 PATH@[33; 34) 40 PATH@33..34
41 PATH_SEGMENT@[33; 34) 41 PATH_SEGMENT@33..34
42 NAME_REF@[33; 34) 42 NAME_REF@33..34
43 IDENT@[33; 34) "B" 43 IDENT@33..34 "B"
44 R_BRACK@[34; 35) "]" 44 R_BRACK@34..35 "]"
45 WHITESPACE@[35; 36) " " 45 WHITESPACE@35..36 " "
46 MACRO_CALL@[36; 42) 46 MACRO_CALL@36..42
47 PATH@[36; 39) 47 PATH@36..39
48 PATH_SEGMENT@[36; 39) 48 PATH_SEGMENT@36..39
49 NAME_REF@[36; 39) 49 NAME_REF@36..39
50 IDENT@[36; 39) "bar" 50 IDENT@36..39 "bar"
51 BANG@[39; 40) "!" 51 BANG@39..40 "!"
52 TOKEN_TREE@[40; 42) 52 TOKEN_TREE@40..42
53 L_CURLY@[40; 41) "{" 53 L_CURLY@40..41 "{"
54 R_CURLY@[41; 42) "}" 54 R_CURLY@41..42 "}"
55 WHITESPACE@[42; 47) "\n " 55 WHITESPACE@42..47 "\n "
56 EXPR_STMT@[47; 59) 56 EXPR_STMT@47..59
57 ATTR@[47; 51) 57 ATTR@47..51
58 POUND@[47; 48) "#" 58 POUND@47..48 "#"
59 L_BRACK@[48; 49) "[" 59 L_BRACK@48..49 "["
60 PATH@[49; 50) 60 PATH@49..50
61 PATH_SEGMENT@[49; 50) 61 PATH_SEGMENT@49..50
62 NAME_REF@[49; 50) 62 NAME_REF@49..50
63 IDENT@[49; 50) "C" 63 IDENT@49..50 "C"
64 R_BRACK@[50; 51) "]" 64 R_BRACK@50..51 "]"
65 WHITESPACE@[51; 52) " " 65 WHITESPACE@51..52 " "
66 ATTR@[52; 56) 66 ATTR@52..56
67 POUND@[52; 53) "#" 67 POUND@52..53 "#"
68 L_BRACK@[53; 54) "[" 68 L_BRACK@53..54 "["
69 PATH@[54; 55) 69 PATH@54..55
70 PATH_SEGMENT@[54; 55) 70 PATH_SEGMENT@54..55
71 NAME_REF@[54; 55) 71 NAME_REF@54..55
72 IDENT@[54; 55) "D" 72 IDENT@54..55 "D"
73 R_BRACK@[55; 56) "]" 73 R_BRACK@55..56 "]"
74 WHITESPACE@[56; 57) " " 74 WHITESPACE@56..57 " "
75 BLOCK_EXPR@[57; 59) 75 BLOCK_EXPR@57..59
76 BLOCK@[57; 59) 76 BLOCK@57..59
77 L_CURLY@[57; 58) "{" 77 L_CURLY@57..58 "{"
78 R_CURLY@[58; 59) "}" 78 R_CURLY@58..59 "}"
79 WHITESPACE@[59; 64) "\n " 79 WHITESPACE@59..64 "\n "
80 EXPR_STMT@[64; 79) 80 EXPR_STMT@64..79
81 ATTR@[64; 68) 81 ATTR@64..68
82 POUND@[64; 65) "#" 82 POUND@64..65 "#"
83 L_BRACK@[65; 66) "[" 83 L_BRACK@65..66 "["
84 PATH@[66; 67) 84 PATH@66..67
85 PATH_SEGMENT@[66; 67) 85 PATH_SEGMENT@66..67
86 NAME_REF@[66; 67) 86 NAME_REF@66..67
87 IDENT@[66; 67) "D" 87 IDENT@66..67 "D"
88 R_BRACK@[67; 68) "]" 88 R_BRACK@67..68 "]"
89 WHITESPACE@[68; 69) " " 89 WHITESPACE@68..69 " "
90 RETURN_EXPR@[69; 78) 90 RETURN_EXPR@69..78
91 RETURN_KW@[69; 75) "return" 91 RETURN_KW@69..75 "return"
92 WHITESPACE@[75; 76) " " 92 WHITESPACE@75..76 " "
93 TUPLE_EXPR@[76; 78) 93 TUPLE_EXPR@76..78
94 L_PAREN@[76; 77) "(" 94 L_PAREN@76..77 "("
95 R_PAREN@[77; 78) ")" 95 R_PAREN@77..78 ")"
96 SEMICOLON@[78; 79) ";" 96 SEMICOLON@78..79 ";"
97 WHITESPACE@[79; 80) "\n" 97 WHITESPACE@79..80 "\n"
98 R_CURLY@[80; 81) "}" 98 R_CURLY@80..81 "}"
99 WHITESPACE@[81; 82) "\n" 99 WHITESPACE@81..82 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast b/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast
index 9bc6be62d..19c47ea25 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@0..47
2 FN_DEF@[0; 46) 2 FN_DEF@0..46
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 46) 11 BLOCK_EXPR@9..46
12 BLOCK@[9; 46) 12 BLOCK@9..46
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 31) 15 EXPR_STMT@15..31
16 BLOCK_EXPR@[15; 31) 16 BLOCK_EXPR@15..31
17 BLOCK@[15; 31) 17 BLOCK@15..31
18 L_CURLY@[15; 16) "{" 18 L_CURLY@15..16 "{"
19 WHITESPACE@[16; 17) " " 19 WHITESPACE@16..17 " "
20 TRY_EXPR@[17; 29) 20 TRY_EXPR@17..29
21 ATTR@[17; 21) 21 ATTR@17..21
22 POUND@[17; 18) "#" 22 POUND@17..18 "#"
23 L_BRACK@[18; 19) "[" 23 L_BRACK@18..19 "["
24 PATH@[19; 20) 24 PATH@19..20
25 PATH_SEGMENT@[19; 20) 25 PATH_SEGMENT@19..20
26 NAME_REF@[19; 20) 26 NAME_REF@19..20
27 IDENT@[19; 20) "A" 27 IDENT@19..20 "A"
28 R_BRACK@[20; 21) "]" 28 R_BRACK@20..21 "]"
29 WHITESPACE@[21; 22) " " 29 WHITESPACE@21..22 " "
30 MACRO_CALL@[22; 28) 30 MACRO_CALL@22..28
31 PATH@[22; 25) 31 PATH@22..25
32 PATH_SEGMENT@[22; 25) 32 PATH_SEGMENT@22..25
33 NAME_REF@[22; 25) 33 NAME_REF@22..25
34 IDENT@[22; 25) "bar" 34 IDENT@22..25 "bar"
35 BANG@[25; 26) "!" 35 BANG@25..26 "!"
36 TOKEN_TREE@[26; 28) 36 TOKEN_TREE@26..28
37 L_PAREN@[26; 27) "(" 37 L_PAREN@26..27 "("
38 R_PAREN@[27; 28) ")" 38 R_PAREN@27..28 ")"
39 QUESTION@[28; 29) "?" 39 QUESTION@28..29 "?"
40 WHITESPACE@[29; 30) " " 40 WHITESPACE@29..30 " "
41 R_CURLY@[30; 31) "}" 41 R_CURLY@30..31 "}"
42 WHITESPACE@[31; 36) "\n " 42 WHITESPACE@31..36 "\n "
43 REF_EXPR@[36; 44) 43 REF_EXPR@36..44
44 ATTR@[36; 40) 44 ATTR@36..40
45 POUND@[36; 37) "#" 45 POUND@36..37 "#"
46 L_BRACK@[37; 38) "[" 46 L_BRACK@37..38 "["
47 PATH@[38; 39) 47 PATH@38..39
48 PATH_SEGMENT@[38; 39) 48 PATH_SEGMENT@38..39
49 NAME_REF@[38; 39) 49 NAME_REF@38..39
50 IDENT@[38; 39) "B" 50 IDENT@38..39 "B"
51 R_BRACK@[39; 40) "]" 51 R_BRACK@39..40 "]"
52 WHITESPACE@[40; 41) " " 52 WHITESPACE@40..41 " "
53 AMP@[41; 42) "&" 53 AMP@41..42 "&"
54 TUPLE_EXPR@[42; 44) 54 TUPLE_EXPR@42..44
55 L_PAREN@[42; 43) "(" 55 L_PAREN@42..43 "("
56 R_PAREN@[43; 44) ")" 56 R_PAREN@43..44 ")"
57 WHITESPACE@[44; 45) "\n" 57 WHITESPACE@44..45 "\n"
58 R_CURLY@[45; 46) "}" 58 R_CURLY@45..46 "}"
59 WHITESPACE@[46; 47) "\n" 59 WHITESPACE@46..47 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rast b/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rast
index 8a972cdb2..5630b20af 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rast
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 50) 1SOURCE_FILE@0..50
2 FN_DEF@[0; 24) 2 FN_DEF@0..24
3 ASYNC_KW@[0; 5) "async" 3 ASYNC_KW@0..5 "async"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 UNSAFE_KW@[6; 12) "unsafe" 5 UNSAFE_KW@6..12 "unsafe"
6 WHITESPACE@[12; 13) " " 6 WHITESPACE@12..13 " "
7 FN_KW@[13; 15) "fn" 7 FN_KW@13..15 "fn"
8 WHITESPACE@[15; 16) " " 8 WHITESPACE@15..16 " "
9 NAME@[16; 19) 9 NAME@16..19
10 IDENT@[16; 19) "foo" 10 IDENT@16..19 "foo"
11 PARAM_LIST@[19; 21) 11 PARAM_LIST@19..21
12 L_PAREN@[19; 20) "(" 12 L_PAREN@19..20 "("
13 R_PAREN@[20; 21) ")" 13 R_PAREN@20..21 ")"
14 WHITESPACE@[21; 22) " " 14 WHITESPACE@21..22 " "
15 BLOCK_EXPR@[22; 24) 15 BLOCK_EXPR@22..24
16 BLOCK@[22; 24) 16 BLOCK@22..24
17 L_CURLY@[22; 23) "{" 17 L_CURLY@22..23 "{"
18 R_CURLY@[23; 24) "}" 18 R_CURLY@23..24 "}"
19 WHITESPACE@[24; 25) "\n" 19 WHITESPACE@24..25 "\n"
20 FN_DEF@[25; 49) 20 FN_DEF@25..49
21 CONST_KW@[25; 30) "const" 21 CONST_KW@25..30 "const"
22 WHITESPACE@[30; 31) " " 22 WHITESPACE@30..31 " "
23 UNSAFE_KW@[31; 37) "unsafe" 23 UNSAFE_KW@31..37 "unsafe"
24 WHITESPACE@[37; 38) " " 24 WHITESPACE@37..38 " "
25 FN_KW@[38; 40) "fn" 25 FN_KW@38..40 "fn"
26 WHITESPACE@[40; 41) " " 26 WHITESPACE@40..41 " "
27 NAME@[41; 44) 27 NAME@41..44
28 IDENT@[41; 44) "bar" 28 IDENT@41..44 "bar"
29 PARAM_LIST@[44; 46) 29 PARAM_LIST@44..46
30 L_PAREN@[44; 45) "(" 30 L_PAREN@44..45 "("
31 R_PAREN@[45; 46) ")" 31 R_PAREN@45..46 ")"
32 WHITESPACE@[46; 47) " " 32 WHITESPACE@46..47 " "
33 BLOCK_EXPR@[47; 49) 33 BLOCK_EXPR@47..49
34 BLOCK@[47; 49) 34 BLOCK@47..49
35 L_CURLY@[47; 48) "{" 35 L_CURLY@47..48 "{"
36 R_CURLY@[48; 49) "}" 36 R_CURLY@48..49 "}"
37 WHITESPACE@[49; 50) "\n" 37 WHITESPACE@49..50 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rast
index 31481d2f9..4946ee050 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rast
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 33) 1SOURCE_FILE@0..33
2 FN_DEF@[0; 32) 2 FN_DEF@0..32
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 32) 11 BLOCK_EXPR@10..32
12 BLOCK@[10; 32) 12 BLOCK@10..32
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 30) 15 LET_STMT@16..30
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 MACRO_PAT@[20; 25) 18 MACRO_PAT@20..25
19 MACRO_CALL@[20; 25) 19 MACRO_CALL@20..25
20 PATH@[20; 21) 20 PATH@20..21
21 PATH_SEGMENT@[20; 21) 21 PATH_SEGMENT@20..21
22 NAME_REF@[20; 21) 22 NAME_REF@20..21
23 IDENT@[20; 21) "m" 23 IDENT@20..21 "m"
24 BANG@[21; 22) "!" 24 BANG@21..22 "!"
25 TOKEN_TREE@[22; 25) 25 TOKEN_TREE@22..25
26 L_PAREN@[22; 23) "(" 26 L_PAREN@22..23 "("
27 IDENT@[23; 24) "x" 27 IDENT@23..24 "x"
28 R_PAREN@[24; 25) ")" 28 R_PAREN@24..25 ")"
29 WHITESPACE@[25; 26) " " 29 WHITESPACE@25..26 " "
30 EQ@[26; 27) "=" 30 EQ@26..27 "="
31 WHITESPACE@[27; 28) " " 31 WHITESPACE@27..28 " "
32 LITERAL@[28; 29) 32 LITERAL@28..29
33 INT_NUMBER@[28; 29) "0" 33 INT_NUMBER@28..29 "0"
34 SEMICOLON@[29; 30) ";" 34 SEMICOLON@29..30 ";"
35 WHITESPACE@[30; 31) "\n" 35 WHITESPACE@30..31 "\n"
36 R_CURLY@[31; 32) "}" 36 R_CURLY@31..32 "}"
37 WHITESPACE@[32; 33) "\n" 37 WHITESPACE@32..33 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rast b/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rast
index 1f2690c00..18fdd9dc9 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rast
@@ -1,129 +1,129 @@
1SOURCE_FILE@[0; 135) 1SOURCE_FILE@0..135
2 FN_DEF@[0; 134) 2 FN_DEF@0..134
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 134) 11 BLOCK_EXPR@9..134
12 BLOCK@[9; 134) 12 BLOCK@9..134
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 21) 15 LET_STMT@15..21
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 BIND_PAT@[19; 20) 18 BIND_PAT@19..20
19 NAME@[19; 20) 19 NAME@19..20
20 IDENT@[19; 20) "a" 20 IDENT@19..20 "a"
21 SEMICOLON@[20; 21) ";" 21 SEMICOLON@20..21 ";"
22 WHITESPACE@[21; 26) "\n " 22 WHITESPACE@21..26 "\n "
23 LET_STMT@[26; 37) 23 LET_STMT@26..37
24 LET_KW@[26; 29) "let" 24 LET_KW@26..29 "let"
25 WHITESPACE@[29; 30) " " 25 WHITESPACE@29..30 " "
26 BIND_PAT@[30; 31) 26 BIND_PAT@30..31
27 NAME@[30; 31) 27 NAME@30..31
28 IDENT@[30; 31) "b" 28 IDENT@30..31 "b"
29 COLON@[31; 32) ":" 29 COLON@31..32 ":"
30 WHITESPACE@[32; 33) " " 30 WHITESPACE@32..33 " "
31 PATH_TYPE@[33; 36) 31 PATH_TYPE@33..36
32 PATH@[33; 36) 32 PATH@33..36
33 PATH_SEGMENT@[33; 36) 33 PATH_SEGMENT@33..36
34 NAME_REF@[33; 36) 34 NAME_REF@33..36
35 IDENT@[33; 36) "i32" 35 IDENT@33..36 "i32"
36 SEMICOLON@[36; 37) ";" 36 SEMICOLON@36..37 ";"
37 WHITESPACE@[37; 42) "\n " 37 WHITESPACE@37..42 "\n "
38 LET_STMT@[42; 53) 38 LET_STMT@42..53
39 LET_KW@[42; 45) "let" 39 LET_KW@42..45 "let"
40 WHITESPACE@[45; 46) " " 40 WHITESPACE@45..46 " "
41 BIND_PAT@[46; 47) 41 BIND_PAT@46..47
42 NAME@[46; 47) 42 NAME@46..47
43 IDENT@[46; 47) "c" 43 IDENT@46..47 "c"
44 WHITESPACE@[47; 48) " " 44 WHITESPACE@47..48 " "
45 EQ@[48; 49) "=" 45 EQ@48..49 "="
46 WHITESPACE@[49; 50) " " 46 WHITESPACE@49..50 " "
47 LITERAL@[50; 52) 47 LITERAL@50..52
48 INT_NUMBER@[50; 52) "92" 48 INT_NUMBER@50..52 "92"
49 SEMICOLON@[52; 53) ";" 49 SEMICOLON@52..53 ";"
50 WHITESPACE@[53; 58) "\n " 50 WHITESPACE@53..58 "\n "
51 LET_STMT@[58; 74) 51 LET_STMT@58..74
52 LET_KW@[58; 61) "let" 52 LET_KW@58..61 "let"
53 WHITESPACE@[61; 62) " " 53 WHITESPACE@61..62 " "
54 BIND_PAT@[62; 63) 54 BIND_PAT@62..63
55 NAME@[62; 63) 55 NAME@62..63
56 IDENT@[62; 63) "d" 56 IDENT@62..63 "d"
57 COLON@[63; 64) ":" 57 COLON@63..64 ":"
58 WHITESPACE@[64; 65) " " 58 WHITESPACE@64..65 " "
59 PATH_TYPE@[65; 68) 59 PATH_TYPE@65..68
60 PATH@[65; 68) 60 PATH@65..68
61 PATH_SEGMENT@[65; 68) 61 PATH_SEGMENT@65..68
62 NAME_REF@[65; 68) 62 NAME_REF@65..68
63 IDENT@[65; 68) "i32" 63 IDENT@65..68 "i32"
64 WHITESPACE@[68; 69) " " 64 WHITESPACE@68..69 " "
65 EQ@[69; 70) "=" 65 EQ@69..70 "="
66 WHITESPACE@[70; 71) " " 66 WHITESPACE@70..71 " "
67 LITERAL@[71; 73) 67 LITERAL@71..73
68 INT_NUMBER@[71; 73) "92" 68 INT_NUMBER@71..73 "92"
69 SEMICOLON@[73; 74) ";" 69 SEMICOLON@73..74 ";"
70 WHITESPACE@[74; 79) "\n " 70 WHITESPACE@74..79 "\n "
71 LET_STMT@[79; 88) 71 LET_STMT@79..88
72 LET_KW@[79; 82) "let" 72 LET_KW@79..82 "let"
73 WHITESPACE@[82; 83) " " 73 WHITESPACE@82..83 " "
74 BIND_PAT@[83; 84) 74 BIND_PAT@83..84
75 NAME@[83; 84) 75 NAME@83..84
76 IDENT@[83; 84) "e" 76 IDENT@83..84 "e"
77 COLON@[84; 85) ":" 77 COLON@84..85 ":"
78 WHITESPACE@[85; 86) " " 78 WHITESPACE@85..86 " "
79 NEVER_TYPE@[86; 87) 79 NEVER_TYPE@86..87
80 BANG@[86; 87) "!" 80 BANG@86..87 "!"
81 SEMICOLON@[87; 88) ";" 81 SEMICOLON@87..88 ";"
82 WHITESPACE@[88; 93) "\n " 82 WHITESPACE@88..93 "\n "
83 LET_STMT@[93; 107) 83 LET_STMT@93..107
84 LET_KW@[93; 96) "let" 84 LET_KW@93..96 "let"
85 WHITESPACE@[96; 97) " " 85 WHITESPACE@96..97 " "
86 PLACEHOLDER_PAT@[97; 98) 86 PLACEHOLDER_PAT@97..98
87 UNDERSCORE@[97; 98) "_" 87 UNDERSCORE@97..98 "_"
88 COLON@[98; 99) ":" 88 COLON@98..99 ":"
89 WHITESPACE@[99; 100) " " 89 WHITESPACE@99..100 " "
90 NEVER_TYPE@[100; 101) 90 NEVER_TYPE@100..101
91 BANG@[100; 101) "!" 91 BANG@100..101 "!"
92 WHITESPACE@[101; 102) " " 92 WHITESPACE@101..102 " "
93 EQ@[102; 103) "=" 93 EQ@102..103 "="
94 WHITESPACE@[103; 104) " " 94 WHITESPACE@103..104 " "
95 BLOCK_EXPR@[104; 106) 95 BLOCK_EXPR@104..106
96 BLOCK@[104; 106) 96 BLOCK@104..106
97 L_CURLY@[104; 105) "{" 97 L_CURLY@104..105 "{"
98 R_CURLY@[105; 106) "}" 98 R_CURLY@105..106 "}"
99 SEMICOLON@[106; 107) ";" 99 SEMICOLON@106..107 ";"
100 WHITESPACE@[107; 112) "\n " 100 WHITESPACE@107..112 "\n "
101 LET_STMT@[112; 132) 101 LET_STMT@112..132
102 LET_KW@[112; 115) "let" 102 LET_KW@112..115 "let"
103 WHITESPACE@[115; 116) " " 103 WHITESPACE@115..116 " "
104 BIND_PAT@[116; 117) 104 BIND_PAT@116..117
105 NAME@[116; 117) 105 NAME@116..117
106 IDENT@[116; 117) "f" 106 IDENT@116..117 "f"
107 WHITESPACE@[117; 118) " " 107 WHITESPACE@117..118 " "
108 EQ@[118; 119) "=" 108 EQ@118..119 "="
109 WHITESPACE@[119; 120) " " 109 WHITESPACE@119..120 " "
110 LAMBDA_EXPR@[120; 131) 110 LAMBDA_EXPR@120..131
111 ATTR@[120; 127) 111 ATTR@120..127
112 POUND@[120; 121) "#" 112 POUND@120..121 "#"
113 L_BRACK@[121; 122) "[" 113 L_BRACK@121..122 "["
114 PATH@[122; 126) 114 PATH@122..126
115 PATH_SEGMENT@[122; 126) 115 PATH_SEGMENT@122..126
116 NAME_REF@[122; 126) 116 NAME_REF@122..126
117 IDENT@[122; 126) "attr" 117 IDENT@122..126 "attr"
118 R_BRACK@[126; 127) "]" 118 R_BRACK@126..127 "]"
119 PARAM_LIST@[127; 129) 119 PARAM_LIST@127..129
120 PIPE@[127; 128) "|" 120 PIPE@127..128 "|"
121 PIPE@[128; 129) "|" 121 PIPE@128..129 "|"
122 BLOCK_EXPR@[129; 131) 122 BLOCK_EXPR@129..131
123 BLOCK@[129; 131) 123 BLOCK@129..131
124 L_CURLY@[129; 130) "{" 124 L_CURLY@129..130 "{"
125 R_CURLY@[130; 131) "}" 125 R_CURLY@130..131 "}"
126 SEMICOLON@[131; 132) ";" 126 SEMICOLON@131..132 ";"
127 WHITESPACE@[132; 133) "\n" 127 WHITESPACE@132..133 "\n"
128 R_CURLY@[133; 134) "}" 128 R_CURLY@133..134 "}"
129 WHITESPACE@[134; 135) "\n" 129 WHITESPACE@134..135 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rast
index b96991035..01fffd7b0 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rast
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 33) 1SOURCE_FILE@0..33
2 FN_DEF@[0; 32) 2 FN_DEF@0..32
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 32) 11 BLOCK_EXPR@9..32
12 BLOCK@[9; 32) 12 BLOCK@9..32
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 30) 15 LET_STMT@15..30
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PLACEHOLDER_PAT@[19; 20) 18 PLACEHOLDER_PAT@19..20
19 UNDERSCORE@[19; 20) "_" 19 UNDERSCORE@19..20 "_"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 EQ@[21; 22) "=" 21 EQ@21..22 "="
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 TRY_EXPR@[23; 29) 23 TRY_EXPR@23..29
24 TRY_KW@[23; 26) "try" 24 TRY_KW@23..26 "try"
25 WHITESPACE@[26; 27) " " 25 WHITESPACE@26..27 " "
26 BLOCK_EXPR@[27; 29) 26 BLOCK_EXPR@27..29
27 BLOCK@[27; 29) 27 BLOCK@27..29
28 L_CURLY@[27; 28) "{" 28 L_CURLY@27..28 "{"
29 R_CURLY@[28; 29) "}" 29 R_CURLY@28..29 "}"
30 SEMICOLON@[29; 30) ";" 30 SEMICOLON@29..30 ";"
31 WHITESPACE@[30; 31) "\n" 31 WHITESPACE@30..31 "\n"
32 R_CURLY@[31; 32) "}" 32 R_CURLY@31..32 "}"
33 WHITESPACE@[32; 33) "\n" 33 WHITESPACE@32..33 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rast
index ed3d8fb0b..4a1c2b3a4 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rast
@@ -1,31 +1,31 @@
1SOURCE_FILE@[0; 37) 1SOURCE_FILE@0..37
2 TYPE_ALIAS_DEF@[0; 36) 2 TYPE_ALIAS_DEF@0..36
3 EXISTENTIAL_KW@[0; 11) "existential" 3 EXISTENTIAL_KW@0..11 "existential"
4 WHITESPACE@[11; 12) " " 4 WHITESPACE@11..12 " "
5 TYPE_KW@[12; 16) "type" 5 TYPE_KW@12..16 "type"
6 WHITESPACE@[16; 17) " " 6 WHITESPACE@16..17 " "
7 NAME@[17; 20) 7 NAME@17..20
8 IDENT@[17; 20) "Foo" 8 IDENT@17..20 "Foo"
9 COLON@[20; 21) ":" 9 COLON@20..21 ":"
10 WHITESPACE@[21; 22) " " 10 WHITESPACE@21..22 " "
11 TYPE_BOUND_LIST@[22; 35) 11 TYPE_BOUND_LIST@22..35
12 TYPE_BOUND@[22; 35) 12 TYPE_BOUND@22..35
13 PATH_TYPE@[22; 35) 13 PATH_TYPE@22..35
14 PATH@[22; 35) 14 PATH@22..35
15 PATH_SEGMENT@[22; 35) 15 PATH_SEGMENT@22..35
16 NAME_REF@[22; 24) 16 NAME_REF@22..24
17 IDENT@[22; 24) "Fn" 17 IDENT@22..24 "Fn"
18 PARAM_LIST@[24; 26) 18 PARAM_LIST@24..26
19 L_PAREN@[24; 25) "(" 19 L_PAREN@24..25 "("
20 R_PAREN@[25; 26) ")" 20 R_PAREN@25..26 ")"
21 WHITESPACE@[26; 27) " " 21 WHITESPACE@26..27 " "
22 RET_TYPE@[27; 35) 22 RET_TYPE@27..35
23 THIN_ARROW@[27; 29) "->" 23 THIN_ARROW@27..29 "->"
24 WHITESPACE@[29; 30) " " 24 WHITESPACE@29..30 " "
25 PATH_TYPE@[30; 35) 25 PATH_TYPE@30..35
26 PATH@[30; 35) 26 PATH@30..35
27 PATH_SEGMENT@[30; 35) 27 PATH_SEGMENT@30..35
28 NAME_REF@[30; 35) 28 NAME_REF@30..35
29 IDENT@[30; 35) "usize" 29 IDENT@30..35 "usize"
30 SEMICOLON@[35; 36) ";" 30 SEMICOLON@35..36 ";"
31 WHITESPACE@[36; 37) "\n" 31 WHITESPACE@36..37 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rast
index c392a7d84..498b3121e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rast
@@ -1,90 +1,90 @@
1SOURCE_FILE@[0; 106) 1SOURCE_FILE@0..106
2 FN_DEF@[0; 105) 2 FN_DEF@0..105
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 105) 11 BLOCK_EXPR@9..105
12 BLOCK@[9; 105) 12 BLOCK@9..105
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 32) 15 LET_STMT@15..32
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 BIND_PAT@[19; 20) 18 BIND_PAT@19..20
19 NAME@[19; 20) 19 NAME@19..20
20 IDENT@[19; 20) "x" 20 IDENT@19..20 "x"
21 WHITESPACE@[20; 21) " " 21 WHITESPACE@20..21 " "
22 EQ@[21; 22) "=" 22 EQ@21..22 "="
23 WHITESPACE@[22; 23) " " 23 WHITESPACE@22..23 " "
24 BOX_EXPR@[23; 31) 24 BOX_EXPR@23..31
25 BOX_KW@[23; 26) "box" 25 BOX_KW@23..26 "box"
26 WHITESPACE@[26; 27) " " 26 WHITESPACE@26..27 " "
27 LITERAL@[27; 31) 27 LITERAL@27..31
28 INT_NUMBER@[27; 31) "1i32" 28 INT_NUMBER@27..31 "1i32"
29 SEMICOLON@[31; 32) ";" 29 SEMICOLON@31..32 ";"
30 WHITESPACE@[32; 37) "\n " 30 WHITESPACE@32..37 "\n "
31 LET_STMT@[37; 66) 31 LET_STMT@37..66
32 LET_KW@[37; 40) "let" 32 LET_KW@37..40 "let"
33 WHITESPACE@[40; 41) " " 33 WHITESPACE@40..41 " "
34 BIND_PAT@[41; 42) 34 BIND_PAT@41..42
35 NAME@[41; 42) 35 NAME@41..42
36 IDENT@[41; 42) "y" 36 IDENT@41..42 "y"
37 WHITESPACE@[42; 43) " " 37 WHITESPACE@42..43 " "
38 EQ@[43; 44) "=" 38 EQ@43..44 "="
39 WHITESPACE@[44; 45) " " 39 WHITESPACE@44..45 " "
40 TUPLE_EXPR@[45; 65) 40 TUPLE_EXPR@45..65
41 L_PAREN@[45; 46) "(" 41 L_PAREN@45..46 "("
42 BOX_EXPR@[46; 54) 42 BOX_EXPR@46..54
43 BOX_KW@[46; 49) "box" 43 BOX_KW@46..49 "box"
44 WHITESPACE@[49; 50) " " 44 WHITESPACE@49..50 " "
45 LITERAL@[50; 54) 45 LITERAL@50..54
46 INT_NUMBER@[50; 54) "1i32" 46 INT_NUMBER@50..54 "1i32"
47 COMMA@[54; 55) "," 47 COMMA@54..55 ","
48 WHITESPACE@[55; 56) " " 48 WHITESPACE@55..56 " "
49 BOX_EXPR@[56; 64) 49 BOX_EXPR@56..64
50 BOX_KW@[56; 59) "box" 50 BOX_KW@56..59 "box"
51 WHITESPACE@[59; 60) " " 51 WHITESPACE@59..60 " "
52 LITERAL@[60; 64) 52 LITERAL@60..64
53 INT_NUMBER@[60; 64) "2i32" 53 INT_NUMBER@60..64 "2i32"
54 R_PAREN@[64; 65) ")" 54 R_PAREN@64..65 ")"
55 SEMICOLON@[65; 66) ";" 55 SEMICOLON@65..66 ";"
56 WHITESPACE@[66; 71) "\n " 56 WHITESPACE@66..71 "\n "
57 LET_STMT@[71; 103) 57 LET_STMT@71..103
58 LET_KW@[71; 74) "let" 58 LET_KW@71..74 "let"
59 WHITESPACE@[74; 75) " " 59 WHITESPACE@74..75 " "
60 BIND_PAT@[75; 76) 60 BIND_PAT@75..76
61 NAME@[75; 76) 61 NAME@75..76
62 IDENT@[75; 76) "z" 62 IDENT@75..76 "z"
63 WHITESPACE@[76; 77) " " 63 WHITESPACE@76..77 " "
64 EQ@[77; 78) "=" 64 EQ@77..78 "="
65 WHITESPACE@[78; 79) " " 65 WHITESPACE@78..79 " "
66 CALL_EXPR@[79; 102) 66 CALL_EXPR@79..102
67 PATH_EXPR@[79; 82) 67 PATH_EXPR@79..82
68 PATH@[79; 82) 68 PATH@79..82
69 PATH_SEGMENT@[79; 82) 69 PATH_SEGMENT@79..82
70 NAME_REF@[79; 82) 70 NAME_REF@79..82
71 IDENT@[79; 82) "Foo" 71 IDENT@79..82 "Foo"
72 ARG_LIST@[82; 102) 72 ARG_LIST@82..102
73 L_PAREN@[82; 83) "(" 73 L_PAREN@82..83 "("
74 BOX_EXPR@[83; 91) 74 BOX_EXPR@83..91
75 BOX_KW@[83; 86) "box" 75 BOX_KW@83..86 "box"
76 WHITESPACE@[86; 87) " " 76 WHITESPACE@86..87 " "
77 LITERAL@[87; 91) 77 LITERAL@87..91
78 INT_NUMBER@[87; 91) "1i32" 78 INT_NUMBER@87..91 "1i32"
79 COMMA@[91; 92) "," 79 COMMA@91..92 ","
80 WHITESPACE@[92; 93) " " 80 WHITESPACE@92..93 " "
81 BOX_EXPR@[93; 101) 81 BOX_EXPR@93..101
82 BOX_KW@[93; 96) "box" 82 BOX_KW@93..96 "box"
83 WHITESPACE@[96; 97) " " 83 WHITESPACE@96..97 " "
84 LITERAL@[97; 101) 84 LITERAL@97..101
85 INT_NUMBER@[97; 101) "2i32" 85 INT_NUMBER@97..101 "2i32"
86 R_PAREN@[101; 102) ")" 86 R_PAREN@101..102 ")"
87 SEMICOLON@[102; 103) ";" 87 SEMICOLON@102..103 ";"
88 WHITESPACE@[103; 104) "\n" 88 WHITESPACE@103..104 "\n"
89 R_CURLY@[104; 105) "}" 89 R_CURLY@104..105 "}"
90 WHITESPACE@[105; 106) "\n" 90 WHITESPACE@105..106 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rast b/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rast
index cff03fcf3..db58a928e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rast
@@ -1,56 +1,56 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@0..69
2 IMPL_DEF@[0; 68) 2 IMPL_DEF@0..68
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "T" 9 IDENT@5..6 "T"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 FOR_KW@[7; 10) "for" 11 FOR_KW@7..10 "for"
12 WHITESPACE@[10; 11) " " 12 WHITESPACE@10..11 " "
13 PATH_TYPE@[11; 14) 13 PATH_TYPE@11..14
14 PATH@[11; 14) 14 PATH@11..14
15 PATH_SEGMENT@[11; 14) 15 PATH_SEGMENT@11..14
16 NAME_REF@[11; 14) 16 NAME_REF@11..14
17 IDENT@[11; 14) "Foo" 17 IDENT@11..14 "Foo"
18 WHITESPACE@[14; 15) " " 18 WHITESPACE@14..15 " "
19 ITEM_LIST@[15; 68) 19 ITEM_LIST@15..68
20 L_CURLY@[15; 16) "{" 20 L_CURLY@15..16 "{"
21 WHITESPACE@[16; 21) "\n " 21 WHITESPACE@16..21 "\n "
22 TYPE_ALIAS_DEF@[21; 42) 22 TYPE_ALIAS_DEF@21..42
23 DEFAULT_KW@[21; 28) "default" 23 DEFAULT_KW@21..28 "default"
24 WHITESPACE@[28; 29) " " 24 WHITESPACE@28..29 " "
25 TYPE_KW@[29; 33) "type" 25 TYPE_KW@29..33 "type"
26 WHITESPACE@[33; 34) " " 26 WHITESPACE@33..34 " "
27 NAME@[34; 35) 27 NAME@34..35
28 IDENT@[34; 35) "T" 28 IDENT@34..35 "T"
29 WHITESPACE@[35; 36) " " 29 WHITESPACE@35..36 " "
30 EQ@[36; 37) "=" 30 EQ@36..37 "="
31 WHITESPACE@[37; 38) " " 31 WHITESPACE@37..38 " "
32 PATH_TYPE@[38; 41) 32 PATH_TYPE@38..41
33 PATH@[38; 41) 33 PATH@38..41
34 PATH_SEGMENT@[38; 41) 34 PATH_SEGMENT@38..41
35 NAME_REF@[38; 41) 35 NAME_REF@38..41
36 IDENT@[38; 41) "Bar" 36 IDENT@38..41 "Bar"
37 SEMICOLON@[41; 42) ";" 37 SEMICOLON@41..42 ";"
38 WHITESPACE@[42; 47) "\n " 38 WHITESPACE@42..47 "\n "
39 FN_DEF@[47; 66) 39 FN_DEF@47..66
40 DEFAULT_KW@[47; 54) "default" 40 DEFAULT_KW@47..54 "default"
41 WHITESPACE@[54; 55) " " 41 WHITESPACE@54..55 " "
42 FN_KW@[55; 57) "fn" 42 FN_KW@55..57 "fn"
43 WHITESPACE@[57; 58) " " 43 WHITESPACE@57..58 " "
44 NAME@[58; 61) 44 NAME@58..61
45 IDENT@[58; 61) "foo" 45 IDENT@58..61 "foo"
46 PARAM_LIST@[61; 63) 46 PARAM_LIST@61..63
47 L_PAREN@[61; 62) "(" 47 L_PAREN@61..62 "("
48 R_PAREN@[62; 63) ")" 48 R_PAREN@62..63 ")"
49 WHITESPACE@[63; 64) " " 49 WHITESPACE@63..64 " "
50 BLOCK_EXPR@[64; 66) 50 BLOCK_EXPR@64..66
51 BLOCK@[64; 66) 51 BLOCK@64..66
52 L_CURLY@[64; 65) "{" 52 L_CURLY@64..65 "{"
53 R_CURLY@[65; 66) "}" 53 R_CURLY@65..66 "}"
54 WHITESPACE@[66; 67) "\n" 54 WHITESPACE@66..67 "\n"
55 R_CURLY@[67; 68) "}" 55 R_CURLY@67..68 "}"
56 WHITESPACE@[68; 69) "\n" 56 WHITESPACE@68..69 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast b/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast
index f66f32370..4ca554ef8 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast
@@ -1,64 +1,64 @@
1SOURCE_FILE@[0; 111) 1SOURCE_FILE@0..111
2 FN_DEF@[0; 110) 2 FN_DEF@0..110
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 18) 5 NAME@3..18
6 IDENT@[3; 18) "simple_function" 6 IDENT@3..18 "simple_function"
7 PARAM_LIST@[18; 20) 7 PARAM_LIST@18..20
8 L_PAREN@[18; 19) "(" 8 L_PAREN@18..19 "("
9 R_PAREN@[19; 20) ")" 9 R_PAREN@19..20 ")"
10 WHITESPACE@[20; 21) " " 10 WHITESPACE@20..21 " "
11 BLOCK_EXPR@[21; 110) 11 BLOCK_EXPR@21..110
12 BLOCK@[21; 110) 12 BLOCK@21..110
13 L_CURLY@[21; 22) "{" 13 L_CURLY@21..22 "{"
14 WHITESPACE@[22; 27) "\n " 14 WHITESPACE@22..27 "\n "
15 ENUM_DEF@[27; 75) 15 ENUM_DEF@27..75
16 ENUM_KW@[27; 31) "enum" 16 ENUM_KW@27..31 "enum"
17 WHITESPACE@[31; 32) " " 17 WHITESPACE@31..32 " "
18 NAME@[32; 41) 18 NAME@32..41
19 IDENT@[32; 41) "LocalEnum" 19 IDENT@32..41 "LocalEnum"
20 WHITESPACE@[41; 42) " " 20 WHITESPACE@41..42 " "
21 ENUM_VARIANT_LIST@[42; 75) 21 ENUM_VARIANT_LIST@42..75
22 L_CURLY@[42; 43) "{" 22 L_CURLY@42..43 "{"
23 WHITESPACE@[43; 52) "\n " 23 WHITESPACE@43..52 "\n "
24 ENUM_VARIANT@[52; 55) 24 ENUM_VARIANT@52..55
25 NAME@[52; 55) 25 NAME@52..55
26 IDENT@[52; 55) "One" 26 IDENT@52..55 "One"
27 COMMA@[55; 56) "," 27 COMMA@55..56 ","
28 WHITESPACE@[56; 65) "\n " 28 WHITESPACE@56..65 "\n "
29 ENUM_VARIANT@[65; 68) 29 ENUM_VARIANT@65..68
30 NAME@[65; 68) 30 NAME@65..68
31 IDENT@[65; 68) "Two" 31 IDENT@65..68 "Two"
32 COMMA@[68; 69) "," 32 COMMA@68..69 ","
33 WHITESPACE@[69; 74) "\n " 33 WHITESPACE@69..74 "\n "
34 R_CURLY@[74; 75) "}" 34 R_CURLY@74..75 "}"
35 SEMICOLON@[75; 76) ";" 35 SEMICOLON@75..76 ";"
36 WHITESPACE@[76; 81) "\n " 36 WHITESPACE@76..81 "\n "
37 FN_DEF@[81; 90) 37 FN_DEF@81..90
38 FN_KW@[81; 83) "fn" 38 FN_KW@81..83 "fn"
39 WHITESPACE@[83; 84) " " 39 WHITESPACE@83..84 " "
40 NAME@[84; 85) 40 NAME@84..85
41 IDENT@[84; 85) "f" 41 IDENT@84..85 "f"
42 PARAM_LIST@[85; 87) 42 PARAM_LIST@85..87
43 L_PAREN@[85; 86) "(" 43 L_PAREN@85..86 "("
44 R_PAREN@[86; 87) ")" 44 R_PAREN@86..87 ")"
45 WHITESPACE@[87; 88) " " 45 WHITESPACE@87..88 " "
46 BLOCK_EXPR@[88; 90) 46 BLOCK_EXPR@88..90
47 BLOCK@[88; 90) 47 BLOCK@88..90
48 L_CURLY@[88; 89) "{" 48 L_CURLY@88..89 "{"
49 R_CURLY@[89; 90) "}" 49 R_CURLY@89..90 "}"
50 SEMICOLON@[90; 91) ";" 50 SEMICOLON@90..91 ";"
51 WHITESPACE@[91; 96) "\n " 51 WHITESPACE@91..96 "\n "
52 STRUCT_DEF@[96; 107) 52 STRUCT_DEF@96..107
53 STRUCT_KW@[96; 102) "struct" 53 STRUCT_KW@96..102 "struct"
54 WHITESPACE@[102; 103) " " 54 WHITESPACE@102..103 " "
55 NAME@[103; 104) 55 NAME@103..104
56 IDENT@[103; 104) "S" 56 IDENT@103..104 "S"
57 WHITESPACE@[104; 105) " " 57 WHITESPACE@104..105 " "
58 RECORD_FIELD_DEF_LIST@[105; 107) 58 RECORD_FIELD_DEF_LIST@105..107
59 L_CURLY@[105; 106) "{" 59 L_CURLY@105..106 "{"
60 R_CURLY@[106; 107) "}" 60 R_CURLY@106..107 "}"
61 SEMICOLON@[107; 108) ";" 61 SEMICOLON@107..108 ";"
62 WHITESPACE@[108; 109) "\n" 62 WHITESPACE@108..109 "\n"
63 R_CURLY@[109; 110) "}" 63 R_CURLY@109..110 "}"
64 WHITESPACE@[110; 111) "\n" 64 WHITESPACE@110..111 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rast
index 4946e6325..7fa3b9f32 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rast
@@ -1,70 +1,70 @@
1SOURCE_FILE@[0; 67) 1SOURCE_FILE@0..67
2 FN_DEF@[0; 66) 2 FN_DEF@0..66
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 66) 11 BLOCK_EXPR@9..66
12 BLOCK@[9; 66) 12 BLOCK@9..66
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 23) 15 EXPR_STMT@15..23
16 AWAIT_EXPR@[15; 22) 16 AWAIT_EXPR@15..22
17 PATH_EXPR@[15; 16) 17 PATH_EXPR@15..16
18 PATH@[15; 16) 18 PATH@15..16
19 PATH_SEGMENT@[15; 16) 19 PATH_SEGMENT@15..16
20 NAME_REF@[15; 16) 20 NAME_REF@15..16
21 IDENT@[15; 16) "x" 21 IDENT@15..16 "x"
22 DOT@[16; 17) "." 22 DOT@16..17 "."
23 AWAIT_KW@[17; 22) "await" 23 AWAIT_KW@17..22 "await"
24 SEMICOLON@[22; 23) ";" 24 SEMICOLON@22..23 ";"
25 WHITESPACE@[23; 28) "\n " 25 WHITESPACE@23..28 "\n "
26 EXPR_STMT@[28; 38) 26 EXPR_STMT@28..38
27 AWAIT_EXPR@[28; 37) 27 AWAIT_EXPR@28..37
28 FIELD_EXPR@[28; 31) 28 FIELD_EXPR@28..31
29 PATH_EXPR@[28; 29) 29 PATH_EXPR@28..29
30 PATH@[28; 29) 30 PATH@28..29
31 PATH_SEGMENT@[28; 29) 31 PATH_SEGMENT@28..29
32 NAME_REF@[28; 29) 32 NAME_REF@28..29
33 IDENT@[28; 29) "x" 33 IDENT@28..29 "x"
34 DOT@[29; 30) "." 34 DOT@29..30 "."
35 NAME_REF@[30; 31) 35 NAME_REF@30..31
36 INT_NUMBER@[30; 31) "0" 36 INT_NUMBER@30..31 "0"
37 DOT@[31; 32) "." 37 DOT@31..32 "."
38 AWAIT_KW@[32; 37) "await" 38 AWAIT_KW@32..37 "await"
39 SEMICOLON@[37; 38) ";" 39 SEMICOLON@37..38 ";"
40 WHITESPACE@[38; 43) "\n " 40 WHITESPACE@38..43 "\n "
41 EXPR_STMT@[43; 64) 41 EXPR_STMT@43..64
42 METHOD_CALL_EXPR@[43; 63) 42 METHOD_CALL_EXPR@43..63
43 TRY_EXPR@[43; 55) 43 TRY_EXPR@43..55
44 AWAIT_EXPR@[43; 54) 44 AWAIT_EXPR@43..54
45 CALL_EXPR@[43; 48) 45 CALL_EXPR@43..48
46 FIELD_EXPR@[43; 46) 46 FIELD_EXPR@43..46
47 PATH_EXPR@[43; 44) 47 PATH_EXPR@43..44
48 PATH@[43; 44) 48 PATH@43..44
49 PATH_SEGMENT@[43; 44) 49 PATH_SEGMENT@43..44
50 NAME_REF@[43; 44) 50 NAME_REF@43..44
51 IDENT@[43; 44) "x" 51 IDENT@43..44 "x"
52 DOT@[44; 45) "." 52 DOT@44..45 "."
53 NAME_REF@[45; 46) 53 NAME_REF@45..46
54 INT_NUMBER@[45; 46) "0" 54 INT_NUMBER@45..46 "0"
55 ARG_LIST@[46; 48) 55 ARG_LIST@46..48
56 L_PAREN@[46; 47) "(" 56 L_PAREN@46..47 "("
57 R_PAREN@[47; 48) ")" 57 R_PAREN@47..48 ")"
58 DOT@[48; 49) "." 58 DOT@48..49 "."
59 AWAIT_KW@[49; 54) "await" 59 AWAIT_KW@49..54 "await"
60 QUESTION@[54; 55) "?" 60 QUESTION@54..55 "?"
61 DOT@[55; 56) "." 61 DOT@55..56 "."
62 NAME_REF@[56; 61) 62 NAME_REF@56..61
63 IDENT@[56; 61) "hello" 63 IDENT@56..61 "hello"
64 ARG_LIST@[61; 63) 64 ARG_LIST@61..63
65 L_PAREN@[61; 62) "(" 65 L_PAREN@61..62 "("
66 R_PAREN@[62; 63) ")" 66 R_PAREN@62..63 ")"
67 SEMICOLON@[63; 64) ";" 67 SEMICOLON@63..64 ";"
68 WHITESPACE@[64; 65) "\n" 68 WHITESPACE@64..65 "\n"
69 R_CURLY@[65; 66) "}" 69 R_CURLY@65..66 "}"
70 WHITESPACE@[66; 67) "\n" 70 WHITESPACE@66..67 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast b/crates/ra_syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast
index d18096b47..a32484f2c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast
@@ -1,56 +1,56 @@
1SOURCE_FILE@[0; 59) 1SOURCE_FILE@0..59
2 FN_DEF@[0; 58) 2 FN_DEF@0..58
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 12) 5 NAME@3..12
6 IDENT@[3; 12) "print_all" 6 IDENT@3..12 "print_all"
7 TYPE_PARAM_LIST@[12; 40) 7 TYPE_PARAM_LIST@12..40
8 L_ANGLE@[12; 13) "<" 8 L_ANGLE@12..13 "<"
9 TYPE_PARAM@[13; 39) 9 TYPE_PARAM@13..39
10 NAME@[13; 14) 10 NAME@13..14
11 IDENT@[13; 14) "T" 11 IDENT@13..14 "T"
12 COLON@[14; 15) ":" 12 COLON@14..15 ":"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 TYPE_BOUND_LIST@[16; 39) 14 TYPE_BOUND_LIST@16..39
15 TYPE_BOUND@[16; 39) 15 TYPE_BOUND@16..39
16 PATH_TYPE@[16; 39) 16 PATH_TYPE@16..39
17 PATH@[16; 39) 17 PATH@16..39
18 PATH_SEGMENT@[16; 39) 18 PATH_SEGMENT@16..39
19 NAME_REF@[16; 24) 19 NAME_REF@16..24
20 IDENT@[16; 24) "Iterator" 20 IDENT@16..24 "Iterator"
21 TYPE_ARG_LIST@[24; 39) 21 TYPE_ARG_LIST@24..39
22 L_ANGLE@[24; 25) "<" 22 L_ANGLE@24..25 "<"
23 ASSOC_TYPE_ARG@[25; 38) 23 ASSOC_TYPE_ARG@25..38
24 NAME_REF@[25; 29) 24 NAME_REF@25..29
25 IDENT@[25; 29) "Item" 25 IDENT@25..29 "Item"
26 COLON@[29; 30) ":" 26 COLON@29..30 ":"
27 WHITESPACE@[30; 31) " " 27 WHITESPACE@30..31 " "
28 TYPE_BOUND_LIST@[31; 38) 28 TYPE_BOUND_LIST@31..38
29 TYPE_BOUND@[31; 38) 29 TYPE_BOUND@31..38
30 PATH_TYPE@[31; 38) 30 PATH_TYPE@31..38
31 PATH@[31; 38) 31 PATH@31..38
32 PATH_SEGMENT@[31; 38) 32 PATH_SEGMENT@31..38
33 NAME_REF@[31; 38) 33 NAME_REF@31..38
34 IDENT@[31; 38) "Display" 34 IDENT@31..38 "Display"
35 R_ANGLE@[38; 39) ">" 35 R_ANGLE@38..39 ">"
36 R_ANGLE@[39; 40) ">" 36 R_ANGLE@39..40 ">"
37 PARAM_LIST@[40; 55) 37 PARAM_LIST@40..55
38 L_PAREN@[40; 41) "(" 38 L_PAREN@40..41 "("
39 PARAM@[41; 54) 39 PARAM@41..54
40 BIND_PAT@[41; 51) 40 BIND_PAT@41..51
41 NAME@[41; 51) 41 NAME@41..51
42 IDENT@[41; 51) "printables" 42 IDENT@41..51 "printables"
43 COLON@[51; 52) ":" 43 COLON@51..52 ":"
44 WHITESPACE@[52; 53) " " 44 WHITESPACE@52..53 " "
45 PATH_TYPE@[53; 54) 45 PATH_TYPE@53..54
46 PATH@[53; 54) 46 PATH@53..54
47 PATH_SEGMENT@[53; 54) 47 PATH_SEGMENT@53..54
48 NAME_REF@[53; 54) 48 NAME_REF@53..54
49 IDENT@[53; 54) "T" 49 IDENT@53..54 "T"
50 R_PAREN@[54; 55) ")" 50 R_PAREN@54..55 ")"
51 WHITESPACE@[55; 56) " " 51 WHITESPACE@55..56 " "
52 BLOCK_EXPR@[56; 58) 52 BLOCK_EXPR@56..58
53 BLOCK@[56; 58) 53 BLOCK@56..58
54 L_CURLY@[56; 57) "{" 54 L_CURLY@56..57 "{"
55 R_CURLY@[57; 58) "}" 55 R_CURLY@57..58 "}"
56 WHITESPACE@[58; 59) "\n" 56 WHITESPACE@58..59 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0138_expression_after_block.rast b/crates/ra_syntax/test_data/parser/inline/ok/0138_expression_after_block.rast
index ca1d69f64..9017236cc 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0138_expression_after_block.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0138_expression_after_block.rast
@@ -1,66 +1,66 @@
1SOURCE_FILE@[0; 52) 1SOURCE_FILE@0..52
2 FN_DEF@[0; 51) 2 FN_DEF@0..51
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 51) 11 BLOCK_EXPR@9..51
12 BLOCK@[9; 51) 12 BLOCK@9..51
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 14) "\n " 14 WHITESPACE@10..14 "\n "
15 LET_STMT@[14; 34) 15 LET_STMT@14..34
16 LET_KW@[14; 17) "let" 16 LET_KW@14..17 "let"
17 WHITESPACE@[17; 18) " " 17 WHITESPACE@17..18 " "
18 BIND_PAT@[18; 23) 18 BIND_PAT@18..23
19 MUT_KW@[18; 21) "mut" 19 MUT_KW@18..21 "mut"
20 WHITESPACE@[21; 22) " " 20 WHITESPACE@21..22 " "
21 NAME@[22; 23) 21 NAME@22..23
22 IDENT@[22; 23) "p" 22 IDENT@22..23 "p"
23 WHITESPACE@[23; 24) " " 23 WHITESPACE@23..24 " "
24 EQ@[24; 25) "=" 24 EQ@24..25 "="
25 WHITESPACE@[25; 26) " " 25 WHITESPACE@25..26 " "
26 RECORD_LIT@[26; 33) 26 RECORD_LIT@26..33
27 PATH@[26; 27) 27 PATH@26..27
28 PATH_SEGMENT@[26; 27) 28 PATH_SEGMENT@26..27
29 NAME_REF@[26; 27) 29 NAME_REF@26..27
30 IDENT@[26; 27) "F" 30 IDENT@26..27 "F"
31 RECORD_FIELD_LIST@[27; 33) 31 RECORD_FIELD_LIST@27..33
32 L_CURLY@[27; 28) "{" 32 L_CURLY@27..28 "{"
33 RECORD_FIELD@[28; 32) 33 RECORD_FIELD@28..32
34 NAME_REF@[28; 29) 34 NAME_REF@28..29
35 IDENT@[28; 29) "x" 35 IDENT@28..29 "x"
36 COLON@[29; 30) ":" 36 COLON@29..30 ":"
37 WHITESPACE@[30; 31) " " 37 WHITESPACE@30..31 " "
38 LITERAL@[31; 32) 38 LITERAL@31..32
39 INT_NUMBER@[31; 32) "5" 39 INT_NUMBER@31..32 "5"
40 R_CURLY@[32; 33) "}" 40 R_CURLY@32..33 "}"
41 SEMICOLON@[33; 34) ";" 41 SEMICOLON@33..34 ";"
42 WHITESPACE@[34; 38) "\n " 42 WHITESPACE@34..38 "\n "
43 EXPR_STMT@[38; 49) 43 EXPR_STMT@38..49
44 BIN_EXPR@[38; 48) 44 BIN_EXPR@38..48
45 FIELD_EXPR@[38; 43) 45 FIELD_EXPR@38..43
46 BLOCK_EXPR@[38; 41) 46 BLOCK_EXPR@38..41
47 BLOCK@[38; 41) 47 BLOCK@38..41
48 L_CURLY@[38; 39) "{" 48 L_CURLY@38..39 "{"
49 PATH_EXPR@[39; 40) 49 PATH_EXPR@39..40
50 PATH@[39; 40) 50 PATH@39..40
51 PATH_SEGMENT@[39; 40) 51 PATH_SEGMENT@39..40
52 NAME_REF@[39; 40) 52 NAME_REF@39..40
53 IDENT@[39; 40) "p" 53 IDENT@39..40 "p"
54 R_CURLY@[40; 41) "}" 54 R_CURLY@40..41 "}"
55 DOT@[41; 42) "." 55 DOT@41..42 "."
56 NAME_REF@[42; 43) 56 NAME_REF@42..43
57 IDENT@[42; 43) "x" 57 IDENT@42..43 "x"
58 WHITESPACE@[43; 44) " " 58 WHITESPACE@43..44 " "
59 EQ@[44; 45) "=" 59 EQ@44..45 "="
60 WHITESPACE@[45; 46) " " 60 WHITESPACE@45..46 " "
61 LITERAL@[46; 48) 61 LITERAL@46..48
62 INT_NUMBER@[46; 48) "10" 62 INT_NUMBER@46..48 "10"
63 SEMICOLON@[48; 49) ";" 63 SEMICOLON@48..49 ";"
64 WHITESPACE@[49; 50) "\n" 64 WHITESPACE@49..50 "\n"
65 R_CURLY@[50; 51) "}" 65 R_CURLY@50..51 "}"
66 WHITESPACE@[51; 52) "\n" 66 WHITESPACE@51..52 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast
index e627b9746..2cb5b52f4 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@0..26
2 FN_DEF@[0; 25) 2 FN_DEF@0..25
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "f" 6 IDENT@3..4 "f"
7 PARAM_LIST@[4; 22) 7 PARAM_LIST@4..22
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 ATTR@[5; 16) 9 ATTR@5..16
10 POUND@[5; 6) "#" 10 POUND@5..6 "#"
11 L_BRACK@[6; 7) "[" 11 L_BRACK@6..7 "["
12 PATH@[7; 15) 12 PATH@7..15
13 PATH_SEGMENT@[7; 15) 13 PATH_SEGMENT@7..15
14 NAME_REF@[7; 15) 14 NAME_REF@7..15
15 IDENT@[7; 15) "must_use" 15 IDENT@7..15 "must_use"
16 R_BRACK@[15; 16) "]" 16 R_BRACK@15..16 "]"
17 WHITESPACE@[16; 17) " " 17 WHITESPACE@16..17 " "
18 SELF_PARAM@[17; 21) 18 SELF_PARAM@17..21
19 SELF_KW@[17; 21) "self" 19 SELF_KW@17..21 "self"
20 R_PAREN@[21; 22) ")" 20 R_PAREN@21..22 ")"
21 WHITESPACE@[22; 23) " " 21 WHITESPACE@22..23 " "
22 BLOCK_EXPR@[23; 25) 22 BLOCK_EXPR@23..25
23 BLOCK@[23; 25) 23 BLOCK@23..25
24 L_CURLY@[23; 24) "{" 24 L_CURLY@23..24 "{"
25 R_CURLY@[24; 25) "}" 25 R_CURLY@24..25 "}"
26 WHITESPACE@[25; 26) "\n" 26 WHITESPACE@25..26 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast
index cf202c94b..ac3f4de26 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 28) 1SOURCE_FILE@0..28
2 FN_DEF@[0; 27) 2 FN_DEF@0..27
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "f" 6 IDENT@3..4 "f"
7 PARAM_LIST@[4; 24) 7 PARAM_LIST@4..24
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 ATTR@[5; 13) 9 ATTR@5..13
10 POUND@[5; 6) "#" 10 POUND@5..6 "#"
11 L_BRACK@[6; 7) "[" 11 L_BRACK@6..7 "["
12 PATH@[7; 12) 12 PATH@7..12
13 PATH_SEGMENT@[7; 12) 13 PATH_SEGMENT@7..12
14 NAME_REF@[7; 12) 14 NAME_REF@7..12
15 IDENT@[7; 12) "attr1" 15 IDENT@7..12 "attr1"
16 R_BRACK@[12; 13) "]" 16 R_BRACK@12..13 "]"
17 WHITESPACE@[13; 14) " " 17 WHITESPACE@13..14 " "
18 PARAM@[14; 23) 18 PARAM@14..23
19 BIND_PAT@[14; 17) 19 BIND_PAT@14..17
20 NAME@[14; 17) 20 NAME@14..17
21 IDENT@[14; 17) "pat" 21 IDENT@14..17 "pat"
22 COLON@[17; 18) ":" 22 COLON@17..18 ":"
23 WHITESPACE@[18; 19) " " 23 WHITESPACE@18..19 " "
24 PATH_TYPE@[19; 23) 24 PATH_TYPE@19..23
25 PATH@[19; 23) 25 PATH@19..23
26 PATH_SEGMENT@[19; 23) 26 PATH_SEGMENT@19..23
27 NAME_REF@[19; 23) 27 NAME_REF@19..23
28 IDENT@[19; 23) "Type" 28 IDENT@19..23 "Type"
29 R_PAREN@[23; 24) ")" 29 R_PAREN@23..24 ")"
30 WHITESPACE@[24; 25) " " 30 WHITESPACE@24..25 " "
31 BLOCK_EXPR@[25; 27) 31 BLOCK_EXPR@25..27
32 BLOCK@[25; 27) 32 BLOCK@25..27
33 L_CURLY@[25; 26) "{" 33 L_CURLY@25..26 "{"
34 R_CURLY@[26; 27) "}" 34 R_CURLY@26..27 "}"
35 WHITESPACE@[27; 28) "\n" 35 WHITESPACE@27..28 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0142_for_range_from.rast b/crates/ra_syntax/test_data/parser/inline/ok/0142_for_range_from.rast
index 6d01140d2..8d4919cbd 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0142_for_range_from.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0142_for_range_from.rast
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 51) 1SOURCE_FILE@0..51
2 FN_DEF@[0; 50) 2 FN_DEF@0..50
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 50) 11 BLOCK_EXPR@9..50
12 BLOCK@[9; 50) 12 BLOCK@9..50
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 14) "\n " 14 WHITESPACE@10..14 "\n "
15 FOR_EXPR@[14; 48) 15 FOR_EXPR@14..48
16 FOR_KW@[14; 17) "for" 16 FOR_KW@14..17 "for"
17 WHITESPACE@[17; 18) " " 17 WHITESPACE@17..18 " "
18 BIND_PAT@[18; 19) 18 BIND_PAT@18..19
19 NAME@[18; 19) 19 NAME@18..19
20 IDENT@[18; 19) "x" 20 IDENT@18..19 "x"
21 WHITESPACE@[19; 20) " " 21 WHITESPACE@19..20 " "
22 IN_KW@[20; 22) "in" 22 IN_KW@20..22 "in"
23 WHITESPACE@[22; 23) " " 23 WHITESPACE@22..23 " "
24 RANGE_EXPR@[23; 27) 24 RANGE_EXPR@23..27
25 LITERAL@[23; 24) 25 LITERAL@23..24
26 INT_NUMBER@[23; 24) "0" 26 INT_NUMBER@23..24 "0"
27 WHITESPACE@[24; 25) " " 27 WHITESPACE@24..25 " "
28 DOT2@[25; 27) ".." 28 DOT2@25..27 ".."
29 WHITESPACE@[27; 28) " " 29 WHITESPACE@27..28 " "
30 BLOCK_EXPR@[28; 48) 30 BLOCK_EXPR@28..48
31 BLOCK@[28; 48) 31 BLOCK@28..48
32 L_CURLY@[28; 29) "{" 32 L_CURLY@28..29 "{"
33 WHITESPACE@[29; 37) "\n " 33 WHITESPACE@29..37 "\n "
34 EXPR_STMT@[37; 43) 34 EXPR_STMT@37..43
35 BREAK_EXPR@[37; 42) 35 BREAK_EXPR@37..42
36 BREAK_KW@[37; 42) "break" 36 BREAK_KW@37..42 "break"
37 SEMICOLON@[42; 43) ";" 37 SEMICOLON@42..43 ";"
38 WHITESPACE@[43; 47) "\n " 38 WHITESPACE@43..47 "\n "
39 R_CURLY@[47; 48) "}" 39 R_CURLY@47..48 "}"
40 WHITESPACE@[48; 49) "\n" 40 WHITESPACE@48..49 "\n"
41 R_CURLY@[49; 50) "}" 41 R_CURLY@49..50 "}"
42 WHITESPACE@[50; 51) "\n" 42 WHITESPACE@50..51 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0143_box_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0143_box_pat.rast
index 1d245f8f3..2c933fa76 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0143_box_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0143_box_pat.rast
@@ -1,111 +1,111 @@
1SOURCE_FILE@[0; 118) 1SOURCE_FILE@0..118
2 FN_DEF@[0; 117) 2 FN_DEF@0..117
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 117) 11 BLOCK_EXPR@10..117
12 BLOCK@[10; 117) 12 BLOCK@10..117
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 31) 15 LET_STMT@16..31
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 BOX_PAT@[20; 25) 18 BOX_PAT@20..25
19 BOX_KW@[20; 23) "box" 19 BOX_KW@20..23 "box"
20 WHITESPACE@[23; 24) " " 20 WHITESPACE@23..24 " "
21 BIND_PAT@[24; 25) 21 BIND_PAT@24..25
22 NAME@[24; 25) 22 NAME@24..25
23 IDENT@[24; 25) "i" 23 IDENT@24..25 "i"
24 WHITESPACE@[25; 26) " " 24 WHITESPACE@25..26 " "
25 EQ@[26; 27) "=" 25 EQ@26..27 "="
26 WHITESPACE@[27; 28) " " 26 WHITESPACE@27..28 " "
27 TUPLE_EXPR@[28; 30) 27 TUPLE_EXPR@28..30
28 L_PAREN@[28; 29) "(" 28 L_PAREN@28..29 "("
29 R_PAREN@[29; 30) ")" 29 R_PAREN@29..30 ")"
30 SEMICOLON@[30; 31) ";" 30 SEMICOLON@30..31 ";"
31 WHITESPACE@[31; 36) "\n " 31 WHITESPACE@31..36 "\n "
32 LET_STMT@[36; 87) 32 LET_STMT@36..87
33 LET_KW@[36; 39) "let" 33 LET_KW@36..39 "let"
34 WHITESPACE@[39; 40) " " 34 WHITESPACE@39..40 " "
35 BOX_PAT@[40; 81) 35 BOX_PAT@40..81
36 BOX_KW@[40; 43) "box" 36 BOX_KW@40..43 "box"
37 WHITESPACE@[43; 44) " " 37 WHITESPACE@43..44 " "
38 RECORD_PAT@[44; 81) 38 RECORD_PAT@44..81
39 PATH@[44; 49) 39 PATH@44..49
40 PATH_SEGMENT@[44; 49) 40 PATH_SEGMENT@44..49
41 NAME_REF@[44; 49) 41 NAME_REF@44..49
42 IDENT@[44; 49) "Outer" 42 IDENT@44..49 "Outer"
43 WHITESPACE@[49; 50) " " 43 WHITESPACE@49..50 " "
44 RECORD_FIELD_PAT_LIST@[50; 81) 44 RECORD_FIELD_PAT_LIST@50..81
45 L_CURLY@[50; 51) "{" 45 L_CURLY@50..51 "{"
46 WHITESPACE@[51; 52) " " 46 WHITESPACE@51..52 " "
47 RECORD_FIELD_PAT@[52; 57) 47 RECORD_FIELD_PAT@52..57
48 BOX_PAT@[52; 57) 48 BOX_PAT@52..57
49 BOX_KW@[52; 55) "box" 49 BOX_KW@52..55 "box"
50 WHITESPACE@[55; 56) " " 50 WHITESPACE@55..56 " "
51 BIND_PAT@[56; 57) 51 BIND_PAT@56..57
52 NAME@[56; 57) 52 NAME@56..57
53 IDENT@[56; 57) "i" 53 IDENT@56..57 "i"
54 COMMA@[57; 58) "," 54 COMMA@57..58 ","
55 WHITESPACE@[58; 59) " " 55 WHITESPACE@58..59 " "
56 RECORD_FIELD_PAT@[59; 79) 56 RECORD_FIELD_PAT@59..79
57 NAME_REF@[59; 60) 57 NAME_REF@59..60
58 IDENT@[59; 60) "j" 58 IDENT@59..60 "j"
59 COLON@[60; 61) ":" 59 COLON@60..61 ":"
60 WHITESPACE@[61; 62) " " 60 WHITESPACE@61..62 " "
61 BOX_PAT@[62; 79) 61 BOX_PAT@62..79
62 BOX_KW@[62; 65) "box" 62 BOX_KW@62..65 "box"
63 WHITESPACE@[65; 66) " " 63 WHITESPACE@65..66 " "
64 TUPLE_STRUCT_PAT@[66; 79) 64 TUPLE_STRUCT_PAT@66..79
65 PATH@[66; 71) 65 PATH@66..71
66 PATH_SEGMENT@[66; 71) 66 PATH_SEGMENT@66..71
67 NAME_REF@[66; 71) 67 NAME_REF@66..71
68 IDENT@[66; 71) "Inner" 68 IDENT@66..71 "Inner"
69 L_PAREN@[71; 72) "(" 69 L_PAREN@71..72 "("
70 BOX_PAT@[72; 78) 70 BOX_PAT@72..78
71 BOX_KW@[72; 75) "box" 71 BOX_KW@72..75 "box"
72 WHITESPACE@[75; 76) " " 72 WHITESPACE@75..76 " "
73 REF_PAT@[76; 78) 73 REF_PAT@76..78
74 AMP@[76; 77) "&" 74 AMP@76..77 "&"
75 BIND_PAT@[77; 78) 75 BIND_PAT@77..78
76 NAME@[77; 78) 76 NAME@77..78
77 IDENT@[77; 78) "x" 77 IDENT@77..78 "x"
78 R_PAREN@[78; 79) ")" 78 R_PAREN@78..79 ")"
79 WHITESPACE@[79; 80) " " 79 WHITESPACE@79..80 " "
80 R_CURLY@[80; 81) "}" 80 R_CURLY@80..81 "}"
81 WHITESPACE@[81; 82) " " 81 WHITESPACE@81..82 " "
82 EQ@[82; 83) "=" 82 EQ@82..83 "="
83 WHITESPACE@[83; 84) " " 83 WHITESPACE@83..84 " "
84 TUPLE_EXPR@[84; 86) 84 TUPLE_EXPR@84..86
85 L_PAREN@[84; 85) "(" 85 L_PAREN@84..85 "("
86 R_PAREN@[85; 86) ")" 86 R_PAREN@85..86 ")"
87 SEMICOLON@[86; 87) ";" 87 SEMICOLON@86..87 ";"
88 WHITESPACE@[87; 92) "\n " 88 WHITESPACE@87..92 "\n "
89 LET_STMT@[92; 115) 89 LET_STMT@92..115
90 LET_KW@[92; 95) "let" 90 LET_KW@92..95 "let"
91 WHITESPACE@[95; 96) " " 91 WHITESPACE@95..96 " "
92 BOX_PAT@[96; 109) 92 BOX_PAT@96..109
93 BOX_KW@[96; 99) "box" 93 BOX_KW@96..99 "box"
94 WHITESPACE@[99; 100) " " 94 WHITESPACE@99..100 " "
95 BIND_PAT@[100; 109) 95 BIND_PAT@100..109
96 REF_KW@[100; 103) "ref" 96 REF_KW@100..103 "ref"
97 WHITESPACE@[103; 104) " " 97 WHITESPACE@103..104 " "
98 MUT_KW@[104; 107) "mut" 98 MUT_KW@104..107 "mut"
99 WHITESPACE@[107; 108) " " 99 WHITESPACE@107..108 " "
100 NAME@[108; 109) 100 NAME@108..109
101 IDENT@[108; 109) "i" 101 IDENT@108..109 "i"
102 WHITESPACE@[109; 110) " " 102 WHITESPACE@109..110 " "
103 EQ@[110; 111) "=" 103 EQ@110..111 "="
104 WHITESPACE@[111; 112) " " 104 WHITESPACE@111..112 " "
105 TUPLE_EXPR@[112; 114) 105 TUPLE_EXPR@112..114
106 L_PAREN@[112; 113) "(" 106 L_PAREN@112..113 "("
107 R_PAREN@[113; 114) ")" 107 R_PAREN@113..114 ")"
108 SEMICOLON@[114; 115) ";" 108 SEMICOLON@114..115 ";"
109 WHITESPACE@[115; 116) "\n" 109 WHITESPACE@115..116 "\n"
110 R_CURLY@[116; 117) "}" 110 R_CURLY@116..117 "}"
111 WHITESPACE@[117; 118) "\n" 111 WHITESPACE@117..118 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast
index 60186a992..e0b50d8be 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast
@@ -1,456 +1,456 @@
1SOURCE_FILE@[0; 555) 1SOURCE_FILE@0..555
2 FN_DEF@[0; 554) 2 FN_DEF@0..554
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 554) 11 BLOCK_EXPR@10..554
12 BLOCK@[10; 554) 12 BLOCK@10..554
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 28) 15 LET_STMT@16..28
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 DOT_DOT_PAT@[20; 22) 18 DOT_DOT_PAT@20..22
19 DOT2@[20; 22) ".." 19 DOT2@20..22 ".."
20 WHITESPACE@[22; 23) " " 20 WHITESPACE@22..23 " "
21 EQ@[23; 24) "=" 21 EQ@23..24 "="
22 WHITESPACE@[24; 25) " " 22 WHITESPACE@24..25 " "
23 TUPLE_EXPR@[25; 27) 23 TUPLE_EXPR@25..27
24 L_PAREN@[25; 26) "(" 24 L_PAREN@25..26 "("
25 R_PAREN@[26; 27) ")" 25 R_PAREN@26..27 ")"
26 SEMICOLON@[27; 28) ";" 26 SEMICOLON@27..28 ";"
27 WHITESPACE@[28; 33) "\n " 27 WHITESPACE@28..33 "\n "
28 COMMENT@[33; 35) "//" 28 COMMENT@33..35 "//"
29 WHITESPACE@[35; 40) "\n " 29 WHITESPACE@35..40 "\n "
30 COMMENT@[40; 49) "// Tuples" 30 COMMENT@40..49 "// Tuples"
31 WHITESPACE@[49; 54) "\n " 31 WHITESPACE@49..54 "\n "
32 COMMENT@[54; 56) "//" 32 COMMENT@54..56 "//"
33 WHITESPACE@[56; 61) "\n " 33 WHITESPACE@56..61 "\n "
34 LET_STMT@[61; 78) 34 LET_STMT@61..78
35 LET_KW@[61; 64) "let" 35 LET_KW@61..64 "let"
36 WHITESPACE@[64; 65) " " 36 WHITESPACE@64..65 " "
37 TUPLE_PAT@[65; 72) 37 TUPLE_PAT@65..72
38 L_PAREN@[65; 66) "(" 38 L_PAREN@65..66 "("
39 BIND_PAT@[66; 67) 39 BIND_PAT@66..67
40 NAME@[66; 67) 40 NAME@66..67
41 IDENT@[66; 67) "a" 41 IDENT@66..67 "a"
42 COMMA@[67; 68) "," 42 COMMA@67..68 ","
43 WHITESPACE@[68; 69) " " 43 WHITESPACE@68..69 " "
44 DOT_DOT_PAT@[69; 71) 44 DOT_DOT_PAT@69..71
45 DOT2@[69; 71) ".." 45 DOT2@69..71 ".."
46 R_PAREN@[71; 72) ")" 46 R_PAREN@71..72 ")"
47 WHITESPACE@[72; 73) " " 47 WHITESPACE@72..73 " "
48 EQ@[73; 74) "=" 48 EQ@73..74 "="
49 WHITESPACE@[74; 75) " " 49 WHITESPACE@74..75 " "
50 TUPLE_EXPR@[75; 77) 50 TUPLE_EXPR@75..77
51 L_PAREN@[75; 76) "(" 51 L_PAREN@75..76 "("
52 R_PAREN@[76; 77) ")" 52 R_PAREN@76..77 ")"
53 SEMICOLON@[77; 78) ";" 53 SEMICOLON@77..78 ";"
54 WHITESPACE@[78; 83) "\n " 54 WHITESPACE@78..83 "\n "
55 LET_STMT@[83; 101) 55 LET_STMT@83..101
56 LET_KW@[83; 86) "let" 56 LET_KW@83..86 "let"
57 WHITESPACE@[86; 87) " " 57 WHITESPACE@86..87 " "
58 TUPLE_PAT@[87; 95) 58 TUPLE_PAT@87..95
59 L_PAREN@[87; 88) "(" 59 L_PAREN@87..88 "("
60 BIND_PAT@[88; 89) 60 BIND_PAT@88..89
61 NAME@[88; 89) 61 NAME@88..89
62 IDENT@[88; 89) "a" 62 IDENT@88..89 "a"
63 COMMA@[89; 90) "," 63 COMMA@89..90 ","
64 WHITESPACE@[90; 91) " " 64 WHITESPACE@90..91 " "
65 DOT_DOT_PAT@[91; 93) 65 DOT_DOT_PAT@91..93
66 DOT2@[91; 93) ".." 66 DOT2@91..93 ".."
67 COMMA@[93; 94) "," 67 COMMA@93..94 ","
68 R_PAREN@[94; 95) ")" 68 R_PAREN@94..95 ")"
69 WHITESPACE@[95; 96) " " 69 WHITESPACE@95..96 " "
70 EQ@[96; 97) "=" 70 EQ@96..97 "="
71 WHITESPACE@[97; 98) " " 71 WHITESPACE@97..98 " "
72 TUPLE_EXPR@[98; 100) 72 TUPLE_EXPR@98..100
73 L_PAREN@[98; 99) "(" 73 L_PAREN@98..99 "("
74 R_PAREN@[99; 100) ")" 74 R_PAREN@99..100 ")"
75 SEMICOLON@[100; 101) ";" 75 SEMICOLON@100..101 ";"
76 WHITESPACE@[101; 106) "\n " 76 WHITESPACE@101..106 "\n "
77 LET_STMT@[106; 128) 77 LET_STMT@106..128
78 LET_KW@[106; 109) "let" 78 LET_KW@106..109 "let"
79 WHITESPACE@[109; 110) " " 79 WHITESPACE@109..110 " "
80 TUPLE_STRUCT_PAT@[110; 122) 80 TUPLE_STRUCT_PAT@110..122
81 PATH@[110; 115) 81 PATH@110..115
82 PATH_SEGMENT@[110; 115) 82 PATH_SEGMENT@110..115
83 NAME_REF@[110; 115) 83 NAME_REF@110..115
84 IDENT@[110; 115) "Tuple" 84 IDENT@110..115 "Tuple"
85 L_PAREN@[115; 116) "(" 85 L_PAREN@115..116 "("
86 BIND_PAT@[116; 117) 86 BIND_PAT@116..117
87 NAME@[116; 117) 87 NAME@116..117
88 IDENT@[116; 117) "a" 88 IDENT@116..117 "a"
89 COMMA@[117; 118) "," 89 COMMA@117..118 ","
90 WHITESPACE@[118; 119) " " 90 WHITESPACE@118..119 " "
91 DOT_DOT_PAT@[119; 121) 91 DOT_DOT_PAT@119..121
92 DOT2@[119; 121) ".." 92 DOT2@119..121 ".."
93 R_PAREN@[121; 122) ")" 93 R_PAREN@121..122 ")"
94 WHITESPACE@[122; 123) " " 94 WHITESPACE@122..123 " "
95 EQ@[123; 124) "=" 95 EQ@123..124 "="
96 WHITESPACE@[124; 125) " " 96 WHITESPACE@124..125 " "
97 TUPLE_EXPR@[125; 127) 97 TUPLE_EXPR@125..127
98 L_PAREN@[125; 126) "(" 98 L_PAREN@125..126 "("
99 R_PAREN@[126; 127) ")" 99 R_PAREN@126..127 ")"
100 SEMICOLON@[127; 128) ";" 100 SEMICOLON@127..128 ";"
101 WHITESPACE@[128; 133) "\n " 101 WHITESPACE@128..133 "\n "
102 LET_STMT@[133; 156) 102 LET_STMT@133..156
103 LET_KW@[133; 136) "let" 103 LET_KW@133..136 "let"
104 WHITESPACE@[136; 137) " " 104 WHITESPACE@136..137 " "
105 TUPLE_STRUCT_PAT@[137; 150) 105 TUPLE_STRUCT_PAT@137..150
106 PATH@[137; 142) 106 PATH@137..142
107 PATH_SEGMENT@[137; 142) 107 PATH_SEGMENT@137..142
108 NAME_REF@[137; 142) 108 NAME_REF@137..142
109 IDENT@[137; 142) "Tuple" 109 IDENT@137..142 "Tuple"
110 L_PAREN@[142; 143) "(" 110 L_PAREN@142..143 "("
111 BIND_PAT@[143; 144) 111 BIND_PAT@143..144
112 NAME@[143; 144) 112 NAME@143..144
113 IDENT@[143; 144) "a" 113 IDENT@143..144 "a"
114 COMMA@[144; 145) "," 114 COMMA@144..145 ","
115 WHITESPACE@[145; 146) " " 115 WHITESPACE@145..146 " "
116 DOT_DOT_PAT@[146; 148) 116 DOT_DOT_PAT@146..148
117 DOT2@[146; 148) ".." 117 DOT2@146..148 ".."
118 COMMA@[148; 149) "," 118 COMMA@148..149 ","
119 R_PAREN@[149; 150) ")" 119 R_PAREN@149..150 ")"
120 WHITESPACE@[150; 151) " " 120 WHITESPACE@150..151 " "
121 EQ@[151; 152) "=" 121 EQ@151..152 "="
122 WHITESPACE@[152; 153) " " 122 WHITESPACE@152..153 " "
123 TUPLE_EXPR@[153; 155) 123 TUPLE_EXPR@153..155
124 L_PAREN@[153; 154) "(" 124 L_PAREN@153..154 "("
125 R_PAREN@[154; 155) ")" 125 R_PAREN@154..155 ")"
126 SEMICOLON@[155; 156) ";" 126 SEMICOLON@155..156 ";"
127 WHITESPACE@[156; 161) "\n " 127 WHITESPACE@156..161 "\n "
128 LET_STMT@[161; 179) 128 LET_STMT@161..179
129 LET_KW@[161; 164) "let" 129 LET_KW@161..164 "let"
130 WHITESPACE@[164; 165) " " 130 WHITESPACE@164..165 " "
131 TUPLE_PAT@[165; 173) 131 TUPLE_PAT@165..173
132 L_PAREN@[165; 166) "(" 132 L_PAREN@165..166 "("
133 DOT_DOT_PAT@[166; 168) 133 DOT_DOT_PAT@166..168
134 DOT2@[166; 168) ".." 134 DOT2@166..168 ".."
135 COMMA@[168; 169) "," 135 COMMA@168..169 ","
136 WHITESPACE@[169; 170) " " 136 WHITESPACE@169..170 " "
137 DOT_DOT_PAT@[170; 172) 137 DOT_DOT_PAT@170..172
138 DOT2@[170; 172) ".." 138 DOT2@170..172 ".."
139 R_PAREN@[172; 173) ")" 139 R_PAREN@172..173 ")"
140 WHITESPACE@[173; 174) " " 140 WHITESPACE@173..174 " "
141 EQ@[174; 175) "=" 141 EQ@174..175 "="
142 WHITESPACE@[175; 176) " " 142 WHITESPACE@175..176 " "
143 TUPLE_EXPR@[176; 178) 143 TUPLE_EXPR@176..178
144 L_PAREN@[176; 177) "(" 144 L_PAREN@176..177 "("
145 R_PAREN@[177; 178) ")" 145 R_PAREN@177..178 ")"
146 SEMICOLON@[178; 179) ";" 146 SEMICOLON@178..179 ";"
147 WHITESPACE@[179; 184) "\n " 147 WHITESPACE@179..184 "\n "
148 LET_STMT@[184; 207) 148 LET_STMT@184..207
149 LET_KW@[184; 187) "let" 149 LET_KW@184..187 "let"
150 WHITESPACE@[187; 188) " " 150 WHITESPACE@187..188 " "
151 TUPLE_STRUCT_PAT@[188; 201) 151 TUPLE_STRUCT_PAT@188..201
152 PATH@[188; 193) 152 PATH@188..193
153 PATH_SEGMENT@[188; 193) 153 PATH_SEGMENT@188..193
154 NAME_REF@[188; 193) 154 NAME_REF@188..193
155 IDENT@[188; 193) "Tuple" 155 IDENT@188..193 "Tuple"
156 L_PAREN@[193; 194) "(" 156 L_PAREN@193..194 "("
157 DOT_DOT_PAT@[194; 196) 157 DOT_DOT_PAT@194..196
158 DOT2@[194; 196) ".." 158 DOT2@194..196 ".."
159 COMMA@[196; 197) "," 159 COMMA@196..197 ","
160 WHITESPACE@[197; 198) " " 160 WHITESPACE@197..198 " "
161 DOT_DOT_PAT@[198; 200) 161 DOT_DOT_PAT@198..200
162 DOT2@[198; 200) ".." 162 DOT2@198..200 ".."
163 R_PAREN@[200; 201) ")" 163 R_PAREN@200..201 ")"
164 WHITESPACE@[201; 202) " " 164 WHITESPACE@201..202 " "
165 EQ@[202; 203) "=" 165 EQ@202..203 "="
166 WHITESPACE@[203; 204) " " 166 WHITESPACE@203..204 " "
167 TUPLE_EXPR@[204; 206) 167 TUPLE_EXPR@204..206
168 L_PAREN@[204; 205) "(" 168 L_PAREN@204..205 "("
169 R_PAREN@[205; 206) ")" 169 R_PAREN@205..206 ")"
170 SEMICOLON@[206; 207) ";" 170 SEMICOLON@206..207 ";"
171 WHITESPACE@[207; 212) "\n " 171 WHITESPACE@207..212 "\n "
172 LET_STMT@[212; 233) 172 LET_STMT@212..233
173 LET_KW@[212; 215) "let" 173 LET_KW@212..215 "let"
174 WHITESPACE@[215; 216) " " 174 WHITESPACE@215..216 " "
175 TUPLE_PAT@[216; 227) 175 TUPLE_PAT@216..227
176 L_PAREN@[216; 217) "(" 176 L_PAREN@216..217 "("
177 DOT_DOT_PAT@[217; 219) 177 DOT_DOT_PAT@217..219
178 DOT2@[217; 219) ".." 178 DOT2@217..219 ".."
179 COMMA@[219; 220) "," 179 COMMA@219..220 ","
180 WHITESPACE@[220; 221) " " 180 WHITESPACE@220..221 " "
181 BIND_PAT@[221; 222) 181 BIND_PAT@221..222
182 NAME@[221; 222) 182 NAME@221..222
183 IDENT@[221; 222) "a" 183 IDENT@221..222 "a"
184 COMMA@[222; 223) "," 184 COMMA@222..223 ","
185 WHITESPACE@[223; 224) " " 185 WHITESPACE@223..224 " "
186 DOT_DOT_PAT@[224; 226) 186 DOT_DOT_PAT@224..226
187 DOT2@[224; 226) ".." 187 DOT2@224..226 ".."
188 R_PAREN@[226; 227) ")" 188 R_PAREN@226..227 ")"
189 WHITESPACE@[227; 228) " " 189 WHITESPACE@227..228 " "
190 EQ@[228; 229) "=" 190 EQ@228..229 "="
191 WHITESPACE@[229; 230) " " 191 WHITESPACE@229..230 " "
192 TUPLE_EXPR@[230; 232) 192 TUPLE_EXPR@230..232
193 L_PAREN@[230; 231) "(" 193 L_PAREN@230..231 "("
194 R_PAREN@[231; 232) ")" 194 R_PAREN@231..232 ")"
195 SEMICOLON@[232; 233) ";" 195 SEMICOLON@232..233 ";"
196 WHITESPACE@[233; 238) "\n " 196 WHITESPACE@233..238 "\n "
197 LET_STMT@[238; 264) 197 LET_STMT@238..264
198 LET_KW@[238; 241) "let" 198 LET_KW@238..241 "let"
199 WHITESPACE@[241; 242) " " 199 WHITESPACE@241..242 " "
200 TUPLE_STRUCT_PAT@[242; 258) 200 TUPLE_STRUCT_PAT@242..258
201 PATH@[242; 247) 201 PATH@242..247
202 PATH_SEGMENT@[242; 247) 202 PATH_SEGMENT@242..247
203 NAME_REF@[242; 247) 203 NAME_REF@242..247
204 IDENT@[242; 247) "Tuple" 204 IDENT@242..247 "Tuple"
205 L_PAREN@[247; 248) "(" 205 L_PAREN@247..248 "("
206 DOT_DOT_PAT@[248; 250) 206 DOT_DOT_PAT@248..250
207 DOT2@[248; 250) ".." 207 DOT2@248..250 ".."
208 COMMA@[250; 251) "," 208 COMMA@250..251 ","
209 WHITESPACE@[251; 252) " " 209 WHITESPACE@251..252 " "
210 BIND_PAT@[252; 253) 210 BIND_PAT@252..253
211 NAME@[252; 253) 211 NAME@252..253
212 IDENT@[252; 253) "a" 212 IDENT@252..253 "a"
213 COMMA@[253; 254) "," 213 COMMA@253..254 ","
214 WHITESPACE@[254; 255) " " 214 WHITESPACE@254..255 " "
215 DOT_DOT_PAT@[255; 257) 215 DOT_DOT_PAT@255..257
216 DOT2@[255; 257) ".." 216 DOT2@255..257 ".."
217 R_PAREN@[257; 258) ")" 217 R_PAREN@257..258 ")"
218 WHITESPACE@[258; 259) " " 218 WHITESPACE@258..259 " "
219 EQ@[259; 260) "=" 219 EQ@259..260 "="
220 WHITESPACE@[260; 261) " " 220 WHITESPACE@260..261 " "
221 TUPLE_EXPR@[261; 263) 221 TUPLE_EXPR@261..263
222 L_PAREN@[261; 262) "(" 222 L_PAREN@261..262 "("
223 R_PAREN@[262; 263) ")" 223 R_PAREN@262..263 ")"
224 SEMICOLON@[263; 264) ";" 224 SEMICOLON@263..264 ";"
225 WHITESPACE@[264; 269) "\n " 225 WHITESPACE@264..269 "\n "
226 COMMENT@[269; 271) "//" 226 COMMENT@269..271 "//"
227 WHITESPACE@[271; 276) "\n " 227 WHITESPACE@271..276 "\n "
228 COMMENT@[276; 285) "// Slices" 228 COMMENT@276..285 "// Slices"
229 WHITESPACE@[285; 290) "\n " 229 WHITESPACE@285..290 "\n "
230 COMMENT@[290; 292) "//" 230 COMMENT@290..292 "//"
231 WHITESPACE@[292; 297) "\n " 231 WHITESPACE@292..297 "\n "
232 LET_STMT@[297; 311) 232 LET_STMT@297..311
233 LET_KW@[297; 300) "let" 233 LET_KW@297..300 "let"
234 WHITESPACE@[300; 301) " " 234 WHITESPACE@300..301 " "
235 SLICE_PAT@[301; 305) 235 SLICE_PAT@301..305
236 L_BRACK@[301; 302) "[" 236 L_BRACK@301..302 "["
237 DOT_DOT_PAT@[302; 304) 237 DOT_DOT_PAT@302..304
238 DOT2@[302; 304) ".." 238 DOT2@302..304 ".."
239 R_BRACK@[304; 305) "]" 239 R_BRACK@304..305 "]"
240 WHITESPACE@[305; 306) " " 240 WHITESPACE@305..306 " "
241 EQ@[306; 307) "=" 241 EQ@306..307 "="
242 WHITESPACE@[307; 308) " " 242 WHITESPACE@307..308 " "
243 TUPLE_EXPR@[308; 310) 243 TUPLE_EXPR@308..310
244 L_PAREN@[308; 309) "(" 244 L_PAREN@308..309 "("
245 R_PAREN@[309; 310) ")" 245 R_PAREN@309..310 ")"
246 SEMICOLON@[310; 311) ";" 246 SEMICOLON@310..311 ";"
247 WHITESPACE@[311; 316) "\n " 247 WHITESPACE@311..316 "\n "
248 LET_STMT@[316; 336) 248 LET_STMT@316..336
249 LET_KW@[316; 319) "let" 249 LET_KW@316..319 "let"
250 WHITESPACE@[319; 320) " " 250 WHITESPACE@319..320 " "
251 SLICE_PAT@[320; 330) 251 SLICE_PAT@320..330
252 L_BRACK@[320; 321) "[" 252 L_BRACK@320..321 "["
253 BIND_PAT@[321; 325) 253 BIND_PAT@321..325
254 NAME@[321; 325) 254 NAME@321..325
255 IDENT@[321; 325) "head" 255 IDENT@321..325 "head"
256 COMMA@[325; 326) "," 256 COMMA@325..326 ","
257 WHITESPACE@[326; 327) " " 257 WHITESPACE@326..327 " "
258 DOT_DOT_PAT@[327; 329) 258 DOT_DOT_PAT@327..329
259 DOT2@[327; 329) ".." 259 DOT2@327..329 ".."
260 R_BRACK@[329; 330) "]" 260 R_BRACK@329..330 "]"
261 WHITESPACE@[330; 331) " " 261 WHITESPACE@330..331 " "
262 EQ@[331; 332) "=" 262 EQ@331..332 "="
263 WHITESPACE@[332; 333) " " 263 WHITESPACE@332..333 " "
264 TUPLE_EXPR@[333; 335) 264 TUPLE_EXPR@333..335
265 L_PAREN@[333; 334) "(" 265 L_PAREN@333..334 "("
266 R_PAREN@[334; 335) ")" 266 R_PAREN@334..335 ")"
267 SEMICOLON@[335; 336) ";" 267 SEMICOLON@335..336 ";"
268 WHITESPACE@[336; 341) "\n " 268 WHITESPACE@336..341 "\n "
269 LET_STMT@[341; 368) 269 LET_STMT@341..368
270 LET_KW@[341; 344) "let" 270 LET_KW@341..344 "let"
271 WHITESPACE@[344; 345) " " 271 WHITESPACE@344..345 " "
272 SLICE_PAT@[345; 362) 272 SLICE_PAT@345..362
273 L_BRACK@[345; 346) "[" 273 L_BRACK@345..346 "["
274 BIND_PAT@[346; 350) 274 BIND_PAT@346..350
275 NAME@[346; 350) 275 NAME@346..350
276 IDENT@[346; 350) "head" 276 IDENT@346..350 "head"
277 COMMA@[350; 351) "," 277 COMMA@350..351 ","
278 WHITESPACE@[351; 352) " " 278 WHITESPACE@351..352 " "
279 BIND_PAT@[352; 361) 279 BIND_PAT@352..361
280 NAME@[352; 356) 280 NAME@352..356
281 IDENT@[352; 356) "tail" 281 IDENT@352..356 "tail"
282 WHITESPACE@[356; 357) " " 282 WHITESPACE@356..357 " "
283 AT@[357; 358) "@" 283 AT@357..358 "@"
284 WHITESPACE@[358; 359) " " 284 WHITESPACE@358..359 " "
285 DOT_DOT_PAT@[359; 361) 285 DOT_DOT_PAT@359..361
286 DOT2@[359; 361) ".." 286 DOT2@359..361 ".."
287 R_BRACK@[361; 362) "]" 287 R_BRACK@361..362 "]"
288 WHITESPACE@[362; 363) " " 288 WHITESPACE@362..363 " "
289 EQ@[363; 364) "=" 289 EQ@363..364 "="
290 WHITESPACE@[364; 365) " " 290 WHITESPACE@364..365 " "
291 TUPLE_EXPR@[365; 367) 291 TUPLE_EXPR@365..367
292 L_PAREN@[365; 366) "(" 292 L_PAREN@365..366 "("
293 R_PAREN@[366; 367) ")" 293 R_PAREN@366..367 ")"
294 SEMICOLON@[367; 368) ";" 294 SEMICOLON@367..368 ";"
295 WHITESPACE@[368; 373) "\n " 295 WHITESPACE@368..373 "\n "
296 LET_STMT@[373; 399) 296 LET_STMT@373..399
297 LET_KW@[373; 376) "let" 297 LET_KW@373..376 "let"
298 WHITESPACE@[376; 377) " " 298 WHITESPACE@376..377 " "
299 SLICE_PAT@[377; 393) 299 SLICE_PAT@377..393
300 L_BRACK@[377; 378) "[" 300 L_BRACK@377..378 "["
301 BIND_PAT@[378; 382) 301 BIND_PAT@378..382
302 NAME@[378; 382) 302 NAME@378..382
303 IDENT@[378; 382) "head" 303 IDENT@378..382 "head"
304 COMMA@[382; 383) "," 304 COMMA@382..383 ","
305 WHITESPACE@[383; 384) " " 305 WHITESPACE@383..384 " "
306 DOT_DOT_PAT@[384; 386) 306 DOT_DOT_PAT@384..386
307 DOT2@[384; 386) ".." 307 DOT2@384..386 ".."
308 COMMA@[386; 387) "," 308 COMMA@386..387 ","
309 WHITESPACE@[387; 388) " " 309 WHITESPACE@387..388 " "
310 BIND_PAT@[388; 392) 310 BIND_PAT@388..392
311 NAME@[388; 392) 311 NAME@388..392
312 IDENT@[388; 392) "cons" 312 IDENT@388..392 "cons"
313 R_BRACK@[392; 393) "]" 313 R_BRACK@392..393 "]"
314 WHITESPACE@[393; 394) " " 314 WHITESPACE@393..394 " "
315 EQ@[394; 395) "=" 315 EQ@394..395 "="
316 WHITESPACE@[395; 396) " " 316 WHITESPACE@395..396 " "
317 TUPLE_EXPR@[396; 398) 317 TUPLE_EXPR@396..398
318 L_PAREN@[396; 397) "(" 318 L_PAREN@396..397 "("
319 R_PAREN@[397; 398) ")" 319 R_PAREN@397..398 ")"
320 SEMICOLON@[398; 399) ";" 320 SEMICOLON@398..399 ";"
321 WHITESPACE@[399; 404) "\n " 321 WHITESPACE@399..404 "\n "
322 LET_STMT@[404; 436) 322 LET_STMT@404..436
323 LET_KW@[404; 407) "let" 323 LET_KW@404..407 "let"
324 WHITESPACE@[407; 408) " " 324 WHITESPACE@407..408 " "
325 SLICE_PAT@[408; 430) 325 SLICE_PAT@408..430
326 L_BRACK@[408; 409) "[" 326 L_BRACK@408..409 "["
327 BIND_PAT@[409; 413) 327 BIND_PAT@409..413
328 NAME@[409; 413) 328 NAME@409..413
329 IDENT@[409; 413) "head" 329 IDENT@409..413 "head"
330 COMMA@[413; 414) "," 330 COMMA@413..414 ","
331 WHITESPACE@[414; 415) " " 331 WHITESPACE@414..415 " "
332 BIND_PAT@[415; 423) 332 BIND_PAT@415..423
333 NAME@[415; 418) 333 NAME@415..418
334 IDENT@[415; 418) "mid" 334 IDENT@415..418 "mid"
335 WHITESPACE@[418; 419) " " 335 WHITESPACE@418..419 " "
336 AT@[419; 420) "@" 336 AT@419..420 "@"
337 WHITESPACE@[420; 421) " " 337 WHITESPACE@420..421 " "
338 DOT_DOT_PAT@[421; 423) 338 DOT_DOT_PAT@421..423
339 DOT2@[421; 423) ".." 339 DOT2@421..423 ".."
340 COMMA@[423; 424) "," 340 COMMA@423..424 ","
341 WHITESPACE@[424; 425) " " 341 WHITESPACE@424..425 " "
342 BIND_PAT@[425; 429) 342 BIND_PAT@425..429
343 NAME@[425; 429) 343 NAME@425..429
344 IDENT@[425; 429) "cons" 344 IDENT@425..429 "cons"
345 R_BRACK@[429; 430) "]" 345 R_BRACK@429..430 "]"
346 WHITESPACE@[430; 431) " " 346 WHITESPACE@430..431 " "
347 EQ@[431; 432) "=" 347 EQ@431..432 "="
348 WHITESPACE@[432; 433) " " 348 WHITESPACE@432..433 " "
349 TUPLE_EXPR@[433; 435) 349 TUPLE_EXPR@433..435
350 L_PAREN@[433; 434) "(" 350 L_PAREN@433..434 "("
351 R_PAREN@[434; 435) ")" 351 R_PAREN@434..435 ")"
352 SEMICOLON@[435; 436) ";" 352 SEMICOLON@435..436 ";"
353 WHITESPACE@[436; 441) "\n " 353 WHITESPACE@436..441 "\n "
354 LET_STMT@[441; 471) 354 LET_STMT@441..471
355 LET_KW@[441; 444) "let" 355 LET_KW@441..444 "let"
356 WHITESPACE@[444; 445) " " 356 WHITESPACE@444..445 " "
357 SLICE_PAT@[445; 465) 357 SLICE_PAT@445..465
358 L_BRACK@[445; 446) "[" 358 L_BRACK@445..446 "["
359 BIND_PAT@[446; 450) 359 BIND_PAT@446..450
360 NAME@[446; 450) 360 NAME@446..450
361 IDENT@[446; 450) "head" 361 IDENT@446..450 "head"
362 COMMA@[450; 451) "," 362 COMMA@450..451 ","
363 WHITESPACE@[451; 452) " " 363 WHITESPACE@451..452 " "
364 DOT_DOT_PAT@[452; 454) 364 DOT_DOT_PAT@452..454
365 DOT2@[452; 454) ".." 365 DOT2@452..454 ".."
366 COMMA@[454; 455) "," 366 COMMA@454..455 ","
367 WHITESPACE@[455; 456) " " 367 WHITESPACE@455..456 " "
368 DOT_DOT_PAT@[456; 458) 368 DOT_DOT_PAT@456..458
369 DOT2@[456; 458) ".." 369 DOT2@456..458 ".."
370 COMMA@[458; 459) "," 370 COMMA@458..459 ","
371 WHITESPACE@[459; 460) " " 371 WHITESPACE@459..460 " "
372 BIND_PAT@[460; 464) 372 BIND_PAT@460..464
373 NAME@[460; 464) 373 NAME@460..464
374 IDENT@[460; 464) "cons" 374 IDENT@460..464 "cons"
375 R_BRACK@[464; 465) "]" 375 R_BRACK@464..465 "]"
376 WHITESPACE@[465; 466) " " 376 WHITESPACE@465..466 " "
377 EQ@[466; 467) "=" 377 EQ@466..467 "="
378 WHITESPACE@[467; 468) " " 378 WHITESPACE@467..468 " "
379 TUPLE_EXPR@[468; 470) 379 TUPLE_EXPR@468..470
380 L_PAREN@[468; 469) "(" 380 L_PAREN@468..469 "("
381 R_PAREN@[469; 470) ")" 381 R_PAREN@469..470 ")"
382 SEMICOLON@[470; 471) ";" 382 SEMICOLON@470..471 ";"
383 WHITESPACE@[471; 476) "\n " 383 WHITESPACE@471..476 "\n "
384 LET_STMT@[476; 512) 384 LET_STMT@476..512
385 LET_KW@[476; 479) "let" 385 LET_KW@476..479 "let"
386 WHITESPACE@[479; 480) " " 386 WHITESPACE@479..480 " "
387 SLICE_PAT@[480; 506) 387 SLICE_PAT@480..506
388 L_BRACK@[480; 481) "[" 388 L_BRACK@480..481 "["
389 BIND_PAT@[481; 485) 389 BIND_PAT@481..485
390 NAME@[481; 485) 390 NAME@481..485
391 IDENT@[481; 485) "head" 391 IDENT@481..485 "head"
392 COMMA@[485; 486) "," 392 COMMA@485..486 ","
393 WHITESPACE@[486; 487) " " 393 WHITESPACE@486..487 " "
394 DOT_DOT_PAT@[487; 489) 394 DOT_DOT_PAT@487..489
395 DOT2@[487; 489) ".." 395 DOT2@487..489 ".."
396 COMMA@[489; 490) "," 396 COMMA@489..490 ","
397 WHITESPACE@[490; 491) " " 397 WHITESPACE@490..491 " "
398 BIND_PAT@[491; 494) 398 BIND_PAT@491..494
399 NAME@[491; 494) 399 NAME@491..494
400 IDENT@[491; 494) "mid" 400 IDENT@491..494 "mid"
401 COMMA@[494; 495) "," 401 COMMA@494..495 ","
402 WHITESPACE@[495; 496) " " 402 WHITESPACE@495..496 " "
403 BIND_PAT@[496; 505) 403 BIND_PAT@496..505
404 NAME@[496; 500) 404 NAME@496..500
405 IDENT@[496; 500) "tail" 405 IDENT@496..500 "tail"
406 WHITESPACE@[500; 501) " " 406 WHITESPACE@500..501 " "
407 AT@[501; 502) "@" 407 AT@501..502 "@"
408 WHITESPACE@[502; 503) " " 408 WHITESPACE@502..503 " "
409 DOT_DOT_PAT@[503; 505) 409 DOT_DOT_PAT@503..505
410 DOT2@[503; 505) ".." 410 DOT2@503..505 ".."
411 R_BRACK@[505; 506) "]" 411 R_BRACK@505..506 "]"
412 WHITESPACE@[506; 507) " " 412 WHITESPACE@506..507 " "
413 EQ@[507; 508) "=" 413 EQ@507..508 "="
414 WHITESPACE@[508; 509) " " 414 WHITESPACE@508..509 " "
415 TUPLE_EXPR@[509; 511) 415 TUPLE_EXPR@509..511
416 L_PAREN@[509; 510) "(" 416 L_PAREN@509..510 "("
417 R_PAREN@[510; 511) ")" 417 R_PAREN@510..511 ")"
418 SEMICOLON@[511; 512) ";" 418 SEMICOLON@511..512 ";"
419 WHITESPACE@[512; 517) "\n " 419 WHITESPACE@512..517 "\n "
420 LET_STMT@[517; 552) 420 LET_STMT@517..552
421 LET_KW@[517; 520) "let" 421 LET_KW@517..520 "let"
422 WHITESPACE@[520; 521) " " 422 WHITESPACE@520..521 " "
423 SLICE_PAT@[521; 546) 423 SLICE_PAT@521..546
424 L_BRACK@[521; 522) "[" 424 L_BRACK@521..522 "["
425 BIND_PAT@[522; 526) 425 BIND_PAT@522..526
426 NAME@[522; 526) 426 NAME@522..526
427 IDENT@[522; 526) "head" 427 IDENT@522..526 "head"
428 COMMA@[526; 527) "," 428 COMMA@526..527 ","
429 WHITESPACE@[527; 528) " " 429 WHITESPACE@527..528 " "
430 DOT_DOT_PAT@[528; 530) 430 DOT_DOT_PAT@528..530
431 DOT2@[528; 530) ".." 431 DOT2@528..530 ".."
432 COMMA@[530; 531) "," 432 COMMA@530..531 ","
433 WHITESPACE@[531; 532) " " 433 WHITESPACE@531..532 " "
434 BIND_PAT@[532; 535) 434 BIND_PAT@532..535
435 NAME@[532; 535) 435 NAME@532..535
436 IDENT@[532; 535) "mid" 436 IDENT@532..535 "mid"
437 COMMA@[535; 536) "," 437 COMMA@535..536 ","
438 WHITESPACE@[536; 537) " " 438 WHITESPACE@536..537 " "
439 DOT_DOT_PAT@[537; 539) 439 DOT_DOT_PAT@537..539
440 DOT2@[537; 539) ".." 440 DOT2@537..539 ".."
441 COMMA@[539; 540) "," 441 COMMA@539..540 ","
442 WHITESPACE@[540; 541) " " 442 WHITESPACE@540..541 " "
443 BIND_PAT@[541; 545) 443 BIND_PAT@541..545
444 NAME@[541; 545) 444 NAME@541..545
445 IDENT@[541; 545) "cons" 445 IDENT@541..545 "cons"
446 R_BRACK@[545; 546) "]" 446 R_BRACK@545..546 "]"
447 WHITESPACE@[546; 547) " " 447 WHITESPACE@546..547 " "
448 EQ@[547; 548) "=" 448 EQ@547..548 "="
449 WHITESPACE@[548; 549) " " 449 WHITESPACE@548..549 " "
450 TUPLE_EXPR@[549; 551) 450 TUPLE_EXPR@549..551
451 L_PAREN@[549; 550) "(" 451 L_PAREN@549..550 "("
452 R_PAREN@[550; 551) ")" 452 R_PAREN@550..551 ")"
453 SEMICOLON@[551; 552) ";" 453 SEMICOLON@551..552 ";"
454 WHITESPACE@[552; 553) "\n" 454 WHITESPACE@552..553 "\n"
455 R_CURLY@[553; 554) "}" 455 R_CURLY@553..554 "}"
456 WHITESPACE@[554; 555) "\n" 456 WHITESPACE@554..555 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0145_record_field_pat.rast b/crates/ra_syntax/test_data/parser/inline/ok/0145_record_field_pat.rast
index cac2ffdcf..10434b637 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0145_record_field_pat.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0145_record_field_pat.rast
@@ -1,76 +1,76 @@
1SOURCE_FILE@[0; 63) 1SOURCE_FILE@0..63
2 FN_DEF@[0; 62) 2 FN_DEF@0..62
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 62) 11 BLOCK_EXPR@9..62
12 BLOCK@[9; 62) 12 BLOCK@9..62
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 35) 15 LET_STMT@15..35
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 RECORD_PAT@[19; 29) 18 RECORD_PAT@19..29
19 PATH@[19; 20) 19 PATH@19..20
20 PATH_SEGMENT@[19; 20) 20 PATH_SEGMENT@19..20
21 NAME_REF@[19; 20) 21 NAME_REF@19..20
22 IDENT@[19; 20) "S" 22 IDENT@19..20 "S"
23 WHITESPACE@[20; 21) " " 23 WHITESPACE@20..21 " "
24 RECORD_FIELD_PAT_LIST@[21; 29) 24 RECORD_FIELD_PAT_LIST@21..29
25 L_CURLY@[21; 22) "{" 25 L_CURLY@21..22 "{"
26 WHITESPACE@[22; 23) " " 26 WHITESPACE@22..23 " "
27 RECORD_FIELD_PAT@[23; 27) 27 RECORD_FIELD_PAT@23..27
28 NAME_REF@[23; 24) 28 NAME_REF@23..24
29 INT_NUMBER@[23; 24) "0" 29 INT_NUMBER@23..24 "0"
30 COLON@[24; 25) ":" 30 COLON@24..25 ":"
31 WHITESPACE@[25; 26) " " 31 WHITESPACE@25..26 " "
32 LITERAL_PAT@[26; 27) 32 LITERAL_PAT@26..27
33 LITERAL@[26; 27) 33 LITERAL@26..27
34 INT_NUMBER@[26; 27) "1" 34 INT_NUMBER@26..27 "1"
35 WHITESPACE@[27; 28) " " 35 WHITESPACE@27..28 " "
36 R_CURLY@[28; 29) "}" 36 R_CURLY@28..29 "}"
37 WHITESPACE@[29; 30) " " 37 WHITESPACE@29..30 " "
38 EQ@[30; 31) "=" 38 EQ@30..31 "="
39 WHITESPACE@[31; 32) " " 39 WHITESPACE@31..32 " "
40 TUPLE_EXPR@[32; 34) 40 TUPLE_EXPR@32..34
41 L_PAREN@[32; 33) "(" 41 L_PAREN@32..33 "("
42 R_PAREN@[33; 34) ")" 42 R_PAREN@33..34 ")"
43 SEMICOLON@[34; 35) ";" 43 SEMICOLON@34..35 ";"
44 WHITESPACE@[35; 40) "\n " 44 WHITESPACE@35..40 "\n "
45 LET_STMT@[40; 60) 45 LET_STMT@40..60
46 LET_KW@[40; 43) "let" 46 LET_KW@40..43 "let"
47 WHITESPACE@[43; 44) " " 47 WHITESPACE@43..44 " "
48 RECORD_PAT@[44; 54) 48 RECORD_PAT@44..54
49 PATH@[44; 45) 49 PATH@44..45
50 PATH_SEGMENT@[44; 45) 50 PATH_SEGMENT@44..45
51 NAME_REF@[44; 45) 51 NAME_REF@44..45
52 IDENT@[44; 45) "S" 52 IDENT@44..45 "S"
53 WHITESPACE@[45; 46) " " 53 WHITESPACE@45..46 " "
54 RECORD_FIELD_PAT_LIST@[46; 54) 54 RECORD_FIELD_PAT_LIST@46..54
55 L_CURLY@[46; 47) "{" 55 L_CURLY@46..47 "{"
56 WHITESPACE@[47; 48) " " 56 WHITESPACE@47..48 " "
57 RECORD_FIELD_PAT@[48; 52) 57 RECORD_FIELD_PAT@48..52
58 NAME_REF@[48; 49) 58 NAME_REF@48..49
59 IDENT@[48; 49) "x" 59 IDENT@48..49 "x"
60 COLON@[49; 50) ":" 60 COLON@49..50 ":"
61 WHITESPACE@[50; 51) " " 61 WHITESPACE@50..51 " "
62 LITERAL_PAT@[51; 52) 62 LITERAL_PAT@51..52
63 LITERAL@[51; 52) 63 LITERAL@51..52
64 INT_NUMBER@[51; 52) "1" 64 INT_NUMBER@51..52 "1"
65 WHITESPACE@[52; 53) " " 65 WHITESPACE@52..53 " "
66 R_CURLY@[53; 54) "}" 66 R_CURLY@53..54 "}"
67 WHITESPACE@[54; 55) " " 67 WHITESPACE@54..55 " "
68 EQ@[55; 56) "=" 68 EQ@55..56 "="
69 WHITESPACE@[56; 57) " " 69 WHITESPACE@56..57 " "
70 TUPLE_EXPR@[57; 59) 70 TUPLE_EXPR@57..59
71 L_PAREN@[57; 58) "(" 71 L_PAREN@57..58 "("
72 R_PAREN@[58; 59) ")" 72 R_PAREN@58..59 ")"
73 SEMICOLON@[59; 60) ";" 73 SEMICOLON@59..60 ";"
74 WHITESPACE@[60; 61) "\n" 74 WHITESPACE@60..61 "\n"
75 R_CURLY@[61; 62) "}" 75 R_CURLY@61..62 "}"
76 WHITESPACE@[62; 63) "\n" 76 WHITESPACE@62..63 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rast b/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rast
index d2f6d8fde..66ad546b9 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 43) 1SOURCE_FILE@0..43
2 FN_DEF@[0; 42) 2 FN_DEF@0..42
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 42) 11 BLOCK_EXPR@9..42
12 BLOCK@[9; 42) 12 BLOCK@9..42
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 LET_STMT@[15; 40) 15 LET_STMT@15..40
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 PLACEHOLDER_PAT@[19; 20) 18 PLACEHOLDER_PAT@19..20
19 UNDERSCORE@[19; 20) "_" 19 UNDERSCORE@19..20 "_"
20 WHITESPACE@[20; 21) " " 20 WHITESPACE@20..21 " "
21 EQ@[21; 22) "=" 21 EQ@21..22 "="
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 CAST_EXPR@[23; 39) 23 CAST_EXPR@23..39
24 REF_EXPR@[23; 25) 24 REF_EXPR@23..25
25 AMP@[23; 24) "&" 25 AMP@23..24 "&"
26 LITERAL@[24; 25) 26 LITERAL@24..25
27 INT_NUMBER@[24; 25) "1" 27 INT_NUMBER@24..25 "1"
28 WHITESPACE@[25; 26) " " 28 WHITESPACE@25..26 " "
29 AS_KW@[26; 28) "as" 29 AS_KW@26..28 "as"
30 WHITESPACE@[28; 29) " " 30 WHITESPACE@28..29 " "
31 POINTER_TYPE@[29; 39) 31 POINTER_TYPE@29..39
32 STAR@[29; 30) "*" 32 STAR@29..30 "*"
33 CONST_KW@[30; 35) "const" 33 CONST_KW@30..35 "const"
34 WHITESPACE@[35; 36) " " 34 WHITESPACE@35..36 " "
35 PATH_TYPE@[36; 39) 35 PATH_TYPE@36..39
36 PATH@[36; 39) 36 PATH@36..39
37 PATH_SEGMENT@[36; 39) 37 PATH_SEGMENT@36..39
38 NAME_REF@[36; 39) 38 NAME_REF@36..39
39 IDENT@[36; 39) "i32" 39 IDENT@36..39 "i32"
40 SEMICOLON@[39; 40) ";" 40 SEMICOLON@39..40 ";"
41 WHITESPACE@[40; 41) "\n" 41 WHITESPACE@40..41 "\n"
42 R_CURLY@[41; 42) "}" 42 R_CURLY@41..42 "}"
43 WHITESPACE@[42; 43) "\n" 43 WHITESPACE@42..43 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0147_const_param.rast b/crates/ra_syntax/test_data/parser/inline/ok/0147_const_param.rast
index 21161f7bf..4b9b8e0ab 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0147_const_param.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0147_const_param.rast
@@ -1,23 +1,23 @@
1SOURCE_FILE@[0; 24) 1SOURCE_FILE@0..24
2 STRUCT_DEF@[0; 23) 2 STRUCT_DEF@0..23
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 TYPE_PARAM_LIST@[8; 22) 7 TYPE_PARAM_LIST@8..22
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 CONST_PARAM@[9; 21) 9 CONST_PARAM@9..21
10 CONST_KW@[9; 14) "const" 10 CONST_KW@9..14 "const"
11 WHITESPACE@[14; 15) " " 11 WHITESPACE@14..15 " "
12 NAME@[15; 16) 12 NAME@15..16
13 IDENT@[15; 16) "N" 13 IDENT@15..16 "N"
14 COLON@[16; 17) ":" 14 COLON@16..17 ":"
15 WHITESPACE@[17; 18) " " 15 WHITESPACE@17..18 " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@18..21
17 PATH@[18; 21) 17 PATH@18..21
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@18..21
19 NAME_REF@[18; 21) 19 NAME_REF@18..21
20 IDENT@[18; 21) "u32" 20 IDENT@18..21 "u32"
21 R_ANGLE@[21; 22) ">" 21 R_ANGLE@21..22 ">"
22 SEMICOLON@[22; 23) ";" 22 SEMICOLON@22..23 ";"
23 WHITESPACE@[23; 24) "\n" 23 WHITESPACE@23..24 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0147_macro_def.rast b/crates/ra_syntax/test_data/parser/inline/ok/0147_macro_def.rast
index 3556099bd..6655aeab1 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0147_macro_def.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0147_macro_def.rast
@@ -1,45 +1,45 @@
1SOURCE_FILE@[0; 50) 1SOURCE_FILE@0..50
2 MACRO_DEF@[0; 28) 2 MACRO_DEF@0..28
3 MACRO_KW@[0; 5) "macro" 3 MACRO_KW@0..5 "macro"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "m" 6 IDENT@6..7 "m"
7 WHITESPACE@[7; 8) " " 7 WHITESPACE@7..8 " "
8 TOKEN_TREE@[8; 28) 8 TOKEN_TREE@8..28
9 L_CURLY@[8; 9) "{" 9 L_CURLY@8..9 "{"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 TOKEN_TREE@[10; 20) 11 TOKEN_TREE@10..20
12 L_PAREN@[10; 11) "(" 12 L_PAREN@10..11 "("
13 DOLLAR@[11; 12) "$" 13 DOLLAR@11..12 "$"
14 IDENT@[12; 13) "i" 14 IDENT@12..13 "i"
15 COLON@[13; 14) ":" 15 COLON@13..14 ":"
16 IDENT@[14; 19) "ident" 16 IDENT@14..19 "ident"
17 R_PAREN@[19; 20) ")" 17 R_PAREN@19..20 ")"
18 WHITESPACE@[20; 21) " " 18 WHITESPACE@20..21 " "
19 EQ@[21; 22) "=" 19 EQ@21..22 "="
20 R_ANGLE@[22; 23) ">" 20 R_ANGLE@22..23 ">"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 TOKEN_TREE@[24; 26) 22 TOKEN_TREE@24..26
23 L_CURLY@[24; 25) "{" 23 L_CURLY@24..25 "{"
24 R_CURLY@[25; 26) "}" 24 R_CURLY@25..26 "}"
25 WHITESPACE@[26; 27) " " 25 WHITESPACE@26..27 " "
26 R_CURLY@[27; 28) "}" 26 R_CURLY@27..28 "}"
27 WHITESPACE@[28; 29) "\n" 27 WHITESPACE@28..29 "\n"
28 MACRO_DEF@[29; 49) 28 MACRO_DEF@29..49
29 MACRO_KW@[29; 34) "macro" 29 MACRO_KW@29..34 "macro"
30 WHITESPACE@[34; 35) " " 30 WHITESPACE@34..35 " "
31 NAME@[35; 36) 31 NAME@35..36
32 IDENT@[35; 36) "m" 32 IDENT@35..36 "m"
33 TOKEN_TREE@[36; 49) 33 TOKEN_TREE@36..49
34 TOKEN_TREE@[36; 46) 34 TOKEN_TREE@36..46
35 L_PAREN@[36; 37) "(" 35 L_PAREN@36..37 "("
36 DOLLAR@[37; 38) "$" 36 DOLLAR@37..38 "$"
37 IDENT@[38; 39) "i" 37 IDENT@38..39 "i"
38 COLON@[39; 40) ":" 38 COLON@39..40 ":"
39 IDENT@[40; 45) "ident" 39 IDENT@40..45 "ident"
40 R_PAREN@[45; 46) ")" 40 R_PAREN@45..46 ")"
41 WHITESPACE@[46; 47) " " 41 WHITESPACE@46..47 " "
42 TOKEN_TREE@[47; 49) 42 TOKEN_TREE@47..49
43 L_CURLY@[47; 48) "{" 43 L_CURLY@47..48 "{"
44 R_CURLY@[48; 49) "}" 44 R_CURLY@48..49 "}"
45 WHITESPACE@[49; 50) "\n" 45 WHITESPACE@49..50 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast b/crates/ra_syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast
index cfd79d9c2..1c527f60b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 24) 1SOURCE_FILE@0..24
2 MACRO_DEF@[0; 23) 2 MACRO_DEF@0..23
3 VISIBILITY@[0; 3) 3 VISIBILITY@0..3
4 PUB_KW@[0; 3) "pub" 4 PUB_KW@0..3 "pub"
5 WHITESPACE@[3; 4) " " 5 WHITESPACE@3..4 " "
6 MACRO_KW@[4; 9) "macro" 6 MACRO_KW@4..9 "macro"
7 WHITESPACE@[9; 10) " " 7 WHITESPACE@9..10 " "
8 NAME@[10; 11) 8 NAME@10..11
9 IDENT@[10; 11) "m" 9 IDENT@10..11 "m"
10 TOKEN_TREE@[11; 23) 10 TOKEN_TREE@11..23
11 TOKEN_TREE@[11; 20) 11 TOKEN_TREE@11..20
12 L_PAREN@[11; 12) "(" 12 L_PAREN@11..12 "("
13 DOLLAR@[12; 13) "$" 13 DOLLAR@12..13 "$"
14 COLON@[13; 14) ":" 14 COLON@13..14 ":"
15 IDENT@[14; 19) "ident" 15 IDENT@14..19 "ident"
16 R_PAREN@[19; 20) ")" 16 R_PAREN@19..20 ")"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 TOKEN_TREE@[21; 23) 18 TOKEN_TREE@21..23
19 L_CURLY@[21; 22) "{" 19 L_CURLY@21..22 "{"
20 R_CURLY@[22; 23) "}" 20 R_CURLY@22..23 "}"
21 WHITESPACE@[23; 24) "\n" 21 WHITESPACE@23..24 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0150_array_attrs.rast b/crates/ra_syntax/test_data/parser/inline/ok/0150_array_attrs.rast
index 1f297e479..3c00a2647 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0150_array_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0150_array_attrs.rast
@@ -1,47 +1,47 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 CONST_DEF@[0; 39) 2 CONST_DEF@0..39
3 CONST_KW@[0; 5) "const" 3 CONST_KW@0..5 "const"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "A" 6 IDENT@6..7 "A"
7 COLON@[7; 8) ":" 7 COLON@7..8 ":"
8 WHITESPACE@[8; 9) " " 8 WHITESPACE@8..9 " "
9 REFERENCE_TYPE@[9; 15) 9 REFERENCE_TYPE@9..15
10 AMP@[9; 10) "&" 10 AMP@9..10 "&"
11 SLICE_TYPE@[10; 15) 11 SLICE_TYPE@10..15
12 L_BRACK@[10; 11) "[" 12 L_BRACK@10..11 "["
13 PATH_TYPE@[11; 14) 13 PATH_TYPE@11..14
14 PATH@[11; 14) 14 PATH@11..14
15 PATH_SEGMENT@[11; 14) 15 PATH_SEGMENT@11..14
16 NAME_REF@[11; 14) 16 NAME_REF@11..14
17 IDENT@[11; 14) "i64" 17 IDENT@11..14 "i64"
18 R_BRACK@[14; 15) "]" 18 R_BRACK@14..15 "]"
19 WHITESPACE@[15; 16) " " 19 WHITESPACE@15..16 " "
20 EQ@[16; 17) "=" 20 EQ@16..17 "="
21 WHITESPACE@[17; 18) " " 21 WHITESPACE@17..18 " "
22 REF_EXPR@[18; 38) 22 REF_EXPR@18..38
23 AMP@[18; 19) "&" 23 AMP@18..19 "&"
24 ARRAY_EXPR@[19; 38) 24 ARRAY_EXPR@19..38
25 L_BRACK@[19; 20) "[" 25 L_BRACK@19..20 "["
26 LITERAL@[20; 21) 26 LITERAL@20..21
27 INT_NUMBER@[20; 21) "1" 27 INT_NUMBER@20..21 "1"
28 COMMA@[21; 22) "," 28 COMMA@21..22 ","
29 WHITESPACE@[22; 23) " " 29 WHITESPACE@22..23 " "
30 LITERAL@[23; 37) 30 LITERAL@23..37
31 ATTR@[23; 35) 31 ATTR@23..35
32 POUND@[23; 24) "#" 32 POUND@23..24 "#"
33 L_BRACK@[24; 25) "[" 33 L_BRACK@24..25 "["
34 PATH@[25; 28) 34 PATH@25..28
35 PATH_SEGMENT@[25; 28) 35 PATH_SEGMENT@25..28
36 NAME_REF@[25; 28) 36 NAME_REF@25..28
37 IDENT@[25; 28) "cfg" 37 IDENT@25..28 "cfg"
38 TOKEN_TREE@[28; 34) 38 TOKEN_TREE@28..34
39 L_PAREN@[28; 29) "(" 39 L_PAREN@28..29 "("
40 IDENT@[29; 33) "test" 40 IDENT@29..33 "test"
41 R_PAREN@[33; 34) ")" 41 R_PAREN@33..34 ")"
42 R_BRACK@[34; 35) "]" 42 R_BRACK@34..35 "]"
43 WHITESPACE@[35; 36) " " 43 WHITESPACE@35..36 " "
44 INT_NUMBER@[36; 37) "2" 44 INT_NUMBER@36..37 "2"
45 R_BRACK@[37; 38) "]" 45 R_BRACK@37..38 "]"
46 SEMICOLON@[38; 39) ";" 46 SEMICOLON@38..39 ";"
47 WHITESPACE@[39; 40) "\n" 47 WHITESPACE@39..40 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0150_impl_type_params.rast b/crates/ra_syntax/test_data/parser/inline/ok/0150_impl_type_params.rast
index 2d46eebb3..e70c3b710 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0150_impl_type_params.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0150_impl_type_params.rast
@@ -1,38 +1,38 @@
1SOURCE_FILE@[0; 29) 1SOURCE_FILE@0..29
2 IMPL_DEF@[0; 28) 2 IMPL_DEF@0..28
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 TYPE_PARAM_LIST@[4; 18) 4 TYPE_PARAM_LIST@4..18
5 L_ANGLE@[4; 5) "<" 5 L_ANGLE@4..5 "<"
6 CONST_PARAM@[5; 17) 6 CONST_PARAM@5..17
7 CONST_KW@[5; 10) "const" 7 CONST_KW@5..10 "const"
8 WHITESPACE@[10; 11) " " 8 WHITESPACE@10..11 " "
9 NAME@[11; 12) 9 NAME@11..12
10 IDENT@[11; 12) "N" 10 IDENT@11..12 "N"
11 COLON@[12; 13) ":" 11 COLON@12..13 ":"
12 WHITESPACE@[13; 14) " " 12 WHITESPACE@13..14 " "
13 PATH_TYPE@[14; 17) 13 PATH_TYPE@14..17
14 PATH@[14; 17) 14 PATH@14..17
15 PATH_SEGMENT@[14; 17) 15 PATH_SEGMENT@14..17
16 NAME_REF@[14; 17) 16 NAME_REF@14..17
17 IDENT@[14; 17) "u32" 17 IDENT@14..17 "u32"
18 R_ANGLE@[17; 18) ">" 18 R_ANGLE@17..18 ">"
19 WHITESPACE@[18; 19) " " 19 WHITESPACE@18..19 " "
20 PATH_TYPE@[19; 25) 20 PATH_TYPE@19..25
21 PATH@[19; 25) 21 PATH@19..25
22 PATH_SEGMENT@[19; 25) 22 PATH_SEGMENT@19..25
23 NAME_REF@[19; 22) 23 NAME_REF@19..22
24 IDENT@[19; 22) "Bar" 24 IDENT@19..22 "Bar"
25 TYPE_ARG_LIST@[22; 25) 25 TYPE_ARG_LIST@22..25
26 L_ANGLE@[22; 23) "<" 26 L_ANGLE@22..23 "<"
27 TYPE_ARG@[23; 24) 27 TYPE_ARG@23..24
28 PATH_TYPE@[23; 24) 28 PATH_TYPE@23..24
29 PATH@[23; 24) 29 PATH@23..24
30 PATH_SEGMENT@[23; 24) 30 PATH_SEGMENT@23..24
31 NAME_REF@[23; 24) 31 NAME_REF@23..24
32 IDENT@[23; 24) "N" 32 IDENT@23..24 "N"
33 R_ANGLE@[24; 25) ">" 33 R_ANGLE@24..25 ">"
34 WHITESPACE@[25; 26) " " 34 WHITESPACE@25..26 " "
35 ITEM_LIST@[26; 28) 35 ITEM_LIST@26..28
36 L_CURLY@[26; 27) "{" 36 L_CURLY@26..27 "{"
37 R_CURLY@[27; 28) "}" 37 R_CURLY@27..28 "}"
38 WHITESPACE@[28; 29) "\n" 38 WHITESPACE@28..29 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0151_trait_alias.rast b/crates/ra_syntax/test_data/parser/inline/ok/0151_trait_alias.rast
index 167c0fffa..48d73a4e7 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0151_trait_alias.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0151_trait_alias.rast
@@ -1,128 +1,128 @@
1SOURCE_FILE@[0; 83) 1SOURCE_FILE@0..83
2 TRAIT_DEF@[0; 18) 2 TRAIT_DEF@0..18
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "Z" 6 IDENT@6..7 "Z"
7 TYPE_PARAM_LIST@[7; 10) 7 TYPE_PARAM_LIST@7..10
8 L_ANGLE@[7; 8) "<" 8 L_ANGLE@7..8 "<"
9 TYPE_PARAM@[8; 9) 9 TYPE_PARAM@8..9
10 NAME@[8; 9) 10 NAME@8..9
11 IDENT@[8; 9) "U" 11 IDENT@8..9 "U"
12 R_ANGLE@[9; 10) ">" 12 R_ANGLE@9..10 ">"
13 WHITESPACE@[10; 11) " " 13 WHITESPACE@10..11 " "
14 EQ@[11; 12) "=" 14 EQ@11..12 "="
15 WHITESPACE@[12; 13) " " 15 WHITESPACE@12..13 " "
16 TYPE_BOUND_LIST@[13; 17) 16 TYPE_BOUND_LIST@13..17
17 TYPE_BOUND@[13; 17) 17 TYPE_BOUND@13..17
18 PATH_TYPE@[13; 17) 18 PATH_TYPE@13..17
19 PATH@[13; 17) 19 PATH@13..17
20 PATH_SEGMENT@[13; 17) 20 PATH_SEGMENT@13..17
21 NAME_REF@[13; 14) 21 NAME_REF@13..14
22 IDENT@[13; 14) "T" 22 IDENT@13..14 "T"
23 TYPE_ARG_LIST@[14; 17) 23 TYPE_ARG_LIST@14..17
24 L_ANGLE@[14; 15) "<" 24 L_ANGLE@14..15 "<"
25 TYPE_ARG@[15; 16) 25 TYPE_ARG@15..16
26 PATH_TYPE@[15; 16) 26 PATH_TYPE@15..16
27 PATH@[15; 16) 27 PATH@15..16
28 PATH_SEGMENT@[15; 16) 28 PATH_SEGMENT@15..16
29 NAME_REF@[15; 16) 29 NAME_REF@15..16
30 IDENT@[15; 16) "U" 30 IDENT@15..16 "U"
31 R_ANGLE@[16; 17) ">" 31 R_ANGLE@16..17 ">"
32 SEMICOLON@[17; 18) ";" 32 SEMICOLON@17..18 ";"
33 WHITESPACE@[18; 19) "\n" 33 WHITESPACE@18..19 "\n"
34 TRAIT_DEF@[19; 51) 34 TRAIT_DEF@19..51
35 TRAIT_KW@[19; 24) "trait" 35 TRAIT_KW@19..24 "trait"
36 WHITESPACE@[24; 25) " " 36 WHITESPACE@24..25 " "
37 NAME@[25; 26) 37 NAME@25..26
38 IDENT@[25; 26) "Z" 38 IDENT@25..26 "Z"
39 TYPE_PARAM_LIST@[26; 29) 39 TYPE_PARAM_LIST@26..29
40 L_ANGLE@[26; 27) "<" 40 L_ANGLE@26..27 "<"
41 TYPE_PARAM@[27; 28) 41 TYPE_PARAM@27..28
42 NAME@[27; 28) 42 NAME@27..28
43 IDENT@[27; 28) "U" 43 IDENT@27..28 "U"
44 R_ANGLE@[28; 29) ">" 44 R_ANGLE@28..29 ">"
45 WHITESPACE@[29; 30) " " 45 WHITESPACE@29..30 " "
46 EQ@[30; 31) "=" 46 EQ@30..31 "="
47 WHITESPACE@[31; 32) " " 47 WHITESPACE@31..32 " "
48 TYPE_BOUND_LIST@[32; 36) 48 TYPE_BOUND_LIST@32..36
49 TYPE_BOUND@[32; 36) 49 TYPE_BOUND@32..36
50 PATH_TYPE@[32; 36) 50 PATH_TYPE@32..36
51 PATH@[32; 36) 51 PATH@32..36
52 PATH_SEGMENT@[32; 36) 52 PATH_SEGMENT@32..36
53 NAME_REF@[32; 33) 53 NAME_REF@32..33
54 IDENT@[32; 33) "T" 54 IDENT@32..33 "T"
55 TYPE_ARG_LIST@[33; 36) 55 TYPE_ARG_LIST@33..36
56 L_ANGLE@[33; 34) "<" 56 L_ANGLE@33..34 "<"
57 TYPE_ARG@[34; 35) 57 TYPE_ARG@34..35
58 PATH_TYPE@[34; 35) 58 PATH_TYPE@34..35
59 PATH@[34; 35) 59 PATH@34..35
60 PATH_SEGMENT@[34; 35) 60 PATH_SEGMENT@34..35
61 NAME_REF@[34; 35) 61 NAME_REF@34..35
62 IDENT@[34; 35) "U" 62 IDENT@34..35 "U"
63 R_ANGLE@[35; 36) ">" 63 R_ANGLE@35..36 ">"
64 WHITESPACE@[36; 37) " " 64 WHITESPACE@36..37 " "
65 WHERE_CLAUSE@[37; 50) 65 WHERE_CLAUSE@37..50
66 WHERE_KW@[37; 42) "where" 66 WHERE_KW@37..42 "where"
67 WHITESPACE@[42; 43) " " 67 WHITESPACE@42..43 " "
68 WHERE_PRED@[43; 50) 68 WHERE_PRED@43..50
69 PATH_TYPE@[43; 44) 69 PATH_TYPE@43..44
70 PATH@[43; 44) 70 PATH@43..44
71 PATH_SEGMENT@[43; 44) 71 PATH_SEGMENT@43..44
72 NAME_REF@[43; 44) 72 NAME_REF@43..44
73 IDENT@[43; 44) "U" 73 IDENT@43..44 "U"
74 COLON@[44; 45) ":" 74 COLON@44..45 ":"
75 WHITESPACE@[45; 46) " " 75 WHITESPACE@45..46 " "
76 TYPE_BOUND_LIST@[46; 50) 76 TYPE_BOUND_LIST@46..50
77 TYPE_BOUND@[46; 50) 77 TYPE_BOUND@46..50
78 PATH_TYPE@[46; 50) 78 PATH_TYPE@46..50
79 PATH@[46; 50) 79 PATH@46..50
80 PATH_SEGMENT@[46; 50) 80 PATH_SEGMENT@46..50
81 NAME_REF@[46; 50) 81 NAME_REF@46..50
82 IDENT@[46; 50) "Copy" 82 IDENT@46..50 "Copy"
83 SEMICOLON@[50; 51) ";" 83 SEMICOLON@50..51 ";"
84 WHITESPACE@[51; 52) "\n" 84 WHITESPACE@51..52 "\n"
85 TRAIT_DEF@[52; 82) 85 TRAIT_DEF@52..82
86 TRAIT_KW@[52; 57) "trait" 86 TRAIT_KW@52..57 "trait"
87 WHITESPACE@[57; 58) " " 87 WHITESPACE@57..58 " "
88 NAME@[58; 59) 88 NAME@58..59
89 IDENT@[58; 59) "Z" 89 IDENT@58..59 "Z"
90 TYPE_PARAM_LIST@[59; 62) 90 TYPE_PARAM_LIST@59..62
91 L_ANGLE@[59; 60) "<" 91 L_ANGLE@59..60 "<"
92 TYPE_PARAM@[60; 61) 92 TYPE_PARAM@60..61
93 NAME@[60; 61) 93 NAME@60..61
94 IDENT@[60; 61) "U" 94 IDENT@60..61 "U"
95 R_ANGLE@[61; 62) ">" 95 R_ANGLE@61..62 ">"
96 WHITESPACE@[62; 63) " " 96 WHITESPACE@62..63 " "
97 EQ@[63; 64) "=" 97 EQ@63..64 "="
98 WHITESPACE@[64; 65) " " 98 WHITESPACE@64..65 " "
99 TYPE_BOUND_LIST@[65; 65) 99 TYPE_BOUND_LIST@65..65
100 WHERE_CLAUSE@[65; 81) 100 WHERE_CLAUSE@65..81
101 WHERE_KW@[65; 70) "where" 101 WHERE_KW@65..70 "where"
102 WHITESPACE@[70; 71) " " 102 WHITESPACE@70..71 " "
103 WHERE_PRED@[71; 81) 103 WHERE_PRED@71..81
104 PATH_TYPE@[71; 75) 104 PATH_TYPE@71..75
105 PATH@[71; 75) 105 PATH@71..75
106 PATH_SEGMENT@[71; 75) 106 PATH_SEGMENT@71..75
107 NAME_REF@[71; 75) 107 NAME_REF@71..75
108 IDENT@[71; 75) "Self" 108 IDENT@71..75 "Self"
109 COLON@[75; 76) ":" 109 COLON@75..76 ":"
110 WHITESPACE@[76; 77) " " 110 WHITESPACE@76..77 " "
111 TYPE_BOUND_LIST@[77; 81) 111 TYPE_BOUND_LIST@77..81
112 TYPE_BOUND@[77; 81) 112 TYPE_BOUND@77..81
113 PATH_TYPE@[77; 81) 113 PATH_TYPE@77..81
114 PATH@[77; 81) 114 PATH@77..81
115 PATH_SEGMENT@[77; 81) 115 PATH_SEGMENT@77..81
116 NAME_REF@[77; 78) 116 NAME_REF@77..78
117 IDENT@[77; 78) "T" 117 IDENT@77..78 "T"
118 TYPE_ARG_LIST@[78; 81) 118 TYPE_ARG_LIST@78..81
119 L_ANGLE@[78; 79) "<" 119 L_ANGLE@78..79 "<"
120 TYPE_ARG@[79; 80) 120 TYPE_ARG@79..80
121 PATH_TYPE@[79; 80) 121 PATH_TYPE@79..80
122 PATH@[79; 80) 122 PATH@79..80
123 PATH_SEGMENT@[79; 80) 123 PATH_SEGMENT@79..80
124 NAME_REF@[79; 80) 124 NAME_REF@79..80
125 IDENT@[79; 80) "U" 125 IDENT@79..80 "U"
126 R_ANGLE@[80; 81) ">" 126 R_ANGLE@80..81 ">"
127 SEMICOLON@[81; 82) ";" 127 SEMICOLON@81..82 ";"
128 WHITESPACE@[82; 83) "\n" 128 WHITESPACE@82..83 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast b/crates/ra_syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast
index 8092d7009..c2e290a62 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@0..34
2 FN_DEF@[0; 33) 2 FN_DEF@0..33
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 33) 11 BLOCK_EXPR@10..33
12 BLOCK@[10; 33) 12 BLOCK@10..33
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 CALL_EXPR@[16; 31) 15 CALL_EXPR@16..31
16 PATH_EXPR@[16; 19) 16 PATH_EXPR@16..19
17 PATH@[16; 19) 17 PATH@16..19
18 PATH_SEGMENT@[16; 19) 18 PATH_SEGMENT@16..19
19 NAME_REF@[16; 19) 19 NAME_REF@16..19
20 IDENT@[16; 19) "foo" 20 IDENT@16..19 "foo"
21 ARG_LIST@[19; 31) 21 ARG_LIST@19..31
22 L_PAREN@[19; 20) "(" 22 L_PAREN@19..20 "("
23 LITERAL@[20; 30) 23 LITERAL@20..30
24 ATTR@[20; 27) 24 ATTR@20..27
25 POUND@[20; 21) "#" 25 POUND@20..21 "#"
26 L_BRACK@[21; 22) "[" 26 L_BRACK@21..22 "["
27 PATH@[22; 26) 27 PATH@22..26
28 PATH_SEGMENT@[22; 26) 28 PATH_SEGMENT@22..26
29 NAME_REF@[22; 26) 29 NAME_REF@22..26
30 IDENT@[22; 26) "attr" 30 IDENT@22..26 "attr"
31 R_BRACK@[26; 27) "]" 31 R_BRACK@26..27 "]"
32 WHITESPACE@[27; 28) " " 32 WHITESPACE@27..28 " "
33 INT_NUMBER@[28; 30) "92" 33 INT_NUMBER@28..30 "92"
34 R_PAREN@[30; 31) ")" 34 R_PAREN@30..31 ")"
35 WHITESPACE@[31; 32) "\n" 35 WHITESPACE@31..32 "\n"
36 R_CURLY@[32; 33) "}" 36 R_CURLY@32..33 "}"
37 WHITESPACE@[33; 34) "\n" 37 WHITESPACE@33..34 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast b/crates/ra_syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast
index ee1bd361d..861065362 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast
@@ -1,58 +1,58 @@
1SOURCE_FILE@[0; 55) 1SOURCE_FILE@0..55
2 TYPE_ALIAS_DEF@[0; 24) 2 TYPE_ALIAS_DEF@0..24
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 8) 5 NAME@5..8
6 IDENT@[5; 8) "Foo" 6 IDENT@5..8 "Foo"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 EQ@[9; 10) "=" 8 EQ@9..10 "="
9 WHITESPACE@[10; 11) " " 9 WHITESPACE@10..11 " "
10 FN_POINTER_TYPE@[11; 23) 10 FN_POINTER_TYPE@11..23
11 FN_KW@[11; 13) "fn" 11 FN_KW@11..13 "fn"
12 PARAM_LIST@[13; 23) 12 PARAM_LIST@13..23
13 L_PAREN@[13; 14) "(" 13 L_PAREN@13..14 "("
14 PARAM@[14; 22) 14 PARAM@14..22
15 PATH_TYPE@[14; 22) 15 PATH_TYPE@14..22
16 PATH@[14; 22) 16 PATH@14..22
17 PATH@[14; 17) 17 PATH@14..17
18 PATH_SEGMENT@[14; 17) 18 PATH_SEGMENT@14..17
19 NAME_REF@[14; 17) 19 NAME_REF@14..17
20 IDENT@[14; 17) "Bar" 20 IDENT@14..17 "Bar"
21 COLON2@[17; 19) "::" 21 COLON2@17..19 "::"
22 PATH_SEGMENT@[19; 22) 22 PATH_SEGMENT@19..22
23 NAME_REF@[19; 22) 23 NAME_REF@19..22
24 IDENT@[19; 22) "Baz" 24 IDENT@19..22 "Baz"
25 R_PAREN@[22; 23) ")" 25 R_PAREN@22..23 ")"
26 SEMICOLON@[23; 24) ";" 26 SEMICOLON@23..24 ";"
27 WHITESPACE@[24; 25) "\n" 27 WHITESPACE@24..25 "\n"
28 TYPE_ALIAS_DEF@[25; 54) 28 TYPE_ALIAS_DEF@25..54
29 TYPE_KW@[25; 29) "type" 29 TYPE_KW@25..29 "type"
30 WHITESPACE@[29; 30) " " 30 WHITESPACE@29..30 " "
31 NAME@[30; 33) 31 NAME@30..33
32 IDENT@[30; 33) "Qux" 32 IDENT@30..33 "Qux"
33 WHITESPACE@[33; 34) " " 33 WHITESPACE@33..34 " "
34 EQ@[34; 35) "=" 34 EQ@34..35 "="
35 WHITESPACE@[35; 36) " " 35 WHITESPACE@35..36 " "
36 FN_POINTER_TYPE@[36; 53) 36 FN_POINTER_TYPE@36..53
37 FN_KW@[36; 38) "fn" 37 FN_KW@36..38 "fn"
38 PARAM_LIST@[38; 53) 38 PARAM_LIST@38..53
39 L_PAREN@[38; 39) "(" 39 L_PAREN@38..39 "("
40 PARAM@[39; 52) 40 PARAM@39..52
41 BIND_PAT@[39; 42) 41 BIND_PAT@39..42
42 NAME@[39; 42) 42 NAME@39..42
43 IDENT@[39; 42) "baz" 43 IDENT@39..42 "baz"
44 COLON@[42; 43) ":" 44 COLON@42..43 ":"
45 WHITESPACE@[43; 44) " " 45 WHITESPACE@43..44 " "
46 PATH_TYPE@[44; 52) 46 PATH_TYPE@44..52
47 PATH@[44; 52) 47 PATH@44..52
48 PATH@[44; 47) 48 PATH@44..47
49 PATH_SEGMENT@[44; 47) 49 PATH_SEGMENT@44..47
50 NAME_REF@[44; 47) 50 NAME_REF@44..47
51 IDENT@[44; 47) "Bar" 51 IDENT@44..47 "Bar"
52 COLON2@[47; 49) "::" 52 COLON2@47..49 "::"
53 PATH_SEGMENT@[49; 52) 53 PATH_SEGMENT@49..52
54 NAME_REF@[49; 52) 54 NAME_REF@49..52
55 IDENT@[49; 52) "Baz" 55 IDENT@49..52 "Baz"
56 R_PAREN@[52; 53) ")" 56 R_PAREN@52..53 ")"
57 SEMICOLON@[53; 54) ";" 57 SEMICOLON@53..54 ";"
58 WHITESPACE@[54; 55) "\n" 58 WHITESPACE@54..55 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0155_closure_params.rast b/crates/ra_syntax/test_data/parser/inline/ok/0155_closure_params.rast
index a5f8b6480..dad3dfe4d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0155_closure_params.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0155_closure_params.rast
@@ -1,70 +1,70 @@
1SOURCE_FILE@[0; 63) 1SOURCE_FILE@0..63
2 FN_DEF@[0; 62) 2 FN_DEF@0..62
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 62) 11 BLOCK_EXPR@10..62
12 BLOCK@[10; 62) 12 BLOCK@10..62
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 15) "\n " 14 WHITESPACE@11..15 "\n "
15 LET_STMT@[15; 60) 15 LET_STMT@15..60
16 LET_KW@[15; 18) "let" 16 LET_KW@15..18 "let"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 BIND_PAT@[19; 22) 18 BIND_PAT@19..22
19 NAME@[19; 22) 19 NAME@19..22
20 IDENT@[19; 22) "foo" 20 IDENT@19..22 "foo"
21 WHITESPACE@[22; 23) " " 21 WHITESPACE@22..23 " "
22 EQ@[23; 24) "=" 22 EQ@23..24 "="
23 WHITESPACE@[24; 25) " " 23 WHITESPACE@24..25 " "
24 LAMBDA_EXPR@[25; 59) 24 LAMBDA_EXPR@25..59
25 PARAM_LIST@[25; 56) 25 PARAM_LIST@25..56
26 PIPE@[25; 26) "|" 26 PIPE@25..26 "|"
27 PARAM@[26; 29) 27 PARAM@26..29
28 BIND_PAT@[26; 29) 28 BIND_PAT@26..29
29 NAME@[26; 29) 29 NAME@26..29
30 IDENT@[26; 29) "bar" 30 IDENT@26..29 "bar"
31 COMMA@[29; 30) "," 31 COMMA@29..30 ","
32 WHITESPACE@[30; 31) " " 32 WHITESPACE@30..31 " "
33 PARAM@[31; 39) 33 PARAM@31..39
34 BIND_PAT@[31; 34) 34 BIND_PAT@31..34
35 NAME@[31; 34) 35 NAME@31..34
36 IDENT@[31; 34) "baz" 36 IDENT@31..34 "baz"
37 COLON@[34; 35) ":" 37 COLON@34..35 ":"
38 WHITESPACE@[35; 36) " " 38 WHITESPACE@35..36 " "
39 PATH_TYPE@[36; 39) 39 PATH_TYPE@36..39
40 PATH@[36; 39) 40 PATH@36..39
41 PATH_SEGMENT@[36; 39) 41 PATH_SEGMENT@36..39
42 NAME_REF@[36; 39) 42 NAME_REF@36..39
43 IDENT@[36; 39) "Baz" 43 IDENT@36..39 "Baz"
44 COMMA@[39; 40) "," 44 COMMA@39..40 ","
45 WHITESPACE@[40; 41) " " 45 WHITESPACE@40..41 " "
46 PARAM@[41; 55) 46 PARAM@41..55
47 BIND_PAT@[41; 44) 47 BIND_PAT@41..44
48 NAME@[41; 44) 48 NAME@41..44
49 IDENT@[41; 44) "qux" 49 IDENT@41..44 "qux"
50 COLON@[44; 45) ":" 50 COLON@44..45 ":"
51 WHITESPACE@[45; 46) " " 51 WHITESPACE@45..46 " "
52 PATH_TYPE@[46; 55) 52 PATH_TYPE@46..55
53 PATH@[46; 55) 53 PATH@46..55
54 PATH@[46; 49) 54 PATH@46..49
55 PATH_SEGMENT@[46; 49) 55 PATH_SEGMENT@46..49
56 NAME_REF@[46; 49) 56 NAME_REF@46..49
57 IDENT@[46; 49) "Qux" 57 IDENT@46..49 "Qux"
58 COLON2@[49; 51) "::" 58 COLON2@49..51 "::"
59 PATH_SEGMENT@[51; 55) 59 PATH_SEGMENT@51..55
60 NAME_REF@[51; 55) 60 NAME_REF@51..55
61 IDENT@[51; 55) "Quux" 61 IDENT@51..55 "Quux"
62 PIPE@[55; 56) "|" 62 PIPE@55..56 "|"
63 WHITESPACE@[56; 57) " " 63 WHITESPACE@56..57 " "
64 TUPLE_EXPR@[57; 59) 64 TUPLE_EXPR@57..59
65 L_PAREN@[57; 58) "(" 65 L_PAREN@57..58 "("
66 R_PAREN@[58; 59) ")" 66 R_PAREN@58..59 ")"
67 SEMICOLON@[59; 60) ";" 67 SEMICOLON@59..60 ";"
68 WHITESPACE@[60; 61) "\n" 68 WHITESPACE@60..61 "\n"
69 R_CURLY@[61; 62) "}" 69 R_CURLY@61..62 "}"
70 WHITESPACE@[62; 63) "\n" 70 WHITESPACE@62..63 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0156_fn_def_param.rast b/crates/ra_syntax/test_data/parser/inline/ok/0156_fn_def_param.rast
index 103e254a6..3110bf5c0 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0156_fn_def_param.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0156_fn_def_param.rast
@@ -1,44 +1,44 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@0..30
2 FN_DEF@[0; 29) 2 FN_DEF@0..29
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 26) 7 PARAM_LIST@6..26
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 25) 9 PARAM@7..25
10 TUPLE_PAT@[7; 13) 10 TUPLE_PAT@7..13
11 L_PAREN@[7; 8) "(" 11 L_PAREN@7..8 "("
12 BIND_PAT@[8; 9) 12 BIND_PAT@8..9
13 NAME@[8; 9) 13 NAME@8..9
14 IDENT@[8; 9) "x" 14 IDENT@8..9 "x"
15 COMMA@[9; 10) "," 15 COMMA@9..10 ","
16 WHITESPACE@[10; 11) " " 16 WHITESPACE@10..11 " "
17 BIND_PAT@[11; 12) 17 BIND_PAT@11..12
18 NAME@[11; 12) 18 NAME@11..12
19 IDENT@[11; 12) "y" 19 IDENT@11..12 "y"
20 R_PAREN@[12; 13) ")" 20 R_PAREN@12..13 ")"
21 COLON@[13; 14) ":" 21 COLON@13..14 ":"
22 WHITESPACE@[14; 15) " " 22 WHITESPACE@14..15 " "
23 TUPLE_TYPE@[15; 25) 23 TUPLE_TYPE@15..25
24 L_PAREN@[15; 16) "(" 24 L_PAREN@15..16 "("
25 PATH_TYPE@[16; 19) 25 PATH_TYPE@16..19
26 PATH@[16; 19) 26 PATH@16..19
27 PATH_SEGMENT@[16; 19) 27 PATH_SEGMENT@16..19
28 NAME_REF@[16; 19) 28 NAME_REF@16..19
29 IDENT@[16; 19) "i32" 29 IDENT@16..19 "i32"
30 COMMA@[19; 20) "," 30 COMMA@19..20 ","
31 WHITESPACE@[20; 21) " " 31 WHITESPACE@20..21 " "
32 PATH_TYPE@[21; 24) 32 PATH_TYPE@21..24
33 PATH@[21; 24) 33 PATH@21..24
34 PATH_SEGMENT@[21; 24) 34 PATH_SEGMENT@21..24
35 NAME_REF@[21; 24) 35 NAME_REF@21..24
36 IDENT@[21; 24) "i32" 36 IDENT@21..24 "i32"
37 R_PAREN@[24; 25) ")" 37 R_PAREN@24..25 ")"
38 R_PAREN@[25; 26) ")" 38 R_PAREN@25..26 ")"
39 WHITESPACE@[26; 27) " " 39 WHITESPACE@26..27 " "
40 BLOCK_EXPR@[27; 29) 40 BLOCK_EXPR@27..29
41 BLOCK@[27; 29) 41 BLOCK@27..29
42 L_CURLY@[27; 28) "{" 42 L_CURLY@27..28 "{"
43 R_CURLY@[28; 29) "}" 43 R_CURLY@28..29 "}"
44 WHITESPACE@[29; 30) "\n" 44 WHITESPACE@29..30 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0156_or_pattern.rast b/crates/ra_syntax/test_data/parser/inline/ok/0156_or_pattern.rast
index 3a196d3c0..3f3e6a9a2 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0156_or_pattern.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0156_or_pattern.rast
@@ -1,112 +1,112 @@
1SOURCE_FILE@[0; 130) 1SOURCE_FILE@0..130
2 FN_DEF@[0; 129) 2 FN_DEF@0..129
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 129) 11 BLOCK_EXPR@10..129
12 BLOCK@[10; 129) 12 BLOCK@10..129
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 MATCH_EXPR@[16; 127) 15 MATCH_EXPR@16..127
16 MATCH_KW@[16; 21) "match" 16 MATCH_KW@16..21 "match"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 TUPLE_EXPR@[22; 24) 18 TUPLE_EXPR@22..24
19 L_PAREN@[22; 23) "(" 19 L_PAREN@22..23 "("
20 R_PAREN@[23; 24) ")" 20 R_PAREN@23..24 ")"
21 WHITESPACE@[24; 25) " " 21 WHITESPACE@24..25 " "
22 MATCH_ARM_LIST@[25; 127) 22 MATCH_ARM_LIST@25..127
23 L_CURLY@[25; 26) "{" 23 L_CURLY@25..26 "{"
24 WHITESPACE@[26; 35) "\n " 24 WHITESPACE@26..35 "\n "
25 MATCH_ARM@[35; 48) 25 MATCH_ARM@35..48
26 PAREN_PAT@[35; 42) 26 PAREN_PAT@35..42
27 L_PAREN@[35; 36) "(" 27 L_PAREN@35..36 "("
28 OR_PAT@[36; 41) 28 OR_PAT@36..41
29 PLACEHOLDER_PAT@[36; 37) 29 PLACEHOLDER_PAT@36..37
30 UNDERSCORE@[36; 37) "_" 30 UNDERSCORE@36..37 "_"
31 WHITESPACE@[37; 38) " " 31 WHITESPACE@37..38 " "
32 PIPE@[38; 39) "|" 32 PIPE@38..39 "|"
33 WHITESPACE@[39; 40) " " 33 WHITESPACE@39..40 " "
34 PLACEHOLDER_PAT@[40; 41) 34 PLACEHOLDER_PAT@40..41
35 UNDERSCORE@[40; 41) "_" 35 UNDERSCORE@40..41 "_"
36 R_PAREN@[41; 42) ")" 36 R_PAREN@41..42 ")"
37 WHITESPACE@[42; 43) " " 37 WHITESPACE@42..43 " "
38 FAT_ARROW@[43; 45) "=>" 38 FAT_ARROW@43..45 "=>"
39 WHITESPACE@[45; 46) " " 39 WHITESPACE@45..46 " "
40 TUPLE_EXPR@[46; 48) 40 TUPLE_EXPR@46..48
41 L_PAREN@[46; 47) "(" 41 L_PAREN@46..47 "("
42 R_PAREN@[47; 48) ")" 42 R_PAREN@47..48 ")"
43 COMMA@[48; 49) "," 43 COMMA@48..49 ","
44 WHITESPACE@[49; 58) "\n " 44 WHITESPACE@49..58 "\n "
45 MATCH_ARM@[58; 72) 45 MATCH_ARM@58..72
46 REF_PAT@[58; 66) 46 REF_PAT@58..66
47 AMP@[58; 59) "&" 47 AMP@58..59 "&"
48 PAREN_PAT@[59; 66) 48 PAREN_PAT@59..66
49 L_PAREN@[59; 60) "(" 49 L_PAREN@59..60 "("
50 OR_PAT@[60; 65) 50 OR_PAT@60..65
51 PLACEHOLDER_PAT@[60; 61) 51 PLACEHOLDER_PAT@60..61
52 UNDERSCORE@[60; 61) "_" 52 UNDERSCORE@60..61 "_"
53 WHITESPACE@[61; 62) " " 53 WHITESPACE@61..62 " "
54 PIPE@[62; 63) "|" 54 PIPE@62..63 "|"
55 WHITESPACE@[63; 64) " " 55 WHITESPACE@63..64 " "
56 PLACEHOLDER_PAT@[64; 65) 56 PLACEHOLDER_PAT@64..65
57 UNDERSCORE@[64; 65) "_" 57 UNDERSCORE@64..65 "_"
58 R_PAREN@[65; 66) ")" 58 R_PAREN@65..66 ")"
59 WHITESPACE@[66; 67) " " 59 WHITESPACE@66..67 " "
60 FAT_ARROW@[67; 69) "=>" 60 FAT_ARROW@67..69 "=>"
61 WHITESPACE@[69; 70) " " 61 WHITESPACE@69..70 " "
62 TUPLE_EXPR@[70; 72) 62 TUPLE_EXPR@70..72
63 L_PAREN@[70; 71) "(" 63 L_PAREN@70..71 "("
64 R_PAREN@[71; 72) ")" 64 R_PAREN@71..72 ")"
65 COMMA@[72; 73) "," 65 COMMA@72..73 ","
66 WHITESPACE@[73; 82) "\n " 66 WHITESPACE@73..82 "\n "
67 MATCH_ARM@[82; 96) 67 MATCH_ARM@82..96
68 TUPLE_PAT@[82; 90) 68 TUPLE_PAT@82..90
69 L_PAREN@[82; 83) "(" 69 L_PAREN@82..83 "("
70 OR_PAT@[83; 88) 70 OR_PAT@83..88
71 PLACEHOLDER_PAT@[83; 84) 71 PLACEHOLDER_PAT@83..84
72 UNDERSCORE@[83; 84) "_" 72 UNDERSCORE@83..84 "_"
73 WHITESPACE@[84; 85) " " 73 WHITESPACE@84..85 " "
74 PIPE@[85; 86) "|" 74 PIPE@85..86 "|"
75 WHITESPACE@[86; 87) " " 75 WHITESPACE@86..87 " "
76 PLACEHOLDER_PAT@[87; 88) 76 PLACEHOLDER_PAT@87..88
77 UNDERSCORE@[87; 88) "_" 77 UNDERSCORE@87..88 "_"
78 COMMA@[88; 89) "," 78 COMMA@88..89 ","
79 R_PAREN@[89; 90) ")" 79 R_PAREN@89..90 ")"
80 WHITESPACE@[90; 91) " " 80 WHITESPACE@90..91 " "
81 FAT_ARROW@[91; 93) "=>" 81 FAT_ARROW@91..93 "=>"
82 WHITESPACE@[93; 94) " " 82 WHITESPACE@93..94 " "
83 TUPLE_EXPR@[94; 96) 83 TUPLE_EXPR@94..96
84 L_PAREN@[94; 95) "(" 84 L_PAREN@94..95 "("
85 R_PAREN@[95; 96) ")" 85 R_PAREN@95..96 ")"
86 COMMA@[96; 97) "," 86 COMMA@96..97 ","
87 WHITESPACE@[97; 106) "\n " 87 WHITESPACE@97..106 "\n "
88 MATCH_ARM@[106; 120) 88 MATCH_ARM@106..120
89 SLICE_PAT@[106; 114) 89 SLICE_PAT@106..114
90 L_BRACK@[106; 107) "[" 90 L_BRACK@106..107 "["
91 OR_PAT@[107; 112) 91 OR_PAT@107..112
92 PLACEHOLDER_PAT@[107; 108) 92 PLACEHOLDER_PAT@107..108
93 UNDERSCORE@[107; 108) "_" 93 UNDERSCORE@107..108 "_"
94 WHITESPACE@[108; 109) " " 94 WHITESPACE@108..109 " "
95 PIPE@[109; 110) "|" 95 PIPE@109..110 "|"
96 WHITESPACE@[110; 111) " " 96 WHITESPACE@110..111 " "
97 PLACEHOLDER_PAT@[111; 112) 97 PLACEHOLDER_PAT@111..112
98 UNDERSCORE@[111; 112) "_" 98 UNDERSCORE@111..112 "_"
99 COMMA@[112; 113) "," 99 COMMA@112..113 ","
100 R_BRACK@[113; 114) "]" 100 R_BRACK@113..114 "]"
101 WHITESPACE@[114; 115) " " 101 WHITESPACE@114..115 " "
102 FAT_ARROW@[115; 117) "=>" 102 FAT_ARROW@115..117 "=>"
103 WHITESPACE@[117; 118) " " 103 WHITESPACE@117..118 " "
104 TUPLE_EXPR@[118; 120) 104 TUPLE_EXPR@118..120
105 L_PAREN@[118; 119) "(" 105 L_PAREN@118..119 "("
106 R_PAREN@[119; 120) ")" 106 R_PAREN@119..120 ")"
107 COMMA@[120; 121) "," 107 COMMA@120..121 ","
108 WHITESPACE@[121; 126) "\n " 108 WHITESPACE@121..126 "\n "
109 R_CURLY@[126; 127) "}" 109 R_CURLY@126..127 "}"
110 WHITESPACE@[127; 128) "\n" 110 WHITESPACE@127..128 "\n"
111 R_CURLY@[128; 129) "}" 111 R_CURLY@128..129 "}"
112 WHITESPACE@[129; 130) "\n" 112 WHITESPACE@129..130 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast b/crates/ra_syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast
index e0081a9f2..fad9df007 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@0..23
2 TYPE_ALIAS_DEF@[0; 22) 2 TYPE_ALIAS_DEF@0..22
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 8) 5 NAME@5..8
6 IDENT@[5; 8) "Foo" 6 IDENT@5..8 "Foo"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 EQ@[9; 10) "=" 8 EQ@9..10 "="
9 WHITESPACE@[10; 11) " " 9 WHITESPACE@10..11 " "
10 FN_POINTER_TYPE@[11; 21) 10 FN_POINTER_TYPE@11..21
11 FN_KW@[11; 13) "fn" 11 FN_KW@11..13 "fn"
12 PARAM_LIST@[13; 21) 12 PARAM_LIST@13..21
13 L_PAREN@[13; 14) "(" 13 L_PAREN@13..14 "("
14 PARAM@[14; 20) 14 PARAM@14..20
15 PLACEHOLDER_PAT@[14; 15) 15 PLACEHOLDER_PAT@14..15
16 UNDERSCORE@[14; 15) "_" 16 UNDERSCORE@14..15 "_"
17 COLON@[15; 16) ":" 17 COLON@15..16 ":"
18 WHITESPACE@[16; 17) " " 18 WHITESPACE@16..17 " "
19 PATH_TYPE@[17; 20) 19 PATH_TYPE@17..20
20 PATH@[17; 20) 20 PATH@17..20
21 PATH_SEGMENT@[17; 20) 21 PATH_SEGMENT@17..20
22 NAME_REF@[17; 20) 22 NAME_REF@17..20
23 IDENT@[17; 20) "bar" 23 IDENT@17..20 "bar"
24 R_PAREN@[20; 21) ")" 24 R_PAREN@20..21 ")"
25 SEMICOLON@[21; 22) ";" 25 SEMICOLON@21..22 ";"
26 WHITESPACE@[22; 23) "\n" 26 WHITESPACE@22..23 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast b/crates/ra_syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast
index a378dd80b..e8a0e9ddd 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast
@@ -1,30 +1,30 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@0..23
2 ENUM_DEF@[0; 22) 2 ENUM_DEF@0..22
3 ENUM_KW@[0; 4) "enum" 3 ENUM_KW@0..4 "enum"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "E" 6 IDENT@5..6 "E"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 ENUM_VARIANT_LIST@[7; 22) 8 ENUM_VARIANT_LIST@7..22
9 L_CURLY@[7; 8) "{" 9 L_CURLY@7..8 "{"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 ENUM_VARIANT@[9; 20) 11 ENUM_VARIANT@9..20
12 NAME@[9; 10) 12 NAME@9..10
13 IDENT@[9; 10) "X" 13 IDENT@9..10 "X"
14 TUPLE_FIELD_DEF_LIST@[10; 15) 14 TUPLE_FIELD_DEF_LIST@10..15
15 L_PAREN@[10; 11) "(" 15 L_PAREN@10..11 "("
16 TUPLE_FIELD_DEF@[11; 14) 16 TUPLE_FIELD_DEF@11..14
17 PATH_TYPE@[11; 14) 17 PATH_TYPE@11..14
18 PATH@[11; 14) 18 PATH@11..14
19 PATH_SEGMENT@[11; 14) 19 PATH_SEGMENT@11..14
20 NAME_REF@[11; 14) 20 NAME_REF@11..14
21 IDENT@[11; 14) "i32" 21 IDENT@11..14 "i32"
22 R_PAREN@[14; 15) ")" 22 R_PAREN@14..15 ")"
23 WHITESPACE@[15; 16) " " 23 WHITESPACE@15..16 " "
24 EQ@[16; 17) "=" 24 EQ@16..17 "="
25 WHITESPACE@[17; 18) " " 25 WHITESPACE@17..18 " "
26 LITERAL@[18; 20) 26 LITERAL@18..20
27 INT_NUMBER@[18; 20) "10" 27 INT_NUMBER@18..20 "10"
28 WHITESPACE@[20; 21) " " 28 WHITESPACE@20..21 " "
29 R_CURLY@[21; 22) "}" 29 R_CURLY@21..22 "}"
30 WHITESPACE@[22; 23) "\n" 30 WHITESPACE@22..23 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast b/crates/ra_syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast
index 548be2698..50db9e967 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast
@@ -1,38 +1,38 @@
1SOURCE_FILE@[0; 28) 1SOURCE_FILE@0..28
2 FN_DEF@[0; 27) 2 FN_DEF@0..27
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 27) 11 BLOCK_EXPR@9..27
12 BLOCK@[9; 27) 12 BLOCK@9..27
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 25) 15 EXPR_STMT@15..25
16 BIN_EXPR@[15; 24) 16 BIN_EXPR@15..24
17 PATH_EXPR@[15; 16) 17 PATH_EXPR@15..16
18 PATH@[15; 16) 18 PATH@15..16
19 PATH_SEGMENT@[15; 16) 19 PATH_SEGMENT@15..16
20 NAME_REF@[15; 16) 20 NAME_REF@15..16
21 IDENT@[15; 16) "v" 21 IDENT@15..16 "v"
22 WHITESPACE@[16; 17) " " 22 WHITESPACE@16..17 " "
23 EQ@[17; 18) "=" 23 EQ@17..18 "="
24 WHITESPACE@[18; 19) " " 24 WHITESPACE@18..19 " "
25 BIN_EXPR@[19; 24) 25 BIN_EXPR@19..24
26 BLOCK_EXPR@[19; 22) 26 BLOCK_EXPR@19..22
27 BLOCK@[19; 22) 27 BLOCK@19..22
28 L_CURLY@[19; 20) "{" 28 L_CURLY@19..20 "{"
29 LITERAL@[20; 21) 29 LITERAL@20..21
30 INT_NUMBER@[20; 21) "1" 30 INT_NUMBER@20..21 "1"
31 R_CURLY@[21; 22) "}" 31 R_CURLY@21..22 "}"
32 AMP@[22; 23) "&" 32 AMP@22..23 "&"
33 LITERAL@[23; 24) 33 LITERAL@23..24
34 INT_NUMBER@[23; 24) "2" 34 INT_NUMBER@23..24 "2"
35 SEMICOLON@[24; 25) ";" 35 SEMICOLON@24..25 ";"
36 WHITESPACE@[25; 26) "\n" 36 WHITESPACE@25..26 "\n"
37 R_CURLY@[26; 27) "}" 37 R_CURLY@26..27 "}"
38 WHITESPACE@[27; 28) "\n" 38 WHITESPACE@27..28 "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast b/crates/ra_syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast
index a7a547fce..c05e05bf3 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast
@@ -1,45 +1,45 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@0..34
2 FN_DEF@[0; 33) 2 FN_DEF@0..33
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 33) 11 BLOCK_EXPR@10..33
12 BLOCK@[10; 33) 12 BLOCK@10..33
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 12) " " 14 WHITESPACE@11..12 " "
15 EXPR_STMT@[12; 31) 15 EXPR_STMT@12..31
16 CALL_EXPR@[12; 30) 16 CALL_EXPR@12..30
17 LAMBDA_EXPR@[12; 28) 17 LAMBDA_EXPR@12..28
18 PARAM_LIST@[12; 14) 18 PARAM_LIST@12..14
19 PIPE@[12; 13) "|" 19 PIPE@12..13 "|"
20 PIPE@[13; 14) "|" 20 PIPE@13..14 "|"
21 WHITESPACE@[14; 15) " " 21 WHITESPACE@14..15 " "
22 RET_TYPE@[15; 21) 22 RET_TYPE@15..21
23 THIN_ARROW@[15; 17) "->" 23 THIN_ARROW@15..17 "->"
24 WHITESPACE@[17; 18) " " 24 WHITESPACE@17..18 " "
25 PATH_TYPE@[18; 21) 25 PATH_TYPE@18..21
26 PATH@[18; 21) 26 PATH@18..21
27 PATH_SEGMENT@[18; 21) 27 PATH_SEGMENT@18..21
28 NAME_REF@[18; 21) 28 NAME_REF@18..21
29 IDENT@[18; 21) "i32" 29 IDENT@18..21 "i32"
30 WHITESPACE@[21; 22) " " 30 WHITESPACE@21..22 " "
31 BLOCK_EXPR@[22; 28) 31 BLOCK_EXPR@22..28
32 BLOCK@[22; 28) 32 BLOCK@22..28
33 L_CURLY@[22; 23) "{" 33 L_CURLY@22..23 "{"
34 WHITESPACE@[23; 24) " " 34 WHITESPACE@23..24 " "
35 LITERAL@[24; 26) 35 LITERAL@24..26
36 INT_NUMBER@[24; 26) "92" 36 INT_NUMBER@24..26 "92"
37 WHITESPACE@[26; 27) " " 37 WHITESPACE@26..27 " "
38 R_CURLY@[27; 28) "}" 38 R_CURLY@27..28 "}"
39 ARG_LIST@[28; 30) 39 ARG_LIST@28..30
40 L_PAREN@[28; 29) "(" 40 L_PAREN@28..29 "("
41 R_PAREN@[29; 30) ")" 41 R_PAREN@29..30 ")"
42 SEMICOLON@[30; 31) ";" 42 SEMICOLON@30..31 ";"
43 WHITESPACE@[31; 32) " " 43 WHITESPACE@31..32 " "
44 R_CURLY@[32; 33) "}" 44 R_CURLY@32..33 "}"
45 WHITESPACE@[33; 34) "\n" 45 WHITESPACE@33..34 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0000_empty.rast b/crates/ra_syntax/test_data/parser/ok/0000_empty.rast
index 08f5a942f..6b234b0b2 100644
--- a/crates/ra_syntax/test_data/parser/ok/0000_empty.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0000_empty.rast
@@ -1 +1 @@
SOURCE_FILE@[0; 0) SOURCE_FILE@0..0
diff --git a/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast b/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast
index fdc2d6768..705f7e001 100644
--- a/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 32) 1SOURCE_FILE@0..32
2 STRUCT_DEF@[0; 31) 2 STRUCT_DEF@0..31
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 TYPE_PARAM_LIST@[8; 17) 7 TYPE_PARAM_LIST@8..17
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 TYPE_PARAM@[9; 16) 9 TYPE_PARAM@9..16
10 NAME@[9; 10) 10 NAME@9..10
11 IDENT@[9; 10) "T" 11 IDENT@9..10 "T"
12 COLON@[10; 11) ":" 12 COLON@10..11 ":"
13 WHITESPACE@[11; 12) " " 13 WHITESPACE@11..12 " "
14 TYPE_BOUND_LIST@[12; 16) 14 TYPE_BOUND_LIST@12..16
15 TYPE_BOUND@[12; 16) 15 TYPE_BOUND@12..16
16 PATH_TYPE@[12; 16) 16 PATH_TYPE@12..16
17 PATH@[12; 16) 17 PATH@12..16
18 PATH_SEGMENT@[12; 16) 18 PATH_SEGMENT@12..16
19 NAME_REF@[12; 16) 19 NAME_REF@12..16
20 IDENT@[12; 16) "Copy" 20 IDENT@12..16 "Copy"
21 R_ANGLE@[16; 17) ">" 21 R_ANGLE@16..17 ">"
22 WHITESPACE@[17; 18) " " 22 WHITESPACE@17..18 " "
23 RECORD_FIELD_DEF_LIST@[18; 31) 23 RECORD_FIELD_DEF_LIST@18..31
24 L_CURLY@[18; 19) "{" 24 L_CURLY@18..19 "{"
25 WHITESPACE@[19; 24) "\n " 25 WHITESPACE@19..24 "\n "
26 RECORD_FIELD_DEF@[24; 28) 26 RECORD_FIELD_DEF@24..28
27 NAME@[24; 25) 27 NAME@24..25
28 IDENT@[24; 25) "f" 28 IDENT@24..25 "f"
29 COLON@[25; 26) ":" 29 COLON@25..26 ":"
30 WHITESPACE@[26; 27) " " 30 WHITESPACE@26..27 " "
31 PATH_TYPE@[27; 28) 31 PATH_TYPE@27..28
32 PATH@[27; 28) 32 PATH@27..28
33 PATH_SEGMENT@[27; 28) 33 PATH_SEGMENT@27..28
34 NAME_REF@[27; 28) 34 NAME_REF@27..28
35 IDENT@[27; 28) "T" 35 IDENT@27..28 "T"
36 COMMA@[28; 29) "," 36 COMMA@28..29 ","
37 WHITESPACE@[29; 30) "\n" 37 WHITESPACE@29..30 "\n"
38 R_CURLY@[30; 31) "}" 38 R_CURLY@30..31 "}"
39 WHITESPACE@[31; 32) "\n" 39 WHITESPACE@31..32 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast b/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast
index ef34702fd..a1d546491 100644
--- a/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 25) 1SOURCE_FILE@0..25
2 STRUCT_DEF@[0; 25) 2 STRUCT_DEF@0..25
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 25) 8 RECORD_FIELD_DEF_LIST@9..25
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 23) 11 RECORD_FIELD_DEF@15..23
12 NAME@[15; 18) 12 NAME@15..18
13 IDENT@[15; 18) "foo" 13 IDENT@15..18 "foo"
14 COLON@[18; 19) ":" 14 COLON@18..19 ":"
15 WHITESPACE@[19; 20) " " 15 WHITESPACE@19..20 " "
16 PATH_TYPE@[20; 23) 16 PATH_TYPE@20..23
17 PATH@[20; 23) 17 PATH@20..23
18 PATH_SEGMENT@[20; 23) 18 PATH_SEGMENT@20..23
19 NAME_REF@[20; 23) 19 NAME_REF@20..23
20 IDENT@[20; 23) "u32" 20 IDENT@20..23 "u32"
21 WHITESPACE@[23; 24) "\n" 21 WHITESPACE@23..24 "\n"
22 R_CURLY@[24; 25) "}" 22 R_CURLY@24..25 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast b/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast
index e3915c2df..67e21df13 100644
--- a/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast
@@ -1,2 +1,2 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@0..20
2 SHEBANG@[0; 20) "#!/use/bin/env rusti" 2 SHEBANG@0..20 "#!/use/bin/env rusti"
diff --git a/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast b/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast
index 955b789b5..993ba72b6 100644
--- a/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 13) 1SOURCE_FILE@0..13
2 FN_DEF@[0; 12) 2 FN_DEF@0..12
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 12) 11 BLOCK_EXPR@9..12
12 BLOCK@[9; 12) 12 BLOCK@9..12
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) "\n" 14 WHITESPACE@10..11 "\n"
15 R_CURLY@[11; 12) "}" 15 R_CURLY@11..12 "}"
16 WHITESPACE@[12; 13) "\n" 16 WHITESPACE@12..13 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast b/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast
index 308b5680f..42587243a 100644
--- a/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast
@@ -1,184 +1,184 @@
1SOURCE_FILE@[0; 236) 1SOURCE_FILE@0..236
2 ATTR@[0; 8) 2 ATTR@0..8
3 POUND@[0; 1) "#" 3 POUND@0..1 "#"
4 BANG@[1; 2) "!" 4 BANG@1..2 "!"
5 L_BRACK@[2; 3) "[" 5 L_BRACK@2..3 "["
6 PATH@[3; 7) 6 PATH@3..7
7 PATH_SEGMENT@[3; 7) 7 PATH_SEGMENT@3..7
8 NAME_REF@[3; 7) 8 NAME_REF@3..7
9 IDENT@[3; 7) "attr" 9 IDENT@3..7 "attr"
10 R_BRACK@[7; 8) "]" 10 R_BRACK@7..8 "]"
11 WHITESPACE@[8; 9) "\n" 11 WHITESPACE@8..9 "\n"
12 ATTR@[9; 23) 12 ATTR@9..23
13 POUND@[9; 10) "#" 13 POUND@9..10 "#"
14 BANG@[10; 11) "!" 14 BANG@10..11 "!"
15 L_BRACK@[11; 12) "[" 15 L_BRACK@11..12 "["
16 PATH@[12; 16) 16 PATH@12..16
17 PATH_SEGMENT@[12; 16) 17 PATH_SEGMENT@12..16
18 NAME_REF@[12; 16) 18 NAME_REF@12..16
19 IDENT@[12; 16) "attr" 19 IDENT@12..16 "attr"
20 TOKEN_TREE@[16; 22) 20 TOKEN_TREE@16..22
21 L_PAREN@[16; 17) "(" 21 L_PAREN@16..17 "("
22 TRUE_KW@[17; 21) "true" 22 TRUE_KW@17..21 "true"
23 R_PAREN@[21; 22) ")" 23 R_PAREN@21..22 ")"
24 R_BRACK@[22; 23) "]" 24 R_BRACK@22..23 "]"
25 WHITESPACE@[23; 24) "\n" 25 WHITESPACE@23..24 "\n"
26 ATTR@[24; 39) 26 ATTR@24..39
27 POUND@[24; 25) "#" 27 POUND@24..25 "#"
28 BANG@[25; 26) "!" 28 BANG@25..26 "!"
29 L_BRACK@[26; 27) "[" 29 L_BRACK@26..27 "["
30 PATH@[27; 31) 30 PATH@27..31
31 PATH_SEGMENT@[27; 31) 31 PATH_SEGMENT@27..31
32 NAME_REF@[27; 31) 32 NAME_REF@27..31
33 IDENT@[27; 31) "attr" 33 IDENT@27..31 "attr"
34 TOKEN_TREE@[31; 38) 34 TOKEN_TREE@31..38
35 L_PAREN@[31; 32) "(" 35 L_PAREN@31..32 "("
36 IDENT@[32; 37) "ident" 36 IDENT@32..37 "ident"
37 R_PAREN@[37; 38) ")" 37 R_PAREN@37..38 ")"
38 R_BRACK@[38; 39) "]" 38 R_BRACK@38..39 "]"
39 WHITESPACE@[39; 40) "\n" 39 WHITESPACE@39..40 "\n"
40 ATTR@[40; 116) 40 ATTR@40..116
41 POUND@[40; 41) "#" 41 POUND@40..41 "#"
42 BANG@[41; 42) "!" 42 BANG@41..42 "!"
43 L_BRACK@[42; 43) "[" 43 L_BRACK@42..43 "["
44 PATH@[43; 47) 44 PATH@43..47
45 PATH_SEGMENT@[43; 47) 45 PATH_SEGMENT@43..47
46 NAME_REF@[43; 47) 46 NAME_REF@43..47
47 IDENT@[43; 47) "attr" 47 IDENT@43..47 "attr"
48 TOKEN_TREE@[47; 115) 48 TOKEN_TREE@47..115
49 L_PAREN@[47; 48) "(" 49 L_PAREN@47..48 "("
50 IDENT@[48; 53) "ident" 50 IDENT@48..53 "ident"
51 COMMA@[53; 54) "," 51 COMMA@53..54 ","
52 WHITESPACE@[54; 55) " " 52 WHITESPACE@54..55 " "
53 INT_NUMBER@[55; 58) "100" 53 INT_NUMBER@55..58 "100"
54 COMMA@[58; 59) "," 54 COMMA@58..59 ","
55 WHITESPACE@[59; 60) " " 55 WHITESPACE@59..60 " "
56 TRUE_KW@[60; 64) "true" 56 TRUE_KW@60..64 "true"
57 COMMA@[64; 65) "," 57 COMMA@64..65 ","
58 WHITESPACE@[65; 66) " " 58 WHITESPACE@65..66 " "
59 STRING@[66; 72) "\"true\"" 59 STRING@66..72 "\"true\""
60 COMMA@[72; 73) "," 60 COMMA@72..73 ","
61 WHITESPACE@[73; 74) " " 61 WHITESPACE@73..74 " "
62 IDENT@[74; 79) "ident" 62 IDENT@74..79 "ident"
63 WHITESPACE@[79; 80) " " 63 WHITESPACE@79..80 " "
64 EQ@[80; 81) "=" 64 EQ@80..81 "="
65 WHITESPACE@[81; 82) " " 65 WHITESPACE@81..82 " "
66 INT_NUMBER@[82; 85) "100" 66 INT_NUMBER@82..85 "100"
67 COMMA@[85; 86) "," 67 COMMA@85..86 ","
68 WHITESPACE@[86; 87) " " 68 WHITESPACE@86..87 " "
69 IDENT@[87; 92) "ident" 69 IDENT@87..92 "ident"
70 WHITESPACE@[92; 93) " " 70 WHITESPACE@92..93 " "
71 EQ@[93; 94) "=" 71 EQ@93..94 "="
72 WHITESPACE@[94; 95) " " 72 WHITESPACE@94..95 " "
73 STRING@[95; 102) "\"hello\"" 73 STRING@95..102 "\"hello\""
74 COMMA@[102; 103) "," 74 COMMA@102..103 ","
75 WHITESPACE@[103; 104) " " 75 WHITESPACE@103..104 " "
76 IDENT@[104; 109) "ident" 76 IDENT@104..109 "ident"
77 TOKEN_TREE@[109; 114) 77 TOKEN_TREE@109..114
78 L_PAREN@[109; 110) "(" 78 L_PAREN@109..110 "("
79 INT_NUMBER@[110; 113) "100" 79 INT_NUMBER@110..113 "100"
80 R_PAREN@[113; 114) ")" 80 R_PAREN@113..114 ")"
81 R_PAREN@[114; 115) ")" 81 R_PAREN@114..115 ")"
82 R_BRACK@[115; 116) "]" 82 R_BRACK@115..116 "]"
83 WHITESPACE@[116; 117) "\n" 83 WHITESPACE@116..117 "\n"
84 ATTR@[117; 130) 84 ATTR@117..130
85 POUND@[117; 118) "#" 85 POUND@117..118 "#"
86 BANG@[118; 119) "!" 86 BANG@118..119 "!"
87 L_BRACK@[119; 120) "[" 87 L_BRACK@119..120 "["
88 PATH@[120; 124) 88 PATH@120..124
89 PATH_SEGMENT@[120; 124) 89 PATH_SEGMENT@120..124
90 NAME_REF@[120; 124) 90 NAME_REF@120..124
91 IDENT@[120; 124) "attr" 91 IDENT@120..124 "attr"
92 TOKEN_TREE@[124; 129) 92 TOKEN_TREE@124..129
93 L_PAREN@[124; 125) "(" 93 L_PAREN@124..125 "("
94 INT_NUMBER@[125; 128) "100" 94 INT_NUMBER@125..128 "100"
95 R_PAREN@[128; 129) ")" 95 R_PAREN@128..129 ")"
96 R_BRACK@[129; 130) "]" 96 R_BRACK@129..130 "]"
97 WHITESPACE@[130; 131) "\n" 97 WHITESPACE@130..131 "\n"
98 ATTR@[131; 155) 98 ATTR@131..155
99 POUND@[131; 132) "#" 99 POUND@131..132 "#"
100 BANG@[132; 133) "!" 100 BANG@132..133 "!"
101 L_BRACK@[133; 134) "[" 101 L_BRACK@133..134 "["
102 PATH@[134; 138) 102 PATH@134..138
103 PATH_SEGMENT@[134; 138) 103 PATH_SEGMENT@134..138
104 NAME_REF@[134; 138) 104 NAME_REF@134..138
105 IDENT@[134; 138) "attr" 105 IDENT@134..138 "attr"
106 TOKEN_TREE@[138; 154) 106 TOKEN_TREE@138..154
107 L_PAREN@[138; 139) "(" 107 L_PAREN@138..139 "("
108 IDENT@[139; 146) "enabled" 108 IDENT@139..146 "enabled"
109 WHITESPACE@[146; 147) " " 109 WHITESPACE@146..147 " "
110 EQ@[147; 148) "=" 110 EQ@147..148 "="
111 WHITESPACE@[148; 149) " " 111 WHITESPACE@148..149 " "
112 TRUE_KW@[149; 153) "true" 112 TRUE_KW@149..153 "true"
113 R_PAREN@[153; 154) ")" 113 R_PAREN@153..154 ")"
114 R_BRACK@[154; 155) "]" 114 R_BRACK@154..155 "]"
115 WHITESPACE@[155; 156) "\n" 115 WHITESPACE@155..156 "\n"
116 ATTR@[156; 173) 116 ATTR@156..173
117 POUND@[156; 157) "#" 117 POUND@156..157 "#"
118 BANG@[157; 158) "!" 118 BANG@157..158 "!"
119 L_BRACK@[158; 159) "[" 119 L_BRACK@158..159 "["
120 PATH@[159; 166) 120 PATH@159..166
121 PATH_SEGMENT@[159; 166) 121 PATH_SEGMENT@159..166
122 NAME_REF@[159; 166) 122 NAME_REF@159..166
123 IDENT@[159; 166) "enabled" 123 IDENT@159..166 "enabled"
124 TOKEN_TREE@[166; 172) 124 TOKEN_TREE@166..172
125 L_PAREN@[166; 167) "(" 125 L_PAREN@166..167 "("
126 TRUE_KW@[167; 171) "true" 126 TRUE_KW@167..171 "true"
127 R_PAREN@[171; 172) ")" 127 R_PAREN@171..172 ")"
128 R_BRACK@[172; 173) "]" 128 R_BRACK@172..173 "]"
129 WHITESPACE@[173; 174) "\n" 129 WHITESPACE@173..174 "\n"
130 ATTR@[174; 191) 130 ATTR@174..191
131 POUND@[174; 175) "#" 131 POUND@174..175 "#"
132 BANG@[175; 176) "!" 132 BANG@175..176 "!"
133 L_BRACK@[176; 177) "[" 133 L_BRACK@176..177 "["
134 PATH@[177; 181) 134 PATH@177..181
135 PATH_SEGMENT@[177; 181) 135 PATH_SEGMENT@177..181
136 NAME_REF@[177; 181) 136 NAME_REF@177..181
137 IDENT@[177; 181) "attr" 137 IDENT@177..181 "attr"
138 TOKEN_TREE@[181; 190) 138 TOKEN_TREE@181..190
139 L_PAREN@[181; 182) "(" 139 L_PAREN@181..182 "("
140 STRING@[182; 189) "\"hello\"" 140 STRING@182..189 "\"hello\""
141 R_PAREN@[189; 190) ")" 141 R_PAREN@189..190 ")"
142 R_BRACK@[190; 191) "]" 142 R_BRACK@190..191 "]"
143 WHITESPACE@[191; 192) "\n" 143 WHITESPACE@191..192 "\n"
144 ATTR@[192; 214) 144 ATTR@192..214
145 POUND@[192; 193) "#" 145 POUND@192..193 "#"
146 BANG@[193; 194) "!" 146 BANG@193..194 "!"
147 L_BRACK@[194; 195) "[" 147 L_BRACK@194..195 "["
148 PATH@[195; 199) 148 PATH@195..199
149 PATH_SEGMENT@[195; 199) 149 PATH_SEGMENT@195..199
150 NAME_REF@[195; 199) 150 NAME_REF@195..199
151 IDENT@[195; 199) "repr" 151 IDENT@195..199 "repr"
152 TOKEN_TREE@[199; 213) 152 TOKEN_TREE@199..213
153 L_PAREN@[199; 200) "(" 153 L_PAREN@199..200 "("
154 IDENT@[200; 201) "C" 154 IDENT@200..201 "C"
155 COMMA@[201; 202) "," 155 COMMA@201..202 ","
156 WHITESPACE@[202; 203) " " 156 WHITESPACE@202..203 " "
157 IDENT@[203; 208) "align" 157 IDENT@203..208 "align"
158 WHITESPACE@[208; 209) " " 158 WHITESPACE@208..209 " "
159 EQ@[209; 210) "=" 159 EQ@209..210 "="
160 WHITESPACE@[210; 211) " " 160 WHITESPACE@210..211 " "
161 INT_NUMBER@[211; 212) "4" 161 INT_NUMBER@211..212 "4"
162 R_PAREN@[212; 213) ")" 162 R_PAREN@212..213 ")"
163 R_BRACK@[213; 214) "]" 163 R_BRACK@213..214 "]"
164 WHITESPACE@[214; 215) "\n" 164 WHITESPACE@214..215 "\n"
165 ATTR@[215; 236) 165 ATTR@215..236
166 POUND@[215; 216) "#" 166 POUND@215..216 "#"
167 BANG@[216; 217) "!" 167 BANG@216..217 "!"
168 L_BRACK@[217; 218) "[" 168 L_BRACK@217..218 "["
169 PATH@[218; 222) 169 PATH@218..222
170 PATH_SEGMENT@[218; 222) 170 PATH_SEGMENT@218..222
171 NAME_REF@[218; 222) 171 NAME_REF@218..222
172 IDENT@[218; 222) "repr" 172 IDENT@218..222 "repr"
173 TOKEN_TREE@[222; 235) 173 TOKEN_TREE@222..235
174 L_PAREN@[222; 223) "(" 174 L_PAREN@222..223 "("
175 IDENT@[223; 224) "C" 175 IDENT@223..224 "C"
176 COMMA@[224; 225) "," 176 COMMA@224..225 ","
177 WHITESPACE@[225; 226) " " 177 WHITESPACE@225..226 " "
178 IDENT@[226; 231) "align" 178 IDENT@226..231 "align"
179 TOKEN_TREE@[231; 234) 179 TOKEN_TREE@231..234
180 L_PAREN@[231; 232) "(" 180 L_PAREN@231..232 "("
181 INT_NUMBER@[232; 233) "4" 181 INT_NUMBER@232..233 "4"
182 R_PAREN@[233; 234) ")" 182 R_PAREN@233..234 ")"
183 R_PAREN@[234; 235) ")" 183 R_PAREN@234..235 ")"
184 R_BRACK@[235; 236) "]" 184 R_BRACK@235..236 "]"
diff --git a/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast b/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast
index 4856b4f81..b5bdf0aa9 100644
--- a/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@0..69
2 EXTERN_CRATE_ITEM@[0; 17) 2 EXTERN_CRATE_ITEM@0..17
3 EXTERN_KW@[0; 6) "extern" 3 EXTERN_KW@0..6 "extern"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 CRATE_KW@[7; 12) "crate" 5 CRATE_KW@7..12 "crate"
6 WHITESPACE@[12; 13) " " 6 WHITESPACE@12..13 " "
7 NAME_REF@[13; 16) 7 NAME_REF@13..16
8 IDENT@[13; 16) "foo" 8 IDENT@13..16 "foo"
9 SEMICOLON@[16; 17) ";" 9 SEMICOLON@16..17 ";"
10 WHITESPACE@[17; 18) "\n" 10 WHITESPACE@17..18 "\n"
11 EXTERN_CRATE_ITEM@[18; 42) 11 EXTERN_CRATE_ITEM@18..42
12 EXTERN_KW@[18; 24) "extern" 12 EXTERN_KW@18..24 "extern"
13 WHITESPACE@[24; 25) " " 13 WHITESPACE@24..25 " "
14 CRATE_KW@[25; 30) "crate" 14 CRATE_KW@25..30 "crate"
15 WHITESPACE@[30; 31) " " 15 WHITESPACE@30..31 " "
16 NAME_REF@[31; 34) 16 NAME_REF@31..34
17 IDENT@[31; 34) "foo" 17 IDENT@31..34 "foo"
18 WHITESPACE@[34; 35) " " 18 WHITESPACE@34..35 " "
19 ALIAS@[35; 41) 19 ALIAS@35..41
20 AS_KW@[35; 37) "as" 20 AS_KW@35..37 "as"
21 WHITESPACE@[37; 38) " " 21 WHITESPACE@37..38 " "
22 NAME@[38; 41) 22 NAME@38..41
23 IDENT@[38; 41) "bar" 23 IDENT@38..41 "bar"
24 SEMICOLON@[41; 42) ";" 24 SEMICOLON@41..42 ";"
25 WHITESPACE@[42; 43) "\n" 25 WHITESPACE@42..43 "\n"
26 EXTERN_CRATE_ITEM@[43; 68) 26 EXTERN_CRATE_ITEM@43..68
27 EXTERN_KW@[43; 49) "extern" 27 EXTERN_KW@43..49 "extern"
28 WHITESPACE@[49; 50) " " 28 WHITESPACE@49..50 " "
29 CRATE_KW@[50; 55) "crate" 29 CRATE_KW@50..55 "crate"
30 WHITESPACE@[55; 56) " " 30 WHITESPACE@55..56 " "
31 SELF_KW@[56; 60) 31 SELF_KW@56..60
32 SELF_KW@[56; 60) "self" 32 SELF_KW@56..60 "self"
33 WHITESPACE@[60; 61) " " 33 WHITESPACE@60..61 " "
34 ALIAS@[61; 67) 34 ALIAS@61..67
35 AS_KW@[61; 63) "as" 35 AS_KW@61..63 "as"
36 WHITESPACE@[63; 64) " " 36 WHITESPACE@63..64 " "
37 NAME@[64; 67) 37 NAME@64..67
38 IDENT@[64; 67) "baz" 38 IDENT@64..67 "baz"
39 SEMICOLON@[67; 68) ";" 39 SEMICOLON@67..68 ";"
40 WHITESPACE@[68; 69) "\n" 40 WHITESPACE@68..69 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast b/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast
index 1c18edd4e..353bf2d2e 100644
--- a/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 118) 1SOURCE_FILE@0..118
2 MODULE@[0; 6) 2 MODULE@0..6
3 MOD_KW@[0; 3) "mod" 3 MOD_KW@0..3 "mod"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 NAME@[4; 5) 5 NAME@4..5
6 IDENT@[4; 5) "a" 6 IDENT@4..5 "a"
7 SEMICOLON@[5; 6) ";" 7 SEMICOLON@5..6 ";"
8 WHITESPACE@[6; 8) "\n\n" 8 WHITESPACE@6..8 "\n\n"
9 MODULE@[8; 17) 9 MODULE@8..17
10 MOD_KW@[8; 11) "mod" 10 MOD_KW@8..11 "mod"
11 WHITESPACE@[11; 12) " " 11 WHITESPACE@11..12 " "
12 NAME@[12; 13) 12 NAME@12..13
13 IDENT@[12; 13) "b" 13 IDENT@12..13 "b"
14 WHITESPACE@[13; 14) " " 14 WHITESPACE@13..14 " "
15 ITEM_LIST@[14; 17) 15 ITEM_LIST@14..17
16 L_CURLY@[14; 15) "{" 16 L_CURLY@14..15 "{"
17 WHITESPACE@[15; 16) "\n" 17 WHITESPACE@15..16 "\n"
18 R_CURLY@[16; 17) "}" 18 R_CURLY@16..17 "}"
19 WHITESPACE@[17; 19) "\n\n" 19 WHITESPACE@17..19 "\n\n"
20 MODULE@[19; 65) 20 MODULE@19..65
21 MOD_KW@[19; 22) "mod" 21 MOD_KW@19..22 "mod"
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 NAME@[23; 24) 23 NAME@23..24
24 IDENT@[23; 24) "c" 24 IDENT@23..24 "c"
25 WHITESPACE@[24; 25) " " 25 WHITESPACE@24..25 " "
26 ITEM_LIST@[25; 65) 26 ITEM_LIST@25..65
27 L_CURLY@[25; 26) "{" 27 L_CURLY@25..26 "{"
28 WHITESPACE@[26; 31) "\n " 28 WHITESPACE@26..31 "\n "
29 FN_DEF@[31; 47) 29 FN_DEF@31..47
30 FN_KW@[31; 33) "fn" 30 FN_KW@31..33 "fn"
31 WHITESPACE@[33; 34) " " 31 WHITESPACE@33..34 " "
32 NAME@[34; 37) 32 NAME@34..37
33 IDENT@[34; 37) "foo" 33 IDENT@34..37 "foo"
34 PARAM_LIST@[37; 39) 34 PARAM_LIST@37..39
35 L_PAREN@[37; 38) "(" 35 L_PAREN@37..38 "("
36 R_PAREN@[38; 39) ")" 36 R_PAREN@38..39 ")"
37 WHITESPACE@[39; 40) " " 37 WHITESPACE@39..40 " "
38 BLOCK_EXPR@[40; 47) 38 BLOCK_EXPR@40..47
39 BLOCK@[40; 47) 39 BLOCK@40..47
40 L_CURLY@[40; 41) "{" 40 L_CURLY@40..41 "{"
41 WHITESPACE@[41; 46) "\n " 41 WHITESPACE@41..46 "\n "
42 R_CURLY@[46; 47) "}" 42 R_CURLY@46..47 "}"
43 WHITESPACE@[47; 52) "\n " 43 WHITESPACE@47..52 "\n "
44 STRUCT_DEF@[52; 63) 44 STRUCT_DEF@52..63
45 STRUCT_KW@[52; 58) "struct" 45 STRUCT_KW@52..58 "struct"
46 WHITESPACE@[58; 59) " " 46 WHITESPACE@58..59 " "
47 NAME@[59; 60) 47 NAME@59..60
48 IDENT@[59; 60) "S" 48 IDENT@59..60 "S"
49 WHITESPACE@[60; 61) " " 49 WHITESPACE@60..61 " "
50 RECORD_FIELD_DEF_LIST@[61; 63) 50 RECORD_FIELD_DEF_LIST@61..63
51 L_CURLY@[61; 62) "{" 51 L_CURLY@61..62 "{"
52 R_CURLY@[62; 63) "}" 52 R_CURLY@62..63 "}"
53 WHITESPACE@[63; 64) "\n" 53 WHITESPACE@63..64 "\n"
54 R_CURLY@[64; 65) "}" 54 R_CURLY@64..65 "}"
55 WHITESPACE@[65; 67) "\n\n" 55 WHITESPACE@65..67 "\n\n"
56 MODULE@[67; 118) 56 MODULE@67..118
57 MOD_KW@[67; 70) "mod" 57 MOD_KW@67..70 "mod"
58 WHITESPACE@[70; 71) " " 58 WHITESPACE@70..71 " "
59 NAME@[71; 72) 59 NAME@71..72
60 IDENT@[71; 72) "d" 60 IDENT@71..72 "d"
61 WHITESPACE@[72; 73) " " 61 WHITESPACE@72..73 " "
62 ITEM_LIST@[73; 118) 62 ITEM_LIST@73..118
63 L_CURLY@[73; 74) "{" 63 L_CURLY@73..74 "{"
64 WHITESPACE@[74; 79) "\n " 64 WHITESPACE@74..79 "\n "
65 ATTR@[79; 87) 65 ATTR@79..87
66 POUND@[79; 80) "#" 66 POUND@79..80 "#"
67 BANG@[80; 81) "!" 67 BANG@80..81 "!"
68 L_BRACK@[81; 82) "[" 68 L_BRACK@81..82 "["
69 PATH@[82; 86) 69 PATH@82..86
70 PATH_SEGMENT@[82; 86) 70 PATH_SEGMENT@82..86
71 NAME_REF@[82; 86) 71 NAME_REF@82..86
72 IDENT@[82; 86) "attr" 72 IDENT@82..86 "attr"
73 R_BRACK@[86; 87) "]" 73 R_BRACK@86..87 "]"
74 WHITESPACE@[87; 92) "\n " 74 WHITESPACE@87..92 "\n "
75 MODULE@[92; 98) 75 MODULE@92..98
76 MOD_KW@[92; 95) "mod" 76 MOD_KW@92..95 "mod"
77 WHITESPACE@[95; 96) " " 77 WHITESPACE@95..96 " "
78 NAME@[96; 97) 78 NAME@96..97
79 IDENT@[96; 97) "e" 79 IDENT@96..97 "e"
80 SEMICOLON@[97; 98) ";" 80 SEMICOLON@97..98 ";"
81 WHITESPACE@[98; 103) "\n " 81 WHITESPACE@98..103 "\n "
82 MODULE@[103; 116) 82 MODULE@103..116
83 MOD_KW@[103; 106) "mod" 83 MOD_KW@103..106 "mod"
84 WHITESPACE@[106; 107) " " 84 WHITESPACE@106..107 " "
85 NAME@[107; 108) 85 NAME@107..108
86 IDENT@[107; 108) "f" 86 IDENT@107..108 "f"
87 WHITESPACE@[108; 109) " " 87 WHITESPACE@108..109 " "
88 ITEM_LIST@[109; 116) 88 ITEM_LIST@109..116
89 L_CURLY@[109; 110) "{" 89 L_CURLY@109..110 "{"
90 WHITESPACE@[110; 115) "\n " 90 WHITESPACE@110..115 "\n "
91 R_CURLY@[115; 116) "}" 91 R_CURLY@115..116 "}"
92 WHITESPACE@[116; 117) "\n" 92 WHITESPACE@116..117 "\n"
93 R_CURLY@[117; 118) "}" 93 R_CURLY@117..118 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast b/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast
index 62a8ae433..96b8a94fc 100644
--- a/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 USE_ITEM@[0; 8) 2 USE_ITEM@0..8
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 7) 5 USE_TREE@4..7
6 PATH@[4; 7) 6 PATH@4..7
7 PATH_SEGMENT@[4; 7) 7 PATH_SEGMENT@4..7
8 NAME_REF@[4; 7) 8 NAME_REF@4..7
9 IDENT@[4; 7) "foo" 9 IDENT@4..7 "foo"
10 SEMICOLON@[7; 8) ";" 10 SEMICOLON@7..8 ";"
11 WHITESPACE@[8; 9) "\n" 11 WHITESPACE@8..9 "\n"
12 USE_ITEM@[9; 19) 12 USE_ITEM@9..19
13 USE_KW@[9; 12) "use" 13 USE_KW@9..12 "use"
14 WHITESPACE@[12; 13) " " 14 WHITESPACE@12..13 " "
15 USE_TREE@[13; 18) 15 USE_TREE@13..18
16 PATH@[13; 18) 16 PATH@13..18
17 PATH_SEGMENT@[13; 18) 17 PATH_SEGMENT@13..18
18 COLON2@[13; 15) "::" 18 COLON2@13..15 "::"
19 NAME_REF@[15; 18) 19 NAME_REF@15..18
20 IDENT@[15; 18) "bar" 20 IDENT@15..18 "bar"
21 SEMICOLON@[18; 19) ";" 21 SEMICOLON@18..19 ";"
diff --git a/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast b/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast
index f2689e1ed..07272dc3c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 USE_ITEM@[0; 20) 2 USE_ITEM@0..20
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 19) 5 USE_TREE@4..19
6 PATH@[4; 19) 6 PATH@4..19
7 PATH@[4; 14) 7 PATH@4..14
8 PATH@[4; 9) 8 PATH@4..9
9 PATH_SEGMENT@[4; 9) 9 PATH_SEGMENT@4..9
10 COLON2@[4; 6) "::" 10 COLON2@4..6 "::"
11 NAME_REF@[6; 9) 11 NAME_REF@6..9
12 IDENT@[6; 9) "foo" 12 IDENT@6..9 "foo"
13 COLON2@[9; 11) "::" 13 COLON2@9..11 "::"
14 PATH_SEGMENT@[11; 14) 14 PATH_SEGMENT@11..14
15 NAME_REF@[11; 14) 15 NAME_REF@11..14
16 IDENT@[11; 14) "bar" 16 IDENT@11..14 "bar"
17 COLON2@[14; 16) "::" 17 COLON2@14..16 "::"
18 PATH_SEGMENT@[16; 19) 18 PATH_SEGMENT@16..19
19 NAME_REF@[16; 19) 19 NAME_REF@16..19
20 IDENT@[16; 19) "baz" 20 IDENT@16..19 "baz"
21 SEMICOLON@[19; 20) ";" 21 SEMICOLON@19..20 ";"
22 WHITESPACE@[20; 21) "\n" 22 WHITESPACE@20..21 "\n"
23 USE_ITEM@[21; 39) 23 USE_ITEM@21..39
24 USE_KW@[21; 24) "use" 24 USE_KW@21..24 "use"
25 WHITESPACE@[24; 25) " " 25 WHITESPACE@24..25 " "
26 USE_TREE@[25; 38) 26 USE_TREE@25..38
27 PATH@[25; 38) 27 PATH@25..38
28 PATH@[25; 33) 28 PATH@25..33
29 PATH@[25; 28) 29 PATH@25..28
30 PATH_SEGMENT@[25; 28) 30 PATH_SEGMENT@25..28
31 NAME_REF@[25; 28) 31 NAME_REF@25..28
32 IDENT@[25; 28) "foo" 32 IDENT@25..28 "foo"
33 COLON2@[28; 30) "::" 33 COLON2@28..30 "::"
34 PATH_SEGMENT@[30; 33) 34 PATH_SEGMENT@30..33
35 NAME_REF@[30; 33) 35 NAME_REF@30..33
36 IDENT@[30; 33) "bar" 36 IDENT@30..33 "bar"
37 COLON2@[33; 35) "::" 37 COLON2@33..35 "::"
38 PATH_SEGMENT@[35; 38) 38 PATH_SEGMENT@35..38
39 NAME_REF@[35; 38) 39 NAME_REF@35..38
40 IDENT@[35; 38) "baz" 40 IDENT@35..38 "baz"
41 SEMICOLON@[38; 39) ";" 41 SEMICOLON@38..39 ";"
42 WHITESPACE@[39; 40) "\n" 42 WHITESPACE@39..40 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast b/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast
index 4426d586a..3919cc78b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast
@@ -1,58 +1,58 @@
1SOURCE_FILE@[0; 60) 1SOURCE_FILE@0..60
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 ATTR@[0; 12) 3 ATTR@0..12
4 POUND@[0; 1) "#" 4 POUND@0..1 "#"
5 L_BRACK@[1; 2) "[" 5 L_BRACK@1..2 "["
6 PATH@[2; 5) 6 PATH@2..5
7 PATH_SEGMENT@[2; 5) 7 PATH_SEGMENT@2..5
8 NAME_REF@[2; 5) 8 NAME_REF@2..5
9 IDENT@[2; 5) "cfg" 9 IDENT@2..5 "cfg"
10 TOKEN_TREE@[5; 11) 10 TOKEN_TREE@5..11
11 L_PAREN@[5; 6) "(" 11 L_PAREN@5..6 "("
12 IDENT@[6; 10) "test" 12 IDENT@6..10 "test"
13 R_PAREN@[10; 11) ")" 13 R_PAREN@10..11 ")"
14 R_BRACK@[11; 12) "]" 14 R_BRACK@11..12 "]"
15 WHITESPACE@[12; 13) "\n" 15 WHITESPACE@12..13 "\n"
16 ATTR@[13; 22) 16 ATTR@13..22
17 POUND@[13; 14) "#" 17 POUND@13..14 "#"
18 L_BRACK@[14; 15) "[" 18 L_BRACK@14..15 "["
19 PATH@[15; 21) 19 PATH@15..21
20 PATH_SEGMENT@[15; 21) 20 PATH_SEGMENT@15..21
21 NAME_REF@[15; 21) 21 NAME_REF@15..21
22 IDENT@[15; 21) "ignore" 22 IDENT@15..21 "ignore"
23 R_BRACK@[21; 22) "]" 23 R_BRACK@21..22 "]"
24 WHITESPACE@[22; 23) "\n" 24 WHITESPACE@22..23 "\n"
25 FN_KW@[23; 25) "fn" 25 FN_KW@23..25 "fn"
26 WHITESPACE@[25; 26) " " 26 WHITESPACE@25..26 " "
27 NAME@[26; 29) 27 NAME@26..29
28 IDENT@[26; 29) "foo" 28 IDENT@26..29 "foo"
29 PARAM_LIST@[29; 31) 29 PARAM_LIST@29..31
30 L_PAREN@[29; 30) "(" 30 L_PAREN@29..30 "("
31 R_PAREN@[30; 31) ")" 31 R_PAREN@30..31 ")"
32 WHITESPACE@[31; 32) " " 32 WHITESPACE@31..32 " "
33 BLOCK_EXPR@[32; 34) 33 BLOCK_EXPR@32..34
34 BLOCK@[32; 34) 34 BLOCK@32..34
35 L_CURLY@[32; 33) "{" 35 L_CURLY@32..33 "{"
36 R_CURLY@[33; 34) "}" 36 R_CURLY@33..34 "}"
37 WHITESPACE@[34; 36) "\n\n" 37 WHITESPACE@34..36 "\n\n"
38 MODULE@[36; 59) 38 MODULE@36..59
39 ATTR@[36; 52) 39 ATTR@36..52
40 POUND@[36; 37) "#" 40 POUND@36..37 "#"
41 L_BRACK@[37; 38) "[" 41 L_BRACK@37..38 "["
42 PATH@[38; 42) 42 PATH@38..42
43 PATH_SEGMENT@[38; 42) 43 PATH_SEGMENT@38..42
44 NAME_REF@[38; 42) 44 NAME_REF@38..42
45 IDENT@[38; 42) "path" 45 IDENT@38..42 "path"
46 WHITESPACE@[42; 43) " " 46 WHITESPACE@42..43 " "
47 EQ@[43; 44) "=" 47 EQ@43..44 "="
48 WHITESPACE@[44; 45) " " 48 WHITESPACE@44..45 " "
49 LITERAL@[45; 51) 49 LITERAL@45..51
50 STRING@[45; 51) "\"a.rs\"" 50 STRING@45..51 "\"a.rs\""
51 R_BRACK@[51; 52) "]" 51 R_BRACK@51..52 "]"
52 WHITESPACE@[52; 53) "\n" 52 WHITESPACE@52..53 "\n"
53 MOD_KW@[53; 56) "mod" 53 MOD_KW@53..56 "mod"
54 WHITESPACE@[56; 57) " " 54 WHITESPACE@56..57 " "
55 NAME@[57; 58) 55 NAME@57..58
56 IDENT@[57; 58) "b" 56 IDENT@57..58 "b"
57 SEMICOLON@[58; 59) ";" 57 SEMICOLON@58..59 ";"
58 WHITESPACE@[59; 60) "\n" 58 WHITESPACE@59..60 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast b/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast
index c76cf9fe9..750a045ef 100644
--- a/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast
@@ -1,107 +1,107 @@
1SOURCE_FILE@[0; 98) 1SOURCE_FILE@0..98
2 FN_DEF@[0; 9) 2 FN_DEF@0..9
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 BLOCK_EXPR@[7; 9) 11 BLOCK_EXPR@7..9
12 BLOCK@[7; 9) 12 BLOCK@7..9
13 L_CURLY@[7; 8) "{" 13 L_CURLY@7..8 "{"
14 R_CURLY@[8; 9) "}" 14 R_CURLY@8..9 "}"
15 WHITESPACE@[9; 10) "\n" 15 WHITESPACE@9..10 "\n"
16 FN_DEF@[10; 23) 16 FN_DEF@10..23
17 VISIBILITY@[10; 13) 17 VISIBILITY@10..13
18 PUB_KW@[10; 13) "pub" 18 PUB_KW@10..13 "pub"
19 WHITESPACE@[13; 14) " " 19 WHITESPACE@13..14 " "
20 FN_KW@[14; 16) "fn" 20 FN_KW@14..16 "fn"
21 WHITESPACE@[16; 17) " " 21 WHITESPACE@16..17 " "
22 NAME@[17; 18) 22 NAME@17..18
23 IDENT@[17; 18) "b" 23 IDENT@17..18 "b"
24 PARAM_LIST@[18; 20) 24 PARAM_LIST@18..20
25 L_PAREN@[18; 19) "(" 25 L_PAREN@18..19 "("
26 R_PAREN@[19; 20) ")" 26 R_PAREN@19..20 ")"
27 WHITESPACE@[20; 21) " " 27 WHITESPACE@20..21 " "
28 BLOCK_EXPR@[21; 23) 28 BLOCK_EXPR@21..23
29 BLOCK@[21; 23) 29 BLOCK@21..23
30 L_CURLY@[21; 22) "{" 30 L_CURLY@21..22 "{"
31 R_CURLY@[22; 23) "}" 31 R_CURLY@22..23 "}"
32 WHITESPACE@[23; 24) "\n" 32 WHITESPACE@23..24 "\n"
33 FN_DEF@[24; 44) 33 FN_DEF@24..44
34 VISIBILITY@[24; 34) 34 VISIBILITY@24..34
35 PUB_KW@[24; 27) "pub" 35 PUB_KW@24..27 "pub"
36 L_PAREN@[27; 28) "(" 36 L_PAREN@27..28 "("
37 CRATE_KW@[28; 33) "crate" 37 CRATE_KW@28..33 "crate"
38 R_PAREN@[33; 34) ")" 38 R_PAREN@33..34 ")"
39 WHITESPACE@[34; 35) " " 39 WHITESPACE@34..35 " "
40 FN_KW@[35; 37) "fn" 40 FN_KW@35..37 "fn"
41 WHITESPACE@[37; 38) " " 41 WHITESPACE@37..38 " "
42 NAME@[38; 39) 42 NAME@38..39
43 IDENT@[38; 39) "c" 43 IDENT@38..39 "c"
44 PARAM_LIST@[39; 41) 44 PARAM_LIST@39..41
45 L_PAREN@[39; 40) "(" 45 L_PAREN@39..40 "("
46 R_PAREN@[40; 41) ")" 46 R_PAREN@40..41 ")"
47 WHITESPACE@[41; 42) " " 47 WHITESPACE@41..42 " "
48 BLOCK_EXPR@[42; 44) 48 BLOCK_EXPR@42..44
49 BLOCK@[42; 44) 49 BLOCK@42..44
50 L_CURLY@[42; 43) "{" 50 L_CURLY@42..43 "{"
51 R_CURLY@[43; 44) "}" 51 R_CURLY@43..44 "}"
52 WHITESPACE@[44; 45) "\n" 52 WHITESPACE@44..45 "\n"
53 FN_DEF@[45; 65) 53 FN_DEF@45..65
54 VISIBILITY@[45; 55) 54 VISIBILITY@45..55
55 PUB_KW@[45; 48) "pub" 55 PUB_KW@45..48 "pub"
56 L_PAREN@[48; 49) "(" 56 L_PAREN@48..49 "("
57 SUPER_KW@[49; 54) "super" 57 SUPER_KW@49..54 "super"
58 R_PAREN@[54; 55) ")" 58 R_PAREN@54..55 ")"
59 WHITESPACE@[55; 56) " " 59 WHITESPACE@55..56 " "
60 FN_KW@[56; 58) "fn" 60 FN_KW@56..58 "fn"
61 WHITESPACE@[58; 59) " " 61 WHITESPACE@58..59 " "
62 NAME@[59; 60) 62 NAME@59..60
63 IDENT@[59; 60) "d" 63 IDENT@59..60 "d"
64 PARAM_LIST@[60; 62) 64 PARAM_LIST@60..62
65 L_PAREN@[60; 61) "(" 65 L_PAREN@60..61 "("
66 R_PAREN@[61; 62) ")" 66 R_PAREN@61..62 ")"
67 WHITESPACE@[62; 63) " " 67 WHITESPACE@62..63 " "
68 BLOCK_EXPR@[63; 65) 68 BLOCK_EXPR@63..65
69 BLOCK@[63; 65) 69 BLOCK@63..65
70 L_CURLY@[63; 64) "{" 70 L_CURLY@63..64 "{"
71 R_CURLY@[64; 65) "}" 71 R_CURLY@64..65 "}"
72 WHITESPACE@[65; 66) "\n" 72 WHITESPACE@65..66 "\n"
73 FN_DEF@[66; 97) 73 FN_DEF@66..97
74 VISIBILITY@[66; 87) 74 VISIBILITY@66..87
75 PUB_KW@[66; 69) "pub" 75 PUB_KW@66..69 "pub"
76 L_PAREN@[69; 70) "(" 76 L_PAREN@69..70 "("
77 IN_KW@[70; 72) "in" 77 IN_KW@70..72 "in"
78 WHITESPACE@[72; 73) " " 78 WHITESPACE@72..73 " "
79 PATH@[73; 86) 79 PATH@73..86
80 PATH@[73; 81) 80 PATH@73..81
81 PATH@[73; 76) 81 PATH@73..76
82 PATH_SEGMENT@[73; 76) 82 PATH_SEGMENT@73..76
83 NAME_REF@[73; 76) 83 NAME_REF@73..76
84 IDENT@[73; 76) "foo" 84 IDENT@73..76 "foo"
85 COLON2@[76; 78) "::" 85 COLON2@76..78 "::"
86 PATH_SEGMENT@[78; 81) 86 PATH_SEGMENT@78..81
87 NAME_REF@[78; 81) 87 NAME_REF@78..81
88 IDENT@[78; 81) "bar" 88 IDENT@78..81 "bar"
89 COLON2@[81; 83) "::" 89 COLON2@81..83 "::"
90 PATH_SEGMENT@[83; 86) 90 PATH_SEGMENT@83..86
91 NAME_REF@[83; 86) 91 NAME_REF@83..86
92 IDENT@[83; 86) "baz" 92 IDENT@83..86 "baz"
93 R_PAREN@[86; 87) ")" 93 R_PAREN@86..87 ")"
94 WHITESPACE@[87; 88) " " 94 WHITESPACE@87..88 " "
95 FN_KW@[88; 90) "fn" 95 FN_KW@88..90 "fn"
96 WHITESPACE@[90; 91) " " 96 WHITESPACE@90..91 " "
97 NAME@[91; 92) 97 NAME@91..92
98 IDENT@[91; 92) "e" 98 IDENT@91..92 "e"
99 PARAM_LIST@[92; 94) 99 PARAM_LIST@92..94
100 L_PAREN@[92; 93) "(" 100 L_PAREN@92..93 "("
101 R_PAREN@[93; 94) ")" 101 R_PAREN@93..94 ")"
102 WHITESPACE@[94; 95) " " 102 WHITESPACE@94..95 " "
103 BLOCK_EXPR@[95; 97) 103 BLOCK_EXPR@95..97
104 BLOCK@[95; 97) 104 BLOCK@95..97
105 L_CURLY@[95; 96) "{" 105 L_CURLY@95..96 "{"
106 R_CURLY@[96; 97) "}" 106 R_CURLY@96..97 "}"
107 WHITESPACE@[97; 98) "\n" 107 WHITESPACE@97..98 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast b/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast
index 552cb3daf..a5a90df7b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast
@@ -1,57 +1,57 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@0..65
2 USE_ITEM@[0; 14) 2 USE_ITEM@0..14
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 13) 5 USE_TREE@4..13
6 PATH@[4; 13) 6 PATH@4..13
7 PATH@[4; 8) 7 PATH@4..8
8 PATH_SEGMENT@[4; 8) 8 PATH_SEGMENT@4..8
9 SELF_KW@[4; 8) "self" 9 SELF_KW@4..8 "self"
10 COLON2@[8; 10) "::" 10 COLON2@8..10 "::"
11 PATH_SEGMENT@[10; 13) 11 PATH_SEGMENT@10..13
12 NAME_REF@[10; 13) 12 NAME_REF@10..13
13 IDENT@[10; 13) "foo" 13 IDENT@10..13 "foo"
14 SEMICOLON@[13; 14) ";" 14 SEMICOLON@13..14 ";"
15 WHITESPACE@[14; 15) "\n" 15 WHITESPACE@14..15 "\n"
16 USE_ITEM@[15; 37) 16 USE_ITEM@15..37
17 USE_KW@[15; 18) "use" 17 USE_KW@15..18 "use"
18 WHITESPACE@[18; 19) " " 18 WHITESPACE@18..19 " "
19 USE_TREE@[19; 36) 19 USE_TREE@19..36
20 PATH@[19; 36) 20 PATH@19..36
21 PATH@[19; 31) 21 PATH@19..31
22 PATH@[19; 24) 22 PATH@19..24
23 PATH_SEGMENT@[19; 24) 23 PATH_SEGMENT@19..24
24 SUPER_KW@[19; 24) "super" 24 SUPER_KW@19..24 "super"
25 COLON2@[24; 26) "::" 25 COLON2@24..26 "::"
26 PATH_SEGMENT@[26; 31) 26 PATH_SEGMENT@26..31
27 SUPER_KW@[26; 31) "super" 27 SUPER_KW@26..31 "super"
28 COLON2@[31; 33) "::" 28 COLON2@31..33 "::"
29 PATH_SEGMENT@[33; 36) 29 PATH_SEGMENT@33..36
30 NAME_REF@[33; 36) 30 NAME_REF@33..36
31 IDENT@[33; 36) "bar" 31 IDENT@33..36 "bar"
32 SEMICOLON@[36; 37) ";" 32 SEMICOLON@36..37 ";"
33 WHITESPACE@[37; 38) "\n" 33 WHITESPACE@37..38 "\n"
34 USE_ITEM@[38; 64) 34 USE_ITEM@38..64
35 USE_KW@[38; 41) "use" 35 USE_KW@38..41 "use"
36 WHITESPACE@[41; 42) " " 36 WHITESPACE@41..42 " "
37 USE_TREE@[42; 63) 37 USE_TREE@42..63
38 PATH@[42; 63) 38 PATH@42..63
39 PATH@[42; 58) 39 PATH@42..58
40 PATH@[42; 51) 40 PATH@42..51
41 PATH@[42; 48) 41 PATH@42..48
42 PATH_SEGMENT@[42; 48) 42 PATH_SEGMENT@42..48
43 COLON2@[42; 44) "::" 43 COLON2@42..44 "::"
44 SELF_KW@[44; 48) "self" 44 SELF_KW@44..48 "self"
45 COLON2@[48; 50) "::" 45 COLON2@48..50 "::"
46 PATH_SEGMENT@[50; 51) 46 PATH_SEGMENT@50..51
47 NAME_REF@[50; 51) 47 NAME_REF@50..51
48 IDENT@[50; 51) "a" 48 IDENT@50..51 "a"
49 COLON2@[51; 53) "::" 49 COLON2@51..53 "::"
50 PATH_SEGMENT@[53; 58) 50 PATH_SEGMENT@53..58
51 SUPER_KW@[53; 58) "super" 51 SUPER_KW@53..58 "super"
52 COLON2@[58; 60) "::" 52 COLON2@58..60 "::"
53 PATH_SEGMENT@[60; 63) 53 PATH_SEGMENT@60..63
54 NAME_REF@[60; 63) 54 NAME_REF@60..63
55 IDENT@[60; 63) "bar" 55 IDENT@60..63 "bar"
56 SEMICOLON@[63; 64) ";" 56 SEMICOLON@63..64 ";"
57 WHITESPACE@[64; 65) "\n" 57 WHITESPACE@64..65 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast b/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast
index 49a68e881..3642c107b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast
@@ -1,95 +1,95 @@
1SOURCE_FILE@[0; 81) 1SOURCE_FILE@0..81
2 USE_ITEM@[0; 6) 2 USE_ITEM@0..6
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 5) 5 USE_TREE@4..5
6 STAR@[4; 5) "*" 6 STAR@4..5 "*"
7 SEMICOLON@[5; 6) ";" 7 SEMICOLON@5..6 ";"
8 WHITESPACE@[6; 7) "\n" 8 WHITESPACE@6..7 "\n"
9 USE_ITEM@[7; 15) 9 USE_ITEM@7..15
10 USE_KW@[7; 10) "use" 10 USE_KW@7..10 "use"
11 WHITESPACE@[10; 11) " " 11 WHITESPACE@10..11 " "
12 USE_TREE@[11; 14) 12 USE_TREE@11..14
13 COLON2@[11; 13) "::" 13 COLON2@11..13 "::"
14 STAR@[13; 14) "*" 14 STAR@13..14 "*"
15 SEMICOLON@[14; 15) ";" 15 SEMICOLON@14..15 ";"
16 WHITESPACE@[15; 16) "\n" 16 WHITESPACE@15..16 "\n"
17 USE_ITEM@[16; 25) 17 USE_ITEM@16..25
18 USE_KW@[16; 19) "use" 18 USE_KW@16..19 "use"
19 WHITESPACE@[19; 20) " " 19 WHITESPACE@19..20 " "
20 USE_TREE@[20; 24) 20 USE_TREE@20..24
21 COLON2@[20; 22) "::" 21 COLON2@20..22 "::"
22 USE_TREE_LIST@[22; 24) 22 USE_TREE_LIST@22..24
23 L_CURLY@[22; 23) "{" 23 L_CURLY@22..23 "{"
24 R_CURLY@[23; 24) "}" 24 R_CURLY@23..24 "}"
25 SEMICOLON@[24; 25) ";" 25 SEMICOLON@24..25 ";"
26 WHITESPACE@[25; 26) "\n" 26 WHITESPACE@25..26 "\n"
27 USE_ITEM@[26; 33) 27 USE_ITEM@26..33
28 USE_KW@[26; 29) "use" 28 USE_KW@26..29 "use"
29 WHITESPACE@[29; 30) " " 29 WHITESPACE@29..30 " "
30 USE_TREE@[30; 32) 30 USE_TREE@30..32
31 USE_TREE_LIST@[30; 32) 31 USE_TREE_LIST@30..32
32 L_CURLY@[30; 31) "{" 32 L_CURLY@30..31 "{"
33 R_CURLY@[31; 32) "}" 33 R_CURLY@31..32 "}"
34 SEMICOLON@[32; 33) ";" 34 SEMICOLON@32..33 ";"
35 WHITESPACE@[33; 34) "\n" 35 WHITESPACE@33..34 "\n"
36 USE_ITEM@[34; 45) 36 USE_ITEM@34..45
37 USE_KW@[34; 37) "use" 37 USE_KW@34..37 "use"
38 WHITESPACE@[37; 38) " " 38 WHITESPACE@37..38 " "
39 USE_TREE@[38; 44) 39 USE_TREE@38..44
40 PATH@[38; 41) 40 PATH@38..41
41 PATH_SEGMENT@[38; 41) 41 PATH_SEGMENT@38..41
42 NAME_REF@[38; 41) 42 NAME_REF@38..41
43 IDENT@[38; 41) "foo" 43 IDENT@38..41 "foo"
44 COLON2@[41; 43) "::" 44 COLON2@41..43 "::"
45 STAR@[43; 44) "*" 45 STAR@43..44 "*"
46 SEMICOLON@[44; 45) ";" 46 SEMICOLON@44..45 ";"
47 WHITESPACE@[45; 46) "\n" 47 WHITESPACE@45..46 "\n"
48 USE_ITEM@[46; 58) 48 USE_ITEM@46..58
49 USE_KW@[46; 49) "use" 49 USE_KW@46..49 "use"
50 WHITESPACE@[49; 50) " " 50 WHITESPACE@49..50 " "
51 USE_TREE@[50; 57) 51 USE_TREE@50..57
52 PATH@[50; 53) 52 PATH@50..53
53 PATH_SEGMENT@[50; 53) 53 PATH_SEGMENT@50..53
54 NAME_REF@[50; 53) 54 NAME_REF@50..53
55 IDENT@[50; 53) "foo" 55 IDENT@50..53 "foo"
56 COLON2@[53; 55) "::" 56 COLON2@53..55 "::"
57 USE_TREE_LIST@[55; 57) 57 USE_TREE_LIST@55..57
58 L_CURLY@[55; 56) "{" 58 L_CURLY@55..56 "{"
59 R_CURLY@[56; 57) "}" 59 R_CURLY@56..57 "}"
60 SEMICOLON@[57; 58) ";" 60 SEMICOLON@57..58 ";"
61 WHITESPACE@[58; 59) "\n" 61 WHITESPACE@58..59 "\n"
62 USE_ITEM@[59; 80) 62 USE_ITEM@59..80
63 USE_KW@[59; 62) "use" 63 USE_KW@59..62 "use"
64 WHITESPACE@[62; 63) " " 64 WHITESPACE@62..63 " "
65 USE_TREE@[63; 79) 65 USE_TREE@63..79
66 PATH@[63; 68) 66 PATH@63..68
67 PATH_SEGMENT@[63; 68) 67 PATH_SEGMENT@63..68
68 COLON2@[63; 65) "::" 68 COLON2@63..65 "::"
69 NAME_REF@[65; 68) 69 NAME_REF@65..68
70 IDENT@[65; 68) "foo" 70 IDENT@65..68 "foo"
71 COLON2@[68; 70) "::" 71 COLON2@68..70 "::"
72 USE_TREE_LIST@[70; 79) 72 USE_TREE_LIST@70..79
73 L_CURLY@[70; 71) "{" 73 L_CURLY@70..71 "{"
74 USE_TREE@[71; 72) 74 USE_TREE@71..72
75 PATH@[71; 72) 75 PATH@71..72
76 PATH_SEGMENT@[71; 72) 76 PATH_SEGMENT@71..72
77 NAME_REF@[71; 72) 77 NAME_REF@71..72
78 IDENT@[71; 72) "a" 78 IDENT@71..72 "a"
79 COMMA@[72; 73) "," 79 COMMA@72..73 ","
80 WHITESPACE@[73; 74) " " 80 WHITESPACE@73..74 " "
81 USE_TREE@[74; 75) 81 USE_TREE@74..75
82 PATH@[74; 75) 82 PATH@74..75
83 PATH_SEGMENT@[74; 75) 83 PATH_SEGMENT@74..75
84 NAME_REF@[74; 75) 84 NAME_REF@74..75
85 IDENT@[74; 75) "b" 85 IDENT@74..75 "b"
86 COMMA@[75; 76) "," 86 COMMA@75..76 ","
87 WHITESPACE@[76; 77) " " 87 WHITESPACE@76..77 " "
88 USE_TREE@[77; 78) 88 USE_TREE@77..78
89 PATH@[77; 78) 89 PATH@77..78
90 PATH_SEGMENT@[77; 78) 90 PATH_SEGMENT@77..78
91 NAME_REF@[77; 78) 91 NAME_REF@77..78
92 IDENT@[77; 78) "c" 92 IDENT@77..78 "c"
93 R_CURLY@[78; 79) "}" 93 R_CURLY@78..79 "}"
94 SEMICOLON@[79; 80) ";" 94 SEMICOLON@79..80 ";"
95 WHITESPACE@[80; 81) "\n" 95 WHITESPACE@80..81 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast b/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast
index 719ac98ef..09e0050f0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast
@@ -1,65 +1,65 @@
1SOURCE_FILE@[0; 55) 1SOURCE_FILE@0..55
2 USE_ITEM@[0; 15) 2 USE_ITEM@0..15
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 14) 5 USE_TREE@4..14
6 PATH@[4; 7) 6 PATH@4..7
7 PATH_SEGMENT@[4; 7) 7 PATH_SEGMENT@4..7
8 NAME_REF@[4; 7) 8 NAME_REF@4..7
9 IDENT@[4; 7) "foo" 9 IDENT@4..7 "foo"
10 WHITESPACE@[7; 8) " " 10 WHITESPACE@7..8 " "
11 ALIAS@[8; 14) 11 ALIAS@8..14
12 AS_KW@[8; 10) "as" 12 AS_KW@8..10 "as"
13 WHITESPACE@[10; 11) " " 13 WHITESPACE@10..11 " "
14 NAME@[11; 14) 14 NAME@11..14
15 IDENT@[11; 14) "bar" 15 IDENT@11..14 "bar"
16 SEMICOLON@[14; 15) ";" 16 SEMICOLON@14..15 ";"
17 WHITESPACE@[15; 16) "\n" 17 WHITESPACE@15..16 "\n"
18 USE_ITEM@[16; 54) 18 USE_ITEM@16..54
19 USE_KW@[16; 19) "use" 19 USE_KW@16..19 "use"
20 WHITESPACE@[19; 20) " " 20 WHITESPACE@19..20 " "
21 USE_TREE@[20; 53) 21 USE_TREE@20..53
22 PATH@[20; 23) 22 PATH@20..23
23 PATH_SEGMENT@[20; 23) 23 PATH_SEGMENT@20..23
24 NAME_REF@[20; 23) 24 NAME_REF@20..23
25 IDENT@[20; 23) "foo" 25 IDENT@20..23 "foo"
26 COLON2@[23; 25) "::" 26 COLON2@23..25 "::"
27 USE_TREE_LIST@[25; 53) 27 USE_TREE_LIST@25..53
28 L_CURLY@[25; 26) "{" 28 L_CURLY@25..26 "{"
29 USE_TREE@[26; 32) 29 USE_TREE@26..32
30 PATH@[26; 27) 30 PATH@26..27
31 PATH_SEGMENT@[26; 27) 31 PATH_SEGMENT@26..27
32 NAME_REF@[26; 27) 32 NAME_REF@26..27
33 IDENT@[26; 27) "a" 33 IDENT@26..27 "a"
34 WHITESPACE@[27; 28) " " 34 WHITESPACE@27..28 " "
35 ALIAS@[28; 32) 35 ALIAS@28..32
36 AS_KW@[28; 30) "as" 36 AS_KW@28..30 "as"
37 WHITESPACE@[30; 31) " " 37 WHITESPACE@30..31 " "
38 NAME@[31; 32) 38 NAME@31..32
39 IDENT@[31; 32) "b" 39 IDENT@31..32 "b"
40 COMMA@[32; 33) "," 40 COMMA@32..33 ","
41 WHITESPACE@[33; 34) " " 41 WHITESPACE@33..34 " "
42 USE_TREE@[34; 35) 42 USE_TREE@34..35
43 STAR@[34; 35) "*" 43 STAR@34..35 "*"
44 COMMA@[35; 36) "," 44 COMMA@35..36 ","
45 WHITESPACE@[36; 37) " " 45 WHITESPACE@36..37 " "
46 USE_TREE@[37; 40) 46 USE_TREE@37..40
47 COLON2@[37; 39) "::" 47 COLON2@37..39 "::"
48 STAR@[39; 40) "*" 48 STAR@39..40 "*"
49 COMMA@[40; 41) "," 49 COMMA@40..41 ","
50 WHITESPACE@[41; 42) " " 50 WHITESPACE@41..42 " "
51 USE_TREE@[42; 52) 51 USE_TREE@42..52
52 PATH@[42; 47) 52 PATH@42..47
53 PATH_SEGMENT@[42; 47) 53 PATH_SEGMENT@42..47
54 COLON2@[42; 44) "::" 54 COLON2@42..44 "::"
55 NAME_REF@[44; 47) 55 NAME_REF@44..47
56 IDENT@[44; 47) "foo" 56 IDENT@44..47 "foo"
57 WHITESPACE@[47; 48) " " 57 WHITESPACE@47..48 " "
58 ALIAS@[48; 52) 58 ALIAS@48..52
59 AS_KW@[48; 50) "as" 59 AS_KW@48..50 "as"
60 WHITESPACE@[50; 51) " " 60 WHITESPACE@50..51 " "
61 NAME@[51; 52) 61 NAME@51..52
62 IDENT@[51; 52) "x" 62 IDENT@51..52 "x"
63 R_CURLY@[52; 53) "}" 63 R_CURLY@52..53 "}"
64 SEMICOLON@[53; 54) ";" 64 SEMICOLON@53..54 ";"
65 WHITESPACE@[54; 55) "\n" 65 WHITESPACE@54..55 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast b/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast
index f4739451e..95656d19b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 97) 1SOURCE_FILE@0..97
2 STRUCT_DEF@[0; 9) 2 STRUCT_DEF@0..9
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "A" 6 IDENT@7..8 "A"
7 SEMICOLON@[8; 9) ";" 7 SEMICOLON@8..9 ";"
8 WHITESPACE@[9; 10) "\n" 8 WHITESPACE@9..10 "\n"
9 STRUCT_DEF@[10; 21) 9 STRUCT_DEF@10..21
10 STRUCT_KW@[10; 16) "struct" 10 STRUCT_KW@10..16 "struct"
11 WHITESPACE@[16; 17) " " 11 WHITESPACE@16..17 " "
12 NAME@[17; 18) 12 NAME@17..18
13 IDENT@[17; 18) "B" 13 IDENT@17..18 "B"
14 WHITESPACE@[18; 19) " " 14 WHITESPACE@18..19 " "
15 RECORD_FIELD_DEF_LIST@[19; 21) 15 RECORD_FIELD_DEF_LIST@19..21
16 L_CURLY@[19; 20) "{" 16 L_CURLY@19..20 "{"
17 R_CURLY@[20; 21) "}" 17 R_CURLY@20..21 "}"
18 WHITESPACE@[21; 22) "\n" 18 WHITESPACE@21..22 "\n"
19 STRUCT_DEF@[22; 33) 19 STRUCT_DEF@22..33
20 STRUCT_KW@[22; 28) "struct" 20 STRUCT_KW@22..28 "struct"
21 WHITESPACE@[28; 29) " " 21 WHITESPACE@28..29 " "
22 NAME@[29; 30) 22 NAME@29..30
23 IDENT@[29; 30) "C" 23 IDENT@29..30 "C"
24 TUPLE_FIELD_DEF_LIST@[30; 32) 24 TUPLE_FIELD_DEF_LIST@30..32
25 L_PAREN@[30; 31) "(" 25 L_PAREN@30..31 "("
26 R_PAREN@[31; 32) ")" 26 R_PAREN@31..32 ")"
27 SEMICOLON@[32; 33) ";" 27 SEMICOLON@32..33 ";"
28 WHITESPACE@[33; 35) "\n\n" 28 WHITESPACE@33..35 "\n\n"
29 STRUCT_DEF@[35; 74) 29 STRUCT_DEF@35..74
30 STRUCT_KW@[35; 41) "struct" 30 STRUCT_KW@35..41 "struct"
31 WHITESPACE@[41; 42) " " 31 WHITESPACE@41..42 " "
32 NAME@[42; 43) 32 NAME@42..43
33 IDENT@[42; 43) "D" 33 IDENT@42..43 "D"
34 WHITESPACE@[43; 44) " " 34 WHITESPACE@43..44 " "
35 RECORD_FIELD_DEF_LIST@[44; 74) 35 RECORD_FIELD_DEF_LIST@44..74
36 L_CURLY@[44; 45) "{" 36 L_CURLY@44..45 "{"
37 WHITESPACE@[45; 50) "\n " 37 WHITESPACE@45..50 "\n "
38 RECORD_FIELD_DEF@[50; 56) 38 RECORD_FIELD_DEF@50..56
39 NAME@[50; 51) 39 NAME@50..51
40 IDENT@[50; 51) "a" 40 IDENT@50..51 "a"
41 COLON@[51; 52) ":" 41 COLON@51..52 ":"
42 WHITESPACE@[52; 53) " " 42 WHITESPACE@52..53 " "
43 PATH_TYPE@[53; 56) 43 PATH_TYPE@53..56
44 PATH@[53; 56) 44 PATH@53..56
45 PATH_SEGMENT@[53; 56) 45 PATH_SEGMENT@53..56
46 NAME_REF@[53; 56) 46 NAME_REF@53..56
47 IDENT@[53; 56) "u32" 47 IDENT@53..56 "u32"
48 COMMA@[56; 57) "," 48 COMMA@56..57 ","
49 WHITESPACE@[57; 62) "\n " 49 WHITESPACE@57..62 "\n "
50 RECORD_FIELD_DEF@[62; 72) 50 RECORD_FIELD_DEF@62..72
51 VISIBILITY@[62; 65) 51 VISIBILITY@62..65
52 PUB_KW@[62; 65) "pub" 52 PUB_KW@62..65 "pub"
53 WHITESPACE@[65; 66) " " 53 WHITESPACE@65..66 " "
54 NAME@[66; 67) 54 NAME@66..67
55 IDENT@[66; 67) "b" 55 IDENT@66..67 "b"
56 COLON@[67; 68) ":" 56 COLON@67..68 ":"
57 WHITESPACE@[68; 69) " " 57 WHITESPACE@68..69 " "
58 PATH_TYPE@[69; 72) 58 PATH_TYPE@69..72
59 PATH@[69; 72) 59 PATH@69..72
60 PATH_SEGMENT@[69; 72) 60 PATH_SEGMENT@69..72
61 NAME_REF@[69; 72) 61 NAME_REF@69..72
62 IDENT@[69; 72) "u32" 62 IDENT@69..72 "u32"
63 WHITESPACE@[72; 73) "\n" 63 WHITESPACE@72..73 "\n"
64 R_CURLY@[73; 74) "}" 64 R_CURLY@73..74 "}"
65 WHITESPACE@[74; 76) "\n\n" 65 WHITESPACE@74..76 "\n\n"
66 STRUCT_DEF@[76; 96) 66 STRUCT_DEF@76..96
67 STRUCT_KW@[76; 82) "struct" 67 STRUCT_KW@76..82 "struct"
68 WHITESPACE@[82; 83) " " 68 WHITESPACE@82..83 " "
69 NAME@[83; 84) 69 NAME@83..84
70 IDENT@[83; 84) "E" 70 IDENT@83..84 "E"
71 TUPLE_FIELD_DEF_LIST@[84; 95) 71 TUPLE_FIELD_DEF_LIST@84..95
72 L_PAREN@[84; 85) "(" 72 L_PAREN@84..85 "("
73 TUPLE_FIELD_DEF@[85; 90) 73 TUPLE_FIELD_DEF@85..90
74 VISIBILITY@[85; 88) 74 VISIBILITY@85..88
75 PUB_KW@[85; 88) "pub" 75 PUB_KW@85..88 "pub"
76 WHITESPACE@[88; 89) " " 76 WHITESPACE@88..89 " "
77 PATH_TYPE@[89; 90) 77 PATH_TYPE@89..90
78 PATH@[89; 90) 78 PATH@89..90
79 PATH_SEGMENT@[89; 90) 79 PATH_SEGMENT@89..90
80 NAME_REF@[89; 90) 80 NAME_REF@89..90
81 IDENT@[89; 90) "x" 81 IDENT@89..90 "x"
82 COMMA@[90; 91) "," 82 COMMA@90..91 ","
83 WHITESPACE@[91; 92) " " 83 WHITESPACE@91..92 " "
84 TUPLE_FIELD_DEF@[92; 93) 84 TUPLE_FIELD_DEF@92..93
85 PATH_TYPE@[92; 93) 85 PATH_TYPE@92..93
86 PATH@[92; 93) 86 PATH@92..93
87 PATH_SEGMENT@[92; 93) 87 PATH_SEGMENT@92..93
88 NAME_REF@[92; 93) 88 NAME_REF@92..93
89 IDENT@[92; 93) "y" 89 IDENT@92..93 "y"
90 COMMA@[93; 94) "," 90 COMMA@93..94 ","
91 R_PAREN@[94; 95) ")" 91 R_PAREN@94..95 ")"
92 SEMICOLON@[95; 96) ";" 92 SEMICOLON@95..96 ";"
93 WHITESPACE@[96; 97) "\n" 93 WHITESPACE@96..97 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast b/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast
index 1d65b0d6e..b5747aacd 100644
--- a/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast
@@ -1,29 +1,29 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@0..23
2 FN_DEF@[0; 22) 2 FN_DEF@0..22
3 ATTR@[0; 10) 3 ATTR@0..10
4 POUND@[0; 1) "#" 4 POUND@0..1 "#"
5 L_BRACK@[1; 2) "[" 5 L_BRACK@1..2 "["
6 PATH@[2; 5) 6 PATH@2..5
7 PATH_SEGMENT@[2; 5) 7 PATH_SEGMENT@2..5
8 NAME_REF@[2; 5) 8 NAME_REF@2..5
9 IDENT@[2; 5) "foo" 9 IDENT@2..5 "foo"
10 TOKEN_TREE@[5; 9) 10 TOKEN_TREE@5..9
11 L_PAREN@[5; 6) "(" 11 L_PAREN@5..6 "("
12 IDENT@[6; 7) "a" 12 IDENT@6..7 "a"
13 COMMA@[7; 8) "," 13 COMMA@7..8 ","
14 R_PAREN@[8; 9) ")" 14 R_PAREN@8..9 ")"
15 R_BRACK@[9; 10) "]" 15 R_BRACK@9..10 "]"
16 WHITESPACE@[10; 11) "\n" 16 WHITESPACE@10..11 "\n"
17 FN_KW@[11; 13) "fn" 17 FN_KW@11..13 "fn"
18 WHITESPACE@[13; 14) " " 18 WHITESPACE@13..14 " "
19 NAME@[14; 17) 19 NAME@14..17
20 IDENT@[14; 17) "foo" 20 IDENT@14..17 "foo"
21 PARAM_LIST@[17; 19) 21 PARAM_LIST@17..19
22 L_PAREN@[17; 18) "(" 22 L_PAREN@17..18 "("
23 R_PAREN@[18; 19) ")" 23 R_PAREN@18..19 ")"
24 WHITESPACE@[19; 20) " " 24 WHITESPACE@19..20 " "
25 BLOCK_EXPR@[20; 22) 25 BLOCK_EXPR@20..22
26 BLOCK@[20; 22) 26 BLOCK@20..22
27 L_CURLY@[20; 21) "{" 27 L_CURLY@20..21 "{"
28 R_CURLY@[21; 22) "}" 28 R_CURLY@21..22 "}"
29 WHITESPACE@[22; 23) "\n" 29 WHITESPACE@22..23 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast b/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast
index 5e859ef29..451634e3f 100644
--- a/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast
@@ -1,257 +1,257 @@
1SOURCE_FILE@[0; 290) 1SOURCE_FILE@0..290
2 STRUCT_DEF@[0; 13) 2 STRUCT_DEF@0..13
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 9) 5 NAME@7..9
6 IDENT@[7; 9) "S1" 6 IDENT@7..9 "S1"
7 TYPE_PARAM_LIST@[9; 12) 7 TYPE_PARAM_LIST@9..12
8 L_ANGLE@[9; 10) "<" 8 L_ANGLE@9..10 "<"
9 TYPE_PARAM@[10; 11) 9 TYPE_PARAM@10..11
10 NAME@[10; 11) 10 NAME@10..11
11 IDENT@[10; 11) "T" 11 IDENT@10..11 "T"
12 R_ANGLE@[11; 12) ">" 12 R_ANGLE@11..12 ">"
13 SEMICOLON@[12; 13) ";" 13 SEMICOLON@12..13 ";"
14 WHITESPACE@[13; 14) "\n" 14 WHITESPACE@13..14 "\n"
15 STRUCT_DEF@[14; 32) 15 STRUCT_DEF@14..32
16 STRUCT_KW@[14; 20) "struct" 16 STRUCT_KW@14..20 "struct"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 NAME@[21; 23) 18 NAME@21..23
19 IDENT@[21; 23) "S2" 19 IDENT@21..23 "S2"
20 TYPE_PARAM_LIST@[23; 26) 20 TYPE_PARAM_LIST@23..26
21 L_ANGLE@[23; 24) "<" 21 L_ANGLE@23..24 "<"
22 TYPE_PARAM@[24; 25) 22 TYPE_PARAM@24..25
23 NAME@[24; 25) 23 NAME@24..25
24 IDENT@[24; 25) "T" 24 IDENT@24..25 "T"
25 R_ANGLE@[25; 26) ">" 25 R_ANGLE@25..26 ">"
26 TUPLE_FIELD_DEF_LIST@[26; 31) 26 TUPLE_FIELD_DEF_LIST@26..31
27 L_PAREN@[26; 27) "(" 27 L_PAREN@26..27 "("
28 TUPLE_FIELD_DEF@[27; 30) 28 TUPLE_FIELD_DEF@27..30
29 PATH_TYPE@[27; 30) 29 PATH_TYPE@27..30
30 PATH@[27; 30) 30 PATH@27..30
31 PATH_SEGMENT@[27; 30) 31 PATH_SEGMENT@27..30
32 NAME_REF@[27; 30) 32 NAME_REF@27..30
33 IDENT@[27; 30) "u32" 33 IDENT@27..30 "u32"
34 R_PAREN@[30; 31) ")" 34 R_PAREN@30..31 ")"
35 SEMICOLON@[31; 32) ";" 35 SEMICOLON@31..32 ";"
36 WHITESPACE@[32; 33) "\n" 36 WHITESPACE@32..33 "\n"
37 STRUCT_DEF@[33; 56) 37 STRUCT_DEF@33..56
38 STRUCT_KW@[33; 39) "struct" 38 STRUCT_KW@33..39 "struct"
39 WHITESPACE@[39; 40) " " 39 WHITESPACE@39..40 " "
40 NAME@[40; 42) 40 NAME@40..42
41 IDENT@[40; 42) "S3" 41 IDENT@40..42 "S3"
42 TYPE_PARAM_LIST@[42; 45) 42 TYPE_PARAM_LIST@42..45
43 L_ANGLE@[42; 43) "<" 43 L_ANGLE@42..43 "<"
44 TYPE_PARAM@[43; 44) 44 TYPE_PARAM@43..44
45 NAME@[43; 44) 45 NAME@43..44
46 IDENT@[43; 44) "T" 46 IDENT@43..44 "T"
47 R_ANGLE@[44; 45) ">" 47 R_ANGLE@44..45 ">"
48 WHITESPACE@[45; 46) " " 48 WHITESPACE@45..46 " "
49 RECORD_FIELD_DEF_LIST@[46; 56) 49 RECORD_FIELD_DEF_LIST@46..56
50 L_CURLY@[46; 47) "{" 50 L_CURLY@46..47 "{"
51 WHITESPACE@[47; 48) " " 51 WHITESPACE@47..48 " "
52 RECORD_FIELD_DEF@[48; 54) 52 RECORD_FIELD_DEF@48..54
53 NAME@[48; 49) 53 NAME@48..49
54 IDENT@[48; 49) "u" 54 IDENT@48..49 "u"
55 COLON@[49; 50) ":" 55 COLON@49..50 ":"
56 WHITESPACE@[50; 51) " " 56 WHITESPACE@50..51 " "
57 PATH_TYPE@[51; 54) 57 PATH_TYPE@51..54
58 PATH@[51; 54) 58 PATH@51..54
59 PATH_SEGMENT@[51; 54) 59 PATH_SEGMENT@51..54
60 NAME_REF@[51; 54) 60 NAME_REF@51..54
61 IDENT@[51; 54) "u32" 61 IDENT@51..54 "u32"
62 WHITESPACE@[54; 55) " " 62 WHITESPACE@54..55 " "
63 R_CURLY@[55; 56) "}" 63 R_CURLY@55..56 "}"
64 WHITESPACE@[56; 58) "\n\n" 64 WHITESPACE@56..58 "\n\n"
65 STRUCT_DEF@[58; 70) 65 STRUCT_DEF@58..70
66 STRUCT_KW@[58; 64) "struct" 66 STRUCT_KW@58..64 "struct"
67 WHITESPACE@[64; 65) " " 67 WHITESPACE@64..65 " "
68 NAME@[65; 67) 68 NAME@65..67
69 IDENT@[65; 67) "S4" 69 IDENT@65..67 "S4"
70 TYPE_PARAM_LIST@[67; 69) 70 TYPE_PARAM_LIST@67..69
71 L_ANGLE@[67; 68) "<" 71 L_ANGLE@67..68 "<"
72 R_ANGLE@[68; 69) ">" 72 R_ANGLE@68..69 ">"
73 SEMICOLON@[69; 70) ";" 73 SEMICOLON@69..70 ";"
74 WHITESPACE@[70; 71) "\n" 74 WHITESPACE@70..71 "\n"
75 STRUCT_DEF@[71; 85) 75 STRUCT_DEF@71..85
76 STRUCT_KW@[71; 77) "struct" 76 STRUCT_KW@71..77 "struct"
77 WHITESPACE@[77; 78) " " 77 WHITESPACE@77..78 " "
78 NAME@[78; 80) 78 NAME@78..80
79 IDENT@[78; 80) "S5" 79 IDENT@78..80 "S5"
80 TYPE_PARAM_LIST@[80; 84) 80 TYPE_PARAM_LIST@80..84
81 L_ANGLE@[80; 81) "<" 81 L_ANGLE@80..81 "<"
82 LIFETIME_PARAM@[81; 83) 82 LIFETIME_PARAM@81..83
83 LIFETIME@[81; 83) "\'a" 83 LIFETIME@81..83 "\'a"
84 R_ANGLE@[83; 84) ">" 84 R_ANGLE@83..84 ">"
85 SEMICOLON@[84; 85) ";" 85 SEMICOLON@84..85 ";"
86 WHITESPACE@[85; 86) "\n" 86 WHITESPACE@85..86 "\n"
87 STRUCT_DEF@[86; 101) 87 STRUCT_DEF@86..101
88 STRUCT_KW@[86; 92) "struct" 88 STRUCT_KW@86..92 "struct"
89 WHITESPACE@[92; 93) " " 89 WHITESPACE@92..93 " "
90 NAME@[93; 95) 90 NAME@93..95
91 IDENT@[93; 95) "S6" 91 IDENT@93..95 "S6"
92 TYPE_PARAM_LIST@[95; 100) 92 TYPE_PARAM_LIST@95..100
93 L_ANGLE@[95; 96) "<" 93 L_ANGLE@95..96 "<"
94 LIFETIME_PARAM@[96; 99) 94 LIFETIME_PARAM@96..99
95 LIFETIME@[96; 98) "\'a" 95 LIFETIME@96..98 "\'a"
96 COLON@[98; 99) ":" 96 COLON@98..99 ":"
97 R_ANGLE@[99; 100) ">" 97 R_ANGLE@99..100 ">"
98 SEMICOLON@[100; 101) ";" 98 SEMICOLON@100..101 ";"
99 WHITESPACE@[101; 102) "\n" 99 WHITESPACE@101..102 "\n"
100 STRUCT_DEF@[102; 120) 100 STRUCT_DEF@102..120
101 STRUCT_KW@[102; 108) "struct" 101 STRUCT_KW@102..108 "struct"
102 WHITESPACE@[108; 109) " " 102 WHITESPACE@108..109 " "
103 NAME@[109; 111) 103 NAME@109..111
104 IDENT@[109; 111) "S7" 104 IDENT@109..111 "S7"
105 TYPE_PARAM_LIST@[111; 119) 105 TYPE_PARAM_LIST@111..119
106 L_ANGLE@[111; 112) "<" 106 L_ANGLE@111..112 "<"
107 LIFETIME_PARAM@[112; 118) 107 LIFETIME_PARAM@112..118
108 LIFETIME@[112; 114) "\'a" 108 LIFETIME@112..114 "\'a"
109 COLON@[114; 115) ":" 109 COLON@114..115 ":"
110 WHITESPACE@[115; 116) " " 110 WHITESPACE@115..116 " "
111 LIFETIME@[116; 118) "\'b" 111 LIFETIME@116..118 "\'b"
112 R_ANGLE@[118; 119) ">" 112 R_ANGLE@118..119 ">"
113 SEMICOLON@[119; 120) ";" 113 SEMICOLON@119..120 ";"
114 WHITESPACE@[120; 121) "\n" 114 WHITESPACE@120..121 "\n"
115 STRUCT_DEF@[121; 142) 115 STRUCT_DEF@121..142
116 STRUCT_KW@[121; 127) "struct" 116 STRUCT_KW@121..127 "struct"
117 WHITESPACE@[127; 128) " " 117 WHITESPACE@127..128 " "
118 NAME@[128; 130) 118 NAME@128..130
119 IDENT@[128; 130) "S8" 119 IDENT@128..130 "S8"
120 TYPE_PARAM_LIST@[130; 141) 120 TYPE_PARAM_LIST@130..141
121 L_ANGLE@[130; 131) "<" 121 L_ANGLE@130..131 "<"
122 LIFETIME_PARAM@[131; 139) 122 LIFETIME_PARAM@131..139
123 LIFETIME@[131; 133) "\'a" 123 LIFETIME@131..133 "\'a"
124 COLON@[133; 134) ":" 124 COLON@133..134 ":"
125 WHITESPACE@[134; 135) " " 125 WHITESPACE@134..135 " "
126 LIFETIME@[135; 137) "\'b" 126 LIFETIME@135..137 "\'b"
127 WHITESPACE@[137; 138) " " 127 WHITESPACE@137..138 " "
128 PLUS@[138; 139) "+" 128 PLUS@138..139 "+"
129 WHITESPACE@[139; 140) " " 129 WHITESPACE@139..140 " "
130 R_ANGLE@[140; 141) ">" 130 R_ANGLE@140..141 ">"
131 SEMICOLON@[141; 142) ";" 131 SEMICOLON@141..142 ";"
132 WHITESPACE@[142; 143) "\n" 132 WHITESPACE@142..143 "\n"
133 STRUCT_DEF@[143; 166) 133 STRUCT_DEF@143..166
134 STRUCT_KW@[143; 149) "struct" 134 STRUCT_KW@143..149 "struct"
135 WHITESPACE@[149; 150) " " 135 WHITESPACE@149..150 " "
136 NAME@[150; 152) 136 NAME@150..152
137 IDENT@[150; 152) "S9" 137 IDENT@150..152 "S9"
138 TYPE_PARAM_LIST@[152; 165) 138 TYPE_PARAM_LIST@152..165
139 L_ANGLE@[152; 153) "<" 139 L_ANGLE@152..153 "<"
140 LIFETIME_PARAM@[153; 164) 140 LIFETIME_PARAM@153..164
141 LIFETIME@[153; 155) "\'a" 141 LIFETIME@153..155 "\'a"
142 COLON@[155; 156) ":" 142 COLON@155..156 ":"
143 WHITESPACE@[156; 157) " " 143 WHITESPACE@156..157 " "
144 LIFETIME@[157; 159) "\'b" 144 LIFETIME@157..159 "\'b"
145 WHITESPACE@[159; 160) " " 145 WHITESPACE@159..160 " "
146 PLUS@[160; 161) "+" 146 PLUS@160..161 "+"
147 WHITESPACE@[161; 162) " " 147 WHITESPACE@161..162 " "
148 LIFETIME@[162; 164) "\'c" 148 LIFETIME@162..164 "\'c"
149 R_ANGLE@[164; 165) ">" 149 R_ANGLE@164..165 ">"
150 SEMICOLON@[165; 166) ";" 150 SEMICOLON@165..166 ";"
151 WHITESPACE@[166; 167) "\n" 151 WHITESPACE@166..167 "\n"
152 STRUCT_DEF@[167; 183) 152 STRUCT_DEF@167..183
153 STRUCT_KW@[167; 173) "struct" 153 STRUCT_KW@167..173 "struct"
154 WHITESPACE@[173; 174) " " 154 WHITESPACE@173..174 " "
155 NAME@[174; 177) 155 NAME@174..177
156 IDENT@[174; 177) "S10" 156 IDENT@174..177 "S10"
157 TYPE_PARAM_LIST@[177; 182) 157 TYPE_PARAM_LIST@177..182
158 L_ANGLE@[177; 178) "<" 158 L_ANGLE@177..178 "<"
159 LIFETIME_PARAM@[178; 180) 159 LIFETIME_PARAM@178..180
160 LIFETIME@[178; 180) "\'a" 160 LIFETIME@178..180 "\'a"
161 COMMA@[180; 181) "," 161 COMMA@180..181 ","
162 R_ANGLE@[181; 182) ">" 162 R_ANGLE@181..182 ">"
163 SEMICOLON@[182; 183) ";" 163 SEMICOLON@182..183 ";"
164 WHITESPACE@[183; 184) "\n" 164 WHITESPACE@183..184 "\n"
165 STRUCT_DEF@[184; 203) 165 STRUCT_DEF@184..203
166 STRUCT_KW@[184; 190) "struct" 166 STRUCT_KW@184..190 "struct"
167 WHITESPACE@[190; 191) " " 167 WHITESPACE@190..191 " "
168 NAME@[191; 194) 168 NAME@191..194
169 IDENT@[191; 194) "S11" 169 IDENT@191..194 "S11"
170 TYPE_PARAM_LIST@[194; 202) 170 TYPE_PARAM_LIST@194..202
171 L_ANGLE@[194; 195) "<" 171 L_ANGLE@194..195 "<"
172 LIFETIME_PARAM@[195; 197) 172 LIFETIME_PARAM@195..197
173 LIFETIME@[195; 197) "\'a" 173 LIFETIME@195..197 "\'a"
174 COMMA@[197; 198) "," 174 COMMA@197..198 ","
175 WHITESPACE@[198; 199) " " 175 WHITESPACE@198..199 " "
176 LIFETIME_PARAM@[199; 201) 176 LIFETIME_PARAM@199..201
177 LIFETIME@[199; 201) "\'b" 177 LIFETIME@199..201 "\'b"
178 R_ANGLE@[201; 202) ">" 178 R_ANGLE@201..202 ">"
179 SEMICOLON@[202; 203) ";" 179 SEMICOLON@202..203 ";"
180 WHITESPACE@[203; 204) "\n" 180 WHITESPACE@203..204 "\n"
181 STRUCT_DEF@[204; 233) 181 STRUCT_DEF@204..233
182 STRUCT_KW@[204; 210) "struct" 182 STRUCT_KW@204..210 "struct"
183 WHITESPACE@[210; 211) " " 183 WHITESPACE@210..211 " "
184 NAME@[211; 214) 184 NAME@211..214
185 IDENT@[211; 214) "S12" 185 IDENT@211..214 "S12"
186 TYPE_PARAM_LIST@[214; 232) 186 TYPE_PARAM_LIST@214..232
187 L_ANGLE@[214; 215) "<" 187 L_ANGLE@214..215 "<"
188 LIFETIME_PARAM@[215; 222) 188 LIFETIME_PARAM@215..222
189 LIFETIME@[215; 217) "\'a" 189 LIFETIME@215..217 "\'a"
190 COLON@[217; 218) ":" 190 COLON@217..218 ":"
191 WHITESPACE@[218; 219) " " 191 WHITESPACE@218..219 " "
192 LIFETIME@[219; 221) "\'b" 192 LIFETIME@219..221 "\'b"
193 PLUS@[221; 222) "+" 193 PLUS@221..222 "+"
194 COMMA@[222; 223) "," 194 COMMA@222..223 ","
195 WHITESPACE@[223; 224) " " 195 WHITESPACE@223..224 " "
196 LIFETIME_PARAM@[224; 230) 196 LIFETIME_PARAM@224..230
197 LIFETIME@[224; 226) "\'b" 197 LIFETIME@224..226 "\'b"
198 COLON@[226; 227) ":" 198 COLON@226..227 ":"
199 WHITESPACE@[227; 228) " " 199 WHITESPACE@227..228 " "
200 LIFETIME@[228; 230) "\'c" 200 LIFETIME@228..230 "\'c"
201 COMMA@[230; 231) "," 201 COMMA@230..231 ","
202 R_ANGLE@[231; 232) ">" 202 R_ANGLE@231..232 ">"
203 SEMICOLON@[232; 233) ";" 203 SEMICOLON@232..233 ";"
204 WHITESPACE@[233; 235) "\n\n" 204 WHITESPACE@233..235 "\n\n"
205 STRUCT_DEF@[235; 249) 205 STRUCT_DEF@235..249
206 STRUCT_KW@[235; 241) "struct" 206 STRUCT_KW@235..241 "struct"
207 WHITESPACE@[241; 242) " " 207 WHITESPACE@241..242 " "
208 NAME@[242; 245) 208 NAME@242..245
209 IDENT@[242; 245) "S13" 209 IDENT@242..245 "S13"
210 TYPE_PARAM_LIST@[245; 248) 210 TYPE_PARAM_LIST@245..248
211 L_ANGLE@[245; 246) "<" 211 L_ANGLE@245..246 "<"
212 TYPE_PARAM@[246; 247) 212 TYPE_PARAM@246..247
213 NAME@[246; 247) 213 NAME@246..247
214 IDENT@[246; 247) "T" 214 IDENT@246..247 "T"
215 R_ANGLE@[247; 248) ">" 215 R_ANGLE@247..248 ">"
216 SEMICOLON@[248; 249) ";" 216 SEMICOLON@248..249 ";"
217 WHITESPACE@[249; 250) "\n" 217 WHITESPACE@249..250 "\n"
218 STRUCT_DEF@[250; 267) 218 STRUCT_DEF@250..267
219 STRUCT_KW@[250; 256) "struct" 219 STRUCT_KW@250..256 "struct"
220 WHITESPACE@[256; 257) " " 220 WHITESPACE@256..257 " "
221 NAME@[257; 260) 221 NAME@257..260
222 IDENT@[257; 260) "S14" 222 IDENT@257..260 "S14"
223 TYPE_PARAM_LIST@[260; 266) 223 TYPE_PARAM_LIST@260..266
224 L_ANGLE@[260; 261) "<" 224 L_ANGLE@260..261 "<"
225 TYPE_PARAM@[261; 262) 225 TYPE_PARAM@261..262
226 NAME@[261; 262) 226 NAME@261..262
227 IDENT@[261; 262) "T" 227 IDENT@261..262 "T"
228 COMMA@[262; 263) "," 228 COMMA@262..263 ","
229 WHITESPACE@[263; 264) " " 229 WHITESPACE@263..264 " "
230 TYPE_PARAM@[264; 265) 230 TYPE_PARAM@264..265
231 NAME@[264; 265) 231 NAME@264..265
232 IDENT@[264; 265) "U" 232 IDENT@264..265 "U"
233 R_ANGLE@[265; 266) ">" 233 R_ANGLE@265..266 ">"
234 SEMICOLON@[266; 267) ";" 234 SEMICOLON@266..267 ";"
235 WHITESPACE@[267; 268) "\n" 235 WHITESPACE@267..268 "\n"
236 STRUCT_DEF@[268; 289) 236 STRUCT_DEF@268..289
237 STRUCT_KW@[268; 274) "struct" 237 STRUCT_KW@268..274 "struct"
238 WHITESPACE@[274; 275) " " 238 WHITESPACE@274..275 " "
239 NAME@[275; 278) 239 NAME@275..278
240 IDENT@[275; 278) "S15" 240 IDENT@275..278 "S15"
241 TYPE_PARAM_LIST@[278; 288) 241 TYPE_PARAM_LIST@278..288
242 L_ANGLE@[278; 279) "<" 242 L_ANGLE@278..279 "<"
243 LIFETIME_PARAM@[279; 281) 243 LIFETIME_PARAM@279..281
244 LIFETIME@[279; 281) "\'a" 244 LIFETIME@279..281 "\'a"
245 COMMA@[281; 282) "," 245 COMMA@281..282 ","
246 WHITESPACE@[282; 283) " " 246 WHITESPACE@282..283 " "
247 TYPE_PARAM@[283; 284) 247 TYPE_PARAM@283..284
248 NAME@[283; 284) 248 NAME@283..284
249 IDENT@[283; 284) "T" 249 IDENT@283..284 "T"
250 COMMA@[284; 285) "," 250 COMMA@284..285 ","
251 WHITESPACE@[285; 286) " " 251 WHITESPACE@285..286 " "
252 TYPE_PARAM@[286; 287) 252 TYPE_PARAM@286..287
253 NAME@[286; 287) 253 NAME@286..287
254 IDENT@[286; 287) "U" 254 IDENT@286..287 "U"
255 R_ANGLE@[287; 288) ">" 255 R_ANGLE@287..288 ">"
256 SEMICOLON@[288; 289) ";" 256 SEMICOLON@288..289 ";"
257 WHITESPACE@[289; 290) "\n" 257 WHITESPACE@289..290 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0019_enums.rast b/crates/ra_syntax/test_data/parser/ok/0019_enums.rast
index 9d4a47a51..f767e9e19 100644
--- a/crates/ra_syntax/test_data/parser/ok/0019_enums.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0019_enums.rast
@@ -1,155 +1,155 @@
1SOURCE_FILE@[0; 182) 1SOURCE_FILE@0..182
2 ENUM_DEF@[0; 11) 2 ENUM_DEF@0..11
3 ENUM_KW@[0; 4) "enum" 3 ENUM_KW@0..4 "enum"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 7) 5 NAME@5..7
6 IDENT@[5; 7) "E1" 6 IDENT@5..7 "E1"
7 WHITESPACE@[7; 8) " " 7 WHITESPACE@7..8 " "
8 ENUM_VARIANT_LIST@[8; 11) 8 ENUM_VARIANT_LIST@8..11
9 L_CURLY@[8; 9) "{" 9 L_CURLY@8..9 "{"
10 WHITESPACE@[9; 10) "\n" 10 WHITESPACE@9..10 "\n"
11 R_CURLY@[10; 11) "}" 11 R_CURLY@10..11 "}"
12 WHITESPACE@[11; 13) "\n\n" 12 WHITESPACE@11..13 "\n\n"
13 ENUM_DEF@[13; 27) 13 ENUM_DEF@13..27
14 ENUM_KW@[13; 17) "enum" 14 ENUM_KW@13..17 "enum"
15 WHITESPACE@[17; 18) " " 15 WHITESPACE@17..18 " "
16 NAME@[18; 20) 16 NAME@18..20
17 IDENT@[18; 20) "E2" 17 IDENT@18..20 "E2"
18 TYPE_PARAM_LIST@[20; 23) 18 TYPE_PARAM_LIST@20..23
19 L_ANGLE@[20; 21) "<" 19 L_ANGLE@20..21 "<"
20 TYPE_PARAM@[21; 22) 20 TYPE_PARAM@21..22
21 NAME@[21; 22) 21 NAME@21..22
22 IDENT@[21; 22) "T" 22 IDENT@21..22 "T"
23 R_ANGLE@[22; 23) ">" 23 R_ANGLE@22..23 ">"
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 ENUM_VARIANT_LIST@[24; 27) 25 ENUM_VARIANT_LIST@24..27
26 L_CURLY@[24; 25) "{" 26 L_CURLY@24..25 "{"
27 WHITESPACE@[25; 26) "\n" 27 WHITESPACE@25..26 "\n"
28 R_CURLY@[26; 27) "}" 28 R_CURLY@26..27 "}"
29 WHITESPACE@[27; 29) "\n\n" 29 WHITESPACE@27..29 "\n\n"
30 ENUM_DEF@[29; 46) 30 ENUM_DEF@29..46
31 ENUM_KW@[29; 33) "enum" 31 ENUM_KW@29..33 "enum"
32 WHITESPACE@[33; 34) " " 32 WHITESPACE@33..34 " "
33 NAME@[34; 36) 33 NAME@34..36
34 IDENT@[34; 36) "E3" 34 IDENT@34..36 "E3"
35 WHITESPACE@[36; 37) " " 35 WHITESPACE@36..37 " "
36 ENUM_VARIANT_LIST@[37; 46) 36 ENUM_VARIANT_LIST@37..46
37 L_CURLY@[37; 38) "{" 37 L_CURLY@37..38 "{"
38 WHITESPACE@[38; 43) "\n " 38 WHITESPACE@38..43 "\n "
39 ENUM_VARIANT@[43; 44) 39 ENUM_VARIANT@43..44
40 NAME@[43; 44) 40 NAME@43..44
41 IDENT@[43; 44) "X" 41 IDENT@43..44 "X"
42 WHITESPACE@[44; 45) "\n" 42 WHITESPACE@44..45 "\n"
43 R_CURLY@[45; 46) "}" 43 R_CURLY@45..46 "}"
44 WHITESPACE@[46; 48) "\n\n" 44 WHITESPACE@46..48 "\n\n"
45 ENUM_DEF@[48; 66) 45 ENUM_DEF@48..66
46 ENUM_KW@[48; 52) "enum" 46 ENUM_KW@48..52 "enum"
47 WHITESPACE@[52; 53) " " 47 WHITESPACE@52..53 " "
48 NAME@[53; 55) 48 NAME@53..55
49 IDENT@[53; 55) "E4" 49 IDENT@53..55 "E4"
50 WHITESPACE@[55; 56) " " 50 WHITESPACE@55..56 " "
51 ENUM_VARIANT_LIST@[56; 66) 51 ENUM_VARIANT_LIST@56..66
52 L_CURLY@[56; 57) "{" 52 L_CURLY@56..57 "{"
53 WHITESPACE@[57; 62) "\n " 53 WHITESPACE@57..62 "\n "
54 ENUM_VARIANT@[62; 63) 54 ENUM_VARIANT@62..63
55 NAME@[62; 63) 55 NAME@62..63
56 IDENT@[62; 63) "X" 56 IDENT@62..63 "X"
57 COMMA@[63; 64) "," 57 COMMA@63..64 ","
58 WHITESPACE@[64; 65) "\n" 58 WHITESPACE@64..65 "\n"
59 R_CURLY@[65; 66) "}" 59 R_CURLY@65..66 "}"
60 WHITESPACE@[66; 68) "\n\n" 60 WHITESPACE@66..68 "\n\n"
61 ENUM_DEF@[68; 181) 61 ENUM_DEF@68..181
62 ENUM_KW@[68; 72) "enum" 62 ENUM_KW@68..72 "enum"
63 WHITESPACE@[72; 73) " " 63 WHITESPACE@72..73 " "
64 NAME@[73; 75) 64 NAME@73..75
65 IDENT@[73; 75) "E5" 65 IDENT@73..75 "E5"
66 WHITESPACE@[75; 76) " " 66 WHITESPACE@75..76 " "
67 ENUM_VARIANT_LIST@[76; 181) 67 ENUM_VARIANT_LIST@76..181
68 L_CURLY@[76; 77) "{" 68 L_CURLY@76..77 "{"
69 WHITESPACE@[77; 82) "\n " 69 WHITESPACE@77..82 "\n "
70 ENUM_VARIANT@[82; 83) 70 ENUM_VARIANT@82..83
71 NAME@[82; 83) 71 NAME@82..83
72 IDENT@[82; 83) "A" 72 IDENT@82..83 "A"
73 COMMA@[83; 84) "," 73 COMMA@83..84 ","
74 WHITESPACE@[84; 89) "\n " 74 WHITESPACE@84..89 "\n "
75 ENUM_VARIANT@[89; 95) 75 ENUM_VARIANT@89..95
76 NAME@[89; 90) 76 NAME@89..90
77 IDENT@[89; 90) "B" 77 IDENT@89..90 "B"
78 WHITESPACE@[90; 91) " " 78 WHITESPACE@90..91 " "
79 EQ@[91; 92) "=" 79 EQ@91..92 "="
80 WHITESPACE@[92; 93) " " 80 WHITESPACE@92..93 " "
81 LITERAL@[93; 95) 81 LITERAL@93..95
82 INT_NUMBER@[93; 95) "92" 82 INT_NUMBER@93..95 "92"
83 COMMA@[95; 96) "," 83 COMMA@95..96 ","
84 WHITESPACE@[96; 101) "\n " 84 WHITESPACE@96..101 "\n "
85 ENUM_VARIANT@[101; 146) 85 ENUM_VARIANT@101..146
86 NAME@[101; 102) 86 NAME@101..102
87 IDENT@[101; 102) "C" 87 IDENT@101..102 "C"
88 WHITESPACE@[102; 103) " " 88 WHITESPACE@102..103 " "
89 RECORD_FIELD_DEF_LIST@[103; 146) 89 RECORD_FIELD_DEF_LIST@103..146
90 L_CURLY@[103; 104) "{" 90 L_CURLY@103..104 "{"
91 WHITESPACE@[104; 113) "\n " 91 WHITESPACE@104..113 "\n "
92 RECORD_FIELD_DEF@[113; 119) 92 RECORD_FIELD_DEF@113..119
93 NAME@[113; 114) 93 NAME@113..114
94 IDENT@[113; 114) "a" 94 IDENT@113..114 "a"
95 COLON@[114; 115) ":" 95 COLON@114..115 ":"
96 WHITESPACE@[115; 116) " " 96 WHITESPACE@115..116 " "
97 PATH_TYPE@[116; 119) 97 PATH_TYPE@116..119
98 PATH@[116; 119) 98 PATH@116..119
99 PATH_SEGMENT@[116; 119) 99 PATH_SEGMENT@116..119
100 NAME_REF@[116; 119) 100 NAME_REF@116..119
101 IDENT@[116; 119) "u32" 101 IDENT@116..119 "u32"
102 COMMA@[119; 120) "," 102 COMMA@119..120 ","
103 WHITESPACE@[120; 129) "\n " 103 WHITESPACE@120..129 "\n "
104 RECORD_FIELD_DEF@[129; 139) 104 RECORD_FIELD_DEF@129..139
105 VISIBILITY@[129; 132) 105 VISIBILITY@129..132
106 PUB_KW@[129; 132) "pub" 106 PUB_KW@129..132 "pub"
107 WHITESPACE@[132; 133) " " 107 WHITESPACE@132..133 " "
108 NAME@[133; 134) 108 NAME@133..134
109 IDENT@[133; 134) "b" 109 IDENT@133..134 "b"
110 COLON@[134; 135) ":" 110 COLON@134..135 ":"
111 WHITESPACE@[135; 136) " " 111 WHITESPACE@135..136 " "
112 PATH_TYPE@[136; 139) 112 PATH_TYPE@136..139
113 PATH@[136; 139) 113 PATH@136..139
114 PATH_SEGMENT@[136; 139) 114 PATH_SEGMENT@136..139
115 NAME_REF@[136; 139) 115 NAME_REF@136..139
116 IDENT@[136; 139) "f64" 116 IDENT@136..139 "f64"
117 COMMA@[139; 140) "," 117 COMMA@139..140 ","
118 WHITESPACE@[140; 145) "\n " 118 WHITESPACE@140..145 "\n "
119 R_CURLY@[145; 146) "}" 119 R_CURLY@145..146 "}"
120 COMMA@[146; 147) "," 120 COMMA@146..147 ","
121 WHITESPACE@[147; 152) "\n " 121 WHITESPACE@147..152 "\n "
122 ENUM_VARIANT@[152; 156) 122 ENUM_VARIANT@152..156
123 NAME@[152; 153) 123 NAME@152..153
124 IDENT@[152; 153) "F" 124 IDENT@152..153 "F"
125 WHITESPACE@[153; 154) " " 125 WHITESPACE@153..154 " "
126 RECORD_FIELD_DEF_LIST@[154; 156) 126 RECORD_FIELD_DEF_LIST@154..156
127 L_CURLY@[154; 155) "{" 127 L_CURLY@154..155 "{"
128 R_CURLY@[155; 156) "}" 128 R_CURLY@155..156 "}"
129 COMMA@[156; 157) "," 129 COMMA@156..157 ","
130 WHITESPACE@[157; 162) "\n " 130 WHITESPACE@157..162 "\n "
131 ENUM_VARIANT@[162; 169) 131 ENUM_VARIANT@162..169
132 NAME@[162; 163) 132 NAME@162..163
133 IDENT@[162; 163) "D" 133 IDENT@162..163 "D"
134 TUPLE_FIELD_DEF_LIST@[163; 169) 134 TUPLE_FIELD_DEF_LIST@163..169
135 L_PAREN@[163; 164) "(" 135 L_PAREN@163..164 "("
136 TUPLE_FIELD_DEF@[164; 167) 136 TUPLE_FIELD_DEF@164..167
137 PATH_TYPE@[164; 167) 137 PATH_TYPE@164..167
138 PATH@[164; 167) 138 PATH@164..167
139 PATH_SEGMENT@[164; 167) 139 PATH_SEGMENT@164..167
140 NAME_REF@[164; 167) 140 NAME_REF@164..167
141 IDENT@[164; 167) "u32" 141 IDENT@164..167 "u32"
142 COMMA@[167; 168) "," 142 COMMA@167..168 ","
143 R_PAREN@[168; 169) ")" 143 R_PAREN@168..169 ")"
144 COMMA@[169; 170) "," 144 COMMA@169..170 ","
145 WHITESPACE@[170; 175) "\n " 145 WHITESPACE@170..175 "\n "
146 ENUM_VARIANT@[175; 178) 146 ENUM_VARIANT@175..178
147 NAME@[175; 176) 147 NAME@175..176
148 IDENT@[175; 176) "E" 148 IDENT@175..176 "E"
149 TUPLE_FIELD_DEF_LIST@[176; 178) 149 TUPLE_FIELD_DEF_LIST@176..178
150 L_PAREN@[176; 177) "(" 150 L_PAREN@176..177 "("
151 R_PAREN@[177; 178) ")" 151 R_PAREN@177..178 ")"
152 COMMA@[178; 179) "," 152 COMMA@178..179 ","
153 WHITESPACE@[179; 180) "\n" 153 WHITESPACE@179..180 "\n"
154 R_CURLY@[180; 181) "}" 154 R_CURLY@180..181 "}"
155 WHITESPACE@[181; 182) "\n" 155 WHITESPACE@181..182 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast b/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast
index edacc4bd9..4fb4baf56 100644
--- a/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast
@@ -1,268 +1,268 @@
1SOURCE_FILE@[0; 250) 1SOURCE_FILE@0..250
2 STRUCT_DEF@[0; 12) 2 STRUCT_DEF@0..12
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "A" 6 IDENT@7..8 "A"
7 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@8..11
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 TYPE_PARAM@[9; 10) 9 TYPE_PARAM@9..10
10 NAME@[9; 10) 10 NAME@9..10
11 IDENT@[9; 10) "T" 11 IDENT@9..10 "T"
12 R_ANGLE@[10; 11) ">" 12 R_ANGLE@10..11 ">"
13 SEMICOLON@[11; 12) ";" 13 SEMICOLON@11..12 ";"
14 WHITESPACE@[12; 13) "\n" 14 WHITESPACE@12..13 "\n"
15 STRUCT_DEF@[13; 26) 15 STRUCT_DEF@13..26
16 STRUCT_KW@[13; 19) "struct" 16 STRUCT_KW@13..19 "struct"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 NAME@[20; 21) 18 NAME@20..21
19 IDENT@[20; 21) "B" 19 IDENT@20..21 "B"
20 TYPE_PARAM_LIST@[21; 25) 20 TYPE_PARAM_LIST@21..25
21 L_ANGLE@[21; 22) "<" 21 L_ANGLE@21..22 "<"
22 TYPE_PARAM@[22; 24) 22 TYPE_PARAM@22..24
23 NAME@[22; 23) 23 NAME@22..23
24 IDENT@[22; 23) "T" 24 IDENT@22..23 "T"
25 COLON@[23; 24) ":" 25 COLON@23..24 ":"
26 TYPE_BOUND_LIST@[24; 24) 26 TYPE_BOUND_LIST@24..24
27 R_ANGLE@[24; 25) ">" 27 R_ANGLE@24..25 ">"
28 SEMICOLON@[25; 26) ";" 28 SEMICOLON@25..26 ";"
29 WHITESPACE@[26; 27) "\n" 29 WHITESPACE@26..27 "\n"
30 STRUCT_DEF@[27; 43) 30 STRUCT_DEF@27..43
31 STRUCT_KW@[27; 33) "struct" 31 STRUCT_KW@27..33 "struct"
32 WHITESPACE@[33; 34) " " 32 WHITESPACE@33..34 " "
33 NAME@[34; 35) 33 NAME@34..35
34 IDENT@[34; 35) "C" 34 IDENT@34..35 "C"
35 TYPE_PARAM_LIST@[35; 42) 35 TYPE_PARAM_LIST@35..42
36 L_ANGLE@[35; 36) "<" 36 L_ANGLE@35..36 "<"
37 TYPE_PARAM@[36; 41) 37 TYPE_PARAM@36..41
38 NAME@[36; 37) 38 NAME@36..37
39 IDENT@[36; 37) "T" 39 IDENT@36..37 "T"
40 COLON@[37; 38) ":" 40 COLON@37..38 ":"
41 WHITESPACE@[38; 39) " " 41 WHITESPACE@38..39 " "
42 TYPE_BOUND_LIST@[39; 41) 42 TYPE_BOUND_LIST@39..41
43 TYPE_BOUND@[39; 41) 43 TYPE_BOUND@39..41
44 LIFETIME@[39; 41) "\'a" 44 LIFETIME@39..41 "\'a"
45 R_ANGLE@[41; 42) ">" 45 R_ANGLE@41..42 ">"
46 SEMICOLON@[42; 43) ";" 46 SEMICOLON@42..43 ";"
47 WHITESPACE@[43; 44) "\n" 47 WHITESPACE@43..44 "\n"
48 STRUCT_DEF@[44; 63) 48 STRUCT_DEF@44..63
49 STRUCT_KW@[44; 50) "struct" 49 STRUCT_KW@44..50 "struct"
50 WHITESPACE@[50; 51) " " 50 WHITESPACE@50..51 " "
51 NAME@[51; 52) 51 NAME@51..52
52 IDENT@[51; 52) "D" 52 IDENT@51..52 "D"
53 TYPE_PARAM_LIST@[52; 62) 53 TYPE_PARAM_LIST@52..62
54 L_ANGLE@[52; 53) "<" 54 L_ANGLE@52..53 "<"
55 TYPE_PARAM@[53; 60) 55 TYPE_PARAM@53..60
56 NAME@[53; 54) 56 NAME@53..54
57 IDENT@[53; 54) "T" 57 IDENT@53..54 "T"
58 COLON@[54; 55) ":" 58 COLON@54..55 ":"
59 WHITESPACE@[55; 56) " " 59 WHITESPACE@55..56 " "
60 TYPE_BOUND_LIST@[56; 60) 60 TYPE_BOUND_LIST@56..60
61 TYPE_BOUND@[56; 58) 61 TYPE_BOUND@56..58
62 LIFETIME@[56; 58) "\'a" 62 LIFETIME@56..58 "\'a"
63 WHITESPACE@[58; 59) " " 63 WHITESPACE@58..59 " "
64 PLUS@[59; 60) "+" 64 PLUS@59..60 "+"
65 WHITESPACE@[60; 61) " " 65 WHITESPACE@60..61 " "
66 R_ANGLE@[61; 62) ">" 66 R_ANGLE@61..62 ">"
67 SEMICOLON@[62; 63) ";" 67 SEMICOLON@62..63 ";"
68 WHITESPACE@[63; 64) "\n" 68 WHITESPACE@63..64 "\n"
69 STRUCT_DEF@[64; 86) 69 STRUCT_DEF@64..86
70 STRUCT_KW@[64; 70) "struct" 70 STRUCT_KW@64..70 "struct"
71 WHITESPACE@[70; 71) " " 71 WHITESPACE@70..71 " "
72 NAME@[71; 72) 72 NAME@71..72
73 IDENT@[71; 72) "E" 73 IDENT@71..72 "E"
74 TYPE_PARAM_LIST@[72; 85) 74 TYPE_PARAM_LIST@72..85
75 L_ANGLE@[72; 73) "<" 75 L_ANGLE@72..73 "<"
76 TYPE_PARAM@[73; 83) 76 TYPE_PARAM@73..83
77 NAME@[73; 74) 77 NAME@73..74
78 IDENT@[73; 74) "T" 78 IDENT@73..74 "T"
79 COLON@[74; 75) ":" 79 COLON@74..75 ":"
80 WHITESPACE@[75; 76) " " 80 WHITESPACE@75..76 " "
81 TYPE_BOUND_LIST@[76; 83) 81 TYPE_BOUND_LIST@76..83
82 TYPE_BOUND@[76; 78) 82 TYPE_BOUND@76..78
83 LIFETIME@[76; 78) "\'a" 83 LIFETIME@76..78 "\'a"
84 WHITESPACE@[78; 79) " " 84 WHITESPACE@78..79 " "
85 PLUS@[79; 80) "+" 85 PLUS@79..80 "+"
86 WHITESPACE@[80; 81) " " 86 WHITESPACE@80..81 " "
87 TYPE_BOUND@[81; 83) 87 TYPE_BOUND@81..83
88 LIFETIME@[81; 83) "\'d" 88 LIFETIME@81..83 "\'d"
89 WHITESPACE@[83; 84) " " 89 WHITESPACE@83..84 " "
90 R_ANGLE@[84; 85) ">" 90 R_ANGLE@84..85 ">"
91 SEMICOLON@[85; 86) ";" 91 SEMICOLON@85..86 ";"
92 WHITESPACE@[86; 87) "\n" 92 WHITESPACE@86..87 "\n"
93 STRUCT_DEF@[87; 116) 93 STRUCT_DEF@87..116
94 STRUCT_KW@[87; 93) "struct" 94 STRUCT_KW@87..93 "struct"
95 WHITESPACE@[93; 94) " " 95 WHITESPACE@93..94 " "
96 NAME@[94; 95) 96 NAME@94..95
97 IDENT@[94; 95) "F" 97 IDENT@94..95 "F"
98 TYPE_PARAM_LIST@[95; 115) 98 TYPE_PARAM_LIST@95..115
99 L_ANGLE@[95; 96) "<" 99 L_ANGLE@95..96 "<"
100 TYPE_PARAM@[96; 114) 100 TYPE_PARAM@96..114
101 NAME@[96; 97) 101 NAME@96..97
102 IDENT@[96; 97) "T" 102 IDENT@96..97 "T"
103 COLON@[97; 98) ":" 103 COLON@97..98 ":"
104 WHITESPACE@[98; 99) " " 104 WHITESPACE@98..99 " "
105 TYPE_BOUND_LIST@[99; 114) 105 TYPE_BOUND_LIST@99..114
106 TYPE_BOUND@[99; 101) 106 TYPE_BOUND@99..101
107 LIFETIME@[99; 101) "\'a" 107 LIFETIME@99..101 "\'a"
108 WHITESPACE@[101; 102) " " 108 WHITESPACE@101..102 " "
109 PLUS@[102; 103) "+" 109 PLUS@102..103 "+"
110 WHITESPACE@[103; 104) " " 110 WHITESPACE@103..104 " "
111 TYPE_BOUND@[104; 106) 111 TYPE_BOUND@104..106
112 LIFETIME@[104; 106) "\'d" 112 LIFETIME@104..106 "\'d"
113 WHITESPACE@[106; 107) " " 113 WHITESPACE@106..107 " "
114 PLUS@[107; 108) "+" 114 PLUS@107..108 "+"
115 WHITESPACE@[108; 109) " " 115 WHITESPACE@108..109 " "
116 TYPE_BOUND@[109; 114) 116 TYPE_BOUND@109..114
117 PATH_TYPE@[109; 114) 117 PATH_TYPE@109..114
118 PATH@[109; 114) 118 PATH@109..114
119 PATH_SEGMENT@[109; 114) 119 PATH_SEGMENT@109..114
120 NAME_REF@[109; 114) 120 NAME_REF@109..114
121 IDENT@[109; 114) "Clone" 121 IDENT@109..114 "Clone"
122 R_ANGLE@[114; 115) ">" 122 R_ANGLE@114..115 ">"
123 SEMICOLON@[115; 116) ";" 123 SEMICOLON@115..116 ";"
124 WHITESPACE@[116; 117) "\n" 124 WHITESPACE@116..117 "\n"
125 STRUCT_DEF@[117; 143) 125 STRUCT_DEF@117..143
126 STRUCT_KW@[117; 123) "struct" 126 STRUCT_KW@117..123 "struct"
127 WHITESPACE@[123; 124) " " 127 WHITESPACE@123..124 " "
128 NAME@[124; 125) 128 NAME@124..125
129 IDENT@[124; 125) "G" 129 IDENT@124..125 "G"
130 TYPE_PARAM_LIST@[125; 142) 130 TYPE_PARAM_LIST@125..142
131 L_ANGLE@[125; 126) "<" 131 L_ANGLE@125..126 "<"
132 TYPE_PARAM@[126; 141) 132 TYPE_PARAM@126..141
133 NAME@[126; 127) 133 NAME@126..127
134 IDENT@[126; 127) "T" 134 IDENT@126..127 "T"
135 COLON@[127; 128) ":" 135 COLON@127..128 ":"
136 WHITESPACE@[128; 129) " " 136 WHITESPACE@128..129 " "
137 TYPE_BOUND_LIST@[129; 141) 137 TYPE_BOUND_LIST@129..141
138 TYPE_BOUND@[129; 134) 138 TYPE_BOUND@129..134
139 PATH_TYPE@[129; 134) 139 PATH_TYPE@129..134
140 PATH@[129; 134) 140 PATH@129..134
141 PATH_SEGMENT@[129; 134) 141 PATH_SEGMENT@129..134
142 NAME_REF@[129; 134) 142 NAME_REF@129..134
143 IDENT@[129; 134) "Clone" 143 IDENT@129..134 "Clone"
144 WHITESPACE@[134; 135) " " 144 WHITESPACE@134..135 " "
145 PLUS@[135; 136) "+" 145 PLUS@135..136 "+"
146 WHITESPACE@[136; 137) " " 146 WHITESPACE@136..137 " "
147 TYPE_BOUND@[137; 141) 147 TYPE_BOUND@137..141
148 PATH_TYPE@[137; 141) 148 PATH_TYPE@137..141
149 PATH@[137; 141) 149 PATH@137..141
150 PATH_SEGMENT@[137; 141) 150 PATH_SEGMENT@137..141
151 NAME_REF@[137; 141) 151 NAME_REF@137..141
152 IDENT@[137; 141) "Copy" 152 IDENT@137..141 "Copy"
153 R_ANGLE@[141; 142) ">" 153 R_ANGLE@141..142 ">"
154 SEMICOLON@[142; 143) ";" 154 SEMICOLON@142..143 ";"
155 WHITESPACE@[143; 144) "\n" 155 WHITESPACE@143..144 "\n"
156 STRUCT_DEF@[144; 180) 156 STRUCT_DEF@144..180
157 STRUCT_KW@[144; 150) "struct" 157 STRUCT_KW@144..150 "struct"
158 WHITESPACE@[150; 151) " " 158 WHITESPACE@150..151 " "
159 NAME@[151; 152) 159 NAME@151..152
160 IDENT@[151; 152) "H" 160 IDENT@151..152 "H"
161 TYPE_PARAM_LIST@[152; 179) 161 TYPE_PARAM_LIST@152..179
162 L_ANGLE@[152; 153) "<" 162 L_ANGLE@152..153 "<"
163 TYPE_PARAM@[153; 178) 163 TYPE_PARAM@153..178
164 NAME@[153; 154) 164 NAME@153..154
165 IDENT@[153; 154) "T" 165 IDENT@153..154 "T"
166 COLON@[154; 155) ":" 166 COLON@154..155 ":"
167 WHITESPACE@[155; 156) " " 167 WHITESPACE@155..156 " "
168 TYPE_BOUND_LIST@[156; 178) 168 TYPE_BOUND_LIST@156..178
169 TYPE_BOUND@[156; 161) 169 TYPE_BOUND@156..161
170 PATH_TYPE@[156; 161) 170 PATH_TYPE@156..161
171 PATH@[156; 161) 171 PATH@156..161
172 PATH_SEGMENT@[156; 161) 172 PATH_SEGMENT@156..161
173 COLON2@[156; 158) "::" 173 COLON2@156..158 "::"
174 NAME_REF@[158; 161) 174 NAME_REF@158..161
175 IDENT@[158; 161) "Foo" 175 IDENT@158..161 "Foo"
176 WHITESPACE@[161; 162) " " 176 WHITESPACE@161..162 " "
177 PLUS@[162; 163) "+" 177 PLUS@162..163 "+"
178 WHITESPACE@[163; 164) " " 178 WHITESPACE@163..164 " "
179 TYPE_BOUND@[164; 173) 179 TYPE_BOUND@164..173
180 PATH_TYPE@[164; 173) 180 PATH_TYPE@164..173
181 PATH@[164; 173) 181 PATH@164..173
182 PATH@[164; 168) 182 PATH@164..168
183 PATH_SEGMENT@[164; 168) 183 PATH_SEGMENT@164..168
184 SELF_KW@[164; 168) "self" 184 SELF_KW@164..168 "self"
185 COLON2@[168; 170) "::" 185 COLON2@168..170 "::"
186 PATH_SEGMENT@[170; 173) 186 PATH_SEGMENT@170..173
187 NAME_REF@[170; 173) 187 NAME_REF@170..173
188 IDENT@[170; 173) "Bar" 188 IDENT@170..173 "Bar"
189 WHITESPACE@[173; 174) " " 189 WHITESPACE@173..174 " "
190 PLUS@[174; 175) "+" 190 PLUS@174..175 "+"
191 WHITESPACE@[175; 176) " " 191 WHITESPACE@175..176 " "
192 TYPE_BOUND@[176; 178) 192 TYPE_BOUND@176..178
193 LIFETIME@[176; 178) "\'a" 193 LIFETIME@176..178 "\'a"
194 R_ANGLE@[178; 179) ">" 194 R_ANGLE@178..179 ">"
195 SEMICOLON@[179; 180) ";" 195 SEMICOLON@179..180 ";"
196 WHITESPACE@[180; 181) "\n" 196 WHITESPACE@180..181 "\n"
197 STRUCT_DEF@[181; 199) 197 STRUCT_DEF@181..199
198 STRUCT_KW@[181; 187) "struct" 198 STRUCT_KW@181..187 "struct"
199 WHITESPACE@[187; 188) " " 199 WHITESPACE@187..188 " "
200 NAME@[188; 189) 200 NAME@188..189
201 IDENT@[188; 189) "I" 201 IDENT@188..189 "I"
202 TYPE_PARAM_LIST@[189; 198) 202 TYPE_PARAM_LIST@189..198
203 L_ANGLE@[189; 190) "<" 203 L_ANGLE@189..190 "<"
204 TYPE_PARAM@[190; 192) 204 TYPE_PARAM@190..192
205 NAME@[190; 191) 205 NAME@190..191
206 IDENT@[190; 191) "T" 206 IDENT@190..191 "T"
207 COLON@[191; 192) ":" 207 COLON@191..192 ":"
208 TYPE_BOUND_LIST@[192; 192) 208 TYPE_BOUND_LIST@192..192
209 COMMA@[192; 193) "," 209 COMMA@192..193 ","
210 WHITESPACE@[193; 194) " " 210 WHITESPACE@193..194 " "
211 TYPE_PARAM@[194; 196) 211 TYPE_PARAM@194..196
212 NAME@[194; 195) 212 NAME@194..195
213 IDENT@[194; 195) "U" 213 IDENT@194..195 "U"
214 COLON@[195; 196) ":" 214 COLON@195..196 ":"
215 TYPE_BOUND_LIST@[196; 196) 215 TYPE_BOUND_LIST@196..196
216 COMMA@[196; 197) "," 216 COMMA@196..197 ","
217 R_ANGLE@[197; 198) ">" 217 R_ANGLE@197..198 ">"
218 SEMICOLON@[198; 199) ";" 218 SEMICOLON@198..199 ";"
219 WHITESPACE@[199; 200) "\n" 219 WHITESPACE@199..200 "\n"
220 STRUCT_DEF@[200; 250) 220 STRUCT_DEF@200..250
221 STRUCT_KW@[200; 206) "struct" 221 STRUCT_KW@200..206 "struct"
222 WHITESPACE@[206; 207) " " 222 WHITESPACE@206..207 " "
223 NAME@[207; 208) 223 NAME@207..208
224 IDENT@[207; 208) "K" 224 IDENT@207..208 "K"
225 TYPE_PARAM_LIST@[208; 249) 225 TYPE_PARAM_LIST@208..249
226 L_ANGLE@[208; 209) "<" 226 L_ANGLE@208..209 "<"
227 LIFETIME_PARAM@[209; 215) 227 LIFETIME_PARAM@209..215
228 LIFETIME@[209; 211) "\'a" 228 LIFETIME@209..211 "\'a"
229 COLON@[211; 212) ":" 229 COLON@211..212 ":"
230 WHITESPACE@[212; 213) " " 230 WHITESPACE@212..213 " "
231 LIFETIME@[213; 215) "\'d" 231 LIFETIME@213..215 "\'d"
232 COMMA@[215; 216) "," 232 COMMA@215..216 ","
233 WHITESPACE@[216; 217) " " 233 WHITESPACE@216..217 " "
234 LIFETIME_PARAM@[217; 228) 234 LIFETIME_PARAM@217..228
235 LIFETIME@[217; 219) "\'d" 235 LIFETIME@217..219 "\'d"
236 COLON@[219; 220) ":" 236 COLON@219..220 ":"
237 WHITESPACE@[220; 221) " " 237 WHITESPACE@220..221 " "
238 LIFETIME@[221; 223) "\'a" 238 LIFETIME@221..223 "\'a"
239 WHITESPACE@[223; 224) " " 239 WHITESPACE@223..224 " "
240 PLUS@[224; 225) "+" 240 PLUS@224..225 "+"
241 WHITESPACE@[225; 226) " " 241 WHITESPACE@225..226 " "
242 LIFETIME@[226; 228) "\'b" 242 LIFETIME@226..228 "\'b"
243 COMMA@[228; 229) "," 243 COMMA@228..229 ","
244 WHITESPACE@[229; 230) " " 244 WHITESPACE@229..230 " "
245 TYPE_PARAM@[230; 248) 245 TYPE_PARAM@230..248
246 NAME@[230; 231) 246 NAME@230..231
247 IDENT@[230; 231) "T" 247 IDENT@230..231 "T"
248 COLON@[231; 232) ":" 248 COLON@231..232 ":"
249 WHITESPACE@[232; 233) " " 249 WHITESPACE@232..233 " "
250 TYPE_BOUND_LIST@[233; 248) 250 TYPE_BOUND_LIST@233..248
251 TYPE_BOUND@[233; 235) 251 TYPE_BOUND@233..235
252 LIFETIME@[233; 235) "\'a" 252 LIFETIME@233..235 "\'a"
253 WHITESPACE@[235; 236) " " 253 WHITESPACE@235..236 " "
254 PLUS@[236; 237) "+" 254 PLUS@236..237 "+"
255 WHITESPACE@[237; 238) " " 255 WHITESPACE@237..238 " "
256 TYPE_BOUND@[238; 240) 256 TYPE_BOUND@238..240
257 LIFETIME@[238; 240) "\'d" 257 LIFETIME@238..240 "\'d"
258 WHITESPACE@[240; 241) " " 258 WHITESPACE@240..241 " "
259 PLUS@[241; 242) "+" 259 PLUS@241..242 "+"
260 WHITESPACE@[242; 243) " " 260 WHITESPACE@242..243 " "
261 TYPE_BOUND@[243; 248) 261 TYPE_BOUND@243..248
262 PATH_TYPE@[243; 248) 262 PATH_TYPE@243..248
263 PATH@[243; 248) 263 PATH@243..248
264 PATH_SEGMENT@[243; 248) 264 PATH_SEGMENT@243..248
265 NAME_REF@[243; 248) 265 NAME_REF@243..248
266 IDENT@[243; 248) "Clone" 266 IDENT@243..248 "Clone"
267 R_ANGLE@[248; 249) ">" 267 R_ANGLE@248..249 ">"
268 SEMICOLON@[249; 250) ";" 268 SEMICOLON@249..250 ";"
diff --git a/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast b/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast
index 974fb9c44..643a1d16c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@0..71
2 FN_DEF@[0; 19) 2 FN_DEF@0..19
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 FN_KW@[7; 9) "fn" 6 FN_KW@7..9 "fn"
7 WHITESPACE@[9; 10) " " 7 WHITESPACE@9..10 " "
8 NAME@[10; 13) 8 NAME@10..13
9 IDENT@[10; 13) "foo" 9 IDENT@10..13 "foo"
10 PARAM_LIST@[13; 15) 10 PARAM_LIST@13..15
11 L_PAREN@[13; 14) "(" 11 L_PAREN@13..14 "("
12 R_PAREN@[14; 15) ")" 12 R_PAREN@14..15 ")"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 BLOCK_EXPR@[16; 19) 14 BLOCK_EXPR@16..19
15 BLOCK@[16; 19) 15 BLOCK@16..19
16 L_CURLY@[16; 17) "{" 16 L_CURLY@16..17 "{"
17 WHITESPACE@[17; 18) "\n" 17 WHITESPACE@17..18 "\n"
18 R_CURLY@[18; 19) "}" 18 R_CURLY@18..19 "}"
19 WHITESPACE@[19; 21) "\n\n" 19 WHITESPACE@19..21 "\n\n"
20 FN_DEF@[21; 44) 20 FN_DEF@21..44
21 ABI@[21; 31) 21 ABI@21..31
22 EXTERN_KW@[21; 27) "extern" 22 EXTERN_KW@21..27 "extern"
23 WHITESPACE@[27; 28) " " 23 WHITESPACE@27..28 " "
24 STRING@[28; 31) "\"C\"" 24 STRING@28..31 "\"C\""
25 WHITESPACE@[31; 32) " " 25 WHITESPACE@31..32 " "
26 FN_KW@[32; 34) "fn" 26 FN_KW@32..34 "fn"
27 WHITESPACE@[34; 35) " " 27 WHITESPACE@34..35 " "
28 NAME@[35; 38) 28 NAME@35..38
29 IDENT@[35; 38) "bar" 29 IDENT@35..38 "bar"
30 PARAM_LIST@[38; 40) 30 PARAM_LIST@38..40
31 L_PAREN@[38; 39) "(" 31 L_PAREN@38..39 "("
32 R_PAREN@[39; 40) ")" 32 R_PAREN@39..40 ")"
33 WHITESPACE@[40; 41) " " 33 WHITESPACE@40..41 " "
34 BLOCK_EXPR@[41; 44) 34 BLOCK_EXPR@41..44
35 BLOCK@[41; 44) 35 BLOCK@41..44
36 L_CURLY@[41; 42) "{" 36 L_CURLY@41..42 "{"
37 WHITESPACE@[42; 43) "\n" 37 WHITESPACE@42..43 "\n"
38 R_CURLY@[43; 44) "}" 38 R_CURLY@43..44 "}"
39 WHITESPACE@[44; 46) "\n\n" 39 WHITESPACE@44..46 "\n\n"
40 FN_DEF@[46; 70) 40 FN_DEF@46..70
41 ABI@[46; 57) 41 ABI@46..57
42 EXTERN_KW@[46; 52) "extern" 42 EXTERN_KW@46..52 "extern"
43 WHITESPACE@[52; 53) " " 43 WHITESPACE@52..53 " "
44 RAW_STRING@[53; 57) "r\"D\"" 44 RAW_STRING@53..57 "r\"D\""
45 WHITESPACE@[57; 58) " " 45 WHITESPACE@57..58 " "
46 FN_KW@[58; 60) "fn" 46 FN_KW@58..60 "fn"
47 WHITESPACE@[60; 61) " " 47 WHITESPACE@60..61 " "
48 NAME@[61; 64) 48 NAME@61..64
49 IDENT@[61; 64) "baz" 49 IDENT@61..64 "baz"
50 PARAM_LIST@[64; 66) 50 PARAM_LIST@64..66
51 L_PAREN@[64; 65) "(" 51 L_PAREN@64..65 "("
52 R_PAREN@[65; 66) ")" 52 R_PAREN@65..66 ")"
53 WHITESPACE@[66; 67) " " 53 WHITESPACE@66..67 " "
54 BLOCK_EXPR@[67; 70) 54 BLOCK_EXPR@67..70
55 BLOCK@[67; 70) 55 BLOCK@67..70
56 L_CURLY@[67; 68) "{" 56 L_CURLY@67..68 "{"
57 WHITESPACE@[68; 69) "\n" 57 WHITESPACE@68..69 "\n"
58 R_CURLY@[69; 70) "}" 58 R_CURLY@69..70 "}"
59 WHITESPACE@[70; 71) "\n" 59 WHITESPACE@70..71 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast b/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast
index bbbd95fd9..26abae3b2 100644
--- a/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@0..27
2 EXTERN_BLOCK@[0; 10) 2 EXTERN_BLOCK@0..10
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 EXTERN_ITEM_LIST@[7; 10) 6 EXTERN_ITEM_LIST@7..10
7 L_CURLY@[7; 8) "{" 7 L_CURLY@7..8 "{"
8 WHITESPACE@[8; 9) "\n" 8 WHITESPACE@8..9 "\n"
9 R_CURLY@[9; 10) "}" 9 R_CURLY@9..10 "}"
10 WHITESPACE@[10; 12) "\n\n" 10 WHITESPACE@10..12 "\n\n"
11 EXTERN_BLOCK@[12; 26) 11 EXTERN_BLOCK@12..26
12 ABI@[12; 22) 12 ABI@12..22
13 EXTERN_KW@[12; 18) "extern" 13 EXTERN_KW@12..18 "extern"
14 WHITESPACE@[18; 19) " " 14 WHITESPACE@18..19 " "
15 STRING@[19; 22) "\"C\"" 15 STRING@19..22 "\"C\""
16 WHITESPACE@[22; 23) " " 16 WHITESPACE@22..23 " "
17 EXTERN_ITEM_LIST@[23; 26) 17 EXTERN_ITEM_LIST@23..26
18 L_CURLY@[23; 24) "{" 18 L_CURLY@23..24 "{"
19 WHITESPACE@[24; 25) "\n" 19 WHITESPACE@24..25 "\n"
20 R_CURLY@[25; 26) "}" 20 R_CURLY@25..26 "}"
21 WHITESPACE@[26; 27) "\n" 21 WHITESPACE@26..27 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast b/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast
index dadf24fa6..97d90dc75 100644
--- a/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@0..47
2 STATIC_DEF@[0; 20) 2 STATIC_DEF@0..20
3 STATIC_KW@[0; 6) "static" 3 STATIC_KW@0..6 "static"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 10) 5 NAME@7..10
6 IDENT@[7; 10) "FOO" 6 IDENT@7..10 "FOO"
7 COLON@[10; 11) ":" 7 COLON@10..11 ":"
8 WHITESPACE@[11; 12) " " 8 WHITESPACE@11..12 " "
9 PATH_TYPE@[12; 15) 9 PATH_TYPE@12..15
10 PATH@[12; 15) 10 PATH@12..15
11 PATH_SEGMENT@[12; 15) 11 PATH_SEGMENT@12..15
12 NAME_REF@[12; 15) 12 NAME_REF@12..15
13 IDENT@[12; 15) "u32" 13 IDENT@12..15 "u32"
14 WHITESPACE@[15; 16) " " 14 WHITESPACE@15..16 " "
15 EQ@[16; 17) "=" 15 EQ@16..17 "="
16 WHITESPACE@[17; 18) " " 16 WHITESPACE@17..18 " "
17 LITERAL@[18; 19) 17 LITERAL@18..19
18 INT_NUMBER@[18; 19) "1" 18 INT_NUMBER@18..19 "1"
19 SEMICOLON@[19; 20) ";" 19 SEMICOLON@19..20 ";"
20 WHITESPACE@[20; 21) "\n" 20 WHITESPACE@20..21 "\n"
21 STATIC_DEF@[21; 46) 21 STATIC_DEF@21..46
22 STATIC_KW@[21; 27) "static" 22 STATIC_KW@21..27 "static"
23 WHITESPACE@[27; 28) " " 23 WHITESPACE@27..28 " "
24 MUT_KW@[28; 31) "mut" 24 MUT_KW@28..31 "mut"
25 WHITESPACE@[31; 32) " " 25 WHITESPACE@31..32 " "
26 NAME@[32; 35) 26 NAME@32..35
27 IDENT@[32; 35) "BAR" 27 IDENT@32..35 "BAR"
28 COLON@[35; 36) ":" 28 COLON@35..36 ":"
29 WHITESPACE@[36; 37) " " 29 WHITESPACE@36..37 " "
30 PATH_TYPE@[37; 40) 30 PATH_TYPE@37..40
31 PATH@[37; 40) 31 PATH@37..40
32 PATH_SEGMENT@[37; 40) 32 PATH_SEGMENT@37..40
33 NAME_REF@[37; 40) 33 NAME_REF@37..40
34 IDENT@[37; 40) "i32" 34 IDENT@37..40 "i32"
35 WHITESPACE@[40; 41) " " 35 WHITESPACE@40..41 " "
36 EQ@[41; 42) "=" 36 EQ@41..42 "="
37 WHITESPACE@[42; 43) " " 37 WHITESPACE@42..43 " "
38 LITERAL@[43; 45) 38 LITERAL@43..45
39 INT_NUMBER@[43; 45) "92" 39 INT_NUMBER@43..45 "92"
40 SEMICOLON@[45; 46) ";" 40 SEMICOLON@45..46 ";"
41 WHITESPACE@[46; 47) "\n" 41 WHITESPACE@46..47 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast b/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast
index 262e31f7f..d241f034c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 64) 1SOURCE_FILE@0..64
2 CONST_DEF@[0; 17) 2 CONST_DEF@0..17
3 CONST_KW@[0; 5) "const" 3 CONST_KW@0..5 "const"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 UNDERSCORE@[6; 7) "_" 5 UNDERSCORE@6..7 "_"
6 COLON@[7; 8) ":" 6 COLON@7..8 ":"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 PATH_TYPE@[9; 12) 8 PATH_TYPE@9..12
9 PATH@[9; 12) 9 PATH@9..12
10 PATH_SEGMENT@[9; 12) 10 PATH_SEGMENT@9..12
11 NAME_REF@[9; 12) 11 NAME_REF@9..12
12 IDENT@[9; 12) "u32" 12 IDENT@9..12 "u32"
13 WHITESPACE@[12; 13) " " 13 WHITESPACE@12..13 " "
14 EQ@[13; 14) "=" 14 EQ@13..14 "="
15 WHITESPACE@[14; 15) " " 15 WHITESPACE@14..15 " "
16 LITERAL@[15; 16) 16 LITERAL@15..16
17 INT_NUMBER@[15; 16) "0" 17 INT_NUMBER@15..16 "0"
18 SEMICOLON@[16; 17) ";" 18 SEMICOLON@16..17 ";"
19 WHITESPACE@[17; 18) "\n" 19 WHITESPACE@17..18 "\n"
20 CONST_DEF@[18; 38) 20 CONST_DEF@18..38
21 CONST_KW@[18; 23) "const" 21 CONST_KW@18..23 "const"
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 NAME@[24; 27) 23 NAME@24..27
24 IDENT@[24; 27) "FOO" 24 IDENT@24..27 "FOO"
25 COLON@[27; 28) ":" 25 COLON@27..28 ":"
26 WHITESPACE@[28; 29) " " 26 WHITESPACE@28..29 " "
27 PATH_TYPE@[29; 32) 27 PATH_TYPE@29..32
28 PATH@[29; 32) 28 PATH@29..32
29 PATH_SEGMENT@[29; 32) 29 PATH_SEGMENT@29..32
30 NAME_REF@[29; 32) 30 NAME_REF@29..32
31 IDENT@[29; 32) "u32" 31 IDENT@29..32 "u32"
32 WHITESPACE@[32; 33) " " 32 WHITESPACE@32..33 " "
33 EQ@[33; 34) "=" 33 EQ@33..34 "="
34 WHITESPACE@[34; 35) " " 34 WHITESPACE@34..35 " "
35 LITERAL@[35; 37) 35 LITERAL@35..37
36 INT_NUMBER@[35; 37) "92" 36 INT_NUMBER@35..37 "92"
37 SEMICOLON@[37; 38) ";" 37 SEMICOLON@37..38 ";"
38 WHITESPACE@[38; 39) "\n" 38 WHITESPACE@38..39 "\n"
39 CONST_DEF@[39; 63) 39 CONST_DEF@39..63
40 CONST_KW@[39; 44) "const" 40 CONST_KW@39..44 "const"
41 WHITESPACE@[44; 45) " " 41 WHITESPACE@44..45 " "
42 MUT_KW@[45; 48) "mut" 42 MUT_KW@45..48 "mut"
43 WHITESPACE@[48; 49) " " 43 WHITESPACE@48..49 " "
44 NAME@[49; 52) 44 NAME@49..52
45 IDENT@[49; 52) "BAR" 45 IDENT@49..52 "BAR"
46 COLON@[52; 53) ":" 46 COLON@52..53 ":"
47 WHITESPACE@[53; 54) " " 47 WHITESPACE@53..54 " "
48 PATH_TYPE@[54; 57) 48 PATH_TYPE@54..57
49 PATH@[54; 57) 49 PATH@54..57
50 PATH_SEGMENT@[54; 57) 50 PATH_SEGMENT@54..57
51 NAME_REF@[54; 57) 51 NAME_REF@54..57
52 IDENT@[54; 57) "u32" 52 IDENT@54..57 "u32"
53 WHITESPACE@[57; 58) " " 53 WHITESPACE@57..58 " "
54 EQ@[58; 59) "=" 54 EQ@58..59 "="
55 WHITESPACE@[59; 60) " " 55 WHITESPACE@59..60 " "
56 LITERAL@[60; 62) 56 LITERAL@60..62
57 INT_NUMBER@[60; 62) "62" 57 INT_NUMBER@60..62 "62"
58 SEMICOLON@[62; 63) ";" 58 SEMICOLON@62..63 ";"
59 WHITESPACE@[63; 64) "\n" 59 WHITESPACE@63..64 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast b/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast
index f5a7a1a5a..60af55837 100644
--- a/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@0..35
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 34) 11 BLOCK_EXPR@10..34
12 BLOCK@[10; 34) 12 BLOCK@10..34
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 FN_DEF@[16; 32) 15 FN_DEF@16..32
16 ABI@[16; 22) 16 ABI@16..22
17 EXTERN_KW@[16; 22) "extern" 17 EXTERN_KW@16..22 "extern"
18 WHITESPACE@[22; 23) " " 18 WHITESPACE@22..23 " "
19 FN_KW@[23; 25) "fn" 19 FN_KW@23..25 "fn"
20 WHITESPACE@[25; 26) " " 20 WHITESPACE@25..26 " "
21 NAME@[26; 27) 21 NAME@26..27
22 IDENT@[26; 27) "f" 22 IDENT@26..27 "f"
23 PARAM_LIST@[27; 29) 23 PARAM_LIST@27..29
24 L_PAREN@[27; 28) "(" 24 L_PAREN@27..28 "("
25 R_PAREN@[28; 29) ")" 25 R_PAREN@28..29 ")"
26 WHITESPACE@[29; 30) " " 26 WHITESPACE@29..30 " "
27 BLOCK_EXPR@[30; 32) 27 BLOCK_EXPR@30..32
28 BLOCK@[30; 32) 28 BLOCK@30..32
29 L_CURLY@[30; 31) "{" 29 L_CURLY@30..31 "{"
30 R_CURLY@[31; 32) "}" 30 R_CURLY@31..32 "}"
31 WHITESPACE@[32; 33) "\n" 31 WHITESPACE@32..33 "\n"
32 R_CURLY@[33; 34) "}" 32 R_CURLY@33..34 "}"
33 WHITESPACE@[34; 35) "\n" 33 WHITESPACE@34..35 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast b/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast
index f9b1dcf1a..4432c0163 100644
--- a/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@0..34
2 FN_DEF@[0; 33) 2 FN_DEF@0..33
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 33) 11 BLOCK_EXPR@10..33
12 BLOCK@[10; 33) 12 BLOCK@10..33
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 FN_DEF@[16; 31) 15 FN_DEF@16..31
16 CONST_KW@[16; 21) "const" 16 CONST_KW@16..21 "const"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 FN_KW@[22; 24) "fn" 18 FN_KW@22..24 "fn"
19 WHITESPACE@[24; 25) " " 19 WHITESPACE@24..25 " "
20 NAME@[25; 26) 20 NAME@25..26
21 IDENT@[25; 26) "f" 21 IDENT@25..26 "f"
22 PARAM_LIST@[26; 28) 22 PARAM_LIST@26..28
23 L_PAREN@[26; 27) "(" 23 L_PAREN@26..27 "("
24 R_PAREN@[27; 28) ")" 24 R_PAREN@27..28 ")"
25 WHITESPACE@[28; 29) " " 25 WHITESPACE@28..29 " "
26 BLOCK_EXPR@[29; 31) 26 BLOCK_EXPR@29..31
27 BLOCK@[29; 31) 27 BLOCK@29..31
28 L_CURLY@[29; 30) "{" 28 L_CURLY@29..30 "{"
29 R_CURLY@[30; 31) "}" 29 R_CURLY@30..31 "}"
30 WHITESPACE@[31; 32) "\n" 30 WHITESPACE@31..32 "\n"
31 R_CURLY@[32; 33) "}" 31 R_CURLY@32..33 "}"
32 WHITESPACE@[33; 34) "\n" 32 WHITESPACE@33..34 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast b/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast
index 9fb7b70a0..c0162c609 100644
--- a/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 53) 1SOURCE_FILE@0..53
2 FN_DEF@[0; 52) 2 FN_DEF@0..52
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 52) 11 BLOCK_EXPR@10..52
12 BLOCK@[10; 52) 12 BLOCK@10..52
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 FN_DEF@[16; 32) 15 FN_DEF@16..32
16 UNSAFE_KW@[16; 22) "unsafe" 16 UNSAFE_KW@16..22 "unsafe"
17 WHITESPACE@[22; 23) " " 17 WHITESPACE@22..23 " "
18 FN_KW@[23; 25) "fn" 18 FN_KW@23..25 "fn"
19 WHITESPACE@[25; 26) " " 19 WHITESPACE@25..26 " "
20 NAME@[26; 27) 20 NAME@26..27
21 IDENT@[26; 27) "f" 21 IDENT@26..27 "f"
22 PARAM_LIST@[27; 29) 22 PARAM_LIST@27..29
23 L_PAREN@[27; 28) "(" 23 L_PAREN@27..28 "("
24 R_PAREN@[28; 29) ")" 24 R_PAREN@28..29 ")"
25 WHITESPACE@[29; 30) " " 25 WHITESPACE@29..30 " "
26 BLOCK_EXPR@[30; 32) 26 BLOCK_EXPR@30..32
27 BLOCK@[30; 32) 27 BLOCK@30..32
28 L_CURLY@[30; 31) "{" 28 L_CURLY@30..31 "{"
29 R_CURLY@[31; 32) "}" 29 R_CURLY@31..32 "}"
30 WHITESPACE@[32; 37) "\n " 30 WHITESPACE@32..37 "\n "
31 BLOCK_EXPR@[37; 50) 31 BLOCK_EXPR@37..50
32 UNSAFE_KW@[37; 43) "unsafe" 32 UNSAFE_KW@37..43 "unsafe"
33 WHITESPACE@[43; 44) " " 33 WHITESPACE@43..44 " "
34 BLOCK@[44; 50) 34 BLOCK@44..50
35 L_CURLY@[44; 45) "{" 35 L_CURLY@44..45 "{"
36 WHITESPACE@[45; 46) " " 36 WHITESPACE@45..46 " "
37 LITERAL@[46; 48) 37 LITERAL@46..48
38 INT_NUMBER@[46; 48) "92" 38 INT_NUMBER@46..48 "92"
39 WHITESPACE@[48; 49) " " 39 WHITESPACE@48..49 " "
40 R_CURLY@[49; 50) "}" 40 R_CURLY@49..50 "}"
41 WHITESPACE@[50; 51) "\n" 41 WHITESPACE@50..51 "\n"
42 R_CURLY@[51; 52) "}" 42 R_CURLY@51..52 "}"
43 WHITESPACE@[52; 53) "\n" 43 WHITESPACE@52..53 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast b/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast
index 5542f7701..6c0daef52 100644
--- a/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast
@@ -1,186 +1,186 @@
1SOURCE_FILE@[0; 248) 1SOURCE_FILE@0..248
2 FN_DEF@[0; 247) 2 FN_DEF@0..247
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 16) 5 NAME@3..16
6 IDENT@[3; 16) "binding_power" 6 IDENT@3..16 "binding_power"
7 PARAM_LIST@[16; 18) 7 PARAM_LIST@16..18
8 L_PAREN@[16; 17) "(" 8 L_PAREN@16..17 "("
9 R_PAREN@[17; 18) ")" 9 R_PAREN@17..18 ")"
10 WHITESPACE@[18; 19) " " 10 WHITESPACE@18..19 " "
11 BLOCK_EXPR@[19; 247) 11 BLOCK_EXPR@19..247
12 BLOCK@[19; 247) 12 BLOCK@19..247
13 L_CURLY@[19; 20) "{" 13 L_CURLY@19..20 "{"
14 WHITESPACE@[20; 25) "\n " 14 WHITESPACE@20..25 "\n "
15 LET_STMT@[25; 55) 15 LET_STMT@25..55
16 LET_KW@[25; 28) "let" 16 LET_KW@25..28 "let"
17 WHITESPACE@[28; 29) " " 17 WHITESPACE@28..29 " "
18 BIND_PAT@[29; 30) 18 BIND_PAT@29..30
19 NAME@[29; 30) 19 NAME@29..30
20 IDENT@[29; 30) "x" 20 IDENT@29..30 "x"
21 WHITESPACE@[30; 31) " " 21 WHITESPACE@30..31 " "
22 EQ@[31; 32) "=" 22 EQ@31..32 "="
23 WHITESPACE@[32; 33) " " 23 WHITESPACE@32..33 " "
24 BIN_EXPR@[33; 54) 24 BIN_EXPR@33..54
25 BIN_EXPR@[33; 46) 25 BIN_EXPR@33..46
26 LITERAL@[33; 34) 26 LITERAL@33..34
27 INT_NUMBER@[33; 34) "1" 27 INT_NUMBER@33..34 "1"
28 WHITESPACE@[34; 35) " " 28 WHITESPACE@34..35 " "
29 PLUS@[35; 36) "+" 29 PLUS@35..36 "+"
30 WHITESPACE@[36; 37) " " 30 WHITESPACE@36..37 " "
31 BIN_EXPR@[37; 46) 31 BIN_EXPR@37..46
32 BIN_EXPR@[37; 42) 32 BIN_EXPR@37..42
33 LITERAL@[37; 38) 33 LITERAL@37..38
34 INT_NUMBER@[37; 38) "2" 34 INT_NUMBER@37..38 "2"
35 WHITESPACE@[38; 39) " " 35 WHITESPACE@38..39 " "
36 STAR@[39; 40) "*" 36 STAR@39..40 "*"
37 WHITESPACE@[40; 41) " " 37 WHITESPACE@40..41 " "
38 LITERAL@[41; 42) 38 LITERAL@41..42
39 INT_NUMBER@[41; 42) "3" 39 INT_NUMBER@41..42 "3"
40 WHITESPACE@[42; 43) " " 40 WHITESPACE@42..43 " "
41 PERCENT@[43; 44) "%" 41 PERCENT@43..44 "%"
42 WHITESPACE@[44; 45) " " 42 WHITESPACE@44..45 " "
43 LITERAL@[45; 46) 43 LITERAL@45..46
44 INT_NUMBER@[45; 46) "4" 44 INT_NUMBER@45..46 "4"
45 WHITESPACE@[46; 47) " " 45 WHITESPACE@46..47 " "
46 MINUS@[47; 48) "-" 46 MINUS@47..48 "-"
47 WHITESPACE@[48; 49) " " 47 WHITESPACE@48..49 " "
48 BIN_EXPR@[49; 54) 48 BIN_EXPR@49..54
49 LITERAL@[49; 50) 49 LITERAL@49..50
50 INT_NUMBER@[49; 50) "5" 50 INT_NUMBER@49..50 "5"
51 WHITESPACE@[50; 51) " " 51 WHITESPACE@50..51 " "
52 SLASH@[51; 52) "/" 52 SLASH@51..52 "/"
53 WHITESPACE@[52; 53) " " 53 WHITESPACE@52..53 " "
54 LITERAL@[53; 54) 54 LITERAL@53..54
55 INT_NUMBER@[53; 54) "6" 55 INT_NUMBER@53..54 "6"
56 SEMICOLON@[54; 55) ";" 56 SEMICOLON@54..55 ";"
57 WHITESPACE@[55; 60) "\n " 57 WHITESPACE@55..60 "\n "
58 EXPR_STMT@[60; 70) 58 EXPR_STMT@60..70
59 BIN_EXPR@[60; 69) 59 BIN_EXPR@60..69
60 LITERAL@[60; 61) 60 LITERAL@60..61
61 INT_NUMBER@[60; 61) "1" 61 INT_NUMBER@60..61 "1"
62 WHITESPACE@[61; 62) " " 62 WHITESPACE@61..62 " "
63 PLUS@[62; 63) "+" 63 PLUS@62..63 "+"
64 WHITESPACE@[63; 64) " " 64 WHITESPACE@63..64 " "
65 BIN_EXPR@[64; 69) 65 BIN_EXPR@64..69
66 LITERAL@[64; 65) 66 LITERAL@64..65
67 INT_NUMBER@[64; 65) "2" 67 INT_NUMBER@64..65 "2"
68 WHITESPACE@[65; 66) " " 68 WHITESPACE@65..66 " "
69 STAR@[66; 67) "*" 69 STAR@66..67 "*"
70 WHITESPACE@[67; 68) " " 70 WHITESPACE@67..68 " "
71 LITERAL@[68; 69) 71 LITERAL@68..69
72 INT_NUMBER@[68; 69) "3" 72 INT_NUMBER@68..69 "3"
73 SEMICOLON@[69; 70) ";" 73 SEMICOLON@69..70 ";"
74 WHITESPACE@[70; 75) "\n " 74 WHITESPACE@70..75 "\n "
75 EXPR_STMT@[75; 86) 75 EXPR_STMT@75..86
76 BIN_EXPR@[75; 85) 76 BIN_EXPR@75..85
77 LITERAL@[75; 76) 77 LITERAL@75..76
78 INT_NUMBER@[75; 76) "1" 78 INT_NUMBER@75..76 "1"
79 WHITESPACE@[76; 77) " " 79 WHITESPACE@76..77 " "
80 SHL@[77; 79) "<<" 80 SHL@77..79 "<<"
81 WHITESPACE@[79; 80) " " 81 WHITESPACE@79..80 " "
82 BIN_EXPR@[80; 85) 82 BIN_EXPR@80..85
83 LITERAL@[80; 81) 83 LITERAL@80..81
84 INT_NUMBER@[80; 81) "2" 84 INT_NUMBER@80..81 "2"
85 WHITESPACE@[81; 82) " " 85 WHITESPACE@81..82 " "
86 PLUS@[82; 83) "+" 86 PLUS@82..83 "+"
87 WHITESPACE@[83; 84) " " 87 WHITESPACE@83..84 " "
88 LITERAL@[84; 85) 88 LITERAL@84..85
89 INT_NUMBER@[84; 85) "3" 89 INT_NUMBER@84..85 "3"
90 SEMICOLON@[85; 86) ";" 90 SEMICOLON@85..86 ";"
91 WHITESPACE@[86; 91) "\n " 91 WHITESPACE@86..91 "\n "
92 EXPR_STMT@[91; 102) 92 EXPR_STMT@91..102
93 BIN_EXPR@[91; 101) 93 BIN_EXPR@91..101
94 LITERAL@[91; 92) 94 LITERAL@91..92
95 INT_NUMBER@[91; 92) "1" 95 INT_NUMBER@91..92 "1"
96 WHITESPACE@[92; 93) " " 96 WHITESPACE@92..93 " "
97 AMP@[93; 94) "&" 97 AMP@93..94 "&"
98 WHITESPACE@[94; 95) " " 98 WHITESPACE@94..95 " "
99 BIN_EXPR@[95; 101) 99 BIN_EXPR@95..101
100 LITERAL@[95; 96) 100 LITERAL@95..96
101 INT_NUMBER@[95; 96) "2" 101 INT_NUMBER@95..96 "2"
102 WHITESPACE@[96; 97) " " 102 WHITESPACE@96..97 " "
103 SHR@[97; 99) ">>" 103 SHR@97..99 ">>"
104 WHITESPACE@[99; 100) " " 104 WHITESPACE@99..100 " "
105 LITERAL@[100; 101) 105 LITERAL@100..101
106 INT_NUMBER@[100; 101) "3" 106 INT_NUMBER@100..101 "3"
107 SEMICOLON@[101; 102) ";" 107 SEMICOLON@101..102 ";"
108 WHITESPACE@[102; 107) "\n " 108 WHITESPACE@102..107 "\n "
109 EXPR_STMT@[107; 117) 109 EXPR_STMT@107..117
110 BIN_EXPR@[107; 116) 110 BIN_EXPR@107..116
111 LITERAL@[107; 108) 111 LITERAL@107..108
112 INT_NUMBER@[107; 108) "1" 112 INT_NUMBER@107..108 "1"
113 WHITESPACE@[108; 109) " " 113 WHITESPACE@108..109 " "
114 CARET@[109; 110) "^" 114 CARET@109..110 "^"
115 WHITESPACE@[110; 111) " " 115 WHITESPACE@110..111 " "
116 BIN_EXPR@[111; 116) 116 BIN_EXPR@111..116
117 LITERAL@[111; 112) 117 LITERAL@111..112
118 INT_NUMBER@[111; 112) "2" 118 INT_NUMBER@111..112 "2"
119 WHITESPACE@[112; 113) " " 119 WHITESPACE@112..113 " "
120 AMP@[113; 114) "&" 120 AMP@113..114 "&"
121 WHITESPACE@[114; 115) " " 121 WHITESPACE@114..115 " "
122 LITERAL@[115; 116) 122 LITERAL@115..116
123 INT_NUMBER@[115; 116) "3" 123 INT_NUMBER@115..116 "3"
124 SEMICOLON@[116; 117) ";" 124 SEMICOLON@116..117 ";"
125 WHITESPACE@[117; 122) "\n " 125 WHITESPACE@117..122 "\n "
126 EXPR_STMT@[122; 132) 126 EXPR_STMT@122..132
127 BIN_EXPR@[122; 131) 127 BIN_EXPR@122..131
128 LITERAL@[122; 123) 128 LITERAL@122..123
129 INT_NUMBER@[122; 123) "1" 129 INT_NUMBER@122..123 "1"
130 WHITESPACE@[123; 124) " " 130 WHITESPACE@123..124 " "
131 PIPE@[124; 125) "|" 131 PIPE@124..125 "|"
132 WHITESPACE@[125; 126) " " 132 WHITESPACE@125..126 " "
133 BIN_EXPR@[126; 131) 133 BIN_EXPR@126..131
134 LITERAL@[126; 127) 134 LITERAL@126..127
135 INT_NUMBER@[126; 127) "2" 135 INT_NUMBER@126..127 "2"
136 WHITESPACE@[127; 128) " " 136 WHITESPACE@127..128 " "
137 CARET@[128; 129) "^" 137 CARET@128..129 "^"
138 WHITESPACE@[129; 130) " " 138 WHITESPACE@129..130 " "
139 LITERAL@[130; 131) 139 LITERAL@130..131
140 INT_NUMBER@[130; 131) "3" 140 INT_NUMBER@130..131 "3"
141 SEMICOLON@[131; 132) ";" 141 SEMICOLON@131..132 ";"
142 WHITESPACE@[132; 137) "\n " 142 WHITESPACE@132..137 "\n "
143 EXPR_STMT@[137; 148) 143 EXPR_STMT@137..148
144 BIN_EXPR@[137; 147) 144 BIN_EXPR@137..147
145 LITERAL@[137; 138) 145 LITERAL@137..138
146 INT_NUMBER@[137; 138) "1" 146 INT_NUMBER@137..138 "1"
147 WHITESPACE@[138; 139) " " 147 WHITESPACE@138..139 " "
148 EQ2@[139; 141) "==" 148 EQ2@139..141 "=="
149 WHITESPACE@[141; 142) " " 149 WHITESPACE@141..142 " "
150 BIN_EXPR@[142; 147) 150 BIN_EXPR@142..147
151 LITERAL@[142; 143) 151 LITERAL@142..143
152 INT_NUMBER@[142; 143) "2" 152 INT_NUMBER@142..143 "2"
153 WHITESPACE@[143; 144) " " 153 WHITESPACE@143..144 " "
154 PIPE@[144; 145) "|" 154 PIPE@144..145 "|"
155 WHITESPACE@[145; 146) " " 155 WHITESPACE@145..146 " "
156 LITERAL@[146; 147) 156 LITERAL@146..147
157 INT_NUMBER@[146; 147) "3" 157 INT_NUMBER@146..147 "3"
158 SEMICOLON@[147; 148) ";" 158 SEMICOLON@147..148 ";"
159 WHITESPACE@[148; 153) "\n " 159 WHITESPACE@148..153 "\n "
160 EXPR_STMT@[153; 165) 160 EXPR_STMT@153..165
161 BIN_EXPR@[153; 164) 161 BIN_EXPR@153..164
162 LITERAL@[153; 154) 162 LITERAL@153..154
163 INT_NUMBER@[153; 154) "1" 163 INT_NUMBER@153..154 "1"
164 WHITESPACE@[154; 155) " " 164 WHITESPACE@154..155 " "
165 AMP2@[155; 157) "&&" 165 AMP2@155..157 "&&"
166 WHITESPACE@[157; 158) " " 166 WHITESPACE@157..158 " "
167 BIN_EXPR@[158; 164) 167 BIN_EXPR@158..164
168 LITERAL@[158; 159) 168 LITERAL@158..159
169 INT_NUMBER@[158; 159) "2" 169 INT_NUMBER@158..159 "2"
170 WHITESPACE@[159; 160) " " 170 WHITESPACE@159..160 " "
171 EQ2@[160; 162) "==" 171 EQ2@160..162 "=="
172 WHITESPACE@[162; 163) " " 172 WHITESPACE@162..163 " "
173 LITERAL@[163; 164) 173 LITERAL@163..164
174 INT_NUMBER@[163; 164) "3" 174 INT_NUMBER@163..164 "3"
175 SEMICOLON@[164; 165) ";" 175 SEMICOLON@164..165 ";"
176 WHITESPACE@[165; 170) "\n " 176 WHITESPACE@165..170 "\n "
177 COMMENT@[170; 184) "//1 || 2 && 2;" 177 COMMENT@170..184 "//1 || 2 && 2;"
178 WHITESPACE@[184; 189) "\n " 178 WHITESPACE@184..189 "\n "
179 COMMENT@[189; 203) "//1 .. 2 || 3;" 179 COMMENT@189..203 "//1 .. 2 || 3;"
180 WHITESPACE@[203; 208) "\n " 180 WHITESPACE@203..208 "\n "
181 COMMENT@[208; 221) "//1 = 2 .. 3;" 181 COMMENT@208..221 "//1 = 2 .. 3;"
182 WHITESPACE@[221; 226) "\n " 182 WHITESPACE@221..226 "\n "
183 COMMENT@[226; 245) "//---&*1 - --2 * 9;" 183 COMMENT@226..245 "//---&*1 - --2 * 9;"
184 WHITESPACE@[245; 246) "\n" 184 WHITESPACE@245..246 "\n"
185 R_CURLY@[246; 247) "}" 185 R_CURLY@246..247 "}"
186 WHITESPACE@[247; 248) "\n" 186 WHITESPACE@247..248 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast b/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast
index 78056aa95..8177bd89b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast
@@ -1,152 +1,152 @@
1SOURCE_FILE@[0; 153) 1SOURCE_FILE@0..153
2 FN_DEF@[0; 152) 2 FN_DEF@0..152
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 152) 11 BLOCK_EXPR@9..152
12 BLOCK@[9; 152) 12 BLOCK@9..152
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 23) 15 EXPR_STMT@15..23
16 RANGE_EXPR@[15; 22) 16 RANGE_EXPR@15..22
17 DOT2@[15; 17) ".." 17 DOT2@15..17 ".."
18 BIN_EXPR@[17; 22) 18 BIN_EXPR@17..22
19 LITERAL@[17; 18) 19 LITERAL@17..18
20 INT_NUMBER@[17; 18) "1" 20 INT_NUMBER@17..18 "1"
21 WHITESPACE@[18; 19) " " 21 WHITESPACE@18..19 " "
22 PLUS@[19; 20) "+" 22 PLUS@19..20 "+"
23 WHITESPACE@[20; 21) " " 23 WHITESPACE@20..21 " "
24 LITERAL@[21; 22) 24 LITERAL@21..22
25 INT_NUMBER@[21; 22) "1" 25 INT_NUMBER@21..22 "1"
26 SEMICOLON@[22; 23) ";" 26 SEMICOLON@22..23 ";"
27 WHITESPACE@[23; 28) "\n " 27 WHITESPACE@23..28 "\n "
28 EXPR_STMT@[28; 36) 28 EXPR_STMT@28..36
29 BIN_EXPR@[28; 35) 29 BIN_EXPR@28..35
30 RANGE_EXPR@[28; 31) 30 RANGE_EXPR@28..31
31 DOT2@[28; 30) ".." 31 DOT2@28..30 ".."
32 PATH_EXPR@[30; 31) 32 PATH_EXPR@30..31
33 PATH@[30; 31) 33 PATH@30..31
34 PATH_SEGMENT@[30; 31) 34 PATH_SEGMENT@30..31
35 NAME_REF@[30; 31) 35 NAME_REF@30..31
36 IDENT@[30; 31) "z" 36 IDENT@30..31 "z"
37 WHITESPACE@[31; 32) " " 37 WHITESPACE@31..32 " "
38 EQ@[32; 33) "=" 38 EQ@32..33 "="
39 WHITESPACE@[33; 34) " " 39 WHITESPACE@33..34 " "
40 LITERAL@[34; 35) 40 LITERAL@34..35
41 INT_NUMBER@[34; 35) "2" 41 INT_NUMBER@34..35 "2"
42 SEMICOLON@[35; 36) ";" 42 SEMICOLON@35..36 ";"
43 WHITESPACE@[36; 41) "\n " 43 WHITESPACE@36..41 "\n "
44 EXPR_STMT@[41; 59) 44 EXPR_STMT@41..59
45 BIN_EXPR@[41; 58) 45 BIN_EXPR@41..58
46 PATH_EXPR@[41; 42) 46 PATH_EXPR@41..42
47 PATH@[41; 42) 47 PATH@41..42
48 PATH_SEGMENT@[41; 42) 48 PATH_SEGMENT@41..42
49 NAME_REF@[41; 42) 49 NAME_REF@41..42
50 IDENT@[41; 42) "x" 50 IDENT@41..42 "x"
51 WHITESPACE@[42; 43) " " 51 WHITESPACE@42..43 " "
52 EQ@[43; 44) "=" 52 EQ@43..44 "="
53 WHITESPACE@[44; 45) " " 53 WHITESPACE@44..45 " "
54 RANGE_EXPR@[45; 58) 54 RANGE_EXPR@45..58
55 LITERAL@[45; 50) 55 LITERAL@45..50
56 FALSE_KW@[45; 50) "false" 56 FALSE_KW@45..50 "false"
57 DOT2@[50; 52) ".." 57 DOT2@50..52 ".."
58 BIN_EXPR@[52; 58) 58 BIN_EXPR@52..58
59 LITERAL@[52; 53) 59 LITERAL@52..53
60 INT_NUMBER@[52; 53) "1" 60 INT_NUMBER@52..53 "1"
61 WHITESPACE@[53; 54) " " 61 WHITESPACE@53..54 " "
62 EQ2@[54; 56) "==" 62 EQ2@54..56 "=="
63 WHITESPACE@[56; 57) " " 63 WHITESPACE@56..57 " "
64 LITERAL@[57; 58) 64 LITERAL@57..58
65 INT_NUMBER@[57; 58) "1" 65 INT_NUMBER@57..58 "1"
66 SEMICOLON@[58; 59) ";" 66 SEMICOLON@58..59 ";"
67 WHITESPACE@[59; 64) "\n " 67 WHITESPACE@59..64 "\n "
68 LET_STMT@[64; 76) 68 LET_STMT@64..76
69 LET_KW@[64; 67) "let" 69 LET_KW@64..67 "let"
70 WHITESPACE@[67; 68) " " 70 WHITESPACE@67..68 " "
71 BIND_PAT@[68; 69) 71 BIND_PAT@68..69
72 NAME@[68; 69) 72 NAME@68..69
73 IDENT@[68; 69) "x" 73 IDENT@68..69 "x"
74 WHITESPACE@[69; 70) " " 74 WHITESPACE@69..70 " "
75 EQ@[70; 71) "=" 75 EQ@70..71 "="
76 WHITESPACE@[71; 72) " " 76 WHITESPACE@71..72 " "
77 RANGE_EXPR@[72; 75) 77 RANGE_EXPR@72..75
78 LITERAL@[72; 73) 78 LITERAL@72..73
79 INT_NUMBER@[72; 73) "1" 79 INT_NUMBER@72..73 "1"
80 DOT2@[73; 75) ".." 80 DOT2@73..75 ".."
81 SEMICOLON@[75; 76) ";" 81 SEMICOLON@75..76 ";"
82 WHITESPACE@[76; 86) "\n \n " 82 WHITESPACE@76..86 "\n \n "
83 EXPR_STMT@[86; 95) 83 EXPR_STMT@86..95
84 RANGE_EXPR@[86; 94) 84 RANGE_EXPR@86..94
85 DOT2EQ@[86; 89) "..=" 85 DOT2EQ@86..89 "..="
86 BIN_EXPR@[89; 94) 86 BIN_EXPR@89..94
87 LITERAL@[89; 90) 87 LITERAL@89..90
88 INT_NUMBER@[89; 90) "1" 88 INT_NUMBER@89..90 "1"
89 WHITESPACE@[90; 91) " " 89 WHITESPACE@90..91 " "
90 PLUS@[91; 92) "+" 90 PLUS@91..92 "+"
91 WHITESPACE@[92; 93) " " 91 WHITESPACE@92..93 " "
92 LITERAL@[93; 94) 92 LITERAL@93..94
93 INT_NUMBER@[93; 94) "1" 93 INT_NUMBER@93..94 "1"
94 SEMICOLON@[94; 95) ";" 94 SEMICOLON@94..95 ";"
95 WHITESPACE@[95; 100) "\n " 95 WHITESPACE@95..100 "\n "
96 EXPR_STMT@[100; 109) 96 EXPR_STMT@100..109
97 BIN_EXPR@[100; 108) 97 BIN_EXPR@100..108
98 RANGE_EXPR@[100; 104) 98 RANGE_EXPR@100..104
99 DOT2EQ@[100; 103) "..=" 99 DOT2EQ@100..103 "..="
100 PATH_EXPR@[103; 104) 100 PATH_EXPR@103..104
101 PATH@[103; 104) 101 PATH@103..104
102 PATH_SEGMENT@[103; 104) 102 PATH_SEGMENT@103..104
103 NAME_REF@[103; 104) 103 NAME_REF@103..104
104 IDENT@[103; 104) "z" 104 IDENT@103..104 "z"
105 WHITESPACE@[104; 105) " " 105 WHITESPACE@104..105 " "
106 EQ@[105; 106) "=" 106 EQ@105..106 "="
107 WHITESPACE@[106; 107) " " 107 WHITESPACE@106..107 " "
108 LITERAL@[107; 108) 108 LITERAL@107..108
109 INT_NUMBER@[107; 108) "2" 109 INT_NUMBER@107..108 "2"
110 SEMICOLON@[108; 109) ";" 110 SEMICOLON@108..109 ";"
111 WHITESPACE@[109; 114) "\n " 111 WHITESPACE@109..114 "\n "
112 EXPR_STMT@[114; 133) 112 EXPR_STMT@114..133
113 BIN_EXPR@[114; 132) 113 BIN_EXPR@114..132
114 PATH_EXPR@[114; 115) 114 PATH_EXPR@114..115
115 PATH@[114; 115) 115 PATH@114..115
116 PATH_SEGMENT@[114; 115) 116 PATH_SEGMENT@114..115
117 NAME_REF@[114; 115) 117 NAME_REF@114..115
118 IDENT@[114; 115) "x" 118 IDENT@114..115 "x"
119 WHITESPACE@[115; 116) " " 119 WHITESPACE@115..116 " "
120 EQ@[116; 117) "=" 120 EQ@116..117 "="
121 WHITESPACE@[117; 118) " " 121 WHITESPACE@117..118 " "
122 RANGE_EXPR@[118; 132) 122 RANGE_EXPR@118..132
123 LITERAL@[118; 123) 123 LITERAL@118..123
124 FALSE_KW@[118; 123) "false" 124 FALSE_KW@118..123 "false"
125 DOT2EQ@[123; 126) "..=" 125 DOT2EQ@123..126 "..="
126 BIN_EXPR@[126; 132) 126 BIN_EXPR@126..132
127 LITERAL@[126; 127) 127 LITERAL@126..127
128 INT_NUMBER@[126; 127) "1" 128 INT_NUMBER@126..127 "1"
129 WHITESPACE@[127; 128) " " 129 WHITESPACE@127..128 " "
130 EQ2@[128; 130) "==" 130 EQ2@128..130 "=="
131 WHITESPACE@[130; 131) " " 131 WHITESPACE@130..131 " "
132 LITERAL@[131; 132) 132 LITERAL@131..132
133 INT_NUMBER@[131; 132) "1" 133 INT_NUMBER@131..132 "1"
134 SEMICOLON@[132; 133) ";" 134 SEMICOLON@132..133 ";"
135 WHITESPACE@[133; 138) "\n " 135 WHITESPACE@133..138 "\n "
136 LET_STMT@[138; 150) 136 LET_STMT@138..150
137 LET_KW@[138; 141) "let" 137 LET_KW@138..141 "let"
138 WHITESPACE@[141; 142) " " 138 WHITESPACE@141..142 " "
139 BIND_PAT@[142; 143) 139 BIND_PAT@142..143
140 NAME@[142; 143) 140 NAME@142..143
141 IDENT@[142; 143) "x" 141 IDENT@142..143 "x"
142 WHITESPACE@[143; 144) " " 142 WHITESPACE@143..144 " "
143 EQ@[144; 145) "=" 143 EQ@144..145 "="
144 WHITESPACE@[145; 146) " " 144 WHITESPACE@145..146 " "
145 RANGE_EXPR@[146; 149) 145 RANGE_EXPR@146..149
146 LITERAL@[146; 147) 146 LITERAL@146..147
147 INT_NUMBER@[146; 147) "1" 147 INT_NUMBER@146..147 "1"
148 DOT2@[147; 149) ".." 148 DOT2@147..149 ".."
149 SEMICOLON@[149; 150) ";" 149 SEMICOLON@149..150 ";"
150 WHITESPACE@[150; 151) "\n" 150 WHITESPACE@150..151 "\n"
151 R_CURLY@[151; 152) "}" 151 R_CURLY@151..152 "}"
152 WHITESPACE@[152; 153) "\n" 152 WHITESPACE@152..153 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast b/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast
index 4e583c6e8..953930f6c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast
@@ -1,64 +1,64 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@0..112
2 FN_DEF@[0; 111) 2 FN_DEF@0..111
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 111) 11 BLOCK_EXPR@10..111
12 BLOCK@[10; 111) 12 BLOCK@10..111
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 31) 15 LET_STMT@16..31
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 PLACEHOLDER_PAT@[20; 21) 18 PLACEHOLDER_PAT@20..21
19 UNDERSCORE@[20; 21) "_" 19 UNDERSCORE@20..21 "_"
20 WHITESPACE@[21; 22) " " 20 WHITESPACE@21..22 " "
21 EQ@[22; 23) "=" 21 EQ@22..23 "="
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 LITERAL@[24; 30) 23 LITERAL@24..30
24 CHAR@[24; 30) "\'c\'u32" 24 CHAR@24..30 "\'c\'u32"
25 SEMICOLON@[30; 31) ";" 25 SEMICOLON@30..31 ";"
26 WHITESPACE@[31; 36) "\n " 26 WHITESPACE@31..36 "\n "
27 LET_STMT@[36; 60) 27 LET_STMT@36..60
28 LET_KW@[36; 39) "let" 28 LET_KW@36..39 "let"
29 WHITESPACE@[39; 40) " " 29 WHITESPACE@39..40 " "
30 PLACEHOLDER_PAT@[40; 41) 30 PLACEHOLDER_PAT@40..41
31 UNDERSCORE@[40; 41) "_" 31 UNDERSCORE@40..41 "_"
32 WHITESPACE@[41; 42) " " 32 WHITESPACE@41..42 " "
33 EQ@[42; 43) "=" 33 EQ@42..43 "="
34 WHITESPACE@[43; 44) " " 34 WHITESPACE@43..44 " "
35 LITERAL@[44; 59) 35 LITERAL@44..59
36 STRING@[44; 59) "\"string\"invalid" 36 STRING@44..59 "\"string\"invalid"
37 SEMICOLON@[59; 60) ";" 37 SEMICOLON@59..60 ";"
38 WHITESPACE@[60; 65) "\n " 38 WHITESPACE@60..65 "\n "
39 LET_STMT@[65; 83) 39 LET_STMT@65..83
40 LET_KW@[65; 68) "let" 40 LET_KW@65..68 "let"
41 WHITESPACE@[68; 69) " " 41 WHITESPACE@68..69 " "
42 PLACEHOLDER_PAT@[69; 70) 42 PLACEHOLDER_PAT@69..70
43 UNDERSCORE@[69; 70) "_" 43 UNDERSCORE@69..70 "_"
44 WHITESPACE@[70; 71) " " 44 WHITESPACE@70..71 " "
45 EQ@[71; 72) "=" 45 EQ@71..72 "="
46 WHITESPACE@[72; 73) " " 46 WHITESPACE@72..73 " "
47 LITERAL@[73; 82) 47 LITERAL@73..82
48 BYTE@[73; 82) "b\'b\'_suff" 48 BYTE@73..82 "b\'b\'_suff"
49 SEMICOLON@[82; 83) ";" 49 SEMICOLON@82..83 ";"
50 WHITESPACE@[83; 88) "\n " 50 WHITESPACE@83..88 "\n "
51 LET_STMT@[88; 109) 51 LET_STMT@88..109
52 LET_KW@[88; 91) "let" 52 LET_KW@88..91 "let"
53 WHITESPACE@[91; 92) " " 53 WHITESPACE@91..92 " "
54 PLACEHOLDER_PAT@[92; 93) 54 PLACEHOLDER_PAT@92..93
55 UNDERSCORE@[92; 93) "_" 55 UNDERSCORE@92..93 "_"
56 WHITESPACE@[93; 94) " " 56 WHITESPACE@93..94 " "
57 EQ@[94; 95) "=" 57 EQ@94..95 "="
58 WHITESPACE@[95; 96) " " 58 WHITESPACE@95..96 " "
59 LITERAL@[96; 108) 59 LITERAL@96..108
60 BYTE_STRING@[96; 108) "b\"bs\"invalid" 60 BYTE_STRING@96..108 "b\"bs\"invalid"
61 SEMICOLON@[108; 109) ";" 61 SEMICOLON@108..109 ";"
62 WHITESPACE@[109; 110) "\n" 62 WHITESPACE@109..110 "\n"
63 R_CURLY@[110; 111) "}" 63 R_CURLY@110..111 "}"
64 WHITESPACE@[111; 112) "\n" 64 WHITESPACE@111..112 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0030_traits.rast b/crates/ra_syntax/test_data/parser/ok/0030_traits.rast
index 4131cd81a..0aadc11a4 100644
--- a/crates/ra_syntax/test_data/parser/ok/0030_traits.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0030_traits.rast
@@ -1,61 +1,61 @@
1SOURCE_FILE@[0; 96) 1SOURCE_FILE@0..96
2 TRAIT_DEF@[0; 36) 2 TRAIT_DEF@0..36
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 14) 5 NAME@6..14
6 IDENT@[6; 14) "Runnable" 6 IDENT@6..14 "Runnable"
7 WHITESPACE@[14; 15) " " 7 WHITESPACE@14..15 " "
8 ITEM_LIST@[15; 36) 8 ITEM_LIST@15..36
9 L_CURLY@[15; 16) "{" 9 L_CURLY@15..16 "{"
10 WHITESPACE@[16; 21) "\n " 10 WHITESPACE@16..21 "\n "
11 FN_DEF@[21; 34) 11 FN_DEF@21..34
12 FN_KW@[21; 23) "fn" 12 FN_KW@21..23 "fn"
13 WHITESPACE@[23; 24) " " 13 WHITESPACE@23..24 " "
14 NAME@[24; 31) 14 NAME@24..31
15 IDENT@[24; 31) "handler" 15 IDENT@24..31 "handler"
16 PARAM_LIST@[31; 33) 16 PARAM_LIST@31..33
17 L_PAREN@[31; 32) "(" 17 L_PAREN@31..32 "("
18 R_PAREN@[32; 33) ")" 18 R_PAREN@32..33 ")"
19 SEMICOLON@[33; 34) ";" 19 SEMICOLON@33..34 ";"
20 WHITESPACE@[34; 35) "\n" 20 WHITESPACE@34..35 "\n"
21 R_CURLY@[35; 36) "}" 21 R_CURLY@35..36 "}"
22 WHITESPACE@[36; 38) "\n\n" 22 WHITESPACE@36..38 "\n\n"
23 TRAIT_DEF@[38; 95) 23 TRAIT_DEF@38..95
24 TRAIT_KW@[38; 43) "trait" 24 TRAIT_KW@38..43 "trait"
25 WHITESPACE@[43; 44) " " 25 WHITESPACE@43..44 " "
26 NAME@[44; 57) 26 NAME@44..57
27 IDENT@[44; 57) "TraitWithExpr" 27 IDENT@44..57 "TraitWithExpr"
28 WHITESPACE@[57; 58) " " 28 WHITESPACE@57..58 " "
29 ITEM_LIST@[58; 95) 29 ITEM_LIST@58..95
30 L_CURLY@[58; 59) "{" 30 L_CURLY@58..59 "{"
31 WHITESPACE@[59; 64) "\n " 31 WHITESPACE@59..64 "\n "
32 FN_DEF@[64; 93) 32 FN_DEF@64..93
33 FN_KW@[64; 66) "fn" 33 FN_KW@64..66 "fn"
34 WHITESPACE@[66; 67) " " 34 WHITESPACE@66..67 " "
35 NAME@[67; 79) 35 NAME@67..79
36 IDENT@[67; 79) "fn_with_expr" 36 IDENT@67..79 "fn_with_expr"
37 PARAM_LIST@[79; 92) 37 PARAM_LIST@79..92
38 L_PAREN@[79; 80) "(" 38 L_PAREN@79..80 "("
39 PARAM@[80; 91) 39 PARAM@80..91
40 BIND_PAT@[80; 81) 40 BIND_PAT@80..81
41 NAME@[80; 81) 41 NAME@80..81
42 IDENT@[80; 81) "x" 42 IDENT@80..81 "x"
43 COLON@[81; 82) ":" 43 COLON@81..82 ":"
44 WHITESPACE@[82; 83) " " 44 WHITESPACE@82..83 " "
45 ARRAY_TYPE@[83; 91) 45 ARRAY_TYPE@83..91
46 L_BRACK@[83; 84) "[" 46 L_BRACK@83..84 "["
47 PATH_TYPE@[84; 87) 47 PATH_TYPE@84..87
48 PATH@[84; 87) 48 PATH@84..87
49 PATH_SEGMENT@[84; 87) 49 PATH_SEGMENT@84..87
50 NAME_REF@[84; 87) 50 NAME_REF@84..87
51 IDENT@[84; 87) "i32" 51 IDENT@84..87 "i32"
52 SEMICOLON@[87; 88) ";" 52 SEMICOLON@87..88 ";"
53 WHITESPACE@[88; 89) " " 53 WHITESPACE@88..89 " "
54 LITERAL@[89; 90) 54 LITERAL@89..90
55 INT_NUMBER@[89; 90) "1" 55 INT_NUMBER@89..90 "1"
56 R_BRACK@[90; 91) "]" 56 R_BRACK@90..91 "]"
57 R_PAREN@[91; 92) ")" 57 R_PAREN@91..92 ")"
58 SEMICOLON@[92; 93) ";" 58 SEMICOLON@92..93 ";"
59 WHITESPACE@[93; 94) "\n" 59 WHITESPACE@93..94 "\n"
60 R_CURLY@[94; 95) "}" 60 R_CURLY@94..95 "}"
61 WHITESPACE@[95; 96) "\n" 61 WHITESPACE@95..96 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0031_extern.rast b/crates/ra_syntax/test_data/parser/ok/0031_extern.rast
index 23757df52..ea285f52f 100644
--- a/crates/ra_syntax/test_data/parser/ok/0031_extern.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0031_extern.rast
@@ -1,973 +1,973 @@
1SOURCE_FILE@[0; 1598) 1SOURCE_FILE@0..1598
2 EXTERN_BLOCK@[0; 1597) 2 EXTERN_BLOCK@0..1597
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 EXTERN_ITEM_LIST@[7; 1597) 6 EXTERN_ITEM_LIST@7..1597
7 L_CURLY@[7; 8) "{" 7 L_CURLY@7..8 "{"
8 WHITESPACE@[8; 13) "\n " 8 WHITESPACE@8..13 "\n "
9 FN_DEF@[13; 87) 9 FN_DEF@13..87
10 VISIBILITY@[13; 16) 10 VISIBILITY@13..16
11 PUB_KW@[13; 16) "pub" 11 PUB_KW@13..16 "pub"
12 WHITESPACE@[16; 17) " " 12 WHITESPACE@16..17 " "
13 FN_KW@[17; 19) "fn" 13 FN_KW@17..19 "fn"
14 WHITESPACE@[19; 20) " " 14 WHITESPACE@19..20 " "
15 NAME@[20; 26) 15 NAME@20..26
16 IDENT@[20; 26) "socket" 16 IDENT@20..26 "socket"
17 PARAM_LIST@[26; 75) 17 PARAM_LIST@26..75
18 L_PAREN@[26; 27) "(" 18 L_PAREN@26..27 "("
19 PARAM@[27; 42) 19 PARAM@27..42
20 BIND_PAT@[27; 33) 20 BIND_PAT@27..33
21 NAME@[27; 33) 21 NAME@27..33
22 IDENT@[27; 33) "domain" 22 IDENT@27..33 "domain"
23 COLON@[33; 34) ":" 23 COLON@33..34 ":"
24 WHITESPACE@[34; 35) " " 24 WHITESPACE@34..35 " "
25 PATH_TYPE@[35; 42) 25 PATH_TYPE@35..42
26 PATH@[35; 42) 26 PATH@35..42
27 PATH_SEGMENT@[35; 42) 27 PATH_SEGMENT@35..42
28 COLON2@[35; 37) "::" 28 COLON2@35..37 "::"
29 NAME_REF@[37; 42) 29 NAME_REF@37..42
30 IDENT@[37; 42) "c_int" 30 IDENT@37..42 "c_int"
31 COMMA@[42; 43) "," 31 COMMA@42..43 ","
32 WHITESPACE@[43; 44) " " 32 WHITESPACE@43..44 " "
33 PARAM@[44; 55) 33 PARAM@44..55
34 BIND_PAT@[44; 46) 34 BIND_PAT@44..46
35 NAME@[44; 46) 35 NAME@44..46
36 IDENT@[44; 46) "ty" 36 IDENT@44..46 "ty"
37 COLON@[46; 47) ":" 37 COLON@46..47 ":"
38 WHITESPACE@[47; 48) " " 38 WHITESPACE@47..48 " "
39 PATH_TYPE@[48; 55) 39 PATH_TYPE@48..55
40 PATH@[48; 55) 40 PATH@48..55
41 PATH_SEGMENT@[48; 55) 41 PATH_SEGMENT@48..55
42 COLON2@[48; 50) "::" 42 COLON2@48..50 "::"
43 NAME_REF@[50; 55) 43 NAME_REF@50..55
44 IDENT@[50; 55) "c_int" 44 IDENT@50..55 "c_int"
45 COMMA@[55; 56) "," 45 COMMA@55..56 ","
46 WHITESPACE@[56; 57) " " 46 WHITESPACE@56..57 " "
47 PARAM@[57; 74) 47 PARAM@57..74
48 BIND_PAT@[57; 65) 48 BIND_PAT@57..65
49 NAME@[57; 65) 49 NAME@57..65
50 IDENT@[57; 65) "protocol" 50 IDENT@57..65 "protocol"
51 COLON@[65; 66) ":" 51 COLON@65..66 ":"
52 WHITESPACE@[66; 67) " " 52 WHITESPACE@66..67 " "
53 PATH_TYPE@[67; 74) 53 PATH_TYPE@67..74
54 PATH@[67; 74) 54 PATH@67..74
55 PATH_SEGMENT@[67; 74) 55 PATH_SEGMENT@67..74
56 COLON2@[67; 69) "::" 56 COLON2@67..69 "::"
57 NAME_REF@[69; 74) 57 NAME_REF@69..74
58 IDENT@[69; 74) "c_int" 58 IDENT@69..74 "c_int"
59 R_PAREN@[74; 75) ")" 59 R_PAREN@74..75 ")"
60 WHITESPACE@[75; 76) " " 60 WHITESPACE@75..76 " "
61 RET_TYPE@[76; 86) 61 RET_TYPE@76..86
62 THIN_ARROW@[76; 78) "->" 62 THIN_ARROW@76..78 "->"
63 WHITESPACE@[78; 79) " " 63 WHITESPACE@78..79 " "
64 PATH_TYPE@[79; 86) 64 PATH_TYPE@79..86
65 PATH@[79; 86) 65 PATH@79..86
66 PATH_SEGMENT@[79; 86) 66 PATH_SEGMENT@79..86
67 COLON2@[79; 81) "::" 67 COLON2@79..81 "::"
68 NAME_REF@[81; 86) 68 NAME_REF@81..86
69 IDENT@[81; 86) "c_int" 69 IDENT@81..86 "c_int"
70 SEMICOLON@[86; 87) ";" 70 SEMICOLON@86..87 ";"
71 WHITESPACE@[87; 92) "\n " 71 WHITESPACE@87..92 "\n "
72 FN_DEF@[92; 167) 72 FN_DEF@92..167
73 VISIBILITY@[92; 95) 73 VISIBILITY@92..95
74 PUB_KW@[92; 95) "pub" 74 PUB_KW@92..95 "pub"
75 WHITESPACE@[95; 96) " " 75 WHITESPACE@95..96 " "
76 FN_KW@[96; 98) "fn" 76 FN_KW@96..98 "fn"
77 WHITESPACE@[98; 99) " " 77 WHITESPACE@98..99 " "
78 NAME@[99; 103) 78 NAME@99..103
79 IDENT@[99; 103) "bind" 79 IDENT@99..103 "bind"
80 PARAM_LIST@[103; 155) 80 PARAM_LIST@103..155
81 L_PAREN@[103; 104) "(" 81 L_PAREN@103..104 "("
82 PARAM@[104; 115) 82 PARAM@104..115
83 BIND_PAT@[104; 106) 83 BIND_PAT@104..106
84 NAME@[104; 106) 84 NAME@104..106
85 IDENT@[104; 106) "fd" 85 IDENT@104..106 "fd"
86 COLON@[106; 107) ":" 86 COLON@106..107 ":"
87 WHITESPACE@[107; 108) " " 87 WHITESPACE@107..108 " "
88 PATH_TYPE@[108; 115) 88 PATH_TYPE@108..115
89 PATH@[108; 115) 89 PATH@108..115
90 PATH_SEGMENT@[108; 115) 90 PATH_SEGMENT@108..115
91 COLON2@[108; 110) "::" 91 COLON2@108..110 "::"
92 NAME_REF@[110; 115) 92 NAME_REF@110..115
93 IDENT@[110; 115) "c_int" 93 IDENT@110..115 "c_int"
94 COMMA@[115; 116) "," 94 COMMA@115..116 ","
95 WHITESPACE@[116; 117) " " 95 WHITESPACE@116..117 " "
96 PARAM@[117; 138) 96 PARAM@117..138
97 BIND_PAT@[117; 121) 97 BIND_PAT@117..121
98 NAME@[117; 121) 98 NAME@117..121
99 IDENT@[117; 121) "addr" 99 IDENT@117..121 "addr"
100 COLON@[121; 122) ":" 100 COLON@121..122 ":"
101 WHITESPACE@[122; 123) " " 101 WHITESPACE@122..123 " "
102 POINTER_TYPE@[123; 138) 102 POINTER_TYPE@123..138
103 STAR@[123; 124) "*" 103 STAR@123..124 "*"
104 CONST_KW@[124; 129) "const" 104 CONST_KW@124..129 "const"
105 WHITESPACE@[129; 130) " " 105 WHITESPACE@129..130 " "
106 PATH_TYPE@[130; 138) 106 PATH_TYPE@130..138
107 PATH@[130; 138) 107 PATH@130..138
108 PATH_SEGMENT@[130; 138) 108 PATH_SEGMENT@130..138
109 NAME_REF@[130; 138) 109 NAME_REF@130..138
110 IDENT@[130; 138) "sockaddr" 110 IDENT@130..138 "sockaddr"
111 COMMA@[138; 139) "," 111 COMMA@138..139 ","
112 WHITESPACE@[139; 140) " " 112 WHITESPACE@139..140 " "
113 PARAM@[140; 154) 113 PARAM@140..154
114 BIND_PAT@[140; 143) 114 BIND_PAT@140..143
115 NAME@[140; 143) 115 NAME@140..143
116 IDENT@[140; 143) "len" 116 IDENT@140..143 "len"
117 COLON@[143; 144) ":" 117 COLON@143..144 ":"
118 WHITESPACE@[144; 145) " " 118 WHITESPACE@144..145 " "
119 PATH_TYPE@[145; 154) 119 PATH_TYPE@145..154
120 PATH@[145; 154) 120 PATH@145..154
121 PATH_SEGMENT@[145; 154) 121 PATH_SEGMENT@145..154
122 NAME_REF@[145; 154) 122 NAME_REF@145..154
123 IDENT@[145; 154) "socklen_t" 123 IDENT@145..154 "socklen_t"
124 R_PAREN@[154; 155) ")" 124 R_PAREN@154..155 ")"
125 WHITESPACE@[155; 156) " " 125 WHITESPACE@155..156 " "
126 RET_TYPE@[156; 166) 126 RET_TYPE@156..166
127 THIN_ARROW@[156; 158) "->" 127 THIN_ARROW@156..158 "->"
128 WHITESPACE@[158; 159) " " 128 WHITESPACE@158..159 " "
129 PATH_TYPE@[159; 166) 129 PATH_TYPE@159..166
130 PATH@[159; 166) 130 PATH@159..166
131 PATH_SEGMENT@[159; 166) 131 PATH_SEGMENT@159..166
132 COLON2@[159; 161) "::" 132 COLON2@159..161 "::"
133 NAME_REF@[161; 166) 133 NAME_REF@161..166
134 IDENT@[161; 166) "c_int" 134 IDENT@161..166 "c_int"
135 SEMICOLON@[166; 167) ";" 135 SEMICOLON@166..167 ";"
136 WHITESPACE@[167; 172) "\n " 136 WHITESPACE@167..172 "\n "
137 FN_DEF@[172; 276) 137 FN_DEF@172..276
138 VISIBILITY@[172; 175) 138 VISIBILITY@172..175
139 PUB_KW@[172; 175) "pub" 139 PUB_KW@172..175 "pub"
140 WHITESPACE@[175; 176) " " 140 WHITESPACE@175..176 " "
141 FN_KW@[176; 178) "fn" 141 FN_KW@176..178 "fn"
142 WHITESPACE@[178; 179) " " 142 WHITESPACE@178..179 " "
143 NAME@[179; 186) 143 NAME@179..186
144 IDENT@[179; 186) "connect" 144 IDENT@179..186 "connect"
145 PARAM_LIST@[186; 264) 145 PARAM_LIST@186..264
146 L_PAREN@[186; 187) "(" 146 L_PAREN@186..187 "("
147 PARAM@[187; 202) 147 PARAM@187..202
148 BIND_PAT@[187; 193) 148 BIND_PAT@187..193
149 NAME@[187; 193) 149 NAME@187..193
150 IDENT@[187; 193) "socket" 150 IDENT@187..193 "socket"
151 COLON@[193; 194) ":" 151 COLON@193..194 ":"
152 WHITESPACE@[194; 195) " " 152 WHITESPACE@194..195 " "
153 PATH_TYPE@[195; 202) 153 PATH_TYPE@195..202
154 PATH@[195; 202) 154 PATH@195..202
155 PATH_SEGMENT@[195; 202) 155 PATH_SEGMENT@195..202
156 COLON2@[195; 197) "::" 156 COLON2@195..197 "::"
157 NAME_REF@[197; 202) 157 NAME_REF@197..202
158 IDENT@[197; 202) "c_int" 158 IDENT@197..202 "c_int"
159 COMMA@[202; 203) "," 159 COMMA@202..203 ","
160 WHITESPACE@[203; 204) " " 160 WHITESPACE@203..204 " "
161 PARAM@[204; 228) 161 PARAM@204..228
162 BIND_PAT@[204; 211) 162 BIND_PAT@204..211
163 NAME@[204; 211) 163 NAME@204..211
164 IDENT@[204; 211) "address" 164 IDENT@204..211 "address"
165 COLON@[211; 212) ":" 165 COLON@211..212 ":"
166 WHITESPACE@[212; 213) " " 166 WHITESPACE@212..213 " "
167 POINTER_TYPE@[213; 228) 167 POINTER_TYPE@213..228
168 STAR@[213; 214) "*" 168 STAR@213..214 "*"
169 CONST_KW@[214; 219) "const" 169 CONST_KW@214..219 "const"
170 WHITESPACE@[219; 220) " " 170 WHITESPACE@219..220 " "
171 PATH_TYPE@[220; 228) 171 PATH_TYPE@220..228
172 PATH@[220; 228) 172 PATH@220..228
173 PATH_SEGMENT@[220; 228) 173 PATH_SEGMENT@220..228
174 NAME_REF@[220; 228) 174 NAME_REF@220..228
175 IDENT@[220; 228) "sockaddr" 175 IDENT@220..228 "sockaddr"
176 COMMA@[228; 229) "," 176 COMMA@228..229 ","
177 WHITESPACE@[229; 249) "\n " 177 WHITESPACE@229..249 "\n "
178 PARAM@[249; 263) 178 PARAM@249..263
179 BIND_PAT@[249; 252) 179 BIND_PAT@249..252
180 NAME@[249; 252) 180 NAME@249..252
181 IDENT@[249; 252) "len" 181 IDENT@249..252 "len"
182 COLON@[252; 253) ":" 182 COLON@252..253 ":"
183 WHITESPACE@[253; 254) " " 183 WHITESPACE@253..254 " "
184 PATH_TYPE@[254; 263) 184 PATH_TYPE@254..263
185 PATH@[254; 263) 185 PATH@254..263
186 PATH_SEGMENT@[254; 263) 186 PATH_SEGMENT@254..263
187 NAME_REF@[254; 263) 187 NAME_REF@254..263
188 IDENT@[254; 263) "socklen_t" 188 IDENT@254..263 "socklen_t"
189 R_PAREN@[263; 264) ")" 189 R_PAREN@263..264 ")"
190 WHITESPACE@[264; 265) " " 190 WHITESPACE@264..265 " "
191 RET_TYPE@[265; 275) 191 RET_TYPE@265..275
192 THIN_ARROW@[265; 267) "->" 192 THIN_ARROW@265..267 "->"
193 WHITESPACE@[267; 268) " " 193 WHITESPACE@267..268 " "
194 PATH_TYPE@[268; 275) 194 PATH_TYPE@268..275
195 PATH@[268; 275) 195 PATH@268..275
196 PATH_SEGMENT@[268; 275) 196 PATH_SEGMENT@268..275
197 COLON2@[268; 270) "::" 197 COLON2@268..270 "::"
198 NAME_REF@[270; 275) 198 NAME_REF@270..275
199 IDENT@[270; 275) "c_int" 199 IDENT@270..275 "c_int"
200 SEMICOLON@[275; 276) ";" 200 SEMICOLON@275..276 ";"
201 WHITESPACE@[276; 281) "\n " 201 WHITESPACE@276..281 "\n "
202 FN_DEF@[281; 341) 202 FN_DEF@281..341
203 VISIBILITY@[281; 284) 203 VISIBILITY@281..284
204 PUB_KW@[281; 284) "pub" 204 PUB_KW@281..284 "pub"
205 WHITESPACE@[284; 285) " " 205 WHITESPACE@284..285 " "
206 FN_KW@[285; 287) "fn" 206 FN_KW@285..287 "fn"
207 WHITESPACE@[287; 288) " " 207 WHITESPACE@287..288 " "
208 NAME@[288; 294) 208 NAME@288..294
209 IDENT@[288; 294) "listen" 209 IDENT@288..294 "listen"
210 PARAM_LIST@[294; 329) 210 PARAM_LIST@294..329
211 L_PAREN@[294; 295) "(" 211 L_PAREN@294..295 "("
212 PARAM@[295; 310) 212 PARAM@295..310
213 BIND_PAT@[295; 301) 213 BIND_PAT@295..301
214 NAME@[295; 301) 214 NAME@295..301
215 IDENT@[295; 301) "socket" 215 IDENT@295..301 "socket"
216 COLON@[301; 302) ":" 216 COLON@301..302 ":"
217 WHITESPACE@[302; 303) " " 217 WHITESPACE@302..303 " "
218 PATH_TYPE@[303; 310) 218 PATH_TYPE@303..310
219 PATH@[303; 310) 219 PATH@303..310
220 PATH_SEGMENT@[303; 310) 220 PATH_SEGMENT@303..310
221 COLON2@[303; 305) "::" 221 COLON2@303..305 "::"
222 NAME_REF@[305; 310) 222 NAME_REF@305..310
223 IDENT@[305; 310) "c_int" 223 IDENT@305..310 "c_int"
224 COMMA@[310; 311) "," 224 COMMA@310..311 ","
225 WHITESPACE@[311; 312) " " 225 WHITESPACE@311..312 " "
226 PARAM@[312; 328) 226 PARAM@312..328
227 BIND_PAT@[312; 319) 227 BIND_PAT@312..319
228 NAME@[312; 319) 228 NAME@312..319
229 IDENT@[312; 319) "backlog" 229 IDENT@312..319 "backlog"
230 COLON@[319; 320) ":" 230 COLON@319..320 ":"
231 WHITESPACE@[320; 321) " " 231 WHITESPACE@320..321 " "
232 PATH_TYPE@[321; 328) 232 PATH_TYPE@321..328
233 PATH@[321; 328) 233 PATH@321..328
234 PATH_SEGMENT@[321; 328) 234 PATH_SEGMENT@321..328
235 COLON2@[321; 323) "::" 235 COLON2@321..323 "::"
236 NAME_REF@[323; 328) 236 NAME_REF@323..328
237 IDENT@[323; 328) "c_int" 237 IDENT@323..328 "c_int"
238 R_PAREN@[328; 329) ")" 238 R_PAREN@328..329 ")"
239 WHITESPACE@[329; 330) " " 239 WHITESPACE@329..330 " "
240 RET_TYPE@[330; 340) 240 RET_TYPE@330..340
241 THIN_ARROW@[330; 332) "->" 241 THIN_ARROW@330..332 "->"
242 WHITESPACE@[332; 333) " " 242 WHITESPACE@332..333 " "
243 PATH_TYPE@[333; 340) 243 PATH_TYPE@333..340
244 PATH@[333; 340) 244 PATH@333..340
245 PATH_SEGMENT@[333; 340) 245 PATH_SEGMENT@333..340
246 COLON2@[333; 335) "::" 246 COLON2@333..335 "::"
247 NAME_REF@[335; 340) 247 NAME_REF@335..340
248 IDENT@[335; 340) "c_int" 248 IDENT@335..340 "c_int"
249 SEMICOLON@[340; 341) ";" 249 SEMICOLON@340..341 ";"
250 WHITESPACE@[341; 346) "\n " 250 WHITESPACE@341..346 "\n "
251 FN_DEF@[346; 469) 251 FN_DEF@346..469
252 VISIBILITY@[346; 349) 252 VISIBILITY@346..349
253 PUB_KW@[346; 349) "pub" 253 PUB_KW@346..349 "pub"
254 WHITESPACE@[349; 350) " " 254 WHITESPACE@349..350 " "
255 FN_KW@[350; 352) "fn" 255 FN_KW@350..352 "fn"
256 WHITESPACE@[352; 353) " " 256 WHITESPACE@352..353 " "
257 NAME@[353; 364) 257 NAME@353..364
258 IDENT@[353; 364) "getsockname" 258 IDENT@353..364 "getsockname"
259 PARAM_LIST@[364; 457) 259 PARAM_LIST@364..457
260 L_PAREN@[364; 365) "(" 260 L_PAREN@364..365 "("
261 PARAM@[365; 380) 261 PARAM@365..380
262 BIND_PAT@[365; 371) 262 BIND_PAT@365..371
263 NAME@[365; 371) 263 NAME@365..371
264 IDENT@[365; 371) "socket" 264 IDENT@365..371 "socket"
265 COLON@[371; 372) ":" 265 COLON@371..372 ":"
266 WHITESPACE@[372; 373) " " 266 WHITESPACE@372..373 " "
267 PATH_TYPE@[373; 380) 267 PATH_TYPE@373..380
268 PATH@[373; 380) 268 PATH@373..380
269 PATH_SEGMENT@[373; 380) 269 PATH_SEGMENT@373..380
270 COLON2@[373; 375) "::" 270 COLON2@373..375 "::"
271 NAME_REF@[375; 380) 271 NAME_REF@375..380
272 IDENT@[375; 380) "c_int" 272 IDENT@375..380 "c_int"
273 COMMA@[380; 381) "," 273 COMMA@380..381 ","
274 WHITESPACE@[381; 382) " " 274 WHITESPACE@381..382 " "
275 PARAM@[382; 404) 275 PARAM@382..404
276 BIND_PAT@[382; 389) 276 BIND_PAT@382..389
277 NAME@[382; 389) 277 NAME@382..389
278 IDENT@[382; 389) "address" 278 IDENT@382..389 "address"
279 COLON@[389; 390) ":" 279 COLON@389..390 ":"
280 WHITESPACE@[390; 391) " " 280 WHITESPACE@390..391 " "
281 POINTER_TYPE@[391; 404) 281 POINTER_TYPE@391..404
282 STAR@[391; 392) "*" 282 STAR@391..392 "*"
283 MUT_KW@[392; 395) "mut" 283 MUT_KW@392..395 "mut"
284 WHITESPACE@[395; 396) " " 284 WHITESPACE@395..396 " "
285 PATH_TYPE@[396; 404) 285 PATH_TYPE@396..404
286 PATH@[396; 404) 286 PATH@396..404
287 PATH_SEGMENT@[396; 404) 287 PATH_SEGMENT@396..404
288 NAME_REF@[396; 404) 288 NAME_REF@396..404
289 IDENT@[396; 404) "sockaddr" 289 IDENT@396..404 "sockaddr"
290 COMMA@[404; 405) "," 290 COMMA@404..405 ","
291 WHITESPACE@[405; 429) "\n " 291 WHITESPACE@405..429 "\n "
292 PARAM@[429; 456) 292 PARAM@429..456
293 BIND_PAT@[429; 440) 293 BIND_PAT@429..440
294 NAME@[429; 440) 294 NAME@429..440
295 IDENT@[429; 440) "address_len" 295 IDENT@429..440 "address_len"
296 COLON@[440; 441) ":" 296 COLON@440..441 ":"
297 WHITESPACE@[441; 442) " " 297 WHITESPACE@441..442 " "
298 POINTER_TYPE@[442; 456) 298 POINTER_TYPE@442..456
299 STAR@[442; 443) "*" 299 STAR@442..443 "*"
300 MUT_KW@[443; 446) "mut" 300 MUT_KW@443..446 "mut"
301 WHITESPACE@[446; 447) " " 301 WHITESPACE@446..447 " "
302 PATH_TYPE@[447; 456) 302 PATH_TYPE@447..456
303 PATH@[447; 456) 303 PATH@447..456
304 PATH_SEGMENT@[447; 456) 304 PATH_SEGMENT@447..456
305 NAME_REF@[447; 456) 305 NAME_REF@447..456
306 IDENT@[447; 456) "socklen_t" 306 IDENT@447..456 "socklen_t"
307 R_PAREN@[456; 457) ")" 307 R_PAREN@456..457 ")"
308 WHITESPACE@[457; 458) " " 308 WHITESPACE@457..458 " "
309 RET_TYPE@[458; 468) 309 RET_TYPE@458..468
310 THIN_ARROW@[458; 460) "->" 310 THIN_ARROW@458..460 "->"
311 WHITESPACE@[460; 461) " " 311 WHITESPACE@460..461 " "
312 PATH_TYPE@[461; 468) 312 PATH_TYPE@461..468
313 PATH@[461; 468) 313 PATH@461..468
314 PATH_SEGMENT@[461; 468) 314 PATH_SEGMENT@461..468
315 COLON2@[461; 463) "::" 315 COLON2@461..463 "::"
316 NAME_REF@[463; 468) 316 NAME_REF@463..468
317 IDENT@[463; 468) "c_int" 317 IDENT@463..468 "c_int"
318 SEMICOLON@[468; 469) ";" 318 SEMICOLON@468..469 ";"
319 WHITESPACE@[469; 474) "\n " 319 WHITESPACE@469..474 "\n "
320 FN_DEF@[474; 691) 320 FN_DEF@474..691
321 VISIBILITY@[474; 477) 321 VISIBILITY@474..477
322 PUB_KW@[474; 477) "pub" 322 PUB_KW@474..477 "pub"
323 WHITESPACE@[477; 478) " " 323 WHITESPACE@477..478 " "
324 FN_KW@[478; 480) "fn" 324 FN_KW@478..480 "fn"
325 WHITESPACE@[480; 481) " " 325 WHITESPACE@480..481 " "
326 NAME@[481; 491) 326 NAME@481..491
327 IDENT@[481; 491) "getsockopt" 327 IDENT@481..491 "getsockopt"
328 PARAM_LIST@[491; 679) 328 PARAM_LIST@491..679
329 L_PAREN@[491; 492) "(" 329 L_PAREN@491..492 "("
330 PARAM@[492; 507) 330 PARAM@492..507
331 BIND_PAT@[492; 498) 331 BIND_PAT@492..498
332 NAME@[492; 498) 332 NAME@492..498
333 IDENT@[492; 498) "sockfd" 333 IDENT@492..498 "sockfd"
334 COLON@[498; 499) ":" 334 COLON@498..499 ":"
335 WHITESPACE@[499; 500) " " 335 WHITESPACE@499..500 " "
336 PATH_TYPE@[500; 507) 336 PATH_TYPE@500..507
337 PATH@[500; 507) 337 PATH@500..507
338 PATH_SEGMENT@[500; 507) 338 PATH_SEGMENT@500..507
339 COLON2@[500; 502) "::" 339 COLON2@500..502 "::"
340 NAME_REF@[502; 507) 340 NAME_REF@502..507
341 IDENT@[502; 507) "c_int" 341 IDENT@502..507 "c_int"
342 COMMA@[507; 508) "," 342 COMMA@507..508 ","
343 WHITESPACE@[508; 531) "\n " 343 WHITESPACE@508..531 "\n "
344 PARAM@[531; 545) 344 PARAM@531..545
345 BIND_PAT@[531; 536) 345 BIND_PAT@531..536
346 NAME@[531; 536) 346 NAME@531..536
347 IDENT@[531; 536) "level" 347 IDENT@531..536 "level"
348 COLON@[536; 537) ":" 348 COLON@536..537 ":"
349 WHITESPACE@[537; 538) " " 349 WHITESPACE@537..538 " "
350 PATH_TYPE@[538; 545) 350 PATH_TYPE@538..545
351 PATH@[538; 545) 351 PATH@538..545
352 PATH_SEGMENT@[538; 545) 352 PATH_SEGMENT@538..545
353 COLON2@[538; 540) "::" 353 COLON2@538..540 "::"
354 NAME_REF@[540; 545) 354 NAME_REF@540..545
355 IDENT@[540; 545) "c_int" 355 IDENT@540..545 "c_int"
356 COMMA@[545; 546) "," 356 COMMA@545..546 ","
357 WHITESPACE@[546; 569) "\n " 357 WHITESPACE@546..569 "\n "
358 PARAM@[569; 585) 358 PARAM@569..585
359 BIND_PAT@[569; 576) 359 BIND_PAT@569..576
360 NAME@[569; 576) 360 NAME@569..576
361 IDENT@[569; 576) "optname" 361 IDENT@569..576 "optname"
362 COLON@[576; 577) ":" 362 COLON@576..577 ":"
363 WHITESPACE@[577; 578) " " 363 WHITESPACE@577..578 " "
364 PATH_TYPE@[578; 585) 364 PATH_TYPE@578..585
365 PATH@[578; 585) 365 PATH@578..585
366 PATH_SEGMENT@[578; 585) 366 PATH_SEGMENT@578..585
367 COLON2@[578; 580) "::" 367 COLON2@578..580 "::"
368 NAME_REF@[580; 585) 368 NAME_REF@580..585
369 IDENT@[580; 585) "c_int" 369 IDENT@580..585 "c_int"
370 COMMA@[585; 586) "," 370 COMMA@585..586 ","
371 WHITESPACE@[586; 609) "\n " 371 WHITESPACE@586..609 "\n "
372 PARAM@[609; 630) 372 PARAM@609..630
373 BIND_PAT@[609; 615) 373 BIND_PAT@609..615
374 NAME@[609; 615) 374 NAME@609..615
375 IDENT@[609; 615) "optval" 375 IDENT@609..615 "optval"
376 COLON@[615; 616) ":" 376 COLON@615..616 ":"
377 WHITESPACE@[616; 617) " " 377 WHITESPACE@616..617 " "
378 POINTER_TYPE@[617; 630) 378 POINTER_TYPE@617..630
379 STAR@[617; 618) "*" 379 STAR@617..618 "*"
380 MUT_KW@[618; 621) "mut" 380 MUT_KW@618..621 "mut"
381 WHITESPACE@[621; 622) " " 381 WHITESPACE@621..622 " "
382 PATH_TYPE@[622; 630) 382 PATH_TYPE@622..630
383 PATH@[622; 630) 383 PATH@622..630
384 PATH_SEGMENT@[622; 630) 384 PATH_SEGMENT@622..630
385 COLON2@[622; 624) "::" 385 COLON2@622..624 "::"
386 NAME_REF@[624; 630) 386 NAME_REF@624..630
387 IDENT@[624; 630) "c_void" 387 IDENT@624..630 "c_void"
388 COMMA@[630; 631) "," 388 COMMA@630..631 ","
389 WHITESPACE@[631; 654) "\n " 389 WHITESPACE@631..654 "\n "
390 PARAM@[654; 678) 390 PARAM@654..678
391 BIND_PAT@[654; 660) 391 BIND_PAT@654..660
392 NAME@[654; 660) 392 NAME@654..660
393 IDENT@[654; 660) "optlen" 393 IDENT@654..660 "optlen"
394 COLON@[660; 661) ":" 394 COLON@660..661 ":"
395 WHITESPACE@[661; 662) " " 395 WHITESPACE@661..662 " "
396 POINTER_TYPE@[662; 678) 396 POINTER_TYPE@662..678
397 STAR@[662; 663) "*" 397 STAR@662..663 "*"
398 MUT_KW@[663; 666) "mut" 398 MUT_KW@663..666 "mut"
399 WHITESPACE@[666; 667) " " 399 WHITESPACE@666..667 " "
400 PATH_TYPE@[667; 678) 400 PATH_TYPE@667..678
401 PATH@[667; 678) 401 PATH@667..678
402 PATH_SEGMENT@[667; 678) 402 PATH_SEGMENT@667..678
403 COLON2@[667; 669) "::" 403 COLON2@667..669 "::"
404 NAME_REF@[669; 678) 404 NAME_REF@669..678
405 IDENT@[669; 678) "socklen_t" 405 IDENT@669..678 "socklen_t"
406 R_PAREN@[678; 679) ")" 406 R_PAREN@678..679 ")"
407 WHITESPACE@[679; 680) " " 407 WHITESPACE@679..680 " "
408 RET_TYPE@[680; 690) 408 RET_TYPE@680..690
409 THIN_ARROW@[680; 682) "->" 409 THIN_ARROW@680..682 "->"
410 WHITESPACE@[682; 683) " " 410 WHITESPACE@682..683 " "
411 PATH_TYPE@[683; 690) 411 PATH_TYPE@683..690
412 PATH@[683; 690) 412 PATH@683..690
413 PATH_SEGMENT@[683; 690) 413 PATH_SEGMENT@683..690
414 COLON2@[683; 685) "::" 414 COLON2@683..685 "::"
415 NAME_REF@[685; 690) 415 NAME_REF@685..690
416 IDENT@[685; 690) "c_int" 416 IDENT@685..690 "c_int"
417 SEMICOLON@[690; 691) ";" 417 SEMICOLON@690..691 ";"
418 WHITESPACE@[691; 696) "\n " 418 WHITESPACE@691..696 "\n "
419 FN_DEF@[696; 864) 419 FN_DEF@696..864
420 VISIBILITY@[696; 699) 420 VISIBILITY@696..699
421 PUB_KW@[696; 699) "pub" 421 PUB_KW@696..699 "pub"
422 WHITESPACE@[699; 700) " " 422 WHITESPACE@699..700 " "
423 FN_KW@[700; 702) "fn" 423 FN_KW@700..702 "fn"
424 WHITESPACE@[702; 703) " " 424 WHITESPACE@702..703 " "
425 NAME@[703; 713) 425 NAME@703..713
426 IDENT@[703; 713) "setsockopt" 426 IDENT@703..713 "setsockopt"
427 PARAM_LIST@[713; 852) 427 PARAM_LIST@713..852
428 L_PAREN@[713; 714) "(" 428 L_PAREN@713..714 "("
429 PARAM@[714; 729) 429 PARAM@714..729
430 BIND_PAT@[714; 720) 430 BIND_PAT@714..720
431 NAME@[714; 720) 431 NAME@714..720
432 IDENT@[714; 720) "socket" 432 IDENT@714..720 "socket"
433 COLON@[720; 721) ":" 433 COLON@720..721 ":"
434 WHITESPACE@[721; 722) " " 434 WHITESPACE@721..722 " "
435 PATH_TYPE@[722; 729) 435 PATH_TYPE@722..729
436 PATH@[722; 729) 436 PATH@722..729
437 PATH_SEGMENT@[722; 729) 437 PATH_SEGMENT@722..729
438 COLON2@[722; 724) "::" 438 COLON2@722..724 "::"
439 NAME_REF@[724; 729) 439 NAME_REF@724..729
440 IDENT@[724; 729) "c_int" 440 IDENT@724..729 "c_int"
441 COMMA@[729; 730) "," 441 COMMA@729..730 ","
442 WHITESPACE@[730; 731) " " 442 WHITESPACE@730..731 " "
443 PARAM@[731; 745) 443 PARAM@731..745
444 BIND_PAT@[731; 736) 444 BIND_PAT@731..736
445 NAME@[731; 736) 445 NAME@731..736
446 IDENT@[731; 736) "level" 446 IDENT@731..736 "level"
447 COLON@[736; 737) ":" 447 COLON@736..737 ":"
448 WHITESPACE@[737; 738) " " 448 WHITESPACE@737..738 " "
449 PATH_TYPE@[738; 745) 449 PATH_TYPE@738..745
450 PATH@[738; 745) 450 PATH@738..745
451 PATH_SEGMENT@[738; 745) 451 PATH_SEGMENT@738..745
452 COLON2@[738; 740) "::" 452 COLON2@738..740 "::"
453 NAME_REF@[740; 745) 453 NAME_REF@740..745
454 IDENT@[740; 745) "c_int" 454 IDENT@740..745 "c_int"
455 COMMA@[745; 746) "," 455 COMMA@745..746 ","
456 WHITESPACE@[746; 747) " " 456 WHITESPACE@746..747 " "
457 PARAM@[747; 760) 457 PARAM@747..760
458 BIND_PAT@[747; 751) 458 BIND_PAT@747..751
459 NAME@[747; 751) 459 NAME@747..751
460 IDENT@[747; 751) "name" 460 IDENT@747..751 "name"
461 COLON@[751; 752) ":" 461 COLON@751..752 ":"
462 WHITESPACE@[752; 753) " " 462 WHITESPACE@752..753 " "
463 PATH_TYPE@[753; 760) 463 PATH_TYPE@753..760
464 PATH@[753; 760) 464 PATH@753..760
465 PATH_SEGMENT@[753; 760) 465 PATH_SEGMENT@753..760
466 COLON2@[753; 755) "::" 466 COLON2@753..755 "::"
467 NAME_REF@[755; 760) 467 NAME_REF@755..760
468 IDENT@[755; 760) "c_int" 468 IDENT@755..760 "c_int"
469 COMMA@[760; 761) "," 469 COMMA@760..761 ","
470 WHITESPACE@[761; 784) "\n " 470 WHITESPACE@761..784 "\n "
471 PARAM@[784; 806) 471 PARAM@784..806
472 BIND_PAT@[784; 789) 472 BIND_PAT@784..789
473 NAME@[784; 789) 473 NAME@784..789
474 IDENT@[784; 789) "value" 474 IDENT@784..789 "value"
475 COLON@[789; 790) ":" 475 COLON@789..790 ":"
476 WHITESPACE@[790; 791) " " 476 WHITESPACE@790..791 " "
477 POINTER_TYPE@[791; 806) 477 POINTER_TYPE@791..806
478 STAR@[791; 792) "*" 478 STAR@791..792 "*"
479 CONST_KW@[792; 797) "const" 479 CONST_KW@792..797 "const"
480 WHITESPACE@[797; 798) " " 480 WHITESPACE@797..798 " "
481 PATH_TYPE@[798; 806) 481 PATH_TYPE@798..806
482 PATH@[798; 806) 482 PATH@798..806
483 PATH_SEGMENT@[798; 806) 483 PATH_SEGMENT@798..806
484 COLON2@[798; 800) "::" 484 COLON2@798..800 "::"
485 NAME_REF@[800; 806) 485 NAME_REF@800..806
486 IDENT@[800; 806) "c_void" 486 IDENT@800..806 "c_void"
487 COMMA@[806; 807) "," 487 COMMA@806..807 ","
488 WHITESPACE@[807; 830) "\n " 488 WHITESPACE@807..830 "\n "
489 PARAM@[830; 851) 489 PARAM@830..851
490 BIND_PAT@[830; 840) 490 BIND_PAT@830..840
491 NAME@[830; 840) 491 NAME@830..840
492 IDENT@[830; 840) "option_len" 492 IDENT@830..840 "option_len"
493 COLON@[840; 841) ":" 493 COLON@840..841 ":"
494 WHITESPACE@[841; 842) " " 494 WHITESPACE@841..842 " "
495 PATH_TYPE@[842; 851) 495 PATH_TYPE@842..851
496 PATH@[842; 851) 496 PATH@842..851
497 PATH_SEGMENT@[842; 851) 497 PATH_SEGMENT@842..851
498 NAME_REF@[842; 851) 498 NAME_REF@842..851
499 IDENT@[842; 851) "socklen_t" 499 IDENT@842..851 "socklen_t"
500 R_PAREN@[851; 852) ")" 500 R_PAREN@851..852 ")"
501 WHITESPACE@[852; 853) " " 501 WHITESPACE@852..853 " "
502 RET_TYPE@[853; 863) 502 RET_TYPE@853..863
503 THIN_ARROW@[853; 855) "->" 503 THIN_ARROW@853..855 "->"
504 WHITESPACE@[855; 856) " " 504 WHITESPACE@855..856 " "
505 PATH_TYPE@[856; 863) 505 PATH_TYPE@856..863
506 PATH@[856; 863) 506 PATH@856..863
507 PATH_SEGMENT@[856; 863) 507 PATH_SEGMENT@856..863
508 COLON2@[856; 858) "::" 508 COLON2@856..858 "::"
509 NAME_REF@[858; 863) 509 NAME_REF@858..863
510 IDENT@[858; 863) "c_int" 510 IDENT@858..863 "c_int"
511 SEMICOLON@[863; 864) ";" 511 SEMICOLON@863..864 ";"
512 WHITESPACE@[864; 869) "\n " 512 WHITESPACE@864..869 "\n "
513 FN_DEF@[869; 992) 513 FN_DEF@869..992
514 VISIBILITY@[869; 872) 514 VISIBILITY@869..872
515 PUB_KW@[869; 872) "pub" 515 PUB_KW@869..872 "pub"
516 WHITESPACE@[872; 873) " " 516 WHITESPACE@872..873 " "
517 FN_KW@[873; 875) "fn" 517 FN_KW@873..875 "fn"
518 WHITESPACE@[875; 876) " " 518 WHITESPACE@875..876 " "
519 NAME@[876; 887) 519 NAME@876..887
520 IDENT@[876; 887) "getpeername" 520 IDENT@876..887 "getpeername"
521 PARAM_LIST@[887; 980) 521 PARAM_LIST@887..980
522 L_PAREN@[887; 888) "(" 522 L_PAREN@887..888 "("
523 PARAM@[888; 903) 523 PARAM@888..903
524 BIND_PAT@[888; 894) 524 BIND_PAT@888..894
525 NAME@[888; 894) 525 NAME@888..894
526 IDENT@[888; 894) "socket" 526 IDENT@888..894 "socket"
527 COLON@[894; 895) ":" 527 COLON@894..895 ":"
528 WHITESPACE@[895; 896) " " 528 WHITESPACE@895..896 " "
529 PATH_TYPE@[896; 903) 529 PATH_TYPE@896..903
530 PATH@[896; 903) 530 PATH@896..903
531 PATH_SEGMENT@[896; 903) 531 PATH_SEGMENT@896..903
532 COLON2@[896; 898) "::" 532 COLON2@896..898 "::"
533 NAME_REF@[898; 903) 533 NAME_REF@898..903
534 IDENT@[898; 903) "c_int" 534 IDENT@898..903 "c_int"
535 COMMA@[903; 904) "," 535 COMMA@903..904 ","
536 WHITESPACE@[904; 905) " " 536 WHITESPACE@904..905 " "
537 PARAM@[905; 927) 537 PARAM@905..927
538 BIND_PAT@[905; 912) 538 BIND_PAT@905..912
539 NAME@[905; 912) 539 NAME@905..912
540 IDENT@[905; 912) "address" 540 IDENT@905..912 "address"
541 COLON@[912; 913) ":" 541 COLON@912..913 ":"
542 WHITESPACE@[913; 914) " " 542 WHITESPACE@913..914 " "
543 POINTER_TYPE@[914; 927) 543 POINTER_TYPE@914..927
544 STAR@[914; 915) "*" 544 STAR@914..915 "*"
545 MUT_KW@[915; 918) "mut" 545 MUT_KW@915..918 "mut"
546 WHITESPACE@[918; 919) " " 546 WHITESPACE@918..919 " "
547 PATH_TYPE@[919; 927) 547 PATH_TYPE@919..927
548 PATH@[919; 927) 548 PATH@919..927
549 PATH_SEGMENT@[919; 927) 549 PATH_SEGMENT@919..927
550 NAME_REF@[919; 927) 550 NAME_REF@919..927
551 IDENT@[919; 927) "sockaddr" 551 IDENT@919..927 "sockaddr"
552 COMMA@[927; 928) "," 552 COMMA@927..928 ","
553 WHITESPACE@[928; 952) "\n " 553 WHITESPACE@928..952 "\n "
554 PARAM@[952; 979) 554 PARAM@952..979
555 BIND_PAT@[952; 963) 555 BIND_PAT@952..963
556 NAME@[952; 963) 556 NAME@952..963
557 IDENT@[952; 963) "address_len" 557 IDENT@952..963 "address_len"
558 COLON@[963; 964) ":" 558 COLON@963..964 ":"
559 WHITESPACE@[964; 965) " " 559 WHITESPACE@964..965 " "
560 POINTER_TYPE@[965; 979) 560 POINTER_TYPE@965..979
561 STAR@[965; 966) "*" 561 STAR@965..966 "*"
562 MUT_KW@[966; 969) "mut" 562 MUT_KW@966..969 "mut"
563 WHITESPACE@[969; 970) " " 563 WHITESPACE@969..970 " "
564 PATH_TYPE@[970; 979) 564 PATH_TYPE@970..979
565 PATH@[970; 979) 565 PATH@970..979
566 PATH_SEGMENT@[970; 979) 566 PATH_SEGMENT@970..979
567 NAME_REF@[970; 979) 567 NAME_REF@970..979
568 IDENT@[970; 979) "socklen_t" 568 IDENT@970..979 "socklen_t"
569 R_PAREN@[979; 980) ")" 569 R_PAREN@979..980 ")"
570 WHITESPACE@[980; 981) " " 570 WHITESPACE@980..981 " "
571 RET_TYPE@[981; 991) 571 RET_TYPE@981..991
572 THIN_ARROW@[981; 983) "->" 572 THIN_ARROW@981..983 "->"
573 WHITESPACE@[983; 984) " " 573 WHITESPACE@983..984 " "
574 PATH_TYPE@[984; 991) 574 PATH_TYPE@984..991
575 PATH@[984; 991) 575 PATH@984..991
576 PATH_SEGMENT@[984; 991) 576 PATH_SEGMENT@984..991
577 COLON2@[984; 986) "::" 577 COLON2@984..986 "::"
578 NAME_REF@[986; 991) 578 NAME_REF@986..991
579 IDENT@[986; 991) "c_int" 579 IDENT@986..991 "c_int"
580 SEMICOLON@[991; 992) ";" 580 SEMICOLON@991..992 ";"
581 WHITESPACE@[992; 997) "\n " 581 WHITESPACE@992..997 "\n "
582 FN_DEF@[997; 1173) 582 FN_DEF@997..1173
583 VISIBILITY@[997; 1000) 583 VISIBILITY@997..1000
584 PUB_KW@[997; 1000) "pub" 584 PUB_KW@997..1000 "pub"
585 WHITESPACE@[1000; 1001) " " 585 WHITESPACE@1000..1001 " "
586 FN_KW@[1001; 1003) "fn" 586 FN_KW@1001..1003 "fn"
587 WHITESPACE@[1003; 1004) " " 587 WHITESPACE@1003..1004 " "
588 NAME@[1004; 1010) 588 NAME@1004..1010
589 IDENT@[1004; 1010) "sendto" 589 IDENT@1004..1010 "sendto"
590 PARAM_LIST@[1010; 1159) 590 PARAM_LIST@1010..1159
591 L_PAREN@[1010; 1011) "(" 591 L_PAREN@1010..1011 "("
592 PARAM@[1011; 1026) 592 PARAM@1011..1026
593 BIND_PAT@[1011; 1017) 593 BIND_PAT@1011..1017
594 NAME@[1011; 1017) 594 NAME@1011..1017
595 IDENT@[1011; 1017) "socket" 595 IDENT@1011..1017 "socket"
596 COLON@[1017; 1018) ":" 596 COLON@1017..1018 ":"
597 WHITESPACE@[1018; 1019) " " 597 WHITESPACE@1018..1019 " "
598 PATH_TYPE@[1019; 1026) 598 PATH_TYPE@1019..1026
599 PATH@[1019; 1026) 599 PATH@1019..1026
600 PATH_SEGMENT@[1019; 1026) 600 PATH_SEGMENT@1019..1026
601 COLON2@[1019; 1021) "::" 601 COLON2@1019..1021 "::"
602 NAME_REF@[1021; 1026) 602 NAME_REF@1021..1026
603 IDENT@[1021; 1026) "c_int" 603 IDENT@1021..1026 "c_int"
604 COMMA@[1026; 1027) "," 604 COMMA@1026..1027 ","
605 WHITESPACE@[1027; 1028) " " 605 WHITESPACE@1027..1028 " "
606 PARAM@[1028; 1048) 606 PARAM@1028..1048
607 BIND_PAT@[1028; 1031) 607 BIND_PAT@1028..1031
608 NAME@[1028; 1031) 608 NAME@1028..1031
609 IDENT@[1028; 1031) "buf" 609 IDENT@1028..1031 "buf"
610 COLON@[1031; 1032) ":" 610 COLON@1031..1032 ":"
611 WHITESPACE@[1032; 1033) " " 611 WHITESPACE@1032..1033 " "
612 POINTER_TYPE@[1033; 1048) 612 POINTER_TYPE@1033..1048
613 STAR@[1033; 1034) "*" 613 STAR@1033..1034 "*"
614 CONST_KW@[1034; 1039) "const" 614 CONST_KW@1034..1039 "const"
615 WHITESPACE@[1039; 1040) " " 615 WHITESPACE@1039..1040 " "
616 PATH_TYPE@[1040; 1048) 616 PATH_TYPE@1040..1048
617 PATH@[1040; 1048) 617 PATH@1040..1048
618 PATH_SEGMENT@[1040; 1048) 618 PATH_SEGMENT@1040..1048
619 COLON2@[1040; 1042) "::" 619 COLON2@1040..1042 "::"
620 NAME_REF@[1042; 1048) 620 NAME_REF@1042..1048
621 IDENT@[1042; 1048) "c_void" 621 IDENT@1042..1048 "c_void"
622 COMMA@[1048; 1049) "," 622 COMMA@1048..1049 ","
623 WHITESPACE@[1049; 1050) " " 623 WHITESPACE@1049..1050 " "
624 PARAM@[1050; 1063) 624 PARAM@1050..1063
625 BIND_PAT@[1050; 1053) 625 BIND_PAT@1050..1053
626 NAME@[1050; 1053) 626 NAME@1050..1053
627 IDENT@[1050; 1053) "len" 627 IDENT@1050..1053 "len"
628 COLON@[1053; 1054) ":" 628 COLON@1053..1054 ":"
629 WHITESPACE@[1054; 1055) " " 629 WHITESPACE@1054..1055 " "
630 PATH_TYPE@[1055; 1063) 630 PATH_TYPE@1055..1063
631 PATH@[1055; 1063) 631 PATH@1055..1063
632 PATH_SEGMENT@[1055; 1063) 632 PATH_SEGMENT@1055..1063
633 COLON2@[1055; 1057) "::" 633 COLON2@1055..1057 "::"
634 NAME_REF@[1057; 1063) 634 NAME_REF@1057..1063
635 IDENT@[1057; 1063) "size_t" 635 IDENT@1057..1063 "size_t"
636 COMMA@[1063; 1064) "," 636 COMMA@1063..1064 ","
637 WHITESPACE@[1064; 1083) "\n " 637 WHITESPACE@1064..1083 "\n "
638 PARAM@[1083; 1097) 638 PARAM@1083..1097
639 BIND_PAT@[1083; 1088) 639 BIND_PAT@1083..1088
640 NAME@[1083; 1088) 640 NAME@1083..1088
641 IDENT@[1083; 1088) "flags" 641 IDENT@1083..1088 "flags"
642 COLON@[1088; 1089) ":" 642 COLON@1088..1089 ":"
643 WHITESPACE@[1089; 1090) " " 643 WHITESPACE@1089..1090 " "
644 PATH_TYPE@[1090; 1097) 644 PATH_TYPE@1090..1097
645 PATH@[1090; 1097) 645 PATH@1090..1097
646 PATH_SEGMENT@[1090; 1097) 646 PATH_SEGMENT@1090..1097
647 COLON2@[1090; 1092) "::" 647 COLON2@1090..1092 "::"
648 NAME_REF@[1092; 1097) 648 NAME_REF@1092..1097
649 IDENT@[1092; 1097) "c_int" 649 IDENT@1092..1097 "c_int"
650 COMMA@[1097; 1098) "," 650 COMMA@1097..1098 ","
651 WHITESPACE@[1098; 1099) " " 651 WHITESPACE@1098..1099 " "
652 PARAM@[1099; 1120) 652 PARAM@1099..1120
653 BIND_PAT@[1099; 1103) 653 BIND_PAT@1099..1103
654 NAME@[1099; 1103) 654 NAME@1099..1103
655 IDENT@[1099; 1103) "addr" 655 IDENT@1099..1103 "addr"
656 COLON@[1103; 1104) ":" 656 COLON@1103..1104 ":"
657 WHITESPACE@[1104; 1105) " " 657 WHITESPACE@1104..1105 " "
658 POINTER_TYPE@[1105; 1120) 658 POINTER_TYPE@1105..1120
659 STAR@[1105; 1106) "*" 659 STAR@1105..1106 "*"
660 CONST_KW@[1106; 1111) "const" 660 CONST_KW@1106..1111 "const"
661 WHITESPACE@[1111; 1112) " " 661 WHITESPACE@1111..1112 " "
662 PATH_TYPE@[1112; 1120) 662 PATH_TYPE@1112..1120
663 PATH@[1112; 1120) 663 PATH@1112..1120
664 PATH_SEGMENT@[1112; 1120) 664 PATH_SEGMENT@1112..1120
665 NAME_REF@[1112; 1120) 665 NAME_REF@1112..1120
666 IDENT@[1112; 1120) "sockaddr" 666 IDENT@1112..1120 "sockaddr"
667 COMMA@[1120; 1121) "," 667 COMMA@1120..1121 ","
668 WHITESPACE@[1121; 1140) "\n " 668 WHITESPACE@1121..1140 "\n "
669 PARAM@[1140; 1158) 669 PARAM@1140..1158
670 BIND_PAT@[1140; 1147) 670 BIND_PAT@1140..1147
671 NAME@[1140; 1147) 671 NAME@1140..1147
672 IDENT@[1140; 1147) "addrlen" 672 IDENT@1140..1147 "addrlen"
673 COLON@[1147; 1148) ":" 673 COLON@1147..1148 ":"
674 WHITESPACE@[1148; 1149) " " 674 WHITESPACE@1148..1149 " "
675 PATH_TYPE@[1149; 1158) 675 PATH_TYPE@1149..1158
676 PATH@[1149; 1158) 676 PATH@1149..1158
677 PATH_SEGMENT@[1149; 1158) 677 PATH_SEGMENT@1149..1158
678 NAME_REF@[1149; 1158) 678 NAME_REF@1149..1158
679 IDENT@[1149; 1158) "socklen_t" 679 IDENT@1149..1158 "socklen_t"
680 R_PAREN@[1158; 1159) ")" 680 R_PAREN@1158..1159 ")"
681 WHITESPACE@[1159; 1160) " " 681 WHITESPACE@1159..1160 " "
682 RET_TYPE@[1160; 1172) 682 RET_TYPE@1160..1172
683 THIN_ARROW@[1160; 1162) "->" 683 THIN_ARROW@1160..1162 "->"
684 WHITESPACE@[1162; 1163) " " 684 WHITESPACE@1162..1163 " "
685 PATH_TYPE@[1163; 1172) 685 PATH_TYPE@1163..1172
686 PATH@[1163; 1172) 686 PATH@1163..1172
687 PATH_SEGMENT@[1163; 1172) 687 PATH_SEGMENT@1163..1172
688 COLON2@[1163; 1165) "::" 688 COLON2@1163..1165 "::"
689 NAME_REF@[1165; 1172) 689 NAME_REF@1165..1172
690 IDENT@[1165; 1172) "ssize_t" 690 IDENT@1165..1172 "ssize_t"
691 SEMICOLON@[1172; 1173) ";" 691 SEMICOLON@1172..1173 ";"
692 WHITESPACE@[1173; 1178) "\n " 692 WHITESPACE@1173..1178 "\n "
693 FN_DEF@[1178; 1289) 693 FN_DEF@1178..1289
694 VISIBILITY@[1178; 1181) 694 VISIBILITY@1178..1181
695 PUB_KW@[1178; 1181) "pub" 695 PUB_KW@1178..1181 "pub"
696 WHITESPACE@[1181; 1182) " " 696 WHITESPACE@1181..1182 " "
697 FN_KW@[1182; 1184) "fn" 697 FN_KW@1182..1184 "fn"
698 WHITESPACE@[1184; 1185) " " 698 WHITESPACE@1184..1185 " "
699 NAME@[1185; 1189) 699 NAME@1185..1189
700 IDENT@[1185; 1189) "send" 700 IDENT@1185..1189 "send"
701 PARAM_LIST@[1189; 1275) 701 PARAM_LIST@1189..1275
702 L_PAREN@[1189; 1190) "(" 702 L_PAREN@1189..1190 "("
703 PARAM@[1190; 1205) 703 PARAM@1190..1205
704 BIND_PAT@[1190; 1196) 704 BIND_PAT@1190..1196
705 NAME@[1190; 1196) 705 NAME@1190..1196
706 IDENT@[1190; 1196) "socket" 706 IDENT@1190..1196 "socket"
707 COLON@[1196; 1197) ":" 707 COLON@1196..1197 ":"
708 WHITESPACE@[1197; 1198) " " 708 WHITESPACE@1197..1198 " "
709 PATH_TYPE@[1198; 1205) 709 PATH_TYPE@1198..1205
710 PATH@[1198; 1205) 710 PATH@1198..1205
711 PATH_SEGMENT@[1198; 1205) 711 PATH_SEGMENT@1198..1205
712 COLON2@[1198; 1200) "::" 712 COLON2@1198..1200 "::"
713 NAME_REF@[1200; 1205) 713 NAME_REF@1200..1205
714 IDENT@[1200; 1205) "c_int" 714 IDENT@1200..1205 "c_int"
715 COMMA@[1205; 1206) "," 715 COMMA@1205..1206 ","
716 WHITESPACE@[1206; 1207) " " 716 WHITESPACE@1206..1207 " "
717 PARAM@[1207; 1227) 717 PARAM@1207..1227
718 BIND_PAT@[1207; 1210) 718 BIND_PAT@1207..1210
719 NAME@[1207; 1210) 719 NAME@1207..1210
720 IDENT@[1207; 1210) "buf" 720 IDENT@1207..1210 "buf"
721 COLON@[1210; 1211) ":" 721 COLON@1210..1211 ":"
722 WHITESPACE@[1211; 1212) " " 722 WHITESPACE@1211..1212 " "
723 POINTER_TYPE@[1212; 1227) 723 POINTER_TYPE@1212..1227
724 STAR@[1212; 1213) "*" 724 STAR@1212..1213 "*"
725 CONST_KW@[1213; 1218) "const" 725 CONST_KW@1213..1218 "const"
726 WHITESPACE@[1218; 1219) " " 726 WHITESPACE@1218..1219 " "
727 PATH_TYPE@[1219; 1227) 727 PATH_TYPE@1219..1227
728 PATH@[1219; 1227) 728 PATH@1219..1227
729 PATH_SEGMENT@[1219; 1227) 729 PATH_SEGMENT@1219..1227
730 COLON2@[1219; 1221) "::" 730 COLON2@1219..1221 "::"
731 NAME_REF@[1221; 1227) 731 NAME_REF@1221..1227
732 IDENT@[1221; 1227) "c_void" 732 IDENT@1221..1227 "c_void"
733 COMMA@[1227; 1228) "," 733 COMMA@1227..1228 ","
734 WHITESPACE@[1228; 1229) " " 734 WHITESPACE@1228..1229 " "
735 PARAM@[1229; 1242) 735 PARAM@1229..1242
736 BIND_PAT@[1229; 1232) 736 BIND_PAT@1229..1232
737 NAME@[1229; 1232) 737 NAME@1229..1232
738 IDENT@[1229; 1232) "len" 738 IDENT@1229..1232 "len"
739 COLON@[1232; 1233) ":" 739 COLON@1232..1233 ":"
740 WHITESPACE@[1233; 1234) " " 740 WHITESPACE@1233..1234 " "
741 PATH_TYPE@[1234; 1242) 741 PATH_TYPE@1234..1242
742 PATH@[1234; 1242) 742 PATH@1234..1242
743 PATH_SEGMENT@[1234; 1242) 743 PATH_SEGMENT@1234..1242
744 COLON2@[1234; 1236) "::" 744 COLON2@1234..1236 "::"
745 NAME_REF@[1236; 1242) 745 NAME_REF@1236..1242
746 IDENT@[1236; 1242) "size_t" 746 IDENT@1236..1242 "size_t"
747 COMMA@[1242; 1243) "," 747 COMMA@1242..1243 ","
748 WHITESPACE@[1243; 1260) "\n " 748 WHITESPACE@1243..1260 "\n "
749 PARAM@[1260; 1274) 749 PARAM@1260..1274
750 BIND_PAT@[1260; 1265) 750 BIND_PAT@1260..1265
751 NAME@[1260; 1265) 751 NAME@1260..1265
752 IDENT@[1260; 1265) "flags" 752 IDENT@1260..1265 "flags"
753 COLON@[1265; 1266) ":" 753 COLON@1265..1266 ":"
754 WHITESPACE@[1266; 1267) " " 754 WHITESPACE@1266..1267 " "
755 PATH_TYPE@[1267; 1274) 755 PATH_TYPE@1267..1274
756 PATH@[1267; 1274) 756 PATH@1267..1274
757 PATH_SEGMENT@[1267; 1274) 757 PATH_SEGMENT@1267..1274
758 COLON2@[1267; 1269) "::" 758 COLON2@1267..1269 "::"
759 NAME_REF@[1269; 1274) 759 NAME_REF@1269..1274
760 IDENT@[1269; 1274) "c_int" 760 IDENT@1269..1274 "c_int"
761 R_PAREN@[1274; 1275) ")" 761 R_PAREN@1274..1275 ")"
762 WHITESPACE@[1275; 1276) " " 762 WHITESPACE@1275..1276 " "
763 RET_TYPE@[1276; 1288) 763 RET_TYPE@1276..1288
764 THIN_ARROW@[1276; 1278) "->" 764 THIN_ARROW@1276..1278 "->"
765 WHITESPACE@[1278; 1279) " " 765 WHITESPACE@1278..1279 " "
766 PATH_TYPE@[1279; 1288) 766 PATH_TYPE@1279..1288
767 PATH@[1279; 1288) 767 PATH@1279..1288
768 PATH_SEGMENT@[1279; 1288) 768 PATH_SEGMENT@1279..1288
769 COLON2@[1279; 1281) "::" 769 COLON2@1279..1281 "::"
770 NAME_REF@[1281; 1288) 770 NAME_REF@1281..1288
771 IDENT@[1281; 1288) "ssize_t" 771 IDENT@1281..1288 "ssize_t"
772 SEMICOLON@[1288; 1289) ";" 772 SEMICOLON@1288..1289 ";"
773 WHITESPACE@[1289; 1294) "\n " 773 WHITESPACE@1289..1294 "\n "
774 FN_DEF@[1294; 1481) 774 FN_DEF@1294..1481
775 VISIBILITY@[1294; 1297) 775 VISIBILITY@1294..1297
776 PUB_KW@[1294; 1297) "pub" 776 PUB_KW@1294..1297 "pub"
777 WHITESPACE@[1297; 1298) " " 777 WHITESPACE@1297..1298 " "
778 FN_KW@[1298; 1300) "fn" 778 FN_KW@1298..1300 "fn"
779 WHITESPACE@[1300; 1301) " " 779 WHITESPACE@1300..1301 " "
780 NAME@[1301; 1309) 780 NAME@1301..1309
781 IDENT@[1301; 1309) "recvfrom" 781 IDENT@1301..1309 "recvfrom"
782 PARAM_LIST@[1309; 1467) 782 PARAM_LIST@1309..1467
783 L_PAREN@[1309; 1310) "(" 783 L_PAREN@1309..1310 "("
784 PARAM@[1310; 1325) 784 PARAM@1310..1325
785 BIND_PAT@[1310; 1316) 785 BIND_PAT@1310..1316
786 NAME@[1310; 1316) 786 NAME@1310..1316
787 IDENT@[1310; 1316) "socket" 787 IDENT@1310..1316 "socket"
788 COLON@[1316; 1317) ":" 788 COLON@1316..1317 ":"
789 WHITESPACE@[1317; 1318) " " 789 WHITESPACE@1317..1318 " "
790 PATH_TYPE@[1318; 1325) 790 PATH_TYPE@1318..1325
791 PATH@[1318; 1325) 791 PATH@1318..1325
792 PATH_SEGMENT@[1318; 1325) 792 PATH_SEGMENT@1318..1325
793 COLON2@[1318; 1320) "::" 793 COLON2@1318..1320 "::"
794 NAME_REF@[1320; 1325) 794 NAME_REF@1320..1325
795 IDENT@[1320; 1325) "c_int" 795 IDENT@1320..1325 "c_int"
796 COMMA@[1325; 1326) "," 796 COMMA@1325..1326 ","
797 WHITESPACE@[1326; 1327) " " 797 WHITESPACE@1326..1327 " "
798 PARAM@[1327; 1345) 798 PARAM@1327..1345
799 BIND_PAT@[1327; 1330) 799 BIND_PAT@1327..1330
800 NAME@[1327; 1330) 800 NAME@1327..1330
801 IDENT@[1327; 1330) "buf" 801 IDENT@1327..1330 "buf"
802 COLON@[1330; 1331) ":" 802 COLON@1330..1331 ":"
803 WHITESPACE@[1331; 1332) " " 803 WHITESPACE@1331..1332 " "
804 POINTER_TYPE@[1332; 1345) 804 POINTER_TYPE@1332..1345
805 STAR@[1332; 1333) "*" 805 STAR@1332..1333 "*"
806 MUT_KW@[1333; 1336) "mut" 806 MUT_KW@1333..1336 "mut"
807 WHITESPACE@[1336; 1337) " " 807 WHITESPACE@1336..1337 " "
808 PATH_TYPE@[1337; 1345) 808 PATH_TYPE@1337..1345
809 PATH@[1337; 1345) 809 PATH@1337..1345
810 PATH_SEGMENT@[1337; 1345) 810 PATH_SEGMENT@1337..1345
811 COLON2@[1337; 1339) "::" 811 COLON2@1337..1339 "::"
812 NAME_REF@[1339; 1345) 812 NAME_REF@1339..1345
813 IDENT@[1339; 1345) "c_void" 813 IDENT@1339..1345 "c_void"
814 COMMA@[1345; 1346) "," 814 COMMA@1345..1346 ","
815 WHITESPACE@[1346; 1347) " " 815 WHITESPACE@1346..1347 " "
816 PARAM@[1347; 1360) 816 PARAM@1347..1360
817 BIND_PAT@[1347; 1350) 817 BIND_PAT@1347..1350
818 NAME@[1347; 1350) 818 NAME@1347..1350
819 IDENT@[1347; 1350) "len" 819 IDENT@1347..1350 "len"
820 COLON@[1350; 1351) ":" 820 COLON@1350..1351 ":"
821 WHITESPACE@[1351; 1352) " " 821 WHITESPACE@1351..1352 " "
822 PATH_TYPE@[1352; 1360) 822 PATH_TYPE@1352..1360
823 PATH@[1352; 1360) 823 PATH@1352..1360
824 PATH_SEGMENT@[1352; 1360) 824 PATH_SEGMENT@1352..1360
825 COLON2@[1352; 1354) "::" 825 COLON2@1352..1354 "::"
826 NAME_REF@[1354; 1360) 826 NAME_REF@1354..1360
827 IDENT@[1354; 1360) "size_t" 827 IDENT@1354..1360 "size_t"
828 COMMA@[1360; 1361) "," 828 COMMA@1360..1361 ","
829 WHITESPACE@[1361; 1382) "\n " 829 WHITESPACE@1361..1382 "\n "
830 PARAM@[1382; 1396) 830 PARAM@1382..1396
831 BIND_PAT@[1382; 1387) 831 BIND_PAT@1382..1387
832 NAME@[1382; 1387) 832 NAME@1382..1387
833 IDENT@[1382; 1387) "flags" 833 IDENT@1382..1387 "flags"
834 COLON@[1387; 1388) ":" 834 COLON@1387..1388 ":"
835 WHITESPACE@[1388; 1389) " " 835 WHITESPACE@1388..1389 " "
836 PATH_TYPE@[1389; 1396) 836 PATH_TYPE@1389..1396
837 PATH@[1389; 1396) 837 PATH@1389..1396
838 PATH_SEGMENT@[1389; 1396) 838 PATH_SEGMENT@1389..1396
839 COLON2@[1389; 1391) "::" 839 COLON2@1389..1391 "::"
840 NAME_REF@[1391; 1396) 840 NAME_REF@1391..1396
841 IDENT@[1391; 1396) "c_int" 841 IDENT@1391..1396 "c_int"
842 COMMA@[1396; 1397) "," 842 COMMA@1396..1397 ","
843 WHITESPACE@[1397; 1398) " " 843 WHITESPACE@1397..1398 " "
844 PARAM@[1398; 1419) 844 PARAM@1398..1419
845 BIND_PAT@[1398; 1402) 845 BIND_PAT@1398..1402
846 NAME@[1398; 1402) 846 NAME@1398..1402
847 IDENT@[1398; 1402) "addr" 847 IDENT@1398..1402 "addr"
848 COLON@[1402; 1403) ":" 848 COLON@1402..1403 ":"
849 WHITESPACE@[1403; 1404) " " 849 WHITESPACE@1403..1404 " "
850 POINTER_TYPE@[1404; 1419) 850 POINTER_TYPE@1404..1419
851 STAR@[1404; 1405) "*" 851 STAR@1404..1405 "*"
852 MUT_KW@[1405; 1408) "mut" 852 MUT_KW@1405..1408 "mut"
853 WHITESPACE@[1408; 1409) " " 853 WHITESPACE@1408..1409 " "
854 PATH_TYPE@[1409; 1419) 854 PATH_TYPE@1409..1419
855 PATH@[1409; 1419) 855 PATH@1409..1419
856 PATH_SEGMENT@[1409; 1419) 856 PATH_SEGMENT@1409..1419
857 COLON2@[1409; 1411) "::" 857 COLON2@1409..1411 "::"
858 NAME_REF@[1411; 1419) 858 NAME_REF@1411..1419
859 IDENT@[1411; 1419) "sockaddr" 859 IDENT@1411..1419 "sockaddr"
860 COMMA@[1419; 1420) "," 860 COMMA@1419..1420 ","
861 WHITESPACE@[1420; 1441) "\n " 861 WHITESPACE@1420..1441 "\n "
862 PARAM@[1441; 1466) 862 PARAM@1441..1466
863 BIND_PAT@[1441; 1448) 863 BIND_PAT@1441..1448
864 NAME@[1441; 1448) 864 NAME@1441..1448
865 IDENT@[1441; 1448) "addrlen" 865 IDENT@1441..1448 "addrlen"
866 COLON@[1448; 1449) ":" 866 COLON@1448..1449 ":"
867 WHITESPACE@[1449; 1450) " " 867 WHITESPACE@1449..1450 " "
868 POINTER_TYPE@[1450; 1466) 868 POINTER_TYPE@1450..1466
869 STAR@[1450; 1451) "*" 869 STAR@1450..1451 "*"
870 MUT_KW@[1451; 1454) "mut" 870 MUT_KW@1451..1454 "mut"
871 WHITESPACE@[1454; 1455) " " 871 WHITESPACE@1454..1455 " "
872 PATH_TYPE@[1455; 1466) 872 PATH_TYPE@1455..1466
873 PATH@[1455; 1466) 873 PATH@1455..1466
874 PATH_SEGMENT@[1455; 1466) 874 PATH_SEGMENT@1455..1466
875 COLON2@[1455; 1457) "::" 875 COLON2@1455..1457 "::"
876 NAME_REF@[1457; 1466) 876 NAME_REF@1457..1466
877 IDENT@[1457; 1466) "socklen_t" 877 IDENT@1457..1466 "socklen_t"
878 R_PAREN@[1466; 1467) ")" 878 R_PAREN@1466..1467 ")"
879 WHITESPACE@[1467; 1468) " " 879 WHITESPACE@1467..1468 " "
880 RET_TYPE@[1468; 1480) 880 RET_TYPE@1468..1480
881 THIN_ARROW@[1468; 1470) "->" 881 THIN_ARROW@1468..1470 "->"
882 WHITESPACE@[1470; 1471) " " 882 WHITESPACE@1470..1471 " "
883 PATH_TYPE@[1471; 1480) 883 PATH_TYPE@1471..1480
884 PATH@[1471; 1480) 884 PATH@1471..1480
885 PATH_SEGMENT@[1471; 1480) 885 PATH_SEGMENT@1471..1480
886 COLON2@[1471; 1473) "::" 886 COLON2@1471..1473 "::"
887 NAME_REF@[1473; 1480) 887 NAME_REF@1473..1480
888 IDENT@[1473; 1480) "ssize_t" 888 IDENT@1473..1480 "ssize_t"
889 SEMICOLON@[1480; 1481) ";" 889 SEMICOLON@1480..1481 ";"
890 WHITESPACE@[1481; 1486) "\n " 890 WHITESPACE@1481..1486 "\n "
891 FN_DEF@[1486; 1595) 891 FN_DEF@1486..1595
892 VISIBILITY@[1486; 1489) 892 VISIBILITY@1486..1489
893 PUB_KW@[1486; 1489) "pub" 893 PUB_KW@1486..1489 "pub"
894 WHITESPACE@[1489; 1490) " " 894 WHITESPACE@1489..1490 " "
895 FN_KW@[1490; 1492) "fn" 895 FN_KW@1490..1492 "fn"
896 WHITESPACE@[1492; 1493) " " 896 WHITESPACE@1492..1493 " "
897 NAME@[1493; 1497) 897 NAME@1493..1497
898 IDENT@[1493; 1497) "recv" 898 IDENT@1493..1497 "recv"
899 PARAM_LIST@[1497; 1581) 899 PARAM_LIST@1497..1581
900 L_PAREN@[1497; 1498) "(" 900 L_PAREN@1497..1498 "("
901 PARAM@[1498; 1513) 901 PARAM@1498..1513
902 BIND_PAT@[1498; 1504) 902 BIND_PAT@1498..1504
903 NAME@[1498; 1504) 903 NAME@1498..1504
904 IDENT@[1498; 1504) "socket" 904 IDENT@1498..1504 "socket"
905 COLON@[1504; 1505) ":" 905 COLON@1504..1505 ":"
906 WHITESPACE@[1505; 1506) " " 906 WHITESPACE@1505..1506 " "
907 PATH_TYPE@[1506; 1513) 907 PATH_TYPE@1506..1513
908 PATH@[1506; 1513) 908 PATH@1506..1513
909 PATH_SEGMENT@[1506; 1513) 909 PATH_SEGMENT@1506..1513
910 COLON2@[1506; 1508) "::" 910 COLON2@1506..1508 "::"
911 NAME_REF@[1508; 1513) 911 NAME_REF@1508..1513
912 IDENT@[1508; 1513) "c_int" 912 IDENT@1508..1513 "c_int"
913 COMMA@[1513; 1514) "," 913 COMMA@1513..1514 ","
914 WHITESPACE@[1514; 1515) " " 914 WHITESPACE@1514..1515 " "
915 PARAM@[1515; 1533) 915 PARAM@1515..1533
916 BIND_PAT@[1515; 1518) 916 BIND_PAT@1515..1518
917 NAME@[1515; 1518) 917 NAME@1515..1518
918 IDENT@[1515; 1518) "buf" 918 IDENT@1515..1518 "buf"
919 COLON@[1518; 1519) ":" 919 COLON@1518..1519 ":"
920 WHITESPACE@[1519; 1520) " " 920 WHITESPACE@1519..1520 " "
921 POINTER_TYPE@[1520; 1533) 921 POINTER_TYPE@1520..1533
922 STAR@[1520; 1521) "*" 922 STAR@1520..1521 "*"
923 MUT_KW@[1521; 1524) "mut" 923 MUT_KW@1521..1524 "mut"
924 WHITESPACE@[1524; 1525) " " 924 WHITESPACE@1524..1525 " "
925 PATH_TYPE@[1525; 1533) 925 PATH_TYPE@1525..1533
926 PATH@[1525; 1533) 926 PATH@1525..1533
927 PATH_SEGMENT@[1525; 1533) 927 PATH_SEGMENT@1525..1533
928 COLON2@[1525; 1527) "::" 928 COLON2@1525..1527 "::"
929 NAME_REF@[1527; 1533) 929 NAME_REF@1527..1533
930 IDENT@[1527; 1533) "c_void" 930 IDENT@1527..1533 "c_void"
931 COMMA@[1533; 1534) "," 931 COMMA@1533..1534 ","
932 WHITESPACE@[1534; 1535) " " 932 WHITESPACE@1534..1535 " "
933 PARAM@[1535; 1548) 933 PARAM@1535..1548
934 BIND_PAT@[1535; 1538) 934 BIND_PAT@1535..1538
935 NAME@[1535; 1538) 935 NAME@1535..1538
936 IDENT@[1535; 1538) "len" 936 IDENT@1535..1538 "len"
937 COLON@[1538; 1539) ":" 937 COLON@1538..1539 ":"
938 WHITESPACE@[1539; 1540) " " 938 WHITESPACE@1539..1540 " "
939 PATH_TYPE@[1540; 1548) 939 PATH_TYPE@1540..1548
940 PATH@[1540; 1548) 940 PATH@1540..1548
941 PATH_SEGMENT@[1540; 1548) 941 PATH_SEGMENT@1540..1548
942 COLON2@[1540; 1542) "::" 942 COLON2@1540..1542 "::"
943 NAME_REF@[1542; 1548) 943 NAME_REF@1542..1548
944 IDENT@[1542; 1548) "size_t" 944 IDENT@1542..1548 "size_t"
945 COMMA@[1548; 1549) "," 945 COMMA@1548..1549 ","
946 WHITESPACE@[1549; 1566) "\n " 946 WHITESPACE@1549..1566 "\n "
947 PARAM@[1566; 1580) 947 PARAM@1566..1580
948 BIND_PAT@[1566; 1571) 948 BIND_PAT@1566..1571
949 NAME@[1566; 1571) 949 NAME@1566..1571
950 IDENT@[1566; 1571) "flags" 950 IDENT@1566..1571 "flags"
951 COLON@[1571; 1572) ":" 951 COLON@1571..1572 ":"
952 WHITESPACE@[1572; 1573) " " 952 WHITESPACE@1572..1573 " "
953 PATH_TYPE@[1573; 1580) 953 PATH_TYPE@1573..1580
954 PATH@[1573; 1580) 954 PATH@1573..1580
955 PATH_SEGMENT@[1573; 1580) 955 PATH_SEGMENT@1573..1580
956 COLON2@[1573; 1575) "::" 956 COLON2@1573..1575 "::"
957 NAME_REF@[1575; 1580) 957 NAME_REF@1575..1580
958 IDENT@[1575; 1580) "c_int" 958 IDENT@1575..1580 "c_int"
959 R_PAREN@[1580; 1581) ")" 959 R_PAREN@1580..1581 ")"
960 WHITESPACE@[1581; 1582) " " 960 WHITESPACE@1581..1582 " "
961 RET_TYPE@[1582; 1594) 961 RET_TYPE@1582..1594
962 THIN_ARROW@[1582; 1584) "->" 962 THIN_ARROW@1582..1584 "->"
963 WHITESPACE@[1584; 1585) " " 963 WHITESPACE@1584..1585 " "
964 PATH_TYPE@[1585; 1594) 964 PATH_TYPE@1585..1594
965 PATH@[1585; 1594) 965 PATH@1585..1594
966 PATH_SEGMENT@[1585; 1594) 966 PATH_SEGMENT@1585..1594
967 COLON2@[1585; 1587) "::" 967 COLON2@1585..1587 "::"
968 NAME_REF@[1587; 1594) 968 NAME_REF@1587..1594
969 IDENT@[1587; 1594) "ssize_t" 969 IDENT@1587..1594 "ssize_t"
970 SEMICOLON@[1594; 1595) ";" 970 SEMICOLON@1594..1595 ";"
971 WHITESPACE@[1595; 1596) "\n" 971 WHITESPACE@1595..1596 "\n"
972 R_CURLY@[1596; 1597) "}" 972 R_CURLY@1596..1597 "}"
973 WHITESPACE@[1597; 1598) "\n" 973 WHITESPACE@1597..1598 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast b/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast
index f71cf5b6c..68eb16bbd 100644
--- a/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast
@@ -1,91 +1,91 @@
1SOURCE_FILE@[0; 116) 1SOURCE_FILE@0..116
2 FN_DEF@[0; 115) 2 FN_DEF@0..115
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 21) 5 NAME@3..21
6 IDENT@[3; 21) "test_serialization" 6 IDENT@3..21 "test_serialization"
7 TYPE_PARAM_LIST@[21; 26) 7 TYPE_PARAM_LIST@21..26
8 L_ANGLE@[21; 22) "<" 8 L_ANGLE@21..22 "<"
9 TYPE_PARAM@[22; 25) 9 TYPE_PARAM@22..25
10 NAME@[22; 25) 10 NAME@22..25
11 IDENT@[22; 25) "SER" 11 IDENT@22..25 "SER"
12 R_ANGLE@[25; 26) ">" 12 R_ANGLE@25..26 ">"
13 PARAM_LIST@[26; 28) 13 PARAM_LIST@26..28
14 L_PAREN@[26; 27) "(" 14 L_PAREN@26..27 "("
15 R_PAREN@[27; 28) ")" 15 R_PAREN@27..28 ")"
16 WHITESPACE@[28; 29) "\n" 16 WHITESPACE@28..29 "\n"
17 WHERE_CLAUSE@[29; 112) 17 WHERE_CLAUSE@29..112
18 WHERE_KW@[29; 34) "where" 18 WHERE_KW@29..34 "where"
19 WHITESPACE@[34; 39) "\n " 19 WHITESPACE@34..39 "\n "
20 WHERE_PRED@[39; 111) 20 WHERE_PRED@39..111
21 PATH_TYPE@[39; 42) 21 PATH_TYPE@39..42
22 PATH@[39; 42) 22 PATH@39..42
23 PATH_SEGMENT@[39; 42) 23 PATH_SEGMENT@39..42
24 NAME_REF@[39; 42) 24 NAME_REF@39..42
25 IDENT@[39; 42) "SER" 25 IDENT@39..42 "SER"
26 COLON@[42; 43) ":" 26 COLON@42..43 ":"
27 WHITESPACE@[43; 44) " " 27 WHITESPACE@43..44 " "
28 TYPE_BOUND_LIST@[44; 111) 28 TYPE_BOUND_LIST@44..111
29 TYPE_BOUND@[44; 53) 29 TYPE_BOUND@44..53
30 PATH_TYPE@[44; 53) 30 PATH_TYPE@44..53
31 PATH@[44; 53) 31 PATH@44..53
32 PATH_SEGMENT@[44; 53) 32 PATH_SEGMENT@44..53
33 NAME_REF@[44; 53) 33 NAME_REF@44..53
34 IDENT@[44; 53) "Serialize" 34 IDENT@44..53 "Serialize"
35 WHITESPACE@[53; 54) " " 35 WHITESPACE@53..54 " "
36 PLUS@[54; 55) "+" 36 PLUS@54..55 "+"
37 WHITESPACE@[55; 56) " " 37 WHITESPACE@55..56 " "
38 TYPE_BOUND@[56; 81) 38 TYPE_BOUND@56..81
39 FOR_TYPE@[56; 81) 39 FOR_TYPE@56..81
40 FOR_KW@[56; 59) "for" 40 FOR_KW@56..59 "for"
41 TYPE_PARAM_LIST@[59; 64) 41 TYPE_PARAM_LIST@59..64
42 L_ANGLE@[59; 60) "<" 42 L_ANGLE@59..60 "<"
43 LIFETIME_PARAM@[60; 63) 43 LIFETIME_PARAM@60..63
44 LIFETIME@[60; 63) "\'de" 44 LIFETIME@60..63 "\'de"
45 R_ANGLE@[63; 64) ">" 45 R_ANGLE@63..64 ">"
46 WHITESPACE@[64; 65) " " 46 WHITESPACE@64..65 " "
47 PATH_TYPE@[65; 81) 47 PATH_TYPE@65..81
48 PATH@[65; 81) 48 PATH@65..81
49 PATH_SEGMENT@[65; 81) 49 PATH_SEGMENT@65..81
50 NAME_REF@[65; 76) 50 NAME_REF@65..76
51 IDENT@[65; 76) "Deserialize" 51 IDENT@65..76 "Deserialize"
52 TYPE_ARG_LIST@[76; 81) 52 TYPE_ARG_LIST@76..81
53 L_ANGLE@[76; 77) "<" 53 L_ANGLE@76..77 "<"
54 LIFETIME_ARG@[77; 80) 54 LIFETIME_ARG@77..80
55 LIFETIME@[77; 80) "\'de" 55 LIFETIME@77..80 "\'de"
56 R_ANGLE@[80; 81) ">" 56 R_ANGLE@80..81 ">"
57 WHITESPACE@[81; 82) " " 57 WHITESPACE@81..82 " "
58 PLUS@[82; 83) "+" 58 PLUS@82..83 "+"
59 WHITESPACE@[83; 84) " " 59 WHITESPACE@83..84 " "
60 TYPE_BOUND@[84; 93) 60 TYPE_BOUND@84..93
61 PATH_TYPE@[84; 93) 61 PATH_TYPE@84..93
62 PATH@[84; 93) 62 PATH@84..93
63 PATH_SEGMENT@[84; 93) 63 PATH_SEGMENT@84..93
64 NAME_REF@[84; 93) 64 NAME_REF@84..93
65 IDENT@[84; 93) "PartialEq" 65 IDENT@84..93 "PartialEq"
66 WHITESPACE@[93; 94) " " 66 WHITESPACE@93..94 " "
67 PLUS@[94; 95) "+" 67 PLUS@94..95 "+"
68 WHITESPACE@[95; 96) " " 68 WHITESPACE@95..96 " "
69 TYPE_BOUND@[96; 111) 69 TYPE_BOUND@96..111
70 PATH_TYPE@[96; 111) 70 PATH_TYPE@96..111
71 PATH@[96; 111) 71 PATH@96..111
72 PATH@[96; 104) 72 PATH@96..104
73 PATH@[96; 99) 73 PATH@96..99
74 PATH_SEGMENT@[96; 99) 74 PATH_SEGMENT@96..99
75 NAME_REF@[96; 99) 75 NAME_REF@96..99
76 IDENT@[96; 99) "std" 76 IDENT@96..99 "std"
77 COLON2@[99; 101) "::" 77 COLON2@99..101 "::"
78 PATH_SEGMENT@[101; 104) 78 PATH_SEGMENT@101..104
79 NAME_REF@[101; 104) 79 NAME_REF@101..104
80 IDENT@[101; 104) "fmt" 80 IDENT@101..104 "fmt"
81 COLON2@[104; 106) "::" 81 COLON2@104..106 "::"
82 PATH_SEGMENT@[106; 111) 82 PATH_SEGMENT@106..111
83 NAME_REF@[106; 111) 83 NAME_REF@106..111
84 IDENT@[106; 111) "Debug" 84 IDENT@106..111 "Debug"
85 COMMA@[111; 112) "," 85 COMMA@111..112 ","
86 WHITESPACE@[112; 113) "\n" 86 WHITESPACE@112..113 "\n"
87 BLOCK_EXPR@[113; 115) 87 BLOCK_EXPR@113..115
88 BLOCK@[113; 115) 88 BLOCK@113..115
89 L_CURLY@[113; 114) "{" 89 L_CURLY@113..114 "{"
90 R_CURLY@[114; 115) "}" 90 R_CURLY@114..115 "}"
91 WHITESPACE@[115; 116) "\n" 91 WHITESPACE@115..116 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast b/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast
index 8af41caa0..3977faa60 100644
--- a/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast
@@ -1,220 +1,220 @@
1SOURCE_FILE@[0; 506) 1SOURCE_FILE@0..506
2 FN_DEF@[0; 505) 2 FN_DEF@0..505
3 COMMENT@[0; 33) "// format with label ..." 3 COMMENT@0..33 "// format with label ..."
4 WHITESPACE@[33; 34) "\n" 4 WHITESPACE@33..34 "\n"
5 FN_KW@[34; 36) "fn" 5 FN_KW@34..36 "fn"
6 WHITESPACE@[36; 37) " " 6 WHITESPACE@36..37 " "
7 NAME@[37; 41) 7 NAME@37..41
8 IDENT@[37; 41) "main" 8 IDENT@37..41 "main"
9 PARAM_LIST@[41; 43) 9 PARAM_LIST@41..43
10 L_PAREN@[41; 42) "(" 10 L_PAREN@41..42 "("
11 R_PAREN@[42; 43) ")" 11 R_PAREN@42..43 ")"
12 WHITESPACE@[43; 44) " " 12 WHITESPACE@43..44 " "
13 BLOCK_EXPR@[44; 505) 13 BLOCK_EXPR@44..505
14 BLOCK@[44; 505) 14 BLOCK@44..505
15 L_CURLY@[44; 45) "{" 15 L_CURLY@44..45 "{"
16 WHITESPACE@[45; 50) "\n " 16 WHITESPACE@45..50 "\n "
17 EXPR_STMT@[50; 66) 17 EXPR_STMT@50..66
18 BLOCK_EXPR@[50; 66) 18 BLOCK_EXPR@50..66
19 LABEL@[50; 63) 19 LABEL@50..63
20 LIFETIME@[50; 62) "\'empty_block" 20 LIFETIME@50..62 "\'empty_block"
21 COLON@[62; 63) ":" 21 COLON@62..63 ":"
22 WHITESPACE@[63; 64) " " 22 WHITESPACE@63..64 " "
23 BLOCK@[64; 66) 23 BLOCK@64..66
24 L_CURLY@[64; 65) "{" 24 L_CURLY@64..65 "{"
25 R_CURLY@[65; 66) "}" 25 R_CURLY@65..66 "}"
26 WHITESPACE@[66; 72) "\n\n " 26 WHITESPACE@66..72 "\n\n "
27 EXPR_STMT@[72; 295) 27 EXPR_STMT@72..295
28 BLOCK_EXPR@[72; 295) 28 BLOCK_EXPR@72..295
29 LABEL@[72; 79) 29 LABEL@72..79
30 LIFETIME@[72; 78) "\'block" 30 LIFETIME@72..78 "\'block"
31 COLON@[78; 79) ":" 31 COLON@78..79 ":"
32 WHITESPACE@[79; 80) " " 32 WHITESPACE@79..80 " "
33 BLOCK@[80; 295) 33 BLOCK@80..295
34 L_CURLY@[80; 81) "{" 34 L_CURLY@80..81 "{"
35 WHITESPACE@[81; 90) "\n " 35 WHITESPACE@81..90 "\n "
36 EXPR_STMT@[90; 101) 36 EXPR_STMT@90..101
37 CALL_EXPR@[90; 100) 37 CALL_EXPR@90..100
38 PATH_EXPR@[90; 98) 38 PATH_EXPR@90..98
39 PATH@[90; 98) 39 PATH@90..98
40 PATH_SEGMENT@[90; 98) 40 PATH_SEGMENT@90..98
41 NAME_REF@[90; 98) 41 NAME_REF@90..98
42 IDENT@[90; 98) "do_thing" 42 IDENT@90..98 "do_thing"
43 ARG_LIST@[98; 100) 43 ARG_LIST@98..100
44 L_PAREN@[98; 99) "(" 44 L_PAREN@98..99 "("
45 R_PAREN@[99; 100) ")" 45 R_PAREN@99..100 ")"
46 SEMICOLON@[100; 101) ";" 46 SEMICOLON@100..101 ";"
47 WHITESPACE@[101; 110) "\n " 47 WHITESPACE@101..110 "\n "
48 EXPR_STMT@[110; 170) 48 EXPR_STMT@110..170
49 IF_EXPR@[110; 170) 49 IF_EXPR@110..170
50 IF_KW@[110; 112) "if" 50 IF_KW@110..112 "if"
51 WHITESPACE@[112; 113) " " 51 WHITESPACE@112..113 " "
52 CONDITION@[113; 132) 52 CONDITION@113..132
53 CALL_EXPR@[113; 132) 53 CALL_EXPR@113..132
54 PATH_EXPR@[113; 130) 54 PATH_EXPR@113..130
55 PATH@[113; 130) 55 PATH@113..130
56 PATH_SEGMENT@[113; 130) 56 PATH_SEGMENT@113..130
57 NAME_REF@[113; 130) 57 NAME_REF@113..130
58 IDENT@[113; 130) "condition_not_met" 58 IDENT@113..130 "condition_not_met"
59 ARG_LIST@[130; 132) 59 ARG_LIST@130..132
60 L_PAREN@[130; 131) "(" 60 L_PAREN@130..131 "("
61 R_PAREN@[131; 132) ")" 61 R_PAREN@131..132 ")"
62 WHITESPACE@[132; 133) " " 62 WHITESPACE@132..133 " "
63 BLOCK_EXPR@[133; 170) 63 BLOCK_EXPR@133..170
64 BLOCK@[133; 170) 64 BLOCK@133..170
65 L_CURLY@[133; 134) "{" 65 L_CURLY@133..134 "{"
66 WHITESPACE@[134; 147) "\n " 66 WHITESPACE@134..147 "\n "
67 EXPR_STMT@[147; 160) 67 EXPR_STMT@147..160
68 BREAK_EXPR@[147; 159) 68 BREAK_EXPR@147..159
69 BREAK_KW@[147; 152) "break" 69 BREAK_KW@147..152 "break"
70 WHITESPACE@[152; 153) " " 70 WHITESPACE@152..153 " "
71 LIFETIME@[153; 159) "\'block" 71 LIFETIME@153..159 "\'block"
72 SEMICOLON@[159; 160) ";" 72 SEMICOLON@159..160 ";"
73 WHITESPACE@[160; 169) "\n " 73 WHITESPACE@160..169 "\n "
74 R_CURLY@[169; 170) "}" 74 R_CURLY@169..170 "}"
75 WHITESPACE@[170; 179) "\n " 75 WHITESPACE@170..179 "\n "
76 EXPR_STMT@[179; 195) 76 EXPR_STMT@179..195
77 CALL_EXPR@[179; 194) 77 CALL_EXPR@179..194
78 PATH_EXPR@[179; 192) 78 PATH_EXPR@179..192
79 PATH@[179; 192) 79 PATH@179..192
80 PATH_SEGMENT@[179; 192) 80 PATH_SEGMENT@179..192
81 NAME_REF@[179; 192) 81 NAME_REF@179..192
82 IDENT@[179; 192) "do_next_thing" 82 IDENT@179..192 "do_next_thing"
83 ARG_LIST@[192; 194) 83 ARG_LIST@192..194
84 L_PAREN@[192; 193) "(" 84 L_PAREN@192..193 "("
85 R_PAREN@[193; 194) ")" 85 R_PAREN@193..194 ")"
86 SEMICOLON@[194; 195) ";" 86 SEMICOLON@194..195 ";"
87 WHITESPACE@[195; 204) "\n " 87 WHITESPACE@195..204 "\n "
88 EXPR_STMT@[204; 264) 88 EXPR_STMT@204..264
89 IF_EXPR@[204; 264) 89 IF_EXPR@204..264
90 IF_KW@[204; 206) "if" 90 IF_KW@204..206 "if"
91 WHITESPACE@[206; 207) " " 91 WHITESPACE@206..207 " "
92 CONDITION@[207; 226) 92 CONDITION@207..226
93 CALL_EXPR@[207; 226) 93 CALL_EXPR@207..226
94 PATH_EXPR@[207; 224) 94 PATH_EXPR@207..224
95 PATH@[207; 224) 95 PATH@207..224
96 PATH_SEGMENT@[207; 224) 96 PATH_SEGMENT@207..224
97 NAME_REF@[207; 224) 97 NAME_REF@207..224
98 IDENT@[207; 224) "condition_not_met" 98 IDENT@207..224 "condition_not_met"
99 ARG_LIST@[224; 226) 99 ARG_LIST@224..226
100 L_PAREN@[224; 225) "(" 100 L_PAREN@224..225 "("
101 R_PAREN@[225; 226) ")" 101 R_PAREN@225..226 ")"
102 WHITESPACE@[226; 227) " " 102 WHITESPACE@226..227 " "
103 BLOCK_EXPR@[227; 264) 103 BLOCK_EXPR@227..264
104 BLOCK@[227; 264) 104 BLOCK@227..264
105 L_CURLY@[227; 228) "{" 105 L_CURLY@227..228 "{"
106 WHITESPACE@[228; 241) "\n " 106 WHITESPACE@228..241 "\n "
107 EXPR_STMT@[241; 254) 107 EXPR_STMT@241..254
108 BREAK_EXPR@[241; 253) 108 BREAK_EXPR@241..253
109 BREAK_KW@[241; 246) "break" 109 BREAK_KW@241..246 "break"
110 WHITESPACE@[246; 247) " " 110 WHITESPACE@246..247 " "
111 LIFETIME@[247; 253) "\'block" 111 LIFETIME@247..253 "\'block"
112 SEMICOLON@[253; 254) ";" 112 SEMICOLON@253..254 ";"
113 WHITESPACE@[254; 263) "\n " 113 WHITESPACE@254..263 "\n "
114 R_CURLY@[263; 264) "}" 114 R_CURLY@263..264 "}"
115 WHITESPACE@[264; 273) "\n " 115 WHITESPACE@264..273 "\n "
116 EXPR_STMT@[273; 289) 116 EXPR_STMT@273..289
117 CALL_EXPR@[273; 288) 117 CALL_EXPR@273..288
118 PATH_EXPR@[273; 286) 118 PATH_EXPR@273..286
119 PATH@[273; 286) 119 PATH@273..286
120 PATH_SEGMENT@[273; 286) 120 PATH_SEGMENT@273..286
121 NAME_REF@[273; 286) 121 NAME_REF@273..286
122 IDENT@[273; 286) "do_last_thing" 122 IDENT@273..286 "do_last_thing"
123 ARG_LIST@[286; 288) 123 ARG_LIST@286..288
124 L_PAREN@[286; 287) "(" 124 L_PAREN@286..287 "("
125 R_PAREN@[287; 288) ")" 125 R_PAREN@287..288 ")"
126 SEMICOLON@[288; 289) ";" 126 SEMICOLON@288..289 ";"
127 WHITESPACE@[289; 294) "\n " 127 WHITESPACE@289..294 "\n "
128 R_CURLY@[294; 295) "}" 128 R_CURLY@294..295 "}"
129 WHITESPACE@[295; 301) "\n\n " 129 WHITESPACE@295..301 "\n\n "
130 LET_STMT@[301; 503) 130 LET_STMT@301..503
131 LET_KW@[301; 304) "let" 131 LET_KW@301..304 "let"
132 WHITESPACE@[304; 305) " " 132 WHITESPACE@304..305 " "
133 BIND_PAT@[305; 311) 133 BIND_PAT@305..311
134 NAME@[305; 311) 134 NAME@305..311
135 IDENT@[305; 311) "result" 135 IDENT@305..311 "result"
136 WHITESPACE@[311; 312) " " 136 WHITESPACE@311..312 " "
137 EQ@[312; 313) "=" 137 EQ@312..313 "="
138 WHITESPACE@[313; 314) " " 138 WHITESPACE@313..314 " "
139 BLOCK_EXPR@[314; 502) 139 BLOCK_EXPR@314..502
140 LABEL@[314; 321) 140 LABEL@314..321
141 LIFETIME@[314; 320) "\'block" 141 LIFETIME@314..320 "\'block"
142 COLON@[320; 321) ":" 142 COLON@320..321 ":"
143 WHITESPACE@[321; 322) " " 143 WHITESPACE@321..322 " "
144 BLOCK@[322; 502) 144 BLOCK@322..502
145 L_CURLY@[322; 323) "{" 145 L_CURLY@322..323 "{"
146 WHITESPACE@[323; 332) "\n " 146 WHITESPACE@323..332 "\n "
147 EXPR_STMT@[332; 403) 147 EXPR_STMT@332..403
148 IF_EXPR@[332; 403) 148 IF_EXPR@332..403
149 IF_KW@[332; 334) "if" 149 IF_KW@332..334 "if"
150 WHITESPACE@[334; 335) " " 150 WHITESPACE@334..335 " "
151 CONDITION@[335; 340) 151 CONDITION@335..340
152 CALL_EXPR@[335; 340) 152 CALL_EXPR@335..340
153 PATH_EXPR@[335; 338) 153 PATH_EXPR@335..338
154 PATH@[335; 338) 154 PATH@335..338
155 PATH_SEGMENT@[335; 338) 155 PATH_SEGMENT@335..338
156 NAME_REF@[335; 338) 156 NAME_REF@335..338
157 IDENT@[335; 338) "foo" 157 IDENT@335..338 "foo"
158 ARG_LIST@[338; 340) 158 ARG_LIST@338..340
159 L_PAREN@[338; 339) "(" 159 L_PAREN@338..339 "("
160 R_PAREN@[339; 340) ")" 160 R_PAREN@339..340 ")"
161 WHITESPACE@[340; 341) " " 161 WHITESPACE@340..341 " "
162 BLOCK_EXPR@[341; 403) 162 BLOCK_EXPR@341..403
163 BLOCK@[341; 403) 163 BLOCK@341..403
164 L_CURLY@[341; 342) "{" 164 L_CURLY@341..342 "{"
165 WHITESPACE@[342; 355) "\n " 165 WHITESPACE@342..355 "\n "
166 COMMENT@[355; 365) "// comment" 166 COMMENT@355..365 "// comment"
167 WHITESPACE@[365; 378) "\n " 167 WHITESPACE@365..378 "\n "
168 EXPR_STMT@[378; 393) 168 EXPR_STMT@378..393
169 BREAK_EXPR@[378; 392) 169 BREAK_EXPR@378..392
170 BREAK_KW@[378; 383) "break" 170 BREAK_KW@378..383 "break"
171 WHITESPACE@[383; 384) " " 171 WHITESPACE@383..384 " "
172 LIFETIME@[384; 390) "\'block" 172 LIFETIME@384..390 "\'block"
173 WHITESPACE@[390; 391) " " 173 WHITESPACE@390..391 " "
174 LITERAL@[391; 392) 174 LITERAL@391..392
175 INT_NUMBER@[391; 392) "1" 175 INT_NUMBER@391..392 "1"
176 SEMICOLON@[392; 393) ";" 176 SEMICOLON@392..393 ";"
177 WHITESPACE@[393; 402) "\n " 177 WHITESPACE@393..402 "\n "
178 R_CURLY@[402; 403) "}" 178 R_CURLY@402..403 "}"
179 WHITESPACE@[403; 412) "\n " 179 WHITESPACE@403..412 "\n "
180 EXPR_STMT@[412; 486) 180 EXPR_STMT@412..486
181 IF_EXPR@[412; 486) 181 IF_EXPR@412..486
182 IF_KW@[412; 414) "if" 182 IF_KW@412..414 "if"
183 WHITESPACE@[414; 415) " " 183 WHITESPACE@414..415 " "
184 CONDITION@[415; 420) 184 CONDITION@415..420
185 CALL_EXPR@[415; 420) 185 CALL_EXPR@415..420
186 PATH_EXPR@[415; 418) 186 PATH_EXPR@415..418
187 PATH@[415; 418) 187 PATH@415..418
188 PATH_SEGMENT@[415; 418) 188 PATH_SEGMENT@415..418
189 NAME_REF@[415; 418) 189 NAME_REF@415..418
190 IDENT@[415; 418) "bar" 190 IDENT@415..418 "bar"
191 ARG_LIST@[418; 420) 191 ARG_LIST@418..420
192 L_PAREN@[418; 419) "(" 192 L_PAREN@418..419 "("
193 R_PAREN@[419; 420) ")" 193 R_PAREN@419..420 ")"
194 WHITESPACE@[420; 421) " " 194 WHITESPACE@420..421 " "
195 BLOCK_EXPR@[421; 486) 195 BLOCK_EXPR@421..486
196 BLOCK@[421; 486) 196 BLOCK@421..486
197 L_CURLY@[421; 422) "{" 197 L_CURLY@421..422 "{"
198 WHITESPACE@[422; 435) "\n " 198 WHITESPACE@422..435 "\n "
199 COMMENT@[435; 448) "/* comment */" 199 COMMENT@435..448 "/* comment */"
200 WHITESPACE@[448; 461) "\n " 200 WHITESPACE@448..461 "\n "
201 EXPR_STMT@[461; 476) 201 EXPR_STMT@461..476
202 BREAK_EXPR@[461; 475) 202 BREAK_EXPR@461..475
203 BREAK_KW@[461; 466) "break" 203 BREAK_KW@461..466 "break"
204 WHITESPACE@[466; 467) " " 204 WHITESPACE@466..467 " "
205 LIFETIME@[467; 473) "\'block" 205 LIFETIME@467..473 "\'block"
206 WHITESPACE@[473; 474) " " 206 WHITESPACE@473..474 " "
207 LITERAL@[474; 475) 207 LITERAL@474..475
208 INT_NUMBER@[474; 475) "2" 208 INT_NUMBER@474..475 "2"
209 SEMICOLON@[475; 476) ";" 209 SEMICOLON@475..476 ";"
210 WHITESPACE@[476; 485) "\n " 210 WHITESPACE@476..485 "\n "
211 R_CURLY@[485; 486) "}" 211 R_CURLY@485..486 "}"
212 WHITESPACE@[486; 495) "\n " 212 WHITESPACE@486..495 "\n "
213 LITERAL@[495; 496) 213 LITERAL@495..496
214 INT_NUMBER@[495; 496) "3" 214 INT_NUMBER@495..496 "3"
215 WHITESPACE@[496; 501) "\n " 215 WHITESPACE@496..501 "\n "
216 R_CURLY@[501; 502) "}" 216 R_CURLY@501..502 "}"
217 SEMICOLON@[502; 503) ";" 217 SEMICOLON@502..503 ";"
218 WHITESPACE@[503; 504) "\n" 218 WHITESPACE@503..504 "\n"
219 R_CURLY@[504; 505) "}" 219 R_CURLY@504..505 "}"
220 WHITESPACE@[505; 506) "\n" 220 WHITESPACE@505..506 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast b/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast
index beaa96388..3b9e8c71c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 62) 1SOURCE_FILE@0..62
2 FN_DEF@[0; 61) 2 FN_DEF@0..61
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 61) 11 BLOCK_EXPR@10..61
12 BLOCK@[10; 61) 12 BLOCK@10..61
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 59) 15 EXPR_STMT@16..59
16 CALL_EXPR@[16; 58) 16 CALL_EXPR@16..58
17 PATH_EXPR@[16; 26) 17 PATH_EXPR@16..26
18 PATH@[16; 26) 18 PATH@16..26
19 PATH_SEGMENT@[16; 26) 19 PATH_SEGMENT@16..26
20 NAME_REF@[16; 26) 20 NAME_REF@16..26
21 IDENT@[16; 26) "make_query" 21 IDENT@16..26 "make_query"
22 ARG_LIST@[26; 58) 22 ARG_LIST@26..58
23 L_PAREN@[26; 27) "(" 23 L_PAREN@26..27 "("
24 PATH_EXPR@[27; 57) 24 PATH_EXPR@27..57
25 PATH@[27; 57) 25 PATH@27..57
26 PATH@[27; 44) 26 PATH@27..44
27 PATH@[27; 32) 27 PATH@27..32
28 PATH_SEGMENT@[27; 32) 28 PATH_SEGMENT@27..32
29 CRATE_KW@[27; 32) "crate" 29 CRATE_KW@27..32 "crate"
30 COLON2@[32; 34) "::" 30 COLON2@32..34 "::"
31 PATH_SEGMENT@[34; 44) 31 PATH_SEGMENT@34..44
32 NAME_REF@[34; 44) 32 NAME_REF@34..44
33 IDENT@[34; 44) "module_map" 33 IDENT@34..44 "module_map"
34 COLON2@[44; 46) "::" 34 COLON2@44..46 "::"
35 PATH_SEGMENT@[46; 57) 35 PATH_SEGMENT@46..57
36 NAME_REF@[46; 57) 36 NAME_REF@46..57
37 IDENT@[46; 57) "module_tree" 37 IDENT@46..57 "module_tree"
38 R_PAREN@[57; 58) ")" 38 R_PAREN@57..58 ")"
39 SEMICOLON@[58; 59) ";" 39 SEMICOLON@58..59 ";"
40 WHITESPACE@[59; 60) "\n" 40 WHITESPACE@59..60 "\n"
41 R_CURLY@[60; 61) "}" 41 R_CURLY@60..61 "}"
42 WHITESPACE@[61; 62) "\n" 42 WHITESPACE@61..62 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast b/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast
index 7143a31a5..9af689635 100644
--- a/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast
@@ -1,2329 +1,2329 @@
1SOURCE_FILE@[0; 3813) 1SOURCE_FILE@0..3813
2 COMMENT@[0; 55) "//! Adapted from a `r ..." 2 COMMENT@0..55 "//! Adapted from a `r ..."
3 WHITESPACE@[55; 56) "\n" 3 WHITESPACE@55..56 "\n"
4 COMMENT@[56; 173) "//! https://github.co ..." 4 COMMENT@56..173 "//! https://github.co ..."
5 WHITESPACE@[173; 174) "\n" 5 WHITESPACE@173..174 "\n"
6 COMMENT@[174; 178) "//! " 6 COMMENT@174..178 "//! "
7 WHITESPACE@[178; 179) "\n" 7 WHITESPACE@178..179 "\n"
8 COMMENT@[179; 269) "//! Reported to rust- ..." 8 COMMENT@179..269 "//! Reported to rust- ..."
9 WHITESPACE@[269; 271) "\n\n" 9 WHITESPACE@269..271 "\n\n"
10 ATTR@[271; 302) 10 ATTR@271..302
11 POUND@[271; 272) "#" 11 POUND@271..272 "#"
12 BANG@[272; 273) "!" 12 BANG@272..273 "!"
13 L_BRACK@[273; 274) "[" 13 L_BRACK@273..274 "["
14 PATH@[274; 279) 14 PATH@274..279
15 PATH_SEGMENT@[274; 279) 15 PATH_SEGMENT@274..279
16 NAME_REF@[274; 279) 16 NAME_REF@274..279
17 IDENT@[274; 279) "allow" 17 IDENT@274..279 "allow"
18 TOKEN_TREE@[279; 301) 18 TOKEN_TREE@279..301
19 L_PAREN@[279; 280) "(" 19 L_PAREN@279..280 "("
20 IDENT@[280; 300) "non_camel_case_types" 20 IDENT@280..300 "non_camel_case_types"
21 R_PAREN@[300; 301) ")" 21 R_PAREN@300..301 ")"
22 R_BRACK@[301; 302) "]" 22 R_BRACK@301..302 "]"
23 WHITESPACE@[302; 303) "\n" 23 WHITESPACE@302..303 "\n"
24 ATTR@[303; 323) 24 ATTR@303..323
25 POUND@[303; 304) "#" 25 POUND@303..304 "#"
26 BANG@[304; 305) "!" 26 BANG@304..305 "!"
27 L_BRACK@[305; 306) "[" 27 L_BRACK@305..306 "["
28 PATH@[306; 311) 28 PATH@306..311
29 PATH_SEGMENT@[306; 311) 29 PATH_SEGMENT@306..311
30 NAME_REF@[306; 311) 30 NAME_REF@306..311
31 IDENT@[306; 311) "allow" 31 IDENT@306..311 "allow"
32 TOKEN_TREE@[311; 322) 32 TOKEN_TREE@311..322
33 L_PAREN@[311; 312) "(" 33 L_PAREN@311..312 "("
34 IDENT@[312; 321) "dead_code" 34 IDENT@312..321 "dead_code"
35 R_PAREN@[321; 322) ")" 35 R_PAREN@321..322 ")"
36 R_BRACK@[322; 323) "]" 36 R_BRACK@322..323 "]"
37 WHITESPACE@[323; 324) "\n" 37 WHITESPACE@323..324 "\n"
38 ATTR@[324; 351) 38 ATTR@324..351
39 POUND@[324; 325) "#" 39 POUND@324..325 "#"
40 BANG@[325; 326) "!" 40 BANG@325..326 "!"
41 L_BRACK@[326; 327) "[" 41 L_BRACK@326..327 "["
42 PATH@[327; 332) 42 PATH@327..332
43 PATH_SEGMENT@[327; 332) 43 PATH_SEGMENT@327..332
44 NAME_REF@[327; 332) 44 NAME_REF@327..332
45 IDENT@[327; 332) "allow" 45 IDENT@327..332 "allow"
46 TOKEN_TREE@[332; 350) 46 TOKEN_TREE@332..350
47 L_PAREN@[332; 333) "(" 47 L_PAREN@332..333 "("
48 IDENT@[333; 349) "unreachable_code" 48 IDENT@333..349 "unreachable_code"
49 R_PAREN@[349; 350) ")" 49 R_PAREN@349..350 ")"
50 R_BRACK@[350; 351) "]" 50 R_BRACK@350..351 "]"
51 WHITESPACE@[351; 352) "\n" 51 WHITESPACE@351..352 "\n"
52 ATTR@[352; 376) 52 ATTR@352..376
53 POUND@[352; 353) "#" 53 POUND@352..353 "#"
54 BANG@[353; 354) "!" 54 BANG@353..354 "!"
55 L_BRACK@[354; 355) "[" 55 L_BRACK@354..355 "["
56 PATH@[355; 360) 56 PATH@355..360
57 PATH_SEGMENT@[355; 360) 57 PATH_SEGMENT@355..360
58 NAME_REF@[355; 360) 58 NAME_REF@355..360
59 IDENT@[355; 360) "allow" 59 IDENT@355..360 "allow"
60 TOKEN_TREE@[360; 375) 60 TOKEN_TREE@360..375
61 L_PAREN@[360; 361) "(" 61 L_PAREN@360..361 "("
62 IDENT@[361; 374) "unused_parens" 62 IDENT@361..374 "unused_parens"
63 R_PAREN@[374; 375) ")" 63 R_PAREN@374..375 ")"
64 R_BRACK@[375; 376) "]" 64 R_BRACK@375..376 "]"
65 WHITESPACE@[376; 378) "\n\n" 65 WHITESPACE@376..378 "\n\n"
66 ATTR@[378; 405) 66 ATTR@378..405
67 POUND@[378; 379) "#" 67 POUND@378..379 "#"
68 BANG@[379; 380) "!" 68 BANG@379..380 "!"
69 L_BRACK@[380; 381) "[" 69 L_BRACK@380..381 "["
70 PATH@[381; 396) 70 PATH@381..396
71 PATH_SEGMENT@[381; 396) 71 PATH_SEGMENT@381..396
72 NAME_REF@[381; 396) 72 NAME_REF@381..396
73 IDENT@[381; 396) "recursion_limit" 73 IDENT@381..396 "recursion_limit"
74 WHITESPACE@[396; 397) " " 74 WHITESPACE@396..397 " "
75 EQ@[397; 398) "=" 75 EQ@397..398 "="
76 WHITESPACE@[398; 399) " " 76 WHITESPACE@398..399 " "
77 LITERAL@[399; 404) 77 LITERAL@399..404
78 STRING@[399; 404) "\"128\"" 78 STRING@399..404 "\"128\""
79 R_BRACK@[404; 405) "]" 79 R_BRACK@404..405 "]"
80 WHITESPACE@[405; 407) "\n\n" 80 WHITESPACE@405..407 "\n\n"
81 USE_ITEM@[407; 427) 81 USE_ITEM@407..427
82 USE_KW@[407; 410) "use" 82 USE_KW@407..410 "use"
83 WHITESPACE@[410; 411) " " 83 WHITESPACE@410..411 " "
84 USE_TREE@[411; 426) 84 USE_TREE@411..426
85 PATH@[411; 426) 85 PATH@411..426
86 PATH@[411; 420) 86 PATH@411..420
87 PATH@[411; 414) 87 PATH@411..414
88 PATH_SEGMENT@[411; 414) 88 PATH_SEGMENT@411..414
89 NAME_REF@[411; 414) 89 NAME_REF@411..414
90 IDENT@[411; 414) "std" 90 IDENT@411..414 "std"
91 COLON2@[414; 416) "::" 91 COLON2@414..416 "::"
92 PATH_SEGMENT@[416; 420) 92 PATH_SEGMENT@416..420
93 NAME_REF@[416; 420) 93 NAME_REF@416..420
94 IDENT@[416; 420) "cell" 94 IDENT@416..420 "cell"
95 COLON2@[420; 422) "::" 95 COLON2@420..422 "::"
96 PATH_SEGMENT@[422; 426) 96 PATH_SEGMENT@422..426
97 NAME_REF@[422; 426) 97 NAME_REF@422..426
98 IDENT@[422; 426) "Cell" 98 IDENT@422..426 "Cell"
99 SEMICOLON@[426; 427) ";" 99 SEMICOLON@426..427 ";"
100 WHITESPACE@[427; 428) "\n" 100 WHITESPACE@427..428 "\n"
101 USE_ITEM@[428; 447) 101 USE_ITEM@428..447
102 USE_KW@[428; 431) "use" 102 USE_KW@428..431 "use"
103 WHITESPACE@[431; 432) " " 103 WHITESPACE@431..432 " "
104 USE_TREE@[432; 446) 104 USE_TREE@432..446
105 PATH@[432; 446) 105 PATH@432..446
106 PATH@[432; 440) 106 PATH@432..440
107 PATH@[432; 435) 107 PATH@432..435
108 PATH_SEGMENT@[432; 435) 108 PATH_SEGMENT@432..435
109 NAME_REF@[432; 435) 109 NAME_REF@432..435
110 IDENT@[432; 435) "std" 110 IDENT@432..435 "std"
111 COLON2@[435; 437) "::" 111 COLON2@435..437 "::"
112 PATH_SEGMENT@[437; 440) 112 PATH_SEGMENT@437..440
113 NAME_REF@[437; 440) 113 NAME_REF@437..440
114 IDENT@[437; 440) "mem" 114 IDENT@437..440 "mem"
115 COLON2@[440; 442) "::" 115 COLON2@440..442 "::"
116 PATH_SEGMENT@[442; 446) 116 PATH_SEGMENT@442..446
117 NAME_REF@[442; 446) 117 NAME_REF@442..446
118 IDENT@[442; 446) "swap" 118 IDENT@442..446 "swap"
119 SEMICOLON@[446; 447) ";" 119 SEMICOLON@446..447 ";"
120 WHITESPACE@[447; 449) "\n\n" 120 WHITESPACE@447..449 "\n\n"
121 COMMENT@[449; 518) "// Just a grab bag of ..." 121 COMMENT@449..518 "// Just a grab bag of ..."
122 WHITESPACE@[518; 520) "\n\n" 122 WHITESPACE@518..520 "\n\n"
123 FN_DEF@[520; 572) 123 FN_DEF@520..572
124 FN_KW@[520; 522) "fn" 124 FN_KW@520..522 "fn"
125 WHITESPACE@[522; 523) " " 125 WHITESPACE@522..523 " "
126 NAME@[523; 530) 126 NAME@523..530
127 IDENT@[523; 530) "strange" 127 IDENT@523..530 "strange"
128 PARAM_LIST@[530; 532) 128 PARAM_LIST@530..532
129 L_PAREN@[530; 531) "(" 129 L_PAREN@530..531 "("
130 R_PAREN@[531; 532) ")" 130 R_PAREN@531..532 ")"
131 WHITESPACE@[532; 533) " " 131 WHITESPACE@532..533 " "
132 RET_TYPE@[533; 540) 132 RET_TYPE@533..540
133 THIN_ARROW@[533; 535) "->" 133 THIN_ARROW@533..535 "->"
134 WHITESPACE@[535; 536) " " 134 WHITESPACE@535..536 " "
135 PATH_TYPE@[536; 540) 135 PATH_TYPE@536..540
136 PATH@[536; 540) 136 PATH@536..540
137 PATH_SEGMENT@[536; 540) 137 PATH_SEGMENT@536..540
138 NAME_REF@[536; 540) 138 NAME_REF@536..540
139 IDENT@[536; 540) "bool" 139 IDENT@536..540 "bool"
140 WHITESPACE@[540; 541) " " 140 WHITESPACE@540..541 " "
141 BLOCK_EXPR@[541; 572) 141 BLOCK_EXPR@541..572
142 BLOCK@[541; 572) 142 BLOCK@541..572
143 L_CURLY@[541; 542) "{" 143 L_CURLY@541..542 "{"
144 WHITESPACE@[542; 543) " " 144 WHITESPACE@542..543 " "
145 LET_STMT@[543; 570) 145 LET_STMT@543..570
146 LET_KW@[543; 546) "let" 146 LET_KW@543..546 "let"
147 WHITESPACE@[546; 547) " " 147 WHITESPACE@546..547 " "
148 BIND_PAT@[547; 549) 148 BIND_PAT@547..549
149 NAME@[547; 549) 149 NAME@547..549
150 IDENT@[547; 549) "_x" 150 IDENT@547..549 "_x"
151 COLON@[549; 550) ":" 151 COLON@549..550 ":"
152 WHITESPACE@[550; 551) " " 152 WHITESPACE@550..551 " "
153 PATH_TYPE@[551; 555) 153 PATH_TYPE@551..555
154 PATH@[551; 555) 154 PATH@551..555
155 PATH_SEGMENT@[551; 555) 155 PATH_SEGMENT@551..555
156 NAME_REF@[551; 555) 156 NAME_REF@551..555
157 IDENT@[551; 555) "bool" 157 IDENT@551..555 "bool"
158 WHITESPACE@[555; 556) " " 158 WHITESPACE@555..556 " "
159 EQ@[556; 557) "=" 159 EQ@556..557 "="
160 WHITESPACE@[557; 558) " " 160 WHITESPACE@557..558 " "
161 RETURN_EXPR@[558; 569) 161 RETURN_EXPR@558..569
162 RETURN_KW@[558; 564) "return" 162 RETURN_KW@558..564 "return"
163 WHITESPACE@[564; 565) " " 163 WHITESPACE@564..565 " "
164 LITERAL@[565; 569) 164 LITERAL@565..569
165 TRUE_KW@[565; 569) "true" 165 TRUE_KW@565..569 "true"
166 SEMICOLON@[569; 570) ";" 166 SEMICOLON@569..570 ";"
167 WHITESPACE@[570; 571) " " 167 WHITESPACE@570..571 " "
168 R_CURLY@[571; 572) "}" 168 R_CURLY@571..572 "}"
169 WHITESPACE@[572; 574) "\n\n" 169 WHITESPACE@572..574 "\n\n"
170 FN_DEF@[574; 624) 170 FN_DEF@574..624
171 FN_KW@[574; 576) "fn" 171 FN_KW@574..576 "fn"
172 WHITESPACE@[576; 577) " " 172 WHITESPACE@576..577 " "
173 NAME@[577; 582) 173 NAME@577..582
174 IDENT@[577; 582) "funny" 174 IDENT@577..582 "funny"
175 PARAM_LIST@[582; 584) 175 PARAM_LIST@582..584
176 L_PAREN@[582; 583) "(" 176 L_PAREN@582..583 "("
177 R_PAREN@[583; 584) ")" 177 R_PAREN@583..584 ")"
178 WHITESPACE@[584; 585) " " 178 WHITESPACE@584..585 " "
179 BLOCK_EXPR@[585; 624) 179 BLOCK_EXPR@585..624
180 BLOCK@[585; 624) 180 BLOCK@585..624
181 L_CURLY@[585; 586) "{" 181 L_CURLY@585..586 "{"
182 WHITESPACE@[586; 591) "\n " 182 WHITESPACE@586..591 "\n "
183 FN_DEF@[591; 607) 183 FN_DEF@591..607
184 FN_KW@[591; 593) "fn" 184 FN_KW@591..593 "fn"
185 WHITESPACE@[593; 594) " " 185 WHITESPACE@593..594 " "
186 NAME@[594; 595) 186 NAME@594..595
187 IDENT@[594; 595) "f" 187 IDENT@594..595 "f"
188 PARAM_LIST@[595; 603) 188 PARAM_LIST@595..603
189 L_PAREN@[595; 596) "(" 189 L_PAREN@595..596 "("
190 PARAM@[596; 602) 190 PARAM@596..602
191 BIND_PAT@[596; 598) 191 BIND_PAT@596..598
192 NAME@[596; 598) 192 NAME@596..598
193 IDENT@[596; 598) "_x" 193 IDENT@596..598 "_x"
194 COLON@[598; 599) ":" 194 COLON@598..599 ":"
195 WHITESPACE@[599; 600) " " 195 WHITESPACE@599..600 " "
196 TUPLE_TYPE@[600; 602) 196 TUPLE_TYPE@600..602
197 L_PAREN@[600; 601) "(" 197 L_PAREN@600..601 "("
198 R_PAREN@[601; 602) ")" 198 R_PAREN@601..602 ")"
199 R_PAREN@[602; 603) ")" 199 R_PAREN@602..603 ")"
200 WHITESPACE@[603; 604) " " 200 WHITESPACE@603..604 " "
201 BLOCK_EXPR@[604; 607) 201 BLOCK_EXPR@604..607
202 BLOCK@[604; 607) 202 BLOCK@604..607
203 L_CURLY@[604; 605) "{" 203 L_CURLY@604..605 "{"
204 WHITESPACE@[605; 606) " " 204 WHITESPACE@605..606 " "
205 R_CURLY@[606; 607) "}" 205 R_CURLY@606..607 "}"
206 WHITESPACE@[607; 612) "\n " 206 WHITESPACE@607..612 "\n "
207 EXPR_STMT@[612; 622) 207 EXPR_STMT@612..622
208 CALL_EXPR@[612; 621) 208 CALL_EXPR@612..621
209 PATH_EXPR@[612; 613) 209 PATH_EXPR@612..613
210 PATH@[612; 613) 210 PATH@612..613
211 PATH_SEGMENT@[612; 613) 211 PATH_SEGMENT@612..613
212 NAME_REF@[612; 613) 212 NAME_REF@612..613
213 IDENT@[612; 613) "f" 213 IDENT@612..613 "f"
214 ARG_LIST@[613; 621) 214 ARG_LIST@613..621
215 L_PAREN@[613; 614) "(" 215 L_PAREN@613..614 "("
216 RETURN_EXPR@[614; 620) 216 RETURN_EXPR@614..620
217 RETURN_KW@[614; 620) "return" 217 RETURN_KW@614..620 "return"
218 R_PAREN@[620; 621) ")" 218 R_PAREN@620..621 ")"
219 SEMICOLON@[621; 622) ";" 219 SEMICOLON@621..622 ";"
220 WHITESPACE@[622; 623) "\n" 220 WHITESPACE@622..623 "\n"
221 R_CURLY@[623; 624) "}" 221 R_CURLY@623..624 "}"
222 WHITESPACE@[624; 626) "\n\n" 222 WHITESPACE@624..626 "\n\n"
223 FN_DEF@[626; 816) 223 FN_DEF@626..816
224 FN_KW@[626; 628) "fn" 224 FN_KW@626..628 "fn"
225 WHITESPACE@[628; 629) " " 225 WHITESPACE@628..629 " "
226 NAME@[629; 633) 226 NAME@629..633
227 IDENT@[629; 633) "what" 227 IDENT@629..633 "what"
228 PARAM_LIST@[633; 635) 228 PARAM_LIST@633..635
229 L_PAREN@[633; 634) "(" 229 L_PAREN@633..634 "("
230 R_PAREN@[634; 635) ")" 230 R_PAREN@634..635 ")"
231 WHITESPACE@[635; 636) " " 231 WHITESPACE@635..636 " "
232 BLOCK_EXPR@[636; 816) 232 BLOCK_EXPR@636..816
233 BLOCK@[636; 816) 233 BLOCK@636..816
234 L_CURLY@[636; 637) "{" 234 L_CURLY@636..637 "{"
235 WHITESPACE@[637; 642) "\n " 235 WHITESPACE@637..642 "\n "
236 FN_DEF@[642; 720) 236 FN_DEF@642..720
237 FN_KW@[642; 644) "fn" 237 FN_KW@642..644 "fn"
238 WHITESPACE@[644; 645) " " 238 WHITESPACE@644..645 " "
239 NAME@[645; 648) 239 NAME@645..648
240 IDENT@[645; 648) "the" 240 IDENT@645..648 "the"
241 PARAM_LIST@[648; 664) 241 PARAM_LIST@648..664
242 L_PAREN@[648; 649) "(" 242 L_PAREN@648..649 "("
243 PARAM@[649; 663) 243 PARAM@649..663
244 BIND_PAT@[649; 650) 244 BIND_PAT@649..650
245 NAME@[649; 650) 245 NAME@649..650
246 IDENT@[649; 650) "x" 246 IDENT@649..650 "x"
247 COLON@[650; 651) ":" 247 COLON@650..651 ":"
248 WHITESPACE@[651; 652) " " 248 WHITESPACE@651..652 " "
249 REFERENCE_TYPE@[652; 663) 249 REFERENCE_TYPE@652..663
250 AMP@[652; 653) "&" 250 AMP@652..653 "&"
251 PATH_TYPE@[653; 663) 251 PATH_TYPE@653..663
252 PATH@[653; 663) 252 PATH@653..663
253 PATH_SEGMENT@[653; 663) 253 PATH_SEGMENT@653..663
254 NAME_REF@[653; 657) 254 NAME_REF@653..657
255 IDENT@[653; 657) "Cell" 255 IDENT@653..657 "Cell"
256 TYPE_ARG_LIST@[657; 663) 256 TYPE_ARG_LIST@657..663
257 L_ANGLE@[657; 658) "<" 257 L_ANGLE@657..658 "<"
258 TYPE_ARG@[658; 662) 258 TYPE_ARG@658..662
259 PATH_TYPE@[658; 662) 259 PATH_TYPE@658..662
260 PATH@[658; 662) 260 PATH@658..662
261 PATH_SEGMENT@[658; 662) 261 PATH_SEGMENT@658..662
262 NAME_REF@[658; 662) 262 NAME_REF@658..662
263 IDENT@[658; 662) "bool" 263 IDENT@658..662 "bool"
264 R_ANGLE@[662; 663) ">" 264 R_ANGLE@662..663 ">"
265 R_PAREN@[663; 664) ")" 265 R_PAREN@663..664 ")"
266 WHITESPACE@[664; 665) " " 266 WHITESPACE@664..665 " "
267 BLOCK_EXPR@[665; 720) 267 BLOCK_EXPR@665..720
268 BLOCK@[665; 720) 268 BLOCK@665..720
269 L_CURLY@[665; 666) "{" 269 L_CURLY@665..666 "{"
270 WHITESPACE@[666; 675) "\n " 270 WHITESPACE@666..675 "\n "
271 EXPR_STMT@[675; 714) 271 EXPR_STMT@675..714
272 RETURN_EXPR@[675; 713) 272 RETURN_EXPR@675..713
273 RETURN_KW@[675; 681) "return" 273 RETURN_KW@675..681 "return"
274 WHITESPACE@[681; 682) " " 274 WHITESPACE@681..682 " "
275 WHILE_EXPR@[682; 713) 275 WHILE_EXPR@682..713
276 WHILE_KW@[682; 687) "while" 276 WHILE_KW@682..687 "while"
277 WHITESPACE@[687; 688) " " 277 WHITESPACE@687..688 " "
278 CONDITION@[688; 696) 278 CONDITION@688..696
279 PREFIX_EXPR@[688; 696) 279 PREFIX_EXPR@688..696
280 BANG@[688; 689) "!" 280 BANG@688..689 "!"
281 METHOD_CALL_EXPR@[689; 696) 281 METHOD_CALL_EXPR@689..696
282 PATH_EXPR@[689; 690) 282 PATH_EXPR@689..690
283 PATH@[689; 690) 283 PATH@689..690
284 PATH_SEGMENT@[689; 690) 284 PATH_SEGMENT@689..690
285 NAME_REF@[689; 690) 285 NAME_REF@689..690
286 IDENT@[689; 690) "x" 286 IDENT@689..690 "x"
287 DOT@[690; 691) "." 287 DOT@690..691 "."
288 NAME_REF@[691; 694) 288 NAME_REF@691..694
289 IDENT@[691; 694) "get" 289 IDENT@691..694 "get"
290 ARG_LIST@[694; 696) 290 ARG_LIST@694..696
291 L_PAREN@[694; 695) "(" 291 L_PAREN@694..695 "("
292 R_PAREN@[695; 696) ")" 292 R_PAREN@695..696 ")"
293 WHITESPACE@[696; 697) " " 293 WHITESPACE@696..697 " "
294 BLOCK_EXPR@[697; 713) 294 BLOCK_EXPR@697..713
295 BLOCK@[697; 713) 295 BLOCK@697..713
296 L_CURLY@[697; 698) "{" 296 L_CURLY@697..698 "{"
297 WHITESPACE@[698; 699) " " 297 WHITESPACE@698..699 " "
298 EXPR_STMT@[699; 711) 298 EXPR_STMT@699..711
299 METHOD_CALL_EXPR@[699; 710) 299 METHOD_CALL_EXPR@699..710
300 PATH_EXPR@[699; 700) 300 PATH_EXPR@699..700
301 PATH@[699; 700) 301 PATH@699..700
302 PATH_SEGMENT@[699; 700) 302 PATH_SEGMENT@699..700
303 NAME_REF@[699; 700) 303 NAME_REF@699..700
304 IDENT@[699; 700) "x" 304 IDENT@699..700 "x"
305 DOT@[700; 701) "." 305 DOT@700..701 "."
306 NAME_REF@[701; 704) 306 NAME_REF@701..704
307 IDENT@[701; 704) "set" 307 IDENT@701..704 "set"
308 ARG_LIST@[704; 710) 308 ARG_LIST@704..710
309 L_PAREN@[704; 705) "(" 309 L_PAREN@704..705 "("
310 LITERAL@[705; 709) 310 LITERAL@705..709
311 TRUE_KW@[705; 709) "true" 311 TRUE_KW@705..709 "true"
312 R_PAREN@[709; 710) ")" 312 R_PAREN@709..710 ")"
313 SEMICOLON@[710; 711) ";" 313 SEMICOLON@710..711 ";"
314 WHITESPACE@[711; 712) " " 314 WHITESPACE@711..712 " "
315 R_CURLY@[712; 713) "}" 315 R_CURLY@712..713 "}"
316 SEMICOLON@[713; 714) ";" 316 SEMICOLON@713..714 ";"
317 WHITESPACE@[714; 719) "\n " 317 WHITESPACE@714..719 "\n "
318 R_CURLY@[719; 720) "}" 318 R_CURLY@719..720 "}"
319 WHITESPACE@[720; 725) "\n " 319 WHITESPACE@720..725 "\n "
320 LET_STMT@[725; 751) 320 LET_STMT@725..751
321 LET_KW@[725; 728) "let" 321 LET_KW@725..728 "let"
322 WHITESPACE@[728; 729) " " 322 WHITESPACE@728..729 " "
323 BIND_PAT@[729; 730) 323 BIND_PAT@729..730
324 NAME@[729; 730) 324 NAME@729..730
325 IDENT@[729; 730) "i" 325 IDENT@729..730 "i"
326 WHITESPACE@[730; 731) " " 326 WHITESPACE@730..731 " "
327 EQ@[731; 732) "=" 327 EQ@731..732 "="
328 WHITESPACE@[732; 733) " " 328 WHITESPACE@732..733 " "
329 REF_EXPR@[733; 750) 329 REF_EXPR@733..750
330 AMP@[733; 734) "&" 330 AMP@733..734 "&"
331 CALL_EXPR@[734; 750) 331 CALL_EXPR@734..750
332 PATH_EXPR@[734; 743) 332 PATH_EXPR@734..743
333 PATH@[734; 743) 333 PATH@734..743
334 PATH@[734; 738) 334 PATH@734..738
335 PATH_SEGMENT@[734; 738) 335 PATH_SEGMENT@734..738
336 NAME_REF@[734; 738) 336 NAME_REF@734..738
337 IDENT@[734; 738) "Cell" 337 IDENT@734..738 "Cell"
338 COLON2@[738; 740) "::" 338 COLON2@738..740 "::"
339 PATH_SEGMENT@[740; 743) 339 PATH_SEGMENT@740..743
340 NAME_REF@[740; 743) 340 NAME_REF@740..743
341 IDENT@[740; 743) "new" 341 IDENT@740..743 "new"
342 ARG_LIST@[743; 750) 342 ARG_LIST@743..750
343 L_PAREN@[743; 744) "(" 343 L_PAREN@743..744 "("
344 LITERAL@[744; 749) 344 LITERAL@744..749
345 FALSE_KW@[744; 749) "false" 345 FALSE_KW@744..749 "false"
346 R_PAREN@[749; 750) ")" 346 R_PAREN@749..750 ")"
347 SEMICOLON@[750; 751) ";" 347 SEMICOLON@750..751 ";"
348 WHITESPACE@[751; 756) "\n " 348 WHITESPACE@751..756 "\n "
349 LET_STMT@[756; 778) 349 LET_STMT@756..778
350 LET_KW@[756; 759) "let" 350 LET_KW@756..759 "let"
351 WHITESPACE@[759; 760) " " 351 WHITESPACE@759..760 " "
352 BIND_PAT@[760; 764) 352 BIND_PAT@760..764
353 NAME@[760; 764) 353 NAME@760..764
354 IDENT@[760; 764) "dont" 354 IDENT@760..764 "dont"
355 WHITESPACE@[764; 765) " " 355 WHITESPACE@764..765 " "
356 EQ@[765; 766) "=" 356 EQ@765..766 "="
357 WHITESPACE@[766; 767) " " 357 WHITESPACE@766..767 " "
358 BLOCK_EXPR@[767; 777) 358 BLOCK_EXPR@767..777
359 BLOCK@[767; 777) 359 BLOCK@767..777
360 L_CURLY@[767; 768) "{" 360 L_CURLY@767..768 "{"
361 LAMBDA_EXPR@[768; 776) 361 LAMBDA_EXPR@768..776
362 PARAM_LIST@[768; 770) 362 PARAM_LIST@768..770
363 PIPE@[768; 769) "|" 363 PIPE@768..769 "|"
364 PIPE@[769; 770) "|" 364 PIPE@769..770 "|"
365 CALL_EXPR@[770; 776) 365 CALL_EXPR@770..776
366 PATH_EXPR@[770; 773) 366 PATH_EXPR@770..773
367 PATH@[770; 773) 367 PATH@770..773
368 PATH_SEGMENT@[770; 773) 368 PATH_SEGMENT@770..773
369 NAME_REF@[770; 773) 369 NAME_REF@770..773
370 IDENT@[770; 773) "the" 370 IDENT@770..773 "the"
371 ARG_LIST@[773; 776) 371 ARG_LIST@773..776
372 L_PAREN@[773; 774) "(" 372 L_PAREN@773..774 "("
373 PATH_EXPR@[774; 775) 373 PATH_EXPR@774..775
374 PATH@[774; 775) 374 PATH@774..775
375 PATH_SEGMENT@[774; 775) 375 PATH_SEGMENT@774..775
376 NAME_REF@[774; 775) 376 NAME_REF@774..775
377 IDENT@[774; 775) "i" 377 IDENT@774..775 "i"
378 R_PAREN@[775; 776) ")" 378 R_PAREN@775..776 ")"
379 R_CURLY@[776; 777) "}" 379 R_CURLY@776..777 "}"
380 SEMICOLON@[777; 778) ";" 380 SEMICOLON@777..778 ";"
381 WHITESPACE@[778; 783) "\n " 381 WHITESPACE@778..783 "\n "
382 EXPR_STMT@[783; 790) 382 EXPR_STMT@783..790
383 CALL_EXPR@[783; 789) 383 CALL_EXPR@783..789
384 PATH_EXPR@[783; 787) 384 PATH_EXPR@783..787
385 PATH@[783; 787) 385 PATH@783..787
386 PATH_SEGMENT@[783; 787) 386 PATH_SEGMENT@783..787
387 NAME_REF@[783; 787) 387 NAME_REF@783..787
388 IDENT@[783; 787) "dont" 388 IDENT@783..787 "dont"
389 ARG_LIST@[787; 789) 389 ARG_LIST@787..789
390 L_PAREN@[787; 788) "(" 390 L_PAREN@787..788 "("
391 R_PAREN@[788; 789) ")" 391 R_PAREN@788..789 ")"
392 SEMICOLON@[789; 790) ";" 392 SEMICOLON@789..790 ";"
393 WHITESPACE@[790; 795) "\n " 393 WHITESPACE@790..795 "\n "
394 EXPR_STMT@[795; 814) 394 EXPR_STMT@795..814
395 MACRO_CALL@[795; 813) 395 MACRO_CALL@795..813
396 PATH@[795; 801) 396 PATH@795..801
397 PATH_SEGMENT@[795; 801) 397 PATH_SEGMENT@795..801
398 NAME_REF@[795; 801) 398 NAME_REF@795..801
399 IDENT@[795; 801) "assert" 399 IDENT@795..801 "assert"
400 BANG@[801; 802) "!" 400 BANG@801..802 "!"
401 TOKEN_TREE@[802; 813) 401 TOKEN_TREE@802..813
402 L_PAREN@[802; 803) "(" 402 L_PAREN@802..803 "("
403 TOKEN_TREE@[803; 812) 403 TOKEN_TREE@803..812
404 L_PAREN@[803; 804) "(" 404 L_PAREN@803..804 "("
405 IDENT@[804; 805) "i" 405 IDENT@804..805 "i"
406 DOT@[805; 806) "." 406 DOT@805..806 "."
407 IDENT@[806; 809) "get" 407 IDENT@806..809 "get"
408 TOKEN_TREE@[809; 811) 408 TOKEN_TREE@809..811
409 L_PAREN@[809; 810) "(" 409 L_PAREN@809..810 "("
410 R_PAREN@[810; 811) ")" 410 R_PAREN@810..811 ")"
411 R_PAREN@[811; 812) ")" 411 R_PAREN@811..812 ")"
412 R_PAREN@[812; 813) ")" 412 R_PAREN@812..813 ")"
413 SEMICOLON@[813; 814) ";" 413 SEMICOLON@813..814 ";"
414 WHITESPACE@[814; 815) "\n" 414 WHITESPACE@814..815 "\n"
415 R_CURLY@[815; 816) "}" 415 R_CURLY@815..816 "}"
416 WHITESPACE@[816; 818) "\n\n" 416 WHITESPACE@816..818 "\n\n"
417 FN_DEF@[818; 1322) 417 FN_DEF@818..1322
418 FN_KW@[818; 820) "fn" 418 FN_KW@818..820 "fn"
419 WHITESPACE@[820; 821) " " 419 WHITESPACE@820..821 " "
420 NAME@[821; 832) 420 NAME@821..832
421 IDENT@[821; 832) "zombiejesus" 421 IDENT@821..832 "zombiejesus"
422 PARAM_LIST@[832; 834) 422 PARAM_LIST@832..834
423 L_PAREN@[832; 833) "(" 423 L_PAREN@832..833 "("
424 R_PAREN@[833; 834) ")" 424 R_PAREN@833..834 ")"
425 WHITESPACE@[834; 835) " " 425 WHITESPACE@834..835 " "
426 BLOCK_EXPR@[835; 1322) 426 BLOCK_EXPR@835..1322
427 BLOCK@[835; 1322) 427 BLOCK@835..1322
428 L_CURLY@[835; 836) "{" 428 L_CURLY@835..836 "{"
429 WHITESPACE@[836; 841) "\n " 429 WHITESPACE@836..841 "\n "
430 LOOP_EXPR@[841; 1320) 430 LOOP_EXPR@841..1320
431 LOOP_KW@[841; 845) "loop" 431 LOOP_KW@841..845 "loop"
432 WHITESPACE@[845; 846) " " 432 WHITESPACE@845..846 " "
433 BLOCK_EXPR@[846; 1320) 433 BLOCK_EXPR@846..1320
434 BLOCK@[846; 1320) 434 BLOCK@846..1320
435 L_CURLY@[846; 847) "{" 435 L_CURLY@846..847 "{"
436 WHITESPACE@[847; 856) "\n " 436 WHITESPACE@847..856 "\n "
437 EXPR_STMT@[856; 1283) 437 EXPR_STMT@856..1283
438 WHILE_EXPR@[856; 1283) 438 WHILE_EXPR@856..1283
439 WHILE_KW@[856; 861) "while" 439 WHILE_KW@856..861 "while"
440 WHITESPACE@[861; 862) " " 440 WHITESPACE@861..862 " "
441 CONDITION@[862; 870) 441 CONDITION@862..870
442 PAREN_EXPR@[862; 870) 442 PAREN_EXPR@862..870
443 L_PAREN@[862; 863) "(" 443 L_PAREN@862..863 "("
444 RETURN_EXPR@[863; 869) 444 RETURN_EXPR@863..869
445 RETURN_KW@[863; 869) "return" 445 RETURN_KW@863..869 "return"
446 R_PAREN@[869; 870) ")" 446 R_PAREN@869..870 ")"
447 WHITESPACE@[870; 871) " " 447 WHITESPACE@870..871 " "
448 BLOCK_EXPR@[871; 1283) 448 BLOCK_EXPR@871..1283
449 BLOCK@[871; 1283) 449 BLOCK@871..1283
450 L_CURLY@[871; 872) "{" 450 L_CURLY@871..872 "{"
451 WHITESPACE@[872; 885) "\n " 451 WHITESPACE@872..885 "\n "
452 IF_EXPR@[885; 1273) 452 IF_EXPR@885..1273
453 IF_KW@[885; 887) "if" 453 IF_KW@885..887 "if"
454 WHITESPACE@[887; 888) " " 454 WHITESPACE@887..888 " "
455 CONDITION@[888; 896) 455 CONDITION@888..896
456 PAREN_EXPR@[888; 896) 456 PAREN_EXPR@888..896
457 L_PAREN@[888; 889) "(" 457 L_PAREN@888..889 "("
458 RETURN_EXPR@[889; 895) 458 RETURN_EXPR@889..895
459 RETURN_KW@[889; 895) "return" 459 RETURN_KW@889..895 "return"
460 R_PAREN@[895; 896) ")" 460 R_PAREN@895..896 ")"
461 WHITESPACE@[896; 897) " " 461 WHITESPACE@896..897 " "
462 BLOCK_EXPR@[897; 1216) 462 BLOCK_EXPR@897..1216
463 BLOCK@[897; 1216) 463 BLOCK@897..1216
464 L_CURLY@[897; 898) "{" 464 L_CURLY@897..898 "{"
465 WHITESPACE@[898; 915) "\n " 465 WHITESPACE@898..915 "\n "
466 EXPR_STMT@[915; 1202) 466 EXPR_STMT@915..1202
467 MATCH_EXPR@[915; 1201) 467 MATCH_EXPR@915..1201
468 MATCH_KW@[915; 920) "match" 468 MATCH_KW@915..920 "match"
469 WHITESPACE@[920; 921) " " 469 WHITESPACE@920..921 " "
470 PAREN_EXPR@[921; 929) 470 PAREN_EXPR@921..929
471 L_PAREN@[921; 922) "(" 471 L_PAREN@921..922 "("
472 RETURN_EXPR@[922; 928) 472 RETURN_EXPR@922..928
473 RETURN_KW@[922; 928) "return" 473 RETURN_KW@922..928 "return"
474 R_PAREN@[928; 929) ")" 474 R_PAREN@928..929 ")"
475 WHITESPACE@[929; 930) " " 475 WHITESPACE@929..930 " "
476 MATCH_ARM_LIST@[930; 1201) 476 MATCH_ARM_LIST@930..1201
477 L_CURLY@[930; 931) "{" 477 L_CURLY@930..931 "{"
478 WHITESPACE@[931; 952) "\n " 478 WHITESPACE@931..952 "\n "
479 MATCH_ARM@[952; 1147) 479 MATCH_ARM@952..1147
480 LITERAL_PAT@[952; 953) 480 LITERAL_PAT@952..953
481 LITERAL@[952; 953) 481 LITERAL@952..953
482 INT_NUMBER@[952; 953) "1" 482 INT_NUMBER@952..953 "1"
483 WHITESPACE@[953; 954) " " 483 WHITESPACE@953..954 " "
484 FAT_ARROW@[954; 956) "=>" 484 FAT_ARROW@954..956 "=>"
485 WHITESPACE@[956; 957) " " 485 WHITESPACE@956..957 " "
486 BLOCK_EXPR@[957; 1147) 486 BLOCK_EXPR@957..1147
487 BLOCK@[957; 1147) 487 BLOCK@957..1147
488 L_CURLY@[957; 958) "{" 488 L_CURLY@957..958 "{"
489 WHITESPACE@[958; 983) "\n ..." 489 WHITESPACE@958..983 "\n ..."
490 IF_EXPR@[983; 1125) 490 IF_EXPR@983..1125
491 IF_KW@[983; 985) "if" 491 IF_KW@983..985 "if"
492 WHITESPACE@[985; 986) " " 492 WHITESPACE@985..986 " "
493 CONDITION@[986; 994) 493 CONDITION@986..994
494 PAREN_EXPR@[986; 994) 494 PAREN_EXPR@986..994
495 L_PAREN@[986; 987) "(" 495 L_PAREN@986..987 "("
496 RETURN_EXPR@[987; 993) 496 RETURN_EXPR@987..993
497 RETURN_KW@[987; 993) "return" 497 RETURN_KW@987..993 "return"
498 R_PAREN@[993; 994) ")" 498 R_PAREN@993..994 ")"
499 WHITESPACE@[994; 995) " " 499 WHITESPACE@994..995 " "
500 BLOCK_EXPR@[995; 1057) 500 BLOCK_EXPR@995..1057
501 BLOCK@[995; 1057) 501 BLOCK@995..1057
502 L_CURLY@[995; 996) "{" 502 L_CURLY@995..996 "{"
503 WHITESPACE@[996; 1025) "\n ..." 503 WHITESPACE@996..1025 "\n ..."
504 RETURN_EXPR@[1025; 1031) 504 RETURN_EXPR@1025..1031
505 RETURN_KW@[1025; 1031) "return" 505 RETURN_KW@1025..1031 "return"
506 WHITESPACE@[1031; 1056) "\n ..." 506 WHITESPACE@1031..1056 "\n ..."
507 R_CURLY@[1056; 1057) "}" 507 R_CURLY@1056..1057 "}"
508 WHITESPACE@[1057; 1058) " " 508 WHITESPACE@1057..1058 " "
509 ELSE_KW@[1058; 1062) "else" 509 ELSE_KW@1058..1062 "else"
510 WHITESPACE@[1062; 1063) " " 510 WHITESPACE@1062..1063 " "
511 BLOCK_EXPR@[1063; 1125) 511 BLOCK_EXPR@1063..1125
512 BLOCK@[1063; 1125) 512 BLOCK@1063..1125
513 L_CURLY@[1063; 1064) "{" 513 L_CURLY@1063..1064 "{"
514 WHITESPACE@[1064; 1093) "\n ..." 514 WHITESPACE@1064..1093 "\n ..."
515 RETURN_EXPR@[1093; 1099) 515 RETURN_EXPR@1093..1099
516 RETURN_KW@[1093; 1099) "return" 516 RETURN_KW@1093..1099 "return"
517 WHITESPACE@[1099; 1124) "\n ..." 517 WHITESPACE@1099..1124 "\n ..."
518 R_CURLY@[1124; 1125) "}" 518 R_CURLY@1124..1125 "}"
519 WHITESPACE@[1125; 1146) "\n " 519 WHITESPACE@1125..1146 "\n "
520 R_CURLY@[1146; 1147) "}" 520 R_CURLY@1146..1147 "}"
521 WHITESPACE@[1147; 1168) "\n " 521 WHITESPACE@1147..1168 "\n "
522 MATCH_ARM@[1168; 1183) 522 MATCH_ARM@1168..1183
523 PLACEHOLDER_PAT@[1168; 1169) 523 PLACEHOLDER_PAT@1168..1169
524 UNDERSCORE@[1168; 1169) "_" 524 UNDERSCORE@1168..1169 "_"
525 WHITESPACE@[1169; 1170) " " 525 WHITESPACE@1169..1170 " "
526 FAT_ARROW@[1170; 1172) "=>" 526 FAT_ARROW@1170..1172 "=>"
527 WHITESPACE@[1172; 1173) " " 527 WHITESPACE@1172..1173 " "
528 BLOCK_EXPR@[1173; 1183) 528 BLOCK_EXPR@1173..1183
529 BLOCK@[1173; 1183) 529 BLOCK@1173..1183
530 L_CURLY@[1173; 1174) "{" 530 L_CURLY@1173..1174 "{"
531 WHITESPACE@[1174; 1175) " " 531 WHITESPACE@1174..1175 " "
532 RETURN_EXPR@[1175; 1181) 532 RETURN_EXPR@1175..1181
533 RETURN_KW@[1175; 1181) "return" 533 RETURN_KW@1175..1181 "return"
534 WHITESPACE@[1181; 1182) " " 534 WHITESPACE@1181..1182 " "
535 R_CURLY@[1182; 1183) "}" 535 R_CURLY@1182..1183 "}"
536 WHITESPACE@[1183; 1200) "\n " 536 WHITESPACE@1183..1200 "\n "
537 R_CURLY@[1200; 1201) "}" 537 R_CURLY@1200..1201 "}"
538 SEMICOLON@[1201; 1202) ";" 538 SEMICOLON@1201..1202 ";"
539 WHITESPACE@[1202; 1215) "\n " 539 WHITESPACE@1202..1215 "\n "
540 R_CURLY@[1215; 1216) "}" 540 R_CURLY@1215..1216 "}"
541 WHITESPACE@[1216; 1217) " " 541 WHITESPACE@1216..1217 " "
542 ELSE_KW@[1217; 1221) "else" 542 ELSE_KW@1217..1221 "else"
543 WHITESPACE@[1221; 1222) " " 543 WHITESPACE@1221..1222 " "
544 IF_EXPR@[1222; 1273) 544 IF_EXPR@1222..1273
545 IF_KW@[1222; 1224) "if" 545 IF_KW@1222..1224 "if"
546 WHITESPACE@[1224; 1225) " " 546 WHITESPACE@1224..1225 " "
547 CONDITION@[1225; 1233) 547 CONDITION@1225..1233
548 PAREN_EXPR@[1225; 1233) 548 PAREN_EXPR@1225..1233
549 L_PAREN@[1225; 1226) "(" 549 L_PAREN@1225..1226 "("
550 RETURN_EXPR@[1226; 1232) 550 RETURN_EXPR@1226..1232
551 RETURN_KW@[1226; 1232) "return" 551 RETURN_KW@1226..1232 "return"
552 R_PAREN@[1232; 1233) ")" 552 R_PAREN@1232..1233 ")"
553 WHITESPACE@[1233; 1234) " " 553 WHITESPACE@1233..1234 " "
554 BLOCK_EXPR@[1234; 1273) 554 BLOCK_EXPR@1234..1273
555 BLOCK@[1234; 1273) 555 BLOCK@1234..1273
556 L_CURLY@[1234; 1235) "{" 556 L_CURLY@1234..1235 "{"
557 WHITESPACE@[1235; 1252) "\n " 557 WHITESPACE@1235..1252 "\n "
558 EXPR_STMT@[1252; 1259) 558 EXPR_STMT@1252..1259
559 RETURN_EXPR@[1252; 1258) 559 RETURN_EXPR@1252..1258
560 RETURN_KW@[1252; 1258) "return" 560 RETURN_KW@1252..1258 "return"
561 SEMICOLON@[1258; 1259) ";" 561 SEMICOLON@1258..1259 ";"
562 WHITESPACE@[1259; 1272) "\n " 562 WHITESPACE@1259..1272 "\n "
563 R_CURLY@[1272; 1273) "}" 563 R_CURLY@1272..1273 "}"
564 WHITESPACE@[1273; 1282) "\n " 564 WHITESPACE@1273..1282 "\n "
565 R_CURLY@[1282; 1283) "}" 565 R_CURLY@1282..1283 "}"
566 WHITESPACE@[1283; 1292) "\n " 566 WHITESPACE@1283..1292 "\n "
567 IF_EXPR@[1292; 1314) 567 IF_EXPR@1292..1314
568 IF_KW@[1292; 1294) "if" 568 IF_KW@1292..1294 "if"
569 WHITESPACE@[1294; 1295) " " 569 WHITESPACE@1294..1295 " "
570 CONDITION@[1295; 1303) 570 CONDITION@1295..1303
571 PAREN_EXPR@[1295; 1303) 571 PAREN_EXPR@1295..1303
572 L_PAREN@[1295; 1296) "(" 572 L_PAREN@1295..1296 "("
573 RETURN_EXPR@[1296; 1302) 573 RETURN_EXPR@1296..1302
574 RETURN_KW@[1296; 1302) "return" 574 RETURN_KW@1296..1302 "return"
575 R_PAREN@[1302; 1303) ")" 575 R_PAREN@1302..1303 ")"
576 WHITESPACE@[1303; 1304) " " 576 WHITESPACE@1303..1304 " "
577 BLOCK_EXPR@[1304; 1314) 577 BLOCK_EXPR@1304..1314
578 BLOCK@[1304; 1314) 578 BLOCK@1304..1314
579 L_CURLY@[1304; 1305) "{" 579 L_CURLY@1304..1305 "{"
580 WHITESPACE@[1305; 1306) " " 580 WHITESPACE@1305..1306 " "
581 EXPR_STMT@[1306; 1312) 581 EXPR_STMT@1306..1312
582 BREAK_EXPR@[1306; 1311) 582 BREAK_EXPR@1306..1311
583 BREAK_KW@[1306; 1311) "break" 583 BREAK_KW@1306..1311 "break"
584 SEMICOLON@[1311; 1312) ";" 584 SEMICOLON@1311..1312 ";"
585 WHITESPACE@[1312; 1313) " " 585 WHITESPACE@1312..1313 " "
586 R_CURLY@[1313; 1314) "}" 586 R_CURLY@1313..1314 "}"
587 WHITESPACE@[1314; 1319) "\n " 587 WHITESPACE@1314..1319 "\n "
588 R_CURLY@[1319; 1320) "}" 588 R_CURLY@1319..1320 "}"
589 WHITESPACE@[1320; 1321) "\n" 589 WHITESPACE@1320..1321 "\n"
590 R_CURLY@[1321; 1322) "}" 590 R_CURLY@1321..1322 "}"
591 WHITESPACE@[1322; 1324) "\n\n" 591 WHITESPACE@1322..1324 "\n\n"
592 FN_DEF@[1324; 1539) 592 FN_DEF@1324..1539
593 FN_KW@[1324; 1326) "fn" 593 FN_KW@1324..1326 "fn"
594 WHITESPACE@[1326; 1327) " " 594 WHITESPACE@1326..1327 " "
595 NAME@[1327; 1334) 595 NAME@1327..1334
596 IDENT@[1327; 1334) "notsure" 596 IDENT@1327..1334 "notsure"
597 PARAM_LIST@[1334; 1336) 597 PARAM_LIST@1334..1336
598 L_PAREN@[1334; 1335) "(" 598 L_PAREN@1334..1335 "("
599 R_PAREN@[1335; 1336) ")" 599 R_PAREN@1335..1336 ")"
600 WHITESPACE@[1336; 1337) " " 600 WHITESPACE@1336..1337 " "
601 BLOCK_EXPR@[1337; 1539) 601 BLOCK_EXPR@1337..1539
602 BLOCK@[1337; 1539) 602 BLOCK@1337..1539
603 L_CURLY@[1337; 1338) "{" 603 L_CURLY@1337..1338 "{"
604 WHITESPACE@[1338; 1343) "\n " 604 WHITESPACE@1338..1343 "\n "
605 LET_STMT@[1343; 1361) 605 LET_STMT@1343..1361
606 LET_KW@[1343; 1346) "let" 606 LET_KW@1343..1346 "let"
607 WHITESPACE@[1346; 1347) " " 607 WHITESPACE@1346..1347 " "
608 BIND_PAT@[1347; 1353) 608 BIND_PAT@1347..1353
609 MUT_KW@[1347; 1350) "mut" 609 MUT_KW@1347..1350 "mut"
610 WHITESPACE@[1350; 1351) " " 610 WHITESPACE@1350..1351 " "
611 NAME@[1351; 1353) 611 NAME@1351..1353
612 IDENT@[1351; 1353) "_x" 612 IDENT@1351..1353 "_x"
613 COLON@[1353; 1354) ":" 613 COLON@1353..1354 ":"
614 WHITESPACE@[1354; 1355) " " 614 WHITESPACE@1354..1355 " "
615 PATH_TYPE@[1355; 1360) 615 PATH_TYPE@1355..1360
616 PATH@[1355; 1360) 616 PATH@1355..1360
617 PATH_SEGMENT@[1355; 1360) 617 PATH_SEGMENT@1355..1360
618 NAME_REF@[1355; 1360) 618 NAME_REF@1355..1360
619 IDENT@[1355; 1360) "isize" 619 IDENT@1355..1360 "isize"
620 SEMICOLON@[1360; 1361) ";" 620 SEMICOLON@1360..1361 ";"
621 WHITESPACE@[1361; 1366) "\n " 621 WHITESPACE@1361..1366 "\n "
622 LET_STMT@[1366; 1400) 622 LET_STMT@1366..1400
623 LET_KW@[1366; 1369) "let" 623 LET_KW@1366..1369 "let"
624 WHITESPACE@[1369; 1370) " " 624 WHITESPACE@1369..1370 " "
625 BIND_PAT@[1370; 1376) 625 BIND_PAT@1370..1376
626 MUT_KW@[1370; 1373) "mut" 626 MUT_KW@1370..1373 "mut"
627 WHITESPACE@[1373; 1374) " " 627 WHITESPACE@1373..1374 " "
628 NAME@[1374; 1376) 628 NAME@1374..1376
629 IDENT@[1374; 1376) "_y" 629 IDENT@1374..1376 "_y"
630 WHITESPACE@[1376; 1377) " " 630 WHITESPACE@1376..1377 " "
631 EQ@[1377; 1378) "=" 631 EQ@1377..1378 "="
632 WHITESPACE@[1378; 1379) " " 632 WHITESPACE@1378..1379 " "
633 BIN_EXPR@[1379; 1399) 633 BIN_EXPR@1379..1399
634 PAREN_EXPR@[1379; 1387) 634 PAREN_EXPR@1379..1387
635 L_PAREN@[1379; 1380) "(" 635 L_PAREN@1379..1380 "("
636 BIN_EXPR@[1380; 1386) 636 BIN_EXPR@1380..1386
637 PATH_EXPR@[1380; 1382) 637 PATH_EXPR@1380..1382
638 PATH@[1380; 1382) 638 PATH@1380..1382
639 PATH_SEGMENT@[1380; 1382) 639 PATH_SEGMENT@1380..1382
640 NAME_REF@[1380; 1382) 640 NAME_REF@1380..1382
641 IDENT@[1380; 1382) "_x" 641 IDENT@1380..1382 "_x"
642 WHITESPACE@[1382; 1383) " " 642 WHITESPACE@1382..1383 " "
643 EQ@[1383; 1384) "=" 643 EQ@1383..1384 "="
644 WHITESPACE@[1384; 1385) " " 644 WHITESPACE@1384..1385 " "
645 LITERAL@[1385; 1386) 645 LITERAL@1385..1386
646 INT_NUMBER@[1385; 1386) "0" 646 INT_NUMBER@1385..1386 "0"
647 R_PAREN@[1386; 1387) ")" 647 R_PAREN@1386..1387 ")"
648 WHITESPACE@[1387; 1388) " " 648 WHITESPACE@1387..1388 " "
649 EQ2@[1388; 1390) "==" 649 EQ2@1388..1390 "=="
650 WHITESPACE@[1390; 1391) " " 650 WHITESPACE@1390..1391 " "
651 PAREN_EXPR@[1391; 1399) 651 PAREN_EXPR@1391..1399
652 L_PAREN@[1391; 1392) "(" 652 L_PAREN@1391..1392 "("
653 BIN_EXPR@[1392; 1398) 653 BIN_EXPR@1392..1398
654 PATH_EXPR@[1392; 1394) 654 PATH_EXPR@1392..1394
655 PATH@[1392; 1394) 655 PATH@1392..1394
656 PATH_SEGMENT@[1392; 1394) 656 PATH_SEGMENT@1392..1394
657 NAME_REF@[1392; 1394) 657 NAME_REF@1392..1394
658 IDENT@[1392; 1394) "_x" 658 IDENT@1392..1394 "_x"
659 WHITESPACE@[1394; 1395) " " 659 WHITESPACE@1394..1395 " "
660 EQ@[1395; 1396) "=" 660 EQ@1395..1396 "="
661 WHITESPACE@[1396; 1397) " " 661 WHITESPACE@1396..1397 " "
662 LITERAL@[1397; 1398) 662 LITERAL@1397..1398
663 INT_NUMBER@[1397; 1398) "0" 663 INT_NUMBER@1397..1398 "0"
664 R_PAREN@[1398; 1399) ")" 664 R_PAREN@1398..1399 ")"
665 SEMICOLON@[1399; 1400) ";" 665 SEMICOLON@1399..1400 ";"
666 WHITESPACE@[1400; 1405) "\n " 666 WHITESPACE@1400..1405 "\n "
667 LET_STMT@[1405; 1438) 667 LET_STMT@1405..1438
668 LET_KW@[1405; 1408) "let" 668 LET_KW@1405..1408 "let"
669 WHITESPACE@[1408; 1409) " " 669 WHITESPACE@1408..1409 " "
670 BIND_PAT@[1409; 1415) 670 BIND_PAT@1409..1415
671 MUT_KW@[1409; 1412) "mut" 671 MUT_KW@1409..1412 "mut"
672 WHITESPACE@[1412; 1413) " " 672 WHITESPACE@1412..1413 " "
673 NAME@[1413; 1415) 673 NAME@1413..1415
674 IDENT@[1413; 1415) "_z" 674 IDENT@1413..1415 "_z"
675 WHITESPACE@[1415; 1416) " " 675 WHITESPACE@1415..1416 " "
676 EQ@[1416; 1417) "=" 676 EQ@1416..1417 "="
677 WHITESPACE@[1417; 1418) " " 677 WHITESPACE@1417..1418 " "
678 BIN_EXPR@[1418; 1437) 678 BIN_EXPR@1418..1437
679 PAREN_EXPR@[1418; 1426) 679 PAREN_EXPR@1418..1426
680 L_PAREN@[1418; 1419) "(" 680 L_PAREN@1418..1419 "("
681 BIN_EXPR@[1419; 1425) 681 BIN_EXPR@1419..1425
682 PATH_EXPR@[1419; 1421) 682 PATH_EXPR@1419..1421
683 PATH@[1419; 1421) 683 PATH@1419..1421
684 PATH_SEGMENT@[1419; 1421) 684 PATH_SEGMENT@1419..1421
685 NAME_REF@[1419; 1421) 685 NAME_REF@1419..1421
686 IDENT@[1419; 1421) "_x" 686 IDENT@1419..1421 "_x"
687 WHITESPACE@[1421; 1422) " " 687 WHITESPACE@1421..1422 " "
688 EQ@[1422; 1423) "=" 688 EQ@1422..1423 "="
689 WHITESPACE@[1423; 1424) " " 689 WHITESPACE@1423..1424 " "
690 LITERAL@[1424; 1425) 690 LITERAL@1424..1425
691 INT_NUMBER@[1424; 1425) "0" 691 INT_NUMBER@1424..1425 "0"
692 R_PAREN@[1425; 1426) ")" 692 R_PAREN@1425..1426 ")"
693 WHITESPACE@[1426; 1427) " " 693 WHITESPACE@1426..1427 " "
694 L_ANGLE@[1427; 1428) "<" 694 L_ANGLE@1427..1428 "<"
695 WHITESPACE@[1428; 1429) " " 695 WHITESPACE@1428..1429 " "
696 PAREN_EXPR@[1429; 1437) 696 PAREN_EXPR@1429..1437
697 L_PAREN@[1429; 1430) "(" 697 L_PAREN@1429..1430 "("
698 BIN_EXPR@[1430; 1436) 698 BIN_EXPR@1430..1436
699 PATH_EXPR@[1430; 1432) 699 PATH_EXPR@1430..1432
700 PATH@[1430; 1432) 700 PATH@1430..1432
701 PATH_SEGMENT@[1430; 1432) 701 PATH_SEGMENT@1430..1432
702 NAME_REF@[1430; 1432) 702 NAME_REF@1430..1432
703 IDENT@[1430; 1432) "_x" 703 IDENT@1430..1432 "_x"
704 WHITESPACE@[1432; 1433) " " 704 WHITESPACE@1432..1433 " "
705 EQ@[1433; 1434) "=" 705 EQ@1433..1434 "="
706 WHITESPACE@[1434; 1435) " " 706 WHITESPACE@1434..1435 " "
707 LITERAL@[1435; 1436) 707 LITERAL@1435..1436
708 INT_NUMBER@[1435; 1436) "0" 708 INT_NUMBER@1435..1436 "0"
709 R_PAREN@[1436; 1437) ")" 709 R_PAREN@1436..1437 ")"
710 SEMICOLON@[1437; 1438) ";" 710 SEMICOLON@1437..1438 ";"
711 WHITESPACE@[1438; 1443) "\n " 711 WHITESPACE@1438..1443 "\n "
712 LET_STMT@[1443; 1474) 712 LET_STMT@1443..1474
713 LET_KW@[1443; 1446) "let" 713 LET_KW@1443..1446 "let"
714 WHITESPACE@[1446; 1447) " " 714 WHITESPACE@1446..1447 " "
715 BIND_PAT@[1447; 1449) 715 BIND_PAT@1447..1449
716 NAME@[1447; 1449) 716 NAME@1447..1449
717 IDENT@[1447; 1449) "_a" 717 IDENT@1447..1449 "_a"
718 WHITESPACE@[1449; 1450) " " 718 WHITESPACE@1449..1450 " "
719 EQ@[1450; 1451) "=" 719 EQ@1450..1451 "="
720 WHITESPACE@[1451; 1452) " " 720 WHITESPACE@1451..1452 " "
721 BIN_EXPR@[1452; 1473) 721 BIN_EXPR@1452..1473
722 PAREN_EXPR@[1452; 1461) 722 PAREN_EXPR@1452..1461
723 L_PAREN@[1452; 1453) "(" 723 L_PAREN@1452..1453 "("
724 BIN_EXPR@[1453; 1460) 724 BIN_EXPR@1453..1460
725 PATH_EXPR@[1453; 1455) 725 PATH_EXPR@1453..1455
726 PATH@[1453; 1455) 726 PATH@1453..1455
727 PATH_SEGMENT@[1453; 1455) 727 PATH_SEGMENT@1453..1455
728 NAME_REF@[1453; 1455) 728 NAME_REF@1453..1455
729 IDENT@[1453; 1455) "_x" 729 IDENT@1453..1455 "_x"
730 WHITESPACE@[1455; 1456) " " 730 WHITESPACE@1455..1456 " "
731 PLUSEQ@[1456; 1458) "+=" 731 PLUSEQ@1456..1458 "+="
732 WHITESPACE@[1458; 1459) " " 732 WHITESPACE@1458..1459 " "
733 LITERAL@[1459; 1460) 733 LITERAL@1459..1460
734 INT_NUMBER@[1459; 1460) "0" 734 INT_NUMBER@1459..1460 "0"
735 R_PAREN@[1460; 1461) ")" 735 R_PAREN@1460..1461 ")"
736 WHITESPACE@[1461; 1462) " " 736 WHITESPACE@1461..1462 " "
737 EQ2@[1462; 1464) "==" 737 EQ2@1462..1464 "=="
738 WHITESPACE@[1464; 1465) " " 738 WHITESPACE@1464..1465 " "
739 PAREN_EXPR@[1465; 1473) 739 PAREN_EXPR@1465..1473
740 L_PAREN@[1465; 1466) "(" 740 L_PAREN@1465..1466 "("
741 BIN_EXPR@[1466; 1472) 741 BIN_EXPR@1466..1472
742 PATH_EXPR@[1466; 1468) 742 PATH_EXPR@1466..1468
743 PATH@[1466; 1468) 743 PATH@1466..1468
744 PATH_SEGMENT@[1466; 1468) 744 PATH_SEGMENT@1466..1468
745 NAME_REF@[1466; 1468) 745 NAME_REF@1466..1468
746 IDENT@[1466; 1468) "_x" 746 IDENT@1466..1468 "_x"
747 WHITESPACE@[1468; 1469) " " 747 WHITESPACE@1468..1469 " "
748 EQ@[1469; 1470) "=" 748 EQ@1469..1470 "="
749 WHITESPACE@[1470; 1471) " " 749 WHITESPACE@1470..1471 " "
750 LITERAL@[1471; 1472) 750 LITERAL@1471..1472
751 INT_NUMBER@[1471; 1472) "0" 751 INT_NUMBER@1471..1472 "0"
752 R_PAREN@[1472; 1473) ")" 752 R_PAREN@1472..1473 ")"
753 SEMICOLON@[1473; 1474) ";" 753 SEMICOLON@1473..1474 ";"
754 WHITESPACE@[1474; 1479) "\n " 754 WHITESPACE@1474..1479 "\n "
755 LET_STMT@[1479; 1537) 755 LET_STMT@1479..1537
756 LET_KW@[1479; 1482) "let" 756 LET_KW@1479..1482 "let"
757 WHITESPACE@[1482; 1483) " " 757 WHITESPACE@1482..1483 " "
758 BIND_PAT@[1483; 1485) 758 BIND_PAT@1483..1485
759 NAME@[1483; 1485) 759 NAME@1483..1485
760 IDENT@[1483; 1485) "_b" 760 IDENT@1483..1485 "_b"
761 WHITESPACE@[1485; 1486) " " 761 WHITESPACE@1485..1486 " "
762 EQ@[1486; 1487) "=" 762 EQ@1486..1487 "="
763 WHITESPACE@[1487; 1488) " " 763 WHITESPACE@1487..1488 " "
764 BIN_EXPR@[1488; 1536) 764 BIN_EXPR@1488..1536
765 CALL_EXPR@[1488; 1510) 765 CALL_EXPR@1488..1510
766 PATH_EXPR@[1488; 1492) 766 PATH_EXPR@1488..1492
767 PATH@[1488; 1492) 767 PATH@1488..1492
768 PATH_SEGMENT@[1488; 1492) 768 PATH_SEGMENT@1488..1492
769 NAME_REF@[1488; 1492) 769 NAME_REF@1488..1492
770 IDENT@[1488; 1492) "swap" 770 IDENT@1488..1492 "swap"
771 ARG_LIST@[1492; 1510) 771 ARG_LIST@1492..1510
772 L_PAREN@[1492; 1493) "(" 772 L_PAREN@1492..1493 "("
773 REF_EXPR@[1493; 1500) 773 REF_EXPR@1493..1500
774 AMP@[1493; 1494) "&" 774 AMP@1493..1494 "&"
775 MUT_KW@[1494; 1497) "mut" 775 MUT_KW@1494..1497 "mut"
776 WHITESPACE@[1497; 1498) " " 776 WHITESPACE@1497..1498 " "
777 PATH_EXPR@[1498; 1500) 777 PATH_EXPR@1498..1500
778 PATH@[1498; 1500) 778 PATH@1498..1500
779 PATH_SEGMENT@[1498; 1500) 779 PATH_SEGMENT@1498..1500
780 NAME_REF@[1498; 1500) 780 NAME_REF@1498..1500
781 IDENT@[1498; 1500) "_y" 781 IDENT@1498..1500 "_y"
782 COMMA@[1500; 1501) "," 782 COMMA@1500..1501 ","
783 WHITESPACE@[1501; 1502) " " 783 WHITESPACE@1501..1502 " "
784 REF_EXPR@[1502; 1509) 784 REF_EXPR@1502..1509
785 AMP@[1502; 1503) "&" 785 AMP@1502..1503 "&"
786 MUT_KW@[1503; 1506) "mut" 786 MUT_KW@1503..1506 "mut"
787 WHITESPACE@[1506; 1507) " " 787 WHITESPACE@1506..1507 " "
788 PATH_EXPR@[1507; 1509) 788 PATH_EXPR@1507..1509
789 PATH@[1507; 1509) 789 PATH@1507..1509
790 PATH_SEGMENT@[1507; 1509) 790 PATH_SEGMENT@1507..1509
791 NAME_REF@[1507; 1509) 791 NAME_REF@1507..1509
792 IDENT@[1507; 1509) "_z" 792 IDENT@1507..1509 "_z"
793 R_PAREN@[1509; 1510) ")" 793 R_PAREN@1509..1510 ")"
794 WHITESPACE@[1510; 1511) " " 794 WHITESPACE@1510..1511 " "
795 EQ2@[1511; 1513) "==" 795 EQ2@1511..1513 "=="
796 WHITESPACE@[1513; 1514) " " 796 WHITESPACE@1513..1514 " "
797 CALL_EXPR@[1514; 1536) 797 CALL_EXPR@1514..1536
798 PATH_EXPR@[1514; 1518) 798 PATH_EXPR@1514..1518
799 PATH@[1514; 1518) 799 PATH@1514..1518
800 PATH_SEGMENT@[1514; 1518) 800 PATH_SEGMENT@1514..1518
801 NAME_REF@[1514; 1518) 801 NAME_REF@1514..1518
802 IDENT@[1514; 1518) "swap" 802 IDENT@1514..1518 "swap"
803 ARG_LIST@[1518; 1536) 803 ARG_LIST@1518..1536
804 L_PAREN@[1518; 1519) "(" 804 L_PAREN@1518..1519 "("
805 REF_EXPR@[1519; 1526) 805 REF_EXPR@1519..1526
806 AMP@[1519; 1520) "&" 806 AMP@1519..1520 "&"
807 MUT_KW@[1520; 1523) "mut" 807 MUT_KW@1520..1523 "mut"
808 WHITESPACE@[1523; 1524) " " 808 WHITESPACE@1523..1524 " "
809 PATH_EXPR@[1524; 1526) 809 PATH_EXPR@1524..1526
810 PATH@[1524; 1526) 810 PATH@1524..1526
811 PATH_SEGMENT@[1524; 1526) 811 PATH_SEGMENT@1524..1526
812 NAME_REF@[1524; 1526) 812 NAME_REF@1524..1526
813 IDENT@[1524; 1526) "_y" 813 IDENT@1524..1526 "_y"
814 COMMA@[1526; 1527) "," 814 COMMA@1526..1527 ","
815 WHITESPACE@[1527; 1528) " " 815 WHITESPACE@1527..1528 " "
816 REF_EXPR@[1528; 1535) 816 REF_EXPR@1528..1535
817 AMP@[1528; 1529) "&" 817 AMP@1528..1529 "&"
818 MUT_KW@[1529; 1532) "mut" 818 MUT_KW@1529..1532 "mut"
819 WHITESPACE@[1532; 1533) " " 819 WHITESPACE@1532..1533 " "
820 PATH_EXPR@[1533; 1535) 820 PATH_EXPR@1533..1535
821 PATH@[1533; 1535) 821 PATH@1533..1535
822 PATH_SEGMENT@[1533; 1535) 822 PATH_SEGMENT@1533..1535
823 NAME_REF@[1533; 1535) 823 NAME_REF@1533..1535
824 IDENT@[1533; 1535) "_z" 824 IDENT@1533..1535 "_z"
825 R_PAREN@[1535; 1536) ")" 825 R_PAREN@1535..1536 ")"
826 SEMICOLON@[1536; 1537) ";" 826 SEMICOLON@1536..1537 ";"
827 WHITESPACE@[1537; 1538) "\n" 827 WHITESPACE@1537..1538 "\n"
828 R_CURLY@[1538; 1539) "}" 828 R_CURLY@1538..1539 "}"
829 WHITESPACE@[1539; 1541) "\n\n" 829 WHITESPACE@1539..1541 "\n\n"
830 FN_DEF@[1541; 1741) 830 FN_DEF@1541..1741
831 FN_KW@[1541; 1543) "fn" 831 FN_KW@1541..1543 "fn"
832 WHITESPACE@[1543; 1544) " " 832 WHITESPACE@1543..1544 " "
833 NAME@[1544; 1557) 833 NAME@1544..1557
834 IDENT@[1544; 1557) "canttouchthis" 834 IDENT@1544..1557 "canttouchthis"
835 PARAM_LIST@[1557; 1559) 835 PARAM_LIST@1557..1559
836 L_PAREN@[1557; 1558) "(" 836 L_PAREN@1557..1558 "("
837 R_PAREN@[1558; 1559) ")" 837 R_PAREN@1558..1559 ")"
838 WHITESPACE@[1559; 1560) " " 838 WHITESPACE@1559..1560 " "
839 RET_TYPE@[1560; 1568) 839 RET_TYPE@1560..1568
840 THIN_ARROW@[1560; 1562) "->" 840 THIN_ARROW@1560..1562 "->"
841 WHITESPACE@[1562; 1563) " " 841 WHITESPACE@1562..1563 " "
842 PATH_TYPE@[1563; 1568) 842 PATH_TYPE@1563..1568
843 PATH@[1563; 1568) 843 PATH@1563..1568
844 PATH_SEGMENT@[1563; 1568) 844 PATH_SEGMENT@1563..1568
845 NAME_REF@[1563; 1568) 845 NAME_REF@1563..1568
846 IDENT@[1563; 1568) "usize" 846 IDENT@1563..1568 "usize"
847 WHITESPACE@[1568; 1569) " " 847 WHITESPACE@1568..1569 " "
848 BLOCK_EXPR@[1569; 1741) 848 BLOCK_EXPR@1569..1741
849 BLOCK@[1569; 1741) 849 BLOCK@1569..1741
850 L_CURLY@[1569; 1570) "{" 850 L_CURLY@1569..1570 "{"
851 WHITESPACE@[1570; 1575) "\n " 851 WHITESPACE@1570..1575 "\n "
852 FN_DEF@[1575; 1598) 852 FN_DEF@1575..1598
853 FN_KW@[1575; 1577) "fn" 853 FN_KW@1575..1577 "fn"
854 WHITESPACE@[1577; 1578) " " 854 WHITESPACE@1577..1578 " "
855 NAME@[1578; 1579) 855 NAME@1578..1579
856 IDENT@[1578; 1579) "p" 856 IDENT@1578..1579 "p"
857 PARAM_LIST@[1579; 1581) 857 PARAM_LIST@1579..1581
858 L_PAREN@[1579; 1580) "(" 858 L_PAREN@1579..1580 "("
859 R_PAREN@[1580; 1581) ")" 859 R_PAREN@1580..1581 ")"
860 WHITESPACE@[1581; 1582) " " 860 WHITESPACE@1581..1582 " "
861 RET_TYPE@[1582; 1589) 861 RET_TYPE@1582..1589
862 THIN_ARROW@[1582; 1584) "->" 862 THIN_ARROW@1582..1584 "->"
863 WHITESPACE@[1584; 1585) " " 863 WHITESPACE@1584..1585 " "
864 PATH_TYPE@[1585; 1589) 864 PATH_TYPE@1585..1589
865 PATH@[1585; 1589) 865 PATH@1585..1589
866 PATH_SEGMENT@[1585; 1589) 866 PATH_SEGMENT@1585..1589
867 NAME_REF@[1585; 1589) 867 NAME_REF@1585..1589
868 IDENT@[1585; 1589) "bool" 868 IDENT@1585..1589 "bool"
869 WHITESPACE@[1589; 1590) " " 869 WHITESPACE@1589..1590 " "
870 BLOCK_EXPR@[1590; 1598) 870 BLOCK_EXPR@1590..1598
871 BLOCK@[1590; 1598) 871 BLOCK@1590..1598
872 L_CURLY@[1590; 1591) "{" 872 L_CURLY@1590..1591 "{"
873 WHITESPACE@[1591; 1592) " " 873 WHITESPACE@1591..1592 " "
874 LITERAL@[1592; 1596) 874 LITERAL@1592..1596
875 TRUE_KW@[1592; 1596) "true" 875 TRUE_KW@1592..1596 "true"
876 WHITESPACE@[1596; 1597) " " 876 WHITESPACE@1596..1597 " "
877 R_CURLY@[1597; 1598) "}" 877 R_CURLY@1597..1598 "}"
878 WHITESPACE@[1598; 1603) "\n " 878 WHITESPACE@1598..1603 "\n "
879 LET_STMT@[1603; 1648) 879 LET_STMT@1603..1648
880 LET_KW@[1603; 1606) "let" 880 LET_KW@1603..1606 "let"
881 WHITESPACE@[1606; 1607) " " 881 WHITESPACE@1606..1607 " "
882 BIND_PAT@[1607; 1609) 882 BIND_PAT@1607..1609
883 NAME@[1607; 1609) 883 NAME@1607..1609
884 IDENT@[1607; 1609) "_a" 884 IDENT@1607..1609 "_a"
885 WHITESPACE@[1609; 1610) " " 885 WHITESPACE@1609..1610 " "
886 EQ@[1610; 1611) "=" 886 EQ@1610..1611 "="
887 WHITESPACE@[1611; 1612) " " 887 WHITESPACE@1611..1612 " "
888 PAREN_EXPR@[1612; 1647) 888 PAREN_EXPR@1612..1647
889 L_PAREN@[1612; 1613) "(" 889 L_PAREN@1612..1613 "("
890 BIN_EXPR@[1613; 1646) 890 BIN_EXPR@1613..1646
891 MACRO_CALL@[1613; 1628) 891 MACRO_CALL@1613..1628
892 PATH@[1613; 1619) 892 PATH@1613..1619
893 PATH_SEGMENT@[1613; 1619) 893 PATH_SEGMENT@1613..1619
894 NAME_REF@[1613; 1619) 894 NAME_REF@1613..1619
895 IDENT@[1613; 1619) "assert" 895 IDENT@1613..1619 "assert"
896 BANG@[1619; 1620) "!" 896 BANG@1619..1620 "!"
897 TOKEN_TREE@[1620; 1628) 897 TOKEN_TREE@1620..1628
898 L_PAREN@[1620; 1621) "(" 898 L_PAREN@1620..1621 "("
899 TOKEN_TREE@[1621; 1627) 899 TOKEN_TREE@1621..1627
900 L_PAREN@[1621; 1622) "(" 900 L_PAREN@1621..1622 "("
901 TRUE_KW@[1622; 1626) "true" 901 TRUE_KW@1622..1626 "true"
902 R_PAREN@[1626; 1627) ")" 902 R_PAREN@1626..1627 ")"
903 R_PAREN@[1627; 1628) ")" 903 R_PAREN@1627..1628 ")"
904 WHITESPACE@[1628; 1629) " " 904 WHITESPACE@1628..1629 " "
905 EQ2@[1629; 1631) "==" 905 EQ2@1629..1631 "=="
906 WHITESPACE@[1631; 1632) " " 906 WHITESPACE@1631..1632 " "
907 PAREN_EXPR@[1632; 1646) 907 PAREN_EXPR@1632..1646
908 L_PAREN@[1632; 1633) "(" 908 L_PAREN@1632..1633 "("
909 MACRO_CALL@[1633; 1645) 909 MACRO_CALL@1633..1645
910 PATH@[1633; 1639) 910 PATH@1633..1639
911 PATH_SEGMENT@[1633; 1639) 911 PATH_SEGMENT@1633..1639
912 NAME_REF@[1633; 1639) 912 NAME_REF@1633..1639
913 IDENT@[1633; 1639) "assert" 913 IDENT@1633..1639 "assert"
914 BANG@[1639; 1640) "!" 914 BANG@1639..1640 "!"
915 TOKEN_TREE@[1640; 1645) 915 TOKEN_TREE@1640..1645
916 L_PAREN@[1640; 1641) "(" 916 L_PAREN@1640..1641 "("
917 IDENT@[1641; 1642) "p" 917 IDENT@1641..1642 "p"
918 TOKEN_TREE@[1642; 1644) 918 TOKEN_TREE@1642..1644
919 L_PAREN@[1642; 1643) "(" 919 L_PAREN@1642..1643 "("
920 R_PAREN@[1643; 1644) ")" 920 R_PAREN@1643..1644 ")"
921 R_PAREN@[1644; 1645) ")" 921 R_PAREN@1644..1645 ")"
922 R_PAREN@[1645; 1646) ")" 922 R_PAREN@1645..1646 ")"
923 R_PAREN@[1646; 1647) ")" 923 R_PAREN@1646..1647 ")"
924 SEMICOLON@[1647; 1648) ";" 924 SEMICOLON@1647..1648 ";"
925 WHITESPACE@[1648; 1653) "\n " 925 WHITESPACE@1648..1653 "\n "
926 LET_STMT@[1653; 1685) 926 LET_STMT@1653..1685
927 LET_KW@[1653; 1656) "let" 927 LET_KW@1653..1656 "let"
928 WHITESPACE@[1656; 1657) " " 928 WHITESPACE@1656..1657 " "
929 BIND_PAT@[1657; 1659) 929 BIND_PAT@1657..1659
930 NAME@[1657; 1659) 930 NAME@1657..1659
931 IDENT@[1657; 1659) "_c" 931 IDENT@1657..1659 "_c"
932 WHITESPACE@[1659; 1660) " " 932 WHITESPACE@1659..1660 " "
933 EQ@[1660; 1661) "=" 933 EQ@1660..1661 "="
934 WHITESPACE@[1661; 1662) " " 934 WHITESPACE@1661..1662 " "
935 PAREN_EXPR@[1662; 1684) 935 PAREN_EXPR@1662..1684
936 L_PAREN@[1662; 1663) "(" 936 L_PAREN@1662..1663 "("
937 BIN_EXPR@[1663; 1683) 937 BIN_EXPR@1663..1683
938 MACRO_CALL@[1663; 1677) 938 MACRO_CALL@1663..1677
939 PATH@[1663; 1669) 939 PATH@1663..1669
940 PATH_SEGMENT@[1663; 1669) 940 PATH_SEGMENT@1663..1669
941 NAME_REF@[1663; 1669) 941 NAME_REF@1663..1669
942 IDENT@[1663; 1669) "assert" 942 IDENT@1663..1669 "assert"
943 BANG@[1669; 1670) "!" 943 BANG@1669..1670 "!"
944 TOKEN_TREE@[1670; 1677) 944 TOKEN_TREE@1670..1677
945 L_PAREN@[1670; 1671) "(" 945 L_PAREN@1670..1671 "("
946 TOKEN_TREE@[1671; 1676) 946 TOKEN_TREE@1671..1676
947 L_PAREN@[1671; 1672) "(" 947 L_PAREN@1671..1672 "("
948 IDENT@[1672; 1673) "p" 948 IDENT@1672..1673 "p"
949 TOKEN_TREE@[1673; 1675) 949 TOKEN_TREE@1673..1675
950 L_PAREN@[1673; 1674) "(" 950 L_PAREN@1673..1674 "("
951 R_PAREN@[1674; 1675) ")" 951 R_PAREN@1674..1675 ")"
952 R_PAREN@[1675; 1676) ")" 952 R_PAREN@1675..1676 ")"
953 R_PAREN@[1676; 1677) ")" 953 R_PAREN@1676..1677 ")"
954 WHITESPACE@[1677; 1678) " " 954 WHITESPACE@1677..1678 " "
955 EQ2@[1678; 1680) "==" 955 EQ2@1678..1680 "=="
956 WHITESPACE@[1680; 1681) " " 956 WHITESPACE@1680..1681 " "
957 TUPLE_EXPR@[1681; 1683) 957 TUPLE_EXPR@1681..1683
958 L_PAREN@[1681; 1682) "(" 958 L_PAREN@1681..1682 "("
959 R_PAREN@[1682; 1683) ")" 959 R_PAREN@1682..1683 ")"
960 R_PAREN@[1683; 1684) ")" 960 R_PAREN@1683..1684 ")"
961 SEMICOLON@[1684; 1685) ";" 961 SEMICOLON@1684..1685 ";"
962 WHITESPACE@[1685; 1690) "\n " 962 WHITESPACE@1685..1690 "\n "
963 LET_STMT@[1690; 1739) 963 LET_STMT@1690..1739
964 LET_KW@[1690; 1693) "let" 964 LET_KW@1690..1693 "let"
965 WHITESPACE@[1693; 1694) " " 965 WHITESPACE@1693..1694 " "
966 BIND_PAT@[1694; 1696) 966 BIND_PAT@1694..1696
967 NAME@[1694; 1696) 967 NAME@1694..1696
968 IDENT@[1694; 1696) "_b" 968 IDENT@1694..1696 "_b"
969 COLON@[1696; 1697) ":" 969 COLON@1696..1697 ":"
970 WHITESPACE@[1697; 1698) " " 970 WHITESPACE@1697..1698 " "
971 PATH_TYPE@[1698; 1702) 971 PATH_TYPE@1698..1702
972 PATH@[1698; 1702) 972 PATH@1698..1702
973 PATH_SEGMENT@[1698; 1702) 973 PATH_SEGMENT@1698..1702
974 NAME_REF@[1698; 1702) 974 NAME_REF@1698..1702
975 IDENT@[1698; 1702) "bool" 975 IDENT@1698..1702 "bool"
976 WHITESPACE@[1702; 1703) " " 976 WHITESPACE@1702..1703 " "
977 EQ@[1703; 1704) "=" 977 EQ@1703..1704 "="
978 WHITESPACE@[1704; 1705) " " 978 WHITESPACE@1704..1705 " "
979 PAREN_EXPR@[1705; 1738) 979 PAREN_EXPR@1705..1738
980 L_PAREN@[1705; 1706) "(" 980 L_PAREN@1705..1706 "("
981 BIN_EXPR@[1706; 1737) 981 BIN_EXPR@1706..1737
982 MACRO_CALL@[1706; 1723) 982 MACRO_CALL@1706..1723
983 PATH@[1706; 1713) 983 PATH@1706..1713
984 PATH_SEGMENT@[1706; 1713) 984 PATH_SEGMENT@1706..1713
985 NAME_REF@[1706; 1713) 985 NAME_REF@1706..1713
986 IDENT@[1706; 1713) "println" 986 IDENT@1706..1713 "println"
987 BANG@[1713; 1714) "!" 987 BANG@1713..1714 "!"
988 TOKEN_TREE@[1714; 1723) 988 TOKEN_TREE@1714..1723
989 L_PAREN@[1714; 1715) "(" 989 L_PAREN@1714..1715 "("
990 STRING@[1715; 1719) "\"{}\"" 990 STRING@1715..1719 "\"{}\""
991 COMMA@[1719; 1720) "," 991 COMMA@1719..1720 ","
992 WHITESPACE@[1720; 1721) " " 992 WHITESPACE@1720..1721 " "
993 INT_NUMBER@[1721; 1722) "0" 993 INT_NUMBER@1721..1722 "0"
994 R_PAREN@[1722; 1723) ")" 994 R_PAREN@1722..1723 ")"
995 WHITESPACE@[1723; 1724) " " 995 WHITESPACE@1723..1724 " "
996 EQ2@[1724; 1726) "==" 996 EQ2@1724..1726 "=="
997 WHITESPACE@[1726; 1727) " " 997 WHITESPACE@1726..1727 " "
998 PAREN_EXPR@[1727; 1737) 998 PAREN_EXPR@1727..1737
999 L_PAREN@[1727; 1728) "(" 999 L_PAREN@1727..1728 "("
1000 RETURN_EXPR@[1728; 1736) 1000 RETURN_EXPR@1728..1736
1001 RETURN_KW@[1728; 1734) "return" 1001 RETURN_KW@1728..1734 "return"
1002 WHITESPACE@[1734; 1735) " " 1002 WHITESPACE@1734..1735 " "
1003 LITERAL@[1735; 1736) 1003 LITERAL@1735..1736
1004 INT_NUMBER@[1735; 1736) "0" 1004 INT_NUMBER@1735..1736 "0"
1005 R_PAREN@[1736; 1737) ")" 1005 R_PAREN@1736..1737 ")"
1006 R_PAREN@[1737; 1738) ")" 1006 R_PAREN@1737..1738 ")"
1007 SEMICOLON@[1738; 1739) ";" 1007 SEMICOLON@1738..1739 ";"
1008 WHITESPACE@[1739; 1740) "\n" 1008 WHITESPACE@1739..1740 "\n"
1009 R_CURLY@[1740; 1741) "}" 1009 R_CURLY@1740..1741 "}"
1010 WHITESPACE@[1741; 1743) "\n\n" 1010 WHITESPACE@1741..1743 "\n\n"
1011 FN_DEF@[1743; 1904) 1011 FN_DEF@1743..1904
1012 FN_KW@[1743; 1745) "fn" 1012 FN_KW@1743..1745 "fn"
1013 WHITESPACE@[1745; 1746) " " 1013 WHITESPACE@1745..1746 " "
1014 NAME@[1746; 1755) 1014 NAME@1746..1755
1015 IDENT@[1746; 1755) "angrydome" 1015 IDENT@1746..1755 "angrydome"
1016 PARAM_LIST@[1755; 1757) 1016 PARAM_LIST@1755..1757
1017 L_PAREN@[1755; 1756) "(" 1017 L_PAREN@1755..1756 "("
1018 R_PAREN@[1756; 1757) ")" 1018 R_PAREN@1756..1757 ")"
1019 WHITESPACE@[1757; 1758) " " 1019 WHITESPACE@1757..1758 " "
1020 BLOCK_EXPR@[1758; 1904) 1020 BLOCK_EXPR@1758..1904
1021 BLOCK@[1758; 1904) 1021 BLOCK@1758..1904
1022 L_CURLY@[1758; 1759) "{" 1022 L_CURLY@1758..1759 "{"
1023 WHITESPACE@[1759; 1764) "\n " 1023 WHITESPACE@1759..1764 "\n "
1024 EXPR_STMT@[1764; 1785) 1024 EXPR_STMT@1764..1785
1025 LOOP_EXPR@[1764; 1785) 1025 LOOP_EXPR@1764..1785
1026 LOOP_KW@[1764; 1768) "loop" 1026 LOOP_KW@1764..1768 "loop"
1027 WHITESPACE@[1768; 1769) " " 1027 WHITESPACE@1768..1769 " "
1028 BLOCK_EXPR@[1769; 1785) 1028 BLOCK_EXPR@1769..1785
1029 BLOCK@[1769; 1785) 1029 BLOCK@1769..1785
1030 L_CURLY@[1769; 1770) "{" 1030 L_CURLY@1769..1770 "{"
1031 WHITESPACE@[1770; 1771) " " 1031 WHITESPACE@1770..1771 " "
1032 IF_EXPR@[1771; 1783) 1032 IF_EXPR@1771..1783
1033 IF_KW@[1771; 1773) "if" 1033 IF_KW@1771..1773 "if"
1034 WHITESPACE@[1773; 1774) " " 1034 WHITESPACE@1773..1774 " "
1035 CONDITION@[1774; 1779) 1035 CONDITION@1774..1779
1036 BREAK_EXPR@[1774; 1779) 1036 BREAK_EXPR@1774..1779
1037 BREAK_KW@[1774; 1779) "break" 1037 BREAK_KW@1774..1779 "break"
1038 WHITESPACE@[1779; 1780) " " 1038 WHITESPACE@1779..1780 " "
1039 BLOCK_EXPR@[1780; 1783) 1039 BLOCK_EXPR@1780..1783
1040 BLOCK@[1780; 1783) 1040 BLOCK@1780..1783
1041 L_CURLY@[1780; 1781) "{" 1041 L_CURLY@1780..1781 "{"
1042 WHITESPACE@[1781; 1782) " " 1042 WHITESPACE@1781..1782 " "
1043 R_CURLY@[1782; 1783) "}" 1043 R_CURLY@1782..1783 "}"
1044 WHITESPACE@[1783; 1784) " " 1044 WHITESPACE@1783..1784 " "
1045 R_CURLY@[1784; 1785) "}" 1045 R_CURLY@1784..1785 "}"
1046 WHITESPACE@[1785; 1790) "\n " 1046 WHITESPACE@1785..1790 "\n "
1047 LET_STMT@[1790; 1804) 1047 LET_STMT@1790..1804
1048 LET_KW@[1790; 1793) "let" 1048 LET_KW@1790..1793 "let"
1049 WHITESPACE@[1793; 1794) " " 1049 WHITESPACE@1793..1794 " "
1050 BIND_PAT@[1794; 1799) 1050 BIND_PAT@1794..1799
1051 MUT_KW@[1794; 1797) "mut" 1051 MUT_KW@1794..1797 "mut"
1052 WHITESPACE@[1797; 1798) " " 1052 WHITESPACE@1797..1798 " "
1053 NAME@[1798; 1799) 1053 NAME@1798..1799
1054 IDENT@[1798; 1799) "i" 1054 IDENT@1798..1799 "i"
1055 WHITESPACE@[1799; 1800) " " 1055 WHITESPACE@1799..1800 " "
1056 EQ@[1800; 1801) "=" 1056 EQ@1800..1801 "="
1057 WHITESPACE@[1801; 1802) " " 1057 WHITESPACE@1801..1802 " "
1058 LITERAL@[1802; 1803) 1058 LITERAL@1802..1803
1059 INT_NUMBER@[1802; 1803) "0" 1059 INT_NUMBER@1802..1803 "0"
1060 SEMICOLON@[1803; 1804) ";" 1060 SEMICOLON@1803..1804 ";"
1061 WHITESPACE@[1804; 1809) "\n " 1061 WHITESPACE@1804..1809 "\n "
1062 LOOP_EXPR@[1809; 1902) 1062 LOOP_EXPR@1809..1902
1063 LOOP_KW@[1809; 1813) "loop" 1063 LOOP_KW@1809..1813 "loop"
1064 WHITESPACE@[1813; 1814) " " 1064 WHITESPACE@1813..1814 " "
1065 BLOCK_EXPR@[1814; 1902) 1065 BLOCK_EXPR@1814..1902
1066 BLOCK@[1814; 1902) 1066 BLOCK@1814..1902
1067 L_CURLY@[1814; 1815) "{" 1067 L_CURLY@1814..1815 "{"
1068 WHITESPACE@[1815; 1816) " " 1068 WHITESPACE@1815..1816 " "
1069 EXPR_STMT@[1816; 1823) 1069 EXPR_STMT@1816..1823
1070 BIN_EXPR@[1816; 1822) 1070 BIN_EXPR@1816..1822
1071 PATH_EXPR@[1816; 1817) 1071 PATH_EXPR@1816..1817
1072 PATH@[1816; 1817) 1072 PATH@1816..1817
1073 PATH_SEGMENT@[1816; 1817) 1073 PATH_SEGMENT@1816..1817
1074 NAME_REF@[1816; 1817) 1074 NAME_REF@1816..1817
1075 IDENT@[1816; 1817) "i" 1075 IDENT@1816..1817 "i"
1076 WHITESPACE@[1817; 1818) " " 1076 WHITESPACE@1817..1818 " "
1077 PLUSEQ@[1818; 1820) "+=" 1077 PLUSEQ@1818..1820 "+="
1078 WHITESPACE@[1820; 1821) " " 1078 WHITESPACE@1820..1821 " "
1079 LITERAL@[1821; 1822) 1079 LITERAL@1821..1822
1080 INT_NUMBER@[1821; 1822) "1" 1080 INT_NUMBER@1821..1822 "1"
1081 SEMICOLON@[1822; 1823) ";" 1081 SEMICOLON@1822..1823 ";"
1082 WHITESPACE@[1823; 1824) " " 1082 WHITESPACE@1823..1824 " "
1083 EXPR_STMT@[1824; 1887) 1083 EXPR_STMT@1824..1887
1084 IF_EXPR@[1824; 1887) 1084 IF_EXPR@1824..1887
1085 IF_KW@[1824; 1826) "if" 1085 IF_KW@1824..1826 "if"
1086 WHITESPACE@[1826; 1827) " " 1086 WHITESPACE@1826..1827 " "
1087 CONDITION@[1827; 1833) 1087 CONDITION@1827..1833
1088 BIN_EXPR@[1827; 1833) 1088 BIN_EXPR@1827..1833
1089 PATH_EXPR@[1827; 1828) 1089 PATH_EXPR@1827..1828
1090 PATH@[1827; 1828) 1090 PATH@1827..1828
1091 PATH_SEGMENT@[1827; 1828) 1091 PATH_SEGMENT@1827..1828
1092 NAME_REF@[1827; 1828) 1092 NAME_REF@1827..1828
1093 IDENT@[1827; 1828) "i" 1093 IDENT@1827..1828 "i"
1094 WHITESPACE@[1828; 1829) " " 1094 WHITESPACE@1828..1829 " "
1095 EQ2@[1829; 1831) "==" 1095 EQ2@1829..1831 "=="
1096 WHITESPACE@[1831; 1832) " " 1096 WHITESPACE@1831..1832 " "
1097 LITERAL@[1832; 1833) 1097 LITERAL@1832..1833
1098 INT_NUMBER@[1832; 1833) "1" 1098 INT_NUMBER@1832..1833 "1"
1099 WHITESPACE@[1833; 1834) " " 1099 WHITESPACE@1833..1834 " "
1100 BLOCK_EXPR@[1834; 1887) 1100 BLOCK_EXPR@1834..1887
1101 BLOCK@[1834; 1887) 1101 BLOCK@1834..1887
1102 L_CURLY@[1834; 1835) "{" 1102 L_CURLY@1834..1835 "{"
1103 WHITESPACE@[1835; 1836) " " 1103 WHITESPACE@1835..1836 " "
1104 MATCH_EXPR@[1836; 1885) 1104 MATCH_EXPR@1836..1885
1105 MATCH_KW@[1836; 1841) "match" 1105 MATCH_KW@1836..1841 "match"
1106 WHITESPACE@[1841; 1842) " " 1106 WHITESPACE@1841..1842 " "
1107 PAREN_EXPR@[1842; 1852) 1107 PAREN_EXPR@1842..1852
1108 L_PAREN@[1842; 1843) "(" 1108 L_PAREN@1842..1843 "("
1109 CONTINUE_EXPR@[1843; 1851) 1109 CONTINUE_EXPR@1843..1851
1110 CONTINUE_KW@[1843; 1851) "continue" 1110 CONTINUE_KW@1843..1851 "continue"
1111 R_PAREN@[1851; 1852) ")" 1111 R_PAREN@1851..1852 ")"
1112 WHITESPACE@[1852; 1853) " " 1112 WHITESPACE@1852..1853 " "
1113 MATCH_ARM_LIST@[1853; 1885) 1113 MATCH_ARM_LIST@1853..1885
1114 L_CURLY@[1853; 1854) "{" 1114 L_CURLY@1853..1854 "{"
1115 WHITESPACE@[1854; 1855) " " 1115 WHITESPACE@1854..1855 " "
1116 MATCH_ARM@[1855; 1863) 1116 MATCH_ARM@1855..1863
1117 LITERAL_PAT@[1855; 1856) 1117 LITERAL_PAT@1855..1856
1118 LITERAL@[1855; 1856) 1118 LITERAL@1855..1856
1119 INT_NUMBER@[1855; 1856) "1" 1119 INT_NUMBER@1855..1856 "1"
1120 WHITESPACE@[1856; 1857) " " 1120 WHITESPACE@1856..1857 " "
1121 FAT_ARROW@[1857; 1859) "=>" 1121 FAT_ARROW@1857..1859 "=>"
1122 WHITESPACE@[1859; 1860) " " 1122 WHITESPACE@1859..1860 " "
1123 BLOCK_EXPR@[1860; 1863) 1123 BLOCK_EXPR@1860..1863
1124 BLOCK@[1860; 1863) 1124 BLOCK@1860..1863
1125 L_CURLY@[1860; 1861) "{" 1125 L_CURLY@1860..1861 "{"
1126 WHITESPACE@[1861; 1862) " " 1126 WHITESPACE@1861..1862 " "
1127 R_CURLY@[1862; 1863) "}" 1127 R_CURLY@1862..1863 "}"
1128 COMMA@[1863; 1864) "," 1128 COMMA@1863..1864 ","
1129 WHITESPACE@[1864; 1865) " " 1129 WHITESPACE@1864..1865 " "
1130 MATCH_ARM@[1865; 1883) 1130 MATCH_ARM@1865..1883
1131 PLACEHOLDER_PAT@[1865; 1866) 1131 PLACEHOLDER_PAT@1865..1866
1132 UNDERSCORE@[1865; 1866) "_" 1132 UNDERSCORE@1865..1866 "_"
1133 WHITESPACE@[1866; 1867) " " 1133 WHITESPACE@1866..1867 " "
1134 FAT_ARROW@[1867; 1869) "=>" 1134 FAT_ARROW@1867..1869 "=>"
1135 WHITESPACE@[1869; 1870) " " 1135 WHITESPACE@1869..1870 " "
1136 MACRO_CALL@[1870; 1883) 1136 MACRO_CALL@1870..1883
1137 PATH@[1870; 1875) 1137 PATH@1870..1875
1138 PATH_SEGMENT@[1870; 1875) 1138 PATH_SEGMENT@1870..1875
1139 NAME_REF@[1870; 1875) 1139 NAME_REF@1870..1875
1140 IDENT@[1870; 1875) "panic" 1140 IDENT@1870..1875 "panic"
1141 BANG@[1875; 1876) "!" 1141 BANG@1875..1876 "!"
1142 TOKEN_TREE@[1876; 1883) 1142 TOKEN_TREE@1876..1883
1143 L_PAREN@[1876; 1877) "(" 1143 L_PAREN@1876..1877 "("
1144 STRING@[1877; 1882) "\"wat\"" 1144 STRING@1877..1882 "\"wat\""
1145 R_PAREN@[1882; 1883) ")" 1145 R_PAREN@1882..1883 ")"
1146 WHITESPACE@[1883; 1884) " " 1146 WHITESPACE@1883..1884 " "
1147 R_CURLY@[1884; 1885) "}" 1147 R_CURLY@1884..1885 "}"
1148 WHITESPACE@[1885; 1886) " " 1148 WHITESPACE@1885..1886 " "
1149 R_CURLY@[1886; 1887) "}" 1149 R_CURLY@1886..1887 "}"
1150 WHITESPACE@[1887; 1894) "\n " 1150 WHITESPACE@1887..1894 "\n "
1151 EXPR_STMT@[1894; 1900) 1151 EXPR_STMT@1894..1900
1152 BREAK_EXPR@[1894; 1899) 1152 BREAK_EXPR@1894..1899
1153 BREAK_KW@[1894; 1899) "break" 1153 BREAK_KW@1894..1899 "break"
1154 SEMICOLON@[1899; 1900) ";" 1154 SEMICOLON@1899..1900 ";"
1155 WHITESPACE@[1900; 1901) " " 1155 WHITESPACE@1900..1901 " "
1156 R_CURLY@[1901; 1902) "}" 1156 R_CURLY@1901..1902 "}"
1157 WHITESPACE@[1902; 1903) "\n" 1157 WHITESPACE@1902..1903 "\n"
1158 R_CURLY@[1903; 1904) "}" 1158 R_CURLY@1903..1904 "}"
1159 WHITESPACE@[1904; 1906) "\n\n" 1159 WHITESPACE@1904..1906 "\n\n"
1160 FN_DEF@[1906; 1960) 1160 FN_DEF@1906..1960
1161 FN_KW@[1906; 1908) "fn" 1161 FN_KW@1906..1908 "fn"
1162 WHITESPACE@[1908; 1909) " " 1162 WHITESPACE@1908..1909 " "
1163 NAME@[1909; 1921) 1163 NAME@1909..1921
1164 IDENT@[1909; 1921) "evil_lincoln" 1164 IDENT@1909..1921 "evil_lincoln"
1165 PARAM_LIST@[1921; 1923) 1165 PARAM_LIST@1921..1923
1166 L_PAREN@[1921; 1922) "(" 1166 L_PAREN@1921..1922 "("
1167 R_PAREN@[1922; 1923) ")" 1167 R_PAREN@1922..1923 ")"
1168 WHITESPACE@[1923; 1924) " " 1168 WHITESPACE@1923..1924 " "
1169 BLOCK_EXPR@[1924; 1960) 1169 BLOCK_EXPR@1924..1960
1170 BLOCK@[1924; 1960) 1170 BLOCK@1924..1960
1171 L_CURLY@[1924; 1925) "{" 1171 L_CURLY@1924..1925 "{"
1172 WHITESPACE@[1925; 1926) " " 1172 WHITESPACE@1925..1926 " "
1173 LET_STMT@[1926; 1958) 1173 LET_STMT@1926..1958
1174 LET_KW@[1926; 1929) "let" 1174 LET_KW@1926..1929 "let"
1175 WHITESPACE@[1929; 1930) " " 1175 WHITESPACE@1929..1930 " "
1176 BIND_PAT@[1930; 1935) 1176 BIND_PAT@1930..1935
1177 NAME@[1930; 1935) 1177 NAME@1930..1935
1178 IDENT@[1930; 1935) "_evil" 1178 IDENT@1930..1935 "_evil"
1179 WHITESPACE@[1935; 1936) " " 1179 WHITESPACE@1935..1936 " "
1180 EQ@[1936; 1937) "=" 1180 EQ@1936..1937 "="
1181 WHITESPACE@[1937; 1938) " " 1181 WHITESPACE@1937..1938 " "
1182 MACRO_CALL@[1938; 1957) 1182 MACRO_CALL@1938..1957
1183 PATH@[1938; 1945) 1183 PATH@1938..1945
1184 PATH_SEGMENT@[1938; 1945) 1184 PATH_SEGMENT@1938..1945
1185 NAME_REF@[1938; 1945) 1185 NAME_REF@1938..1945
1186 IDENT@[1938; 1945) "println" 1186 IDENT@1938..1945 "println"
1187 BANG@[1945; 1946) "!" 1187 BANG@1945..1946 "!"
1188 TOKEN_TREE@[1946; 1957) 1188 TOKEN_TREE@1946..1957
1189 L_PAREN@[1946; 1947) "(" 1189 L_PAREN@1946..1947 "("
1190 STRING@[1947; 1956) "\"lincoln\"" 1190 STRING@1947..1956 "\"lincoln\""
1191 R_PAREN@[1956; 1957) ")" 1191 R_PAREN@1956..1957 ")"
1192 SEMICOLON@[1957; 1958) ";" 1192 SEMICOLON@1957..1958 ";"
1193 WHITESPACE@[1958; 1959) " " 1193 WHITESPACE@1958..1959 " "
1194 R_CURLY@[1959; 1960) "}" 1194 R_CURLY@1959..1960 "}"
1195 WHITESPACE@[1960; 1962) "\n\n" 1195 WHITESPACE@1960..1962 "\n\n"
1196 FN_DEF@[1962; 2198) 1196 FN_DEF@1962..2198
1197 FN_KW@[1962; 1964) "fn" 1197 FN_KW@1962..1964 "fn"
1198 WHITESPACE@[1964; 1965) " " 1198 WHITESPACE@1964..1965 " "
1199 NAME@[1965; 1969) 1199 NAME@1965..1969
1200 IDENT@[1965; 1969) "dots" 1200 IDENT@1965..1969 "dots"
1201 PARAM_LIST@[1969; 1971) 1201 PARAM_LIST@1969..1971
1202 L_PAREN@[1969; 1970) "(" 1202 L_PAREN@1969..1970 "("
1203 R_PAREN@[1970; 1971) ")" 1203 R_PAREN@1970..1971 ")"
1204 WHITESPACE@[1971; 1972) " " 1204 WHITESPACE@1971..1972 " "
1205 BLOCK_EXPR@[1972; 2198) 1205 BLOCK_EXPR@1972..2198
1206 BLOCK@[1972; 2198) 1206 BLOCK@1972..2198
1207 L_CURLY@[1972; 1973) "{" 1207 L_CURLY@1972..1973 "{"
1208 WHITESPACE@[1973; 1978) "\n " 1208 WHITESPACE@1973..1978 "\n "
1209 EXPR_STMT@[1978; 2196) 1209 EXPR_STMT@1978..2196
1210 MACRO_CALL@[1978; 2195) 1210 MACRO_CALL@1978..2195
1211 PATH@[1978; 1987) 1211 PATH@1978..1987
1212 PATH_SEGMENT@[1978; 1987) 1212 PATH_SEGMENT@1978..1987
1213 NAME_REF@[1978; 1987) 1213 NAME_REF@1978..1987
1214 IDENT@[1978; 1987) "assert_eq" 1214 IDENT@1978..1987 "assert_eq"
1215 BANG@[1987; 1988) "!" 1215 BANG@1987..1988 "!"
1216 TOKEN_TREE@[1988; 2195) 1216 TOKEN_TREE@1988..2195
1217 L_PAREN@[1988; 1989) "(" 1217 L_PAREN@1988..1989 "("
1218 IDENT@[1989; 1995) "String" 1218 IDENT@1989..1995 "String"
1219 COLON@[1995; 1996) ":" 1219 COLON@1995..1996 ":"
1220 COLON@[1996; 1997) ":" 1220 COLON@1996..1997 ":"
1221 IDENT@[1997; 2001) "from" 1221 IDENT@1997..2001 "from"
1222 TOKEN_TREE@[2001; 2055) 1222 TOKEN_TREE@2001..2055
1223 L_PAREN@[2001; 2002) "(" 1223 L_PAREN@2001..2002 "("
1224 STRING@[2002; 2054) "\".................... ..." 1224 STRING@2002..2054 "\".................... ..."
1225 R_PAREN@[2054; 2055) ")" 1225 R_PAREN@2054..2055 ")"
1226 COMMA@[2055; 2056) "," 1226 COMMA@2055..2056 ","
1227 WHITESPACE@[2056; 2072) "\n " 1227 WHITESPACE@2056..2072 "\n "
1228 IDENT@[2072; 2078) "format" 1228 IDENT@2072..2078 "format"
1229 BANG@[2078; 2079) "!" 1229 BANG@2078..2079 "!"
1230 TOKEN_TREE@[2079; 2194) 1230 TOKEN_TREE@2079..2194
1231 L_PAREN@[2079; 2080) "(" 1231 L_PAREN@2079..2080 "("
1232 STRING@[2080; 2086) "\"{:?}\"" 1232 STRING@2080..2086 "\"{:?}\""
1233 COMMA@[2086; 2087) "," 1233 COMMA@2086..2087 ","
1234 WHITESPACE@[2087; 2088) " " 1234 WHITESPACE@2087..2088 " "
1235 DOT@[2088; 2089) "." 1235 DOT@2088..2089 "."
1236 DOT@[2089; 2090) "." 1236 DOT@2089..2090 "."
1237 WHITESPACE@[2090; 2091) " " 1237 WHITESPACE@2090..2091 " "
1238 DOT@[2091; 2092) "." 1238 DOT@2091..2092 "."
1239 DOT@[2092; 2093) "." 1239 DOT@2092..2093 "."
1240 WHITESPACE@[2093; 2094) " " 1240 WHITESPACE@2093..2094 " "
1241 DOT@[2094; 2095) "." 1241 DOT@2094..2095 "."
1242 DOT@[2095; 2096) "." 1242 DOT@2095..2096 "."
1243 WHITESPACE@[2096; 2097) " " 1243 WHITESPACE@2096..2097 " "
1244 DOT@[2097; 2098) "." 1244 DOT@2097..2098 "."
1245 DOT@[2098; 2099) "." 1245 DOT@2098..2099 "."
1246 WHITESPACE@[2099; 2100) " " 1246 WHITESPACE@2099..2100 " "
1247 DOT@[2100; 2101) "." 1247 DOT@2100..2101 "."
1248 DOT@[2101; 2102) "." 1248 DOT@2101..2102 "."
1249 WHITESPACE@[2102; 2103) " " 1249 WHITESPACE@2102..2103 " "
1250 DOT@[2103; 2104) "." 1250 DOT@2103..2104 "."
1251 DOT@[2104; 2105) "." 1251 DOT@2104..2105 "."
1252 WHITESPACE@[2105; 2106) " " 1252 WHITESPACE@2105..2106 " "
1253 DOT@[2106; 2107) "." 1253 DOT@2106..2107 "."
1254 DOT@[2107; 2108) "." 1254 DOT@2107..2108 "."
1255 WHITESPACE@[2108; 2109) " " 1255 WHITESPACE@2108..2109 " "
1256 DOT@[2109; 2110) "." 1256 DOT@2109..2110 "."
1257 DOT@[2110; 2111) "." 1257 DOT@2110..2111 "."
1258 WHITESPACE@[2111; 2112) " " 1258 WHITESPACE@2111..2112 " "
1259 DOT@[2112; 2113) "." 1259 DOT@2112..2113 "."
1260 DOT@[2113; 2114) "." 1260 DOT@2113..2114 "."
1261 WHITESPACE@[2114; 2115) " " 1261 WHITESPACE@2114..2115 " "
1262 DOT@[2115; 2116) "." 1262 DOT@2115..2116 "."
1263 DOT@[2116; 2117) "." 1263 DOT@2116..2117 "."
1264 WHITESPACE@[2117; 2118) " " 1264 WHITESPACE@2117..2118 " "
1265 DOT@[2118; 2119) "." 1265 DOT@2118..2119 "."
1266 DOT@[2119; 2120) "." 1266 DOT@2119..2120 "."
1267 WHITESPACE@[2120; 2121) " " 1267 WHITESPACE@2120..2121 " "
1268 DOT@[2121; 2122) "." 1268 DOT@2121..2122 "."
1269 DOT@[2122; 2123) "." 1269 DOT@2122..2123 "."
1270 WHITESPACE@[2123; 2124) " " 1270 WHITESPACE@2123..2124 " "
1271 DOT@[2124; 2125) "." 1271 DOT@2124..2125 "."
1272 DOT@[2125; 2126) "." 1272 DOT@2125..2126 "."
1273 WHITESPACE@[2126; 2158) "\n ..." 1273 WHITESPACE@2126..2158 "\n ..."
1274 DOT@[2158; 2159) "." 1274 DOT@2158..2159 "."
1275 DOT@[2159; 2160) "." 1275 DOT@2159..2160 "."
1276 WHITESPACE@[2160; 2161) " " 1276 WHITESPACE@2160..2161 " "
1277 DOT@[2161; 2162) "." 1277 DOT@2161..2162 "."
1278 DOT@[2162; 2163) "." 1278 DOT@2162..2163 "."
1279 WHITESPACE@[2163; 2164) " " 1279 WHITESPACE@2163..2164 " "
1280 DOT@[2164; 2165) "." 1280 DOT@2164..2165 "."
1281 DOT@[2165; 2166) "." 1281 DOT@2165..2166 "."
1282 WHITESPACE@[2166; 2167) " " 1282 WHITESPACE@2166..2167 " "
1283 DOT@[2167; 2168) "." 1283 DOT@2167..2168 "."
1284 DOT@[2168; 2169) "." 1284 DOT@2168..2169 "."
1285 WHITESPACE@[2169; 2170) " " 1285 WHITESPACE@2169..2170 " "
1286 DOT@[2170; 2171) "." 1286 DOT@2170..2171 "."
1287 DOT@[2171; 2172) "." 1287 DOT@2171..2172 "."
1288 WHITESPACE@[2172; 2173) " " 1288 WHITESPACE@2172..2173 " "
1289 DOT@[2173; 2174) "." 1289 DOT@2173..2174 "."
1290 DOT@[2174; 2175) "." 1290 DOT@2174..2175 "."
1291 WHITESPACE@[2175; 2176) " " 1291 WHITESPACE@2175..2176 " "
1292 DOT@[2176; 2177) "." 1292 DOT@2176..2177 "."
1293 DOT@[2177; 2178) "." 1293 DOT@2177..2178 "."
1294 WHITESPACE@[2178; 2179) " " 1294 WHITESPACE@2178..2179 " "
1295 DOT@[2179; 2180) "." 1295 DOT@2179..2180 "."
1296 DOT@[2180; 2181) "." 1296 DOT@2180..2181 "."
1297 WHITESPACE@[2181; 2182) " " 1297 WHITESPACE@2181..2182 " "
1298 DOT@[2182; 2183) "." 1298 DOT@2182..2183 "."
1299 DOT@[2183; 2184) "." 1299 DOT@2183..2184 "."
1300 WHITESPACE@[2184; 2185) " " 1300 WHITESPACE@2184..2185 " "
1301 DOT@[2185; 2186) "." 1301 DOT@2185..2186 "."
1302 DOT@[2186; 2187) "." 1302 DOT@2186..2187 "."
1303 WHITESPACE@[2187; 2188) " " 1303 WHITESPACE@2187..2188 " "
1304 DOT@[2188; 2189) "." 1304 DOT@2188..2189 "."
1305 DOT@[2189; 2190) "." 1305 DOT@2189..2190 "."
1306 WHITESPACE@[2190; 2191) " " 1306 WHITESPACE@2190..2191 " "
1307 DOT@[2191; 2192) "." 1307 DOT@2191..2192 "."
1308 DOT@[2192; 2193) "." 1308 DOT@2192..2193 "."
1309 R_PAREN@[2193; 2194) ")" 1309 R_PAREN@2193..2194 ")"
1310 R_PAREN@[2194; 2195) ")" 1310 R_PAREN@2194..2195 ")"
1311 SEMICOLON@[2195; 2196) ";" 1311 SEMICOLON@2195..2196 ";"
1312 WHITESPACE@[2196; 2197) "\n" 1312 WHITESPACE@2196..2197 "\n"
1313 R_CURLY@[2197; 2198) "}" 1313 R_CURLY@2197..2198 "}"
1314 WHITESPACE@[2198; 2200) "\n\n" 1314 WHITESPACE@2198..2200 "\n\n"
1315 FN_DEF@[2200; 2693) 1315 FN_DEF@2200..2693
1316 FN_KW@[2200; 2202) "fn" 1316 FN_KW@2200..2202 "fn"
1317 WHITESPACE@[2202; 2203) " " 1317 WHITESPACE@2202..2203 " "
1318 NAME@[2203; 2205) 1318 NAME@2203..2205
1319 IDENT@[2203; 2205) "u8" 1319 IDENT@2203..2205 "u8"
1320 PARAM_LIST@[2205; 2213) 1320 PARAM_LIST@2205..2213
1321 L_PAREN@[2205; 2206) "(" 1321 L_PAREN@2205..2206 "("
1322 PARAM@[2206; 2212) 1322 PARAM@2206..2212
1323 BIND_PAT@[2206; 2208) 1323 BIND_PAT@2206..2208
1324 NAME@[2206; 2208) 1324 NAME@2206..2208
1325 IDENT@[2206; 2208) "u8" 1325 IDENT@2206..2208 "u8"
1326 COLON@[2208; 2209) ":" 1326 COLON@2208..2209 ":"
1327 WHITESPACE@[2209; 2210) " " 1327 WHITESPACE@2209..2210 " "
1328 PATH_TYPE@[2210; 2212) 1328 PATH_TYPE@2210..2212
1329 PATH@[2210; 2212) 1329 PATH@2210..2212
1330 PATH_SEGMENT@[2210; 2212) 1330 PATH_SEGMENT@2210..2212
1331 NAME_REF@[2210; 2212) 1331 NAME_REF@2210..2212
1332 IDENT@[2210; 2212) "u8" 1332 IDENT@2210..2212 "u8"
1333 R_PAREN@[2212; 2213) ")" 1333 R_PAREN@2212..2213 ")"
1334 WHITESPACE@[2213; 2214) " " 1334 WHITESPACE@2213..2214 " "
1335 BLOCK_EXPR@[2214; 2693) 1335 BLOCK_EXPR@2214..2693
1336 BLOCK@[2214; 2693) 1336 BLOCK@2214..2693
1337 L_CURLY@[2214; 2215) "{" 1337 L_CURLY@2214..2215 "{"
1338 WHITESPACE@[2215; 2220) "\n " 1338 WHITESPACE@2215..2220 "\n "
1339 IF_EXPR@[2220; 2691) 1339 IF_EXPR@2220..2691
1340 IF_KW@[2220; 2222) "if" 1340 IF_KW@2220..2222 "if"
1341 WHITESPACE@[2222; 2223) " " 1341 WHITESPACE@2222..2223 " "
1342 CONDITION@[2223; 2232) 1342 CONDITION@2223..2232
1343 BIN_EXPR@[2223; 2232) 1343 BIN_EXPR@2223..2232
1344 PATH_EXPR@[2223; 2225) 1344 PATH_EXPR@2223..2225
1345 PATH@[2223; 2225) 1345 PATH@2223..2225
1346 PATH_SEGMENT@[2223; 2225) 1346 PATH_SEGMENT@2223..2225
1347 NAME_REF@[2223; 2225) 1347 NAME_REF@2223..2225
1348 IDENT@[2223; 2225) "u8" 1348 IDENT@2223..2225 "u8"
1349 WHITESPACE@[2225; 2226) " " 1349 WHITESPACE@2225..2226 " "
1350 NEQ@[2226; 2228) "!=" 1350 NEQ@2226..2228 "!="
1351 WHITESPACE@[2228; 2229) " " 1351 WHITESPACE@2228..2229 " "
1352 LITERAL@[2229; 2232) 1352 LITERAL@2229..2232
1353 INT_NUMBER@[2229; 2232) "0u8" 1353 INT_NUMBER@2229..2232 "0u8"
1354 WHITESPACE@[2232; 2233) " " 1354 WHITESPACE@2232..2233 " "
1355 BLOCK_EXPR@[2233; 2691) 1355 BLOCK_EXPR@2233..2691
1356 BLOCK@[2233; 2691) 1356 BLOCK@2233..2691
1357 L_CURLY@[2233; 2234) "{" 1357 L_CURLY@2233..2234 "{"
1358 WHITESPACE@[2234; 2243) "\n " 1358 WHITESPACE@2234..2243 "\n "
1359 EXPR_STMT@[2243; 2685) 1359 EXPR_STMT@2243..2685
1360 MACRO_CALL@[2243; 2684) 1360 MACRO_CALL@2243..2684
1361 PATH@[2243; 2252) 1361 PATH@2243..2252
1362 PATH_SEGMENT@[2243; 2252) 1362 PATH_SEGMENT@2243..2252
1363 NAME_REF@[2243; 2252) 1363 NAME_REF@2243..2252
1364 IDENT@[2243; 2252) "assert_eq" 1364 IDENT@2243..2252 "assert_eq"
1365 BANG@[2252; 2253) "!" 1365 BANG@2252..2253 "!"
1366 TOKEN_TREE@[2253; 2684) 1366 TOKEN_TREE@2253..2684
1367 L_PAREN@[2253; 2254) "(" 1367 L_PAREN@2253..2254 "("
1368 INT_NUMBER@[2254; 2257) "8u8" 1368 INT_NUMBER@2254..2257 "8u8"
1369 COMMA@[2257; 2258) "," 1369 COMMA@2257..2258 ","
1370 WHITESPACE@[2258; 2259) " " 1370 WHITESPACE@2258..2259 " "
1371 TOKEN_TREE@[2259; 2683) 1371 TOKEN_TREE@2259..2683
1372 L_CURLY@[2259; 2260) "{" 1372 L_CURLY@2259..2260 "{"
1373 WHITESPACE@[2260; 2273) "\n " 1373 WHITESPACE@2260..2273 "\n "
1374 IDENT@[2273; 2284) "macro_rules" 1374 IDENT@2273..2284 "macro_rules"
1375 BANG@[2284; 2285) "!" 1375 BANG@2284..2285 "!"
1376 WHITESPACE@[2285; 2286) " " 1376 WHITESPACE@2285..2286 " "
1377 IDENT@[2286; 2288) "u8" 1377 IDENT@2286..2288 "u8"
1378 WHITESPACE@[2288; 2289) " " 1378 WHITESPACE@2288..2289 " "
1379 TOKEN_TREE@[2289; 2567) 1379 TOKEN_TREE@2289..2567
1380 L_CURLY@[2289; 2290) "{" 1380 L_CURLY@2289..2290 "{"
1381 WHITESPACE@[2290; 2307) "\n " 1381 WHITESPACE@2290..2307 "\n "
1382 TOKEN_TREE@[2307; 2311) 1382 TOKEN_TREE@2307..2311
1383 L_PAREN@[2307; 2308) "(" 1383 L_PAREN@2307..2308 "("
1384 IDENT@[2308; 2310) "u8" 1384 IDENT@2308..2310 "u8"
1385 R_PAREN@[2310; 2311) ")" 1385 R_PAREN@2310..2311 ")"
1386 WHITESPACE@[2311; 2312) " " 1386 WHITESPACE@2311..2312 " "
1387 EQ@[2312; 2313) "=" 1387 EQ@2312..2313 "="
1388 R_ANGLE@[2313; 2314) ">" 1388 R_ANGLE@2313..2314 ">"
1389 WHITESPACE@[2314; 2315) " " 1389 WHITESPACE@2314..2315 " "
1390 TOKEN_TREE@[2315; 2552) 1390 TOKEN_TREE@2315..2552
1391 L_CURLY@[2315; 2316) "{" 1391 L_CURLY@2315..2316 "{"
1392 WHITESPACE@[2316; 2337) "\n " 1392 WHITESPACE@2316..2337 "\n "
1393 MOD_KW@[2337; 2340) "mod" 1393 MOD_KW@2337..2340 "mod"
1394 WHITESPACE@[2340; 2341) " " 1394 WHITESPACE@2340..2341 " "
1395 IDENT@[2341; 2343) "u8" 1395 IDENT@2341..2343 "u8"
1396 WHITESPACE@[2343; 2344) " " 1396 WHITESPACE@2343..2344 " "
1397 TOKEN_TREE@[2344; 2534) 1397 TOKEN_TREE@2344..2534
1398 L_CURLY@[2344; 2345) "{" 1398 L_CURLY@2344..2345 "{"
1399 WHITESPACE@[2345; 2370) "\n ..." 1399 WHITESPACE@2345..2370 "\n ..."
1400 PUB_KW@[2370; 2373) "pub" 1400 PUB_KW@2370..2373 "pub"
1401 WHITESPACE@[2373; 2374) " " 1401 WHITESPACE@2373..2374 " "
1402 FN_KW@[2374; 2376) "fn" 1402 FN_KW@2374..2376 "fn"
1403 WHITESPACE@[2376; 2377) " " 1403 WHITESPACE@2376..2377 " "
1404 IDENT@[2377; 2379) "u8" 1404 IDENT@2377..2379 "u8"
1405 L_ANGLE@[2379; 2380) "<" 1405 L_ANGLE@2379..2380 "<"
1406 LIFETIME@[2380; 2383) "\'u8" 1406 LIFETIME@2380..2383 "\'u8"
1407 COLON@[2383; 2384) ":" 1407 COLON@2383..2384 ":"
1408 WHITESPACE@[2384; 2385) " " 1408 WHITESPACE@2384..2385 " "
1409 LIFETIME@[2385; 2388) "\'u8" 1409 LIFETIME@2385..2388 "\'u8"
1410 WHITESPACE@[2388; 2389) " " 1410 WHITESPACE@2388..2389 " "
1411 PLUS@[2389; 2390) "+" 1411 PLUS@2389..2390 "+"
1412 WHITESPACE@[2390; 2391) " " 1412 WHITESPACE@2390..2391 " "
1413 LIFETIME@[2391; 2394) "\'u8" 1413 LIFETIME@2391..2394 "\'u8"
1414 R_ANGLE@[2394; 2395) ">" 1414 R_ANGLE@2394..2395 ">"
1415 TOKEN_TREE@[2395; 2408) 1415 TOKEN_TREE@2395..2408
1416 L_PAREN@[2395; 2396) "(" 1416 L_PAREN@2395..2396 "("
1417 IDENT@[2396; 2398) "u8" 1417 IDENT@2396..2398 "u8"
1418 COLON@[2398; 2399) ":" 1418 COLON@2398..2399 ":"
1419 WHITESPACE@[2399; 2400) " " 1419 WHITESPACE@2399..2400 " "
1420 AMP@[2400; 2401) "&" 1420 AMP@2400..2401 "&"
1421 LIFETIME@[2401; 2404) "\'u8" 1421 LIFETIME@2401..2404 "\'u8"
1422 WHITESPACE@[2404; 2405) " " 1422 WHITESPACE@2404..2405 " "
1423 IDENT@[2405; 2407) "u8" 1423 IDENT@2405..2407 "u8"
1424 R_PAREN@[2407; 2408) ")" 1424 R_PAREN@2407..2408 ")"
1425 WHITESPACE@[2408; 2409) " " 1425 WHITESPACE@2408..2409 " "
1426 MINUS@[2409; 2410) "-" 1426 MINUS@2409..2410 "-"
1427 R_ANGLE@[2410; 2411) ">" 1427 R_ANGLE@2410..2411 ">"
1428 WHITESPACE@[2411; 2412) " " 1428 WHITESPACE@2411..2412 " "
1429 AMP@[2412; 2413) "&" 1429 AMP@2412..2413 "&"
1430 LIFETIME@[2413; 2416) "\'u8" 1430 LIFETIME@2413..2416 "\'u8"
1431 WHITESPACE@[2416; 2417) " " 1431 WHITESPACE@2416..2417 " "
1432 IDENT@[2417; 2419) "u8" 1432 IDENT@2417..2419 "u8"
1433 WHITESPACE@[2419; 2420) " " 1433 WHITESPACE@2419..2420 " "
1434 TOKEN_TREE@[2420; 2512) 1434 TOKEN_TREE@2420..2512
1435 L_CURLY@[2420; 2421) "{" 1435 L_CURLY@2420..2421 "{"
1436 WHITESPACE@[2421; 2450) "\n ..." 1436 WHITESPACE@2421..2450 "\n ..."
1437 STRING@[2450; 2454) "\"u8\"" 1437 STRING@2450..2454 "\"u8\""
1438 SEMICOLON@[2454; 2455) ";" 1438 SEMICOLON@2454..2455 ";"
1439 WHITESPACE@[2455; 2484) "\n ..." 1439 WHITESPACE@2455..2484 "\n ..."
1440 IDENT@[2484; 2486) "u8" 1440 IDENT@2484..2486 "u8"
1441 WHITESPACE@[2486; 2511) "\n ..." 1441 WHITESPACE@2486..2511 "\n ..."
1442 R_CURLY@[2511; 2512) "}" 1442 R_CURLY@2511..2512 "}"
1443 WHITESPACE@[2512; 2533) "\n " 1443 WHITESPACE@2512..2533 "\n "
1444 R_CURLY@[2533; 2534) "}" 1444 R_CURLY@2533..2534 "}"
1445 WHITESPACE@[2534; 2551) "\n " 1445 WHITESPACE@2534..2551 "\n "
1446 R_CURLY@[2551; 2552) "}" 1446 R_CURLY@2551..2552 "}"
1447 SEMICOLON@[2552; 2553) ";" 1447 SEMICOLON@2552..2553 ";"
1448 WHITESPACE@[2553; 2566) "\n " 1448 WHITESPACE@2553..2566 "\n "
1449 R_CURLY@[2566; 2567) "}" 1449 R_CURLY@2566..2567 "}"
1450 WHITESPACE@[2567; 2581) "\n\n " 1450 WHITESPACE@2567..2581 "\n\n "
1451 IDENT@[2581; 2583) "u8" 1451 IDENT@2581..2583 "u8"
1452 BANG@[2583; 2584) "!" 1452 BANG@2583..2584 "!"
1453 TOKEN_TREE@[2584; 2588) 1453 TOKEN_TREE@2584..2588
1454 L_PAREN@[2584; 2585) "(" 1454 L_PAREN@2584..2585 "("
1455 IDENT@[2585; 2587) "u8" 1455 IDENT@2585..2587 "u8"
1456 R_PAREN@[2587; 2588) ")" 1456 R_PAREN@2587..2588 ")"
1457 SEMICOLON@[2588; 2589) ";" 1457 SEMICOLON@2588..2589 ";"
1458 WHITESPACE@[2589; 2602) "\n " 1458 WHITESPACE@2589..2602 "\n "
1459 LET_KW@[2602; 2605) "let" 1459 LET_KW@2602..2605 "let"
1460 WHITESPACE@[2605; 2606) " " 1460 WHITESPACE@2605..2606 " "
1461 AMP@[2606; 2607) "&" 1461 AMP@2606..2607 "&"
1462 IDENT@[2607; 2609) "u8" 1462 IDENT@2607..2609 "u8"
1463 COLON@[2609; 2610) ":" 1463 COLON@2609..2610 ":"
1464 WHITESPACE@[2610; 2611) " " 1464 WHITESPACE@2610..2611 " "
1465 AMP@[2611; 2612) "&" 1465 AMP@2611..2612 "&"
1466 IDENT@[2612; 2614) "u8" 1466 IDENT@2612..2614 "u8"
1467 WHITESPACE@[2614; 2615) " " 1467 WHITESPACE@2614..2615 " "
1468 EQ@[2615; 2616) "=" 1468 EQ@2615..2616 "="
1469 WHITESPACE@[2616; 2617) " " 1469 WHITESPACE@2616..2617 " "
1470 IDENT@[2617; 2619) "u8" 1470 IDENT@2617..2619 "u8"
1471 COLON@[2619; 2620) ":" 1471 COLON@2619..2620 ":"
1472 COLON@[2620; 2621) ":" 1472 COLON@2620..2621 ":"
1473 IDENT@[2621; 2623) "u8" 1473 IDENT@2621..2623 "u8"
1474 TOKEN_TREE@[2623; 2629) 1474 TOKEN_TREE@2623..2629
1475 L_PAREN@[2623; 2624) "(" 1475 L_PAREN@2623..2624 "("
1476 AMP@[2624; 2625) "&" 1476 AMP@2624..2625 "&"
1477 INT_NUMBER@[2625; 2628) "8u8" 1477 INT_NUMBER@2625..2628 "8u8"
1478 R_PAREN@[2628; 2629) ")" 1478 R_PAREN@2628..2629 ")"
1479 SEMICOLON@[2629; 2630) ";" 1479 SEMICOLON@2629..2630 ";"
1480 WHITESPACE@[2630; 2643) "\n " 1480 WHITESPACE@2630..2643 "\n "
1481 CRATE_KW@[2643; 2648) "crate" 1481 CRATE_KW@2643..2648 "crate"
1482 COLON@[2648; 2649) ":" 1482 COLON@2648..2649 ":"
1483 COLON@[2649; 2650) ":" 1483 COLON@2649..2650 ":"
1484 IDENT@[2650; 2652) "u8" 1484 IDENT@2650..2652 "u8"
1485 TOKEN_TREE@[2652; 2657) 1485 TOKEN_TREE@2652..2657
1486 L_PAREN@[2652; 2653) "(" 1486 L_PAREN@2652..2653 "("
1487 INT_NUMBER@[2653; 2656) "0u8" 1487 INT_NUMBER@2653..2656 "0u8"
1488 R_PAREN@[2656; 2657) ")" 1488 R_PAREN@2656..2657 ")"
1489 SEMICOLON@[2657; 2658) ";" 1489 SEMICOLON@2657..2658 ";"
1490 WHITESPACE@[2658; 2671) "\n " 1490 WHITESPACE@2658..2671 "\n "
1491 IDENT@[2671; 2673) "u8" 1491 IDENT@2671..2673 "u8"
1492 WHITESPACE@[2673; 2682) "\n " 1492 WHITESPACE@2673..2682 "\n "
1493 R_CURLY@[2682; 2683) "}" 1493 R_CURLY@2682..2683 "}"
1494 R_PAREN@[2683; 2684) ")" 1494 R_PAREN@2683..2684 ")"
1495 SEMICOLON@[2684; 2685) ";" 1495 SEMICOLON@2684..2685 ";"
1496 WHITESPACE@[2685; 2690) "\n " 1496 WHITESPACE@2685..2690 "\n "
1497 R_CURLY@[2690; 2691) "}" 1497 R_CURLY@2690..2691 "}"
1498 WHITESPACE@[2691; 2692) "\n" 1498 WHITESPACE@2691..2692 "\n"
1499 R_CURLY@[2692; 2693) "}" 1499 R_CURLY@2692..2693 "}"
1500 WHITESPACE@[2693; 2695) "\n\n" 1500 WHITESPACE@2693..2695 "\n\n"
1501 FN_DEF@[2695; 2832) 1501 FN_DEF@2695..2832
1502 FN_KW@[2695; 2697) "fn" 1502 FN_KW@2695..2697 "fn"
1503 WHITESPACE@[2697; 2698) " " 1503 WHITESPACE@2697..2698 " "
1504 NAME@[2698; 2703) 1504 NAME@2698..2703
1505 IDENT@[2698; 2703) "fishy" 1505 IDENT@2698..2703 "fishy"
1506 PARAM_LIST@[2703; 2705) 1506 PARAM_LIST@2703..2705
1507 L_PAREN@[2703; 2704) "(" 1507 L_PAREN@2703..2704 "("
1508 R_PAREN@[2704; 2705) ")" 1508 R_PAREN@2704..2705 ")"
1509 WHITESPACE@[2705; 2706) " " 1509 WHITESPACE@2705..2706 " "
1510 BLOCK_EXPR@[2706; 2832) 1510 BLOCK_EXPR@2706..2832
1511 BLOCK@[2706; 2832) 1511 BLOCK@2706..2832
1512 L_CURLY@[2706; 2707) "{" 1512 L_CURLY@2706..2707 "{"
1513 WHITESPACE@[2707; 2712) "\n " 1513 WHITESPACE@2707..2712 "\n "
1514 EXPR_STMT@[2712; 2830) 1514 EXPR_STMT@2712..2830
1515 MACRO_CALL@[2712; 2829) 1515 MACRO_CALL@2712..2829
1516 PATH@[2712; 2721) 1516 PATH@2712..2721
1517 PATH_SEGMENT@[2712; 2721) 1517 PATH_SEGMENT@2712..2721
1518 NAME_REF@[2712; 2721) 1518 NAME_REF@2712..2721
1519 IDENT@[2712; 2721) "assert_eq" 1519 IDENT@2712..2721 "assert_eq"
1520 BANG@[2721; 2722) "!" 1520 BANG@2721..2722 "!"
1521 TOKEN_TREE@[2722; 2829) 1521 TOKEN_TREE@2722..2829
1522 L_PAREN@[2722; 2723) "(" 1522 L_PAREN@2722..2723 "("
1523 IDENT@[2723; 2729) "String" 1523 IDENT@2723..2729 "String"
1524 COLON@[2729; 2730) ":" 1524 COLON@2729..2730 ":"
1525 COLON@[2730; 2731) ":" 1525 COLON@2730..2731 ":"
1526 IDENT@[2731; 2735) "from" 1526 IDENT@2731..2735 "from"
1527 TOKEN_TREE@[2735; 2742) 1527 TOKEN_TREE@2735..2742
1528 L_PAREN@[2735; 2736) "(" 1528 L_PAREN@2735..2736 "("
1529 STRING@[2736; 2741) "\"><>\"" 1529 STRING@2736..2741 "\"><>\""
1530 R_PAREN@[2741; 2742) ")" 1530 R_PAREN@2741..2742 ")"
1531 COMMA@[2742; 2743) "," 1531 COMMA@2742..2743 ","
1532 WHITESPACE@[2743; 2759) "\n " 1532 WHITESPACE@2743..2759 "\n "
1533 IDENT@[2759; 2765) "String" 1533 IDENT@2759..2765 "String"
1534 COLON@[2765; 2766) ":" 1534 COLON@2765..2766 ":"
1535 COLON@[2766; 2767) ":" 1535 COLON@2766..2767 ":"
1536 L_ANGLE@[2767; 2768) "<" 1536 L_ANGLE@2767..2768 "<"
1537 R_ANGLE@[2768; 2769) ">" 1537 R_ANGLE@2768..2769 ">"
1538 COLON@[2769; 2770) ":" 1538 COLON@2769..2770 ":"
1539 COLON@[2770; 2771) ":" 1539 COLON@2770..2771 ":"
1540 IDENT@[2771; 2775) "from" 1540 IDENT@2771..2775 "from"
1541 COLON@[2775; 2776) ":" 1541 COLON@2775..2776 ":"
1542 COLON@[2776; 2777) ":" 1542 COLON@2776..2777 ":"
1543 L_ANGLE@[2777; 2778) "<" 1543 L_ANGLE@2777..2778 "<"
1544 R_ANGLE@[2778; 2779) ">" 1544 R_ANGLE@2778..2779 ">"
1545 TOKEN_TREE@[2779; 2786) 1545 TOKEN_TREE@2779..2786
1546 L_PAREN@[2779; 2780) "(" 1546 L_PAREN@2779..2780 "("
1547 STRING@[2780; 2785) "\"><>\"" 1547 STRING@2780..2785 "\"><>\""
1548 R_PAREN@[2785; 2786) ")" 1548 R_PAREN@2785..2786 ")"
1549 DOT@[2786; 2787) "." 1549 DOT@2786..2787 "."
1550 IDENT@[2787; 2792) "chars" 1550 IDENT@2787..2792 "chars"
1551 COLON@[2792; 2793) ":" 1551 COLON@2792..2793 ":"
1552 COLON@[2793; 2794) ":" 1552 COLON@2793..2794 ":"
1553 L_ANGLE@[2794; 2795) "<" 1553 L_ANGLE@2794..2795 "<"
1554 R_ANGLE@[2795; 2796) ">" 1554 R_ANGLE@2795..2796 ">"
1555 TOKEN_TREE@[2796; 2798) 1555 TOKEN_TREE@2796..2798
1556 L_PAREN@[2796; 2797) "(" 1556 L_PAREN@2796..2797 "("
1557 R_PAREN@[2797; 2798) ")" 1557 R_PAREN@2797..2798 ")"
1558 DOT@[2798; 2799) "." 1558 DOT@2798..2799 "."
1559 IDENT@[2799; 2802) "rev" 1559 IDENT@2799..2802 "rev"
1560 COLON@[2802; 2803) ":" 1560 COLON@2802..2803 ":"
1561 COLON@[2803; 2804) ":" 1561 COLON@2803..2804 ":"
1562 L_ANGLE@[2804; 2805) "<" 1562 L_ANGLE@2804..2805 "<"
1563 R_ANGLE@[2805; 2806) ">" 1563 R_ANGLE@2805..2806 ">"
1564 TOKEN_TREE@[2806; 2808) 1564 TOKEN_TREE@2806..2808
1565 L_PAREN@[2806; 2807) "(" 1565 L_PAREN@2806..2807 "("
1566 R_PAREN@[2807; 2808) ")" 1566 R_PAREN@2807..2808 ")"
1567 DOT@[2808; 2809) "." 1567 DOT@2808..2809 "."
1568 IDENT@[2809; 2816) "collect" 1568 IDENT@2809..2816 "collect"
1569 COLON@[2816; 2817) ":" 1569 COLON@2816..2817 ":"
1570 COLON@[2817; 2818) ":" 1570 COLON@2817..2818 ":"
1571 L_ANGLE@[2818; 2819) "<" 1571 L_ANGLE@2818..2819 "<"
1572 IDENT@[2819; 2825) "String" 1572 IDENT@2819..2825 "String"
1573 R_ANGLE@[2825; 2826) ">" 1573 R_ANGLE@2825..2826 ">"
1574 TOKEN_TREE@[2826; 2828) 1574 TOKEN_TREE@2826..2828
1575 L_PAREN@[2826; 2827) "(" 1575 L_PAREN@2826..2827 "("
1576 R_PAREN@[2827; 2828) ")" 1576 R_PAREN@2827..2828 ")"
1577 R_PAREN@[2828; 2829) ")" 1577 R_PAREN@2828..2829 ")"
1578 SEMICOLON@[2829; 2830) ";" 1578 SEMICOLON@2829..2830 ";"
1579 WHITESPACE@[2830; 2831) "\n" 1579 WHITESPACE@2830..2831 "\n"
1580 R_CURLY@[2831; 2832) "}" 1580 R_CURLY@2831..2832 "}"
1581 WHITESPACE@[2832; 2834) "\n\n" 1581 WHITESPACE@2832..2834 "\n\n"
1582 FN_DEF@[2834; 2906) 1582 FN_DEF@2834..2906
1583 FN_KW@[2834; 2836) "fn" 1583 FN_KW@2834..2836 "fn"
1584 WHITESPACE@[2836; 2837) " " 1584 WHITESPACE@2836..2837 " "
1585 NAME@[2837; 2842) 1585 NAME@2837..2842
1586 IDENT@[2837; 2842) "union" 1586 IDENT@2837..2842 "union"
1587 PARAM_LIST@[2842; 2844) 1587 PARAM_LIST@2842..2844
1588 L_PAREN@[2842; 2843) "(" 1588 L_PAREN@2842..2843 "("
1589 R_PAREN@[2843; 2844) ")" 1589 R_PAREN@2843..2844 ")"
1590 WHITESPACE@[2844; 2845) " " 1590 WHITESPACE@2844..2845 " "
1591 BLOCK_EXPR@[2845; 2906) 1591 BLOCK_EXPR@2845..2906
1592 BLOCK@[2845; 2906) 1592 BLOCK@2845..2906
1593 L_CURLY@[2845; 2846) "{" 1593 L_CURLY@2845..2846 "{"
1594 WHITESPACE@[2846; 2851) "\n " 1594 WHITESPACE@2846..2851 "\n "
1595 UNION_DEF@[2851; 2904) 1595 UNION_DEF@2851..2904
1596 UNION_KW@[2851; 2856) "union" 1596 UNION_KW@2851..2856 "union"
1597 WHITESPACE@[2856; 2857) " " 1597 WHITESPACE@2856..2857 " "
1598 NAME@[2857; 2862) 1598 NAME@2857..2862
1599 IDENT@[2857; 2862) "union" 1599 IDENT@2857..2862 "union"
1600 TYPE_PARAM_LIST@[2862; 2870) 1600 TYPE_PARAM_LIST@2862..2870
1601 L_ANGLE@[2862; 2863) "<" 1601 L_ANGLE@2862..2863 "<"
1602 LIFETIME_PARAM@[2863; 2869) 1602 LIFETIME_PARAM@2863..2869
1603 LIFETIME@[2863; 2869) "\'union" 1603 LIFETIME@2863..2869 "\'union"
1604 R_ANGLE@[2869; 2870) ">" 1604 R_ANGLE@2869..2870 ">"
1605 WHITESPACE@[2870; 2871) " " 1605 WHITESPACE@2870..2871 " "
1606 RECORD_FIELD_DEF_LIST@[2871; 2904) 1606 RECORD_FIELD_DEF_LIST@2871..2904
1607 L_CURLY@[2871; 2872) "{" 1607 L_CURLY@2871..2872 "{"
1608 WHITESPACE@[2872; 2873) " " 1608 WHITESPACE@2872..2873 " "
1609 RECORD_FIELD_DEF@[2873; 2901) 1609 RECORD_FIELD_DEF@2873..2901
1610 NAME@[2873; 2878) 1610 NAME@2873..2878
1611 IDENT@[2873; 2878) "union" 1611 IDENT@2873..2878 "union"
1612 COLON@[2878; 2879) ":" 1612 COLON@2878..2879 ":"
1613 WHITESPACE@[2879; 2880) " " 1613 WHITESPACE@2879..2880 " "
1614 REFERENCE_TYPE@[2880; 2901) 1614 REFERENCE_TYPE@2880..2901
1615 AMP@[2880; 2881) "&" 1615 AMP@2880..2881 "&"
1616 LIFETIME@[2881; 2887) "\'union" 1616 LIFETIME@2881..2887 "\'union"
1617 WHITESPACE@[2887; 2888) " " 1617 WHITESPACE@2887..2888 " "
1618 PATH_TYPE@[2888; 2901) 1618 PATH_TYPE@2888..2901
1619 PATH@[2888; 2901) 1619 PATH@2888..2901
1620 PATH_SEGMENT@[2888; 2901) 1620 PATH_SEGMENT@2888..2901
1621 NAME_REF@[2888; 2893) 1621 NAME_REF@2888..2893
1622 IDENT@[2888; 2893) "union" 1622 IDENT@2888..2893 "union"
1623 TYPE_ARG_LIST@[2893; 2901) 1623 TYPE_ARG_LIST@2893..2901
1624 L_ANGLE@[2893; 2894) "<" 1624 L_ANGLE@2893..2894 "<"
1625 LIFETIME_ARG@[2894; 2900) 1625 LIFETIME_ARG@2894..2900
1626 LIFETIME@[2894; 2900) "\'union" 1626 LIFETIME@2894..2900 "\'union"
1627 R_ANGLE@[2900; 2901) ">" 1627 R_ANGLE@2900..2901 ">"
1628 COMMA@[2901; 2902) "," 1628 COMMA@2901..2902 ","
1629 WHITESPACE@[2902; 2903) " " 1629 WHITESPACE@2902..2903 " "
1630 R_CURLY@[2903; 2904) "}" 1630 R_CURLY@2903..2904 "}"
1631 WHITESPACE@[2904; 2905) "\n" 1631 WHITESPACE@2904..2905 "\n"
1632 R_CURLY@[2905; 2906) "}" 1632 R_CURLY@2905..2906 "}"
1633 WHITESPACE@[2906; 2908) "\n\n" 1633 WHITESPACE@2906..2908 "\n\n"
1634 FN_DEF@[2908; 3042) 1634 FN_DEF@2908..3042
1635 FN_KW@[2908; 2910) "fn" 1635 FN_KW@2908..2910 "fn"
1636 WHITESPACE@[2910; 2911) " " 1636 WHITESPACE@2910..2911 " "
1637 NAME@[2911; 2929) 1637 NAME@2911..2929
1638 IDENT@[2911; 2929) "special_characters" 1638 IDENT@2911..2929 "special_characters"
1639 PARAM_LIST@[2929; 2931) 1639 PARAM_LIST@2929..2931
1640 L_PAREN@[2929; 2930) "(" 1640 L_PAREN@2929..2930 "("
1641 R_PAREN@[2930; 2931) ")" 1641 R_PAREN@2930..2931 ")"
1642 WHITESPACE@[2931; 2932) " " 1642 WHITESPACE@2931..2932 " "
1643 BLOCK_EXPR@[2932; 3042) 1643 BLOCK_EXPR@2932..3042
1644 BLOCK@[2932; 3042) 1644 BLOCK@2932..3042
1645 L_CURLY@[2932; 2933) "{" 1645 L_CURLY@2932..2933 "{"
1646 WHITESPACE@[2933; 2938) "\n " 1646 WHITESPACE@2933..2938 "\n "
1647 LET_STMT@[2938; 3021) 1647 LET_STMT@2938..3021
1648 LET_KW@[2938; 2941) "let" 1648 LET_KW@2938..2941 "let"
1649 WHITESPACE@[2941; 2942) " " 1649 WHITESPACE@2941..2942 " "
1650 BIND_PAT@[2942; 2945) 1650 BIND_PAT@2942..2945
1651 NAME@[2942; 2945) 1651 NAME@2942..2945
1652 IDENT@[2942; 2945) "val" 1652 IDENT@2942..2945 "val"
1653 WHITESPACE@[2945; 2946) " " 1653 WHITESPACE@2945..2946 " "
1654 EQ@[2946; 2947) "=" 1654 EQ@2946..2947 "="
1655 WHITESPACE@[2947; 2948) " " 1655 WHITESPACE@2947..2948 " "
1656 PREFIX_EXPR@[2948; 3013) 1656 PREFIX_EXPR@2948..3013
1657 BANG@[2948; 2949) "!" 1657 BANG@2948..2949 "!"
1658 PAREN_EXPR@[2949; 3013) 1658 PAREN_EXPR@2949..3013
1659 L_PAREN@[2949; 2950) "(" 1659 L_PAREN@2949..2950 "("
1660 BIN_EXPR@[2950; 3012) 1660 BIN_EXPR@2950..3012
1661 CALL_EXPR@[2950; 2995) 1661 CALL_EXPR@2950..2995
1662 PAREN_EXPR@[2950; 2971) 1662 PAREN_EXPR@2950..2971
1663 L_PAREN@[2950; 2951) "(" 1663 L_PAREN@2950..2951 "("
1664 LAMBDA_EXPR@[2951; 2970) 1664 LAMBDA_EXPR@2951..2970
1665 PARAM_LIST@[2951; 2968) 1665 PARAM_LIST@2951..2968
1666 PIPE@[2951; 2952) "|" 1666 PIPE@2951..2952 "|"
1667 PARAM@[2952; 2962) 1667 PARAM@2952..2962
1668 TUPLE_PAT@[2952; 2956) 1668 TUPLE_PAT@2952..2956
1669 L_PAREN@[2952; 2953) "(" 1669 L_PAREN@2952..2953 "("
1670 DOT_DOT_PAT@[2953; 2955) 1670 DOT_DOT_PAT@2953..2955
1671 DOT2@[2953; 2955) ".." 1671 DOT2@2953..2955 ".."
1672 R_PAREN@[2955; 2956) ")" 1672 R_PAREN@2955..2956 ")"
1673 COLON@[2956; 2957) ":" 1673 COLON@2956..2957 ":"
1674 TUPLE_TYPE@[2957; 2962) 1674 TUPLE_TYPE@2957..2962
1675 L_PAREN@[2957; 2958) "(" 1675 L_PAREN@2957..2958 "("
1676 PLACEHOLDER_TYPE@[2958; 2959) 1676 PLACEHOLDER_TYPE@2958..2959
1677 UNDERSCORE@[2958; 2959) "_" 1677 UNDERSCORE@2958..2959 "_"
1678 COMMA@[2959; 2960) "," 1678 COMMA@2959..2960 ","
1679 PLACEHOLDER_TYPE@[2960; 2961) 1679 PLACEHOLDER_TYPE@2960..2961
1680 UNDERSCORE@[2960; 2961) "_" 1680 UNDERSCORE@2960..2961 "_"
1681 R_PAREN@[2961; 2962) ")" 1681 R_PAREN@2961..2962 ")"
1682 COMMA@[2962; 2963) "," 1682 COMMA@2962..2963 ","
1683 PARAM@[2963; 2967) 1683 PARAM@2963..2967
1684 BIND_PAT@[2963; 2967) 1684 BIND_PAT@2963..2967
1685 NAME@[2963; 2965) 1685 NAME@2963..2965
1686 IDENT@[2963; 2965) "__" 1686 IDENT@2963..2965 "__"
1687 AT@[2965; 2966) "@" 1687 AT@2965..2966 "@"
1688 PLACEHOLDER_PAT@[2966; 2967) 1688 PLACEHOLDER_PAT@2966..2967
1689 UNDERSCORE@[2966; 2967) "_" 1689 UNDERSCORE@2966..2967 "_"
1690 PIPE@[2967; 2968) "|" 1690 PIPE@2967..2968 "|"
1691 PATH_EXPR@[2968; 2970) 1691 PATH_EXPR@2968..2970
1692 PATH@[2968; 2970) 1692 PATH@2968..2970
1693 PATH_SEGMENT@[2968; 2970) 1693 PATH_SEGMENT@2968..2970
1694 NAME_REF@[2968; 2970) 1694 NAME_REF@2968..2970
1695 IDENT@[2968; 2970) "__" 1695 IDENT@2968..2970 "__"
1696 R_PAREN@[2970; 2971) ")" 1696 R_PAREN@2970..2971 ")"
1697 ARG_LIST@[2971; 2995) 1697 ARG_LIST@2971..2995
1698 L_PAREN@[2971; 2972) "(" 1698 L_PAREN@2971..2972 "("
1699 TUPLE_EXPR@[2972; 2987) 1699 TUPLE_EXPR@2972..2987
1700 L_PAREN@[2972; 2973) "(" 1700 L_PAREN@2972..2973 "("
1701 REF_EXPR@[2973; 2979) 1701 REF_EXPR@2973..2979
1702 AMP@[2973; 2974) "&" 1702 AMP@2973..2974 "&"
1703 PREFIX_EXPR@[2974; 2979) 1703 PREFIX_EXPR@2974..2979
1704 STAR@[2974; 2975) "*" 1704 STAR@2974..2975 "*"
1705 LITERAL@[2975; 2979) 1705 LITERAL@2975..2979
1706 STRING@[2975; 2979) "\"\\\\\"" 1706 STRING@2975..2979 "\"\\\\\""
1707 COMMA@[2979; 2980) "," 1707 COMMA@2979..2980 ","
1708 LITERAL@[2980; 2986) 1708 LITERAL@2980..2986
1709 CHAR@[2980; 2986) "\'🤔\'" 1709 CHAR@2980..2986 "\'🤔\'"
1710 R_PAREN@[2986; 2987) ")" 1710 R_PAREN@2986..2987 ")"
1711 COMMENT@[2987; 2991) "/**/" 1711 COMMENT@2987..2991 "/**/"
1712 COMMA@[2991; 2992) "," 1712 COMMA@2991..2992 ","
1713 BLOCK_EXPR@[2992; 2994) 1713 BLOCK_EXPR@2992..2994
1714 BLOCK@[2992; 2994) 1714 BLOCK@2992..2994
1715 L_CURLY@[2992; 2993) "{" 1715 L_CURLY@2992..2993 "{"
1716 R_CURLY@[2993; 2994) "}" 1716 R_CURLY@2993..2994 "}"
1717 R_PAREN@[2994; 2995) ")" 1717 R_PAREN@2994..2995 ")"
1718 EQ2@[2995; 2997) "==" 1718 EQ2@2995..2997 "=="
1719 BLOCK_EXPR@[2997; 3012) 1719 BLOCK_EXPR@2997..3012
1720 BLOCK@[2997; 3012) 1720 BLOCK@2997..3012
1721 L_CURLY@[2997; 2998) "{" 1721 L_CURLY@2997..2998 "{"
1722 EXPR_STMT@[2998; 3011) 1722 EXPR_STMT@2998..3011
1723 REF_EXPR@[2998; 3010) 1723 REF_EXPR@2998..3010
1724 AMP@[2998; 2999) "&" 1724 AMP@2998..2999 "&"
1725 INDEX_EXPR@[2999; 3010) 1725 INDEX_EXPR@2999..3010
1726 ARRAY_EXPR@[2999; 3006) 1726 ARRAY_EXPR@2999..3006
1727 L_BRACK@[2999; 3000) "[" 1727 L_BRACK@2999..3000 "["
1728 RANGE_EXPR@[3000; 3005) 1728 RANGE_EXPR@3000..3005
1729 DOT2EQ@[3000; 3003) "..=" 1729 DOT2EQ@3000..3003 "..="
1730 RANGE_EXPR@[3003; 3005) 1730 RANGE_EXPR@3003..3005
1731 DOT2@[3003; 3005) ".." 1731 DOT2@3003..3005 ".."
1732 R_BRACK@[3005; 3006) "]" 1732 R_BRACK@3005..3006 "]"
1733 L_BRACK@[3006; 3007) "[" 1733 L_BRACK@3006..3007 "["
1734 RANGE_EXPR@[3007; 3009) 1734 RANGE_EXPR@3007..3009
1735 DOT2@[3007; 3009) ".." 1735 DOT2@3007..3009 ".."
1736 R_BRACK@[3009; 3010) "]" 1736 R_BRACK@3009..3010 "]"
1737 SEMICOLON@[3010; 3011) ";" 1737 SEMICOLON@3010..3011 ";"
1738 R_CURLY@[3011; 3012) "}" 1738 R_CURLY@3011..3012 "}"
1739 R_PAREN@[3012; 3013) ")" 1739 R_PAREN@3012..3013 ")"
1740 COMMENT@[3013; 3015) "//" 1740 COMMENT@3013..3015 "//"
1741 WHITESPACE@[3015; 3020) "\n " 1741 WHITESPACE@3015..3020 "\n "
1742 SEMICOLON@[3020; 3021) ";" 1742 SEMICOLON@3020..3021 ";"
1743 WHITESPACE@[3021; 3026) "\n " 1743 WHITESPACE@3021..3026 "\n "
1744 EXPR_STMT@[3026; 3040) 1744 EXPR_STMT@3026..3040
1745 MACRO_CALL@[3026; 3039) 1745 MACRO_CALL@3026..3039
1746 PATH@[3026; 3032) 1746 PATH@3026..3032
1747 PATH_SEGMENT@[3026; 3032) 1747 PATH_SEGMENT@3026..3032
1748 NAME_REF@[3026; 3032) 1748 NAME_REF@3026..3032
1749 IDENT@[3026; 3032) "assert" 1749 IDENT@3026..3032 "assert"
1750 BANG@[3032; 3033) "!" 1750 BANG@3032..3033 "!"
1751 TOKEN_TREE@[3033; 3039) 1751 TOKEN_TREE@3033..3039
1752 L_PAREN@[3033; 3034) "(" 1752 L_PAREN@3033..3034 "("
1753 BANG@[3034; 3035) "!" 1753 BANG@3034..3035 "!"
1754 IDENT@[3035; 3038) "val" 1754 IDENT@3035..3038 "val"
1755 R_PAREN@[3038; 3039) ")" 1755 R_PAREN@3038..3039 ")"
1756 SEMICOLON@[3039; 3040) ";" 1756 SEMICOLON@3039..3040 ";"
1757 WHITESPACE@[3040; 3041) "\n" 1757 WHITESPACE@3040..3041 "\n"
1758 R_CURLY@[3041; 3042) "}" 1758 R_CURLY@3041..3042 "}"
1759 WHITESPACE@[3042; 3044) "\n\n" 1759 WHITESPACE@3042..3044 "\n\n"
1760 FN_DEF@[3044; 3514) 1760 FN_DEF@3044..3514
1761 FN_KW@[3044; 3046) "fn" 1761 FN_KW@3044..3046 "fn"
1762 WHITESPACE@[3046; 3047) " " 1762 WHITESPACE@3046..3047 " "
1763 NAME@[3047; 3057) 1763 NAME@3047..3057
1764 IDENT@[3047; 3057) "punch_card" 1764 IDENT@3047..3057 "punch_card"
1765 PARAM_LIST@[3057; 3059) 1765 PARAM_LIST@3057..3059
1766 L_PAREN@[3057; 3058) "(" 1766 L_PAREN@3057..3058 "("
1767 R_PAREN@[3058; 3059) ")" 1767 R_PAREN@3058..3059 ")"
1768 WHITESPACE@[3059; 3060) " " 1768 WHITESPACE@3059..3060 " "
1769 RET_TYPE@[3060; 3083) 1769 RET_TYPE@3060..3083
1770 THIN_ARROW@[3060; 3062) "->" 1770 THIN_ARROW@3060..3062 "->"
1771 WHITESPACE@[3062; 3063) " " 1771 WHITESPACE@3062..3063 " "
1772 IMPL_TRAIT_TYPE@[3063; 3083) 1772 IMPL_TRAIT_TYPE@3063..3083
1773 IMPL_KW@[3063; 3067) "impl" 1773 IMPL_KW@3063..3067 "impl"
1774 WHITESPACE@[3067; 3068) " " 1774 WHITESPACE@3067..3068 " "
1775 TYPE_BOUND_LIST@[3068; 3083) 1775 TYPE_BOUND_LIST@3068..3083
1776 TYPE_BOUND@[3068; 3083) 1776 TYPE_BOUND@3068..3083
1777 PATH_TYPE@[3068; 3083) 1777 PATH_TYPE@3068..3083
1778 PATH@[3068; 3083) 1778 PATH@3068..3083
1779 PATH@[3068; 3076) 1779 PATH@3068..3076
1780 PATH@[3068; 3071) 1780 PATH@3068..3071
1781 PATH_SEGMENT@[3068; 3071) 1781 PATH_SEGMENT@3068..3071
1782 NAME_REF@[3068; 3071) 1782 NAME_REF@3068..3071
1783 IDENT@[3068; 3071) "std" 1783 IDENT@3068..3071 "std"
1784 COLON2@[3071; 3073) "::" 1784 COLON2@3071..3073 "::"
1785 PATH_SEGMENT@[3073; 3076) 1785 PATH_SEGMENT@3073..3076
1786 NAME_REF@[3073; 3076) 1786 NAME_REF@3073..3076
1787 IDENT@[3073; 3076) "fmt" 1787 IDENT@3073..3076 "fmt"
1788 COLON2@[3076; 3078) "::" 1788 COLON2@3076..3078 "::"
1789 PATH_SEGMENT@[3078; 3083) 1789 PATH_SEGMENT@3078..3083
1790 NAME_REF@[3078; 3083) 1790 NAME_REF@3078..3083
1791 IDENT@[3078; 3083) "Debug" 1791 IDENT@3078..3083 "Debug"
1792 WHITESPACE@[3083; 3084) " " 1792 WHITESPACE@3083..3084 " "
1793 BLOCK_EXPR@[3084; 3514) 1793 BLOCK_EXPR@3084..3514
1794 BLOCK@[3084; 3514) 1794 BLOCK@3084..3514
1795 L_CURLY@[3084; 3085) "{" 1795 L_CURLY@3084..3085 "{"
1796 WHITESPACE@[3085; 3090) "\n " 1796 WHITESPACE@3085..3090 "\n "
1797 RANGE_EXPR@[3090; 3512) 1797 RANGE_EXPR@3090..3512
1798 DOT2EQ@[3090; 3093) "..=" 1798 DOT2EQ@3090..3093 "..="
1799 RANGE_EXPR@[3093; 3512) 1799 RANGE_EXPR@3093..3512
1800 DOT2EQ@[3093; 3096) "..=" 1800 DOT2EQ@3093..3096 "..="
1801 RANGE_EXPR@[3096; 3512) 1801 RANGE_EXPR@3096..3512
1802 DOT2@[3096; 3098) ".." 1802 DOT2@3096..3098 ".."
1803 WHITESPACE@[3098; 3099) " " 1803 WHITESPACE@3098..3099 " "
1804 RANGE_EXPR@[3099; 3512) 1804 RANGE_EXPR@3099..3512
1805 DOT2@[3099; 3101) ".." 1805 DOT2@3099..3101 ".."
1806 WHITESPACE@[3101; 3105) " " 1806 WHITESPACE@3101..3105 " "
1807 RANGE_EXPR@[3105; 3512) 1807 RANGE_EXPR@3105..3512
1808 DOT2@[3105; 3107) ".." 1808 DOT2@3105..3107 ".."
1809 WHITESPACE@[3107; 3108) " " 1809 WHITESPACE@3107..3108 " "
1810 RANGE_EXPR@[3108; 3512) 1810 RANGE_EXPR@3108..3512
1811 DOT2@[3108; 3110) ".." 1811 DOT2@3108..3110 ".."
1812 WHITESPACE@[3110; 3111) " " 1812 WHITESPACE@3110..3111 " "
1813 RANGE_EXPR@[3111; 3512) 1813 RANGE_EXPR@3111..3512
1814 DOT2@[3111; 3113) ".." 1814 DOT2@3111..3113 ".."
1815 WHITESPACE@[3113; 3114) " " 1815 WHITESPACE@3113..3114 " "
1816 RANGE_EXPR@[3114; 3512) 1816 RANGE_EXPR@3114..3512
1817 DOT2@[3114; 3116) ".." 1817 DOT2@3114..3116 ".."
1818 WHITESPACE@[3116; 3120) " " 1818 WHITESPACE@3116..3120 " "
1819 RANGE_EXPR@[3120; 3512) 1819 RANGE_EXPR@3120..3512
1820 DOT2@[3120; 3122) ".." 1820 DOT2@3120..3122 ".."
1821 WHITESPACE@[3122; 3123) " " 1821 WHITESPACE@3122..3123 " "
1822 RANGE_EXPR@[3123; 3512) 1822 RANGE_EXPR@3123..3512
1823 DOT2@[3123; 3125) ".." 1823 DOT2@3123..3125 ".."
1824 WHITESPACE@[3125; 3126) " " 1824 WHITESPACE@3125..3126 " "
1825 RANGE_EXPR@[3126; 3512) 1825 RANGE_EXPR@3126..3512
1826 DOT2@[3126; 3128) ".." 1826 DOT2@3126..3128 ".."
1827 WHITESPACE@[3128; 3129) " " 1827 WHITESPACE@3128..3129 " "
1828 RANGE_EXPR@[3129; 3512) 1828 RANGE_EXPR@3129..3512
1829 DOT2@[3129; 3131) ".." 1829 DOT2@3129..3131 ".."
1830 WHITESPACE@[3131; 3135) " " 1830 WHITESPACE@3131..3135 " "
1831 RANGE_EXPR@[3135; 3512) 1831 RANGE_EXPR@3135..3512
1832 DOT2@[3135; 3137) ".." 1832 DOT2@3135..3137 ".."
1833 WHITESPACE@[3137; 3138) " " 1833 WHITESPACE@3137..3138 " "
1834 RANGE_EXPR@[3138; 3512) 1834 RANGE_EXPR@3138..3512
1835 DOT2EQ@[3138; 3141) "..=" 1835 DOT2EQ@3138..3141 "..="
1836 RANGE_EXPR@[3141; 3512) 1836 RANGE_EXPR@3141..3512
1837 DOT2@[3141; 3143) ".." 1837 DOT2@3141..3143 ".."
1838 WHITESPACE@[3143; 3144) " " 1838 WHITESPACE@3143..3144 " "
1839 RANGE_EXPR@[3144; 3512) 1839 RANGE_EXPR@3144..3512
1840 DOT2@[3144; 3146) ".." 1840 DOT2@3144..3146 ".."
1841 WHITESPACE@[3146; 3151) "\n " 1841 WHITESPACE@3146..3151 "\n "
1842 RANGE_EXPR@[3151; 3512) 1842 RANGE_EXPR@3151..3512
1843 DOT2EQ@[3151; 3154) "..=" 1843 DOT2EQ@3151..3154 "..="
1844 RANGE_EXPR@[3154; 3512) 1844 RANGE_EXPR@3154..3512
1845 DOT2@[3154; 3156) ".." 1845 DOT2@3154..3156 ".."
1846 WHITESPACE@[3156; 3157) " " 1846 WHITESPACE@3156..3157 " "
1847 RANGE_EXPR@[3157; 3512) 1847 RANGE_EXPR@3157..3512
1848 DOT2EQ@[3157; 3160) "..=" 1848 DOT2EQ@3157..3160 "..="
1849 RANGE_EXPR@[3160; 3512) 1849 RANGE_EXPR@3160..3512
1850 DOT2@[3160; 3162) ".." 1850 DOT2@3160..3162 ".."
1851 WHITESPACE@[3162; 3166) " " 1851 WHITESPACE@3162..3166 " "
1852 RANGE_EXPR@[3166; 3512) 1852 RANGE_EXPR@3166..3512
1853 DOT2@[3166; 3168) ".." 1853 DOT2@3166..3168 ".."
1854 WHITESPACE@[3168; 3169) " " 1854 WHITESPACE@3168..3169 " "
1855 RANGE_EXPR@[3169; 3512) 1855 RANGE_EXPR@3169..3512
1856 DOT2@[3169; 3171) ".." 1856 DOT2@3169..3171 ".."
1857 WHITESPACE@[3171; 3172) " " 1857 WHITESPACE@3171..3172 " "
1858 RANGE_EXPR@[3172; 3512) 1858 RANGE_EXPR@3172..3512
1859 DOT2@[3172; 3174) ".." 1859 DOT2@3172..3174 ".."
1860 WHITESPACE@[3174; 3175) " " 1860 WHITESPACE@3174..3175 " "
1861 RANGE_EXPR@[3175; 3512) 1861 RANGE_EXPR@3175..3512
1862 DOT2@[3175; 3177) ".." 1862 DOT2@3175..3177 ".."
1863 WHITESPACE@[3177; 3181) " " 1863 WHITESPACE@3177..3181 " "
1864 RANGE_EXPR@[3181; 3512) 1864 RANGE_EXPR@3181..3512
1865 DOT2@[3181; 3183) ".." 1865 DOT2@3181..3183 ".."
1866 WHITESPACE@[3183; 3184) " " 1866 WHITESPACE@3183..3184 " "
1867 RANGE_EXPR@[3184; 3512) 1867 RANGE_EXPR@3184..3512
1868 DOT2@[3184; 3186) ".." 1868 DOT2@3184..3186 ".."
1869 WHITESPACE@[3186; 3187) " " 1869 WHITESPACE@3186..3187 " "
1870 RANGE_EXPR@[3187; 3512) 1870 RANGE_EXPR@3187..3512
1871 DOT2@[3187; 3189) ".." 1871 DOT2@3187..3189 ".."
1872 WHITESPACE@[3189; 3190) " " 1872 WHITESPACE@3189..3190 " "
1873 RANGE_EXPR@[3190; 3512) 1873 RANGE_EXPR@3190..3512
1874 DOT2@[3190; 3192) ".." 1874 DOT2@3190..3192 ".."
1875 WHITESPACE@[3192; 3196) " " 1875 WHITESPACE@3192..3196 " "
1876 RANGE_EXPR@[3196; 3512) 1876 RANGE_EXPR@3196..3512
1877 DOT2EQ@[3196; 3199) "..=" 1877 DOT2EQ@3196..3199 "..="
1878 RANGE_EXPR@[3199; 3512) 1878 RANGE_EXPR@3199..3512
1879 DOT2EQ@[3199; 3202) "..=" 1879 DOT2EQ@3199..3202 "..="
1880 RANGE_EXPR@[3202; 3512) 1880 RANGE_EXPR@3202..3512
1881 DOT2EQ@[3202; 3205) "..=" 1881 DOT2EQ@3202..3205 "..="
1882 RANGE_EXPR@[3205; 3512) 1882 RANGE_EXPR@3205..3512
1883 DOT2@[3205; 3207) ".." 1883 DOT2@3205..3207 ".."
1884 WHITESPACE@[3207; 3212) "\n " 1884 WHITESPACE@3207..3212 "\n "
1885 RANGE_EXPR@[3212; 3512) 1885 RANGE_EXPR@3212..3512
1886 DOT2EQ@[3212; 3215) "..=" 1886 DOT2EQ@3212..3215 "..="
1887 RANGE_EXPR@[3215; 3512) 1887 RANGE_EXPR@3215..3512
1888 DOT2@[3215; 3217) ".." 1888 DOT2@3215..3217 ".."
1889 WHITESPACE@[3217; 3218) " " 1889 WHITESPACE@3217..3218 " "
1890 RANGE_EXPR@[3218; 3512) 1890 RANGE_EXPR@3218..3512
1891 DOT2EQ@[3218; 3221) "..=" 1891 DOT2EQ@3218..3221 "..="
1892 RANGE_EXPR@[3221; 3512) 1892 RANGE_EXPR@3221..3512
1893 DOT2@[3221; 3223) ".." 1893 DOT2@3221..3223 ".."
1894 WHITESPACE@[3223; 3227) " " 1894 WHITESPACE@3223..3227 " "
1895 RANGE_EXPR@[3227; 3512) 1895 RANGE_EXPR@3227..3512
1896 DOT2EQ@[3227; 3230) "..=" 1896 DOT2EQ@3227..3230 "..="
1897 RANGE_EXPR@[3230; 3512) 1897 RANGE_EXPR@3230..3512
1898 DOT2@[3230; 3232) ".." 1898 DOT2@3230..3232 ".."
1899 WHITESPACE@[3232; 3233) " " 1899 WHITESPACE@3232..3233 " "
1900 RANGE_EXPR@[3233; 3512) 1900 RANGE_EXPR@3233..3512
1901 DOT2EQ@[3233; 3236) "..=" 1901 DOT2EQ@3233..3236 "..="
1902 RANGE_EXPR@[3236; 3512) 1902 RANGE_EXPR@3236..3512
1903 DOT2@[3236; 3238) ".." 1903 DOT2@3236..3238 ".."
1904 WHITESPACE@[3238; 3242) " " 1904 WHITESPACE@3238..3242 " "
1905 RANGE_EXPR@[3242; 3512) 1905 RANGE_EXPR@3242..3512
1906 DOT2@[3242; 3244) ".." 1906 DOT2@3242..3244 ".."
1907 WHITESPACE@[3244; 3245) " " 1907 WHITESPACE@3244..3245 " "
1908 RANGE_EXPR@[3245; 3512) 1908 RANGE_EXPR@3245..3512
1909 DOT2EQ@[3245; 3248) "..=" 1909 DOT2EQ@3245..3248 "..="
1910 RANGE_EXPR@[3248; 3512) 1910 RANGE_EXPR@3248..3512
1911 DOT2EQ@[3248; 3251) "..=" 1911 DOT2EQ@3248..3251 "..="
1912 RANGE_EXPR@[3251; 3512) 1912 RANGE_EXPR@3251..3512
1913 DOT2@[3251; 3253) ".." 1913 DOT2@3251..3253 ".."
1914 WHITESPACE@[3253; 3257) " " 1914 WHITESPACE@3253..3257 " "
1915 RANGE_EXPR@[3257; 3512) 1915 RANGE_EXPR@3257..3512
1916 DOT2@[3257; 3259) ".." 1916 DOT2@3257..3259 ".."
1917 WHITESPACE@[3259; 3260) " " 1917 WHITESPACE@3259..3260 " "
1918 RANGE_EXPR@[3260; 3512) 1918 RANGE_EXPR@3260..3512
1919 DOT2EQ@[3260; 3263) "..=" 1919 DOT2EQ@3260..3263 "..="
1920 RANGE_EXPR@[3263; 3512) 1920 RANGE_EXPR@3263..3512
1921 DOT2@[3263; 3265) ".." 1921 DOT2@3263..3265 ".."
1922 WHITESPACE@[3265; 3266) " " 1922 [email protected] " "
1923 RANGE_EXPR@[3266; 3512) 1923 RANGE_EXPR@3266..3512
1924 DOT2@[3266; 3268) ".." 1924 DOT2@3266..3268 ".."
1925 WHITESPACE@[3268; 3273) "\n " 1925 [email protected] "\n "
1926 RANGE_EXPR@[3273; 3512) 1926 RANGE_EXPR@3273..3512
1927 DOT2EQ@[3273; 3276) "..=" 1927 [email protected] "..="
1928 RANGE_EXPR@[3276; 3512) 1928 [email protected]
1929 DOT2EQ@[3276; 3279) "..=" 1929 [email protected] "..="
1930 RANGE_EXPR@[3279; 3512) 1930 [email protected]
1931 DOT2@[3279; 3281) ".." 1931 [email protected] ".."
1932 WHITESPACE@[3281; 3282) " " 1932 [email protected] " "
1933 RANGE_EXPR@[3282; 3512) 1933 [email protected]
1934 DOT2@[3282; 3284) ".." 1934 [email protected] ".."
1935 WHITESPACE@[3284; 3288) " " 1935 [email protected] " "
1936 RANGE_EXPR@[3288; 3512) 1936 [email protected]
1937 DOT2EQ@[3288; 3291) "..=" 1937 [email protected] "..="
1938 RANGE_EXPR@[3291; 3512) 1938 [email protected]
1939 DOT2@[3291; 3293) ".." 1939 [email protected] ".."
1940 WHITESPACE@[3293; 3294) " " 1940 [email protected] " "
1941 RANGE_EXPR@[3294; 3512) 1941 [email protected]
1942 DOT2EQ@[3294; 3297) "..=" 1942 [email protected] "..="
1943 RANGE_EXPR@[3297; 3512) 1943 [email protected]
1944 DOT2@[3297; 3299) ".." 1944 [email protected] ".."
1945 WHITESPACE@[3299; 3303) " " 1945 [email protected] " "
1946 RANGE_EXPR@[3303; 3512) 1946 [email protected]
1947 DOT2EQ@[3303; 3306) "..=" 1947 [email protected] "..="
1948 RANGE_EXPR@[3306; 3512) 1948 [email protected]
1949 DOT2@[3306; 3308) ".." 1949 [email protected] ".."
1950 WHITESPACE@[3308; 3309) " " 1950 [email protected] " "
1951 RANGE_EXPR@[3309; 3512) 1951 [email protected]
1952 DOT2@[3309; 3311) ".." 1952 [email protected] ".."
1953 WHITESPACE@[3311; 3312) " " 1953 [email protected] " "
1954 RANGE_EXPR@[3312; 3512) 1954 [email protected]
1955 DOT2@[3312; 3314) ".." 1955 [email protected] ".."
1956 WHITESPACE@[3314; 3318) " " 1956 [email protected] " "
1957 RANGE_EXPR@[3318; 3512) 1957 [email protected]
1958 DOT2@[3318; 3320) ".." 1958 [email protected] ".."
1959 WHITESPACE@[3320; 3321) " " 1959 [email protected] " "
1960 RANGE_EXPR@[3321; 3512) 1960 [email protected]
1961 DOT2EQ@[3321; 3324) "..=" 1961 [email protected] "..="
1962 RANGE_EXPR@[3324; 3512) 1962 [email protected]
1963 DOT2@[3324; 3326) ".." 1963 [email protected] ".."
1964 WHITESPACE@[3326; 3327) " " 1964 [email protected] " "
1965 RANGE_EXPR@[3327; 3512) 1965 [email protected]
1966 DOT2@[3327; 3329) ".." 1966 [email protected] ".."
1967 WHITESPACE@[3329; 3334) "\n " 1967 [email protected] "\n "
1968 RANGE_EXPR@[3334; 3512) 1968 [email protected]
1969 DOT2EQ@[3334; 3337) "..=" 1969 [email protected] "..="
1970 RANGE_EXPR@[3337; 3512) 1970 [email protected]
1971 DOT2@[3337; 3339) ".." 1971 [email protected] ".."
1972 WHITESPACE@[3339; 3340) " " 1972 [email protected] " "
1973 RANGE_EXPR@[3340; 3512) 1973 [email protected]
1974 DOT2EQ@[3340; 3343) "..=" 1974 [email protected] "..="
1975 RANGE_EXPR@[3343; 3512) 1975 [email protected]
1976 DOT2@[3343; 3345) ".." 1976 [email protected] ".."
1977 WHITESPACE@[3345; 3349) " " 1977 [email protected] " "
1978 RANGE_EXPR@[3349; 3512) 1978 [email protected]
1979 DOT2EQ@[3349; 3352) "..=" 1979 [email protected] "..="
1980 RANGE_EXPR@[3352; 3512) 1980 [email protected]
1981 DOT2@[3352; 3354) ".." 1981 [email protected] ".."
1982 WHITESPACE@[3354; 3355) " " 1982 [email protected] " "
1983 RANGE_EXPR@[3355; 3512) 1983 [email protected]
1984 DOT2EQ@[3355; 3358) "..=" 1984 [email protected] "..="
1985 RANGE_EXPR@[3358; 3512) 1985 [email protected]
1986 DOT2@[3358; 3360) ".." 1986 [email protected] ".."
1987 WHITESPACE@[3360; 3364) " " 1987 [email protected] " "
1988 RANGE_EXPR@[3364; 3512) 1988 [email protected]
1989 DOT2@[3364; 3366) ".." 1989 [email protected] ".."
1990 WHITESPACE@[3366; 3367) " " 1990 [email protected] " "
1991 RANGE_EXPR@[3367; 3512) 1991 [email protected]
1992 DOT2EQ@[3367; 3370) "..=" 1992 [email protected] "..="
1993 RANGE_EXPR@[3370; 3512) 1993 [email protected]
1994 DOT2@[3370; 3372) ".." 1994 [email protected] ".."
1995 WHITESPACE@[3372; 3373) " " 1995 [email protected] " "
1996 RANGE_EXPR@[3373; 3512) 1996 [email protected]
1997 DOT2@[3373; 3375) ".." 1997 [email protected] ".."
1998 WHITESPACE@[3375; 3379) " " 1998 [email protected] " "
1999 RANGE_EXPR@[3379; 3512) 1999 [email protected]
2000 DOT2@[3379; 3381) ".." 2000 [email protected] ".."
2001 WHITESPACE@[3381; 3382) " " 2001 [email protected] " "
2002 RANGE_EXPR@[3382; 3512) 2002 [email protected]
2003 DOT2EQ@[3382; 3385) "..=" 2003 [email protected] "..="
2004 RANGE_EXPR@[3385; 3512) 2004 [email protected]
2005 DOT2@[3385; 3387) ".." 2005 [email protected] ".."
2006 WHITESPACE@[3387; 3388) " " 2006 [email protected] " "
2007 RANGE_EXPR@[3388; 3512) 2007 [email protected]
2008 DOT2@[3388; 3390) ".." 2008 [email protected] ".."
2009 WHITESPACE@[3390; 3395) "\n " 2009 [email protected] "\n "
2010 RANGE_EXPR@[3395; 3512) 2010 [email protected]
2011 DOT2EQ@[3395; 3398) "..=" 2011 [email protected] "..="
2012 RANGE_EXPR@[3398; 3512) 2012 [email protected]
2013 DOT2@[3398; 3400) ".." 2013 [email protected] ".."
2014 WHITESPACE@[3400; 3401) " " 2014 [email protected] " "
2015 RANGE_EXPR@[3401; 3512) 2015 [email protected]
2016 DOT2EQ@[3401; 3404) "..=" 2016 [email protected] "..="
2017 RANGE_EXPR@[3404; 3512) 2017 [email protected]
2018 DOT2@[3404; 3406) ".." 2018 [email protected] ".."
2019 WHITESPACE@[3406; 3410) " " 2019 [email protected] " "
2020 RANGE_EXPR@[3410; 3512) 2020 [email protected]
2021 DOT2EQ@[3410; 3413) "..=" 2021 [email protected] "..="
2022 RANGE_EXPR@[3413; 3512) 2022 [email protected]
2023 DOT2@[3413; 3415) ".." 2023 [email protected] ".."
2024 WHITESPACE@[3415; 3416) " " 2024 [email protected] " "
2025 RANGE_EXPR@[3416; 3512) 2025 [email protected]
2026 DOT2EQ@[3416; 3419) "..=" 2026 [email protected] "..="
2027 RANGE_EXPR@[3419; 3512) 2027 [email protected]
2028 DOT2@[3419; 3421) ".." 2028 [email protected] ".."
2029 WHITESPACE@[3421; 3425) " " 2029 [email protected] " "
2030 RANGE_EXPR@[3425; 3512) 2030 [email protected]
2031 DOT2@[3425; 3427) ".." 2031 [email protected] ".."
2032 WHITESPACE@[3427; 3428) " " 2032 [email protected] " "
2033 RANGE_EXPR@[3428; 3512) 2033 [email protected]
2034 DOT2@[3428; 3430) ".." 2034 [email protected] ".."
2035 WHITESPACE@[3430; 3431) " " 2035 [email protected] " "
2036 RANGE_EXPR@[3431; 3512) 2036 [email protected]
2037 DOT2EQ@[3431; 3434) "..=" 2037 [email protected] "..="
2038 RANGE_EXPR@[3434; 3512) 2038 [email protected]
2039 DOT2@[3434; 3436) ".." 2039 [email protected] ".."
2040 WHITESPACE@[3436; 3440) " " 2040 [email protected] " "
2041 RANGE_EXPR@[3440; 3512) 2041 [email protected]
2042 DOT2@[3440; 3442) ".." 2042 [email protected] ".."
2043 WHITESPACE@[3442; 3443) " " 2043 [email protected] " "
2044 RANGE_EXPR@[3443; 3512) 2044 [email protected]
2045 DOT2EQ@[3443; 3446) "..=" 2045 [email protected] "..="
2046 RANGE_EXPR@[3446; 3512) 2046 [email protected]
2047 DOT2@[3446; 3448) ".." 2047 [email protected] ".."
2048 WHITESPACE@[3448; 3449) " " 2048 [email protected] " "
2049 RANGE_EXPR@[3449; 3512) 2049 [email protected]
2050 DOT2@[3449; 3451) ".." 2050 [email protected] ".."
2051 WHITESPACE@[3451; 3456) "\n " 2051 [email protected] "\n "
2052 RANGE_EXPR@[3456; 3512) 2052 [email protected]
2053 DOT2EQ@[3456; 3459) "..=" 2053 [email protected] "..="
2054 RANGE_EXPR@[3459; 3512) 2054 [email protected]
2055 DOT2@[3459; 3461) ".." 2055 [email protected] ".."
2056 WHITESPACE@[3461; 3462) " " 2056 [email protected] " "
2057 RANGE_EXPR@[3462; 3512) 2057 [email protected]
2058 DOT2EQ@[3462; 3465) "..=" 2058 [email protected] "..="
2059 RANGE_EXPR@[3465; 3512) 2059 [email protected]
2060 DOT2@[3465; 3467) ".." 2060 [email protected] ".."
2061 WHITESPACE@[3467; 3471) " " 2061 [email protected] " "
2062 RANGE_EXPR@[3471; 3512) 2062 [email protected]
2063 DOT2@[3471; 3473) ".." 2063 [email protected] ".."
2064 WHITESPACE@[3473; 3474) " " 2064 [email protected] " "
2065 RANGE_EXPR@[3474; 3512) 2065 [email protected]
2066 DOT2EQ@[3474; 3477) "..=" 2066 [email protected] "..="
2067 RANGE_EXPR@[3477; 3512) 2067 [email protected]
2068 DOT2EQ@[3477; 3480) "..=" 2068 [email protected] "..="
2069 RANGE_EXPR@[3480; 3512) 2069 [email protected]
2070 DOT2@[3480; 3482) ".." 2070 [email protected] ".."
2071 WHITESPACE@[3482; 3486) " " 2071 [email protected] " "
2072 RANGE_EXPR@[3486; 3512) 2072 [email protected]
2073 DOT2EQ@[3486; 3489) "..=" 2073 [email protected] "..="
2074 RANGE_EXPR@[3489; 3512) 2074 [email protected]
2075 DOT2EQ@[3489; 3492) "..=" 2075 [email protected] "..="
2076 RANGE_EXPR@[3492; 3512) 2076 [email protected]
2077 DOT2@[3492; 3494) ".." 2077 [email protected] ".."
2078 WHITESPACE@[3494; 3495) " " 2078 [email protected] " "
2079 RANGE_EXPR@[3495; 3512) 2079 [email protected]
2080 DOT2@[3495; 3497) ".." 2080 [email protected] ".."
2081 WHITESPACE@[3497; 3501) " " 2081 [email protected] " "
2082 RANGE_EXPR@[3501; 3512) 2082 [email protected]
2083 DOT2@[3501; 3503) ".." 2083 [email protected] ".."
2084 WHITESPACE@[3503; 3504) " " 2084 [email protected] " "
2085 RANGE_EXPR@[3504; 3512) 2085 [email protected]
2086 DOT2EQ@[3504; 3507) "..=" 2086 [email protected] "..="
2087 RANGE_EXPR@[3507; 3512) 2087 [email protected]
2088 DOT2@[3507; 3509) ".." 2088 [email protected] ".."
2089 WHITESPACE@[3509; 3510) " " 2089 [email protected] " "
2090 RANGE_EXPR@[3510; 3512) 2090 [email protected]
2091 DOT2@[3510; 3512) ".." 2091 [email protected] ".."
2092 WHITESPACE@[3512; 3513) "\n" 2092 WHITESPACE@3512..3513 "\n"
2093 R_CURLY@[3513; 3514) "}" 2093 R_CURLY@3513..3514 "}"
2094 WHITESPACE@[3514; 3516) "\n\n" 2094 WHITESPACE@3514..3516 "\n\n"
2095 FN_DEF@[3516; 3552) 2095 FN_DEF@3516..3552
2096 FN_KW@[3516; 3518) "fn" 2096 FN_KW@3516..3518 "fn"
2097 WHITESPACE@[3518; 3519) " " 2097 WHITESPACE@3518..3519 " "
2098 NAME@[3519; 3525) 2098 NAME@3519..3525
2099 IDENT@[3519; 3525) "ktulhu" 2099 IDENT@3519..3525 "ktulhu"
2100 PARAM_LIST@[3525; 3527) 2100 PARAM_LIST@3525..3527
2101 L_PAREN@[3525; 3526) "(" 2101 L_PAREN@3525..3526 "("
2102 R_PAREN@[3526; 3527) ")" 2102 R_PAREN@3526..3527 ")"
2103 WHITESPACE@[3527; 3528) " " 2103 WHITESPACE@3527..3528 " "
2104 BLOCK_EXPR@[3528; 3552) 2104 BLOCK_EXPR@3528..3552
2105 BLOCK@[3528; 3552) 2105 BLOCK@3528..3552
2106 L_CURLY@[3528; 3529) "{" 2106 L_CURLY@3528..3529 "{"
2107 WHITESPACE@[3529; 3534) "\n " 2107 WHITESPACE@3529..3534 "\n "
2108 SEMICOLON@[3534; 3535) ";" 2108 SEMICOLON@3534..3535 ";"
2109 SEMICOLON@[3535; 3536) ";" 2109 SEMICOLON@3535..3536 ";"
2110 SEMICOLON@[3536; 3537) ";" 2110 SEMICOLON@3536..3537 ";"
2111 EXPR_STMT@[3537; 3540) 2111 EXPR_STMT@3537..3540
2112 TUPLE_EXPR@[3537; 3539) 2112 TUPLE_EXPR@3537..3539
2113 L_PAREN@[3537; 3538) "(" 2113 L_PAREN@3537..3538 "("
2114 R_PAREN@[3538; 3539) ")" 2114 R_PAREN@3538..3539 ")"
2115 SEMICOLON@[3539; 3540) ";" 2115 SEMICOLON@3539..3540 ";"
2116 SEMICOLON@[3540; 3541) ";" 2116 SEMICOLON@3540..3541 ";"
2117 SEMICOLON@[3541; 3542) ";" 2117 SEMICOLON@3541..3542 ";"
2118 SEMICOLON@[3542; 3543) ";" 2118 SEMICOLON@3542..3543 ";"
2119 SEMICOLON@[3543; 3544) ";" 2119 SEMICOLON@3543..3544 ";"
2120 SEMICOLON@[3544; 3545) ";" 2120 SEMICOLON@3544..3545 ";"
2121 SEMICOLON@[3545; 3546) ";" 2121 SEMICOLON@3545..3546 ";"
2122 SEMICOLON@[3546; 3547) ";" 2122 SEMICOLON@3546..3547 ";"
2123 SEMICOLON@[3547; 3548) ";" 2123 SEMICOLON@3547..3548 ";"
2124 TUPLE_EXPR@[3548; 3550) 2124 TUPLE_EXPR@3548..3550
2125 L_PAREN@[3548; 3549) "(" 2125 L_PAREN@3548..3549 "("
2126 R_PAREN@[3549; 3550) ")" 2126 R_PAREN@3549..3550 ")"
2127 WHITESPACE@[3550; 3551) "\n" 2127 WHITESPACE@3550..3551 "\n"
2128 R_CURLY@[3551; 3552) "}" 2128 R_CURLY@3551..3552 "}"
2129 WHITESPACE@[3552; 3554) "\n\n" 2129 WHITESPACE@3552..3554 "\n\n"
2130 FN_DEF@[3554; 3812) 2130 FN_DEF@3554..3812
2131 VISIBILITY@[3554; 3557) 2131 VISIBILITY@3554..3557
2132 PUB_KW@[3554; 3557) "pub" 2132 PUB_KW@3554..3557 "pub"
2133 WHITESPACE@[3557; 3558) " " 2133 WHITESPACE@3557..3558 " "
2134 FN_KW@[3558; 3560) "fn" 2134 FN_KW@3558..3560 "fn"
2135 WHITESPACE@[3560; 3561) " " 2135 WHITESPACE@3560..3561 " "
2136 NAME@[3561; 3565) 2136 NAME@3561..3565
2137 IDENT@[3561; 3565) "main" 2137 IDENT@3561..3565 "main"
2138 PARAM_LIST@[3565; 3567) 2138 PARAM_LIST@3565..3567
2139 L_PAREN@[3565; 3566) "(" 2139 L_PAREN@3565..3566 "("
2140 R_PAREN@[3566; 3567) ")" 2140 R_PAREN@3566..3567 ")"
2141 WHITESPACE@[3567; 3568) " " 2141 WHITESPACE@3567..3568 " "
2142 BLOCK_EXPR@[3568; 3812) 2142 BLOCK_EXPR@3568..3812
2143 BLOCK@[3568; 3812) 2143 BLOCK@3568..3812
2144 L_CURLY@[3568; 3569) "{" 2144 L_CURLY@3568..3569 "{"
2145 WHITESPACE@[3569; 3574) "\n " 2145 WHITESPACE@3569..3574 "\n "
2146 EXPR_STMT@[3574; 3584) 2146 EXPR_STMT@3574..3584
2147 CALL_EXPR@[3574; 3583) 2147 CALL_EXPR@3574..3583
2148 PATH_EXPR@[3574; 3581) 2148 PATH_EXPR@3574..3581
2149 PATH@[3574; 3581) 2149 PATH@3574..3581
2150 PATH_SEGMENT@[3574; 3581) 2150 PATH_SEGMENT@3574..3581
2151 NAME_REF@[3574; 3581) 2151 NAME_REF@3574..3581
2152 IDENT@[3574; 3581) "strange" 2152 IDENT@3574..3581 "strange"
2153 ARG_LIST@[3581; 3583) 2153 ARG_LIST@3581..3583
2154 L_PAREN@[3581; 3582) "(" 2154 L_PAREN@3581..3582 "("
2155 R_PAREN@[3582; 3583) ")" 2155 R_PAREN@3582..3583 ")"
2156 SEMICOLON@[3583; 3584) ";" 2156 SEMICOLON@3583..3584 ";"
2157 WHITESPACE@[3584; 3589) "\n " 2157 WHITESPACE@3584..3589 "\n "
2158 EXPR_STMT@[3589; 3597) 2158 EXPR_STMT@3589..3597
2159 CALL_EXPR@[3589; 3596) 2159 CALL_EXPR@3589..3596
2160 PATH_EXPR@[3589; 3594) 2160 PATH_EXPR@3589..3594
2161 PATH@[3589; 3594) 2161 PATH@3589..3594
2162 PATH_SEGMENT@[3589; 3594) 2162 PATH_SEGMENT@3589..3594
2163 NAME_REF@[3589; 3594) 2163 NAME_REF@3589..3594
2164 IDENT@[3589; 3594) "funny" 2164 IDENT@3589..3594 "funny"
2165 ARG_LIST@[3594; 3596) 2165 ARG_LIST@3594..3596
2166 L_PAREN@[3594; 3595) "(" 2166 L_PAREN@3594..3595 "("
2167 R_PAREN@[3595; 3596) ")" 2167 R_PAREN@3595..3596 ")"
2168 SEMICOLON@[3596; 3597) ";" 2168 SEMICOLON@3596..3597 ";"
2169 WHITESPACE@[3597; 3602) "\n " 2169 WHITESPACE@3597..3602 "\n "
2170 EXPR_STMT@[3602; 3609) 2170 EXPR_STMT@3602..3609
2171 CALL_EXPR@[3602; 3608) 2171 CALL_EXPR@3602..3608
2172 PATH_EXPR@[3602; 3606) 2172 PATH_EXPR@3602..3606
2173 PATH@[3602; 3606) 2173 PATH@3602..3606
2174 PATH_SEGMENT@[3602; 3606) 2174 PATH_SEGMENT@3602..3606
2175 NAME_REF@[3602; 3606) 2175 NAME_REF@3602..3606
2176 IDENT@[3602; 3606) "what" 2176 IDENT@3602..3606 "what"
2177 ARG_LIST@[3606; 3608) 2177 ARG_LIST@3606..3608
2178 L_PAREN@[3606; 3607) "(" 2178 L_PAREN@3606..3607 "("
2179 R_PAREN@[3607; 3608) ")" 2179 R_PAREN@3607..3608 ")"
2180 SEMICOLON@[3608; 3609) ";" 2180 SEMICOLON@3608..3609 ";"
2181 WHITESPACE@[3609; 3614) "\n " 2181 WHITESPACE@3609..3614 "\n "
2182 EXPR_STMT@[3614; 3628) 2182 EXPR_STMT@3614..3628
2183 CALL_EXPR@[3614; 3627) 2183 CALL_EXPR@3614..3627
2184 PATH_EXPR@[3614; 3625) 2184 PATH_EXPR@3614..3625
2185 PATH@[3614; 3625) 2185 PATH@3614..3625
2186 PATH_SEGMENT@[3614; 3625) 2186 PATH_SEGMENT@3614..3625
2187 NAME_REF@[3614; 3625) 2187 NAME_REF@3614..3625
2188 IDENT@[3614; 3625) "zombiejesus" 2188 IDENT@3614..3625 "zombiejesus"
2189 ARG_LIST@[3625; 3627) 2189 ARG_LIST@3625..3627
2190 L_PAREN@[3625; 3626) "(" 2190 L_PAREN@3625..3626 "("
2191 R_PAREN@[3626; 3627) ")" 2191 R_PAREN@3626..3627 ")"
2192 SEMICOLON@[3627; 3628) ";" 2192 SEMICOLON@3627..3628 ";"
2193 WHITESPACE@[3628; 3633) "\n " 2193 WHITESPACE@3628..3633 "\n "
2194 EXPR_STMT@[3633; 3643) 2194 EXPR_STMT@3633..3643
2195 CALL_EXPR@[3633; 3642) 2195 CALL_EXPR@3633..3642
2196 PATH_EXPR@[3633; 3640) 2196 PATH_EXPR@3633..3640
2197 PATH@[3633; 3640) 2197 PATH@3633..3640
2198 PATH_SEGMENT@[3633; 3640) 2198 PATH_SEGMENT@3633..3640
2199 NAME_REF@[3633; 3640) 2199 NAME_REF@3633..3640
2200 IDENT@[3633; 3640) "notsure" 2200 IDENT@3633..3640 "notsure"
2201 ARG_LIST@[3640; 3642) 2201 ARG_LIST@3640..3642
2202 L_PAREN@[3640; 3641) "(" 2202 L_PAREN@3640..3641 "("
2203 R_PAREN@[3641; 3642) ")" 2203 R_PAREN@3641..3642 ")"
2204 SEMICOLON@[3642; 3643) ";" 2204 SEMICOLON@3642..3643 ";"
2205 WHITESPACE@[3643; 3648) "\n " 2205 WHITESPACE@3643..3648 "\n "
2206 EXPR_STMT@[3648; 3664) 2206 EXPR_STMT@3648..3664
2207 CALL_EXPR@[3648; 3663) 2207 CALL_EXPR@3648..3663
2208 PATH_EXPR@[3648; 3661) 2208 PATH_EXPR@3648..3661
2209 PATH@[3648; 3661) 2209 PATH@3648..3661
2210 PATH_SEGMENT@[3648; 3661) 2210 PATH_SEGMENT@3648..3661
2211 NAME_REF@[3648; 3661) 2211 NAME_REF@3648..3661
2212 IDENT@[3648; 3661) "canttouchthis" 2212 IDENT@3648..3661 "canttouchthis"
2213 ARG_LIST@[3661; 3663) 2213 ARG_LIST@3661..3663
2214 L_PAREN@[3661; 3662) "(" 2214 L_PAREN@3661..3662 "("
2215 R_PAREN@[3662; 3663) ")" 2215 R_PAREN@3662..3663 ")"
2216 SEMICOLON@[3663; 3664) ";" 2216 SEMICOLON@3663..3664 ";"
2217 WHITESPACE@[3664; 3669) "\n " 2217 WHITESPACE@3664..3669 "\n "
2218 EXPR_STMT@[3669; 3681) 2218 EXPR_STMT@3669..3681
2219 CALL_EXPR@[3669; 3680) 2219 CALL_EXPR@3669..3680
2220 PATH_EXPR@[3669; 3678) 2220 PATH_EXPR@3669..3678
2221 PATH@[3669; 3678) 2221 PATH@3669..3678
2222 PATH_SEGMENT@[3669; 3678) 2222 PATH_SEGMENT@3669..3678
2223 NAME_REF@[3669; 3678) 2223 NAME_REF@3669..3678
2224 IDENT@[3669; 3678) "angrydome" 2224 IDENT@3669..3678 "angrydome"
2225 ARG_LIST@[3678; 3680) 2225 ARG_LIST@3678..3680
2226 L_PAREN@[3678; 3679) "(" 2226 L_PAREN@3678..3679 "("
2227 R_PAREN@[3679; 3680) ")" 2227 R_PAREN@3679..3680 ")"
2228 SEMICOLON@[3680; 3681) ";" 2228 SEMICOLON@3680..3681 ";"
2229 WHITESPACE@[3681; 3686) "\n " 2229 WHITESPACE@3681..3686 "\n "
2230 EXPR_STMT@[3686; 3701) 2230 EXPR_STMT@3686..3701
2231 CALL_EXPR@[3686; 3700) 2231 CALL_EXPR@3686..3700
2232 PATH_EXPR@[3686; 3698) 2232 PATH_EXPR@3686..3698
2233 PATH@[3686; 3698) 2233 PATH@3686..3698
2234 PATH_SEGMENT@[3686; 3698) 2234 PATH_SEGMENT@3686..3698
2235 NAME_REF@[3686; 3698) 2235 NAME_REF@3686..3698
2236 IDENT@[3686; 3698) "evil_lincoln" 2236 IDENT@3686..3698 "evil_lincoln"
2237 ARG_LIST@[3698; 3700) 2237 ARG_LIST@3698..3700
2238 L_PAREN@[3698; 3699) "(" 2238 L_PAREN@3698..3699 "("
2239 R_PAREN@[3699; 3700) ")" 2239 R_PAREN@3699..3700 ")"
2240 SEMICOLON@[3700; 3701) ";" 2240 SEMICOLON@3700..3701 ";"
2241 WHITESPACE@[3701; 3706) "\n " 2241 WHITESPACE@3701..3706 "\n "
2242 EXPR_STMT@[3706; 3713) 2242 EXPR_STMT@3706..3713
2243 CALL_EXPR@[3706; 3712) 2243 CALL_EXPR@3706..3712
2244 PATH_EXPR@[3706; 3710) 2244 PATH_EXPR@3706..3710
2245 PATH@[3706; 3710) 2245 PATH@3706..3710
2246 PATH_SEGMENT@[3706; 3710) 2246 PATH_SEGMENT@3706..3710
2247 NAME_REF@[3706; 3710) 2247 NAME_REF@3706..3710
2248 IDENT@[3706; 3710) "dots" 2248 IDENT@3706..3710 "dots"
2249 ARG_LIST@[3710; 3712) 2249 ARG_LIST@3710..3712
2250 L_PAREN@[3710; 3711) "(" 2250 L_PAREN@3710..3711 "("
2251 R_PAREN@[3711; 3712) ")" 2251 R_PAREN@3711..3712 ")"
2252 SEMICOLON@[3712; 3713) ";" 2252 SEMICOLON@3712..3713 ";"
2253 WHITESPACE@[3713; 3718) "\n " 2253 WHITESPACE@3713..3718 "\n "
2254 EXPR_STMT@[3718; 3726) 2254 EXPR_STMT@3718..3726
2255 CALL_EXPR@[3718; 3725) 2255 CALL_EXPR@3718..3725
2256 PATH_EXPR@[3718; 3720) 2256 PATH_EXPR@3718..3720
2257 PATH@[3718; 3720) 2257 PATH@3718..3720
2258 PATH_SEGMENT@[3718; 3720) 2258 PATH_SEGMENT@3718..3720
2259 NAME_REF@[3718; 3720) 2259 NAME_REF@3718..3720
2260 IDENT@[3718; 3720) "u8" 2260 IDENT@3718..3720 "u8"
2261 ARG_LIST@[3720; 3725) 2261 ARG_LIST@3720..3725
2262 L_PAREN@[3720; 3721) "(" 2262 L_PAREN@3720..3721 "("
2263 LITERAL@[3721; 3724) 2263 LITERAL@3721..3724
2264 INT_NUMBER@[3721; 3724) "8u8" 2264 INT_NUMBER@3721..3724 "8u8"
2265 R_PAREN@[3724; 3725) ")" 2265 R_PAREN@3724..3725 ")"
2266 SEMICOLON@[3725; 3726) ";" 2266 SEMICOLON@3725..3726 ";"
2267 WHITESPACE@[3726; 3731) "\n " 2267 WHITESPACE@3726..3731 "\n "
2268 EXPR_STMT@[3731; 3739) 2268 EXPR_STMT@3731..3739
2269 CALL_EXPR@[3731; 3738) 2269 CALL_EXPR@3731..3738
2270 PATH_EXPR@[3731; 3736) 2270 PATH_EXPR@3731..3736
2271 PATH@[3731; 3736) 2271 PATH@3731..3736
2272 PATH_SEGMENT@[3731; 3736) 2272 PATH_SEGMENT@3731..3736
2273 NAME_REF@[3731; 3736) 2273 NAME_REF@3731..3736
2274 IDENT@[3731; 3736) "fishy" 2274 IDENT@3731..3736 "fishy"
2275 ARG_LIST@[3736; 3738) 2275 ARG_LIST@3736..3738
2276 L_PAREN@[3736; 3737) "(" 2276 L_PAREN@3736..3737 "("
2277 R_PAREN@[3737; 3738) ")" 2277 R_PAREN@3737..3738 ")"
2278 SEMICOLON@[3738; 3739) ";" 2278 SEMICOLON@3738..3739 ";"
2279 WHITESPACE@[3739; 3744) "\n " 2279 WHITESPACE@3739..3744 "\n "
2280 EXPR_STMT@[3744; 3752) 2280 EXPR_STMT@3744..3752
2281 CALL_EXPR@[3744; 3751) 2281 CALL_EXPR@3744..3751
2282 PATH_EXPR@[3744; 3749) 2282 PATH_EXPR@3744..3749
2283 PATH@[3744; 3749) 2283 PATH@3744..3749
2284 PATH_SEGMENT@[3744; 3749) 2284 PATH_SEGMENT@3744..3749
2285 NAME_REF@[3744; 3749) 2285 NAME_REF@3744..3749
2286 IDENT@[3744; 3749) "union" 2286 IDENT@3744..3749 "union"
2287 ARG_LIST@[3749; 3751) 2287 ARG_LIST@3749..3751
2288 L_PAREN@[3749; 3750) "(" 2288 L_PAREN@3749..3750 "("
2289 R_PAREN@[3750; 3751) ")" 2289 R_PAREN@3750..3751 ")"
2290 SEMICOLON@[3751; 3752) ";" 2290 SEMICOLON@3751..3752 ";"
2291 WHITESPACE@[3752; 3757) "\n " 2291 WHITESPACE@3752..3757 "\n "
2292 EXPR_STMT@[3757; 3778) 2292 EXPR_STMT@3757..3778
2293 CALL_EXPR@[3757; 3777) 2293 CALL_EXPR@3757..3777
2294 PATH_EXPR@[3757; 3775) 2294 PATH_EXPR@3757..3775
2295 PATH@[3757; 3775) 2295 PATH@3757..3775
2296 PATH_SEGMENT@[3757; 3775) 2296 PATH_SEGMENT@3757..3775
2297 NAME_REF@[3757; 3775) 2297 NAME_REF@3757..3775
2298 IDENT@[3757; 3775) "special_characters" 2298 IDENT@3757..3775 "special_characters"
2299 ARG_LIST@[3775; 3777) 2299 ARG_LIST@3775..3777
2300 L_PAREN@[3775; 3776) "(" 2300 L_PAREN@3775..3776 "("
2301 R_PAREN@[3776; 3777) ")" 2301 R_PAREN@3776..3777 ")"
2302 SEMICOLON@[3777; 3778) ";" 2302 SEMICOLON@3777..3778 ";"
2303 WHITESPACE@[3778; 3783) "\n " 2303 WHITESPACE@3778..3783 "\n "
2304 EXPR_STMT@[3783; 3796) 2304 EXPR_STMT@3783..3796
2305 CALL_EXPR@[3783; 3795) 2305 CALL_EXPR@3783..3795
2306 PATH_EXPR@[3783; 3793) 2306 PATH_EXPR@3783..3793
2307 PATH@[3783; 3793) 2307 PATH@3783..3793
2308 PATH_SEGMENT@[3783; 3793) 2308 PATH_SEGMENT@3783..3793
2309 NAME_REF@[3783; 3793) 2309 NAME_REF@3783..3793
2310 IDENT@[3783; 3793) "punch_card" 2310 IDENT@3783..3793 "punch_card"
2311 ARG_LIST@[3793; 3795) 2311 ARG_LIST@3793..3795
2312 L_PAREN@[3793; 3794) "(" 2312 L_PAREN@3793..3794 "("
2313 R_PAREN@[3794; 3795) ")" 2313 R_PAREN@3794..3795 ")"
2314 SEMICOLON@[3795; 3796) ";" 2314 SEMICOLON@3795..3796 ";"
2315 WHITESPACE@[3796; 3801) "\n " 2315 WHITESPACE@3796..3801 "\n "
2316 EXPR_STMT@[3801; 3810) 2316 EXPR_STMT@3801..3810
2317 CALL_EXPR@[3801; 3809) 2317 CALL_EXPR@3801..3809
2318 PATH_EXPR@[3801; 3807) 2318 PATH_EXPR@3801..3807
2319 PATH@[3801; 3807) 2319 PATH@3801..3807
2320 PATH_SEGMENT@[3801; 3807) 2320 PATH_SEGMENT@3801..3807
2321 NAME_REF@[3801; 3807) 2321 NAME_REF@3801..3807
2322 IDENT@[3801; 3807) "ktulhu" 2322 IDENT@3801..3807 "ktulhu"
2323 ARG_LIST@[3807; 3809) 2323 ARG_LIST@3807..3809
2324 L_PAREN@[3807; 3808) "(" 2324 L_PAREN@3807..3808 "("
2325 R_PAREN@[3808; 3809) ")" 2325 R_PAREN@3808..3809 ")"
2326 SEMICOLON@[3809; 3810) ";" 2326 SEMICOLON@3809..3810 ";"
2327 WHITESPACE@[3810; 3811) "\n" 2327 WHITESPACE@3810..3811 "\n"
2328 R_CURLY@[3811; 3812) "}" 2328 R_CURLY@3811..3812 "}"
2329 WHITESPACE@[3812; 3813) "\n" 2329 WHITESPACE@3812..3813 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast b/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast
index 4df6703f4..8f616623b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 157) 1SOURCE_FILE@0..157
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 FN_DEF@[62; 156) 4 FN_DEF@62..156
5 VISIBILITY@[62; 65) 5 VISIBILITY@62..65
6 PUB_KW@[62; 65) "pub" 6 PUB_KW@62..65 "pub"
7 WHITESPACE@[65; 66) " " 7 WHITESPACE@65..66 " "
8 FN_KW@[66; 68) "fn" 8 FN_KW@66..68 "fn"
9 WHITESPACE@[68; 69) " " 9 WHITESPACE@68..69 " "
10 NAME@[69; 72) 10 NAME@69..72
11 IDENT@[69; 72) "foo" 11 IDENT@69..72 "foo"
12 TYPE_PARAM_LIST@[72; 85) 12 TYPE_PARAM_LIST@72..85
13 L_ANGLE@[72; 73) "<" 13 L_ANGLE@72..73 "<"
14 TYPE_PARAM@[73; 84) 14 TYPE_PARAM@73..84
15 NAME@[73; 74) 15 NAME@73..74
16 IDENT@[73; 74) "S" 16 IDENT@73..74 "S"
17 COLON@[74; 75) ":" 17 COLON@74..75 ":"
18 WHITESPACE@[75; 76) " " 18 WHITESPACE@75..76 " "
19 TYPE_BOUND_LIST@[76; 84) 19 TYPE_BOUND_LIST@76..84
20 TYPE_BOUND@[76; 84) 20 TYPE_BOUND@76..84
21 PATH_TYPE@[76; 84) 21 PATH_TYPE@76..84
22 PATH@[76; 84) 22 PATH@76..84
23 PATH_SEGMENT@[76; 84) 23 PATH_SEGMENT@76..84
24 NAME_REF@[76; 84) 24 NAME_REF@76..84
25 IDENT@[76; 84) "Iterator" 25 IDENT@76..84 "Iterator"
26 R_ANGLE@[84; 85) ">" 26 R_ANGLE@84..85 ">"
27 PARAM_LIST@[85; 87) 27 PARAM_LIST@85..87
28 L_PAREN@[85; 86) "(" 28 L_PAREN@85..86 "("
29 R_PAREN@[86; 87) ")" 29 R_PAREN@86..87 ")"
30 WHITESPACE@[87; 88) " " 30 WHITESPACE@87..88 " "
31 RET_TYPE@[88; 97) 31 RET_TYPE@88..97
32 THIN_ARROW@[88; 90) "->" 32 THIN_ARROW@88..90 "->"
33 WHITESPACE@[90; 91) " " 33 WHITESPACE@90..91 " "
34 PATH_TYPE@[91; 97) 34 PATH_TYPE@91..97
35 PATH@[91; 97) 35 PATH@91..97
36 PATH_SEGMENT@[91; 97) 36 PATH_SEGMENT@91..97
37 NAME_REF@[91; 97) 37 NAME_REF@91..97
38 IDENT@[91; 97) "String" 38 IDENT@91..97 "String"
39 WHITESPACE@[97; 98) "\n" 39 WHITESPACE@97..98 "\n"
40 WHERE_CLAUSE@[98; 134) 40 WHERE_CLAUSE@98..134
41 WHERE_KW@[98; 103) "where" 41 WHERE_KW@98..103 "where"
42 WHITESPACE@[103; 108) "\n " 42 WHITESPACE@103..108 "\n "
43 WHERE_PRED@[108; 133) 43 WHERE_PRED@108..133
44 PATH_TYPE@[108; 129) 44 PATH_TYPE@108..129
45 PATH@[108; 129) 45 PATH@108..129
46 PATH@[108; 123) 46 PATH@108..123
47 PATH_SEGMENT@[108; 123) 47 PATH_SEGMENT@108..123
48 L_ANGLE@[108; 109) "<" 48 L_ANGLE@108..109 "<"
49 PATH_TYPE@[109; 110) 49 PATH_TYPE@109..110
50 PATH@[109; 110) 50 PATH@109..110
51 PATH_SEGMENT@[109; 110) 51 PATH_SEGMENT@109..110
52 NAME_REF@[109; 110) 52 NAME_REF@109..110
53 IDENT@[109; 110) "S" 53 IDENT@109..110 "S"
54 WHITESPACE@[110; 111) " " 54 WHITESPACE@110..111 " "
55 AS_KW@[111; 113) "as" 55 AS_KW@111..113 "as"
56 WHITESPACE@[113; 114) " " 56 WHITESPACE@113..114 " "
57 PATH_TYPE@[114; 122) 57 PATH_TYPE@114..122
58 PATH@[114; 122) 58 PATH@114..122
59 PATH_SEGMENT@[114; 122) 59 PATH_SEGMENT@114..122
60 NAME_REF@[114; 122) 60 NAME_REF@114..122
61 IDENT@[114; 122) "Iterator" 61 IDENT@114..122 "Iterator"
62 R_ANGLE@[122; 123) ">" 62 R_ANGLE@122..123 ">"
63 COLON2@[123; 125) "::" 63 COLON2@123..125 "::"
64 PATH_SEGMENT@[125; 129) 64 PATH_SEGMENT@125..129
65 NAME_REF@[125; 129) 65 NAME_REF@125..129
66 IDENT@[125; 129) "Item" 66 IDENT@125..129 "Item"
67 COLON@[129; 130) ":" 67 COLON@129..130 ":"
68 WHITESPACE@[130; 131) " " 68 WHITESPACE@130..131 " "
69 TYPE_BOUND_LIST@[131; 133) 69 TYPE_BOUND_LIST@131..133
70 TYPE_BOUND@[131; 133) 70 TYPE_BOUND@131..133
71 PATH_TYPE@[131; 133) 71 PATH_TYPE@131..133
72 PATH@[131; 133) 72 PATH@131..133
73 PATH_SEGMENT@[131; 133) 73 PATH_SEGMENT@131..133
74 NAME_REF@[131; 133) 74 NAME_REF@131..133
75 IDENT@[131; 133) "Eq" 75 IDENT@131..133 "Eq"
76 COMMA@[133; 134) "," 76 COMMA@133..134 ","
77 WHITESPACE@[134; 135) "\n" 77 WHITESPACE@134..135 "\n"
78 BLOCK_EXPR@[135; 156) 78 BLOCK_EXPR@135..156
79 BLOCK@[135; 156) 79 BLOCK@135..156
80 L_CURLY@[135; 136) "{" 80 L_CURLY@135..136 "{"
81 WHITESPACE@[136; 141) "\n " 81 WHITESPACE@136..141 "\n "
82 METHOD_CALL_EXPR@[141; 154) 82 METHOD_CALL_EXPR@141..154
83 LITERAL@[141; 143) 83 LITERAL@141..143
84 STRING@[141; 143) "\"\"" 84 STRING@141..143 "\"\""
85 DOT@[143; 144) "." 85 DOT@143..144 "."
86 NAME_REF@[144; 152) 86 NAME_REF@144..152
87 IDENT@[144; 152) "to_owned" 87 IDENT@144..152 "to_owned"
88 ARG_LIST@[152; 154) 88 ARG_LIST@152..154
89 L_PAREN@[152; 153) "(" 89 L_PAREN@152..153 "("
90 R_PAREN@[153; 154) ")" 90 R_PAREN@153..154 ")"
91 WHITESPACE@[154; 155) "\n" 91 WHITESPACE@154..155 "\n"
92 R_CURLY@[155; 156) "}" 92 R_CURLY@155..156 "}"
93 WHITESPACE@[156; 157) "\n" 93 WHITESPACE@156..157 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0037_mod.rast b/crates/ra_syntax/test_data/parser/ok/0037_mod.rast
index 3af40a104..1d5d94bde 100644
--- a/crates/ra_syntax/test_data/parser/ok/0037_mod.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0037_mod.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 93) 1SOURCE_FILE@0..93
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 MODULE@[62; 93) 4 MODULE@62..93
5 COMMENT@[62; 70) "//! docs" 5 COMMENT@62..70 "//! docs"
6 WHITESPACE@[70; 71) "\n" 6 WHITESPACE@70..71 "\n"
7 COMMENT@[71; 82) "// non-docs" 7 COMMENT@71..82 "// non-docs"
8 WHITESPACE@[82; 83) "\n" 8 WHITESPACE@82..83 "\n"
9 MOD_KW@[83; 86) "mod" 9 MOD_KW@83..86 "mod"
10 WHITESPACE@[86; 87) " " 10 WHITESPACE@86..87 " "
11 NAME@[87; 90) 11 NAME@87..90
12 IDENT@[87; 90) "foo" 12 IDENT@87..90 "foo"
13 WHITESPACE@[90; 91) " " 13 WHITESPACE@90..91 " "
14 ITEM_LIST@[91; 93) 14 ITEM_LIST@91..93
15 L_CURLY@[91; 92) "{" 15 L_CURLY@91..92 "{"
16 R_CURLY@[92; 93) "}" 16 R_CURLY@92..93 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast b/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast
index 377367914..14d82feb0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@0..34
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "test" 6 IDENT@3..7 "test"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 WHERE_CLAUSE@[10; 31) 11 WHERE_CLAUSE@10..31
12 WHERE_KW@[10; 15) "where" 12 WHERE_KW@10..15 "where"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 WHERE_PRED@[16; 31) 14 WHERE_PRED@16..31
15 TUPLE_TYPE@[16; 26) 15 TUPLE_TYPE@16..26
16 L_PAREN@[16; 17) "(" 16 L_PAREN@16..17 "("
17 PATH_TYPE@[17; 20) 17 PATH_TYPE@17..20
18 PATH@[17; 20) 18 PATH@17..20
19 PATH_SEGMENT@[17; 20) 19 PATH_SEGMENT@17..20
20 NAME_REF@[17; 20) 20 NAME_REF@17..20
21 IDENT@[17; 20) "u64" 21 IDENT@17..20 "u64"
22 COMMA@[20; 21) "," 22 COMMA@20..21 ","
23 WHITESPACE@[21; 22) " " 23 WHITESPACE@21..22 " "
24 PATH_TYPE@[22; 25) 24 PATH_TYPE@22..25
25 PATH@[22; 25) 25 PATH@22..25
26 PATH_SEGMENT@[22; 25) 26 PATH_SEGMENT@22..25
27 NAME_REF@[22; 25) 27 NAME_REF@22..25
28 IDENT@[22; 25) "u64" 28 IDENT@22..25 "u64"
29 R_PAREN@[25; 26) ")" 29 R_PAREN@25..26 ")"
30 COLON@[26; 27) ":" 30 COLON@26..27 ":"
31 WHITESPACE@[27; 28) " " 31 WHITESPACE@27..28 " "
32 TYPE_BOUND_LIST@[28; 31) 32 TYPE_BOUND_LIST@28..31
33 TYPE_BOUND@[28; 31) 33 TYPE_BOUND@28..31
34 PATH_TYPE@[28; 31) 34 PATH_TYPE@28..31
35 PATH@[28; 31) 35 PATH@28..31
36 PATH_SEGMENT@[28; 31) 36 PATH_SEGMENT@28..31
37 NAME_REF@[28; 31) 37 NAME_REF@28..31
38 IDENT@[28; 31) "Foo" 38 IDENT@28..31 "Foo"
39 WHITESPACE@[31; 32) " " 39 WHITESPACE@31..32 " "
40 BLOCK_EXPR@[32; 34) 40 BLOCK_EXPR@32..34
41 BLOCK@[32; 34) 41 BLOCK@32..34
42 L_CURLY@[32; 33) "{" 42 L_CURLY@32..33 "{"
43 R_CURLY@[33; 34) "}" 43 R_CURLY@33..34 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast b/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast
index 9936892e9..d38a60665 100644
--- a/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 15) 1SOURCE_FILE@0..15
2 FN_DEF@[0; 14) 2 FN_DEF@0..14
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 8) 5 NAME@3..8
6 IDENT@[3; 8) "r#foo" 6 IDENT@3..8 "r#foo"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@8..10
8 L_PAREN@[8; 9) "(" 8 L_PAREN@8..9 "("
9 R_PAREN@[9; 10) ")" 9 R_PAREN@9..10 ")"
10 WHITESPACE@[10; 11) " " 10 WHITESPACE@10..11 " "
11 BLOCK_EXPR@[11; 14) 11 BLOCK_EXPR@11..14
12 BLOCK@[11; 14) 12 BLOCK@11..14
13 L_CURLY@[11; 12) "{" 13 L_CURLY@11..12 "{"
14 WHITESPACE@[12; 13) "\n" 14 WHITESPACE@12..13 "\n"
15 R_CURLY@[13; 14) "}" 15 R_CURLY@13..14 "}"
16 WHITESPACE@[14; 15) "\n" 16 WHITESPACE@14..15 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast b/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast
index 05f2c656f..5640bae0a 100644
--- a/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@0..27
2 STRUCT_DEF@[0; 27) 2 STRUCT_DEF@0..27
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 27) 8 RECORD_FIELD_DEF_LIST@9..27
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 25) 11 RECORD_FIELD_DEF@15..25
12 NAME@[15; 20) 12 NAME@15..20
13 IDENT@[15; 20) "r#foo" 13 IDENT@15..20 "r#foo"
14 COLON@[20; 21) ":" 14 COLON@20..21 ":"
15 WHITESPACE@[21; 22) " " 15 WHITESPACE@21..22 " "
16 PATH_TYPE@[22; 25) 16 PATH_TYPE@22..25
17 PATH@[22; 25) 17 PATH@22..25
18 PATH_SEGMENT@[22; 25) 18 PATH_SEGMENT@22..25
19 NAME_REF@[22; 25) 19 NAME_REF@22..25
20 IDENT@[22; 25) "u32" 20 IDENT@22..25 "u32"
21 WHITESPACE@[25; 26) "\n" 21 WHITESPACE@25..26 "\n"
22 R_CURLY@[26; 27) "}" 22 R_CURLY@26..27 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast b/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast
index 825518eda..db25bc2b8 100644
--- a/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 59) 1SOURCE_FILE@0..59
2 FN_DEF@[0; 59) 2 FN_DEF@0..59
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 59) 11 BLOCK_EXPR@9..59
12 BLOCK@[9; 59) 12 BLOCK@9..59
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 LET_STMT@[11; 29) 15 LET_STMT@11..29
16 LET_KW@[11; 14) "let" 16 LET_KW@11..14 "let"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 BIND_PAT@[15; 23) 18 BIND_PAT@15..23
19 NAME@[15; 23) 19 NAME@15..23
20 IDENT@[15; 23) "r#struct" 20 IDENT@15..23 "r#struct"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 EQ@[24; 25) "=" 22 EQ@24..25 "="
23 WHITESPACE@[25; 26) " " 23 WHITESPACE@25..26 " "
24 LITERAL@[26; 28) 24 LITERAL@26..28
25 INT_NUMBER@[26; 28) "92" 25 INT_NUMBER@26..28 "92"
26 SEMICOLON@[28; 29) ";" 26 SEMICOLON@28..29 ";"
27 WHITESPACE@[29; 30) " " 27 WHITESPACE@29..30 " "
28 LET_STMT@[30; 57) 28 LET_STMT@30..57
29 LET_KW@[30; 33) "let" 29 LET_KW@30..33 "let"
30 WHITESPACE@[33; 34) " " 30 WHITESPACE@33..34 " "
31 BIND_PAT@[34; 41) 31 BIND_PAT@34..41
32 NAME@[34; 41) 32 NAME@34..41
33 IDENT@[34; 41) "r#trait" 33 IDENT@34..41 "r#trait"
34 WHITESPACE@[41; 42) " " 34 WHITESPACE@41..42 " "
35 EQ@[42; 43) "=" 35 EQ@42..43 "="
36 WHITESPACE@[43; 44) " " 36 WHITESPACE@43..44 " "
37 BIN_EXPR@[44; 56) 37 BIN_EXPR@44..56
38 PATH_EXPR@[44; 52) 38 PATH_EXPR@44..52
39 PATH@[44; 52) 39 PATH@44..52
40 PATH_SEGMENT@[44; 52) 40 PATH_SEGMENT@44..52
41 NAME_REF@[44; 52) 41 NAME_REF@44..52
42 IDENT@[44; 52) "r#struct" 42 IDENT@44..52 "r#struct"
43 WHITESPACE@[52; 53) " " 43 WHITESPACE@52..53 " "
44 STAR@[53; 54) "*" 44 STAR@53..54 "*"
45 WHITESPACE@[54; 55) " " 45 WHITESPACE@54..55 " "
46 LITERAL@[55; 56) 46 LITERAL@55..56
47 INT_NUMBER@[55; 56) "2" 47 INT_NUMBER@55..56 "2"
48 SEMICOLON@[56; 57) ";" 48 SEMICOLON@56..57 ";"
49 WHITESPACE@[57; 58) " " 49 WHITESPACE@57..58 " "
50 R_CURLY@[58; 59) "}" 50 R_CURLY@58..59 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast b/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast
index 420a62639..9704bea95 100644
--- a/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast
@@ -1,126 +1,126 @@
1SOURCE_FILE@[0; 199) 1SOURCE_FILE@0..199
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 STRUCT_DEF@[62; 73) 4 STRUCT_DEF@62..73
5 STRUCT_KW@[62; 68) "struct" 5 STRUCT_KW@62..68 "struct"
6 WHITESPACE@[68; 69) " " 6 WHITESPACE@68..69 " "
7 NAME@[69; 72) 7 NAME@69..72
8 IDENT@[69; 72) "Foo" 8 IDENT@69..72 "Foo"
9 SEMICOLON@[72; 73) ";" 9 SEMICOLON@72..73 ";"
10 WHITESPACE@[73; 75) "\n\n" 10 WHITESPACE@73..75 "\n\n"
11 IMPL_DEF@[75; 141) 11 IMPL_DEF@75..141
12 IMPL_KW@[75; 79) "impl" 12 IMPL_KW@75..79 "impl"
13 WHITESPACE@[79; 80) " " 13 WHITESPACE@79..80 " "
14 PATH_TYPE@[80; 83) 14 PATH_TYPE@80..83
15 PATH@[80; 83) 15 PATH@80..83
16 PATH_SEGMENT@[80; 83) 16 PATH_SEGMENT@80..83
17 NAME_REF@[80; 83) 17 NAME_REF@80..83
18 IDENT@[80; 83) "Foo" 18 IDENT@80..83 "Foo"
19 WHITESPACE@[83; 84) " " 19 WHITESPACE@83..84 " "
20 ITEM_LIST@[84; 141) 20 ITEM_LIST@84..141
21 L_CURLY@[84; 85) "{" 21 L_CURLY@84..85 "{"
22 WHITESPACE@[85; 90) "\n " 22 WHITESPACE@85..90 "\n "
23 FN_DEF@[90; 139) 23 FN_DEF@90..139
24 FN_KW@[90; 92) "fn" 24 FN_KW@90..92 "fn"
25 WHITESPACE@[92; 93) " " 25 WHITESPACE@92..93 " "
26 NAME@[93; 96) 26 NAME@93..96
27 IDENT@[93; 96) "bar" 27 IDENT@93..96 "bar"
28 PARAM_LIST@[96; 98) 28 PARAM_LIST@96..98
29 L_PAREN@[96; 97) "(" 29 L_PAREN@96..97 "("
30 R_PAREN@[97; 98) ")" 30 R_PAREN@97..98 ")"
31 WHITESPACE@[98; 99) " " 31 WHITESPACE@98..99 " "
32 RET_TYPE@[99; 106) 32 RET_TYPE@99..106
33 THIN_ARROW@[99; 101) "->" 33 THIN_ARROW@99..101 "->"
34 WHITESPACE@[101; 102) " " 34 WHITESPACE@101..102 " "
35 PATH_TYPE@[102; 106) 35 PATH_TYPE@102..106
36 PATH@[102; 106) 36 PATH@102..106
37 PATH_SEGMENT@[102; 106) 37 PATH_SEGMENT@102..106
38 NAME_REF@[102; 106) 38 NAME_REF@102..106
39 IDENT@[102; 106) "bool" 39 IDENT@102..106 "bool"
40 WHITESPACE@[106; 107) " " 40 WHITESPACE@106..107 " "
41 BLOCK_EXPR@[107; 139) 41 BLOCK_EXPR@107..139
42 BLOCK@[107; 139) 42 BLOCK@107..139
43 L_CURLY@[107; 108) "{" 43 L_CURLY@107..108 "{"
44 WHITESPACE@[108; 117) "\n " 44 WHITESPACE@108..117 "\n "
45 MACRO_CALL@[117; 133) 45 MACRO_CALL@117..133
46 PATH@[117; 130) 46 PATH@117..130
47 PATH_SEGMENT@[117; 130) 47 PATH_SEGMENT@117..130
48 NAME_REF@[117; 130) 48 NAME_REF@117..130
49 IDENT@[117; 130) "unimplemented" 49 IDENT@117..130 "unimplemented"
50 BANG@[130; 131) "!" 50 BANG@130..131 "!"
51 TOKEN_TREE@[131; 133) 51 TOKEN_TREE@131..133
52 L_PAREN@[131; 132) "(" 52 L_PAREN@131..132 "("
53 R_PAREN@[132; 133) ")" 53 R_PAREN@132..133 ")"
54 WHITESPACE@[133; 138) "\n " 54 WHITESPACE@133..138 "\n "
55 R_CURLY@[138; 139) "}" 55 R_CURLY@138..139 "}"
56 WHITESPACE@[139; 140) "\n" 56 WHITESPACE@139..140 "\n"
57 R_CURLY@[140; 141) "}" 57 R_CURLY@140..141 "}"
58 WHITESPACE@[141; 143) "\n\n" 58 WHITESPACE@141..143 "\n\n"
59 FN_DEF@[143; 161) 59 FN_DEF@143..161
60 FN_KW@[143; 145) "fn" 60 FN_KW@143..145 "fn"
61 WHITESPACE@[145; 146) " " 61 WHITESPACE@145..146 " "
62 NAME@[146; 149) 62 NAME@146..149
63 IDENT@[146; 149) "baz" 63 IDENT@146..149 "baz"
64 PARAM_LIST@[149; 158) 64 PARAM_LIST@149..158
65 L_PAREN@[149; 150) "(" 65 L_PAREN@149..150 "("
66 PARAM@[150; 157) 66 PARAM@150..157
67 PLACEHOLDER_PAT@[150; 151) 67 PLACEHOLDER_PAT@150..151
68 UNDERSCORE@[150; 151) "_" 68 UNDERSCORE@150..151 "_"
69 COLON@[151; 152) ":" 69 COLON@151..152 ":"
70 WHITESPACE@[152; 153) " " 70 WHITESPACE@152..153 " "
71 PATH_TYPE@[153; 157) 71 PATH_TYPE@153..157
72 PATH@[153; 157) 72 PATH@153..157
73 PATH_SEGMENT@[153; 157) 73 PATH_SEGMENT@153..157
74 NAME_REF@[153; 157) 74 NAME_REF@153..157
75 IDENT@[153; 157) "bool" 75 IDENT@153..157 "bool"
76 R_PAREN@[157; 158) ")" 76 R_PAREN@157..158 ")"
77 WHITESPACE@[158; 159) " " 77 WHITESPACE@158..159 " "
78 BLOCK_EXPR@[159; 161) 78 BLOCK_EXPR@159..161
79 BLOCK@[159; 161) 79 BLOCK@159..161
80 L_CURLY@[159; 160) "{" 80 L_CURLY@159..160 "{"
81 R_CURLY@[160; 161) "}" 81 R_CURLY@160..161 "}"
82 WHITESPACE@[161; 163) "\n\n" 82 WHITESPACE@161..163 "\n\n"
83 FN_DEF@[163; 198) 83 FN_DEF@163..198
84 FN_KW@[163; 165) "fn" 84 FN_KW@163..165 "fn"
85 WHITESPACE@[165; 166) " " 85 WHITESPACE@165..166 " "
86 NAME@[166; 170) 86 NAME@166..170
87 IDENT@[166; 170) "main" 87 IDENT@166..170 "main"
88 PARAM_LIST@[170; 172) 88 PARAM_LIST@170..172
89 L_PAREN@[170; 171) "(" 89 L_PAREN@170..171 "("
90 R_PAREN@[171; 172) ")" 90 R_PAREN@171..172 ")"
91 WHITESPACE@[172; 173) " " 91 WHITESPACE@172..173 " "
92 BLOCK_EXPR@[173; 198) 92 BLOCK_EXPR@173..198
93 BLOCK@[173; 198) 93 BLOCK@173..198
94 L_CURLY@[173; 174) "{" 94 L_CURLY@173..174 "{"
95 WHITESPACE@[174; 179) "\n " 95 WHITESPACE@174..179 "\n "
96 CALL_EXPR@[179; 196) 96 CALL_EXPR@179..196
97 PATH_EXPR@[179; 182) 97 PATH_EXPR@179..182
98 PATH@[179; 182) 98 PATH@179..182
99 PATH_SEGMENT@[179; 182) 99 PATH_SEGMENT@179..182
100 NAME_REF@[179; 182) 100 NAME_REF@179..182
101 IDENT@[179; 182) "baz" 101 IDENT@179..182 "baz"
102 ARG_LIST@[182; 196) 102 ARG_LIST@182..196
103 L_PAREN@[182; 183) "(" 103 L_PAREN@182..183 "("
104 CALL_EXPR@[183; 195) 104 CALL_EXPR@183..195
105 PATH_EXPR@[183; 193) 105 PATH_EXPR@183..193
106 PATH@[183; 193) 106 PATH@183..193
107 PATH@[183; 188) 107 PATH@183..188
108 PATH_SEGMENT@[183; 188) 108 PATH_SEGMENT@183..188
109 L_ANGLE@[183; 184) "<" 109 L_ANGLE@183..184 "<"
110 PATH_TYPE@[184; 187) 110 PATH_TYPE@184..187
111 PATH@[184; 187) 111 PATH@184..187
112 PATH_SEGMENT@[184; 187) 112 PATH_SEGMENT@184..187
113 NAME_REF@[184; 187) 113 NAME_REF@184..187
114 IDENT@[184; 187) "Foo" 114 IDENT@184..187 "Foo"
115 R_ANGLE@[187; 188) ">" 115 R_ANGLE@187..188 ">"
116 COLON2@[188; 190) "::" 116 COLON2@188..190 "::"
117 PATH_SEGMENT@[190; 193) 117 PATH_SEGMENT@190..193
118 NAME_REF@[190; 193) 118 NAME_REF@190..193
119 IDENT@[190; 193) "bar" 119 IDENT@190..193 "bar"
120 ARG_LIST@[193; 195) 120 ARG_LIST@193..195
121 L_PAREN@[193; 194) "(" 121 L_PAREN@193..194 "("
122 R_PAREN@[194; 195) ")" 122 R_PAREN@194..195 ")"
123 R_PAREN@[195; 196) ")" 123 R_PAREN@195..196 ")"
124 WHITESPACE@[196; 197) "\n" 124 WHITESPACE@196..197 "\n"
125 R_CURLY@[197; 198) "}" 125 R_CURLY@197..198 "}"
126 WHITESPACE@[198; 199) "\n" 126 WHITESPACE@198..199 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast b/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast
index 3bc0ddbde..6e5b25748 100644
--- a/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast
@@ -1,110 +1,110 @@
1SOURCE_FILE@[0; 160) 1SOURCE_FILE@0..160
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 STRUCT_DEF@[62; 90) 4 STRUCT_DEF@62..90
5 STRUCT_KW@[62; 68) "struct" 5 STRUCT_KW@62..68 "struct"
6 WHITESPACE@[68; 69) " " 6 WHITESPACE@68..69 " "
7 NAME@[69; 73) 7 NAME@69..73
8 IDENT@[69; 73) "Repr" 8 IDENT@69..73 "Repr"
9 WHITESPACE@[73; 74) " " 9 WHITESPACE@73..74 " "
10 RECORD_FIELD_DEF_LIST@[74; 90) 10 RECORD_FIELD_DEF_LIST@74..90
11 L_CURLY@[74; 75) "{" 11 L_CURLY@74..75 "{"
12 WHITESPACE@[75; 76) " " 12 WHITESPACE@75..76 " "
13 RECORD_FIELD_DEF@[76; 88) 13 RECORD_FIELD_DEF@76..88
14 NAME@[76; 79) 14 NAME@76..79
15 IDENT@[76; 79) "raw" 15 IDENT@76..79 "raw"
16 COLON@[79; 80) ":" 16 COLON@79..80 ":"
17 WHITESPACE@[80; 81) " " 17 WHITESPACE@80..81 " "
18 ARRAY_TYPE@[81; 88) 18 ARRAY_TYPE@81..88
19 L_BRACK@[81; 82) "[" 19 L_BRACK@81..82 "["
20 PATH_TYPE@[82; 84) 20 PATH_TYPE@82..84
21 PATH@[82; 84) 21 PATH@82..84
22 PATH_SEGMENT@[82; 84) 22 PATH_SEGMENT@82..84
23 NAME_REF@[82; 84) 23 NAME_REF@82..84
24 IDENT@[82; 84) "u8" 24 IDENT@82..84 "u8"
25 SEMICOLON@[84; 85) ";" 25 SEMICOLON@84..85 ";"
26 WHITESPACE@[85; 86) " " 26 WHITESPACE@85..86 " "
27 LITERAL@[86; 87) 27 LITERAL@86..87
28 INT_NUMBER@[86; 87) "1" 28 INT_NUMBER@86..87 "1"
29 R_BRACK@[87; 88) "]" 29 R_BRACK@87..88 "]"
30 WHITESPACE@[88; 89) " " 30 WHITESPACE@88..89 " "
31 R_CURLY@[89; 90) "}" 31 R_CURLY@89..90 "}"
32 WHITESPACE@[90; 92) "\n\n" 32 WHITESPACE@90..92 "\n\n"
33 FN_DEF@[92; 159) 33 FN_DEF@92..159
34 FN_KW@[92; 94) "fn" 34 FN_KW@92..94 "fn"
35 WHITESPACE@[94; 95) " " 35 WHITESPACE@94..95 " "
36 NAME@[95; 98) 36 NAME@95..98
37 IDENT@[95; 98) "abc" 37 IDENT@95..98 "abc"
38 PARAM_LIST@[98; 100) 38 PARAM_LIST@98..100
39 L_PAREN@[98; 99) "(" 39 L_PAREN@98..99 "("
40 R_PAREN@[99; 100) ")" 40 R_PAREN@99..100 ")"
41 WHITESPACE@[100; 101) " " 41 WHITESPACE@100..101 " "
42 BLOCK_EXPR@[101; 159) 42 BLOCK_EXPR@101..159
43 BLOCK@[101; 159) 43 BLOCK@101..159
44 L_CURLY@[101; 102) "{" 44 L_CURLY@101..102 "{"
45 WHITESPACE@[102; 107) "\n " 45 WHITESPACE@102..107 "\n "
46 EXPR_STMT@[107; 136) 46 EXPR_STMT@107..136
47 BIN_EXPR@[107; 135) 47 BIN_EXPR@107..135
48 INDEX_EXPR@[107; 131) 48 INDEX_EXPR@107..131
49 FIELD_EXPR@[107; 128) 49 FIELD_EXPR@107..128
50 RECORD_LIT@[107; 124) 50 RECORD_LIT@107..124
51 PATH@[107; 111) 51 PATH@107..111
52 PATH_SEGMENT@[107; 111) 52 PATH_SEGMENT@107..111
53 NAME_REF@[107; 111) 53 NAME_REF@107..111
54 IDENT@[107; 111) "Repr" 54 IDENT@107..111 "Repr"
55 WHITESPACE@[111; 112) " " 55 WHITESPACE@111..112 " "
56 RECORD_FIELD_LIST@[112; 124) 56 RECORD_FIELD_LIST@112..124
57 L_CURLY@[112; 113) "{" 57 L_CURLY@112..113 "{"
58 WHITESPACE@[113; 114) " " 58 WHITESPACE@113..114 " "
59 RECORD_FIELD@[114; 122) 59 RECORD_FIELD@114..122
60 NAME_REF@[114; 117) 60 NAME_REF@114..117
61 IDENT@[114; 117) "raw" 61 IDENT@114..117 "raw"
62 COLON@[117; 118) ":" 62 COLON@117..118 ":"
63 WHITESPACE@[118; 119) " " 63 WHITESPACE@118..119 " "
64 ARRAY_EXPR@[119; 122) 64 ARRAY_EXPR@119..122
65 L_BRACK@[119; 120) "[" 65 L_BRACK@119..120 "["
66 LITERAL@[120; 121) 66 LITERAL@120..121
67 INT_NUMBER@[120; 121) "0" 67 INT_NUMBER@120..121 "0"
68 R_BRACK@[121; 122) "]" 68 R_BRACK@121..122 "]"
69 WHITESPACE@[122; 123) " " 69 WHITESPACE@122..123 " "
70 R_CURLY@[123; 124) "}" 70 R_CURLY@123..124 "}"
71 DOT@[124; 125) "." 71 DOT@124..125 "."
72 NAME_REF@[125; 128) 72 NAME_REF@125..128
73 IDENT@[125; 128) "raw" 73 IDENT@125..128 "raw"
74 L_BRACK@[128; 129) "[" 74 L_BRACK@128..129 "["
75 LITERAL@[129; 130) 75 LITERAL@129..130
76 INT_NUMBER@[129; 130) "0" 76 INT_NUMBER@129..130 "0"
77 R_BRACK@[130; 131) "]" 77 R_BRACK@130..131 "]"
78 WHITESPACE@[131; 132) " " 78 WHITESPACE@131..132 " "
79 EQ@[132; 133) "=" 79 EQ@132..133 "="
80 WHITESPACE@[133; 134) " " 80 WHITESPACE@133..134 " "
81 LITERAL@[134; 135) 81 LITERAL@134..135
82 INT_NUMBER@[134; 135) "0" 82 INT_NUMBER@134..135 "0"
83 SEMICOLON@[135; 136) ";" 83 SEMICOLON@135..136 ";"
84 WHITESPACE@[136; 141) "\n " 84 WHITESPACE@136..141 "\n "
85 EXPR_STMT@[141; 157) 85 EXPR_STMT@141..157
86 CALL_EXPR@[141; 156) 86 CALL_EXPR@141..156
87 RECORD_LIT@[141; 154) 87 RECORD_LIT@141..154
88 PATH@[141; 145) 88 PATH@141..145
89 PATH_SEGMENT@[141; 145) 89 PATH_SEGMENT@141..145
90 NAME_REF@[141; 145) 90 NAME_REF@141..145
91 IDENT@[141; 145) "Repr" 91 IDENT@141..145 "Repr"
92 RECORD_FIELD_LIST@[145; 154) 92 RECORD_FIELD_LIST@145..154
93 L_CURLY@[145; 146) "{" 93 L_CURLY@145..146 "{"
94 RECORD_FIELD@[146; 153) 94 RECORD_FIELD@146..153
95 NAME_REF@[146; 149) 95 NAME_REF@146..149
96 IDENT@[146; 149) "raw" 96 IDENT@146..149 "raw"
97 COLON@[149; 150) ":" 97 COLON@149..150 ":"
98 ARRAY_EXPR@[150; 153) 98 ARRAY_EXPR@150..153
99 L_BRACK@[150; 151) "[" 99 L_BRACK@150..151 "["
100 LITERAL@[151; 152) 100 LITERAL@151..152
101 INT_NUMBER@[151; 152) "0" 101 INT_NUMBER@151..152 "0"
102 R_BRACK@[152; 153) "]" 102 R_BRACK@152..153 "]"
103 R_CURLY@[153; 154) "}" 103 R_CURLY@153..154 "}"
104 ARG_LIST@[154; 156) 104 ARG_LIST@154..156
105 L_PAREN@[154; 155) "(" 105 L_PAREN@154..155 "("
106 R_PAREN@[155; 156) ")" 106 R_PAREN@155..156 ")"
107 SEMICOLON@[156; 157) ";" 107 SEMICOLON@156..157 ";"
108 WHITESPACE@[157; 158) "\n" 108 WHITESPACE@157..158 "\n"
109 R_CURLY@[158; 159) "}" 109 R_CURLY@158..159 "}"
110 WHITESPACE@[159; 160) "\n" 110 WHITESPACE@159..160 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast b/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast
index 4b2593147..f1eef3be0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast
@@ -1,76 +1,76 @@
1SOURCE_FILE@[0; 166) 1SOURCE_FILE@0..166
2 FN_DEF@[0; 165) 2 FN_DEF@0..165
3 COMMENT@[0; 60) "// https://github.com ..." 3 COMMENT@0..60 "// https://github.com ..."
4 WHITESPACE@[60; 61) "\n" 4 WHITESPACE@60..61 "\n"
5 FN_KW@[61; 63) "fn" 5 FN_KW@61..63 "fn"
6 WHITESPACE@[63; 64) " " 6 WHITESPACE@63..64 " "
7 NAME@[64; 68) 7 NAME@64..68
8 IDENT@[64; 68) "main" 8 IDENT@64..68 "main"
9 PARAM_LIST@[68; 70) 9 PARAM_LIST@68..70
10 L_PAREN@[68; 69) "(" 10 L_PAREN@68..69 "("
11 R_PAREN@[69; 70) ")" 11 R_PAREN@69..70 ")"
12 WHITESPACE@[70; 71) " " 12 WHITESPACE@70..71 " "
13 BLOCK_EXPR@[71; 165) 13 BLOCK_EXPR@71..165
14 BLOCK@[71; 165) 14 BLOCK@71..165
15 L_CURLY@[71; 72) "{" 15 L_CURLY@71..72 "{"
16 WHITESPACE@[72; 77) "\n " 16 WHITESPACE@72..77 "\n "
17 LET_STMT@[77; 163) 17 LET_STMT@77..163
18 ATTR@[77; 106) 18 ATTR@77..106
19 POUND@[77; 78) "#" 19 POUND@77..78 "#"
20 L_BRACK@[78; 79) "[" 20 L_BRACK@78..79 "["
21 PATH@[79; 82) 21 PATH@79..82
22 PATH_SEGMENT@[79; 82) 22 PATH_SEGMENT@79..82
23 NAME_REF@[79; 82) 23 NAME_REF@79..82
24 IDENT@[79; 82) "cfg" 24 IDENT@79..82 "cfg"
25 TOKEN_TREE@[82; 105) 25 TOKEN_TREE@82..105
26 L_PAREN@[82; 83) "(" 26 L_PAREN@82..83 "("
27 IDENT@[83; 90) "feature" 27 IDENT@83..90 "feature"
28 WHITESPACE@[90; 91) " " 28 WHITESPACE@90..91 " "
29 EQ@[91; 92) "=" 29 EQ@91..92 "="
30 WHITESPACE@[92; 93) " " 30 WHITESPACE@92..93 " "
31 STRING@[93; 104) "\"backtrace\"" 31 STRING@93..104 "\"backtrace\""
32 R_PAREN@[104; 105) ")" 32 R_PAREN@104..105 ")"
33 R_BRACK@[105; 106) "]" 33 R_BRACK@105..106 "]"
34 WHITESPACE@[106; 111) "\n " 34 WHITESPACE@106..111 "\n "
35 LET_KW@[111; 114) "let" 35 LET_KW@111..114 "let"
36 WHITESPACE@[114; 115) " " 36 WHITESPACE@114..115 " "
37 BIND_PAT@[115; 124) 37 BIND_PAT@115..124
38 NAME@[115; 124) 38 NAME@115..124
39 IDENT@[115; 124) "exit_code" 39 IDENT@115..124 "exit_code"
40 WHITESPACE@[124; 125) " " 40 WHITESPACE@124..125 " "
41 EQ@[125; 126) "=" 41 EQ@125..126 "="
42 WHITESPACE@[126; 127) " " 42 WHITESPACE@126..127 " "
43 CALL_EXPR@[127; 162) 43 CALL_EXPR@127..162
44 PATH_EXPR@[127; 146) 44 PATH_EXPR@127..146
45 PATH@[127; 146) 45 PATH@127..146
46 PATH@[127; 132) 46 PATH@127..132
47 PATH_SEGMENT@[127; 132) 47 PATH_SEGMENT@127..132
48 NAME_REF@[127; 132) 48 NAME_REF@127..132
49 IDENT@[127; 132) "panic" 49 IDENT@127..132 "panic"
50 COLON2@[132; 134) "::" 50 COLON2@132..134 "::"
51 PATH_SEGMENT@[134; 146) 51 PATH_SEGMENT@134..146
52 NAME_REF@[134; 146) 52 NAME_REF@134..146
53 IDENT@[134; 146) "catch_unwind" 53 IDENT@134..146 "catch_unwind"
54 ARG_LIST@[146; 162) 54 ARG_LIST@146..162
55 L_PAREN@[146; 147) "(" 55 L_PAREN@146..147 "("
56 LAMBDA_EXPR@[147; 161) 56 LAMBDA_EXPR@147..161
57 MOVE_KW@[147; 151) "move" 57 MOVE_KW@147..151 "move"
58 WHITESPACE@[151; 152) " " 58 WHITESPACE@151..152 " "
59 PARAM_LIST@[152; 154) 59 PARAM_LIST@152..154
60 PIPE@[152; 153) "|" 60 PIPE@152..153 "|"
61 PIPE@[153; 154) "|" 61 PIPE@153..154 "|"
62 WHITESPACE@[154; 155) " " 62 WHITESPACE@154..155 " "
63 CALL_EXPR@[155; 161) 63 CALL_EXPR@155..161
64 PATH_EXPR@[155; 159) 64 PATH_EXPR@155..159
65 PATH@[155; 159) 65 PATH@155..159
66 PATH_SEGMENT@[155; 159) 66 PATH_SEGMENT@155..159
67 NAME_REF@[155; 159) 67 NAME_REF@155..159
68 IDENT@[155; 159) "main" 68 IDENT@155..159 "main"
69 ARG_LIST@[159; 161) 69 ARG_LIST@159..161
70 L_PAREN@[159; 160) "(" 70 L_PAREN@159..160 "("
71 R_PAREN@[160; 161) ")" 71 R_PAREN@160..161 ")"
72 R_PAREN@[161; 162) ")" 72 R_PAREN@161..162 ")"
73 SEMICOLON@[162; 163) ";" 73 SEMICOLON@162..163 ";"
74 WHITESPACE@[163; 164) "\n" 74 WHITESPACE@163..164 "\n"
75 R_CURLY@[164; 165) "}" 75 R_CURLY@164..165 "}"
76 WHITESPACE@[165; 166) "\n" 76 WHITESPACE@165..166 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast b/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast
index 954b3bc2a..f79feec19 100644
--- a/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast
@@ -1,181 +1,181 @@
1SOURCE_FILE@[0; 686) 1SOURCE_FILE@0..686
2 FN_DEF@[0; 461) 2 FN_DEF@0..461
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 8) 5 NAME@3..8
6 IDENT@[3; 8) "block" 6 IDENT@3..8 "block"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@8..10
8 L_PAREN@[8; 9) "(" 8 L_PAREN@8..9 "("
9 R_PAREN@[9; 10) ")" 9 R_PAREN@9..10 ")"
10 WHITESPACE@[10; 11) " " 10 WHITESPACE@10..11 " "
11 BLOCK_EXPR@[11; 461) 11 BLOCK_EXPR@11..461
12 BLOCK@[11; 461) 12 BLOCK@11..461
13 L_CURLY@[11; 12) "{" 13 L_CURLY@11..12 "{"
14 WHITESPACE@[12; 17) "\n " 14 WHITESPACE@12..17 "\n "
15 ATTR@[17; 57) 15 ATTR@17..57
16 POUND@[17; 18) "#" 16 POUND@17..18 "#"
17 BANG@[18; 19) "!" 17 BANG@18..19 "!"
18 L_BRACK@[19; 20) "[" 18 L_BRACK@19..20 "["
19 PATH@[20; 23) 19 PATH@20..23
20 PATH_SEGMENT@[20; 23) 20 PATH_SEGMENT@20..23
21 NAME_REF@[20; 23) 21 NAME_REF@20..23
22 IDENT@[20; 23) "doc" 22 IDENT@20..23 "doc"
23 TOKEN_TREE@[23; 56) 23 TOKEN_TREE@23..56
24 L_PAREN@[23; 24) "(" 24 L_PAREN@23..24 "("
25 STRING@[24; 55) "\"Inner attributes all ..." 25 STRING@24..55 "\"Inner attributes all ..."
26 R_PAREN@[55; 56) ")" 26 R_PAREN@55..56 ")"
27 R_BRACK@[56; 57) "]" 27 R_BRACK@56..57 "]"
28 WHITESPACE@[57; 62) "\n " 28 WHITESPACE@57..62 "\n "
29 COMMENT@[62; 97) "//! As are ModuleDoc ..." 29 COMMENT@62..97 "//! As are ModuleDoc ..."
30 WHITESPACE@[97; 102) "\n " 30 WHITESPACE@97..102 "\n "
31 EXPR_STMT@[102; 295) 31 EXPR_STMT@102..295
32 BLOCK_EXPR@[102; 294) 32 BLOCK_EXPR@102..294
33 BLOCK@[102; 294) 33 BLOCK@102..294
34 L_CURLY@[102; 103) "{" 34 L_CURLY@102..103 "{"
35 WHITESPACE@[103; 112) "\n " 35 WHITESPACE@103..112 "\n "
36 ATTR@[112; 180) 36 ATTR@112..180
37 POUND@[112; 113) "#" 37 POUND@112..113 "#"
38 BANG@[113; 114) "!" 38 BANG@113..114 "!"
39 L_BRACK@[114; 115) "[" 39 L_BRACK@114..115 "["
40 PATH@[115; 118) 40 PATH@115..118
41 PATH_SEGMENT@[115; 118) 41 PATH_SEGMENT@115..118
42 NAME_REF@[115; 118) 42 NAME_REF@115..118
43 IDENT@[115; 118) "doc" 43 IDENT@115..118 "doc"
44 TOKEN_TREE@[118; 179) 44 TOKEN_TREE@118..179
45 L_PAREN@[118; 119) "(" 45 L_PAREN@118..119 "("
46 STRING@[119; 178) "\"Inner attributes are ..." 46 STRING@119..178 "\"Inner attributes are ..."
47 R_PAREN@[178; 179) ")" 47 R_PAREN@178..179 ")"
48 R_BRACK@[179; 180) "]" 48 R_BRACK@179..180 "]"
49 WHITESPACE@[180; 189) "\n " 49 WHITESPACE@180..189 "\n "
50 ATTR@[189; 244) 50 ATTR@189..244
51 POUND@[189; 190) "#" 51 POUND@189..190 "#"
52 BANG@[190; 191) "!" 52 BANG@190..191 "!"
53 L_BRACK@[191; 192) "[" 53 L_BRACK@191..192 "["
54 PATH@[192; 195) 54 PATH@192..195
55 PATH_SEGMENT@[192; 195) 55 PATH_SEGMENT@192..195
56 NAME_REF@[192; 195) 56 NAME_REF@192..195
57 IDENT@[192; 195) "doc" 57 IDENT@192..195 "doc"
58 TOKEN_TREE@[195; 243) 58 TOKEN_TREE@195..243
59 L_PAREN@[195; 196) "(" 59 L_PAREN@195..196 "("
60 STRING@[196; 242) "\"Being validated is n ..." 60 STRING@196..242 "\"Being validated is n ..."
61 R_PAREN@[242; 243) ")" 61 R_PAREN@242..243 ")"
62 R_BRACK@[243; 244) "]" 62 R_BRACK@243..244 "]"
63 WHITESPACE@[244; 253) "\n " 63 WHITESPACE@244..253 "\n "
64 COMMENT@[253; 288) "//! As are ModuleDoc ..." 64 COMMENT@253..288 "//! As are ModuleDoc ..."
65 WHITESPACE@[288; 293) "\n " 65 WHITESPACE@288..293 "\n "
66 R_CURLY@[293; 294) "}" 66 R_CURLY@293..294 "}"
67 SEMICOLON@[294; 295) ";" 67 SEMICOLON@294..295 ";"
68 WHITESPACE@[295; 300) "\n " 68 WHITESPACE@295..300 "\n "
69 BLOCK_EXPR@[300; 459) 69 BLOCK_EXPR@300..459
70 BLOCK@[300; 459) 70 BLOCK@300..459
71 L_CURLY@[300; 301) "{" 71 L_CURLY@300..301 "{"
72 WHITESPACE@[301; 310) "\n " 72 WHITESPACE@301..310 "\n "
73 ATTR@[310; 409) 73 ATTR@310..409
74 POUND@[310; 311) "#" 74 POUND@310..311 "#"
75 BANG@[311; 312) "!" 75 BANG@311..312 "!"
76 L_BRACK@[312; 313) "[" 76 L_BRACK@312..313 "["
77 PATH@[313; 316) 77 PATH@313..316
78 PATH_SEGMENT@[313; 316) 78 PATH_SEGMENT@313..316
79 NAME_REF@[313; 316) 79 NAME_REF@313..316
80 IDENT@[313; 316) "doc" 80 IDENT@313..316 "doc"
81 TOKEN_TREE@[316; 408) 81 TOKEN_TREE@316..408
82 L_PAREN@[316; 317) "(" 82 L_PAREN@316..317 "("
83 STRING@[317; 407) "\"Inner attributes are ..." 83 STRING@317..407 "\"Inner attributes are ..."
84 R_PAREN@[407; 408) ")" 84 R_PAREN@407..408 ")"
85 R_BRACK@[408; 409) "]" 85 R_BRACK@408..409 "]"
86 WHITESPACE@[409; 418) "\n " 86 WHITESPACE@409..418 "\n "
87 COMMENT@[418; 453) "//! As are ModuleDoc ..." 87 COMMENT@418..453 "//! As are ModuleDoc ..."
88 WHITESPACE@[453; 458) "\n " 88 WHITESPACE@453..458 "\n "
89 R_CURLY@[458; 459) "}" 89 R_CURLY@458..459 "}"
90 WHITESPACE@[459; 460) "\n" 90 WHITESPACE@459..460 "\n"
91 R_CURLY@[460; 461) "}" 91 R_CURLY@460..461 "}"
92 WHITESPACE@[461; 463) "\n\n" 92 WHITESPACE@461..463 "\n\n"
93 COMMENT@[463; 523) "// https://github.com ..." 93 COMMENT@463..523 "// https://github.com ..."
94 WHITESPACE@[523; 524) "\n" 94 WHITESPACE@523..524 "\n"
95 IMPL_DEF@[524; 685) 95 IMPL_DEF@524..685
96 IMPL_KW@[524; 528) "impl" 96 IMPL_KW@524..528 "impl"
97 WHITESPACE@[528; 529) " " 97 WHITESPACE@528..529 " "
98 PATH_TYPE@[529; 537) 98 PATH_TYPE@529..537
99 PATH@[529; 537) 99 PATH@529..537
100 PATH_SEGMENT@[529; 537) 100 PATH_SEGMENT@529..537
101 NAME_REF@[529; 537) 101 NAME_REF@529..537
102 IDENT@[529; 537) "Whatever" 102 IDENT@529..537 "Whatever"
103 WHITESPACE@[537; 538) " " 103 WHITESPACE@537..538 " "
104 ITEM_LIST@[538; 685) 104 ITEM_LIST@538..685
105 L_CURLY@[538; 539) "{" 105 L_CURLY@538..539 "{"
106 WHITESPACE@[539; 544) "\n " 106 WHITESPACE@539..544 "\n "
107 FN_DEF@[544; 683) 107 FN_DEF@544..683
108 FN_KW@[544; 546) "fn" 108 FN_KW@544..546 "fn"
109 WHITESPACE@[546; 547) " " 109 WHITESPACE@546..547 " "
110 NAME@[547; 558) 110 NAME@547..558
111 IDENT@[547; 558) "salsa_event" 111 IDENT@547..558 "salsa_event"
112 PARAM_LIST@[558; 601) 112 PARAM_LIST@558..601
113 L_PAREN@[558; 559) "(" 113 L_PAREN@558..559 "("
114 SELF_PARAM@[559; 564) 114 SELF_PARAM@559..564
115 AMP@[559; 560) "&" 115 AMP@559..560 "&"
116 SELF_KW@[560; 564) "self" 116 SELF_KW@560..564 "self"
117 COMMA@[564; 565) "," 117 COMMA@564..565 ","
118 WHITESPACE@[565; 566) " " 118 WHITESPACE@565..566 " "
119 PARAM@[566; 600) 119 PARAM@566..600
120 BIND_PAT@[566; 574) 120 BIND_PAT@566..574
121 NAME@[566; 574) 121 NAME@566..574
122 IDENT@[566; 574) "event_fn" 122 IDENT@566..574 "event_fn"
123 COLON@[574; 575) ":" 123 COLON@574..575 ":"
124 WHITESPACE@[575; 576) " " 124 WHITESPACE@575..576 " "
125 IMPL_TRAIT_TYPE@[576; 600) 125 IMPL_TRAIT_TYPE@576..600
126 IMPL_KW@[576; 580) "impl" 126 IMPL_KW@576..580 "impl"
127 WHITESPACE@[580; 581) " " 127 WHITESPACE@580..581 " "
128 TYPE_BOUND_LIST@[581; 600) 128 TYPE_BOUND_LIST@581..600
129 TYPE_BOUND@[581; 600) 129 TYPE_BOUND@581..600
130 PATH_TYPE@[581; 600) 130 PATH_TYPE@581..600
131 PATH@[581; 600) 131 PATH@581..600
132 PATH_SEGMENT@[581; 600) 132 PATH_SEGMENT@581..600
133 NAME_REF@[581; 583) 133 NAME_REF@581..583
134 IDENT@[581; 583) "Fn" 134 IDENT@581..583 "Fn"
135 PARAM_LIST@[583; 585) 135 PARAM_LIST@583..585
136 L_PAREN@[583; 584) "(" 136 L_PAREN@583..584 "("
137 R_PAREN@[584; 585) ")" 137 R_PAREN@584..585 ")"
138 WHITESPACE@[585; 586) " " 138 WHITESPACE@585..586 " "
139 RET_TYPE@[586; 600) 139 RET_TYPE@586..600
140 THIN_ARROW@[586; 588) "->" 140 THIN_ARROW@586..588 "->"
141 WHITESPACE@[588; 589) " " 141 WHITESPACE@588..589 " "
142 PATH_TYPE@[589; 600) 142 PATH_TYPE@589..600
143 PATH@[589; 600) 143 PATH@589..600
144 PATH_SEGMENT@[589; 600) 144 PATH_SEGMENT@589..600
145 NAME_REF@[589; 594) 145 NAME_REF@589..594
146 IDENT@[589; 594) "Event" 146 IDENT@589..594 "Event"
147 TYPE_ARG_LIST@[594; 600) 147 TYPE_ARG_LIST@594..600
148 L_ANGLE@[594; 595) "<" 148 L_ANGLE@594..595 "<"
149 TYPE_ARG@[595; 599) 149 TYPE_ARG@595..599
150 PATH_TYPE@[595; 599) 150 PATH_TYPE@595..599
151 PATH@[595; 599) 151 PATH@595..599
152 PATH_SEGMENT@[595; 599) 152 PATH_SEGMENT@595..599
153 NAME_REF@[595; 599) 153 NAME_REF@595..599
154 IDENT@[595; 599) "Self" 154 IDENT@595..599 "Self"
155 R_ANGLE@[599; 600) ">" 155 R_ANGLE@599..600 ">"
156 R_PAREN@[600; 601) ")" 156 R_PAREN@600..601 ")"
157 WHITESPACE@[601; 602) " " 157 WHITESPACE@601..602 " "
158 BLOCK_EXPR@[602; 683) 158 BLOCK_EXPR@602..683
159 BLOCK@[602; 683) 159 BLOCK@602..683
160 L_CURLY@[602; 603) "{" 160 L_CURLY@602..603 "{"
161 WHITESPACE@[603; 612) "\n " 161 WHITESPACE@603..612 "\n "
162 ATTR@[612; 639) 162 ATTR@612..639
163 POUND@[612; 613) "#" 163 POUND@612..613 "#"
164 BANG@[613; 614) "!" 164 BANG@613..614 "!"
165 L_BRACK@[614; 615) "[" 165 L_BRACK@614..615 "["
166 PATH@[615; 620) 166 PATH@615..620
167 PATH_SEGMENT@[615; 620) 167 PATH_SEGMENT@615..620
168 NAME_REF@[615; 620) 168 NAME_REF@615..620
169 IDENT@[615; 620) "allow" 169 IDENT@615..620 "allow"
170 TOKEN_TREE@[620; 638) 170 TOKEN_TREE@620..638
171 L_PAREN@[620; 621) "(" 171 L_PAREN@620..621 "("
172 IDENT@[621; 637) "unused_variables" 172 IDENT@621..637 "unused_variables"
173 R_PAREN@[637; 638) ")" 173 R_PAREN@637..638 ")"
174 R_BRACK@[638; 639) "]" 174 R_BRACK@638..639 "]"
175 WHITESPACE@[639; 640) " " 175 WHITESPACE@639..640 " "
176 COMMENT@[640; 677) "// this is `inner_at ..." 176 COMMENT@640..677 "// this is `inner_at ..."
177 WHITESPACE@[677; 682) "\n " 177 WHITESPACE@677..682 "\n "
178 R_CURLY@[682; 683) "}" 178 R_CURLY@682..683 "}"
179 WHITESPACE@[683; 684) "\n" 179 WHITESPACE@683..684 "\n"
180 R_CURLY@[684; 685) "}" 180 R_CURLY@684..685 "}"
181 WHITESPACE@[685; 686) "\n" 181 WHITESPACE@685..686 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast b/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast
index 92c8df2d6..37594769a 100644
--- a/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 87) 1SOURCE_FILE@0..87
2 EXTERN_BLOCK@[0; 86) 2 EXTERN_BLOCK@0..86
3 ABI@[0; 10) 3 ABI@0..10
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 STRING@[7; 10) "\"C\"" 6 STRING@7..10 "\"C\""
7 WHITESPACE@[10; 11) " " 7 WHITESPACE@10..11 " "
8 EXTERN_ITEM_LIST@[11; 86) 8 EXTERN_ITEM_LIST@11..86
9 L_CURLY@[11; 12) "{" 9 L_CURLY@11..12 "{"
10 WHITESPACE@[12; 17) "\n " 10 WHITESPACE@12..17 "\n "
11 COMMENT@[17; 42) "//! This is a doc com ..." 11 COMMENT@17..42 "//! This is a doc com ..."
12 WHITESPACE@[42; 47) "\n " 12 WHITESPACE@42..47 "\n "
13 ATTR@[47; 84) 13 ATTR@47..84
14 POUND@[47; 48) "#" 14 POUND@47..48 "#"
15 BANG@[48; 49) "!" 15 BANG@48..49 "!"
16 L_BRACK@[49; 50) "[" 16 L_BRACK@49..50 "["
17 PATH@[50; 53) 17 PATH@50..53
18 PATH_SEGMENT@[50; 53) 18 PATH_SEGMENT@50..53
19 NAME_REF@[50; 53) 19 NAME_REF@50..53
20 IDENT@[50; 53) "doc" 20 IDENT@50..53 "doc"
21 TOKEN_TREE@[53; 83) 21 TOKEN_TREE@53..83
22 L_PAREN@[53; 54) "(" 22 L_PAREN@53..54 "("
23 STRING@[54; 82) "\"This is also a doc c ..." 23 STRING@54..82 "\"This is also a doc c ..."
24 R_PAREN@[82; 83) ")" 24 R_PAREN@82..83 ")"
25 R_BRACK@[83; 84) "]" 25 R_BRACK@83..84 "]"
26 WHITESPACE@[84; 85) "\n" 26 WHITESPACE@84..85 "\n"
27 R_CURLY@[85; 86) "}" 27 R_CURLY@85..86 "}"
28 WHITESPACE@[86; 87) "\n" 28 WHITESPACE@86..87 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast b/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast
index de703328a..1cf12d670 100644
--- a/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast
@@ -1,323 +1,323 @@
1SOURCE_FILE@[0; 395) 1SOURCE_FILE@0..395
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 FN_DEF@[62; 341) 4 FN_DEF@62..341
5 FN_KW@[62; 64) "fn" 5 FN_KW@62..64 "fn"
6 WHITESPACE@[64; 65) " " 6 WHITESPACE@64..65 " "
7 NAME@[65; 69) 7 NAME@65..69
8 IDENT@[65; 69) "main" 8 IDENT@65..69 "main"
9 PARAM_LIST@[69; 71) 9 PARAM_LIST@69..71
10 L_PAREN@[69; 70) "(" 10 L_PAREN@69..70 "("
11 R_PAREN@[70; 71) ")" 11 R_PAREN@70..71 ")"
12 WHITESPACE@[71; 72) " " 12 WHITESPACE@71..72 " "
13 BLOCK_EXPR@[72; 341) 13 BLOCK_EXPR@72..341
14 BLOCK@[72; 341) 14 BLOCK@72..341
15 L_CURLY@[72; 73) "{" 15 L_CURLY@72..73 "{"
16 WHITESPACE@[73; 78) "\n " 16 WHITESPACE@73..78 "\n "
17 EXPR_STMT@[78; 141) 17 EXPR_STMT@78..141
18 MATCH_EXPR@[78; 141) 18 MATCH_EXPR@78..141
19 MATCH_KW@[78; 83) "match" 19 MATCH_KW@78..83 "match"
20 WHITESPACE@[83; 84) " " 20 WHITESPACE@83..84 " "
21 CALL_EXPR@[84; 92) 21 CALL_EXPR@84..92
22 PATH_EXPR@[84; 88) 22 PATH_EXPR@84..88
23 PATH@[84; 88) 23 PATH@84..88
24 PATH_SEGMENT@[84; 88) 24 PATH_SEGMENT@84..88
25 NAME_REF@[84; 88) 25 NAME_REF@84..88
26 IDENT@[84; 88) "Some" 26 IDENT@84..88 "Some"
27 ARG_LIST@[88; 92) 27 ARG_LIST@88..92
28 L_PAREN@[88; 89) "(" 28 L_PAREN@88..89 "("
29 PREFIX_EXPR@[89; 91) 29 PREFIX_EXPR@89..91
30 MINUS@[89; 90) "-" 30 MINUS@89..90 "-"
31 LITERAL@[90; 91) 31 LITERAL@90..91
32 INT_NUMBER@[90; 91) "1" 32 INT_NUMBER@90..91 "1"
33 R_PAREN@[91; 92) ")" 33 R_PAREN@91..92 ")"
34 WHITESPACE@[92; 93) " " 34 WHITESPACE@92..93 " "
35 MATCH_ARM_LIST@[93; 141) 35 MATCH_ARM_LIST@93..141
36 L_CURLY@[93; 94) "{" 36 L_CURLY@93..94 "{"
37 WHITESPACE@[94; 103) "\n " 37 WHITESPACE@94..103 "\n "
38 MATCH_ARM@[103; 117) 38 MATCH_ARM@103..117
39 TUPLE_STRUCT_PAT@[103; 111) 39 TUPLE_STRUCT_PAT@103..111
40 PATH@[103; 107) 40 PATH@103..107
41 PATH_SEGMENT@[103; 107) 41 PATH_SEGMENT@103..107
42 NAME_REF@[103; 107) 42 NAME_REF@103..107
43 IDENT@[103; 107) "Some" 43 IDENT@103..107 "Some"
44 L_PAREN@[107; 108) "(" 44 L_PAREN@107..108 "("
45 LITERAL_PAT@[108; 110) 45 LITERAL_PAT@108..110
46 MINUS@[108; 109) "-" 46 MINUS@108..109 "-"
47 LITERAL@[109; 110) 47 LITERAL@109..110
48 INT_NUMBER@[109; 110) "1" 48 INT_NUMBER@109..110 "1"
49 R_PAREN@[110; 111) ")" 49 R_PAREN@110..111 ")"
50 WHITESPACE@[111; 112) " " 50 WHITESPACE@111..112 " "
51 FAT_ARROW@[112; 114) "=>" 51 FAT_ARROW@112..114 "=>"
52 WHITESPACE@[114; 115) " " 52 WHITESPACE@114..115 " "
53 TUPLE_EXPR@[115; 117) 53 TUPLE_EXPR@115..117
54 L_PAREN@[115; 116) "(" 54 L_PAREN@115..116 "("
55 R_PAREN@[116; 117) ")" 55 R_PAREN@116..117 ")"
56 COMMA@[117; 118) "," 56 COMMA@117..118 ","
57 WHITESPACE@[118; 127) "\n " 57 WHITESPACE@118..127 "\n "
58 MATCH_ARM@[127; 134) 58 MATCH_ARM@127..134
59 PLACEHOLDER_PAT@[127; 128) 59 PLACEHOLDER_PAT@127..128
60 UNDERSCORE@[127; 128) "_" 60 UNDERSCORE@127..128 "_"
61 WHITESPACE@[128; 129) " " 61 WHITESPACE@128..129 " "
62 FAT_ARROW@[129; 131) "=>" 62 FAT_ARROW@129..131 "=>"
63 WHITESPACE@[131; 132) " " 63 WHITESPACE@131..132 " "
64 TUPLE_EXPR@[132; 134) 64 TUPLE_EXPR@132..134
65 L_PAREN@[132; 133) "(" 65 L_PAREN@132..133 "("
66 R_PAREN@[133; 134) ")" 66 R_PAREN@133..134 ")"
67 COMMA@[134; 135) "," 67 COMMA@134..135 ","
68 WHITESPACE@[135; 140) "\n " 68 WHITESPACE@135..140 "\n "
69 R_CURLY@[140; 141) "}" 69 R_CURLY@140..141 "}"
70 WHITESPACE@[141; 147) "\n\n " 70 WHITESPACE@141..147 "\n\n "
71 EXPR_STMT@[147; 222) 71 EXPR_STMT@147..222
72 MATCH_EXPR@[147; 222) 72 MATCH_EXPR@147..222
73 MATCH_KW@[147; 152) "match" 73 MATCH_KW@147..152 "match"
74 WHITESPACE@[152; 153) " " 74 WHITESPACE@152..153 " "
75 CALL_EXPR@[153; 167) 75 CALL_EXPR@153..167
76 PATH_EXPR@[153; 157) 76 PATH_EXPR@153..157
77 PATH@[153; 157) 77 PATH@153..157
78 PATH_SEGMENT@[153; 157) 78 PATH_SEGMENT@153..157
79 NAME_REF@[153; 157) 79 NAME_REF@153..157
80 IDENT@[153; 157) "Some" 80 IDENT@153..157 "Some"
81 ARG_LIST@[157; 167) 81 ARG_LIST@157..167
82 L_PAREN@[157; 158) "(" 82 L_PAREN@157..158 "("
83 TUPLE_EXPR@[158; 166) 83 TUPLE_EXPR@158..166
84 L_PAREN@[158; 159) "(" 84 L_PAREN@158..159 "("
85 PREFIX_EXPR@[159; 161) 85 PREFIX_EXPR@159..161
86 MINUS@[159; 160) "-" 86 MINUS@159..160 "-"
87 LITERAL@[160; 161) 87 LITERAL@160..161
88 INT_NUMBER@[160; 161) "1" 88 INT_NUMBER@160..161 "1"
89 COMMA@[161; 162) "," 89 COMMA@161..162 ","
90 WHITESPACE@[162; 163) " " 90 WHITESPACE@162..163 " "
91 PREFIX_EXPR@[163; 165) 91 PREFIX_EXPR@163..165
92 MINUS@[163; 164) "-" 92 MINUS@163..164 "-"
93 LITERAL@[164; 165) 93 LITERAL@164..165
94 INT_NUMBER@[164; 165) "1" 94 INT_NUMBER@164..165 "1"
95 R_PAREN@[165; 166) ")" 95 R_PAREN@165..166 ")"
96 R_PAREN@[166; 167) ")" 96 R_PAREN@166..167 ")"
97 WHITESPACE@[167; 168) " " 97 WHITESPACE@167..168 " "
98 MATCH_ARM_LIST@[168; 222) 98 MATCH_ARM_LIST@168..222
99 L_CURLY@[168; 169) "{" 99 L_CURLY@168..169 "{"
100 WHITESPACE@[169; 178) "\n " 100 WHITESPACE@169..178 "\n "
101 MATCH_ARM@[178; 198) 101 MATCH_ARM@178..198
102 TUPLE_STRUCT_PAT@[178; 192) 102 TUPLE_STRUCT_PAT@178..192
103 PATH@[178; 182) 103 PATH@178..182
104 PATH_SEGMENT@[178; 182) 104 PATH_SEGMENT@178..182
105 NAME_REF@[178; 182) 105 NAME_REF@178..182
106 IDENT@[178; 182) "Some" 106 IDENT@178..182 "Some"
107 L_PAREN@[182; 183) "(" 107 L_PAREN@182..183 "("
108 TUPLE_PAT@[183; 191) 108 TUPLE_PAT@183..191
109 L_PAREN@[183; 184) "(" 109 L_PAREN@183..184 "("
110 LITERAL_PAT@[184; 186) 110 LITERAL_PAT@184..186
111 MINUS@[184; 185) "-" 111 MINUS@184..185 "-"
112 LITERAL@[185; 186) 112 LITERAL@185..186
113 INT_NUMBER@[185; 186) "1" 113 INT_NUMBER@185..186 "1"
114 COMMA@[186; 187) "," 114 COMMA@186..187 ","
115 WHITESPACE@[187; 188) " " 115 WHITESPACE@187..188 " "
116 LITERAL_PAT@[188; 190) 116 LITERAL_PAT@188..190
117 MINUS@[188; 189) "-" 117 MINUS@188..189 "-"
118 LITERAL@[189; 190) 118 LITERAL@189..190
119 INT_NUMBER@[189; 190) "1" 119 INT_NUMBER@189..190 "1"
120 R_PAREN@[190; 191) ")" 120 R_PAREN@190..191 ")"
121 R_PAREN@[191; 192) ")" 121 R_PAREN@191..192 ")"
122 WHITESPACE@[192; 193) " " 122 WHITESPACE@192..193 " "
123 FAT_ARROW@[193; 195) "=>" 123 FAT_ARROW@193..195 "=>"
124 WHITESPACE@[195; 196) " " 124 WHITESPACE@195..196 " "
125 TUPLE_EXPR@[196; 198) 125 TUPLE_EXPR@196..198
126 L_PAREN@[196; 197) "(" 126 L_PAREN@196..197 "("
127 R_PAREN@[197; 198) ")" 127 R_PAREN@197..198 ")"
128 COMMA@[198; 199) "," 128 COMMA@198..199 ","
129 WHITESPACE@[199; 208) "\n " 129 WHITESPACE@199..208 "\n "
130 MATCH_ARM@[208; 215) 130 MATCH_ARM@208..215
131 PLACEHOLDER_PAT@[208; 209) 131 PLACEHOLDER_PAT@208..209
132 UNDERSCORE@[208; 209) "_" 132 UNDERSCORE@208..209 "_"
133 WHITESPACE@[209; 210) " " 133 WHITESPACE@209..210 " "
134 FAT_ARROW@[210; 212) "=>" 134 FAT_ARROW@210..212 "=>"
135 WHITESPACE@[212; 213) " " 135 WHITESPACE@212..213 " "
136 TUPLE_EXPR@[213; 215) 136 TUPLE_EXPR@213..215
137 L_PAREN@[213; 214) "(" 137 L_PAREN@213..214 "("
138 R_PAREN@[214; 215) ")" 138 R_PAREN@214..215 ")"
139 COMMA@[215; 216) "," 139 COMMA@215..216 ","
140 WHITESPACE@[216; 221) "\n " 140 WHITESPACE@216..221 "\n "
141 R_CURLY@[221; 222) "}" 141 R_CURLY@221..222 "}"
142 WHITESPACE@[222; 228) "\n\n " 142 WHITESPACE@222..228 "\n\n "
143 EXPR_STMT@[228; 299) 143 EXPR_STMT@228..299
144 MATCH_EXPR@[228; 299) 144 MATCH_EXPR@228..299
145 MATCH_KW@[228; 233) "match" 145 MATCH_KW@228..233 "match"
146 WHITESPACE@[233; 234) " " 146 WHITESPACE@233..234 " "
147 CALL_EXPR@[234; 246) 147 CALL_EXPR@234..246
148 PATH_EXPR@[234; 238) 148 PATH_EXPR@234..238
149 PATH@[234; 238) 149 PATH@234..238
150 PATH@[234; 235) 150 PATH@234..235
151 PATH_SEGMENT@[234; 235) 151 PATH_SEGMENT@234..235
152 NAME_REF@[234; 235) 152 NAME_REF@234..235
153 IDENT@[234; 235) "A" 153 IDENT@234..235 "A"
154 COLON2@[235; 237) "::" 154 COLON2@235..237 "::"
155 PATH_SEGMENT@[237; 238) 155 PATH_SEGMENT@237..238
156 NAME_REF@[237; 238) 156 NAME_REF@237..238
157 IDENT@[237; 238) "B" 157 IDENT@237..238 "B"
158 ARG_LIST@[238; 246) 158 ARG_LIST@238..246
159 L_PAREN@[238; 239) "(" 159 L_PAREN@238..239 "("
160 PREFIX_EXPR@[239; 241) 160 PREFIX_EXPR@239..241
161 MINUS@[239; 240) "-" 161 MINUS@239..240 "-"
162 LITERAL@[240; 241) 162 LITERAL@240..241
163 INT_NUMBER@[240; 241) "1" 163 INT_NUMBER@240..241 "1"
164 COMMA@[241; 242) "," 164 COMMA@241..242 ","
165 WHITESPACE@[242; 243) " " 165 WHITESPACE@242..243 " "
166 PREFIX_EXPR@[243; 245) 166 PREFIX_EXPR@243..245
167 MINUS@[243; 244) "-" 167 MINUS@243..244 "-"
168 LITERAL@[244; 245) 168 LITERAL@244..245
169 INT_NUMBER@[244; 245) "1" 169 INT_NUMBER@244..245 "1"
170 R_PAREN@[245; 246) ")" 170 R_PAREN@245..246 ")"
171 WHITESPACE@[246; 247) " " 171 WHITESPACE@246..247 " "
172 MATCH_ARM_LIST@[247; 299) 172 MATCH_ARM_LIST@247..299
173 L_CURLY@[247; 248) "{" 173 L_CURLY@247..248 "{"
174 WHITESPACE@[248; 257) "\n " 174 WHITESPACE@248..257 "\n "
175 MATCH_ARM@[257; 275) 175 MATCH_ARM@257..275
176 TUPLE_STRUCT_PAT@[257; 269) 176 TUPLE_STRUCT_PAT@257..269
177 PATH@[257; 261) 177 PATH@257..261
178 PATH@[257; 258) 178 PATH@257..258
179 PATH_SEGMENT@[257; 258) 179 PATH_SEGMENT@257..258
180 NAME_REF@[257; 258) 180 NAME_REF@257..258
181 IDENT@[257; 258) "A" 181 IDENT@257..258 "A"
182 COLON2@[258; 260) "::" 182 COLON2@258..260 "::"
183 PATH_SEGMENT@[260; 261) 183 PATH_SEGMENT@260..261
184 NAME_REF@[260; 261) 184 NAME_REF@260..261
185 IDENT@[260; 261) "B" 185 IDENT@260..261 "B"
186 L_PAREN@[261; 262) "(" 186 L_PAREN@261..262 "("
187 LITERAL_PAT@[262; 264) 187 LITERAL_PAT@262..264
188 MINUS@[262; 263) "-" 188 MINUS@262..263 "-"
189 LITERAL@[263; 264) 189 LITERAL@263..264
190 INT_NUMBER@[263; 264) "1" 190 INT_NUMBER@263..264 "1"
191 COMMA@[264; 265) "," 191 COMMA@264..265 ","
192 WHITESPACE@[265; 266) " " 192 WHITESPACE@265..266 " "
193 LITERAL_PAT@[266; 268) 193 LITERAL_PAT@266..268
194 MINUS@[266; 267) "-" 194 MINUS@266..267 "-"
195 LITERAL@[267; 268) 195 LITERAL@267..268
196 INT_NUMBER@[267; 268) "1" 196 INT_NUMBER@267..268 "1"
197 R_PAREN@[268; 269) ")" 197 R_PAREN@268..269 ")"
198 WHITESPACE@[269; 270) " " 198 WHITESPACE@269..270 " "
199 FAT_ARROW@[270; 272) "=>" 199 FAT_ARROW@270..272 "=>"
200 WHITESPACE@[272; 273) " " 200 WHITESPACE@272..273 " "
201 TUPLE_EXPR@[273; 275) 201 TUPLE_EXPR@273..275
202 L_PAREN@[273; 274) "(" 202 L_PAREN@273..274 "("
203 R_PAREN@[274; 275) ")" 203 R_PAREN@274..275 ")"
204 COMMA@[275; 276) "," 204 COMMA@275..276 ","
205 WHITESPACE@[276; 285) "\n " 205 WHITESPACE@276..285 "\n "
206 MATCH_ARM@[285; 292) 206 MATCH_ARM@285..292
207 PLACEHOLDER_PAT@[285; 286) 207 PLACEHOLDER_PAT@285..286
208 UNDERSCORE@[285; 286) "_" 208 UNDERSCORE@285..286 "_"
209 WHITESPACE@[286; 287) " " 209 WHITESPACE@286..287 " "
210 FAT_ARROW@[287; 289) "=>" 210 FAT_ARROW@287..289 "=>"
211 WHITESPACE@[289; 290) " " 211 WHITESPACE@289..290 " "
212 TUPLE_EXPR@[290; 292) 212 TUPLE_EXPR@290..292
213 L_PAREN@[290; 291) "(" 213 L_PAREN@290..291 "("
214 R_PAREN@[291; 292) ")" 214 R_PAREN@291..292 ")"
215 COMMA@[292; 293) "," 215 COMMA@292..293 ","
216 WHITESPACE@[293; 298) "\n " 216 WHITESPACE@293..298 "\n "
217 R_CURLY@[298; 299) "}" 217 R_CURLY@298..299 "}"
218 WHITESPACE@[299; 305) "\n\n " 218 WHITESPACE@299..305 "\n\n "
219 IF_EXPR@[305; 339) 219 IF_EXPR@305..339
220 IF_KW@[305; 307) "if" 220 IF_KW@305..307 "if"
221 WHITESPACE@[307; 308) " " 221 WHITESPACE@307..308 " "
222 CONDITION@[308; 331) 222 CONDITION@308..331
223 LET_KW@[308; 311) "let" 223 LET_KW@308..311 "let"
224 WHITESPACE@[311; 312) " " 224 WHITESPACE@311..312 " "
225 TUPLE_STRUCT_PAT@[312; 320) 225 TUPLE_STRUCT_PAT@312..320
226 PATH@[312; 316) 226 PATH@312..316
227 PATH_SEGMENT@[312; 316) 227 PATH_SEGMENT@312..316
228 NAME_REF@[312; 316) 228 NAME_REF@312..316
229 IDENT@[312; 316) "Some" 229 IDENT@312..316 "Some"
230 L_PAREN@[316; 317) "(" 230 L_PAREN@316..317 "("
231 LITERAL_PAT@[317; 319) 231 LITERAL_PAT@317..319
232 MINUS@[317; 318) "-" 232 MINUS@317..318 "-"
233 LITERAL@[318; 319) 233 LITERAL@318..319
234 INT_NUMBER@[318; 319) "1" 234 INT_NUMBER@318..319 "1"
235 R_PAREN@[319; 320) ")" 235 R_PAREN@319..320 ")"
236 WHITESPACE@[320; 321) " " 236 WHITESPACE@320..321 " "
237 EQ@[321; 322) "=" 237 EQ@321..322 "="
238 WHITESPACE@[322; 323) " " 238 WHITESPACE@322..323 " "
239 CALL_EXPR@[323; 331) 239 CALL_EXPR@323..331
240 PATH_EXPR@[323; 327) 240 PATH_EXPR@323..327
241 PATH@[323; 327) 241 PATH@323..327
242 PATH_SEGMENT@[323; 327) 242 PATH_SEGMENT@323..327
243 NAME_REF@[323; 327) 243 NAME_REF@323..327
244 IDENT@[323; 327) "Some" 244 IDENT@323..327 "Some"
245 ARG_LIST@[327; 331) 245 ARG_LIST@327..331
246 L_PAREN@[327; 328) "(" 246 L_PAREN@327..328 "("
247 PREFIX_EXPR@[328; 330) 247 PREFIX_EXPR@328..330
248 MINUS@[328; 329) "-" 248 MINUS@328..329 "-"
249 LITERAL@[329; 330) 249 LITERAL@329..330
250 INT_NUMBER@[329; 330) "1" 250 INT_NUMBER@329..330 "1"
251 R_PAREN@[330; 331) ")" 251 R_PAREN@330..331 ")"
252 WHITESPACE@[331; 332) " " 252 WHITESPACE@331..332 " "
253 BLOCK_EXPR@[332; 339) 253 BLOCK_EXPR@332..339
254 BLOCK@[332; 339) 254 BLOCK@332..339
255 L_CURLY@[332; 333) "{" 255 L_CURLY@332..333 "{"
256 WHITESPACE@[333; 338) "\n " 256 WHITESPACE@333..338 "\n "
257 R_CURLY@[338; 339) "}" 257 R_CURLY@338..339 "}"
258 WHITESPACE@[339; 340) "\n" 258 WHITESPACE@339..340 "\n"
259 R_CURLY@[340; 341) "}" 259 R_CURLY@340..341 "}"
260 WHITESPACE@[341; 343) "\n\n" 260 WHITESPACE@341..343 "\n\n"
261 ENUM_DEF@[343; 367) 261 ENUM_DEF@343..367
262 ENUM_KW@[343; 347) "enum" 262 ENUM_KW@343..347 "enum"
263 WHITESPACE@[347; 348) " " 263 WHITESPACE@347..348 " "
264 NAME@[348; 349) 264 NAME@348..349
265 IDENT@[348; 349) "A" 265 IDENT@348..349 "A"
266 WHITESPACE@[349; 350) " " 266 WHITESPACE@349..350 " "
267 ENUM_VARIANT_LIST@[350; 367) 267 ENUM_VARIANT_LIST@350..367
268 L_CURLY@[350; 351) "{" 268 L_CURLY@350..351 "{"
269 WHITESPACE@[351; 356) "\n " 269 WHITESPACE@351..356 "\n "
270 ENUM_VARIANT@[356; 365) 270 ENUM_VARIANT@356..365
271 NAME@[356; 357) 271 NAME@356..357
272 IDENT@[356; 357) "B" 272 IDENT@356..357 "B"
273 TUPLE_FIELD_DEF_LIST@[357; 365) 273 TUPLE_FIELD_DEF_LIST@357..365
274 L_PAREN@[357; 358) "(" 274 L_PAREN@357..358 "("
275 TUPLE_FIELD_DEF@[358; 360) 275 TUPLE_FIELD_DEF@358..360
276 PATH_TYPE@[358; 360) 276 PATH_TYPE@358..360
277 PATH@[358; 360) 277 PATH@358..360
278 PATH_SEGMENT@[358; 360) 278 PATH_SEGMENT@358..360
279 NAME_REF@[358; 360) 279 NAME_REF@358..360
280 IDENT@[358; 360) "i8" 280 IDENT@358..360 "i8"
281 COMMA@[360; 361) "," 281 COMMA@360..361 ","
282 WHITESPACE@[361; 362) " " 282 WHITESPACE@361..362 " "
283 TUPLE_FIELD_DEF@[362; 364) 283 TUPLE_FIELD_DEF@362..364
284 PATH_TYPE@[362; 364) 284 PATH_TYPE@362..364
285 PATH@[362; 364) 285 PATH@362..364
286 PATH_SEGMENT@[362; 364) 286 PATH_SEGMENT@362..364
287 NAME_REF@[362; 364) 287 NAME_REF@362..364
288 IDENT@[362; 364) "i8" 288 IDENT@362..364 "i8"
289 R_PAREN@[364; 365) ")" 289 R_PAREN@364..365 ")"
290 WHITESPACE@[365; 366) "\n" 290 WHITESPACE@365..366 "\n"
291 R_CURLY@[366; 367) "}" 291 R_CURLY@366..367 "}"
292 WHITESPACE@[367; 369) "\n\n" 292 WHITESPACE@367..369 "\n\n"
293 FN_DEF@[369; 394) 293 FN_DEF@369..394
294 FN_KW@[369; 371) "fn" 294 FN_KW@369..371 "fn"
295 WHITESPACE@[371; 372) " " 295 WHITESPACE@371..372 " "
296 NAME@[372; 375) 296 NAME@372..375
297 IDENT@[372; 375) "foo" 297 IDENT@372..375 "foo"
298 PARAM_LIST@[375; 391) 298 PARAM_LIST@375..391
299 L_PAREN@[375; 376) "(" 299 L_PAREN@375..376 "("
300 PARAM@[376; 390) 300 PARAM@376..390
301 RANGE_PAT@[376; 386) 301 RANGE_PAT@376..386
302 LITERAL_PAT@[376; 380) 302 LITERAL_PAT@376..380
303 MINUS@[376; 377) "-" 303 MINUS@376..377 "-"
304 LITERAL@[377; 380) 304 LITERAL@377..380
305 INT_NUMBER@[377; 380) "128" 305 INT_NUMBER@377..380 "128"
306 DOT2EQ@[380; 383) "..=" 306 DOT2EQ@380..383 "..="
307 LITERAL_PAT@[383; 386) 307 LITERAL_PAT@383..386
308 LITERAL@[383; 386) 308 LITERAL@383..386
309 INT_NUMBER@[383; 386) "127" 309 INT_NUMBER@383..386 "127"
310 COLON@[386; 387) ":" 310 COLON@386..387 ":"
311 WHITESPACE@[387; 388) " " 311 WHITESPACE@387..388 " "
312 PATH_TYPE@[388; 390) 312 PATH_TYPE@388..390
313 PATH@[388; 390) 313 PATH@388..390
314 PATH_SEGMENT@[388; 390) 314 PATH_SEGMENT@388..390
315 NAME_REF@[388; 390) 315 NAME_REF@388..390
316 IDENT@[388; 390) "i8" 316 IDENT@388..390 "i8"
317 R_PAREN@[390; 391) ")" 317 R_PAREN@390..391 ")"
318 WHITESPACE@[391; 392) " " 318 WHITESPACE@391..392 " "
319 BLOCK_EXPR@[392; 394) 319 BLOCK_EXPR@392..394
320 BLOCK@[392; 394) 320 BLOCK@392..394
321 L_CURLY@[392; 393) "{" 321 L_CURLY@392..393 "{"
322 R_CURLY@[393; 394) "}" 322 R_CURLY@393..394 "}"
323 WHITESPACE@[394; 395) "\n" 323 WHITESPACE@394..395 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast b/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast
index 849d8a445..9c2701bf7 100644
--- a/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast
@@ -1,201 +1,201 @@
1SOURCE_FILE@[0; 257) 1SOURCE_FILE@0..257
2 COMMENT@[0; 58) "// https://github.com ..." 2 COMMENT@0..58 "// https://github.com ..."
3 WHITESPACE@[58; 60) "\n\n" 3 WHITESPACE@58..60 "\n\n"
4 FN_DEF@[60; 256) 4 FN_DEF@60..256
5 FN_KW@[60; 62) "fn" 5 FN_KW@60..62 "fn"
6 WHITESPACE@[62; 63) " " 6 WHITESPACE@62..63 " "
7 NAME@[63; 82) 7 NAME@63..82
8 IDENT@[63; 82) "compound_assignment" 8 IDENT@63..82 "compound_assignment"
9 PARAM_LIST@[82; 84) 9 PARAM_LIST@82..84
10 L_PAREN@[82; 83) "(" 10 L_PAREN@82..83 "("
11 R_PAREN@[83; 84) ")" 11 R_PAREN@83..84 ")"
12 WHITESPACE@[84; 85) " " 12 WHITESPACE@84..85 " "
13 BLOCK_EXPR@[85; 256) 13 BLOCK_EXPR@85..256
14 BLOCK@[85; 256) 14 BLOCK@85..256
15 L_CURLY@[85; 86) "{" 15 L_CURLY@85..86 "{"
16 WHITESPACE@[86; 91) "\n " 16 WHITESPACE@86..91 "\n "
17 LET_STMT@[91; 105) 17 LET_STMT@91..105
18 LET_KW@[91; 94) "let" 18 LET_KW@91..94 "let"
19 WHITESPACE@[94; 95) " " 19 WHITESPACE@94..95 " "
20 BIND_PAT@[95; 100) 20 BIND_PAT@95..100
21 MUT_KW@[95; 98) "mut" 21 MUT_KW@95..98 "mut"
22 WHITESPACE@[98; 99) " " 22 WHITESPACE@98..99 " "
23 NAME@[99; 100) 23 NAME@99..100
24 IDENT@[99; 100) "a" 24 IDENT@99..100 "a"
25 WHITESPACE@[100; 101) " " 25 WHITESPACE@100..101 " "
26 EQ@[101; 102) "=" 26 EQ@101..102 "="
27 WHITESPACE@[102; 103) " " 27 WHITESPACE@102..103 " "
28 LITERAL@[103; 104) 28 LITERAL@103..104
29 INT_NUMBER@[103; 104) "0" 29 INT_NUMBER@103..104 "0"
30 SEMICOLON@[104; 105) ";" 30 SEMICOLON@104..105 ";"
31 WHITESPACE@[105; 110) "\n " 31 WHITESPACE@105..110 "\n "
32 EXPR_STMT@[110; 117) 32 EXPR_STMT@110..117
33 BIN_EXPR@[110; 116) 33 BIN_EXPR@110..116
34 PATH_EXPR@[110; 111) 34 PATH_EXPR@110..111
35 PATH@[110; 111) 35 PATH@110..111
36 PATH_SEGMENT@[110; 111) 36 PATH_SEGMENT@110..111
37 NAME_REF@[110; 111) 37 NAME_REF@110..111
38 IDENT@[110; 111) "a" 38 IDENT@110..111 "a"
39 WHITESPACE@[111; 112) " " 39 WHITESPACE@111..112 " "
40 PLUSEQ@[112; 114) "+=" 40 PLUSEQ@112..114 "+="
41 WHITESPACE@[114; 115) " " 41 WHITESPACE@114..115 " "
42 LITERAL@[115; 116) 42 LITERAL@115..116
43 INT_NUMBER@[115; 116) "1" 43 INT_NUMBER@115..116 "1"
44 SEMICOLON@[116; 117) ";" 44 SEMICOLON@116..117 ";"
45 WHITESPACE@[117; 122) "\n " 45 WHITESPACE@117..122 "\n "
46 EXPR_STMT@[122; 129) 46 EXPR_STMT@122..129
47 BIN_EXPR@[122; 128) 47 BIN_EXPR@122..128
48 PATH_EXPR@[122; 123) 48 PATH_EXPR@122..123
49 PATH@[122; 123) 49 PATH@122..123
50 PATH_SEGMENT@[122; 123) 50 PATH_SEGMENT@122..123
51 NAME_REF@[122; 123) 51 NAME_REF@122..123
52 IDENT@[122; 123) "a" 52 IDENT@122..123 "a"
53 WHITESPACE@[123; 124) " " 53 WHITESPACE@123..124 " "
54 MINUSEQ@[124; 126) "-=" 54 MINUSEQ@124..126 "-="
55 WHITESPACE@[126; 127) " " 55 WHITESPACE@126..127 " "
56 LITERAL@[127; 128) 56 LITERAL@127..128
57 INT_NUMBER@[127; 128) "2" 57 INT_NUMBER@127..128 "2"
58 SEMICOLON@[128; 129) ";" 58 SEMICOLON@128..129 ";"
59 WHITESPACE@[129; 134) "\n " 59 WHITESPACE@129..134 "\n "
60 EXPR_STMT@[134; 141) 60 EXPR_STMT@134..141
61 BIN_EXPR@[134; 140) 61 BIN_EXPR@134..140
62 PATH_EXPR@[134; 135) 62 PATH_EXPR@134..135
63 PATH@[134; 135) 63 PATH@134..135
64 PATH_SEGMENT@[134; 135) 64 PATH_SEGMENT@134..135
65 NAME_REF@[134; 135) 65 NAME_REF@134..135
66 IDENT@[134; 135) "a" 66 IDENT@134..135 "a"
67 WHITESPACE@[135; 136) " " 67 WHITESPACE@135..136 " "
68 STAREQ@[136; 138) "*=" 68 STAREQ@136..138 "*="
69 WHITESPACE@[138; 139) " " 69 WHITESPACE@138..139 " "
70 LITERAL@[139; 140) 70 LITERAL@139..140
71 INT_NUMBER@[139; 140) "3" 71 INT_NUMBER@139..140 "3"
72 SEMICOLON@[140; 141) ";" 72 SEMICOLON@140..141 ";"
73 WHITESPACE@[141; 146) "\n " 73 WHITESPACE@141..146 "\n "
74 EXPR_STMT@[146; 153) 74 EXPR_STMT@146..153
75 BIN_EXPR@[146; 152) 75 BIN_EXPR@146..152
76 PATH_EXPR@[146; 147) 76 PATH_EXPR@146..147
77 PATH@[146; 147) 77 PATH@146..147
78 PATH_SEGMENT@[146; 147) 78 PATH_SEGMENT@146..147
79 NAME_REF@[146; 147) 79 NAME_REF@146..147
80 IDENT@[146; 147) "a" 80 IDENT@146..147 "a"
81 WHITESPACE@[147; 148) " " 81 WHITESPACE@147..148 " "
82 PERCENTEQ@[148; 150) "%=" 82 PERCENTEQ@148..150 "%="
83 WHITESPACE@[150; 151) " " 83 WHITESPACE@150..151 " "
84 LITERAL@[151; 152) 84 LITERAL@151..152
85 INT_NUMBER@[151; 152) "4" 85 INT_NUMBER@151..152 "4"
86 SEMICOLON@[152; 153) ";" 86 SEMICOLON@152..153 ";"
87 WHITESPACE@[153; 158) "\n " 87 WHITESPACE@153..158 "\n "
88 EXPR_STMT@[158; 165) 88 EXPR_STMT@158..165
89 BIN_EXPR@[158; 164) 89 BIN_EXPR@158..164
90 PATH_EXPR@[158; 159) 90 PATH_EXPR@158..159
91 PATH@[158; 159) 91 PATH@158..159
92 PATH_SEGMENT@[158; 159) 92 PATH_SEGMENT@158..159
93 NAME_REF@[158; 159) 93 NAME_REF@158..159
94 IDENT@[158; 159) "a" 94 IDENT@158..159 "a"
95 WHITESPACE@[159; 160) " " 95 WHITESPACE@159..160 " "
96 SLASHEQ@[160; 162) "/=" 96 SLASHEQ@160..162 "/="
97 WHITESPACE@[162; 163) " " 97 WHITESPACE@162..163 " "
98 LITERAL@[163; 164) 98 LITERAL@163..164
99 INT_NUMBER@[163; 164) "5" 99 INT_NUMBER@163..164 "5"
100 SEMICOLON@[164; 165) ";" 100 SEMICOLON@164..165 ";"
101 WHITESPACE@[165; 170) "\n " 101 WHITESPACE@165..170 "\n "
102 EXPR_STMT@[170; 177) 102 EXPR_STMT@170..177
103 BIN_EXPR@[170; 176) 103 BIN_EXPR@170..176
104 PATH_EXPR@[170; 171) 104 PATH_EXPR@170..171
105 PATH@[170; 171) 105 PATH@170..171
106 PATH_SEGMENT@[170; 171) 106 PATH_SEGMENT@170..171
107 NAME_REF@[170; 171) 107 NAME_REF@170..171
108 IDENT@[170; 171) "a" 108 IDENT@170..171 "a"
109 WHITESPACE@[171; 172) " " 109 WHITESPACE@171..172 " "
110 PIPEEQ@[172; 174) "|=" 110 PIPEEQ@172..174 "|="
111 WHITESPACE@[174; 175) " " 111 WHITESPACE@174..175 " "
112 LITERAL@[175; 176) 112 LITERAL@175..176
113 INT_NUMBER@[175; 176) "6" 113 INT_NUMBER@175..176 "6"
114 SEMICOLON@[176; 177) ";" 114 SEMICOLON@176..177 ";"
115 WHITESPACE@[177; 182) "\n " 115 WHITESPACE@177..182 "\n "
116 EXPR_STMT@[182; 189) 116 EXPR_STMT@182..189
117 BIN_EXPR@[182; 188) 117 BIN_EXPR@182..188
118 PATH_EXPR@[182; 183) 118 PATH_EXPR@182..183
119 PATH@[182; 183) 119 PATH@182..183
120 PATH_SEGMENT@[182; 183) 120 PATH_SEGMENT@182..183
121 NAME_REF@[182; 183) 121 NAME_REF@182..183
122 IDENT@[182; 183) "a" 122 IDENT@182..183 "a"
123 WHITESPACE@[183; 184) " " 123 WHITESPACE@183..184 " "
124 AMPEQ@[184; 186) "&=" 124 AMPEQ@184..186 "&="
125 WHITESPACE@[186; 187) " " 125 WHITESPACE@186..187 " "
126 LITERAL@[187; 188) 126 LITERAL@187..188
127 INT_NUMBER@[187; 188) "7" 127 INT_NUMBER@187..188 "7"
128 SEMICOLON@[188; 189) ";" 128 SEMICOLON@188..189 ";"
129 WHITESPACE@[189; 194) "\n " 129 WHITESPACE@189..194 "\n "
130 EXPR_STMT@[194; 201) 130 EXPR_STMT@194..201
131 BIN_EXPR@[194; 200) 131 BIN_EXPR@194..200
132 PATH_EXPR@[194; 195) 132 PATH_EXPR@194..195
133 PATH@[194; 195) 133 PATH@194..195
134 PATH_SEGMENT@[194; 195) 134 PATH_SEGMENT@194..195
135 NAME_REF@[194; 195) 135 NAME_REF@194..195
136 IDENT@[194; 195) "a" 136 IDENT@194..195 "a"
137 WHITESPACE@[195; 196) " " 137 WHITESPACE@195..196 " "
138 CARETEQ@[196; 198) "^=" 138 CARETEQ@196..198 "^="
139 WHITESPACE@[198; 199) " " 139 WHITESPACE@198..199 " "
140 LITERAL@[199; 200) 140 LITERAL@199..200
141 INT_NUMBER@[199; 200) "8" 141 INT_NUMBER@199..200 "8"
142 SEMICOLON@[200; 201) ";" 142 SEMICOLON@200..201 ";"
143 WHITESPACE@[201; 206) "\n " 143 WHITESPACE@201..206 "\n "
144 EXPR_STMT@[206; 213) 144 EXPR_STMT@206..213
145 BIN_EXPR@[206; 212) 145 BIN_EXPR@206..212
146 PATH_EXPR@[206; 207) 146 PATH_EXPR@206..207
147 PATH@[206; 207) 147 PATH@206..207
148 PATH_SEGMENT@[206; 207) 148 PATH_SEGMENT@206..207
149 NAME_REF@[206; 207) 149 NAME_REF@206..207
150 IDENT@[206; 207) "a" 150 IDENT@206..207 "a"
151 WHITESPACE@[207; 208) " " 151 WHITESPACE@207..208 " "
152 LTEQ@[208; 210) "<=" 152 LTEQ@208..210 "<="
153 WHITESPACE@[210; 211) " " 153 WHITESPACE@210..211 " "
154 LITERAL@[211; 212) 154 LITERAL@211..212
155 INT_NUMBER@[211; 212) "9" 155 INT_NUMBER@211..212 "9"
156 SEMICOLON@[212; 213) ";" 156 SEMICOLON@212..213 ";"
157 WHITESPACE@[213; 218) "\n " 157 WHITESPACE@213..218 "\n "
158 EXPR_STMT@[218; 226) 158 EXPR_STMT@218..226
159 BIN_EXPR@[218; 225) 159 BIN_EXPR@218..225
160 PATH_EXPR@[218; 219) 160 PATH_EXPR@218..219
161 PATH@[218; 219) 161 PATH@218..219
162 PATH_SEGMENT@[218; 219) 162 PATH_SEGMENT@218..219
163 NAME_REF@[218; 219) 163 NAME_REF@218..219
164 IDENT@[218; 219) "a" 164 IDENT@218..219 "a"
165 WHITESPACE@[219; 220) " " 165 WHITESPACE@219..220 " "
166 GTEQ@[220; 222) ">=" 166 GTEQ@220..222 ">="
167 WHITESPACE@[222; 223) " " 167 WHITESPACE@222..223 " "
168 LITERAL@[223; 225) 168 LITERAL@223..225
169 INT_NUMBER@[223; 225) "10" 169 INT_NUMBER@223..225 "10"
170 SEMICOLON@[225; 226) ";" 170 SEMICOLON@225..226 ";"
171 WHITESPACE@[226; 231) "\n " 171 WHITESPACE@226..231 "\n "
172 EXPR_STMT@[231; 240) 172 EXPR_STMT@231..240
173 BIN_EXPR@[231; 239) 173 BIN_EXPR@231..239
174 PATH_EXPR@[231; 232) 174 PATH_EXPR@231..232
175 PATH@[231; 232) 175 PATH@231..232
176 PATH_SEGMENT@[231; 232) 176 PATH_SEGMENT@231..232
177 NAME_REF@[231; 232) 177 NAME_REF@231..232
178 IDENT@[231; 232) "a" 178 IDENT@231..232 "a"
179 WHITESPACE@[232; 233) " " 179 WHITESPACE@232..233 " "
180 SHREQ@[233; 236) ">>=" 180 SHREQ@233..236 ">>="
181 WHITESPACE@[236; 237) " " 181 WHITESPACE@236..237 " "
182 LITERAL@[237; 239) 182 LITERAL@237..239
183 INT_NUMBER@[237; 239) "11" 183 INT_NUMBER@237..239 "11"
184 SEMICOLON@[239; 240) ";" 184 SEMICOLON@239..240 ";"
185 WHITESPACE@[240; 245) "\n " 185 WHITESPACE@240..245 "\n "
186 EXPR_STMT@[245; 254) 186 EXPR_STMT@245..254
187 BIN_EXPR@[245; 253) 187 BIN_EXPR@245..253
188 PATH_EXPR@[245; 246) 188 PATH_EXPR@245..246
189 PATH@[245; 246) 189 PATH@245..246
190 PATH_SEGMENT@[245; 246) 190 PATH_SEGMENT@245..246
191 NAME_REF@[245; 246) 191 NAME_REF@245..246
192 IDENT@[245; 246) "a" 192 IDENT@245..246 "a"
193 WHITESPACE@[246; 247) " " 193 WHITESPACE@246..247 " "
194 SHLEQ@[247; 250) "<<=" 194 SHLEQ@247..250 "<<="
195 WHITESPACE@[250; 251) " " 195 WHITESPACE@250..251 " "
196 LITERAL@[251; 253) 196 LITERAL@251..253
197 INT_NUMBER@[251; 253) "12" 197 INT_NUMBER@251..253 "12"
198 SEMICOLON@[253; 254) ";" 198 SEMICOLON@253..254 ";"
199 WHITESPACE@[254; 255) "\n" 199 WHITESPACE@254..255 "\n"
200 R_CURLY@[255; 256) "}" 200 R_CURLY@255..256 "}"
201 WHITESPACE@[256; 257) "\n" 201 WHITESPACE@256..257 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast b/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast
index 0d32f0115..750527bb9 100644
--- a/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast
@@ -1,36 +1,36 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@0..47
2 FN_DEF@[0; 45) 2 FN_DEF@0..45
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 45) 11 BLOCK_EXPR@9..45
12 BLOCK@[9; 45) 12 BLOCK@9..45
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 24) 15 EXPR_STMT@15..24
16 BLOCK_EXPR@[15; 23) 16 BLOCK_EXPR@15..23
17 ASYNC_KW@[15; 20) "async" 17 ASYNC_KW@15..20 "async"
18 WHITESPACE@[20; 21) " " 18 WHITESPACE@20..21 " "
19 BLOCK@[21; 23) 19 BLOCK@21..23
20 L_CURLY@[21; 22) "{" 20 L_CURLY@21..22 "{"
21 R_CURLY@[22; 23) "}" 21 R_CURLY@22..23 "}"
22 SEMICOLON@[23; 24) ";" 22 SEMICOLON@23..24 ";"
23 WHITESPACE@[24; 29) "\n " 23 WHITESPACE@24..29 "\n "
24 EXPR_STMT@[29; 43) 24 EXPR_STMT@29..43
25 BLOCK_EXPR@[29; 42) 25 BLOCK_EXPR@29..42
26 ASYNC_KW@[29; 34) "async" 26 ASYNC_KW@29..34 "async"
27 WHITESPACE@[34; 35) " " 27 WHITESPACE@34..35 " "
28 MOVE_KW@[35; 39) "move" 28 MOVE_KW@35..39 "move"
29 WHITESPACE@[39; 40) " " 29 WHITESPACE@39..40 " "
30 BLOCK@[40; 42) 30 BLOCK@40..42
31 L_CURLY@[40; 41) "{" 31 L_CURLY@40..41 "{"
32 R_CURLY@[41; 42) "}" 32 R_CURLY@41..42 "}"
33 SEMICOLON@[42; 43) ";" 33 SEMICOLON@42..43 ";"
34 WHITESPACE@[43; 44) "\n" 34 WHITESPACE@43..44 "\n"
35 R_CURLY@[44; 45) "}" 35 R_CURLY@44..45 "}"
36 WHITESPACE@[45; 47) "\n\n" 36 WHITESPACE@45..47 "\n\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast b/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast
index 17591d99f..b5577e933 100644
--- a/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast
@@ -1,92 +1,92 @@
1SOURCE_FILE@[0; 95) 1SOURCE_FILE@0..95
2 FN_DEF@[0; 52) 2 FN_DEF@0..52
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 49) 7 PARAM_LIST@6..49
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 48) 9 PARAM@7..48
10 BIND_PAT@[7; 8) 10 BIND_PAT@7..8
11 NAME@[7; 8) 11 NAME@7..8
12 IDENT@[7; 8) "x" 12 IDENT@7..8 "x"
13 COLON@[8; 9) ":" 13 COLON@8..9 ":"
14 WHITESPACE@[9; 10) " " 14 WHITESPACE@9..10 " "
15 IMPL_TRAIT_TYPE@[10; 48) 15 IMPL_TRAIT_TYPE@10..48
16 IMPL_KW@[10; 14) "impl" 16 IMPL_KW@10..14 "impl"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 TYPE_BOUND_LIST@[15; 48) 18 TYPE_BOUND_LIST@15..48
19 TYPE_BOUND@[15; 48) 19 TYPE_BOUND@15..48
20 PATH_TYPE@[15; 48) 20 PATH_TYPE@15..48
21 PATH@[15; 48) 21 PATH@15..48
22 PATH@[15; 26) 22 PATH@15..26
23 PATH@[15; 18) 23 PATH@15..18
24 PATH_SEGMENT@[15; 18) 24 PATH_SEGMENT@15..18
25 NAME_REF@[15; 18) 25 NAME_REF@15..18
26 IDENT@[15; 18) "std" 26 IDENT@15..18 "std"
27 COLON2@[18; 20) "::" 27 COLON2@18..20 "::"
28 PATH_SEGMENT@[20; 26) 28 PATH_SEGMENT@20..26
29 NAME_REF@[20; 26) 29 NAME_REF@20..26
30 IDENT@[20; 26) "future" 30 IDENT@20..26 "future"
31 COLON2@[26; 28) "::" 31 COLON2@26..28 "::"
32 PATH_SEGMENT@[28; 48) 32 PATH_SEGMENT@28..48
33 NAME_REF@[28; 34) 33 NAME_REF@28..34
34 IDENT@[28; 34) "Future" 34 IDENT@28..34 "Future"
35 TYPE_ARG_LIST@[34; 48) 35 TYPE_ARG_LIST@34..48
36 L_ANGLE@[34; 35) "<" 36 L_ANGLE@34..35 "<"
37 ASSOC_TYPE_ARG@[35; 47) 37 ASSOC_TYPE_ARG@35..47
38 NAME_REF@[35; 41) 38 NAME_REF@35..41
39 IDENT@[35; 41) "Output" 39 IDENT@35..41 "Output"
40 WHITESPACE@[41; 42) " " 40 WHITESPACE@41..42 " "
41 EQ@[42; 43) "=" 41 EQ@42..43 "="
42 WHITESPACE@[43; 44) " " 42 WHITESPACE@43..44 " "
43 PATH_TYPE@[44; 47) 43 PATH_TYPE@44..47
44 PATH@[44; 47) 44 PATH@44..47
45 PATH_SEGMENT@[44; 47) 45 PATH_SEGMENT@44..47
46 NAME_REF@[44; 47) 46 NAME_REF@44..47
47 IDENT@[44; 47) "i32" 47 IDENT@44..47 "i32"
48 R_ANGLE@[47; 48) ">" 48 R_ANGLE@47..48 ">"
49 R_PAREN@[48; 49) ")" 49 R_PAREN@48..49 ")"
50 WHITESPACE@[49; 50) " " 50 WHITESPACE@49..50 " "
51 BLOCK_EXPR@[50; 52) 51 BLOCK_EXPR@50..52
52 BLOCK@[50; 52) 52 BLOCK@50..52
53 L_CURLY@[50; 51) "{" 53 L_CURLY@50..51 "{"
54 R_CURLY@[51; 52) "}" 54 R_CURLY@51..52 "}"
55 WHITESPACE@[52; 54) "\n\n" 55 WHITESPACE@52..54 "\n\n"
56 FN_DEF@[54; 94) 56 FN_DEF@54..94
57 FN_KW@[54; 56) "fn" 57 FN_KW@54..56 "fn"
58 WHITESPACE@[56; 57) " " 58 WHITESPACE@56..57 " "
59 NAME@[57; 61) 59 NAME@57..61
60 IDENT@[57; 61) "main" 60 IDENT@57..61 "main"
61 PARAM_LIST@[61; 63) 61 PARAM_LIST@61..63
62 L_PAREN@[61; 62) "(" 62 L_PAREN@61..62 "("
63 R_PAREN@[62; 63) ")" 63 R_PAREN@62..63 ")"
64 WHITESPACE@[63; 64) " " 64 WHITESPACE@63..64 " "
65 BLOCK_EXPR@[64; 94) 65 BLOCK_EXPR@64..94
66 BLOCK@[64; 94) 66 BLOCK@64..94
67 L_CURLY@[64; 65) "{" 67 L_CURLY@64..65 "{"
68 WHITESPACE@[65; 70) "\n " 68 WHITESPACE@65..70 "\n "
69 CALL_EXPR@[70; 92) 69 CALL_EXPR@70..92
70 PATH_EXPR@[70; 73) 70 PATH_EXPR@70..73
71 PATH@[70; 73) 71 PATH@70..73
72 PATH_SEGMENT@[70; 73) 72 PATH_SEGMENT@70..73
73 NAME_REF@[70; 73) 73 NAME_REF@70..73
74 IDENT@[70; 73) "foo" 74 IDENT@70..73 "foo"
75 ARG_LIST@[73; 92) 75 ARG_LIST@73..92
76 L_PAREN@[73; 74) "(" 76 L_PAREN@73..74 "("
77 BLOCK_EXPR@[74; 91) 77 BLOCK_EXPR@74..91
78 ASYNC_KW@[74; 79) "async" 78 ASYNC_KW@74..79 "async"
79 WHITESPACE@[79; 80) " " 79 WHITESPACE@79..80 " "
80 MOVE_KW@[80; 84) "move" 80 MOVE_KW@80..84 "move"
81 WHITESPACE@[84; 85) " " 81 WHITESPACE@84..85 " "
82 BLOCK@[85; 91) 82 BLOCK@85..91
83 L_CURLY@[85; 86) "{" 83 L_CURLY@85..86 "{"
84 WHITESPACE@[86; 87) " " 84 WHITESPACE@86..87 " "
85 LITERAL@[87; 89) 85 LITERAL@87..89
86 INT_NUMBER@[87; 89) "12" 86 INT_NUMBER@87..89 "12"
87 WHITESPACE@[89; 90) " " 87 WHITESPACE@89..90 " "
88 R_CURLY@[90; 91) "}" 88 R_CURLY@90..91 "}"
89 R_PAREN@[91; 92) ")" 89 R_PAREN@91..92 ")"
90 WHITESPACE@[92; 93) "\n" 90 WHITESPACE@92..93 "\n"
91 R_CURLY@[93; 94) "}" 91 R_CURLY@93..94 "}"
92 WHITESPACE@[94; 95) "\n" 92 WHITESPACE@94..95 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast
index 8fd28427c..6aacc2141 100644
--- a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast
@@ -1,519 +1,519 @@
1SOURCE_FILE@[0; 519) 1SOURCE_FILE@0..519
2 FN_DEF@[0; 37) 2 FN_DEF@0..37
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 5) 5 NAME@3..5
6 IDENT@[3; 5) "g1" 6 IDENT@3..5 "g1"
7 PARAM_LIST@[5; 34) 7 PARAM_LIST@5..34
8 L_PAREN@[5; 6) "(" 8 L_PAREN@5..6 "("
9 ATTR@[6; 14) 9 ATTR@6..14
10 POUND@[6; 7) "#" 10 POUND@6..7 "#"
11 L_BRACK@[7; 8) "[" 11 L_BRACK@7..8 "["
12 PATH@[8; 13) 12 PATH@8..13
13 PATH_SEGMENT@[8; 13) 13 PATH_SEGMENT@8..13
14 NAME_REF@[8; 13) 14 NAME_REF@8..13
15 IDENT@[8; 13) "attr1" 15 IDENT@8..13 "attr1"
16 R_BRACK@[13; 14) "]" 16 R_BRACK@13..14 "]"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 ATTR@[15; 23) 18 ATTR@15..23
19 POUND@[15; 16) "#" 19 POUND@15..16 "#"
20 L_BRACK@[16; 17) "[" 20 L_BRACK@16..17 "["
21 PATH@[17; 22) 21 PATH@17..22
22 PATH_SEGMENT@[17; 22) 22 PATH_SEGMENT@17..22
23 NAME_REF@[17; 22) 23 NAME_REF@17..22
24 IDENT@[17; 22) "attr2" 24 IDENT@17..22 "attr2"
25 R_BRACK@[22; 23) "]" 25 R_BRACK@22..23 "]"
26 WHITESPACE@[23; 24) " " 26 WHITESPACE@23..24 " "
27 PARAM@[24; 33) 27 PARAM@24..33
28 BIND_PAT@[24; 27) 28 BIND_PAT@24..27
29 NAME@[24; 27) 29 NAME@24..27
30 IDENT@[24; 27) "pat" 30 IDENT@24..27 "pat"
31 COLON@[27; 28) ":" 31 COLON@27..28 ":"
32 WHITESPACE@[28; 29) " " 32 WHITESPACE@28..29 " "
33 PATH_TYPE@[29; 33) 33 PATH_TYPE@29..33
34 PATH@[29; 33) 34 PATH@29..33
35 PATH_SEGMENT@[29; 33) 35 PATH_SEGMENT@29..33
36 NAME_REF@[29; 33) 36 NAME_REF@29..33
37 IDENT@[29; 33) "Type" 37 IDENT@29..33 "Type"
38 R_PAREN@[33; 34) ")" 38 R_PAREN@33..34 ")"
39 WHITESPACE@[34; 35) " " 39 WHITESPACE@34..35 " "
40 BLOCK_EXPR@[35; 37) 40 BLOCK_EXPR@35..37
41 BLOCK@[35; 37) 41 BLOCK@35..37
42 L_CURLY@[35; 36) "{" 42 L_CURLY@35..36 "{"
43 R_CURLY@[36; 37) "}" 43 R_CURLY@36..37 "}"
44 WHITESPACE@[37; 38) "\n" 44 WHITESPACE@37..38 "\n"
45 FN_DEF@[38; 62) 45 FN_DEF@38..62
46 FN_KW@[38; 40) "fn" 46 FN_KW@38..40 "fn"
47 WHITESPACE@[40; 41) " " 47 WHITESPACE@40..41 " "
48 NAME@[41; 43) 48 NAME@41..43
49 IDENT@[41; 43) "g2" 49 IDENT@41..43 "g2"
50 PARAM_LIST@[43; 59) 50 PARAM_LIST@43..59
51 L_PAREN@[43; 44) "(" 51 L_PAREN@43..44 "("
52 ATTR@[44; 52) 52 ATTR@44..52
53 POUND@[44; 45) "#" 53 POUND@44..45 "#"
54 L_BRACK@[45; 46) "[" 54 L_BRACK@45..46 "["
55 PATH@[46; 51) 55 PATH@46..51
56 PATH_SEGMENT@[46; 51) 56 PATH_SEGMENT@46..51
57 NAME_REF@[46; 51) 57 NAME_REF@46..51
58 IDENT@[46; 51) "attr1" 58 IDENT@46..51 "attr1"
59 R_BRACK@[51; 52) "]" 59 R_BRACK@51..52 "]"
60 WHITESPACE@[52; 53) " " 60 WHITESPACE@52..53 " "
61 PARAM@[53; 58) 61 PARAM@53..58
62 BIND_PAT@[53; 54) 62 BIND_PAT@53..54
63 NAME@[53; 54) 63 NAME@53..54
64 IDENT@[53; 54) "x" 64 IDENT@53..54 "x"
65 COLON@[54; 55) ":" 65 COLON@54..55 ":"
66 WHITESPACE@[55; 56) " " 66 WHITESPACE@55..56 " "
67 PATH_TYPE@[56; 58) 67 PATH_TYPE@56..58
68 PATH@[56; 58) 68 PATH@56..58
69 PATH_SEGMENT@[56; 58) 69 PATH_SEGMENT@56..58
70 NAME_REF@[56; 58) 70 NAME_REF@56..58
71 IDENT@[56; 58) "u8" 71 IDENT@56..58 "u8"
72 R_PAREN@[58; 59) ")" 72 R_PAREN@58..59 ")"
73 WHITESPACE@[59; 60) " " 73 WHITESPACE@59..60 " "
74 BLOCK_EXPR@[60; 62) 74 BLOCK_EXPR@60..62
75 BLOCK@[60; 62) 75 BLOCK@60..62
76 L_CURLY@[60; 61) "{" 76 L_CURLY@60..61 "{"
77 R_CURLY@[61; 62) "}" 77 R_CURLY@61..62 "}"
78 WHITESPACE@[62; 64) "\n\n" 78 WHITESPACE@62..64 "\n\n"
79 EXTERN_BLOCK@[64; 128) 79 EXTERN_BLOCK@64..128
80 ABI@[64; 74) 80 ABI@64..74
81 EXTERN_KW@[64; 70) "extern" 81 EXTERN_KW@64..70 "extern"
82 WHITESPACE@[70; 71) " " 82 WHITESPACE@70..71 " "
83 STRING@[71; 74) "\"C\"" 83 STRING@71..74 "\"C\""
84 WHITESPACE@[74; 75) " " 84 WHITESPACE@74..75 " "
85 EXTERN_ITEM_LIST@[75; 128) 85 EXTERN_ITEM_LIST@75..128
86 L_CURLY@[75; 76) "{" 86 L_CURLY@75..76 "{"
87 WHITESPACE@[76; 77) " " 87 WHITESPACE@76..77 " "
88 FN_DEF@[77; 126) 88 FN_DEF@77..126
89 FN_KW@[77; 79) "fn" 89 FN_KW@77..79 "fn"
90 WHITESPACE@[79; 80) " " 90 WHITESPACE@79..80 " "
91 NAME@[80; 86) 91 NAME@80..86
92 IDENT@[80; 86) "printf" 92 IDENT@80..86 "printf"
93 PARAM_LIST@[86; 118) 93 PARAM_LIST@86..118
94 L_PAREN@[86; 87) "(" 94 L_PAREN@86..87 "("
95 PARAM@[87; 104) 95 PARAM@87..104
96 BIND_PAT@[87; 93) 96 BIND_PAT@87..93
97 NAME@[87; 93) 97 NAME@87..93
98 IDENT@[87; 93) "format" 98 IDENT@87..93 "format"
99 COLON@[93; 94) ":" 99 COLON@93..94 ":"
100 WHITESPACE@[94; 95) " " 100 WHITESPACE@94..95 " "
101 POINTER_TYPE@[95; 104) 101 POINTER_TYPE@95..104
102 STAR@[95; 96) "*" 102 STAR@95..96 "*"
103 CONST_KW@[96; 101) "const" 103 CONST_KW@96..101 "const"
104 WHITESPACE@[101; 102) " " 104 WHITESPACE@101..102 " "
105 PATH_TYPE@[102; 104) 105 PATH_TYPE@102..104
106 PATH@[102; 104) 106 PATH@102..104
107 PATH_SEGMENT@[102; 104) 107 PATH_SEGMENT@102..104
108 NAME_REF@[102; 104) 108 NAME_REF@102..104
109 IDENT@[102; 104) "i8" 109 IDENT@102..104 "i8"
110 COMMA@[104; 105) "," 110 COMMA@104..105 ","
111 WHITESPACE@[105; 106) " " 111 WHITESPACE@105..106 " "
112 ATTR@[106; 113) 112 ATTR@106..113
113 POUND@[106; 107) "#" 113 POUND@106..107 "#"
114 L_BRACK@[107; 108) "[" 114 L_BRACK@107..108 "["
115 PATH@[108; 112) 115 PATH@108..112
116 PATH_SEGMENT@[108; 112) 116 PATH_SEGMENT@108..112
117 NAME_REF@[108; 112) 117 NAME_REF@108..112
118 IDENT@[108; 112) "attr" 118 IDENT@108..112 "attr"
119 R_BRACK@[112; 113) "]" 119 R_BRACK@112..113 "]"
120 WHITESPACE@[113; 114) " " 120 WHITESPACE@113..114 " "
121 PARAM@[114; 117) 121 PARAM@114..117
122 DOT3@[114; 117) "..." 122 DOT3@114..117 "..."
123 R_PAREN@[117; 118) ")" 123 R_PAREN@117..118 ")"
124 WHITESPACE@[118; 119) " " 124 WHITESPACE@118..119 " "
125 RET_TYPE@[119; 125) 125 RET_TYPE@119..125
126 THIN_ARROW@[119; 121) "->" 126 THIN_ARROW@119..121 "->"
127 WHITESPACE@[121; 122) " " 127 WHITESPACE@121..122 " "
128 PATH_TYPE@[122; 125) 128 PATH_TYPE@122..125
129 PATH@[122; 125) 129 PATH@122..125
130 PATH_SEGMENT@[122; 125) 130 PATH_SEGMENT@122..125
131 NAME_REF@[122; 125) 131 NAME_REF@122..125
132 IDENT@[122; 125) "i32" 132 IDENT@122..125 "i32"
133 SEMICOLON@[125; 126) ";" 133 SEMICOLON@125..126 ";"
134 WHITESPACE@[126; 127) " " 134 WHITESPACE@126..127 " "
135 R_CURLY@[127; 128) "}" 135 R_CURLY@127..128 "}"
136 WHITESPACE@[128; 130) "\n\n" 136 WHITESPACE@128..130 "\n\n"
137 FN_DEF@[130; 172) 137 FN_DEF@130..172
138 FN_KW@[130; 132) "fn" 138 FN_KW@130..132 "fn"
139 WHITESPACE@[132; 133) " " 139 WHITESPACE@132..133 " "
140 NAME@[133; 136) 140 NAME@133..136
141 IDENT@[133; 136) "foo" 141 IDENT@133..136 "foo"
142 TYPE_PARAM_LIST@[136; 168) 142 TYPE_PARAM_LIST@136..168
143 L_ANGLE@[136; 137) "<" 143 L_ANGLE@136..137 "<"
144 TYPE_PARAM@[137; 167) 144 TYPE_PARAM@137..167
145 NAME@[137; 138) 145 NAME@137..138
146 IDENT@[137; 138) "F" 146 IDENT@137..138 "F"
147 COLON@[138; 139) ":" 147 COLON@138..139 ":"
148 WHITESPACE@[139; 140) " " 148 WHITESPACE@139..140 " "
149 TYPE_BOUND_LIST@[140; 167) 149 TYPE_BOUND_LIST@140..167
150 TYPE_BOUND@[140; 167) 150 TYPE_BOUND@140..167
151 PATH_TYPE@[140; 167) 151 PATH_TYPE@140..167
152 PATH@[140; 167) 152 PATH@140..167
153 PATH_SEGMENT@[140; 167) 153 PATH_SEGMENT@140..167
154 NAME_REF@[140; 145) 154 NAME_REF@140..145
155 IDENT@[140; 145) "FnMut" 155 IDENT@140..145 "FnMut"
156 PARAM_LIST@[145; 167) 156 PARAM_LIST@145..167
157 L_PAREN@[145; 146) "(" 157 L_PAREN@145..146 "("
158 ATTR@[146; 153) 158 ATTR@146..153
159 POUND@[146; 147) "#" 159 POUND@146..147 "#"
160 L_BRACK@[147; 148) "[" 160 L_BRACK@147..148 "["
161 PATH@[148; 152) 161 PATH@148..152
162 PATH_SEGMENT@[148; 152) 162 PATH_SEGMENT@148..152
163 NAME_REF@[148; 152) 163 NAME_REF@148..152
164 IDENT@[148; 152) "attr" 164 IDENT@148..152 "attr"
165 R_BRACK@[152; 153) "]" 165 R_BRACK@152..153 "]"
166 WHITESPACE@[153; 154) " " 166 WHITESPACE@153..154 " "
167 PARAM@[154; 166) 167 PARAM@154..166
168 REFERENCE_TYPE@[154; 166) 168 REFERENCE_TYPE@154..166
169 AMP@[154; 155) "&" 169 AMP@154..155 "&"
170 MUT_KW@[155; 158) "mut" 170 MUT_KW@155..158 "mut"
171 WHITESPACE@[158; 159) " " 171 WHITESPACE@158..159 " "
172 PATH_TYPE@[159; 166) 172 PATH_TYPE@159..166
173 PATH@[159; 166) 173 PATH@159..166
174 PATH_SEGMENT@[159; 166) 174 PATH_SEGMENT@159..166
175 NAME_REF@[159; 162) 175 NAME_REF@159..162
176 IDENT@[159; 162) "Foo" 176 IDENT@159..162 "Foo"
177 TYPE_ARG_LIST@[162; 166) 177 TYPE_ARG_LIST@162..166
178 L_ANGLE@[162; 163) "<" 178 L_ANGLE@162..163 "<"
179 LIFETIME_ARG@[163; 165) 179 LIFETIME_ARG@163..165
180 LIFETIME@[163; 165) "\'a" 180 LIFETIME@163..165 "\'a"
181 R_ANGLE@[165; 166) ">" 181 R_ANGLE@165..166 ">"
182 R_PAREN@[166; 167) ")" 182 R_PAREN@166..167 ")"
183 R_ANGLE@[167; 168) ">" 183 R_ANGLE@167..168 ">"
184 PARAM_LIST@[168; 170) 184 PARAM_LIST@168..170
185 L_PAREN@[168; 169) "(" 185 L_PAREN@168..169 "("
186 R_PAREN@[169; 170) ")" 186 R_PAREN@169..170 ")"
187 BLOCK_EXPR@[170; 172) 187 BLOCK_EXPR@170..172
188 BLOCK@[170; 172) 188 BLOCK@170..172
189 L_CURLY@[170; 171) "{" 189 L_CURLY@170..171 "{"
190 R_CURLY@[171; 172) "}" 190 R_CURLY@171..172 "}"
191 WHITESPACE@[172; 174) "\n\n" 191 WHITESPACE@172..174 "\n\n"
192 TRAIT_DEF@[174; 236) 192 TRAIT_DEF@174..236
193 TRAIT_KW@[174; 179) "trait" 193 TRAIT_KW@174..179 "trait"
194 WHITESPACE@[179; 180) " " 194 WHITESPACE@179..180 " "
195 NAME@[180; 183) 195 NAME@180..183
196 IDENT@[180; 183) "Foo" 196 IDENT@180..183 "Foo"
197 WHITESPACE@[183; 184) " " 197 WHITESPACE@183..184 " "
198 ITEM_LIST@[184; 236) 198 ITEM_LIST@184..236
199 L_CURLY@[184; 185) "{" 199 L_CURLY@184..185 "{"
200 WHITESPACE@[185; 190) "\n " 200 WHITESPACE@185..190 "\n "
201 FN_DEF@[190; 234) 201 FN_DEF@190..234
202 FN_KW@[190; 192) "fn" 202 FN_KW@190..192 "fn"
203 WHITESPACE@[192; 193) " " 203 WHITESPACE@192..193 " "
204 NAME@[193; 196) 204 NAME@193..196
205 IDENT@[193; 196) "bar" 205 IDENT@193..196 "bar"
206 PARAM_LIST@[196; 233) 206 PARAM_LIST@196..233
207 L_PAREN@[196; 197) "(" 207 L_PAREN@196..197 "("
208 ATTR@[197; 204) 208 ATTR@197..204
209 POUND@[197; 198) "#" 209 POUND@197..198 "#"
210 L_BRACK@[198; 199) "[" 210 L_BRACK@198..199 "["
211 PATH@[199; 203) 211 PATH@199..203
212 PATH_SEGMENT@[199; 203) 212 PATH_SEGMENT@199..203
213 NAME_REF@[199; 203) 213 NAME_REF@199..203
214 IDENT@[199; 203) "attr" 214 IDENT@199..203 "attr"
215 R_BRACK@[203; 204) "]" 215 R_BRACK@203..204 "]"
216 WHITESPACE@[204; 205) " " 216 WHITESPACE@204..205 " "
217 PARAM@[205; 211) 217 PARAM@205..211
218 PLACEHOLDER_PAT@[205; 206) 218 PLACEHOLDER_PAT@205..206
219 UNDERSCORE@[205; 206) "_" 219 UNDERSCORE@205..206 "_"
220 COLON@[206; 207) ":" 220 COLON@206..207 ":"
221 WHITESPACE@[207; 208) " " 221 WHITESPACE@207..208 " "
222 PATH_TYPE@[208; 211) 222 PATH_TYPE@208..211
223 PATH@[208; 211) 223 PATH@208..211
224 PATH_SEGMENT@[208; 211) 224 PATH_SEGMENT@208..211
225 NAME_REF@[208; 211) 225 NAME_REF@208..211
226 IDENT@[208; 211) "u64" 226 IDENT@208..211 "u64"
227 COMMA@[211; 212) "," 227 COMMA@211..212 ","
228 WHITESPACE@[212; 213) " " 228 WHITESPACE@212..213 " "
229 ATTR@[213; 221) 229 ATTR@213..221
230 POUND@[213; 214) "#" 230 POUND@213..214 "#"
231 WHITESPACE@[214; 215) " " 231 WHITESPACE@214..215 " "
232 L_BRACK@[215; 216) "[" 232 L_BRACK@215..216 "["
233 PATH@[216; 220) 233 PATH@216..220
234 PATH_SEGMENT@[216; 220) 234 PATH_SEGMENT@216..220
235 NAME_REF@[216; 220) 235 NAME_REF@216..220
236 IDENT@[216; 220) "attr" 236 IDENT@216..220 "attr"
237 R_BRACK@[220; 221) "]" 237 R_BRACK@220..221 "]"
238 WHITESPACE@[221; 222) " " 238 WHITESPACE@221..222 " "
239 PARAM@[222; 232) 239 PARAM@222..232
240 BIND_PAT@[222; 227) 240 BIND_PAT@222..227
241 MUT_KW@[222; 225) "mut" 241 MUT_KW@222..225 "mut"
242 WHITESPACE@[225; 226) " " 242 WHITESPACE@225..226 " "
243 NAME@[226; 227) 243 NAME@226..227
244 IDENT@[226; 227) "x" 244 IDENT@226..227 "x"
245 COLON@[227; 228) ":" 245 COLON@227..228 ":"
246 WHITESPACE@[228; 229) " " 246 WHITESPACE@228..229 " "
247 PATH_TYPE@[229; 232) 247 PATH_TYPE@229..232
248 PATH@[229; 232) 248 PATH@229..232
249 PATH_SEGMENT@[229; 232) 249 PATH_SEGMENT@229..232
250 NAME_REF@[229; 232) 250 NAME_REF@229..232
251 IDENT@[229; 232) "i32" 251 IDENT@229..232 "i32"
252 R_PAREN@[232; 233) ")" 252 R_PAREN@232..233 ")"
253 SEMICOLON@[233; 234) ";" 253 SEMICOLON@233..234 ";"
254 WHITESPACE@[234; 235) "\n" 254 WHITESPACE@234..235 "\n"
255 R_CURLY@[235; 236) "}" 255 R_CURLY@235..236 "}"
256 WHITESPACE@[236; 238) "\n\n" 256 WHITESPACE@236..238 "\n\n"
257 IMPL_DEF@[238; 519) 257 IMPL_DEF@238..519
258 IMPL_KW@[238; 242) "impl" 258 IMPL_KW@238..242 "impl"
259 WHITESPACE@[242; 243) " " 259 WHITESPACE@242..243 " "
260 PATH_TYPE@[243; 244) 260 PATH_TYPE@243..244
261 PATH@[243; 244) 261 PATH@243..244
262 PATH_SEGMENT@[243; 244) 262 PATH_SEGMENT@243..244
263 NAME_REF@[243; 244) 263 NAME_REF@243..244
264 IDENT@[243; 244) "S" 264 IDENT@243..244 "S"
265 WHITESPACE@[244; 245) " " 265 WHITESPACE@244..245 " "
266 ITEM_LIST@[245; 519) 266 ITEM_LIST@245..519
267 L_CURLY@[245; 246) "{" 267 L_CURLY@245..246 "{"
268 WHITESPACE@[246; 252) "\n " 268 WHITESPACE@246..252 "\n "
269 FN_DEF@[252; 277) 269 FN_DEF@252..277
270 FN_KW@[252; 254) "fn" 270 FN_KW@252..254 "fn"
271 WHITESPACE@[254; 255) " " 271 WHITESPACE@254..255 " "
272 NAME@[255; 256) 272 NAME@255..256
273 IDENT@[255; 256) "f" 273 IDENT@255..256 "f"
274 PARAM_LIST@[256; 274) 274 PARAM_LIST@256..274
275 L_PAREN@[256; 257) "(" 275 L_PAREN@256..257 "("
276 ATTR@[257; 268) 276 ATTR@257..268
277 POUND@[257; 258) "#" 277 POUND@257..258 "#"
278 L_BRACK@[258; 259) "[" 278 L_BRACK@258..259 "["
279 PATH@[259; 267) 279 PATH@259..267
280 PATH_SEGMENT@[259; 267) 280 PATH_SEGMENT@259..267
281 NAME_REF@[259; 267) 281 NAME_REF@259..267
282 IDENT@[259; 267) "must_use" 282 IDENT@259..267 "must_use"
283 R_BRACK@[267; 268) "]" 283 R_BRACK@267..268 "]"
284 WHITESPACE@[268; 269) " " 284 WHITESPACE@268..269 " "
285 SELF_PARAM@[269; 273) 285 SELF_PARAM@269..273
286 SELF_KW@[269; 273) "self" 286 SELF_KW@269..273 "self"
287 R_PAREN@[273; 274) ")" 287 R_PAREN@273..274 ")"
288 WHITESPACE@[274; 275) " " 288 WHITESPACE@274..275 " "
289 BLOCK_EXPR@[275; 277) 289 BLOCK_EXPR@275..277
290 BLOCK@[275; 277) 290 BLOCK@275..277
291 L_CURLY@[275; 276) "{" 291 L_CURLY@275..276 "{"
292 R_CURLY@[276; 277) "}" 292 R_CURLY@276..277 "}"
293 WHITESPACE@[277; 283) "\n " 293 WHITESPACE@277..283 "\n "
294 FN_DEF@[283; 305) 294 FN_DEF@283..305
295 FN_KW@[283; 285) "fn" 295 FN_KW@283..285 "fn"
296 WHITESPACE@[285; 286) " " 296 WHITESPACE@285..286 " "
297 NAME@[286; 288) 297 NAME@286..288
298 IDENT@[286; 288) "g1" 298 IDENT@286..288 "g1"
299 PARAM_LIST@[288; 302) 299 PARAM_LIST@288..302
300 L_PAREN@[288; 289) "(" 300 L_PAREN@288..289 "("
301 ATTR@[289; 296) 301 ATTR@289..296
302 POUND@[289; 290) "#" 302 POUND@289..290 "#"
303 L_BRACK@[290; 291) "[" 303 L_BRACK@290..291 "["
304 PATH@[291; 295) 304 PATH@291..295
305 PATH_SEGMENT@[291; 295) 305 PATH_SEGMENT@291..295
306 NAME_REF@[291; 295) 306 NAME_REF@291..295
307 IDENT@[291; 295) "attr" 307 IDENT@291..295 "attr"
308 R_BRACK@[295; 296) "]" 308 R_BRACK@295..296 "]"
309 WHITESPACE@[296; 297) " " 309 WHITESPACE@296..297 " "
310 SELF_PARAM@[297; 301) 310 SELF_PARAM@297..301
311 SELF_KW@[297; 301) "self" 311 SELF_KW@297..301 "self"
312 R_PAREN@[301; 302) ")" 312 R_PAREN@301..302 ")"
313 WHITESPACE@[302; 303) " " 313 WHITESPACE@302..303 " "
314 BLOCK_EXPR@[303; 305) 314 BLOCK_EXPR@303..305
315 BLOCK@[303; 305) 315 BLOCK@303..305
316 L_CURLY@[303; 304) "{" 316 L_CURLY@303..304 "{"
317 R_CURLY@[304; 305) "}" 317 R_CURLY@304..305 "}"
318 WHITESPACE@[305; 311) "\n " 318 WHITESPACE@305..311 "\n "
319 FN_DEF@[311; 334) 319 FN_DEF@311..334
320 FN_KW@[311; 313) "fn" 320 FN_KW@311..313 "fn"
321 WHITESPACE@[313; 314) " " 321 WHITESPACE@313..314 " "
322 NAME@[314; 316) 322 NAME@314..316
323 IDENT@[314; 316) "g2" 323 IDENT@314..316 "g2"
324 PARAM_LIST@[316; 331) 324 PARAM_LIST@316..331
325 L_PAREN@[316; 317) "(" 325 L_PAREN@316..317 "("
326 ATTR@[317; 324) 326 ATTR@317..324
327 POUND@[317; 318) "#" 327 POUND@317..318 "#"
328 L_BRACK@[318; 319) "[" 328 L_BRACK@318..319 "["
329 PATH@[319; 323) 329 PATH@319..323
330 PATH_SEGMENT@[319; 323) 330 PATH_SEGMENT@319..323
331 NAME_REF@[319; 323) 331 NAME_REF@319..323
332 IDENT@[319; 323) "attr" 332 IDENT@319..323 "attr"
333 R_BRACK@[323; 324) "]" 333 R_BRACK@323..324 "]"
334 WHITESPACE@[324; 325) " " 334 WHITESPACE@324..325 " "
335 SELF_PARAM@[325; 330) 335 SELF_PARAM@325..330
336 AMP@[325; 326) "&" 336 AMP@325..326 "&"
337 SELF_KW@[326; 330) "self" 337 SELF_KW@326..330 "self"
338 R_PAREN@[330; 331) ")" 338 R_PAREN@330..331 ")"
339 WHITESPACE@[331; 332) " " 339 WHITESPACE@331..332 " "
340 BLOCK_EXPR@[332; 334) 340 BLOCK_EXPR@332..334
341 BLOCK@[332; 334) 341 BLOCK@332..334
342 L_CURLY@[332; 333) "{" 342 L_CURLY@332..333 "{"
343 R_CURLY@[333; 334) "}" 343 R_CURLY@333..334 "}"
344 WHITESPACE@[334; 340) "\n " 344 WHITESPACE@334..340 "\n "
345 FN_DEF@[340; 371) 345 FN_DEF@340..371
346 FN_KW@[340; 342) "fn" 346 FN_KW@340..342 "fn"
347 WHITESPACE@[342; 343) " " 347 WHITESPACE@342..343 " "
348 NAME@[343; 345) 348 NAME@343..345
349 IDENT@[343; 345) "g3" 349 IDENT@343..345 "g3"
350 TYPE_PARAM_LIST@[345; 349) 350 TYPE_PARAM_LIST@345..349
351 L_ANGLE@[345; 346) "<" 351 L_ANGLE@345..346 "<"
352 LIFETIME_PARAM@[346; 348) 352 LIFETIME_PARAM@346..348
353 LIFETIME@[346; 348) "\'a" 353 LIFETIME@346..348 "\'a"
354 R_ANGLE@[348; 349) ">" 354 R_ANGLE@348..349 ">"
355 PARAM_LIST@[349; 368) 355 PARAM_LIST@349..368
356 L_PAREN@[349; 350) "(" 356 L_PAREN@349..350 "("
357 ATTR@[350; 357) 357 ATTR@350..357
358 POUND@[350; 351) "#" 358 POUND@350..351 "#"
359 L_BRACK@[351; 352) "[" 359 L_BRACK@351..352 "["
360 PATH@[352; 356) 360 PATH@352..356
361 PATH_SEGMENT@[352; 356) 361 PATH_SEGMENT@352..356
362 NAME_REF@[352; 356) 362 NAME_REF@352..356
363 IDENT@[352; 356) "attr" 363 IDENT@352..356 "attr"
364 R_BRACK@[356; 357) "]" 364 R_BRACK@356..357 "]"
365 WHITESPACE@[357; 358) " " 365 WHITESPACE@357..358 " "
366 SELF_PARAM@[358; 367) 366 SELF_PARAM@358..367
367 AMP@[358; 359) "&" 367 AMP@358..359 "&"
368 MUT_KW@[359; 362) "mut" 368 MUT_KW@359..362 "mut"
369 WHITESPACE@[362; 363) " " 369 WHITESPACE@362..363 " "
370 SELF_KW@[363; 367) "self" 370 SELF_KW@363..367 "self"
371 R_PAREN@[367; 368) ")" 371 R_PAREN@367..368 ")"
372 WHITESPACE@[368; 369) " " 372 WHITESPACE@368..369 " "
373 BLOCK_EXPR@[369; 371) 373 BLOCK_EXPR@369..371
374 BLOCK@[369; 371) 374 BLOCK@369..371
375 L_CURLY@[369; 370) "{" 375 L_CURLY@369..370 "{"
376 R_CURLY@[370; 371) "}" 376 R_CURLY@370..371 "}"
377 WHITESPACE@[371; 377) "\n " 377 WHITESPACE@371..377 "\n "
378 FN_DEF@[377; 407) 378 FN_DEF@377..407
379 FN_KW@[377; 379) "fn" 379 FN_KW@377..379 "fn"
380 WHITESPACE@[379; 380) " " 380 WHITESPACE@379..380 " "
381 NAME@[380; 382) 381 NAME@380..382
382 IDENT@[380; 382) "g4" 382 IDENT@380..382 "g4"
383 TYPE_PARAM_LIST@[382; 386) 383 TYPE_PARAM_LIST@382..386
384 L_ANGLE@[382; 383) "<" 384 L_ANGLE@382..383 "<"
385 LIFETIME_PARAM@[383; 385) 385 LIFETIME_PARAM@383..385
386 LIFETIME@[383; 385) "\'a" 386 LIFETIME@383..385 "\'a"
387 R_ANGLE@[385; 386) ">" 387 R_ANGLE@385..386 ">"
388 PARAM_LIST@[386; 404) 388 PARAM_LIST@386..404
389 L_PAREN@[386; 387) "(" 389 L_PAREN@386..387 "("
390 ATTR@[387; 394) 390 ATTR@387..394
391 POUND@[387; 388) "#" 391 POUND@387..388 "#"
392 L_BRACK@[388; 389) "[" 392 L_BRACK@388..389 "["
393 PATH@[389; 393) 393 PATH@389..393
394 PATH_SEGMENT@[389; 393) 394 PATH_SEGMENT@389..393
395 NAME_REF@[389; 393) 395 NAME_REF@389..393
396 IDENT@[389; 393) "attr" 396 IDENT@389..393 "attr"
397 R_BRACK@[393; 394) "]" 397 R_BRACK@393..394 "]"
398 WHITESPACE@[394; 395) " " 398 WHITESPACE@394..395 " "
399 SELF_PARAM@[395; 403) 399 SELF_PARAM@395..403
400 AMP@[395; 396) "&" 400 AMP@395..396 "&"
401 LIFETIME@[396; 398) "\'a" 401 LIFETIME@396..398 "\'a"
402 WHITESPACE@[398; 399) " " 402 WHITESPACE@398..399 " "
403 SELF_KW@[399; 403) "self" 403 SELF_KW@399..403 "self"
404 R_PAREN@[403; 404) ")" 404 R_PAREN@403..404 ")"
405 WHITESPACE@[404; 405) " " 405 WHITESPACE@404..405 " "
406 BLOCK_EXPR@[405; 407) 406 BLOCK_EXPR@405..407
407 BLOCK@[405; 407) 407 BLOCK@405..407
408 L_CURLY@[405; 406) "{" 408 L_CURLY@405..406 "{"
409 R_CURLY@[406; 407) "}" 409 R_CURLY@406..407 "}"
410 WHITESPACE@[407; 413) "\n " 410 WHITESPACE@407..413 "\n "
411 FN_DEF@[413; 447) 411 FN_DEF@413..447
412 FN_KW@[413; 415) "fn" 412 FN_KW@413..415 "fn"
413 WHITESPACE@[415; 416) " " 413 WHITESPACE@415..416 " "
414 NAME@[416; 418) 414 NAME@416..418
415 IDENT@[416; 418) "g5" 415 IDENT@416..418 "g5"
416 TYPE_PARAM_LIST@[418; 422) 416 TYPE_PARAM_LIST@418..422
417 L_ANGLE@[418; 419) "<" 417 L_ANGLE@418..419 "<"
418 LIFETIME_PARAM@[419; 421) 418 LIFETIME_PARAM@419..421
419 LIFETIME@[419; 421) "\'a" 419 LIFETIME@419..421 "\'a"
420 R_ANGLE@[421; 422) ">" 420 R_ANGLE@421..422 ">"
421 PARAM_LIST@[422; 444) 421 PARAM_LIST@422..444
422 L_PAREN@[422; 423) "(" 422 L_PAREN@422..423 "("
423 ATTR@[423; 430) 423 ATTR@423..430
424 POUND@[423; 424) "#" 424 POUND@423..424 "#"
425 L_BRACK@[424; 425) "[" 425 L_BRACK@424..425 "["
426 PATH@[425; 429) 426 PATH@425..429
427 PATH_SEGMENT@[425; 429) 427 PATH_SEGMENT@425..429
428 NAME_REF@[425; 429) 428 NAME_REF@425..429
429 IDENT@[425; 429) "attr" 429 IDENT@425..429 "attr"
430 R_BRACK@[429; 430) "]" 430 R_BRACK@429..430 "]"
431 WHITESPACE@[430; 431) " " 431 WHITESPACE@430..431 " "
432 SELF_PARAM@[431; 443) 432 SELF_PARAM@431..443
433 AMP@[431; 432) "&" 433 AMP@431..432 "&"
434 LIFETIME@[432; 434) "\'a" 434 LIFETIME@432..434 "\'a"
435 WHITESPACE@[434; 435) " " 435 WHITESPACE@434..435 " "
436 MUT_KW@[435; 438) "mut" 436 MUT_KW@435..438 "mut"
437 WHITESPACE@[438; 439) " " 437 WHITESPACE@438..439 " "
438 SELF_KW@[439; 443) "self" 438 SELF_KW@439..443 "self"
439 R_PAREN@[443; 444) ")" 439 R_PAREN@443..444 ")"
440 WHITESPACE@[444; 445) " " 440 WHITESPACE@444..445 " "
441 BLOCK_EXPR@[445; 447) 441 BLOCK_EXPR@445..447
442 BLOCK@[445; 447) 442 BLOCK@445..447
443 L_CURLY@[445; 446) "{" 443 L_CURLY@445..446 "{"
444 R_CURLY@[446; 447) "}" 444 R_CURLY@446..447 "}"
445 WHITESPACE@[447; 453) "\n " 445 WHITESPACE@447..453 "\n "
446 FN_DEF@[453; 480) 446 FN_DEF@453..480
447 FN_KW@[453; 455) "fn" 447 FN_KW@453..455 "fn"
448 WHITESPACE@[455; 456) " " 448 WHITESPACE@455..456 " "
449 NAME@[456; 457) 449 NAME@456..457
450 IDENT@[456; 457) "c" 450 IDENT@456..457 "c"
451 PARAM_LIST@[457; 477) 451 PARAM_LIST@457..477
452 L_PAREN@[457; 458) "(" 452 L_PAREN@457..458 "("
453 ATTR@[458; 465) 453 ATTR@458..465
454 POUND@[458; 459) "#" 454 POUND@458..459 "#"
455 L_BRACK@[459; 460) "[" 455 L_BRACK@459..460 "["
456 PATH@[460; 464) 456 PATH@460..464
457 PATH_SEGMENT@[460; 464) 457 PATH_SEGMENT@460..464
458 NAME_REF@[460; 464) 458 NAME_REF@460..464
459 IDENT@[460; 464) "attr" 459 IDENT@460..464 "attr"
460 R_BRACK@[464; 465) "]" 460 R_BRACK@464..465 "]"
461 WHITESPACE@[465; 466) " " 461 WHITESPACE@465..466 " "
462 SELF_PARAM@[466; 476) 462 SELF_PARAM@466..476
463 SELF_KW@[466; 470) "self" 463 SELF_KW@466..470 "self"
464 COLON@[470; 471) ":" 464 COLON@470..471 ":"
465 WHITESPACE@[471; 472) " " 465 WHITESPACE@471..472 " "
466 PATH_TYPE@[472; 476) 466 PATH_TYPE@472..476
467 PATH@[472; 476) 467 PATH@472..476
468 PATH_SEGMENT@[472; 476) 468 PATH_SEGMENT@472..476
469 NAME_REF@[472; 476) 469 NAME_REF@472..476
470 IDENT@[472; 476) "Self" 470 IDENT@472..476 "Self"
471 R_PAREN@[476; 477) ")" 471 R_PAREN@476..477 ")"
472 WHITESPACE@[477; 478) " " 472 WHITESPACE@477..478 " "
473 BLOCK_EXPR@[478; 480) 473 BLOCK_EXPR@478..480
474 BLOCK@[478; 480) 474 BLOCK@478..480
475 L_CURLY@[478; 479) "{" 475 L_CURLY@478..479 "{"
476 R_CURLY@[479; 480) "}" 476 R_CURLY@479..480 "}"
477 WHITESPACE@[480; 486) "\n " 477 WHITESPACE@480..486 "\n "
478 FN_DEF@[486; 517) 478 FN_DEF@486..517
479 FN_KW@[486; 488) "fn" 479 FN_KW@486..488 "fn"
480 WHITESPACE@[488; 489) " " 480 WHITESPACE@488..489 " "
481 NAME@[489; 490) 481 NAME@489..490
482 IDENT@[489; 490) "d" 482 IDENT@489..490 "d"
483 PARAM_LIST@[490; 514) 483 PARAM_LIST@490..514
484 L_PAREN@[490; 491) "(" 484 L_PAREN@490..491 "("
485 ATTR@[491; 498) 485 ATTR@491..498
486 POUND@[491; 492) "#" 486 POUND@491..492 "#"
487 L_BRACK@[492; 493) "[" 487 L_BRACK@492..493 "["
488 PATH@[493; 497) 488 PATH@493..497
489 PATH_SEGMENT@[493; 497) 489 PATH_SEGMENT@493..497
490 NAME_REF@[493; 497) 490 NAME_REF@493..497
491 IDENT@[493; 497) "attr" 491 IDENT@493..497 "attr"
492 R_BRACK@[497; 498) "]" 492 R_BRACK@497..498 "]"
493 WHITESPACE@[498; 499) " " 493 WHITESPACE@498..499 " "
494 SELF_PARAM@[499; 513) 494 SELF_PARAM@499..513
495 SELF_KW@[499; 503) "self" 495 SELF_KW@499..503 "self"
496 COLON@[503; 504) ":" 496 COLON@503..504 ":"
497 WHITESPACE@[504; 505) " " 497 WHITESPACE@504..505 " "
498 PATH_TYPE@[505; 513) 498 PATH_TYPE@505..513
499 PATH@[505; 513) 499 PATH@505..513
500 PATH_SEGMENT@[505; 513) 500 PATH_SEGMENT@505..513
501 NAME_REF@[505; 507) 501 NAME_REF@505..507
502 IDENT@[505; 507) "Rc" 502 IDENT@505..507 "Rc"
503 TYPE_ARG_LIST@[507; 513) 503 TYPE_ARG_LIST@507..513
504 L_ANGLE@[507; 508) "<" 504 L_ANGLE@507..508 "<"
505 TYPE_ARG@[508; 512) 505 TYPE_ARG@508..512
506 PATH_TYPE@[508; 512) 506 PATH_TYPE@508..512
507 PATH@[508; 512) 507 PATH@508..512
508 PATH_SEGMENT@[508; 512) 508 PATH_SEGMENT@508..512
509 NAME_REF@[508; 512) 509 NAME_REF@508..512
510 IDENT@[508; 512) "Self" 510 IDENT@508..512 "Self"
511 R_ANGLE@[512; 513) ">" 511 R_ANGLE@512..513 ">"
512 R_PAREN@[513; 514) ")" 512 R_PAREN@513..514 ")"
513 WHITESPACE@[514; 515) " " 513 WHITESPACE@514..515 " "
514 BLOCK_EXPR@[515; 517) 514 BLOCK_EXPR@515..517
515 BLOCK@[515; 517) 515 BLOCK@515..517
516 L_CURLY@[515; 516) "{" 516 L_CURLY@515..516 "{"
517 R_CURLY@[516; 517) "}" 517 R_CURLY@516..517 "}"
518 WHITESPACE@[517; 518) "\n" 518 WHITESPACE@517..518 "\n"
519 R_CURLY@[518; 519) "}" 519 R_CURLY@518..519 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast b/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast
index 473966cd4..f376f86a7 100644
--- a/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast
@@ -1,81 +1,81 @@
1SOURCE_FILE@[0; 80) 1SOURCE_FILE@0..80
2 FN_DEF@[0; 79) 2 FN_DEF@0..79
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 79) 11 BLOCK_EXPR@9..79
12 BLOCK@[9; 79) 12 BLOCK@9..79
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 14) "\n " 14 WHITESPACE@10..14 "\n "
15 FOR_EXPR@[14; 77) 15 FOR_EXPR@14..77
16 FOR_KW@[14; 17) "for" 16 FOR_KW@14..17 "for"
17 WHITESPACE@[17; 18) " " 17 WHITESPACE@17..18 " "
18 BIND_PAT@[18; 20) 18 BIND_PAT@18..20
19 NAME@[18; 20) 19 NAME@18..20
20 IDENT@[18; 20) "_x" 20 IDENT@18..20 "_x"
21 WHITESPACE@[20; 21) " " 21 WHITESPACE@20..21 " "
22 IN_KW@[21; 23) "in" 22 IN_KW@21..23 "in"
23 WHITESPACE@[23; 24) " " 23 WHITESPACE@23..24 " "
24 RANGE_EXPR@[24; 56) 24 RANGE_EXPR@24..56
25 LITERAL@[24; 25) 25 LITERAL@24..25
26 INT_NUMBER@[24; 25) "0" 26 INT_NUMBER@24..25 "0"
27 WHITESPACE@[25; 26) " " 27 WHITESPACE@25..26 " "
28 DOT2@[26; 28) ".." 28 DOT2@26..28 ".."
29 WHITESPACE@[28; 29) " " 29 WHITESPACE@28..29 " "
30 METHOD_CALL_EXPR@[29; 56) 30 METHOD_CALL_EXPR@29..56
31 PAREN_EXPR@[29; 43) 31 PAREN_EXPR@29..43
32 L_PAREN@[29; 30) "(" 32 L_PAREN@29..30 "("
33 RANGE_EXPR@[30; 42) 33 RANGE_EXPR@30..42
34 LITERAL@[30; 31) 34 LITERAL@30..31
35 INT_NUMBER@[30; 31) "0" 35 INT_NUMBER@30..31 "0"
36 WHITESPACE@[31; 32) " " 36 WHITESPACE@31..32 " "
37 DOT2@[32; 34) ".." 37 DOT2@32..34 ".."
38 WHITESPACE@[34; 35) " " 38 WHITESPACE@34..35 " "
39 BLOCK_EXPR@[35; 42) 39 BLOCK_EXPR@35..42
40 BLOCK@[35; 42) 40 BLOCK@35..42
41 L_CURLY@[35; 36) "{" 41 L_CURLY@35..36 "{"
42 BIN_EXPR@[36; 41) 42 BIN_EXPR@36..41
43 LITERAL@[36; 37) 43 LITERAL@36..37
44 INT_NUMBER@[36; 37) "1" 44 INT_NUMBER@36..37 "1"
45 WHITESPACE@[37; 38) " " 45 WHITESPACE@37..38 " "
46 PLUS@[38; 39) "+" 46 PLUS@38..39 "+"
47 WHITESPACE@[39; 40) " " 47 WHITESPACE@39..40 " "
48 LITERAL@[40; 41) 48 LITERAL@40..41
49 INT_NUMBER@[40; 41) "2" 49 INT_NUMBER@40..41 "2"
50 R_CURLY@[41; 42) "}" 50 R_CURLY@41..42 "}"
51 R_PAREN@[42; 43) ")" 51 R_PAREN@42..43 ")"
52 DOT@[43; 44) "." 52 DOT@43..44 "."
53 NAME_REF@[44; 47) 53 NAME_REF@44..47
54 IDENT@[44; 47) "sum" 54 IDENT@44..47 "sum"
55 TYPE_ARG_LIST@[47; 54) 55 TYPE_ARG_LIST@47..54
56 COLON2@[47; 49) "::" 56 COLON2@47..49 "::"
57 L_ANGLE@[49; 50) "<" 57 L_ANGLE@49..50 "<"
58 TYPE_ARG@[50; 53) 58 TYPE_ARG@50..53
59 PATH_TYPE@[50; 53) 59 PATH_TYPE@50..53
60 PATH@[50; 53) 60 PATH@50..53
61 PATH_SEGMENT@[50; 53) 61 PATH_SEGMENT@50..53
62 NAME_REF@[50; 53) 62 NAME_REF@50..53
63 IDENT@[50; 53) "u32" 63 IDENT@50..53 "u32"
64 R_ANGLE@[53; 54) ">" 64 R_ANGLE@53..54 ">"
65 ARG_LIST@[54; 56) 65 ARG_LIST@54..56
66 L_PAREN@[54; 55) "(" 66 L_PAREN@54..55 "("
67 R_PAREN@[55; 56) ")" 67 R_PAREN@55..56 ")"
68 WHITESPACE@[56; 57) " " 68 WHITESPACE@56..57 " "
69 BLOCK_EXPR@[57; 77) 69 BLOCK_EXPR@57..77
70 BLOCK@[57; 77) 70 BLOCK@57..77
71 L_CURLY@[57; 58) "{" 71 L_CURLY@57..58 "{"
72 WHITESPACE@[58; 66) "\n " 72 WHITESPACE@58..66 "\n "
73 EXPR_STMT@[66; 72) 73 EXPR_STMT@66..72
74 BREAK_EXPR@[66; 71) 74 BREAK_EXPR@66..71
75 BREAK_KW@[66; 71) "break" 75 BREAK_KW@66..71 "break"
76 SEMICOLON@[71; 72) ";" 76 SEMICOLON@71..72 ";"
77 WHITESPACE@[72; 76) "\n " 77 WHITESPACE@72..76 "\n "
78 R_CURLY@[76; 77) "}" 78 R_CURLY@76..77 "}"
79 WHITESPACE@[77; 78) "\n" 79 WHITESPACE@77..78 "\n"
80 R_CURLY@[78; 79) "}" 80 R_CURLY@78..79 "}"
81 WHITESPACE@[79; 80) "\n" 81 WHITESPACE@79..80 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast b/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
index 60a491853..be60f7a8e 100644
--- a/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@0..65
2 MACRO_CALL@[0; 64) 2 MACRO_CALL@0..64
3 COMMENT@[0; 13) "/// Some docs" 3 COMMENT@0..13 "/// Some docs"
4 WHITESPACE@[13; 14) "\n" 4 WHITESPACE@13..14 "\n"
5 ATTR@[14; 29) 5 ATTR@14..29
6 POUND@[14; 15) "#" 6 POUND@14..15 "#"
7 L_BRACK@[15; 16) "[" 7 L_BRACK@15..16 "["
8 PATH@[16; 28) 8 PATH@16..28
9 PATH_SEGMENT@[16; 28) 9 PATH_SEGMENT@16..28
10 NAME_REF@[16; 28) 10 NAME_REF@16..28
11 IDENT@[16; 28) "macro_export" 11 IDENT@16..28 "macro_export"
12 R_BRACK@[28; 29) "]" 12 R_BRACK@28..29 "]"
13 WHITESPACE@[29; 30) "\n" 13 WHITESPACE@29..30 "\n"
14 PATH@[30; 41) 14 PATH@30..41
15 PATH_SEGMENT@[30; 41) 15 PATH_SEGMENT@30..41
16 NAME_REF@[30; 41) 16 NAME_REF@30..41
17 IDENT@[30; 41) "macro_rules" 17 IDENT@30..41 "macro_rules"
18 BANG@[41; 42) "!" 18 BANG@41..42 "!"
19 WHITESPACE@[42; 43) " " 19 WHITESPACE@42..43 " "
20 NAME@[43; 46) 20 NAME@43..46
21 IDENT@[43; 46) "foo" 21 IDENT@43..46 "foo"
22 WHITESPACE@[46; 47) " " 22 WHITESPACE@46..47 " "
23 TOKEN_TREE@[47; 64) 23 TOKEN_TREE@47..64
24 L_CURLY@[47; 48) "{" 24 L_CURLY@47..48 "{"
25 WHITESPACE@[48; 53) "\n " 25 WHITESPACE@48..53 "\n "
26 TOKEN_TREE@[53; 55) 26 TOKEN_TREE@53..55
27 L_PAREN@[53; 54) "(" 27 L_PAREN@53..54 "("
28 R_PAREN@[54; 55) ")" 28 R_PAREN@54..55 ")"
29 WHITESPACE@[55; 56) " " 29 WHITESPACE@55..56 " "
30 EQ@[56; 57) "=" 30 EQ@56..57 "="
31 R_ANGLE@[57; 58) ">" 31 R_ANGLE@57..58 ">"
32 WHITESPACE@[58; 59) " " 32 WHITESPACE@58..59 " "
33 TOKEN_TREE@[59; 61) 33 TOKEN_TREE@59..61
34 L_CURLY@[59; 60) "{" 34 L_CURLY@59..60 "{"
35 R_CURLY@[60; 61) "}" 35 R_CURLY@60..61 "}"
36 SEMICOLON@[61; 62) ";" 36 SEMICOLON@61..62 ";"
37 WHITESPACE@[62; 63) "\n" 37 WHITESPACE@62..63 "\n"
38 R_CURLY@[63; 64) "}" 38 R_CURLY@63..64 "}"
39 WHITESPACE@[64; 65) "\n" 39 WHITESPACE@64..65 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast b/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast
index fabf88e8f..f20819bd2 100644
--- a/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast
@@ -1,126 +1,126 @@
1SOURCE_FILE@[0; 88) 1SOURCE_FILE@0..88
2 FN_DEF@[0; 26) 2 FN_DEF@0..26
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 RET_TYPE@[7; 23) 11 RET_TYPE@7..23
12 THIN_ARROW@[7; 9) "->" 12 THIN_ARROW@7..9 "->"
13 WHITESPACE@[9; 10) " " 13 WHITESPACE@9..10 " "
14 PATH_TYPE@[10; 23) 14 PATH_TYPE@10..23
15 PATH@[10; 23) 15 PATH@10..23
16 PATH_SEGMENT@[10; 23) 16 PATH_SEGMENT@10..23
17 NAME_REF@[10; 13) 17 NAME_REF@10..13
18 IDENT@[10; 13) "Foo" 18 IDENT@10..13 "Foo"
19 TYPE_ARG_LIST@[13; 23) 19 TYPE_ARG_LIST@13..23
20 L_ANGLE@[13; 14) "<" 20 L_ANGLE@13..14 "<"
21 TYPE_ARG@[14; 22) 21 TYPE_ARG@14..22
22 PATH_TYPE@[14; 22) 22 PATH_TYPE@14..22
23 PATH@[14; 22) 23 PATH@14..22
24 PATH@[14; 17) 24 PATH@14..17
25 PATH_SEGMENT@[14; 17) 25 PATH_SEGMENT@14..17
26 NAME_REF@[14; 17) 26 NAME_REF@14..17
27 IDENT@[14; 17) "bar" 27 IDENT@14..17 "bar"
28 COLON2@[17; 19) "::" 28 COLON2@17..19 "::"
29 PATH_SEGMENT@[19; 22) 29 PATH_SEGMENT@19..22
30 NAME_REF@[19; 22) 30 NAME_REF@19..22
31 IDENT@[19; 22) "Baz" 31 IDENT@19..22 "Baz"
32 R_ANGLE@[22; 23) ">" 32 R_ANGLE@22..23 ">"
33 WHITESPACE@[23; 24) " " 33 WHITESPACE@23..24 " "
34 BLOCK_EXPR@[24; 26) 34 BLOCK_EXPR@24..26
35 BLOCK@[24; 26) 35 BLOCK@24..26
36 L_CURLY@[24; 25) "{" 36 L_CURLY@24..25 "{"
37 R_CURLY@[25; 26) "}" 37 R_CURLY@25..26 "}"
38 WHITESPACE@[26; 28) "\n\n" 38 WHITESPACE@26..28 "\n\n"
39 FN_DEF@[28; 56) 39 FN_DEF@28..56
40 FN_KW@[28; 30) "fn" 40 FN_KW@28..30 "fn"
41 WHITESPACE@[30; 31) " " 41 WHITESPACE@30..31 " "
42 NAME@[31; 32) 42 NAME@31..32
43 IDENT@[31; 32) "b" 43 IDENT@31..32 "b"
44 PARAM_LIST@[32; 53) 44 PARAM_LIST@32..53
45 L_PAREN@[32; 33) "(" 45 L_PAREN@32..33 "("
46 PARAM@[33; 52) 46 PARAM@33..52
47 PLACEHOLDER_PAT@[33; 34) 47 PLACEHOLDER_PAT@33..34
48 UNDERSCORE@[33; 34) "_" 48 UNDERSCORE@33..34 "_"
49 COLON@[34; 35) ":" 49 COLON@34..35 ":"
50 WHITESPACE@[35; 36) " " 50 WHITESPACE@35..36 " "
51 IMPL_TRAIT_TYPE@[36; 52) 51 IMPL_TRAIT_TYPE@36..52
52 IMPL_KW@[36; 40) "impl" 52 IMPL_KW@36..40 "impl"
53 WHITESPACE@[40; 41) " " 53 WHITESPACE@40..41 " "
54 TYPE_BOUND_LIST@[41; 52) 54 TYPE_BOUND_LIST@41..52
55 TYPE_BOUND@[41; 52) 55 TYPE_BOUND@41..52
56 PATH_TYPE@[41; 52) 56 PATH_TYPE@41..52
57 PATH@[41; 52) 57 PATH@41..52
58 PATH_SEGMENT@[41; 52) 58 PATH_SEGMENT@41..52
59 NAME_REF@[41; 46) 59 NAME_REF@41..46
60 IDENT@[41; 46) "FnMut" 60 IDENT@41..46 "FnMut"
61 PARAM_LIST@[46; 52) 61 PARAM_LIST@46..52
62 L_PAREN@[46; 47) "(" 62 L_PAREN@46..47 "("
63 PARAM@[47; 51) 63 PARAM@47..51
64 PATH_TYPE@[47; 51) 64 PATH_TYPE@47..51
65 PATH@[47; 51) 65 PATH@47..51
66 PATH@[47; 48) 66 PATH@47..48
67 PATH_SEGMENT@[47; 48) 67 PATH_SEGMENT@47..48
68 NAME_REF@[47; 48) 68 NAME_REF@47..48
69 IDENT@[47; 48) "x" 69 IDENT@47..48 "x"
70 COLON2@[48; 50) "::" 70 COLON2@48..50 "::"
71 PATH_SEGMENT@[50; 51) 71 PATH_SEGMENT@50..51
72 NAME_REF@[50; 51) 72 NAME_REF@50..51
73 IDENT@[50; 51) "Y" 73 IDENT@50..51 "Y"
74 R_PAREN@[51; 52) ")" 74 R_PAREN@51..52 ")"
75 R_PAREN@[52; 53) ")" 75 R_PAREN@52..53 ")"
76 WHITESPACE@[53; 54) " " 76 WHITESPACE@53..54 " "
77 BLOCK_EXPR@[54; 56) 77 BLOCK_EXPR@54..56
78 BLOCK@[54; 56) 78 BLOCK@54..56
79 L_CURLY@[54; 55) "{" 79 L_CURLY@54..55 "{"
80 R_CURLY@[55; 56) "}" 80 R_CURLY@55..56 "}"
81 WHITESPACE@[56; 58) "\n\n" 81 WHITESPACE@56..58 "\n\n"
82 FN_DEF@[58; 87) 82 FN_DEF@58..87
83 FN_KW@[58; 60) "fn" 83 FN_KW@58..60 "fn"
84 WHITESPACE@[60; 61) " " 84 WHITESPACE@60..61 " "
85 NAME@[61; 62) 85 NAME@61..62
86 IDENT@[61; 62) "c" 86 IDENT@61..62 "c"
87 PARAM_LIST@[62; 84) 87 PARAM_LIST@62..84
88 L_PAREN@[62; 63) "(" 88 L_PAREN@62..63 "("
89 PARAM@[63; 83) 89 PARAM@63..83
90 PLACEHOLDER_PAT@[63; 64) 90 PLACEHOLDER_PAT@63..64
91 UNDERSCORE@[63; 64) "_" 91 UNDERSCORE@63..64 "_"
92 COLON@[64; 65) ":" 92 COLON@64..65 ":"
93 WHITESPACE@[65; 66) " " 93 WHITESPACE@65..66 " "
94 IMPL_TRAIT_TYPE@[66; 83) 94 IMPL_TRAIT_TYPE@66..83
95 IMPL_KW@[66; 70) "impl" 95 IMPL_KW@66..70 "impl"
96 WHITESPACE@[70; 71) " " 96 WHITESPACE@70..71 " "
97 TYPE_BOUND_LIST@[71; 83) 97 TYPE_BOUND_LIST@71..83
98 TYPE_BOUND@[71; 83) 98 TYPE_BOUND@71..83
99 PATH_TYPE@[71; 83) 99 PATH_TYPE@71..83
100 PATH@[71; 83) 100 PATH@71..83
101 PATH_SEGMENT@[71; 83) 101 PATH_SEGMENT@71..83
102 NAME_REF@[71; 76) 102 NAME_REF@71..76
103 IDENT@[71; 76) "FnMut" 103 IDENT@71..76 "FnMut"
104 PARAM_LIST@[76; 83) 104 PARAM_LIST@76..83
105 L_PAREN@[76; 77) "(" 105 L_PAREN@76..77 "("
106 PARAM@[77; 82) 106 PARAM@77..82
107 REFERENCE_TYPE@[77; 82) 107 REFERENCE_TYPE@77..82
108 AMP@[77; 78) "&" 108 AMP@77..78 "&"
109 PATH_TYPE@[78; 82) 109 PATH_TYPE@78..82
110 PATH@[78; 82) 110 PATH@78..82
111 PATH@[78; 79) 111 PATH@78..79
112 PATH_SEGMENT@[78; 79) 112 PATH_SEGMENT@78..79
113 NAME_REF@[78; 79) 113 NAME_REF@78..79
114 IDENT@[78; 79) "x" 114 IDENT@78..79 "x"
115 COLON2@[79; 81) "::" 115 COLON2@79..81 "::"
116 PATH_SEGMENT@[81; 82) 116 PATH_SEGMENT@81..82
117 NAME_REF@[81; 82) 117 NAME_REF@81..82
118 IDENT@[81; 82) "Y" 118 IDENT@81..82 "Y"
119 R_PAREN@[82; 83) ")" 119 R_PAREN@82..83 ")"
120 R_PAREN@[83; 84) ")" 120 R_PAREN@83..84 ")"
121 WHITESPACE@[84; 85) " " 121 WHITESPACE@84..85 " "
122 BLOCK_EXPR@[85; 87) 122 BLOCK_EXPR@85..87
123 BLOCK@[85; 87) 123 BLOCK@85..87
124 L_CURLY@[85; 86) "{" 124 L_CURLY@85..86 "{"
125 R_CURLY@[86; 87) "}" 125 R_CURLY@86..87 "}"
126 WHITESPACE@[87; 88) "\n" 126 WHITESPACE@87..88 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast b/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast
index 6ac3f1458..dcdb3cc6d 100644
--- a/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 49) 1SOURCE_FILE@0..49
2 TYPE_ALIAS_DEF@[0; 12) 2 TYPE_ALIAS_DEF@0..12
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "X" 6 IDENT@5..6 "X"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 TUPLE_TYPE@[9; 11) 10 TUPLE_TYPE@9..11
11 L_PAREN@[9; 10) "(" 11 L_PAREN@9..10 "("
12 R_PAREN@[10; 11) ")" 12 R_PAREN@10..11 ")"
13 SEMICOLON@[11; 12) ";" 13 SEMICOLON@11..12 ";"
14 WHITESPACE@[12; 14) "\n\n" 14 WHITESPACE@12..14 "\n\n"
15 FN_DEF@[14; 48) 15 FN_DEF@14..48
16 FN_KW@[14; 16) "fn" 16 FN_KW@14..16 "fn"
17 WHITESPACE@[16; 17) " " 17 WHITESPACE@16..17 " "
18 NAME@[17; 21) 18 NAME@17..21
19 IDENT@[17; 21) "main" 19 IDENT@17..21 "main"
20 PARAM_LIST@[21; 23) 20 PARAM_LIST@21..23
21 L_PAREN@[21; 22) "(" 21 L_PAREN@21..22 "("
22 R_PAREN@[22; 23) ")" 22 R_PAREN@22..23 ")"
23 WHITESPACE@[23; 24) " " 23 WHITESPACE@23..24 " "
24 BLOCK_EXPR@[24; 48) 24 BLOCK_EXPR@24..48
25 BLOCK@[24; 48) 25 BLOCK@24..48
26 L_CURLY@[24; 25) "{" 26 L_CURLY@24..25 "{"
27 WHITESPACE@[25; 30) "\n " 27 WHITESPACE@25..30 "\n "
28 LET_STMT@[30; 46) 28 LET_STMT@30..46
29 LET_KW@[30; 33) "let" 29 LET_KW@30..33 "let"
30 WHITESPACE@[33; 34) " " 30 WHITESPACE@33..34 " "
31 TUPLE_PAT@[34; 36) 31 TUPLE_PAT@34..36
32 L_PAREN@[34; 35) "(" 32 L_PAREN@34..35 "("
33 R_PAREN@[35; 36) ")" 33 R_PAREN@35..36 ")"
34 COLON@[36; 37) ":" 34 COLON@36..37 ":"
35 PATH_TYPE@[37; 40) 35 PATH_TYPE@37..40
36 PATH@[37; 40) 36 PATH@37..40
37 PATH_SEGMENT@[37; 40) 37 PATH_SEGMENT@37..40
38 COLON2@[37; 39) "::" 38 COLON2@37..39 "::"
39 NAME_REF@[39; 40) 39 NAME_REF@39..40
40 IDENT@[39; 40) "X" 40 IDENT@39..40 "X"
41 WHITESPACE@[40; 41) " " 41 WHITESPACE@40..41 " "
42 EQ@[41; 42) "=" 42 EQ@41..42 "="
43 WHITESPACE@[42; 43) " " 43 WHITESPACE@42..43 " "
44 TUPLE_EXPR@[43; 45) 44 TUPLE_EXPR@43..45
45 L_PAREN@[43; 44) "(" 45 L_PAREN@43..44 "("
46 R_PAREN@[44; 45) ")" 46 R_PAREN@44..45 ")"
47 SEMICOLON@[45; 46) ";" 47 SEMICOLON@45..46 ";"
48 WHITESPACE@[46; 47) "\n" 48 WHITESPACE@46..47 "\n"
49 R_CURLY@[47; 48) "}" 49 R_CURLY@47..48 "}"
50 WHITESPACE@[48; 49) "\n" 50 WHITESPACE@48..49 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast
index 4a4ad84ca..6176a9620 100644
--- a/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast
@@ -1,66 +1,66 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@0..71
2 FN_DEF@[0; 70) 2 FN_DEF@0..70
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 70) 11 BLOCK_EXPR@10..70
12 BLOCK@[10; 70) 12 BLOCK@10..70
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 IF_EXPR@[16; 68) 15 IF_EXPR@16..68
16 IF_KW@[16; 18) "if" 16 IF_KW@16..18 "if"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 CONDITION@[19; 65) 18 CONDITION@19..65
19 BIN_EXPR@[19; 65) 19 BIN_EXPR@19..65
20 CAST_EXPR@[19; 40) 20 CAST_EXPR@19..40
21 METHOD_CALL_EXPR@[19; 33) 21 METHOD_CALL_EXPR@19..33
22 LITERAL@[19; 25) 22 LITERAL@19..25
23 FLOAT_NUMBER@[19; 25) "1.0f32" 23 FLOAT_NUMBER@19..25 "1.0f32"
24 DOT@[25; 26) "." 24 DOT@25..26 "."
25 NAME_REF@[26; 31) 25 NAME_REF@26..31
26 IDENT@[26; 31) "floor" 26 IDENT@26..31 "floor"
27 ARG_LIST@[31; 33) 27 ARG_LIST@31..33
28 L_PAREN@[31; 32) "(" 28 L_PAREN@31..32 "("
29 R_PAREN@[32; 33) ")" 29 R_PAREN@32..33 ")"
30 WHITESPACE@[33; 34) " " 30 WHITESPACE@33..34 " "
31 AS_KW@[34; 36) "as" 31 AS_KW@34..36 "as"
32 WHITESPACE@[36; 37) " " 32 WHITESPACE@36..37 " "
33 PATH_TYPE@[37; 40) 33 PATH_TYPE@37..40
34 PATH@[37; 40) 34 PATH@37..40
35 PATH_SEGMENT@[37; 40) 35 PATH_SEGMENT@37..40
36 NAME_REF@[37; 40) 36 NAME_REF@37..40
37 IDENT@[37; 40) "i64" 37 IDENT@37..40 "i64"
38 WHITESPACE@[40; 41) " " 38 WHITESPACE@40..41 " "
39 NEQ@[41; 43) "!=" 39 NEQ@41..43 "!="
40 WHITESPACE@[43; 44) " " 40 WHITESPACE@43..44 " "
41 CAST_EXPR@[44; 65) 41 CAST_EXPR@44..65
42 METHOD_CALL_EXPR@[44; 58) 42 METHOD_CALL_EXPR@44..58
43 LITERAL@[44; 50) 43 LITERAL@44..50
44 FLOAT_NUMBER@[44; 50) "1.0f32" 44 FLOAT_NUMBER@44..50 "1.0f32"
45 DOT@[50; 51) "." 45 DOT@50..51 "."
46 NAME_REF@[51; 56) 46 NAME_REF@51..56
47 IDENT@[51; 56) "floor" 47 IDENT@51..56 "floor"
48 ARG_LIST@[56; 58) 48 ARG_LIST@56..58
49 L_PAREN@[56; 57) "(" 49 L_PAREN@56..57 "("
50 R_PAREN@[57; 58) ")" 50 R_PAREN@57..58 ")"
51 WHITESPACE@[58; 59) " " 51 WHITESPACE@58..59 " "
52 AS_KW@[59; 61) "as" 52 AS_KW@59..61 "as"
53 WHITESPACE@[61; 62) " " 53 WHITESPACE@61..62 " "
54 PATH_TYPE@[62; 65) 54 PATH_TYPE@62..65
55 PATH@[62; 65) 55 PATH@62..65
56 PATH_SEGMENT@[62; 65) 56 PATH_SEGMENT@62..65
57 NAME_REF@[62; 65) 57 NAME_REF@62..65
58 IDENT@[62; 65) "i64" 58 IDENT@62..65 "i64"
59 WHITESPACE@[65; 66) " " 59 WHITESPACE@65..66 " "
60 BLOCK_EXPR@[66; 68) 60 BLOCK_EXPR@66..68
61 BLOCK@[66; 68) 61 BLOCK@66..68
62 L_CURLY@[66; 67) "{" 62 L_CURLY@66..67 "{"
63 R_CURLY@[67; 68) "}" 63 R_CURLY@67..68 "}"
64 WHITESPACE@[68; 69) "\n" 64 WHITESPACE@68..69 "\n"
65 R_CURLY@[69; 70) "}" 65 R_CURLY@69..70 "}"
66 WHITESPACE@[70; 71) "\n" 66 WHITESPACE@70..71 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast b/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast
index 2c07bde43..342fe23f5 100644
--- a/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 50) 1SOURCE_FILE@0..50
2 FN_DEF@[0; 17) 2 FN_DEF@0..17
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 14) 7 PARAM_LIST@6..14
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 13) 9 PARAM@7..13
10 BIND_PAT@[7; 8) 10 BIND_PAT@7..8
11 NAME@[7; 8) 11 NAME@7..8
12 IDENT@[7; 8) "x" 12 IDENT@7..8 "x"
13 COLON@[8; 9) ":" 13 COLON@8..9 ":"
14 WHITESPACE@[9; 10) " " 14 WHITESPACE@9..10 " "
15 PATH_TYPE@[10; 13) 15 PATH_TYPE@10..13
16 PATH@[10; 13) 16 PATH@10..13
17 PATH_SEGMENT@[10; 13) 17 PATH_SEGMENT@10..13
18 NAME_REF@[10; 13) 18 NAME_REF@10..13
19 IDENT@[10; 13) "i32" 19 IDENT@10..13 "i32"
20 R_PAREN@[13; 14) ")" 20 R_PAREN@13..14 ")"
21 WHITESPACE@[14; 15) " " 21 WHITESPACE@14..15 " "
22 BLOCK_EXPR@[15; 17) 22 BLOCK_EXPR@15..17
23 BLOCK@[15; 17) 23 BLOCK@15..17
24 L_CURLY@[15; 16) "{" 24 L_CURLY@15..16 "{"
25 R_CURLY@[16; 17) "}" 25 R_CURLY@16..17 "}"
26 WHITESPACE@[17; 19) "\n\n" 26 WHITESPACE@17..19 "\n\n"
27 FN_DEF@[19; 50) 27 FN_DEF@19..50
28 FN_KW@[19; 21) "fn" 28 FN_KW@19..21 "fn"
29 WHITESPACE@[21; 22) " " 29 WHITESPACE@21..22 " "
30 NAME@[22; 26) 30 NAME@22..26
31 IDENT@[22; 26) "main" 31 IDENT@22..26 "main"
32 PARAM_LIST@[26; 28) 32 PARAM_LIST@26..28
33 L_PAREN@[26; 27) "(" 33 L_PAREN@26..27 "("
34 R_PAREN@[27; 28) ")" 34 R_PAREN@27..28 ")"
35 WHITESPACE@[28; 29) " " 35 WHITESPACE@28..29 " "
36 BLOCK_EXPR@[29; 50) 36 BLOCK_EXPR@29..50
37 BLOCK@[29; 50) 37 BLOCK@29..50
38 L_CURLY@[29; 30) "{" 38 L_CURLY@29..30 "{"
39 WHITESPACE@[30; 35) "\n " 39 WHITESPACE@30..35 "\n "
40 EXPR_STMT@[35; 48) 40 EXPR_STMT@35..48
41 CALL_EXPR@[35; 47) 41 CALL_EXPR@35..47
42 PATH_EXPR@[35; 38) 42 PATH_EXPR@35..38
43 PATH@[35; 38) 43 PATH@35..38
44 PATH_SEGMENT@[35; 38) 44 PATH_SEGMENT@35..38
45 NAME_REF@[35; 38) 45 NAME_REF@35..38
46 IDENT@[35; 38) "foo" 46 IDENT@35..38 "foo"
47 ARG_LIST@[38; 47) 47 ARG_LIST@38..47
48 L_PAREN@[38; 39) "(" 48 L_PAREN@38..39 "("
49 LOOP_EXPR@[39; 46) 49 LOOP_EXPR@39..46
50 LOOP_KW@[39; 43) "loop" 50 LOOP_KW@39..43 "loop"
51 WHITESPACE@[43; 44) " " 51 WHITESPACE@43..44 " "
52 BLOCK_EXPR@[44; 46) 52 BLOCK_EXPR@44..46
53 BLOCK@[44; 46) 53 BLOCK@44..46
54 L_CURLY@[44; 45) "{" 54 L_CURLY@44..45 "{"
55 R_CURLY@[45; 46) "}" 55 R_CURLY@45..46 "}"
56 R_PAREN@[46; 47) ")" 56 R_PAREN@46..47 ")"
57 SEMICOLON@[47; 48) ";" 57 SEMICOLON@47..48 ";"
58 WHITESPACE@[48; 49) "\n" 58 WHITESPACE@48..49 "\n"
59 R_CURLY@[49; 50) "}" 59 R_CURLY@49..50 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast b/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast
index 9de9efbad..360b6e044 100644
--- a/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast
@@ -1,97 +1,97 @@
1SOURCE_FILE@[0; 79) 1SOURCE_FILE@0..79
2 FN_DEF@[0; 78) 2 FN_DEF@0..78
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 78) 11 BLOCK_EXPR@9..78
12 BLOCK@[9; 78) 12 BLOCK@9..78
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 27) 15 EXPR_STMT@15..27
16 BIN_EXPR@[15; 26) 16 BIN_EXPR@15..26
17 BIN_EXPR@[15; 22) 17 BIN_EXPR@15..22
18 LITERAL@[15; 16) 18 LITERAL@15..16
19 INT_NUMBER@[15; 16) "1" 19 INT_NUMBER@15..16 "1"
20 WHITESPACE@[16; 17) " " 20 WHITESPACE@16..17 " "
21 PLUS@[17; 18) "+" 21 PLUS@17..18 "+"
22 WHITESPACE@[18; 19) " " 22 WHITESPACE@18..19 " "
23 PREFIX_EXPR@[19; 22) 23 PREFIX_EXPR@19..22
24 STAR@[19; 20) "*" 24 STAR@19..20 "*"
25 REF_EXPR@[20; 22) 25 REF_EXPR@20..22
26 AMP@[20; 21) "&" 26 AMP@20..21 "&"
27 LITERAL@[21; 22) 27 LITERAL@21..22
28 INT_NUMBER@[21; 22) "2" 28 INT_NUMBER@21..22 "2"
29 WHITESPACE@[22; 23) " " 29 WHITESPACE@22..23 " "
30 PLUS@[23; 24) "+" 30 PLUS@23..24 "+"
31 WHITESPACE@[24; 25) " " 31 WHITESPACE@24..25 " "
32 LITERAL@[25; 26) 32 LITERAL@25..26
33 INT_NUMBER@[25; 26) "3" 33 INT_NUMBER@25..26 "3"
34 SEMICOLON@[26; 27) ";" 34 SEMICOLON@26..27 ";"
35 WHITESPACE@[27; 32) "\n " 35 WHITESPACE@27..32 "\n "
36 EXPR_STMT@[32; 43) 36 EXPR_STMT@32..43
37 CAST_EXPR@[32; 42) 37 CAST_EXPR@32..42
38 PREFIX_EXPR@[32; 35) 38 PREFIX_EXPR@32..35
39 STAR@[32; 33) "*" 39 STAR@32..33 "*"
40 REF_EXPR@[33; 35) 40 REF_EXPR@33..35
41 AMP@[33; 34) "&" 41 AMP@33..34 "&"
42 LITERAL@[34; 35) 42 LITERAL@34..35
43 INT_NUMBER@[34; 35) "1" 43 INT_NUMBER@34..35 "1"
44 WHITESPACE@[35; 36) " " 44 WHITESPACE@35..36 " "
45 AS_KW@[36; 38) "as" 45 AS_KW@36..38 "as"
46 WHITESPACE@[38; 39) " " 46 WHITESPACE@38..39 " "
47 PATH_TYPE@[39; 42) 47 PATH_TYPE@39..42
48 PATH@[39; 42) 48 PATH@39..42
49 PATH_SEGMENT@[39; 42) 49 PATH_SEGMENT@39..42
50 NAME_REF@[39; 42) 50 NAME_REF@39..42
51 IDENT@[39; 42) "u64" 51 IDENT@39..42 "u64"
52 SEMICOLON@[42; 43) ";" 52 SEMICOLON@42..43 ";"
53 WHITESPACE@[43; 48) "\n " 53 WHITESPACE@43..48 "\n "
54 EXPR_STMT@[48; 54) 54 EXPR_STMT@48..54
55 PREFIX_EXPR@[48; 53) 55 PREFIX_EXPR@48..53
56 STAR@[48; 49) "*" 56 STAR@48..49 "*"
57 CALL_EXPR@[49; 53) 57 CALL_EXPR@49..53
58 PATH_EXPR@[49; 50) 58 PATH_EXPR@49..50
59 PATH@[49; 50) 59 PATH@49..50
60 PATH_SEGMENT@[49; 50) 60 PATH_SEGMENT@49..50
61 NAME_REF@[49; 50) 61 NAME_REF@49..50
62 IDENT@[49; 50) "x" 62 IDENT@49..50 "x"
63 ARG_LIST@[50; 53) 63 ARG_LIST@50..53
64 L_PAREN@[50; 51) "(" 64 L_PAREN@50..51 "("
65 LITERAL@[51; 52) 65 LITERAL@51..52
66 INT_NUMBER@[51; 52) "1" 66 INT_NUMBER@51..52 "1"
67 R_PAREN@[52; 53) ")" 67 R_PAREN@52..53 ")"
68 SEMICOLON@[53; 54) ";" 68 SEMICOLON@53..54 ";"
69 WHITESPACE@[54; 59) "\n " 69 WHITESPACE@54..59 "\n "
70 EXPR_STMT@[59; 65) 70 EXPR_STMT@59..65
71 REF_EXPR@[59; 64) 71 REF_EXPR@59..64
72 AMP@[59; 60) "&" 72 AMP@59..60 "&"
73 INDEX_EXPR@[60; 64) 73 INDEX_EXPR@60..64
74 PATH_EXPR@[60; 61) 74 PATH_EXPR@60..61
75 PATH@[60; 61) 75 PATH@60..61
76 PATH_SEGMENT@[60; 61) 76 PATH_SEGMENT@60..61
77 NAME_REF@[60; 61) 77 NAME_REF@60..61
78 IDENT@[60; 61) "x" 78 IDENT@60..61 "x"
79 L_BRACK@[61; 62) "[" 79 L_BRACK@61..62 "["
80 LITERAL@[62; 63) 80 LITERAL@62..63
81 INT_NUMBER@[62; 63) "1" 81 INT_NUMBER@62..63 "1"
82 R_BRACK@[63; 64) "]" 82 R_BRACK@63..64 "]"
83 SEMICOLON@[64; 65) ";" 83 SEMICOLON@64..65 ";"
84 WHITESPACE@[65; 70) "\n " 84 WHITESPACE@65..70 "\n "
85 EXPR_STMT@[70; 76) 85 EXPR_STMT@70..76
86 RANGE_EXPR@[70; 75) 86 RANGE_EXPR@70..75
87 PREFIX_EXPR@[70; 72) 87 PREFIX_EXPR@70..72
88 MINUS@[70; 71) "-" 88 MINUS@70..71 "-"
89 LITERAL@[71; 72) 89 LITERAL@71..72
90 INT_NUMBER@[71; 72) "1" 90 INT_NUMBER@71..72 "1"
91 DOT2@[72; 74) ".." 91 DOT2@72..74 ".."
92 LITERAL@[74; 75) 92 LITERAL@74..75
93 INT_NUMBER@[74; 75) "2" 93 INT_NUMBER@74..75 "2"
94 SEMICOLON@[75; 76) ";" 94 SEMICOLON@75..76 ";"
95 WHITESPACE@[76; 77) "\n" 95 WHITESPACE@76..77 "\n"
96 R_CURLY@[77; 78) "}" 96 R_CURLY@77..78 "}"
97 WHITESPACE@[78; 79) "\n" 97 WHITESPACE@78..79 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast b/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast
index 101478ce1..225b1d0b6 100644
--- a/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast
@@ -1,101 +1,101 @@
1SOURCE_FILE@[0; 105) 1SOURCE_FILE@0..105
2 FN_DEF@[0; 104) 2 FN_DEF@0..104
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 104) 11 BLOCK_EXPR@10..104
12 BLOCK@[10; 104) 12 BLOCK@10..104
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 50) 15 EXPR_STMT@16..50
16 CALL_EXPR@[16; 49) 16 CALL_EXPR@16..49
17 PATH_EXPR@[16; 20) 17 PATH_EXPR@16..20
18 PATH@[16; 20) 18 PATH@16..20
19 PATH_SEGMENT@[16; 20) 19 PATH_SEGMENT@16..20
20 NAME_REF@[16; 20) 20 NAME_REF@16..20
21 IDENT@[16; 20) "Some" 21 IDENT@16..20 "Some"
22 ARG_LIST@[20; 49) 22 ARG_LIST@20..49
23 L_PAREN@[20; 21) "(" 23 L_PAREN@20..21 "("
24 FOR_EXPR@[21; 48) 24 FOR_EXPR@21..48
25 FOR_KW@[21; 24) "for" 25 FOR_KW@21..24 "for"
26 WHITESPACE@[24; 25) " " 26 WHITESPACE@24..25 " "
27 PLACEHOLDER_PAT@[25; 26) 27 PLACEHOLDER_PAT@25..26
28 UNDERSCORE@[25; 26) "_" 28 UNDERSCORE@25..26 "_"
29 WHITESPACE@[26; 27) " " 29 WHITESPACE@26..27 " "
30 IN_KW@[27; 29) "in" 30 IN_KW@27..29 "in"
31 WHITESPACE@[29; 30) " " 31 WHITESPACE@29..30 " "
32 METHOD_CALL_EXPR@[30; 45) 32 METHOD_CALL_EXPR@30..45
33 ARRAY_EXPR@[30; 33) 33 ARRAY_EXPR@30..33
34 L_BRACK@[30; 31) "[" 34 L_BRACK@30..31 "["
35 LITERAL@[31; 32) 35 LITERAL@31..32
36 INT_NUMBER@[31; 32) "1" 36 INT_NUMBER@31..32 "1"
37 R_BRACK@[32; 33) "]" 37 R_BRACK@32..33 "]"
38 DOT@[33; 34) "." 38 DOT@33..34 "."
39 NAME_REF@[34; 43) 39 NAME_REF@34..43
40 IDENT@[34; 43) "into_iter" 40 IDENT@34..43 "into_iter"
41 ARG_LIST@[43; 45) 41 ARG_LIST@43..45
42 L_PAREN@[43; 44) "(" 42 L_PAREN@43..44 "("
43 R_PAREN@[44; 45) ")" 43 R_PAREN@44..45 ")"
44 WHITESPACE@[45; 46) " " 44 WHITESPACE@45..46 " "
45 BLOCK_EXPR@[46; 48) 45 BLOCK_EXPR@46..48
46 BLOCK@[46; 48) 46 BLOCK@46..48
47 L_CURLY@[46; 47) "{" 47 L_CURLY@46..47 "{"
48 R_CURLY@[47; 48) "}" 48 R_CURLY@47..48 "}"
49 R_PAREN@[48; 49) ")" 49 R_PAREN@48..49 ")"
50 SEMICOLON@[49; 50) ";" 50 SEMICOLON@49..50 ";"
51 WHITESPACE@[50; 55) "\n " 51 WHITESPACE@50..55 "\n "
52 EXPR_STMT@[55; 77) 52 EXPR_STMT@55..77
53 CALL_EXPR@[55; 76) 53 CALL_EXPR@55..76
54 PATH_EXPR@[55; 59) 54 PATH_EXPR@55..59
55 PATH@[55; 59) 55 PATH@55..59
56 PATH_SEGMENT@[55; 59) 56 PATH_SEGMENT@55..59
57 NAME_REF@[55; 59) 57 NAME_REF@55..59
58 IDENT@[55; 59) "Some" 58 IDENT@55..59 "Some"
59 ARG_LIST@[59; 76) 59 ARG_LIST@59..76
60 L_PAREN@[59; 60) "(" 60 L_PAREN@59..60 "("
61 LOOP_EXPR@[60; 75) 61 LOOP_EXPR@60..75
62 LOOP_KW@[60; 64) "loop" 62 LOOP_KW@60..64 "loop"
63 WHITESPACE@[64; 65) " " 63 WHITESPACE@64..65 " "
64 BLOCK_EXPR@[65; 75) 64 BLOCK_EXPR@65..75
65 BLOCK@[65; 75) 65 BLOCK@65..75
66 L_CURLY@[65; 66) "{" 66 L_CURLY@65..66 "{"
67 WHITESPACE@[66; 67) " " 67 WHITESPACE@66..67 " "
68 EXPR_STMT@[67; 73) 68 EXPR_STMT@67..73
69 BREAK_EXPR@[67; 72) 69 BREAK_EXPR@67..72
70 BREAK_KW@[67; 72) "break" 70 BREAK_KW@67..72 "break"
71 SEMICOLON@[72; 73) ";" 71 SEMICOLON@72..73 ";"
72 WHITESPACE@[73; 74) " " 72 WHITESPACE@73..74 " "
73 R_CURLY@[74; 75) "}" 73 R_CURLY@74..75 "}"
74 R_PAREN@[75; 76) ")" 74 R_PAREN@75..76 ")"
75 SEMICOLON@[76; 77) ";" 75 SEMICOLON@76..77 ";"
76 WHITESPACE@[77; 82) "\n " 76 WHITESPACE@77..82 "\n "
77 EXPR_STMT@[82; 102) 77 EXPR_STMT@82..102
78 CALL_EXPR@[82; 101) 78 CALL_EXPR@82..101
79 PATH_EXPR@[82; 86) 79 PATH_EXPR@82..86
80 PATH@[82; 86) 80 PATH@82..86
81 PATH_SEGMENT@[82; 86) 81 PATH_SEGMENT@82..86
82 NAME_REF@[82; 86) 82 NAME_REF@82..86
83 IDENT@[82; 86) "Some" 83 IDENT@82..86 "Some"
84 ARG_LIST@[86; 101) 84 ARG_LIST@86..101
85 L_PAREN@[86; 87) "(" 85 L_PAREN@86..87 "("
86 WHILE_EXPR@[87; 100) 86 WHILE_EXPR@87..100
87 WHILE_KW@[87; 92) "while" 87 WHILE_KW@87..92 "while"
88 WHITESPACE@[92; 93) " " 88 WHITESPACE@92..93 " "
89 CONDITION@[93; 97) 89 CONDITION@93..97
90 LITERAL@[93; 97) 90 LITERAL@93..97
91 TRUE_KW@[93; 97) "true" 91 TRUE_KW@93..97 "true"
92 WHITESPACE@[97; 98) " " 92 WHITESPACE@97..98 " "
93 BLOCK_EXPR@[98; 100) 93 BLOCK_EXPR@98..100
94 BLOCK@[98; 100) 94 BLOCK@98..100
95 L_CURLY@[98; 99) "{" 95 L_CURLY@98..99 "{"
96 R_CURLY@[99; 100) "}" 96 R_CURLY@99..100 "}"
97 R_PAREN@[100; 101) ")" 97 R_PAREN@100..101 ")"
98 SEMICOLON@[101; 102) ";" 98 SEMICOLON@101..102 ";"
99 WHITESPACE@[102; 103) "\n" 99 WHITESPACE@102..103 "\n"
100 R_CURLY@[103; 104) "}" 100 R_CURLY@103..104 "}"
101 WHITESPACE@[104; 105) "\n" 101 WHITESPACE@104..105 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast b/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast
index 6bff57505..a52a08ed0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast
@@ -1,56 +1,56 @@
1SOURCE_FILE@[0; 56) 1SOURCE_FILE@0..56
2 FN_DEF@[0; 55) 2 FN_DEF@0..55
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 55) 11 BLOCK_EXPR@10..55
12 BLOCK@[10; 55) 12 BLOCK@10..55
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 30) 15 EXPR_STMT@16..30
16 RANGE_EXPR@[16; 29) 16 RANGE_EXPR@16..29
17 CAST_EXPR@[16; 26) 17 CAST_EXPR@16..26
18 LITERAL@[16; 17) 18 LITERAL@16..17
19 INT_NUMBER@[16; 17) "0" 19 INT_NUMBER@16..17 "0"
20 WHITESPACE@[17; 18) " " 20 WHITESPACE@17..18 " "
21 AS_KW@[18; 20) "as" 21 AS_KW@18..20 "as"
22 WHITESPACE@[20; 21) " " 22 WHITESPACE@20..21 " "
23 PATH_TYPE@[21; 26) 23 PATH_TYPE@21..26
24 PATH@[21; 26) 24 PATH@21..26
25 PATH_SEGMENT@[21; 26) 25 PATH_SEGMENT@21..26
26 NAME_REF@[21; 26) 26 NAME_REF@21..26
27 IDENT@[21; 26) "usize" 27 IDENT@21..26 "usize"
28 WHITESPACE@[26; 27) " " 28 WHITESPACE@26..27 " "
29 DOT2@[27; 29) ".." 29 DOT2@27..29 ".."
30 SEMICOLON@[29; 30) ";" 30 SEMICOLON@29..30 ";"
31 WHITESPACE@[30; 35) "\n " 31 WHITESPACE@30..35 "\n "
32 EXPR_STMT@[35; 53) 32 EXPR_STMT@35..53
33 RANGE_EXPR@[35; 52) 33 RANGE_EXPR@35..52
34 BIN_EXPR@[35; 49) 34 BIN_EXPR@35..49
35 LITERAL@[35; 36) 35 LITERAL@35..36
36 INT_NUMBER@[35; 36) "1" 36 INT_NUMBER@35..36 "1"
37 WHITESPACE@[36; 37) " " 37 WHITESPACE@36..37 " "
38 PLUS@[37; 38) "+" 38 PLUS@37..38 "+"
39 WHITESPACE@[38; 39) " " 39 WHITESPACE@38..39 " "
40 CAST_EXPR@[39; 49) 40 CAST_EXPR@39..49
41 LITERAL@[39; 40) 41 LITERAL@39..40
42 INT_NUMBER@[39; 40) "2" 42 INT_NUMBER@39..40 "2"
43 WHITESPACE@[40; 41) " " 43 WHITESPACE@40..41 " "
44 AS_KW@[41; 43) "as" 44 AS_KW@41..43 "as"
45 WHITESPACE@[43; 44) " " 45 WHITESPACE@43..44 " "
46 PATH_TYPE@[44; 49) 46 PATH_TYPE@44..49
47 PATH@[44; 49) 47 PATH@44..49
48 PATH_SEGMENT@[44; 49) 48 PATH_SEGMENT@44..49
49 NAME_REF@[44; 49) 49 NAME_REF@44..49
50 IDENT@[44; 49) "usize" 50 IDENT@44..49 "usize"
51 WHITESPACE@[49; 50) " " 51 WHITESPACE@49..50 " "
52 DOT2@[50; 52) ".." 52 DOT2@50..52 ".."
53 SEMICOLON@[52; 53) ";" 53 SEMICOLON@52..53 ";"
54 WHITESPACE@[53; 54) "\n" 54 WHITESPACE@53..54 "\n"
55 R_CURLY@[54; 55) "}" 55 R_CURLY@54..55 "}"
56 WHITESPACE@[55; 56) "\n" 56 WHITESPACE@55..56 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast b/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast
index be6774199..b8974c942 100644
--- a/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast
@@ -1,27 +1,27 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@0..35
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 34) 11 BLOCK_EXPR@10..34
12 BLOCK@[10; 34) 12 BLOCK@10..34
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 MATCH_EXPR@[16; 32) 15 MATCH_EXPR@16..32
16 MATCH_KW@[16; 21) "match" 16 MATCH_KW@16..21 "match"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 RANGE_EXPR@[22; 24) 18 RANGE_EXPR@22..24
19 DOT2@[22; 24) ".." 19 DOT2@22..24 ".."
20 WHITESPACE@[24; 25) " " 20 WHITESPACE@24..25 " "
21 MATCH_ARM_LIST@[25; 32) 21 MATCH_ARM_LIST@25..32
22 L_CURLY@[25; 26) "{" 22 L_CURLY@25..26 "{"
23 WHITESPACE@[26; 31) "\n " 23 WHITESPACE@26..31 "\n "
24 R_CURLY@[31; 32) "}" 24 R_CURLY@31..32 "}"
25 WHITESPACE@[32; 33) "\n" 25 WHITESPACE@32..33 "\n"
26 R_CURLY@[33; 34) "}" 26 R_CURLY@33..34 "}"
27 WHITESPACE@[34; 35) "\n" 27 WHITESPACE@34..35 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast b/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast
index f89d7c0d9..46f370eec 100644
--- a/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast
@@ -1,176 +1,176 @@
1SOURCE_FILE@[0; 349) 1SOURCE_FILE@0..349
2 MACRO_DEF@[0; 93) 2 MACRO_DEF@0..93
3 MACRO_KW@[0; 5) "macro" 3 MACRO_KW@0..5 "macro"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 21) 5 NAME@6..21
6 IDENT@[6; 21) "parse_use_trees" 6 IDENT@6..21 "parse_use_trees"
7 TOKEN_TREE@[21; 93) 7 TOKEN_TREE@21..93
8 TOKEN_TREE@[21; 41) 8 TOKEN_TREE@21..41
9 L_PAREN@[21; 22) "(" 9 L_PAREN@21..22 "("
10 DOLLAR@[22; 23) "$" 10 DOLLAR@22..23 "$"
11 TOKEN_TREE@[23; 32) 11 TOKEN_TREE@23..32
12 L_PAREN@[23; 24) "(" 12 L_PAREN@23..24 "("
13 DOLLAR@[24; 25) "$" 13 DOLLAR@24..25 "$"
14 IDENT@[25; 26) "s" 14 IDENT@25..26 "s"
15 COLON@[26; 27) ":" 15 COLON@26..27 ":"
16 IDENT@[27; 31) "expr" 16 IDENT@27..31 "expr"
17 R_PAREN@[31; 32) ")" 17 R_PAREN@31..32 ")"
18 COMMA@[32; 33) "," 18 COMMA@32..33 ","
19 STAR@[33; 34) "*" 19 STAR@33..34 "*"
20 WHITESPACE@[34; 35) " " 20 WHITESPACE@34..35 " "
21 DOLLAR@[35; 36) "$" 21 DOLLAR@35..36 "$"
22 TOKEN_TREE@[36; 39) 22 TOKEN_TREE@36..39
23 L_PAREN@[36; 37) "(" 23 L_PAREN@36..37 "("
24 COMMA@[37; 38) "," 24 COMMA@37..38 ","
25 R_PAREN@[38; 39) ")" 25 R_PAREN@38..39 ")"
26 STAR@[39; 40) "*" 26 STAR@39..40 "*"
27 R_PAREN@[40; 41) ")" 27 R_PAREN@40..41 ")"
28 WHITESPACE@[41; 42) " " 28 WHITESPACE@41..42 " "
29 TOKEN_TREE@[42; 93) 29 TOKEN_TREE@42..93
30 L_CURLY@[42; 43) "{" 30 L_CURLY@42..43 "{"
31 WHITESPACE@[43; 48) "\n " 31 WHITESPACE@43..48 "\n "
32 IDENT@[48; 51) "vec" 32 IDENT@48..51 "vec"
33 BANG@[51; 52) "!" 33 BANG@51..52 "!"
34 TOKEN_TREE@[52; 91) 34 TOKEN_TREE@52..91
35 L_BRACK@[52; 53) "[" 35 L_BRACK@52..53 "["
36 WHITESPACE@[53; 62) "\n " 36 WHITESPACE@53..62 "\n "
37 DOLLAR@[62; 63) "$" 37 DOLLAR@62..63 "$"
38 TOKEN_TREE@[63; 84) 38 TOKEN_TREE@63..84
39 L_PAREN@[63; 64) "(" 39 L_PAREN@63..64 "("
40 IDENT@[64; 78) "parse_use_tree" 40 IDENT@64..78 "parse_use_tree"
41 TOKEN_TREE@[78; 82) 41 TOKEN_TREE@78..82
42 L_PAREN@[78; 79) "(" 42 L_PAREN@78..79 "("
43 DOLLAR@[79; 80) "$" 43 DOLLAR@79..80 "$"
44 IDENT@[80; 81) "s" 44 IDENT@80..81 "s"
45 R_PAREN@[81; 82) ")" 45 R_PAREN@81..82 ")"
46 COMMA@[82; 83) "," 46 COMMA@82..83 ","
47 R_PAREN@[83; 84) ")" 47 R_PAREN@83..84 ")"
48 STAR@[84; 85) "*" 48 STAR@84..85 "*"
49 WHITESPACE@[85; 90) "\n " 49 WHITESPACE@85..90 "\n "
50 R_BRACK@[90; 91) "]" 50 R_BRACK@90..91 "]"
51 WHITESPACE@[91; 92) "\n" 51 WHITESPACE@91..92 "\n"
52 R_CURLY@[92; 93) "}" 52 R_CURLY@92..93 "}"
53 WHITESPACE@[93; 95) "\n\n" 53 WHITESPACE@93..95 "\n\n"
54 FN_DEF@[95; 348) 54 FN_DEF@95..348
55 ATTR@[95; 102) 55 ATTR@95..102
56 POUND@[95; 96) "#" 56 POUND@95..96 "#"
57 L_BRACK@[96; 97) "[" 57 L_BRACK@96..97 "["
58 PATH@[97; 101) 58 PATH@97..101
59 PATH_SEGMENT@[97; 101) 59 PATH_SEGMENT@97..101
60 NAME_REF@[97; 101) 60 NAME_REF@97..101
61 IDENT@[97; 101) "test" 61 IDENT@97..101 "test"
62 R_BRACK@[101; 102) "]" 62 R_BRACK@101..102 "]"
63 WHITESPACE@[102; 103) "\n" 63 WHITESPACE@102..103 "\n"
64 FN_KW@[103; 105) "fn" 64 FN_KW@103..105 "fn"
65 WHITESPACE@[105; 106) " " 65 WHITESPACE@105..106 " "
66 NAME@[106; 125) 66 NAME@106..125
67 IDENT@[106; 125) "test_use_tree_merge" 67 IDENT@106..125 "test_use_tree_merge"
68 PARAM_LIST@[125; 127) 68 PARAM_LIST@125..127
69 L_PAREN@[125; 126) "(" 69 L_PAREN@125..126 "("
70 R_PAREN@[126; 127) ")" 70 R_PAREN@126..127 ")"
71 WHITESPACE@[127; 128) " " 71 WHITESPACE@127..128 " "
72 BLOCK_EXPR@[128; 348) 72 BLOCK_EXPR@128..348
73 BLOCK@[128; 348) 73 BLOCK@128..348
74 L_CURLY@[128; 129) "{" 74 L_CURLY@128..129 "{"
75 WHITESPACE@[129; 134) "\n " 75 WHITESPACE@129..134 "\n "
76 MACRO_DEF@[134; 346) 76 MACRO_DEF@134..346
77 MACRO_KW@[134; 139) "macro" 77 MACRO_KW@134..139 "macro"
78 WHITESPACE@[139; 140) " " 78 WHITESPACE@139..140 " "
79 NAME@[140; 150) 79 NAME@140..150
80 IDENT@[140; 150) "test_merge" 80 IDENT@140..150 "test_merge"
81 TOKEN_TREE@[150; 346) 81 TOKEN_TREE@150..346
82 TOKEN_TREE@[150; 203) 82 TOKEN_TREE@150..203
83 L_PAREN@[150; 151) "(" 83 L_PAREN@150..151 "("
84 TOKEN_TREE@[151; 175) 84 TOKEN_TREE@151..175
85 L_BRACK@[151; 152) "[" 85 L_BRACK@151..152 "["
86 DOLLAR@[152; 153) "$" 86 DOLLAR@152..153 "$"
87 TOKEN_TREE@[153; 166) 87 TOKEN_TREE@153..166
88 L_PAREN@[153; 154) "(" 88 L_PAREN@153..154 "("
89 DOLLAR@[154; 155) "$" 89 DOLLAR@154..155 "$"
90 IDENT@[155; 160) "input" 90 IDENT@155..160 "input"
91 COLON@[160; 161) ":" 91 COLON@160..161 ":"
92 IDENT@[161; 165) "expr" 92 IDENT@161..165 "expr"
93 R_PAREN@[165; 166) ")" 93 R_PAREN@165..166 ")"
94 COMMA@[166; 167) "," 94 COMMA@166..167 ","
95 STAR@[167; 168) "*" 95 STAR@167..168 "*"
96 WHITESPACE@[168; 169) " " 96 WHITESPACE@168..169 " "
97 DOLLAR@[169; 170) "$" 97 DOLLAR@169..170 "$"
98 TOKEN_TREE@[170; 173) 98 TOKEN_TREE@170..173
99 L_PAREN@[170; 171) "(" 99 L_PAREN@170..171 "("
100 COMMA@[171; 172) "," 100 COMMA@171..172 ","
101 R_PAREN@[172; 173) ")" 101 R_PAREN@172..173 ")"
102 STAR@[173; 174) "*" 102 STAR@173..174 "*"
103 R_BRACK@[174; 175) "]" 103 R_BRACK@174..175 "]"
104 COMMA@[175; 176) "," 104 COMMA@175..176 ","
105 WHITESPACE@[176; 177) " " 105 WHITESPACE@176..177 " "
106 TOKEN_TREE@[177; 202) 106 TOKEN_TREE@177..202
107 L_BRACK@[177; 178) "[" 107 L_BRACK@177..178 "["
108 DOLLAR@[178; 179) "$" 108 DOLLAR@178..179 "$"
109 TOKEN_TREE@[179; 193) 109 TOKEN_TREE@179..193
110 L_PAREN@[179; 180) "(" 110 L_PAREN@179..180 "("
111 DOLLAR@[180; 181) "$" 111 DOLLAR@180..181 "$"
112 IDENT@[181; 187) "output" 112 IDENT@181..187 "output"
113 COLON@[187; 188) ":" 113 COLON@187..188 ":"
114 IDENT@[188; 192) "expr" 114 IDENT@188..192 "expr"
115 R_PAREN@[192; 193) ")" 115 R_PAREN@192..193 ")"
116 COMMA@[193; 194) "," 116 COMMA@193..194 ","
117 STAR@[194; 195) "*" 117 STAR@194..195 "*"
118 WHITESPACE@[195; 196) " " 118 WHITESPACE@195..196 " "
119 DOLLAR@[196; 197) "$" 119 DOLLAR@196..197 "$"
120 TOKEN_TREE@[197; 200) 120 TOKEN_TREE@197..200
121 L_PAREN@[197; 198) "(" 121 L_PAREN@197..198 "("
122 COMMA@[198; 199) "," 122 COMMA@198..199 ","
123 R_PAREN@[199; 200) ")" 123 R_PAREN@199..200 ")"
124 STAR@[200; 201) "*" 124 STAR@200..201 "*"
125 R_BRACK@[201; 202) "]" 125 R_BRACK@201..202 "]"
126 R_PAREN@[202; 203) ")" 126 R_PAREN@202..203 ")"
127 WHITESPACE@[203; 204) " " 127 WHITESPACE@203..204 " "
128 TOKEN_TREE@[204; 346) 128 TOKEN_TREE@204..346
129 L_CURLY@[204; 205) "{" 129 L_CURLY@204..205 "{"
130 WHITESPACE@[205; 214) "\n " 130 WHITESPACE@205..214 "\n "
131 IDENT@[214; 223) "assert_eq" 131 IDENT@214..223 "assert_eq"
132 BANG@[223; 224) "!" 132 BANG@223..224 "!"
133 TOKEN_TREE@[224; 339) 133 TOKEN_TREE@224..339
134 L_PAREN@[224; 225) "(" 134 L_PAREN@224..225 "("
135 WHITESPACE@[225; 238) "\n " 135 WHITESPACE@225..238 "\n "
136 IDENT@[238; 253) "merge_use_trees" 136 IDENT@238..253 "merge_use_trees"
137 TOKEN_TREE@[253; 284) 137 TOKEN_TREE@253..284
138 L_PAREN@[253; 254) "(" 138 L_PAREN@253..254 "("
139 IDENT@[254; 269) "parse_use_trees" 139 IDENT@254..269 "parse_use_trees"
140 BANG@[269; 270) "!" 140 BANG@269..270 "!"
141 TOKEN_TREE@[270; 283) 141 TOKEN_TREE@270..283
142 L_PAREN@[270; 271) "(" 142 L_PAREN@270..271 "("
143 DOLLAR@[271; 272) "$" 143 DOLLAR@271..272 "$"
144 TOKEN_TREE@[272; 281) 144 TOKEN_TREE@272..281
145 L_PAREN@[272; 273) "(" 145 L_PAREN@272..273 "("
146 DOLLAR@[273; 274) "$" 146 DOLLAR@273..274 "$"
147 IDENT@[274; 279) "input" 147 IDENT@274..279 "input"
148 COMMA@[279; 280) "," 148 COMMA@279..280 ","
149 R_PAREN@[280; 281) ")" 149 R_PAREN@280..281 ")"
150 STAR@[281; 282) "*" 150 STAR@281..282 "*"
151 R_PAREN@[282; 283) ")" 151 R_PAREN@282..283 ")"
152 R_PAREN@[283; 284) ")" 152 R_PAREN@283..284 ")"
153 COMMA@[284; 285) "," 153 COMMA@284..285 ","
154 WHITESPACE@[285; 298) "\n " 154 WHITESPACE@285..298 "\n "
155 IDENT@[298; 313) "parse_use_trees" 155 IDENT@298..313 "parse_use_trees"
156 BANG@[313; 314) "!" 156 BANG@313..314 "!"
157 TOKEN_TREE@[314; 328) 157 TOKEN_TREE@314..328
158 L_PAREN@[314; 315) "(" 158 L_PAREN@314..315 "("
159 DOLLAR@[315; 316) "$" 159 DOLLAR@315..316 "$"
160 TOKEN_TREE@[316; 326) 160 TOKEN_TREE@316..326
161 L_PAREN@[316; 317) "(" 161 L_PAREN@316..317 "("
162 DOLLAR@[317; 318) "$" 162 DOLLAR@317..318 "$"
163 IDENT@[318; 324) "output" 163 IDENT@318..324 "output"
164 COMMA@[324; 325) "," 164 COMMA@324..325 ","
165 R_PAREN@[325; 326) ")" 165 R_PAREN@325..326 ")"
166 STAR@[326; 327) "*" 166 STAR@326..327 "*"
167 R_PAREN@[327; 328) ")" 167 R_PAREN@327..328 ")"
168 COMMA@[328; 329) "," 168 COMMA@328..329 ","
169 WHITESPACE@[329; 338) "\n " 169 WHITESPACE@329..338 "\n "
170 R_PAREN@[338; 339) ")" 170 R_PAREN@338..339 ")"
171 SEMICOLON@[339; 340) ";" 171 SEMICOLON@339..340 ";"
172 WHITESPACE@[340; 345) "\n " 172 WHITESPACE@340..345 "\n "
173 R_CURLY@[345; 346) "}" 173 R_CURLY@345..346 "}"
174 WHITESPACE@[346; 347) "\n" 174 WHITESPACE@346..347 "\n"
175 R_CURLY@[347; 348) "}" 175 R_CURLY@347..348 "}"
176 WHITESPACE@[348; 349) "\n" 176 WHITESPACE@348..349 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast
index d0623ba90..1cd77aa14 100644
--- a/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast
@@ -1,198 +1,198 @@
1SOURCE_FILE@[0; 170) 1SOURCE_FILE@0..170
2 TRAIT_DEF@[0; 169) 2 TRAIT_DEF@0..169
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "T" 6 IDENT@6..7 "T"
7 WHITESPACE@[7; 8) " " 7 WHITESPACE@7..8 " "
8 ITEM_LIST@[8; 169) 8 ITEM_LIST@8..169
9 L_CURLY@[8; 9) "{" 9 L_CURLY@8..9 "{"
10 WHITESPACE@[9; 14) "\n " 10 WHITESPACE@9..14 "\n "
11 FN_DEF@[14; 46) 11 FN_DEF@14..46
12 FN_KW@[14; 16) "fn" 12 FN_KW@14..16 "fn"
13 WHITESPACE@[16; 17) " " 13 WHITESPACE@16..17 " "
14 NAME@[17; 19) 14 NAME@17..19
15 IDENT@[17; 19) "f1" 15 IDENT@17..19 "f1"
16 PARAM_LIST@[19; 43) 16 PARAM_LIST@19..43
17 L_PAREN@[19; 20) "(" 17 L_PAREN@19..20 "("
18 PARAM@[20; 42) 18 PARAM@20..42
19 TUPLE_PAT@[20; 26) 19 TUPLE_PAT@20..26
20 L_PAREN@[20; 21) "(" 20 L_PAREN@20..21 "("
21 BIND_PAT@[21; 22) 21 BIND_PAT@21..22
22 NAME@[21; 22) 22 NAME@21..22
23 IDENT@[21; 22) "a" 23 IDENT@21..22 "a"
24 COMMA@[22; 23) "," 24 COMMA@22..23 ","
25 WHITESPACE@[23; 24) " " 25 WHITESPACE@23..24 " "
26 BIND_PAT@[24; 25) 26 BIND_PAT@24..25
27 NAME@[24; 25) 27 NAME@24..25
28 IDENT@[24; 25) "b" 28 IDENT@24..25 "b"
29 R_PAREN@[25; 26) ")" 29 R_PAREN@25..26 ")"
30 COLON@[26; 27) ":" 30 COLON@26..27 ":"
31 WHITESPACE@[27; 28) " " 31 WHITESPACE@27..28 " "
32 TUPLE_TYPE@[28; 42) 32 TUPLE_TYPE@28..42
33 L_PAREN@[28; 29) "(" 33 L_PAREN@28..29 "("
34 PATH_TYPE@[29; 34) 34 PATH_TYPE@29..34
35 PATH@[29; 34) 35 PATH@29..34
36 PATH_SEGMENT@[29; 34) 36 PATH_SEGMENT@29..34
37 NAME_REF@[29; 34) 37 NAME_REF@29..34
38 IDENT@[29; 34) "usize" 38 IDENT@29..34 "usize"
39 COMMA@[34; 35) "," 39 COMMA@34..35 ","
40 WHITESPACE@[35; 36) " " 40 WHITESPACE@35..36 " "
41 PATH_TYPE@[36; 41) 41 PATH_TYPE@36..41
42 PATH@[36; 41) 42 PATH@36..41
43 PATH_SEGMENT@[36; 41) 43 PATH_SEGMENT@36..41
44 NAME_REF@[36; 41) 44 NAME_REF@36..41
45 IDENT@[36; 41) "usize" 45 IDENT@36..41 "usize"
46 R_PAREN@[41; 42) ")" 46 R_PAREN@41..42 ")"
47 R_PAREN@[42; 43) ")" 47 R_PAREN@42..43 ")"
48 WHITESPACE@[43; 44) " " 48 WHITESPACE@43..44 " "
49 BLOCK_EXPR@[44; 46) 49 BLOCK_EXPR@44..46
50 BLOCK@[44; 46) 50 BLOCK@44..46
51 L_CURLY@[44; 45) "{" 51 L_CURLY@44..45 "{"
52 R_CURLY@[45; 46) "}" 52 R_CURLY@45..46 "}"
53 WHITESPACE@[46; 51) "\n " 53 WHITESPACE@46..51 "\n "
54 FN_DEF@[51; 74) 54 FN_DEF@51..74
55 FN_KW@[51; 53) "fn" 55 FN_KW@51..53 "fn"
56 WHITESPACE@[53; 54) " " 56 WHITESPACE@53..54 " "
57 NAME@[54; 56) 57 NAME@54..56
58 IDENT@[54; 56) "f2" 58 IDENT@54..56 "f2"
59 PARAM_LIST@[56; 71) 59 PARAM_LIST@56..71
60 L_PAREN@[56; 57) "(" 60 L_PAREN@56..57 "("
61 PARAM@[57; 70) 61 PARAM@57..70
62 RECORD_PAT@[57; 67) 62 RECORD_PAT@57..67
63 PATH@[57; 58) 63 PATH@57..58
64 PATH_SEGMENT@[57; 58) 64 PATH_SEGMENT@57..58
65 NAME_REF@[57; 58) 65 NAME_REF@57..58
66 IDENT@[57; 58) "S" 66 IDENT@57..58 "S"
67 WHITESPACE@[58; 59) " " 67 WHITESPACE@58..59 " "
68 RECORD_FIELD_PAT_LIST@[59; 67) 68 RECORD_FIELD_PAT_LIST@59..67
69 L_CURLY@[59; 60) "{" 69 L_CURLY@59..60 "{"
70 WHITESPACE@[60; 61) " " 70 WHITESPACE@60..61 " "
71 RECORD_FIELD_PAT@[61; 62) 71 RECORD_FIELD_PAT@61..62
72 BIND_PAT@[61; 62) 72 BIND_PAT@61..62
73 NAME@[61; 62) 73 NAME@61..62
74 IDENT@[61; 62) "a" 74 IDENT@61..62 "a"
75 COMMA@[62; 63) "," 75 COMMA@62..63 ","
76 WHITESPACE@[63; 64) " " 76 WHITESPACE@63..64 " "
77 RECORD_FIELD_PAT@[64; 65) 77 RECORD_FIELD_PAT@64..65
78 BIND_PAT@[64; 65) 78 BIND_PAT@64..65
79 NAME@[64; 65) 79 NAME@64..65
80 IDENT@[64; 65) "b" 80 IDENT@64..65 "b"
81 WHITESPACE@[65; 66) " " 81 WHITESPACE@65..66 " "
82 R_CURLY@[66; 67) "}" 82 R_CURLY@66..67 "}"
83 COLON@[67; 68) ":" 83 COLON@67..68 ":"
84 WHITESPACE@[68; 69) " " 84 WHITESPACE@68..69 " "
85 PATH_TYPE@[69; 70) 85 PATH_TYPE@69..70
86 PATH@[69; 70) 86 PATH@69..70
87 PATH_SEGMENT@[69; 70) 87 PATH_SEGMENT@69..70
88 NAME_REF@[69; 70) 88 NAME_REF@69..70
89 IDENT@[69; 70) "S" 89 IDENT@69..70 "S"
90 R_PAREN@[70; 71) ")" 90 R_PAREN@70..71 ")"
91 WHITESPACE@[71; 72) " " 91 WHITESPACE@71..72 " "
92 BLOCK_EXPR@[72; 74) 92 BLOCK_EXPR@72..74
93 BLOCK@[72; 74) 93 BLOCK@72..74
94 L_CURLY@[72; 73) "{" 94 L_CURLY@72..73 "{"
95 R_CURLY@[73; 74) "}" 95 R_CURLY@73..74 "}"
96 WHITESPACE@[74; 79) "\n " 96 WHITESPACE@74..79 "\n "
97 FN_DEF@[79; 108) 97 FN_DEF@79..108
98 FN_KW@[79; 81) "fn" 98 FN_KW@79..81 "fn"
99 WHITESPACE@[81; 82) " " 99 WHITESPACE@81..82 " "
100 NAME@[82; 84) 100 NAME@82..84
101 IDENT@[82; 84) "f3" 101 IDENT@82..84 "f3"
102 PARAM_LIST@[84; 105) 102 PARAM_LIST@84..105
103 L_PAREN@[84; 85) "(" 103 L_PAREN@84..85 "("
104 PARAM@[85; 104) 104 PARAM@85..104
105 TUPLE_STRUCT_PAT@[85; 95) 105 TUPLE_STRUCT_PAT@85..95
106 PATH@[85; 92) 106 PATH@85..92
107 PATH_SEGMENT@[85; 92) 107 PATH_SEGMENT@85..92
108 NAME_REF@[85; 92) 108 NAME_REF@85..92
109 IDENT@[85; 92) "NewType" 109 IDENT@85..92 "NewType"
110 L_PAREN@[92; 93) "(" 110 L_PAREN@92..93 "("
111 BIND_PAT@[93; 94) 111 BIND_PAT@93..94
112 NAME@[93; 94) 112 NAME@93..94
113 IDENT@[93; 94) "a" 113 IDENT@93..94 "a"
114 R_PAREN@[94; 95) ")" 114 R_PAREN@94..95 ")"
115 COLON@[95; 96) ":" 115 COLON@95..96 ":"
116 WHITESPACE@[96; 97) " " 116 WHITESPACE@96..97 " "
117 PATH_TYPE@[97; 104) 117 PATH_TYPE@97..104
118 PATH@[97; 104) 118 PATH@97..104
119 PATH_SEGMENT@[97; 104) 119 PATH_SEGMENT@97..104
120 NAME_REF@[97; 104) 120 NAME_REF@97..104
121 IDENT@[97; 104) "NewType" 121 IDENT@97..104 "NewType"
122 R_PAREN@[104; 105) ")" 122 R_PAREN@104..105 ")"
123 WHITESPACE@[105; 106) " " 123 WHITESPACE@105..106 " "
124 BLOCK_EXPR@[106; 108) 124 BLOCK_EXPR@106..108
125 BLOCK@[106; 108) 125 BLOCK@106..108
126 L_CURLY@[106; 107) "{" 126 L_CURLY@106..107 "{"
127 R_CURLY@[107; 108) "}" 127 R_CURLY@107..108 "}"
128 WHITESPACE@[108; 113) "\n " 128 WHITESPACE@108..113 "\n "
129 FN_DEF@[113; 135) 129 FN_DEF@113..135
130 FN_KW@[113; 115) "fn" 130 FN_KW@113..115 "fn"
131 WHITESPACE@[115; 116) " " 131 WHITESPACE@115..116 " "
132 NAME@[116; 118) 132 NAME@116..118
133 IDENT@[116; 118) "f4" 133 IDENT@116..118 "f4"
134 PARAM_LIST@[118; 132) 134 PARAM_LIST@118..132
135 L_PAREN@[118; 119) "(" 135 L_PAREN@118..119 "("
136 PARAM@[119; 131) 136 PARAM@119..131
137 REF_PAT@[119; 122) 137 REF_PAT@119..122
138 AMP@[119; 120) "&" 138 AMP@119..120 "&"
139 REF_PAT@[120; 122) 139 REF_PAT@120..122
140 AMP@[120; 121) "&" 140 AMP@120..121 "&"
141 BIND_PAT@[121; 122) 141 BIND_PAT@121..122
142 NAME@[121; 122) 142 NAME@121..122
143 IDENT@[121; 122) "a" 143 IDENT@121..122 "a"
144 COLON@[122; 123) ":" 144 COLON@122..123 ":"
145 WHITESPACE@[123; 124) " " 145 WHITESPACE@123..124 " "
146 REFERENCE_TYPE@[124; 131) 146 REFERENCE_TYPE@124..131
147 AMP@[124; 125) "&" 147 AMP@124..125 "&"
148 REFERENCE_TYPE@[125; 131) 148 REFERENCE_TYPE@125..131
149 AMP@[125; 126) "&" 149 AMP@125..126 "&"
150 PATH_TYPE@[126; 131) 150 PATH_TYPE@126..131
151 PATH@[126; 131) 151 PATH@126..131
152 PATH_SEGMENT@[126; 131) 152 PATH_SEGMENT@126..131
153 NAME_REF@[126; 131) 153 NAME_REF@126..131
154 IDENT@[126; 131) "usize" 154 IDENT@126..131 "usize"
155 R_PAREN@[131; 132) ")" 155 R_PAREN@131..132 ")"
156 WHITESPACE@[132; 133) " " 156 WHITESPACE@132..133 " "
157 BLOCK_EXPR@[133; 135) 157 BLOCK_EXPR@133..135
158 BLOCK@[133; 135) 158 BLOCK@133..135
159 L_CURLY@[133; 134) "{" 159 L_CURLY@133..134 "{"
160 R_CURLY@[134; 135) "}" 160 R_CURLY@134..135 "}"
161 WHITESPACE@[135; 140) "\n " 161 WHITESPACE@135..140 "\n "
162 FN_DEF@[140; 167) 162 FN_DEF@140..167
163 FN_KW@[140; 142) "fn" 163 FN_KW@140..142 "fn"
164 WHITESPACE@[142; 143) " " 164 WHITESPACE@142..143 " "
165 NAME@[143; 146) 165 NAME@143..146
166 IDENT@[143; 146) "bar" 166 IDENT@143..146 "bar"
167 PARAM_LIST@[146; 166) 167 PARAM_LIST@146..166
168 L_PAREN@[146; 147) "(" 168 L_PAREN@146..147 "("
169 PARAM@[147; 153) 169 PARAM@147..153
170 PLACEHOLDER_PAT@[147; 148) 170 PLACEHOLDER_PAT@147..148
171 UNDERSCORE@[147; 148) "_" 171 UNDERSCORE@147..148 "_"
172 COLON@[148; 149) ":" 172 COLON@148..149 ":"
173 WHITESPACE@[149; 150) " " 173 WHITESPACE@149..150 " "
174 PATH_TYPE@[150; 153) 174 PATH_TYPE@150..153
175 PATH@[150; 153) 175 PATH@150..153
176 PATH_SEGMENT@[150; 153) 176 PATH_SEGMENT@150..153
177 NAME_REF@[150; 153) 177 NAME_REF@150..153
178 IDENT@[150; 153) "u64" 178 IDENT@150..153 "u64"
179 COMMA@[153; 154) "," 179 COMMA@153..154 ","
180 WHITESPACE@[154; 155) " " 180 WHITESPACE@154..155 " "
181 PARAM@[155; 165) 181 PARAM@155..165
182 BIND_PAT@[155; 160) 182 BIND_PAT@155..160
183 MUT_KW@[155; 158) "mut" 183 MUT_KW@155..158 "mut"
184 WHITESPACE@[158; 159) " " 184 WHITESPACE@158..159 " "
185 NAME@[159; 160) 185 NAME@159..160
186 IDENT@[159; 160) "x" 186 IDENT@159..160 "x"
187 COLON@[160; 161) ":" 187 COLON@160..161 ":"
188 WHITESPACE@[161; 162) " " 188 WHITESPACE@161..162 " "
189 PATH_TYPE@[162; 165) 189 PATH_TYPE@162..165
190 PATH@[162; 165) 190 PATH@162..165
191 PATH_SEGMENT@[162; 165) 191 PATH_SEGMENT@162..165
192 NAME_REF@[162; 165) 192 NAME_REF@162..165
193 IDENT@[162; 165) "i32" 193 IDENT@162..165 "i32"
194 R_PAREN@[165; 166) ")" 194 R_PAREN@165..166 ")"
195 SEMICOLON@[166; 167) ";" 195 SEMICOLON@166..167 ";"
196 WHITESPACE@[167; 168) "\n" 196 WHITESPACE@167..168 "\n"
197 R_CURLY@[168; 169) "}" 197 R_CURLY@168..169 "}"
198 WHITESPACE@[169; 170) "\n" 198 WHITESPACE@169..170 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast
index 17b08197b..5a9f07c89 100644
--- a/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast
@@ -1,133 +1,133 @@
1SOURCE_FILE@[0; 126) 1SOURCE_FILE@0..126
2 EXTERN_BLOCK@[0; 125) 2 EXTERN_BLOCK@0..125
3 ABI@[0; 10) 3 ABI@0..10
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 STRING@[7; 10) "\"C\"" 6 STRING@7..10 "\"C\""
7 WHITESPACE@[10; 11) " " 7 WHITESPACE@10..11 " "
8 EXTERN_ITEM_LIST@[11; 125) 8 EXTERN_ITEM_LIST@11..125
9 L_CURLY@[11; 12) "{" 9 L_CURLY@11..12 "{"
10 WHITESPACE@[12; 17) "\n " 10 WHITESPACE@12..17 "\n "
11 FN_DEF@[17; 40) 11 FN_DEF@17..40
12 FN_KW@[17; 19) "fn" 12 FN_KW@17..19 "fn"
13 WHITESPACE@[19; 20) " " 13 WHITESPACE@19..20 " "
14 NAME@[20; 21) 14 NAME@20..21
15 IDENT@[20; 21) "a" 15 IDENT@20..21 "a"
16 PARAM_LIST@[21; 39) 16 PARAM_LIST@21..39
17 L_PAREN@[21; 22) "(" 17 L_PAREN@21..22 "("
18 PARAM@[22; 32) 18 PARAM@22..32
19 PLACEHOLDER_PAT@[22; 23) 19 PLACEHOLDER_PAT@22..23
20 UNDERSCORE@[22; 23) "_" 20 UNDERSCORE@22..23 "_"
21 COLON@[23; 24) ":" 21 COLON@23..24 ":"
22 WHITESPACE@[24; 25) " " 22 WHITESPACE@24..25 " "
23 POINTER_TYPE@[25; 32) 23 POINTER_TYPE@25..32
24 STAR@[25; 26) "*" 24 STAR@25..26 "*"
25 MUT_KW@[26; 29) "mut" 25 MUT_KW@26..29 "mut"
26 WHITESPACE@[29; 30) " " 26 WHITESPACE@29..30 " "
27 PATH_TYPE@[30; 32) 27 PATH_TYPE@30..32
28 PATH@[30; 32) 28 PATH@30..32
29 PATH_SEGMENT@[30; 32) 29 PATH_SEGMENT@30..32
30 NAME_REF@[30; 32) 30 NAME_REF@30..32
31 IDENT@[30; 32) "u8" 31 IDENT@30..32 "u8"
32 COMMA@[32; 33) "," 32 COMMA@32..33 ","
33 WHITESPACE@[33; 34) " " 33 WHITESPACE@33..34 " "
34 PARAM@[34; 37) 34 PARAM@34..37
35 DOT3@[34; 37) "..." 35 DOT3@34..37 "..."
36 COMMA@[37; 38) "," 36 COMMA@37..38 ","
37 R_PAREN@[38; 39) ")" 37 R_PAREN@38..39 ")"
38 SEMICOLON@[39; 40) ";" 38 SEMICOLON@39..40 ";"
39 WHITESPACE@[40; 45) "\n " 39 WHITESPACE@40..45 "\n "
40 FN_DEF@[45; 70) 40 FN_DEF@45..70
41 FN_KW@[45; 47) "fn" 41 FN_KW@45..47 "fn"
42 WHITESPACE@[47; 48) " " 42 WHITESPACE@47..48 " "
43 NAME@[48; 49) 43 NAME@48..49
44 IDENT@[48; 49) "b" 44 IDENT@48..49 "b"
45 PARAM_LIST@[49; 69) 45 PARAM_LIST@49..69
46 L_PAREN@[49; 50) "(" 46 L_PAREN@49..50 "("
47 PARAM@[50; 60) 47 PARAM@50..60
48 PLACEHOLDER_PAT@[50; 51) 48 PLACEHOLDER_PAT@50..51
49 UNDERSCORE@[50; 51) "_" 49 UNDERSCORE@50..51 "_"
50 COLON@[51; 52) ":" 50 COLON@51..52 ":"
51 WHITESPACE@[52; 53) " " 51 WHITESPACE@52..53 " "
52 POINTER_TYPE@[53; 60) 52 POINTER_TYPE@53..60
53 STAR@[53; 54) "*" 53 STAR@53..54 "*"
54 MUT_KW@[54; 57) "mut" 54 MUT_KW@54..57 "mut"
55 WHITESPACE@[57; 58) " " 55 WHITESPACE@57..58 " "
56 PATH_TYPE@[58; 60) 56 PATH_TYPE@58..60
57 PATH@[58; 60) 57 PATH@58..60
58 PATH_SEGMENT@[58; 60) 58 PATH_SEGMENT@58..60
59 NAME_REF@[58; 60) 59 NAME_REF@58..60
60 IDENT@[58; 60) "u8" 60 IDENT@58..60 "u8"
61 COMMA@[60; 61) "," 61 COMMA@60..61 ","
62 WHITESPACE@[61; 62) " " 62 WHITESPACE@61..62 " "
63 PARAM@[62; 68) 63 PARAM@62..68
64 PLACEHOLDER_PAT@[62; 63) 64 PLACEHOLDER_PAT@62..63
65 UNDERSCORE@[62; 63) "_" 65 UNDERSCORE@62..63 "_"
66 COLON@[63; 64) ":" 66 COLON@63..64 ":"
67 WHITESPACE@[64; 65) " " 67 WHITESPACE@64..65 " "
68 DOT3@[65; 68) "..." 68 DOT3@65..68 "..."
69 R_PAREN@[68; 69) ")" 69 R_PAREN@68..69 ")"
70 SEMICOLON@[69; 70) ";" 70 SEMICOLON@69..70 ";"
71 WHITESPACE@[70; 75) "\n " 71 WHITESPACE@70..75 "\n "
72 FN_DEF@[75; 123) 72 FN_DEF@75..123
73 FN_KW@[75; 77) "fn" 73 FN_KW@75..77 "fn"
74 WHITESPACE@[77; 78) " " 74 WHITESPACE@77..78 " "
75 NAME@[78; 79) 75 NAME@78..79
76 IDENT@[78; 79) "c" 76 IDENT@78..79 "c"
77 PARAM_LIST@[79; 122) 77 PARAM_LIST@79..122
78 L_PAREN@[79; 80) "(" 78 L_PAREN@79..80 "("
79 PARAM@[80; 90) 79 PARAM@80..90
80 PLACEHOLDER_PAT@[80; 81) 80 PLACEHOLDER_PAT@80..81
81 UNDERSCORE@[80; 81) "_" 81 UNDERSCORE@80..81 "_"
82 COLON@[81; 82) ":" 82 COLON@81..82 ":"
83 WHITESPACE@[82; 83) " " 83 WHITESPACE@82..83 " "
84 POINTER_TYPE@[83; 90) 84 POINTER_TYPE@83..90
85 STAR@[83; 84) "*" 85 STAR@83..84 "*"
86 MUT_KW@[84; 87) "mut" 86 MUT_KW@84..87 "mut"
87 WHITESPACE@[87; 88) " " 87 WHITESPACE@87..88 " "
88 PATH_TYPE@[88; 90) 88 PATH_TYPE@88..90
89 PATH@[88; 90) 89 PATH@88..90
90 PATH_SEGMENT@[88; 90) 90 PATH_SEGMENT@88..90
91 NAME_REF@[88; 90) 91 NAME_REF@88..90
92 IDENT@[88; 90) "u8" 92 IDENT@88..90 "u8"
93 COMMA@[90; 91) "," 93 COMMA@90..91 ","
94 WHITESPACE@[91; 92) " " 94 WHITESPACE@91..92 " "
95 ATTR@[92; 105) 95 ATTR@92..105
96 POUND@[92; 93) "#" 96 POUND@92..93 "#"
97 L_BRACK@[93; 94) "[" 97 L_BRACK@93..94 "["
98 PATH@[94; 97) 98 PATH@94..97
99 PATH_SEGMENT@[94; 97) 99 PATH_SEGMENT@94..97
100 NAME_REF@[94; 97) 100 NAME_REF@94..97
101 IDENT@[94; 97) "cfg" 101 IDENT@94..97 "cfg"
102 TOKEN_TREE@[97; 104) 102 TOKEN_TREE@97..104
103 L_PAREN@[97; 98) "(" 103 L_PAREN@97..98 "("
104 IDENT@[98; 103) "never" 104 IDENT@98..103 "never"
105 R_PAREN@[103; 104) ")" 105 R_PAREN@103..104 ")"
106 R_BRACK@[104; 105) "]" 106 R_BRACK@104..105 "]"
107 WHITESPACE@[105; 106) " " 107 WHITESPACE@105..106 " "
108 PARAM@[106; 120) 108 PARAM@106..120
109 SLICE_PAT@[106; 115) 109 SLICE_PAT@106..115
110 L_BRACK@[106; 107) "[" 110 L_BRACK@106..107 "["
111 BIND_PAT@[107; 108) 111 BIND_PAT@107..108
112 NAME@[107; 108) 112 NAME@107..108
113 IDENT@[107; 108) "w" 113 IDENT@107..108 "w"
114 COMMA@[108; 109) "," 114 COMMA@108..109 ","
115 WHITESPACE@[109; 110) " " 115 WHITESPACE@109..110 " "
116 BIND_PAT@[110; 111) 116 BIND_PAT@110..111
117 NAME@[110; 111) 117 NAME@110..111
118 IDENT@[110; 111) "t" 118 IDENT@110..111 "t"
119 COMMA@[111; 112) "," 119 COMMA@111..112 ","
120 WHITESPACE@[112; 113) " " 120 WHITESPACE@112..113 " "
121 BIND_PAT@[113; 114) 121 BIND_PAT@113..114
122 NAME@[113; 114) 122 NAME@113..114
123 IDENT@[113; 114) "f" 123 IDENT@113..114 "f"
124 R_BRACK@[114; 115) "]" 124 R_BRACK@114..115 "]"
125 COLON@[115; 116) ":" 125 COLON@115..116 ":"
126 WHITESPACE@[116; 117) " " 126 WHITESPACE@116..117 " "
127 DOT3@[117; 120) "..." 127 DOT3@117..120 "..."
128 COMMA@[120; 121) "," 128 COMMA@120..121 ","
129 R_PAREN@[121; 122) ")" 129 R_PAREN@121..122 ")"
130 SEMICOLON@[122; 123) ";" 130 SEMICOLON@122..123 ";"
131 WHITESPACE@[123; 124) "\n" 131 WHITESPACE@123..124 "\n"
132 R_CURLY@[124; 125) "}" 132 R_CURLY@124..125 "}"
133 WHITESPACE@[125; 126) "\n" 133 WHITESPACE@125..126 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast
index 5e96b695b..4f9a14066 100644
--- a/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast
@@ -1,166 +1,166 @@
1SOURCE_FILE@[0; 137) 1SOURCE_FILE@0..137
2 IMPL_DEF@[0; 136) 2 IMPL_DEF@0..136
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "U" 9 IDENT@5..6 "U"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 ITEM_LIST@[7; 136) 11 ITEM_LIST@7..136
12 L_CURLY@[7; 8) "{" 12 L_CURLY@7..8 "{"
13 WHITESPACE@[8; 13) "\n " 13 WHITESPACE@8..13 "\n "
14 FN_DEF@[13; 45) 14 FN_DEF@13..45
15 FN_KW@[13; 15) "fn" 15 FN_KW@13..15 "fn"
16 WHITESPACE@[15; 16) " " 16 WHITESPACE@15..16 " "
17 NAME@[16; 18) 17 NAME@16..18
18 IDENT@[16; 18) "f1" 18 IDENT@16..18 "f1"
19 PARAM_LIST@[18; 42) 19 PARAM_LIST@18..42
20 L_PAREN@[18; 19) "(" 20 L_PAREN@18..19 "("
21 PARAM@[19; 41) 21 PARAM@19..41
22 TUPLE_PAT@[19; 25) 22 TUPLE_PAT@19..25
23 L_PAREN@[19; 20) "(" 23 L_PAREN@19..20 "("
24 BIND_PAT@[20; 21) 24 BIND_PAT@20..21
25 NAME@[20; 21) 25 NAME@20..21
26 IDENT@[20; 21) "a" 26 IDENT@20..21 "a"
27 COMMA@[21; 22) "," 27 COMMA@21..22 ","
28 WHITESPACE@[22; 23) " " 28 WHITESPACE@22..23 " "
29 BIND_PAT@[23; 24) 29 BIND_PAT@23..24
30 NAME@[23; 24) 30 NAME@23..24
31 IDENT@[23; 24) "b" 31 IDENT@23..24 "b"
32 R_PAREN@[24; 25) ")" 32 R_PAREN@24..25 ")"
33 COLON@[25; 26) ":" 33 COLON@25..26 ":"
34 WHITESPACE@[26; 27) " " 34 WHITESPACE@26..27 " "
35 TUPLE_TYPE@[27; 41) 35 TUPLE_TYPE@27..41
36 L_PAREN@[27; 28) "(" 36 L_PAREN@27..28 "("
37 PATH_TYPE@[28; 33) 37 PATH_TYPE@28..33
38 PATH@[28; 33) 38 PATH@28..33
39 PATH_SEGMENT@[28; 33) 39 PATH_SEGMENT@28..33
40 NAME_REF@[28; 33) 40 NAME_REF@28..33
41 IDENT@[28; 33) "usize" 41 IDENT@28..33 "usize"
42 COMMA@[33; 34) "," 42 COMMA@33..34 ","
43 WHITESPACE@[34; 35) " " 43 WHITESPACE@34..35 " "
44 PATH_TYPE@[35; 40) 44 PATH_TYPE@35..40
45 PATH@[35; 40) 45 PATH@35..40
46 PATH_SEGMENT@[35; 40) 46 PATH_SEGMENT@35..40
47 NAME_REF@[35; 40) 47 NAME_REF@35..40
48 IDENT@[35; 40) "usize" 48 IDENT@35..40 "usize"
49 R_PAREN@[40; 41) ")" 49 R_PAREN@40..41 ")"
50 R_PAREN@[41; 42) ")" 50 R_PAREN@41..42 ")"
51 WHITESPACE@[42; 43) " " 51 WHITESPACE@42..43 " "
52 BLOCK_EXPR@[43; 45) 52 BLOCK_EXPR@43..45
53 BLOCK@[43; 45) 53 BLOCK@43..45
54 L_CURLY@[43; 44) "{" 54 L_CURLY@43..44 "{"
55 R_CURLY@[44; 45) "}" 55 R_CURLY@44..45 "}"
56 WHITESPACE@[45; 50) "\n " 56 WHITESPACE@45..50 "\n "
57 FN_DEF@[50; 73) 57 FN_DEF@50..73
58 FN_KW@[50; 52) "fn" 58 FN_KW@50..52 "fn"
59 WHITESPACE@[52; 53) " " 59 WHITESPACE@52..53 " "
60 NAME@[53; 55) 60 NAME@53..55
61 IDENT@[53; 55) "f2" 61 IDENT@53..55 "f2"
62 PARAM_LIST@[55; 70) 62 PARAM_LIST@55..70
63 L_PAREN@[55; 56) "(" 63 L_PAREN@55..56 "("
64 PARAM@[56; 69) 64 PARAM@56..69
65 RECORD_PAT@[56; 66) 65 RECORD_PAT@56..66
66 PATH@[56; 57) 66 PATH@56..57
67 PATH_SEGMENT@[56; 57) 67 PATH_SEGMENT@56..57
68 NAME_REF@[56; 57) 68 NAME_REF@56..57
69 IDENT@[56; 57) "S" 69 IDENT@56..57 "S"
70 WHITESPACE@[57; 58) " " 70 WHITESPACE@57..58 " "
71 RECORD_FIELD_PAT_LIST@[58; 66) 71 RECORD_FIELD_PAT_LIST@58..66
72 L_CURLY@[58; 59) "{" 72 L_CURLY@58..59 "{"
73 WHITESPACE@[59; 60) " " 73 WHITESPACE@59..60 " "
74 RECORD_FIELD_PAT@[60; 61) 74 RECORD_FIELD_PAT@60..61
75 BIND_PAT@[60; 61) 75 BIND_PAT@60..61
76 NAME@[60; 61) 76 NAME@60..61
77 IDENT@[60; 61) "a" 77 IDENT@60..61 "a"
78 COMMA@[61; 62) "," 78 COMMA@61..62 ","
79 WHITESPACE@[62; 63) " " 79 WHITESPACE@62..63 " "
80 RECORD_FIELD_PAT@[63; 64) 80 RECORD_FIELD_PAT@63..64
81 BIND_PAT@[63; 64) 81 BIND_PAT@63..64
82 NAME@[63; 64) 82 NAME@63..64
83 IDENT@[63; 64) "b" 83 IDENT@63..64 "b"
84 WHITESPACE@[64; 65) " " 84 WHITESPACE@64..65 " "
85 R_CURLY@[65; 66) "}" 85 R_CURLY@65..66 "}"
86 COLON@[66; 67) ":" 86 COLON@66..67 ":"
87 WHITESPACE@[67; 68) " " 87 WHITESPACE@67..68 " "
88 PATH_TYPE@[68; 69) 88 PATH_TYPE@68..69
89 PATH@[68; 69) 89 PATH@68..69
90 PATH_SEGMENT@[68; 69) 90 PATH_SEGMENT@68..69
91 NAME_REF@[68; 69) 91 NAME_REF@68..69
92 IDENT@[68; 69) "S" 92 IDENT@68..69 "S"
93 R_PAREN@[69; 70) ")" 93 R_PAREN@69..70 ")"
94 WHITESPACE@[70; 71) " " 94 WHITESPACE@70..71 " "
95 BLOCK_EXPR@[71; 73) 95 BLOCK_EXPR@71..73
96 BLOCK@[71; 73) 96 BLOCK@71..73
97 L_CURLY@[71; 72) "{" 97 L_CURLY@71..72 "{"
98 R_CURLY@[72; 73) "}" 98 R_CURLY@72..73 "}"
99 WHITESPACE@[73; 78) "\n " 99 WHITESPACE@73..78 "\n "
100 FN_DEF@[78; 107) 100 FN_DEF@78..107
101 FN_KW@[78; 80) "fn" 101 FN_KW@78..80 "fn"
102 WHITESPACE@[80; 81) " " 102 WHITESPACE@80..81 " "
103 NAME@[81; 83) 103 NAME@81..83
104 IDENT@[81; 83) "f3" 104 IDENT@81..83 "f3"
105 PARAM_LIST@[83; 104) 105 PARAM_LIST@83..104
106 L_PAREN@[83; 84) "(" 106 L_PAREN@83..84 "("
107 PARAM@[84; 103) 107 PARAM@84..103
108 TUPLE_STRUCT_PAT@[84; 94) 108 TUPLE_STRUCT_PAT@84..94
109 PATH@[84; 91) 109 PATH@84..91
110 PATH_SEGMENT@[84; 91) 110 PATH_SEGMENT@84..91
111 NAME_REF@[84; 91) 111 NAME_REF@84..91
112 IDENT@[84; 91) "NewType" 112 IDENT@84..91 "NewType"
113 L_PAREN@[91; 92) "(" 113 L_PAREN@91..92 "("
114 BIND_PAT@[92; 93) 114 BIND_PAT@92..93
115 NAME@[92; 93) 115 NAME@92..93
116 IDENT@[92; 93) "a" 116 IDENT@92..93 "a"
117 R_PAREN@[93; 94) ")" 117 R_PAREN@93..94 ")"
118 COLON@[94; 95) ":" 118 COLON@94..95 ":"
119 WHITESPACE@[95; 96) " " 119 WHITESPACE@95..96 " "
120 PATH_TYPE@[96; 103) 120 PATH_TYPE@96..103
121 PATH@[96; 103) 121 PATH@96..103
122 PATH_SEGMENT@[96; 103) 122 PATH_SEGMENT@96..103
123 NAME_REF@[96; 103) 123 NAME_REF@96..103
124 IDENT@[96; 103) "NewType" 124 IDENT@96..103 "NewType"
125 R_PAREN@[103; 104) ")" 125 R_PAREN@103..104 ")"
126 WHITESPACE@[104; 105) " " 126 WHITESPACE@104..105 " "
127 BLOCK_EXPR@[105; 107) 127 BLOCK_EXPR@105..107
128 BLOCK@[105; 107) 128 BLOCK@105..107
129 L_CURLY@[105; 106) "{" 129 L_CURLY@105..106 "{"
130 R_CURLY@[106; 107) "}" 130 R_CURLY@106..107 "}"
131 WHITESPACE@[107; 112) "\n " 131 WHITESPACE@107..112 "\n "
132 FN_DEF@[112; 134) 132 FN_DEF@112..134
133 FN_KW@[112; 114) "fn" 133 FN_KW@112..114 "fn"
134 WHITESPACE@[114; 115) " " 134 WHITESPACE@114..115 " "
135 NAME@[115; 117) 135 NAME@115..117
136 IDENT@[115; 117) "f4" 136 IDENT@115..117 "f4"
137 PARAM_LIST@[117; 131) 137 PARAM_LIST@117..131
138 L_PAREN@[117; 118) "(" 138 L_PAREN@117..118 "("
139 PARAM@[118; 130) 139 PARAM@118..130
140 REF_PAT@[118; 121) 140 REF_PAT@118..121
141 AMP@[118; 119) "&" 141 AMP@118..119 "&"
142 REF_PAT@[119; 121) 142 REF_PAT@119..121
143 AMP@[119; 120) "&" 143 AMP@119..120 "&"
144 BIND_PAT@[120; 121) 144 BIND_PAT@120..121
145 NAME@[120; 121) 145 NAME@120..121
146 IDENT@[120; 121) "a" 146 IDENT@120..121 "a"
147 COLON@[121; 122) ":" 147 COLON@121..122 ":"
148 WHITESPACE@[122; 123) " " 148 WHITESPACE@122..123 " "
149 REFERENCE_TYPE@[123; 130) 149 REFERENCE_TYPE@123..130
150 AMP@[123; 124) "&" 150 AMP@123..124 "&"
151 REFERENCE_TYPE@[124; 130) 151 REFERENCE_TYPE@124..130
152 AMP@[124; 125) "&" 152 AMP@124..125 "&"
153 PATH_TYPE@[125; 130) 153 PATH_TYPE@125..130
154 PATH@[125; 130) 154 PATH@125..130
155 PATH_SEGMENT@[125; 130) 155 PATH_SEGMENT@125..130
156 NAME_REF@[125; 130) 156 NAME_REF@125..130
157 IDENT@[125; 130) "usize" 157 IDENT@125..130 "usize"
158 R_PAREN@[130; 131) ")" 158 R_PAREN@130..131 ")"
159 WHITESPACE@[131; 132) " " 159 WHITESPACE@131..132 " "
160 BLOCK_EXPR@[132; 134) 160 BLOCK_EXPR@132..134
161 BLOCK@[132; 134) 161 BLOCK@132..134
162 L_CURLY@[132; 133) "{" 162 L_CURLY@132..133 "{"
163 R_CURLY@[133; 134) "}" 163 R_CURLY@133..134 "}"
164 WHITESPACE@[134; 135) "\n" 164 WHITESPACE@134..135 "\n"
165 R_CURLY@[135; 136) "}" 165 R_CURLY@135..136 "}"
166 WHITESPACE@[136; 137) "\n" 166 WHITESPACE@136..137 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast b/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast
index 91d0c3736..3294f4901 100644
--- a/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@0..26
2 FN_DEF@[0; 25) 2 FN_DEF@0..25
3 COMMENT@[0; 11) "/// Example" 3 COMMENT@0..11 "/// Example"
4 WHITESPACE@[11; 13) "\n\n" 4 WHITESPACE@11..13 "\n\n"
5 FN_KW@[13; 15) "fn" 5 FN_KW@13..15 "fn"
6 WHITESPACE@[15; 16) " " 6 WHITESPACE@15..16 " "
7 NAME@[16; 20) 7 NAME@16..20
8 IDENT@[16; 20) "test" 8 IDENT@16..20 "test"
9 PARAM_LIST@[20; 22) 9 PARAM_LIST@20..22
10 L_PAREN@[20; 21) "(" 10 L_PAREN@20..21 "("
11 R_PAREN@[21; 22) ")" 11 R_PAREN@21..22 ")"
12 WHITESPACE@[22; 23) " " 12 WHITESPACE@22..23 " "
13 BLOCK_EXPR@[23; 25) 13 BLOCK_EXPR@23..25
14 BLOCK@[23; 25) 14 BLOCK@23..25
15 L_CURLY@[23; 24) "{" 15 L_CURLY@23..24 "{"
16 R_CURLY@[24; 25) "}" 16 R_CURLY@24..25 "}"
17 WHITESPACE@[25; 26) "\n" 17 WHITESPACE@25..26 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast b/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
index 1b0acf47c..633b14000 100644
--- a/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
@@ -1,61 +1,61 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 FN_DEF@[0; 39) 2 FN_DEF@0..39
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "f" 6 IDENT@3..4 "f"
7 TYPE_PARAM_LIST@[4; 7) 7 TYPE_PARAM_LIST@4..7
8 L_ANGLE@[4; 5) "<" 8 L_ANGLE@4..5 "<"
9 TYPE_PARAM@[5; 6) 9 TYPE_PARAM@5..6
10 NAME@[5; 6) 10 NAME@5..6
11 IDENT@[5; 6) "T" 11 IDENT@5..6 "T"
12 R_ANGLE@[6; 7) ">" 12 R_ANGLE@6..7 ">"
13 PARAM_LIST@[7; 9) 13 PARAM_LIST@7..9
14 L_PAREN@[7; 8) "(" 14 L_PAREN@7..8 "("
15 R_PAREN@[8; 9) ")" 15 R_PAREN@8..9 ")"
16 WHITESPACE@[9; 10) " " 16 WHITESPACE@9..10 " "
17 WHERE_CLAUSE@[10; 36) 17 WHERE_CLAUSE@10..36
18 WHERE_KW@[10; 15) "where" 18 WHERE_KW@10..15 "where"
19 WHITESPACE@[15; 16) " " 19 WHITESPACE@15..16 " "
20 WHERE_PRED@[16; 36) 20 WHERE_PRED@16..36
21 PATH_TYPE@[16; 17) 21 PATH_TYPE@16..17
22 PATH@[16; 17) 22 PATH@16..17
23 PATH_SEGMENT@[16; 17) 23 PATH_SEGMENT@16..17
24 NAME_REF@[16; 17) 24 NAME_REF@16..17
25 IDENT@[16; 17) "T" 25 IDENT@16..17 "T"
26 COLON@[17; 18) ":" 26 COLON@17..18 ":"
27 WHITESPACE@[18; 19) " " 27 WHITESPACE@18..19 " "
28 TYPE_BOUND_LIST@[19; 36) 28 TYPE_BOUND_LIST@19..36
29 TYPE_BOUND@[19; 29) 29 TYPE_BOUND@19..29
30 PATH_TYPE@[19; 29) 30 PATH_TYPE@19..29
31 PATH@[19; 29) 31 PATH@19..29
32 PATH_SEGMENT@[19; 29) 32 PATH_SEGMENT@19..29
33 NAME_REF@[19; 21) 33 NAME_REF@19..21
34 IDENT@[19; 21) "Fn" 34 IDENT@19..21 "Fn"
35 PARAM_LIST@[21; 23) 35 PARAM_LIST@21..23
36 L_PAREN@[21; 22) "(" 36 L_PAREN@21..22 "("
37 R_PAREN@[22; 23) ")" 37 R_PAREN@22..23 ")"
38 WHITESPACE@[23; 24) " " 38 WHITESPACE@23..24 " "
39 RET_TYPE@[24; 29) 39 RET_TYPE@24..29
40 THIN_ARROW@[24; 26) "->" 40 THIN_ARROW@24..26 "->"
41 WHITESPACE@[26; 27) " " 41 WHITESPACE@26..27 " "
42 PATH_TYPE@[27; 29) 42 PATH_TYPE@27..29
43 PATH@[27; 29) 43 PATH@27..29
44 PATH_SEGMENT@[27; 29) 44 PATH_SEGMENT@27..29
45 NAME_REF@[27; 29) 45 NAME_REF@27..29
46 IDENT@[27; 29) "u8" 46 IDENT@27..29 "u8"
47 WHITESPACE@[29; 30) " " 47 WHITESPACE@29..30 " "
48 PLUS@[30; 31) "+" 48 PLUS@30..31 "+"
49 WHITESPACE@[31; 32) " " 49 WHITESPACE@31..32 " "
50 TYPE_BOUND@[32; 36) 50 TYPE_BOUND@32..36
51 PATH_TYPE@[32; 36) 51 PATH_TYPE@32..36
52 PATH@[32; 36) 52 PATH@32..36
53 PATH_SEGMENT@[32; 36) 53 PATH_SEGMENT@32..36
54 NAME_REF@[32; 36) 54 NAME_REF@32..36
55 IDENT@[32; 36) "Send" 55 IDENT@32..36 "Send"
56 WHITESPACE@[36; 37) " " 56 WHITESPACE@36..37 " "
57 BLOCK_EXPR@[37; 39) 57 BLOCK_EXPR@37..39
58 BLOCK@[37; 39) 58 BLOCK@37..39
59 L_CURLY@[37; 38) "{" 59 L_CURLY@37..38 "{"
60 R_CURLY@[38; 39) "}" 60 R_CURLY@38..39 "}"
61 WHITESPACE@[39; 40) "\n" 61 WHITESPACE@39..40 "\n"