From a1c187eef3ba08076aedb5154929f7eda8d1b424 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 12 Aug 2020 18:26:51 +0200 Subject: Rename ra_syntax -> syntax --- crates/syntax/test_data/accidentally_quadratic | 3980 ++++++++++++++++++++ .../lexer/err/0001_unclosed_char_at_eof.rs | 1 + .../lexer/err/0001_unclosed_char_at_eof.txt | 2 + .../lexer/err/0002_unclosed_char_with_ferris.rs | 1 + .../lexer/err/0002_unclosed_char_with_ferris.txt | 2 + .../err/0003_unclosed_char_with_ascii_escape.rs | 1 + .../err/0003_unclosed_char_with_ascii_escape.txt | 2 + .../err/0004_unclosed_char_with_unicode_escape.rs | 1 + .../err/0004_unclosed_char_with_unicode_escape.txt | 2 + .../lexer/err/0005_unclosed_char_with_space.rs | 1 + .../lexer/err/0005_unclosed_char_with_space.txt | 2 + .../lexer/err/0006_unclosed_char_with_slash.rs | 1 + .../lexer/err/0006_unclosed_char_with_slash.txt | 2 + .../lexer/err/0007_unclosed_char_with_slash_n.rs | 1 + .../lexer/err/0007_unclosed_char_with_slash_n.txt | 2 + .../0008_unclosed_char_with_slash_single_quote.rs | 1 + .../0008_unclosed_char_with_slash_single_quote.txt | 2 + .../lexer/err/0009_unclosed_byte_at_eof.rs | 1 + .../lexer/err/0009_unclosed_byte_at_eof.txt | 2 + .../lexer/err/0010_unclosed_byte_with_ferris.rs | 1 + .../lexer/err/0010_unclosed_byte_with_ferris.txt | 2 + .../err/0011_unclosed_byte_with_ascii_escape.rs | 1 + .../err/0011_unclosed_byte_with_ascii_escape.txt | 2 + .../err/0012_unclosed_byte_with_unicode_escape.rs | 1 + .../err/0012_unclosed_byte_with_unicode_escape.txt | 2 + .../lexer/err/0013_unclosed_byte_with_space.rs | 1 + .../lexer/err/0013_unclosed_byte_with_space.txt | 2 + .../lexer/err/0014_unclosed_byte_with_slash.rs | 1 + .../lexer/err/0014_unclosed_byte_with_slash.txt | 2 + .../lexer/err/0015_unclosed_byte_with_slash_n.rs | 1 + .../lexer/err/0015_unclosed_byte_with_slash_n.txt | 2 + .../0016_unclosed_byte_with_slash_single_quote.rs | 1 + .../0016_unclosed_byte_with_slash_single_quote.txt | 2 + .../lexer/err/0017_unclosed_string_at_eof.rs | 1 + .../lexer/err/0017_unclosed_string_at_eof.txt | 2 + .../lexer/err/0018_unclosed_string_with_ferris.rs | 1 + .../lexer/err/0018_unclosed_string_with_ferris.txt | 2 + .../err/0019_unclosed_string_with_ascii_escape.rs | 1 + .../err/0019_unclosed_string_with_ascii_escape.txt | 2 + .../0020_unclosed_string_with_unicode_escape.rs | 1 + .../0020_unclosed_string_with_unicode_escape.txt | 2 + .../lexer/err/0021_unclosed_string_with_space.rs | 1 + .../lexer/err/0021_unclosed_string_with_space.txt | 2 + .../lexer/err/0022_unclosed_string_with_slash.rs | 1 + .../lexer/err/0022_unclosed_string_with_slash.txt | 2 + .../lexer/err/0023_unclosed_string_with_slash_n.rs | 1 + .../err/0023_unclosed_string_with_slash_n.txt | 2 + ...0024_unclosed_string_with_slash_double_quote.rs | 1 + ...024_unclosed_string_with_slash_double_quote.txt | 2 + .../lexer/err/0025_unclosed_byte_string_at_eof.rs | 1 + .../lexer/err/0025_unclosed_byte_string_at_eof.txt | 2 + .../err/0026_unclosed_byte_string_with_ferris.rs | 1 + .../err/0026_unclosed_byte_string_with_ferris.txt | 2 + .../0027_unclosed_byte_string_with_ascii_escape.rs | 1 + ...0027_unclosed_byte_string_with_ascii_escape.txt | 2 + ...028_unclosed_byte_string_with_unicode_escape.rs | 1 + ...28_unclosed_byte_string_with_unicode_escape.txt | 2 + .../err/0029_unclosed_byte_string_with_space.rs | 1 + .../err/0029_unclosed_byte_string_with_space.txt | 2 + .../err/0030_unclosed_byte_string_with_slash.rs | 1 + .../err/0030_unclosed_byte_string_with_slash.txt | 2 + .../err/0031_unclosed_byte_string_with_slash_n.rs | 1 + .../err/0031_unclosed_byte_string_with_slash_n.txt | 2 + ...unclosed_byte_string_with_slash_double_quote.rs | 1 + ...nclosed_byte_string_with_slash_double_quote.txt | 2 + .../lexer/err/0033_unclosed_raw_string_at_eof.rs | 1 + .../lexer/err/0033_unclosed_raw_string_at_eof.txt | 2 + .../err/0034_unclosed_raw_string_with_ferris.rs | 1 + .../err/0034_unclosed_raw_string_with_ferris.txt | 2 + .../0035_unclosed_raw_string_with_ascii_escape.rs | 1 + .../0035_unclosed_raw_string_with_ascii_escape.txt | 2 + ...0036_unclosed_raw_string_with_unicode_escape.rs | 1 + ...036_unclosed_raw_string_with_unicode_escape.txt | 2 + .../err/0037_unclosed_raw_string_with_space.rs | 1 + .../err/0037_unclosed_raw_string_with_space.txt | 2 + .../err/0038_unclosed_raw_string_with_slash.rs | 1 + .../err/0038_unclosed_raw_string_with_slash.txt | 2 + .../err/0039_unclosed_raw_string_with_slash_n.rs | 1 + .../err/0039_unclosed_raw_string_with_slash_n.txt | 2 + .../err/0040_unclosed_raw_byte_string_at_eof.rs | 1 + .../err/0040_unclosed_raw_byte_string_at_eof.txt | 2 + .../0041_unclosed_raw_byte_string_with_ferris.rs | 1 + .../0041_unclosed_raw_byte_string_with_ferris.txt | 2 + ...2_unclosed_raw_byte_string_with_ascii_escape.rs | 1 + ..._unclosed_raw_byte_string_with_ascii_escape.txt | 2 + ...unclosed_raw_byte_string_with_unicode_escape.rs | 1 + ...nclosed_raw_byte_string_with_unicode_escape.txt | 2 + .../0044_unclosed_raw_byte_string_with_space.rs | 1 + .../0044_unclosed_raw_byte_string_with_space.txt | 2 + .../0045_unclosed_raw_byte_string_with_slash.rs | 1 + .../0045_unclosed_raw_byte_string_with_slash.txt | 2 + .../0046_unclosed_raw_byte_string_with_slash_n.rs | 1 + .../0046_unclosed_raw_byte_string_with_slash_n.txt | 2 + .../lexer/err/0047_unstarted_raw_string_at_eof.rs | 1 + .../lexer/err/0047_unstarted_raw_string_at_eof.txt | 2 + .../err/0048_unstarted_raw_byte_string_at_eof.rs | 1 + .../err/0048_unstarted_raw_byte_string_at_eof.txt | 2 + .../err/0049_unstarted_raw_string_with_ascii.rs | 1 + .../err/0049_unstarted_raw_string_with_ascii.txt | 10 + .../0050_unstarted_raw_byte_string_with_ascii.rs | 1 + .../0050_unstarted_raw_byte_string_with_ascii.txt | 10 + .../err/0051_unclosed_block_comment_at_eof.rs | 1 + .../err/0051_unclosed_block_comment_at_eof.txt | 2 + .../0052_unclosed_block_comment_with_content.rs | 1 + .../0052_unclosed_block_comment_with_content.txt | 2 + .../0053_unclosed_nested_block_comment_entirely.rs | 1 + ...0053_unclosed_nested_block_comment_entirely.txt | 2 + ...0054_unclosed_nested_block_comment_partially.rs | 1 + ...054_unclosed_nested_block_comment_partially.txt | 2 + .../syntax/test_data/lexer/err/0055_empty_int.rs | 17 + .../syntax/test_data/lexer/err/0055_empty_int.txt | 39 + .../test_data/lexer/err/0056_empty_exponent.rs | 22 + .../test_data/lexer/err/0056_empty_exponent.txt | 62 + .../err/0057_lifetime_strarts_with_a_number.rs | 2 + .../err/0057_lifetime_strarts_with_a_number.txt | 6 + crates/syntax/test_data/lexer/ok/0001_hello.rs | 1 + crates/syntax/test_data/lexer/ok/0001_hello.txt | 3 + .../syntax/test_data/lexer/ok/0002_whitespace.rs | 4 + .../syntax/test_data/lexer/ok/0002_whitespace.txt | 12 + crates/syntax/test_data/lexer/ok/0003_ident.rs | 1 + crates/syntax/test_data/lexer/ok/0003_ident.txt | 14 + crates/syntax/test_data/lexer/ok/0004_numbers.rs | 9 + crates/syntax/test_data/lexer/ok/0004_numbers.txt | 57 + crates/syntax/test_data/lexer/ok/0005_symbols.rs | 6 + crates/syntax/test_data/lexer/ok/0005_symbols.txt | 77 + crates/syntax/test_data/lexer/ok/0006_chars.rs | 1 + crates/syntax/test_data/lexer/ok/0006_chars.txt | 16 + crates/syntax/test_data/lexer/ok/0007_lifetimes.rs | 1 + .../syntax/test_data/lexer/ok/0007_lifetimes.txt | 8 + .../syntax/test_data/lexer/ok/0008_byte_strings.rs | 3 + .../test_data/lexer/ok/0008_byte_strings.txt | 22 + crates/syntax/test_data/lexer/ok/0009_strings.rs | 2 + crates/syntax/test_data/lexer/ok/0009_strings.txt | 8 + .../lexer/ok/0010_single_line_comments.rs | 12 + .../lexer/ok/0010_single_line_comments.txt | 22 + crates/syntax/test_data/lexer/ok/0011_keywords.rs | 3 + crates/syntax/test_data/lexer/ok/0011_keywords.txt | 64 + .../test_data/lexer/ok/0012_block_comment.rs | 3 + .../test_data/lexer/ok/0012_block_comment.txt | 6 + .../syntax/test_data/lexer/ok/0013_raw_strings.rs | 1 + .../syntax/test_data/lexer/ok/0013_raw_strings.txt | 2 + crates/syntax/test_data/lexer/ok/0014_raw_ident.rs | 1 + .../syntax/test_data/lexer/ok/0014_raw_ident.txt | 2 + .../err/0000_struct_field_missing_comma.rast | 34 + .../parser/err/0000_struct_field_missing_comma.rs | 4 + .../parser/err/0001_item_recovery_in_file.rast | 18 + .../parser/err/0001_item_recovery_in_file.rs | 3 + .../parser/err/0002_duplicate_shebang.rast | 39 + .../test_data/parser/err/0002_duplicate_shebang.rs | 2 + .../test_data/parser/err/0003_C++_semicolon.rast | 39 + .../test_data/parser/err/0003_C++_semicolon.rs | 4 + .../parser/err/0004_use_path_bad_segment.rast | 15 + .../parser/err/0004_use_path_bad_segment.rs | 1 + .../parser/err/0005_attribute_recover.rast | 59 + .../test_data/parser/err/0005_attribute_recover.rs | 8 + .../parser/err/0006_named_field_recovery.rast | 74 + .../parser/err/0006_named_field_recovery.rs | 7 + .../parser/err/0007_stray_curly_in_file.rast | 32 + .../parser/err/0007_stray_curly_in_file.rs | 9 + .../parser/err/0008_item_block_recovery.rast | 77 + .../parser/err/0008_item_block_recovery.rs | 13 + .../err/0009_broken_struct_type_parameter.rast | 58 + .../err/0009_broken_struct_type_parameter.rs | 5 + .../parser/err/0010_unsafe_lambda_block.rast | 44 + .../parser/err/0010_unsafe_lambda_block.rs | 3 + .../test_data/parser/err/0011_extern_struct.rast | 13 + .../test_data/parser/err/0011_extern_struct.rs | 1 + .../test_data/parser/err/0012_broken_lambda.rast | 387 ++ .../test_data/parser/err/0013_invalid_type.rast | 89 + .../test_data/parser/err/0013_invalid_type.rs | 7 + .../test_data/parser/err/0014_where_no_bounds.rast | 31 + .../test_data/parser/err/0014_where_no_bounds.rs | 1 + .../test_data/parser/err/0015_curly_in_params.rast | 24 + .../test_data/parser/err/0015_curly_in_params.rs | 2 + .../test_data/parser/err/0016_missing_semi.rast | 43 + .../test_data/parser/err/0016_missing_semi.rs | 6 + .../parser/err/0017_incomplete_binexpr.rast | 46 + .../parser/err/0017_incomplete_binexpr.rs | 4 + .../test_data/parser/err/0018_incomplete_fn.rast | 131 + .../test_data/parser/err/0018_incomplete_fn.rs | 8 + .../test_data/parser/err/0019_let_recover.rast | 103 + .../test_data/parser/err/0019_let_recover.rs | 12 + .../test_data/parser/err/0020_fn_recover.rast | 20 + .../syntax/test_data/parser/err/0020_fn_recover.rs | 3 + .../parser/err/0021_incomplete_param.rast | 34 + .../test_data/parser/err/0021_incomplete_param.rs | 2 + .../test_data/parser/err/0022_bad_exprs.rast | 180 + .../syntax/test_data/parser/err/0022_bad_exprs.rs | 3 + .../parser/err/0023_mismatched_paren.rast | 43 + .../test_data/parser/err/0023_mismatched_paren.rs | 5 + .../parser/err/0024_many_type_parens.rast | 319 ++ .../test_data/parser/err/0024_many_type_parens.rs | 7 + crates/syntax/test_data/parser/err/0025_nope.rast | 202 + crates/syntax/test_data/parser/err/0025_nope.rs | 31 + .../test_data/parser/err/0026_imp_recovery.rast | 49 + .../test_data/parser/err/0026_imp_recovery.rs | 2 + .../parser/err/0027_incomplere_where_for.rast | 27 + .../parser/err/0027_incomplere_where_for.rs | 3 + .../parser/err/0029_field_completion.rast | 35 + .../test_data/parser/err/0029_field_completion.rs | 3 + .../parser/err/0031_block_inner_attrs.rast | 121 + .../test_data/parser/err/0031_block_inner_attrs.rs | 15 + .../parser/err/0032_match_arms_inner_attrs.rast | 203 + .../parser/err/0032_match_arms_inner_attrs.rs | 20 + .../parser/err/0033_match_arms_outer_attrs.rast | 66 + .../parser/err/0033_match_arms_outer_attrs.rs | 7 + .../test_data/parser/err/0034_bad_box_pattern.rast | 95 + .../test_data/parser/err/0034_bad_box_pattern.rs | 6 + .../test_data/parser/err/0035_use_recover.rast | 53 + .../test_data/parser/err/0035_use_recover.rs | 5 + .../test_data/parser/err/0036_partial_use.rast | 51 + .../test_data/parser/err/0036_partial_use.rs | 2 + .../parser/err/0037_visibility_in_traits.rast | 97 + .../parser/err/0037_visibility_in_traits.rs | 6 + .../parser/err/0038_endless_inclusive_range.rast | 29 + .../parser/err/0038_endless_inclusive_range.rs | 4 + .../test_data/parser/err/0039_lambda_recovery.rast | 82 + .../test_data/parser/err/0039_lambda_recovery.rs | 5 + .../parser/err/0040_illegal_crate_kw_location.rast | 91 + .../parser/err/0040_illegal_crate_kw_location.rs | 4 + .../err/0041_illegal_super_keyword_location.rast | 70 + .../err/0041_illegal_super_keyword_location.rs | 4 + .../err/0042_illegal_self_keyword_location.rast | 27 + .../err/0042_illegal_self_keyword_location.rs | 2 + .../test_data/parser/err/0043_weird_blocks.rast | 71 + .../test_data/parser/err/0043_weird_blocks.rs | 6 + .../parser/err/0044_unexpected_for_type.rast | 240 ++ .../parser/err/0044_unexpected_for_type.rs | 9 + .../test_data/parser/err/0045_item_modifiers.rast | 45 + .../test_data/parser/err/0045_item_modifiers.rs | 2 + .../fragments/expr/err/0000_truncated_add.rast | 1 + .../fragments/expr/err/0000_truncated_add.rs | 1 + .../parser/fragments/expr/ok/0000_add.rast | 8 + .../test_data/parser/fragments/expr/ok/0000_add.rs | 1 + .../fragments/item/err/0000_extra_keyword.rast | 1 + .../fragments/item/err/0000_extra_keyword.rs | 1 + .../parser/fragments/item/ok/0000_fn.rast | 12 + .../test_data/parser/fragments/item/ok/0000_fn.rs | 1 + .../fragments/path/err/0000_reserved_word.rast | 1 + .../fragments/path/err/0000_reserved_word.rs | 1 + .../parser/fragments/path/err/0001_expression.rast | 1 + .../parser/fragments/path/err/0001_expression.rs | 1 + .../fragments/path/ok/0000_single_ident.rast | 4 + .../parser/fragments/path/ok/0000_single_ident.rs | 1 + .../parser/fragments/path/ok/0001_multipart.rast | 14 + .../parser/fragments/path/ok/0001_multipart.rs | 1 + .../fragments/pattern/err/0000_reserved_word.rast | 1 + .../fragments/pattern/err/0000_reserved_word.rs | 1 + .../fragments/pattern/err/0001_missing_paren.rast | 1 + .../fragments/pattern/err/0001_missing_paren.rs | 1 + .../parser/fragments/pattern/ok/0000_enum.rast | 10 + .../parser/fragments/pattern/ok/0000_enum.rs | 1 + .../fragments/type/err/0000_missing_close.rast | 1 + .../fragments/type/err/0000_missing_close.rs | 1 + .../parser/fragments/type/ok/0000_result.rast | 22 + .../parser/fragments/type/ok/0000_result.rs | 1 + .../syntax/test_data/parser/fuzz-failures/0000.rs | 199 + .../syntax/test_data/parser/fuzz-failures/0001.rs | 106 + .../syntax/test_data/parser/fuzz-failures/0002.rs | 1 + .../syntax/test_data/parser/fuzz-failures/0003.rs | 1 + .../syntax/test_data/parser/fuzz-failures/0004.rs | 1 + .../inline/err/0001_array_type_missing_semi.rast | 27 + .../inline/err/0001_array_type_missing_semi.rs | 1 + .../inline/err/0002_misplaced_label_err.rast | 28 + .../parser/inline/err/0002_misplaced_label_err.rs | 3 + .../err/0003_pointer_type_no_mutability.rast | 17 + .../inline/err/0003_pointer_type_no_mutability.rs | 1 + .../parser/inline/err/0004_impl_type.rast | 79 + .../test_data/parser/inline/err/0004_impl_type.rs | 4 + .../err/0005_fn_pointer_type_missing_fn.rast | 23 + .../inline/err/0005_fn_pointer_type_missing_fn.rs | 1 + .../inline/err/0006_unsafe_block_in_mod.rast | 35 + .../parser/inline/err/0006_unsafe_block_in_mod.rs | 1 + .../inline/err/0007_async_without_semicolon.rast | 31 + .../inline/err/0007_async_without_semicolon.rs | 1 + .../test_data/parser/inline/err/0008_pub_expr.rast | 25 + .../test_data/parser/inline/err/0008_pub_expr.rs | 1 + .../inline/err/0009_attr_on_expr_not_allowed.rast | 58 + .../inline/err/0009_attr_on_expr_not_allowed.rs | 4 + .../inline/err/0010_bad_tuple_index_expr.rast | 52 + .../parser/inline/err/0010_bad_tuple_index_expr.rs | 5 + .../parser/inline/err/0013_static_underscore.rast | 21 + .../parser/inline/err/0013_static_underscore.rs | 1 + ...14_record_literal_before_ellipsis_recovery.rast | 48 + ...0014_record_literal_before_ellipsis_recovery.rs | 3 + .../parser/inline/err/0015_empty_segment.rast | 15 + .../parser/inline/err/0015_empty_segment.rs | 1 + .../parser/inline/ok/0001_trait_item_list.rast | 71 + .../parser/inline/ok/0001_trait_item_list.rs | 6 + .../parser/inline/ok/0002_use_tree_list.rast | 136 + .../parser/inline/ok/0002_use_tree_list.rs | 4 + .../parser/inline/ok/0003_where_pred_for.rast | 60 + .../parser/inline/ok/0003_where_pred_for.rs | 4 + .../ok/0004_value_parameters_no_patterns.rast | 60 + .../inline/ok/0004_value_parameters_no_patterns.rs | 1 + .../inline/ok/0005_function_type_params.rast | 37 + .../parser/inline/ok/0005_function_type_params.rs | 1 + .../parser/inline/ok/0006_self_param.rast | 116 + .../test_data/parser/inline/ok/0006_self_param.rs | 7 + .../parser/inline/ok/0007_type_param_bounds.rast | 40 + .../parser/inline/ok/0007_type_param_bounds.rs | 1 + .../test_data/parser/inline/ok/0008_path_part.rast | 96 + .../test_data/parser/inline/ok/0008_path_part.rs | 6 + .../test_data/parser/inline/ok/0009_loop_expr.rast | 24 + .../test_data/parser/inline/ok/0009_loop_expr.rs | 3 + .../parser/inline/ok/0010_extern_block.rast | 9 + .../parser/inline/ok/0010_extern_block.rs | 1 + .../parser/inline/ok/0011_field_expr.rast | 59 + .../test_data/parser/inline/ok/0011_field_expr.rs | 5 + .../inline/ok/0012_type_item_where_clause.rast | 33 + .../inline/ok/0012_type_item_where_clause.rs | 1 + .../parser/inline/ok/0013_pointer_type_mut.rast | 35 + .../parser/inline/ok/0013_pointer_type_mut.rs | 2 + .../parser/inline/ok/0014_never_type.rast | 13 + .../test_data/parser/inline/ok/0014_never_type.rs | 1 + .../parser/inline/ok/0015_continue_expr.rast | 35 + .../parser/inline/ok/0015_continue_expr.rs | 6 + .../parser/inline/ok/0017_array_type.rast | 21 + .../test_data/parser/inline/ok/0017_array_type.rs | 1 + .../parser/inline/ok/0018_arb_self_types.rast | 72 + .../parser/inline/ok/0018_arb_self_types.rs | 4 + .../parser/inline/ok/0019_unary_expr.rast | 44 + .../test_data/parser/inline/ok/0019_unary_expr.rs | 5 + .../test_data/parser/inline/ok/0020_use_star.rast | 59 + .../test_data/parser/inline/ok/0020_use_star.rs | 4 + .../parser/inline/ok/0021_impl_item_list.rast | 78 + .../parser/inline/ok/0021_impl_item_list.rs | 6 + .../parser/inline/ok/0022_crate_visibility.rast | 53 + .../parser/inline/ok/0022_crate_visibility.rs | 4 + .../parser/inline/ok/0023_placeholder_type.rast | 13 + .../parser/inline/ok/0023_placeholder_type.rs | 1 + .../test_data/parser/inline/ok/0024_slice_pat.rast | 41 + .../test_data/parser/inline/ok/0024_slice_pat.rs | 3 + .../parser/inline/ok/0025_slice_type.rast | 17 + .../test_data/parser/inline/ok/0025_slice_type.rs | 1 + .../parser/inline/ok/0026_tuple_pat_fields.rast | 104 + .../parser/inline/ok/0026_tuple_pat_fields.rs | 6 + .../test_data/parser/inline/ok/0027_ref_pat.rast | 49 + .../test_data/parser/inline/ok/0027_ref_pat.rs | 4 + .../parser/inline/ok/0028_impl_trait_type.rast | 43 + .../parser/inline/ok/0028_impl_trait_type.rs | 1 + .../test_data/parser/inline/ok/0029_cast_expr.rast | 89 + .../test_data/parser/inline/ok/0029_cast_expr.rs | 6 + .../test_data/parser/inline/ok/0030_cond.rast | 202 + .../syntax/test_data/parser/inline/ok/0030_cond.rs | 7 + .../parser/inline/ok/0031_while_expr.rast | 84 + .../test_data/parser/inline/ok/0031_while_expr.rs | 5 + .../parser/inline/ok/0032_fn_pointer_type.rast | 98 + .../parser/inline/ok/0032_fn_pointer_type.rs | 4 + .../parser/inline/ok/0033_reference_type;.rast | 50 + .../parser/inline/ok/0033_reference_type;.rs | 3 + .../parser/inline/ok/0034_break_expr.rast | 53 + .../test_data/parser/inline/ok/0034_break_expr.rs | 8 + .../parser/inline/ok/0037_qual_paths.rast | 78 + .../test_data/parser/inline/ok/0037_qual_paths.rs | 2 + .../parser/inline/ok/0038_full_range_expr.rast | 28 + .../parser/inline/ok/0038_full_range_expr.rs | 1 + .../test_data/parser/inline/ok/0039_type_arg.rast | 55 + .../test_data/parser/inline/ok/0039_type_arg.rs | 1 + .../parser/inline/ok/0040_crate_keyword_vis.rast | 62 + .../parser/inline/ok/0040_crate_keyword_vis.rs | 3 + .../parser/inline/ok/0041_trait_item.rast | 125 + .../test_data/parser/inline/ok/0041_trait_item.rs | 2 + .../test_data/parser/inline/ok/0042_call_expr.rast | 147 + .../test_data/parser/inline/ok/0042_call_expr.rs | 6 + .../test_data/parser/inline/ok/0043_use_alias.rast | 138 + .../test_data/parser/inline/ok/0043_use_alias.rs | 8 + .../parser/inline/ok/0044_block_items.rast | 28 + .../test_data/parser/inline/ok/0044_block_items.rs | 1 + .../inline/ok/0045_param_list_opt_patterns.rast | 46 + .../inline/ok/0045_param_list_opt_patterns.rs | 1 + .../inline/ok/0046_singleton_tuple_type.rast | 20 + .../parser/inline/ok/0046_singleton_tuple_type.rs | 1 + .../inline/ok/0048_path_type_with_bounds.rast | 81 + .../parser/inline/ok/0048_path_type_with_bounds.rs | 2 + .../test_data/parser/inline/ok/0050_fn_decl.rast | 22 + .../test_data/parser/inline/ok/0050_fn_decl.rs | 1 + .../test_data/parser/inline/ok/0051_unit_type.rast | 14 + .../test_data/parser/inline/ok/0051_unit_type.rs | 1 + .../test_data/parser/inline/ok/0052_path_type.rast | 70 + .../test_data/parser/inline/ok/0052_path_type.rs | 4 + .../test_data/parser/inline/ok/0053_path_expr.rast | 95 + .../test_data/parser/inline/ok/0053_path_expr.rs | 6 + .../parser/inline/ok/0054_record_field_attrs.rast | 44 + .../parser/inline/ok/0054_record_field_attrs.rs | 4 + .../parser/inline/ok/0055_literal_pattern.rast | 76 + .../parser/inline/ok/0055_literal_pattern.rs | 8 + .../parser/inline/ok/0056_where_clause.rast | 110 + .../parser/inline/ok/0056_where_clause.rs | 7 + .../test_data/parser/inline/ok/0058_range_pat.rast | 82 + .../test_data/parser/inline/ok/0058_range_pat.rs | 7 + .../parser/inline/ok/0059_match_arms_commas.rast | 58 + .../parser/inline/ok/0059_match_arms_commas.rs | 7 + .../parser/inline/ok/0060_extern_crate.rast | 10 + .../parser/inline/ok/0060_extern_crate.rs | 1 + .../parser/inline/ok/0061_record_lit.rast | 124 + .../test_data/parser/inline/ok/0061_record_lit.rs | 6 + .../parser/inline/ok/0062_mod_contents.rast | 66 + .../parser/inline/ok/0062_mod_contents.rs | 5 + .../parser/inline/ok/0063_impl_def_neg.rast | 23 + .../parser/inline/ok/0063_impl_def_neg.rs | 1 + .../test_data/parser/inline/ok/0064_if_expr.rast | 121 + .../test_data/parser/inline/ok/0064_if_expr.rs | 7 + .../parser/inline/ok/0065_dyn_trait_type.rast | 43 + .../parser/inline/ok/0065_dyn_trait_type.rs | 1 + .../test_data/parser/inline/ok/0066_match_arm.rast | 151 + .../test_data/parser/inline/ok/0066_match_arm.rs | 9 + .../parser/inline/ok/0067_crate_path.rast | 15 + .../test_data/parser/inline/ok/0067_crate_path.rs | 1 + .../parser/inline/ok/0068_union_items.rast | 46 + .../test_data/parser/inline/ok/0068_union_items.rs | 5 + .../inline/ok/0069_use_tree_list_after_path.rast | 37 + .../inline/ok/0069_use_tree_list_after_path.rs | 2 + .../inline/ok/0070_stmt_bin_expr_ambiguity.rast | 50 + .../inline/ok/0070_stmt_bin_expr_ambiguity.rs | 4 + .../parser/inline/ok/0071_match_expr.rast | 93 + .../test_data/parser/inline/ok/0071_match_expr.rs | 6 + .../parser/inline/ok/0072_return_expr.rast | 28 + .../test_data/parser/inline/ok/0072_return_expr.rs | 4 + .../inline/ok/0073_type_item_type_params.rast | 20 + .../parser/inline/ok/0073_type_item_type_params.rs | 1 + .../ok/0074_stmt_postfix_expr_ambiguity.rast | 59 + .../inline/ok/0074_stmt_postfix_expr_ambiguity.rs | 7 + .../test_data/parser/inline/ok/0075_block.rast | 86 + .../test_data/parser/inline/ok/0075_block.rs | 4 + .../inline/ok/0076_function_where_clause.rast | 39 + .../parser/inline/ok/0076_function_where_clause.rs | 1 + .../test_data/parser/inline/ok/0077_try_expr.rast | 25 + .../test_data/parser/inline/ok/0077_try_expr.rs | 3 + .../test_data/parser/inline/ok/0078_type_item.rast | 16 + .../test_data/parser/inline/ok/0078_type_item.rs | 1 + .../test_data/parser/inline/ok/0079_impl_def.rast | 14 + .../test_data/parser/inline/ok/0079_impl_def.rs | 1 + .../parser/inline/ok/0080_postfix_range.rast | 95 + .../parser/inline/ok/0080_postfix_range.rs | 5 + .../test_data/parser/inline/ok/0081_for_type.rast | 112 + .../test_data/parser/inline/ok/0081_for_type.rs | 3 + .../test_data/parser/inline/ok/0082_ref_expr.rast | 138 + .../test_data/parser/inline/ok/0082_ref_expr.rs | 10 + .../parser/inline/ok/0083_struct_items.rast | 87 + .../parser/inline/ok/0083_struct_items.rs | 8 + .../parser/inline/ok/0084_paren_type.rast | 19 + .../test_data/parser/inline/ok/0084_paren_type.rs | 1 + .../parser/inline/ok/0085_expr_literals.rast | 135 + .../parser/inline/ok/0085_expr_literals.rs | 12 + .../parser/inline/ok/0086_function_ret_type.rast | 34 + .../parser/inline/ok/0086_function_ret_type.rs | 2 + .../parser/inline/ok/0088_break_ambiguity.rast | 65 + .../parser/inline/ok/0088_break_ambiguity.rs | 6 + .../parser/inline/ok/0090_type_param_default.rast | 22 + .../parser/inline/ok/0090_type_param_default.rs | 1 + .../inline/ok/0092_fn_pointer_type_with_ret.rast | 23 + .../inline/ok/0092_fn_pointer_type_with_ret.rs | 1 + .../parser/inline/ok/0093_index_expr.rast | 33 + .../test_data/parser/inline/ok/0093_index_expr.rs | 3 + .../parser/inline/ok/0095_placeholder_pat.rast | 28 + .../parser/inline/ok/0095_placeholder_pat.rs | 1 + .../parser/inline/ok/0096_no_semi_after_block.rast | 123 + .../parser/inline/ok/0096_no_semi_after_block.rs | 13 + .../parser/inline/ok/0099_param_list.rast | 99 + .../test_data/parser/inline/ok/0099_param_list.rs | 4 + .../test_data/parser/inline/ok/0100_for_expr.rast | 34 + .../test_data/parser/inline/ok/0100_for_expr.rs | 3 + .../inline/ok/0102_record_field_pat_list.rast | 132 + .../parser/inline/ok/0102_record_field_pat_list.rs | 6 + .../parser/inline/ok/0103_array_expr.rast | 54 + .../test_data/parser/inline/ok/0103_array_expr.rs | 6 + .../parser/inline/ok/0104_path_fn_trait_args.rast | 41 + .../parser/inline/ok/0104_path_fn_trait_args.rs | 1 + .../parser/inline/ok/0106_lambda_expr.rast | 135 + .../test_data/parser/inline/ok/0106_lambda_expr.rs | 9 + .../parser/inline/ok/0107_method_call_expr.rast | 62 + .../parser/inline/ok/0107_method_call_expr.rs | 4 + .../parser/inline/ok/0108_tuple_expr.rast | 38 + .../test_data/parser/inline/ok/0108_tuple_expr.rs | 5 + .../test_data/parser/inline/ok/0109_label.rast | 64 + .../test_data/parser/inline/ok/0109_label.rs | 5 + .../test_data/parser/inline/ok/0110_use_path.rast | 38 + .../test_data/parser/inline/ok/0110_use_path.rs | 3 + .../test_data/parser/inline/ok/0111_tuple_pat.rast | 89 + .../test_data/parser/inline/ok/0111_tuple_pat.rs | 6 + .../test_data/parser/inline/ok/0112_bind_pat.rast | 127 + .../test_data/parser/inline/ok/0112_bind_pat.rs | 8 + .../parser/inline/ok/0113_nocontentexpr.rast | 55 + .../parser/inline/ok/0113_nocontentexpr.rs | 3 + .../parser/inline/ok/0114_tuple_struct_where.rast | 64 + .../parser/inline/ok/0114_tuple_struct_where.rs | 2 + .../parser/inline/ok/0115_tuple_field_attrs.rast | 41 + .../parser/inline/ok/0115_tuple_field_attrs.rs | 4 + .../parser/inline/ok/0117_macro_call_type.rast | 43 + .../parser/inline/ok/0117_macro_call_type.rs | 2 + .../inline/ok/0118_impl_inner_attributes.rast | 40 + .../parser/inline/ok/0118_impl_inner_attributes.rs | 5 + .../parser/inline/ok/0118_match_guard.rast | 47 + .../test_data/parser/inline/ok/0118_match_guard.rs | 5 + .../inline/ok/0120_match_arms_inner_attribute.rast | 80 + .../inline/ok/0120_match_arms_inner_attribute.rs | 8 + .../ok/0121_match_arms_outer_attributes.rast | 145 + .../inline/ok/0121_match_arms_outer_attributes.rs | 12 + .../ok/0122_generic_lifetime_type_attribute.rast | 65 + .../ok/0122_generic_lifetime_type_attribute.rs | 2 + .../parser/inline/ok/0123_param_list_vararg.rast | 50 + .../parser/inline/ok/0123_param_list_vararg.rs | 1 + .../parser/inline/ok/0125_crate_keyword_path.rast | 31 + .../parser/inline/ok/0125_crate_keyword_path.rs | 1 + .../ok/0125_record_literal_field_with_attr.rast | 47 + .../ok/0125_record_literal_field_with_attr.rs | 3 + .../parser/inline/ok/0126_attr_on_expr_stmt.rast | 97 + .../parser/inline/ok/0126_attr_on_expr_stmt.rs | 6 + .../inline/ok/0127_attr_on_last_expr_in_block.rast | 57 + .../inline/ok/0127_attr_on_last_expr_in_block.rs | 4 + .../test_data/parser/inline/ok/0129_marco_pat.rast | 36 + .../test_data/parser/inline/ok/0129_marco_pat.rs | 3 + .../test_data/parser/inline/ok/0130_let_stmt.rast | 126 + .../test_data/parser/inline/ok/0130_let_stmt.rs | 9 + .../parser/inline/ok/0130_try_block_expr.rast | 31 + .../parser/inline/ok/0130_try_block_expr.rs | 3 + .../parser/inline/ok/0131_existential_type.rast | 31 + .../parser/inline/ok/0131_existential_type.rs | 1 + .../test_data/parser/inline/ok/0132_box_expr.rast | 89 + .../test_data/parser/inline/ok/0132_box_expr.rs | 5 + .../inline/ok/0134_nocontentexpr_after_item.rast | 62 + .../inline/ok/0134_nocontentexpr_after_item.rs | 8 + .../parser/inline/ok/0137_await_expr.rast | 69 + .../test_data/parser/inline/ok/0137_await_expr.rs | 5 + .../inline/ok/0138_associated_type_bounds.rast | 55 + .../inline/ok/0138_associated_type_bounds.rs | 1 + .../inline/ok/0138_expression_after_block.rast | 64 + .../inline/ok/0138_expression_after_block.rs | 4 + .../inline/ok/0138_self_param_outer_attr.rast | 25 + .../parser/inline/ok/0138_self_param_outer_attr.rs | 1 + .../parser/inline/ok/0139_param_outer_arg.rast | 34 + .../parser/inline/ok/0139_param_outer_arg.rs | 1 + .../parser/inline/ok/0142_for_range_from.rast | 40 + .../parser/inline/ok/0142_for_range_from.rs | 5 + .../test_data/parser/inline/ok/0143_box_pat.rast | 110 + .../test_data/parser/inline/ok/0143_box_pat.rs | 5 + .../parser/inline/ok/0144_dot_dot_pat.rast | 455 +++ .../test_data/parser/inline/ok/0144_dot_dot_pat.rs | 25 + .../parser/inline/ok/0145_record_field_pat.rast | 75 + .../parser/inline/ok/0145_record_field_pat.rs | 4 + .../parser/inline/ok/0146_as_precedence.rast | 42 + .../parser/inline/ok/0146_as_precedence.rs | 3 + .../parser/inline/ok/0147_const_param.rast | 23 + .../test_data/parser/inline/ok/0147_const_param.rs | 1 + .../test_data/parser/inline/ok/0147_macro_def.rast | 45 + .../test_data/parser/inline/ok/0147_macro_def.rs | 2 + .../parser/inline/ok/0148_pub_macro_def.rast | 21 + .../parser/inline/ok/0148_pub_macro_def.rs | 1 + .../parser/inline/ok/0150_array_attrs.rast | 47 + .../test_data/parser/inline/ok/0150_array_attrs.rs | 1 + .../parser/inline/ok/0150_impl_type_params.rast | 38 + .../parser/inline/ok/0150_impl_type_params.rs | 1 + .../syntax/test_data/parser/inline/ok/0151_fn.rast | 14 + .../syntax/test_data/parser/inline/ok/0151_fn.rs | 1 + .../parser/inline/ok/0151_trait_alias.rast | 128 + .../test_data/parser/inline/ok/0151_trait_alias.rs | 3 + .../parser/inline/ok/0152_arg_with_attr.rast | 36 + .../parser/inline/ok/0152_arg_with_attr.rs | 3 + .../test_data/parser/inline/ok/0152_impl.rast | 22 + .../syntax/test_data/parser/inline/ok/0152_impl.rs | 1 + .../test_data/parser/inline/ok/0153_trait.rast | 11 + .../test_data/parser/inline/ok/0153_trait.rs | 1 + .../ok/0154_fn_pointer_param_ident_path.rast | 58 + .../inline/ok/0154_fn_pointer_param_ident_path.rs | 2 + .../parser/inline/ok/0155_closure_params.rast | 69 + .../parser/inline/ok/0155_closure_params.rs | 3 + .../parser/inline/ok/0156_fn_def_param.rast | 43 + .../parser/inline/ok/0156_fn_def_param.rs | 1 + .../parser/inline/ok/0156_or_pattern.rast | 111 + .../test_data/parser/inline/ok/0156_or_pattern.rs | 8 + .../inline/ok/0157_fn_pointer_unnamed_arg.rast | 26 + .../inline/ok/0157_fn_pointer_unnamed_arg.rs | 1 + .../inline/ok/0157_variant_discriminant.rast | 30 + .../parser/inline/ok/0157_variant_discriminant.rs | 1 + .../inline/ok/0158_binop_resets_statementness.rast | 36 + .../inline/ok/0158_binop_resets_statementness.rs | 3 + .../parser/inline/ok/0158_lambda_ret_block.rast | 43 + .../parser/inline/ok/0158_lambda_ret_block.rs | 1 + .../parser/inline/ok/0159_try_macro_fallback.rast | 34 + .../parser/inline/ok/0159_try_macro_fallback.rs | 1 + .../parser/inline/ok/0160_try_macro_rules.rast | 27 + .../parser/inline/ok/0160_try_macro_rules.rs | 1 + .../parser/inline/ok/0161_labeled_block.rast | 26 + .../parser/inline/ok/0161_labeled_block.rs | 1 + .../parser/inline/ok/0162_unsafe_block.rast | 23 + .../parser/inline/ok/0162_unsafe_block.rs | 1 + .../parser/inline/ok/0163_default_unsafe_item.rast | 44 + .../parser/inline/ok/0163_default_unsafe_item.rs | 3 + .../parser/inline/ok/0164_default_item.rast | 24 + .../parser/inline/ok/0164_default_item.rs | 1 + .../inline/ok/0164_type_path_in_pattern.rast | 38 + .../parser/inline/ok/0164_type_path_in_pattern.rs | 1 + crates/syntax/test_data/parser/ok/0000_empty.rast | 1 + crates/syntax/test_data/parser/ok/0000_empty.rs | 0 .../test_data/parser/ok/0001_struct_item.rast | 39 + .../syntax/test_data/parser/ok/0001_struct_item.rs | 3 + .../parser/ok/0002_struct_item_field.rast | 22 + .../test_data/parser/ok/0002_struct_item_field.rs | 3 + .../test_data/parser/ok/0004_file_shebang.rast | 2 + .../test_data/parser/ok/0004_file_shebang.rs | 1 + .../syntax/test_data/parser/ok/0005_fn_item.rast | 15 + crates/syntax/test_data/parser/ok/0005_fn_item.rs | 2 + .../test_data/parser/ok/0006_inner_attributes.rast | 184 + .../test_data/parser/ok/0006_inner_attributes.rs | 10 + .../test_data/parser/ok/0007_extern_crate.rast | 39 + .../test_data/parser/ok/0007_extern_crate.rs | 3 + .../syntax/test_data/parser/ok/0008_mod_item.rast | 92 + crates/syntax/test_data/parser/ok/0008_mod_item.rs | 17 + .../syntax/test_data/parser/ok/0009_use_item.rast | 21 + crates/syntax/test_data/parser/ok/0009_use_item.rs | 2 + .../parser/ok/0010_use_path_segments.rast | 42 + .../test_data/parser/ok/0010_use_path_segments.rs | 2 + .../test_data/parser/ok/0011_outer_attribute.rast | 57 + .../test_data/parser/ok/0011_outer_attribute.rs | 6 + .../test_data/parser/ok/0012_visibility.rast | 102 + .../syntax/test_data/parser/ok/0012_visibility.rs | 5 + .../parser/ok/0013_use_path_self_super.rast | 33 + .../parser/ok/0013_use_path_self_super.rs | 2 + .../syntax/test_data/parser/ok/0014_use_tree.rast | 95 + crates/syntax/test_data/parser/ok/0014_use_tree.rs | 7 + .../syntax/test_data/parser/ok/0015_use_tree.rast | 65 + crates/syntax/test_data/parser/ok/0015_use_tree.rs | 2 + .../test_data/parser/ok/0016_struct_flavors.rast | 93 + .../test_data/parser/ok/0016_struct_flavors.rs | 10 + .../parser/ok/0017_attr_trailing_comma.rast | 28 + .../parser/ok/0017_attr_trailing_comma.rs | 2 + .../parser/ok/0018_struct_type_params.rast | 257 ++ .../test_data/parser/ok/0018_struct_type_params.rs | 17 + crates/syntax/test_data/parser/ok/0019_enums.rast | 155 + crates/syntax/test_data/parser/ok/0019_enums.rs | 25 + .../parser/ok/0020_type_param_bounds.rast | 268 ++ .../test_data/parser/ok/0020_type_param_bounds.rs | 10 + .../parser/ok/0022_empty_extern_block.rast | 21 + .../test_data/parser/ok/0022_empty_extern_block.rs | 5 + .../test_data/parser/ok/0023_static_items.rast | 41 + .../test_data/parser/ok/0023_static_items.rs | 2 + .../test_data/parser/ok/0024_const_item.rast | 59 + .../syntax/test_data/parser/ok/0024_const_item.rs | 3 + .../parser/ok/0025_extern_fn_in_block.rast | 31 + .../test_data/parser/ok/0025_extern_fn_in_block.rs | 3 + .../parser/ok/0026_const_fn_in_block.rast | 30 + .../test_data/parser/ok/0026_const_fn_in_block.rs | 3 + .../parser/ok/0027_unsafe_fn_in_block.rast | 41 + .../test_data/parser/ok/0027_unsafe_fn_in_block.rs | 4 + .../parser/ok/0028_operator_binding_power.rast | 185 + .../parser/ok/0028_operator_binding_power.rs | 14 + .../test_data/parser/ok/0029_range_forms.rast | 151 + .../syntax/test_data/parser/ok/0029_range_forms.rs | 11 + .../test_data/parser/ok/0030_string_suffixes.rast | 63 + .../test_data/parser/ok/0030_string_suffixes.rs | 6 + crates/syntax/test_data/parser/ok/0030_traits.rast | 61 + crates/syntax/test_data/parser/ok/0030_traits.rs | 7 + crates/syntax/test_data/parser/ok/0031_extern.rast | 973 +++++ crates/syntax/test_data/parser/ok/0031_extern.rs | 29 + .../syntax/test_data/parser/ok/0032_where_for.rast | 90 + .../syntax/test_data/parser/ok/0032_where_for.rs | 4 + .../test_data/parser/ok/0033_label_break.rast | 215 ++ .../syntax/test_data/parser/ok/0033_label_break.rs | 28 + .../parser/ok/0034_crate_path_in_call.rast | 41 + .../test_data/parser/ok/0034_crate_path_in_call.rs | 3 + .../test_data/parser/ok/0035_weird_exprs.rast | 2291 +++++++++++ .../syntax/test_data/parser/ok/0035_weird_exprs.rs | 154 + .../test_data/parser/ok/0036_fully_qualified.rast | 92 + .../test_data/parser/ok/0036_fully_qualified.rs | 8 + crates/syntax/test_data/parser/ok/0037_mod.rast | 16 + crates/syntax/test_data/parser/ok/0037_mod.rs | 5 + .../test_data/parser/ok/0038_where_pred_type.rast | 42 + .../test_data/parser/ok/0038_where_pred_type.rs | 1 + .../test_data/parser/ok/0039_raw_fn_item.rast | 15 + .../syntax/test_data/parser/ok/0039_raw_fn_item.rs | 2 + .../parser/ok/0040_raw_struct_item_field.rast | 22 + .../parser/ok/0040_raw_struct_item_field.rs | 3 + .../test_data/parser/ok/0041_raw_keywords.rast | 49 + .../test_data/parser/ok/0041_raw_keywords.rs | 1 + .../test_data/parser/ok/0042_ufcs_call_list.rast | 123 + .../test_data/parser/ok/0042_ufcs_call_list.rs | 15 + .../parser/ok/0043_complex_assignment.rast | 109 + .../test_data/parser/ok/0043_complex_assignment.rs | 8 + .../syntax/test_data/parser/ok/0044_let_attrs.rast | 75 + .../syntax/test_data/parser/ok/0044_let_attrs.rs | 5 + .../parser/ok/0045_block_inner_attrs.rast | 177 + .../test_data/parser/ok/0045_block_inner_attrs.rs | 20 + .../parser/ok/0046_extern_inner_attributes.rast | 28 + .../parser/ok/0046_extern_inner_attributes.rs | 4 + .../parser/ok/0047_minus_in_inner_pattern.rast | 320 ++ .../parser/ok/0047_minus_in_inner_pattern.rs | 27 + .../parser/ok/0048_compound_assignment.rast | 200 + .../parser/ok/0048_compound_assignment.rs | 17 + .../test_data/parser/ok/0049_async_block.rast | 35 + .../syntax/test_data/parser/ok/0049_async_block.rs | 5 + .../parser/ok/0050_async_block_as_argument.rast | 90 + .../parser/ok/0050_async_block_as_argument.rs | 5 + .../test_data/parser/ok/0051_parameter_attrs.rast | 508 +++ .../test_data/parser/ok/0051_parameter_attrs.rs | 21 + .../test_data/parser/ok/0052_for_range_block.rast | 78 + .../test_data/parser/ok/0052_for_range_block.rs | 5 + .../ok/0053_outer_attribute_on_macro_rules.rast | 39 + .../ok/0053_outer_attribute_on_macro_rules.rs | 5 + .../parser/ok/0054_qual_path_in_type_arg.rast | 123 + .../parser/ok/0054_qual_path_in_type_arg.rs | 5 + .../test_data/parser/ok/0055_dot_dot_dot.rast | 49 + .../syntax/test_data/parser/ok/0055_dot_dot_dot.rs | 5 + .../test_data/parser/ok/0056_neq_in_type.rast | 64 + .../syntax/test_data/parser/ok/0056_neq_in_type.rs | 3 + .../test_data/parser/ok/0057_loop_in_call.rast | 56 + .../test_data/parser/ok/0057_loop_in_call.rs | 5 + .../parser/ok/0058_unary_expr_precedence.rast | 96 + .../parser/ok/0058_unary_expr_precedence.rs | 7 + .../test_data/parser/ok/0059_loops_in_parens.rast | 97 + .../test_data/parser/ok/0059_loops_in_parens.rs | 5 + .../syntax/test_data/parser/ok/0060_as_range.rast | 55 + crates/syntax/test_data/parser/ok/0060_as_range.rs | 4 + .../test_data/parser/ok/0061_match_full_range.rast | 26 + .../test_data/parser/ok/0061_match_full_range.rs | 4 + .../syntax/test_data/parser/ok/0062_macro_2.0.rast | 175 + .../syntax/test_data/parser/ok/0062_macro_2.0.rs | 15 + .../parser/ok/0063_trait_fn_patterns.rast | 194 + .../test_data/parser/ok/0063_trait_fn_patterns.rs | 7 + .../test_data/parser/ok/0063_variadic_fun.rast | 133 + .../test_data/parser/ok/0063_variadic_fun.rs | 5 + .../test_data/parser/ok/0064_impl_fn_params.rast | 162 + .../test_data/parser/ok/0064_impl_fn_params.rs | 6 + .../test_data/parser/ok/0065_comment_newline.rast | 16 + .../test_data/parser/ok/0065_comment_newline.rs | 3 + .../parser/ok/0065_plus_after_fn_trait_bound.rast | 60 + .../parser/ok/0065_plus_after_fn_trait_bound.rs | 1 + .../test_data/parser/ok/0066_default_modifier.rast | 218 ++ .../test_data/parser/ok/0066_default_modifier.rs | 16 + .../test_data/parser/ok/0067_where_for_pred.rast | 392 ++ .../test_data/parser/ok/0067_where_for_pred.rs | 30 + .../test_data/parser/ok/0068_item_modifiers.rast | 218 ++ .../test_data/parser/ok/0068_item_modifiers.rs | 16 + .../syntax/test_data/reparse/fuzz-failures/0000.rs | 6 + .../syntax/test_data/reparse/fuzz-failures/0001.rs | 4 + .../syntax/test_data/reparse/fuzz-failures/0002.rs | 4 + .../syntax/test_data/reparse/fuzz-failures/0003.rs | Bin 0 -> 8 bytes .../syntax/test_data/reparse/fuzz-failures/0004.rs | 4 + .../syntax/test_data/reparse/fuzz-failures/0005.rs | 7 + 739 files changed, 30257 insertions(+) create mode 100644 crates/syntax/test_data/accidentally_quadratic create mode 100644 crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.rs create mode 100644 crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt create mode 100644 crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.rs create mode 100644 crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt create mode 100644 crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.rs create mode 100644 crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt create mode 100644 crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.rs create mode 100644 crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt create mode 100644 crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.rs create mode 100644 crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt create mode 100644 crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.rs create mode 100644 crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt create mode 100644 crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.rs create mode 100644 crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt create mode 100644 crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.rs create mode 100644 crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt create mode 100644 crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.rs create mode 100644 crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt create mode 100644 crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.rs create mode 100644 crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt create mode 100644 crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.rs create mode 100644 crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt create mode 100644 crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.rs create mode 100644 crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt create mode 100644 crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.rs create mode 100644 crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt create mode 100644 crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.rs create mode 100644 crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt create mode 100644 crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.rs create mode 100644 crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt create mode 100644 crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.rs create mode 100644 crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt create mode 100644 crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.rs create mode 100644 crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt create mode 100644 crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.rs create mode 100644 crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt create mode 100644 crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.rs create mode 100644 crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt create mode 100644 crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.rs create mode 100644 crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt create mode 100644 crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.rs create mode 100644 crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt create mode 100644 crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.rs create mode 100644 crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt create mode 100644 crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.rs create mode 100644 crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt create mode 100644 crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.rs create mode 100644 crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt create mode 100644 crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.rs create mode 100644 crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt create mode 100644 crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.rs create mode 100644 crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt create mode 100644 crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.rs create mode 100644 crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt create mode 100644 crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.rs create mode 100644 crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt create mode 100644 crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.rs create mode 100644 crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt create mode 100644 crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.rs create mode 100644 crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt create mode 100644 crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.rs create mode 100644 crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt create mode 100644 crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.rs create mode 100644 crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt create mode 100644 crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.rs create mode 100644 crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt create mode 100644 crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.rs create mode 100644 crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt create mode 100644 crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.rs create mode 100644 crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt create mode 100644 crates/syntax/test_data/lexer/err/0055_empty_int.rs create mode 100644 crates/syntax/test_data/lexer/err/0055_empty_int.txt create mode 100644 crates/syntax/test_data/lexer/err/0056_empty_exponent.rs create mode 100644 crates/syntax/test_data/lexer/err/0056_empty_exponent.txt create mode 100644 crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.rs create mode 100644 crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt create mode 100644 crates/syntax/test_data/lexer/ok/0001_hello.rs create mode 100644 crates/syntax/test_data/lexer/ok/0001_hello.txt create mode 100644 crates/syntax/test_data/lexer/ok/0002_whitespace.rs create mode 100644 crates/syntax/test_data/lexer/ok/0002_whitespace.txt create mode 100644 crates/syntax/test_data/lexer/ok/0003_ident.rs create mode 100644 crates/syntax/test_data/lexer/ok/0003_ident.txt create mode 100644 crates/syntax/test_data/lexer/ok/0004_numbers.rs create mode 100644 crates/syntax/test_data/lexer/ok/0004_numbers.txt create mode 100644 crates/syntax/test_data/lexer/ok/0005_symbols.rs create mode 100644 crates/syntax/test_data/lexer/ok/0005_symbols.txt create mode 100644 crates/syntax/test_data/lexer/ok/0006_chars.rs create mode 100644 crates/syntax/test_data/lexer/ok/0006_chars.txt create mode 100644 crates/syntax/test_data/lexer/ok/0007_lifetimes.rs create mode 100644 crates/syntax/test_data/lexer/ok/0007_lifetimes.txt create mode 100644 crates/syntax/test_data/lexer/ok/0008_byte_strings.rs create mode 100644 crates/syntax/test_data/lexer/ok/0008_byte_strings.txt create mode 100644 crates/syntax/test_data/lexer/ok/0009_strings.rs create mode 100644 crates/syntax/test_data/lexer/ok/0009_strings.txt create mode 100644 crates/syntax/test_data/lexer/ok/0010_single_line_comments.rs create mode 100644 crates/syntax/test_data/lexer/ok/0010_single_line_comments.txt create mode 100644 crates/syntax/test_data/lexer/ok/0011_keywords.rs create mode 100644 crates/syntax/test_data/lexer/ok/0011_keywords.txt create mode 100644 crates/syntax/test_data/lexer/ok/0012_block_comment.rs create mode 100644 crates/syntax/test_data/lexer/ok/0012_block_comment.txt create mode 100644 crates/syntax/test_data/lexer/ok/0013_raw_strings.rs create mode 100644 crates/syntax/test_data/lexer/ok/0013_raw_strings.txt create mode 100644 crates/syntax/test_data/lexer/ok/0014_raw_ident.rs create mode 100644 crates/syntax/test_data/lexer/ok/0014_raw_ident.txt create mode 100644 crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rast create mode 100644 crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rs create mode 100644 crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rast create mode 100644 crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rs create mode 100644 crates/syntax/test_data/parser/err/0002_duplicate_shebang.rast create mode 100644 crates/syntax/test_data/parser/err/0002_duplicate_shebang.rs create mode 100644 crates/syntax/test_data/parser/err/0003_C++_semicolon.rast create mode 100644 crates/syntax/test_data/parser/err/0003_C++_semicolon.rs create mode 100644 crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rast create mode 100644 crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rs create mode 100644 crates/syntax/test_data/parser/err/0005_attribute_recover.rast create mode 100644 crates/syntax/test_data/parser/err/0005_attribute_recover.rs create mode 100644 crates/syntax/test_data/parser/err/0006_named_field_recovery.rast create mode 100644 crates/syntax/test_data/parser/err/0006_named_field_recovery.rs create mode 100644 crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rast create mode 100644 crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rs create mode 100644 crates/syntax/test_data/parser/err/0008_item_block_recovery.rast create mode 100644 crates/syntax/test_data/parser/err/0008_item_block_recovery.rs create mode 100644 crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast create mode 100644 crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rs create mode 100644 crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rast create mode 100644 crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rs create mode 100644 crates/syntax/test_data/parser/err/0011_extern_struct.rast create mode 100644 crates/syntax/test_data/parser/err/0011_extern_struct.rs create mode 100644 crates/syntax/test_data/parser/err/0012_broken_lambda.rast create mode 100644 crates/syntax/test_data/parser/err/0013_invalid_type.rast create mode 100644 crates/syntax/test_data/parser/err/0013_invalid_type.rs create mode 100644 crates/syntax/test_data/parser/err/0014_where_no_bounds.rast create mode 100644 crates/syntax/test_data/parser/err/0014_where_no_bounds.rs create mode 100644 crates/syntax/test_data/parser/err/0015_curly_in_params.rast create mode 100644 crates/syntax/test_data/parser/err/0015_curly_in_params.rs create mode 100644 crates/syntax/test_data/parser/err/0016_missing_semi.rast create mode 100644 crates/syntax/test_data/parser/err/0016_missing_semi.rs create mode 100644 crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rast create mode 100644 crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rs create mode 100644 crates/syntax/test_data/parser/err/0018_incomplete_fn.rast create mode 100644 crates/syntax/test_data/parser/err/0018_incomplete_fn.rs create mode 100644 crates/syntax/test_data/parser/err/0019_let_recover.rast create mode 100644 crates/syntax/test_data/parser/err/0019_let_recover.rs create mode 100644 crates/syntax/test_data/parser/err/0020_fn_recover.rast create mode 100644 crates/syntax/test_data/parser/err/0020_fn_recover.rs create mode 100644 crates/syntax/test_data/parser/err/0021_incomplete_param.rast create mode 100644 crates/syntax/test_data/parser/err/0021_incomplete_param.rs create mode 100644 crates/syntax/test_data/parser/err/0022_bad_exprs.rast create mode 100644 crates/syntax/test_data/parser/err/0022_bad_exprs.rs create mode 100644 crates/syntax/test_data/parser/err/0023_mismatched_paren.rast create mode 100644 crates/syntax/test_data/parser/err/0023_mismatched_paren.rs create mode 100644 crates/syntax/test_data/parser/err/0024_many_type_parens.rast create mode 100644 crates/syntax/test_data/parser/err/0024_many_type_parens.rs create mode 100644 crates/syntax/test_data/parser/err/0025_nope.rast create mode 100644 crates/syntax/test_data/parser/err/0025_nope.rs create mode 100644 crates/syntax/test_data/parser/err/0026_imp_recovery.rast create mode 100644 crates/syntax/test_data/parser/err/0026_imp_recovery.rs create mode 100644 crates/syntax/test_data/parser/err/0027_incomplere_where_for.rast create mode 100644 crates/syntax/test_data/parser/err/0027_incomplere_where_for.rs create mode 100644 crates/syntax/test_data/parser/err/0029_field_completion.rast create mode 100644 crates/syntax/test_data/parser/err/0029_field_completion.rs create mode 100644 crates/syntax/test_data/parser/err/0031_block_inner_attrs.rast create mode 100644 crates/syntax/test_data/parser/err/0031_block_inner_attrs.rs create mode 100644 crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast create mode 100644 crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rs create mode 100644 crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast create mode 100644 crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rs create mode 100644 crates/syntax/test_data/parser/err/0034_bad_box_pattern.rast create mode 100644 crates/syntax/test_data/parser/err/0034_bad_box_pattern.rs create mode 100644 crates/syntax/test_data/parser/err/0035_use_recover.rast create mode 100644 crates/syntax/test_data/parser/err/0035_use_recover.rs create mode 100644 crates/syntax/test_data/parser/err/0036_partial_use.rast create mode 100644 crates/syntax/test_data/parser/err/0036_partial_use.rs create mode 100644 crates/syntax/test_data/parser/err/0037_visibility_in_traits.rast create mode 100644 crates/syntax/test_data/parser/err/0037_visibility_in_traits.rs create mode 100644 crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rast create mode 100644 crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rs create mode 100644 crates/syntax/test_data/parser/err/0039_lambda_recovery.rast create mode 100644 crates/syntax/test_data/parser/err/0039_lambda_recovery.rs create mode 100644 crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rast create mode 100644 crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rs create mode 100644 crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rast create mode 100644 crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rs create mode 100644 crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rast create mode 100644 crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rs create mode 100644 crates/syntax/test_data/parser/err/0043_weird_blocks.rast create mode 100644 crates/syntax/test_data/parser/err/0043_weird_blocks.rs create mode 100644 crates/syntax/test_data/parser/err/0044_unexpected_for_type.rast create mode 100644 crates/syntax/test_data/parser/err/0044_unexpected_for_type.rs create mode 100644 crates/syntax/test_data/parser/err/0045_item_modifiers.rast create mode 100644 crates/syntax/test_data/parser/err/0045_item_modifiers.rs create mode 100644 crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rast create mode 100644 crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rs create mode 100644 crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rast create mode 100644 crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rs create mode 100644 crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rast create mode 100644 crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rs create mode 100644 crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rast create mode 100644 crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rs create mode 100644 crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rast create mode 100644 crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rs create mode 100644 crates/syntax/test_data/parser/fragments/path/err/0001_expression.rast create mode 100644 crates/syntax/test_data/parser/fragments/path/err/0001_expression.rs create mode 100644 crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rast create mode 100644 crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rs create mode 100644 crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rast create mode 100644 crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rs create mode 100644 crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rast create mode 100644 crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rs create mode 100644 crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rast create mode 100644 crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rs create mode 100644 crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rast create mode 100644 crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rs create mode 100644 crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rast create mode 100644 crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rs create mode 100644 crates/syntax/test_data/parser/fragments/type/ok/0000_result.rast create mode 100644 crates/syntax/test_data/parser/fragments/type/ok/0000_result.rs create mode 100644 crates/syntax/test_data/parser/fuzz-failures/0000.rs create mode 100644 crates/syntax/test_data/parser/fuzz-failures/0001.rs create mode 100644 crates/syntax/test_data/parser/fuzz-failures/0002.rs create mode 100644 crates/syntax/test_data/parser/fuzz-failures/0003.rs create mode 100644 crates/syntax/test_data/parser/fuzz-failures/0004.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0004_impl_type.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0004_impl_type.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0008_pub_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0008_pub_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0013_static_underscore.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0013_static_underscore.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rs create mode 100644 crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast create mode 100644 crates/syntax/test_data/parser/inline/err/0015_empty_segment.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0006_self_param.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0006_self_param.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0008_path_part.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0008_path_part.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0010_extern_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0010_extern_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0011_field_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0011_field_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0014_never_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0014_never_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0017_array_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0017_array_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0020_use_star.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0020_use_star.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0025_slice_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0025_slice_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0030_cond.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0030_cond.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0031_while_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0031_while_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0034_break_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0034_break_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0039_type_arg.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0039_type_arg.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0041_trait_item.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0041_trait_item.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0042_call_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0042_call_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0044_block_items.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0044_block_items.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0051_unit_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0051_unit_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0052_path_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0052_path_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0053_path_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0053_path_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0056_where_clause.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0056_where_clause.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0058_range_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0058_range_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0061_record_lit.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0061_record_lit.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0064_if_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0064_if_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0066_match_arm.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0066_match_arm.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0067_crate_path.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0067_crate_path.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0068_union_items.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0068_union_items.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0071_match_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0071_match_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0072_return_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0072_return_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0075_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0075_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0077_try_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0077_try_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0078_type_item.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0078_type_item.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0079_impl_def.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0079_impl_def.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0081_for_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0081_for_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0083_struct_items.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0083_struct_items.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0084_paren_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0084_paren_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0093_index_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0093_index_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0099_param_list.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0099_param_list.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0100_for_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0100_for_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0103_array_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0103_array_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0109_label.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0109_label.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0110_use_path.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0110_use_path.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0118_match_guard.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0118_match_guard.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0131_existential_type.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0131_existential_type.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0132_box_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0132_box_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0137_await_expr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0137_await_expr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0143_box_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0143_box_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0147_const_param.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0147_const_param.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0147_macro_def.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0147_macro_def.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0151_fn.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0151_fn.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0152_impl.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0152_impl.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0153_trait.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0153_trait.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0155_closure_params.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0155_closure_params.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0164_default_item.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0164_default_item.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rs create mode 100644 crates/syntax/test_data/parser/ok/0000_empty.rast create mode 100644 crates/syntax/test_data/parser/ok/0000_empty.rs create mode 100644 crates/syntax/test_data/parser/ok/0001_struct_item.rast create mode 100644 crates/syntax/test_data/parser/ok/0001_struct_item.rs create mode 100644 crates/syntax/test_data/parser/ok/0002_struct_item_field.rast create mode 100644 crates/syntax/test_data/parser/ok/0002_struct_item_field.rs create mode 100644 crates/syntax/test_data/parser/ok/0004_file_shebang.rast create mode 100644 crates/syntax/test_data/parser/ok/0004_file_shebang.rs create mode 100644 crates/syntax/test_data/parser/ok/0005_fn_item.rast create mode 100644 crates/syntax/test_data/parser/ok/0005_fn_item.rs create mode 100644 crates/syntax/test_data/parser/ok/0006_inner_attributes.rast create mode 100644 crates/syntax/test_data/parser/ok/0006_inner_attributes.rs create mode 100644 crates/syntax/test_data/parser/ok/0007_extern_crate.rast create mode 100644 crates/syntax/test_data/parser/ok/0007_extern_crate.rs create mode 100644 crates/syntax/test_data/parser/ok/0008_mod_item.rast create mode 100644 crates/syntax/test_data/parser/ok/0008_mod_item.rs create mode 100644 crates/syntax/test_data/parser/ok/0009_use_item.rast create mode 100644 crates/syntax/test_data/parser/ok/0009_use_item.rs create mode 100644 crates/syntax/test_data/parser/ok/0010_use_path_segments.rast create mode 100644 crates/syntax/test_data/parser/ok/0010_use_path_segments.rs create mode 100644 crates/syntax/test_data/parser/ok/0011_outer_attribute.rast create mode 100644 crates/syntax/test_data/parser/ok/0011_outer_attribute.rs create mode 100644 crates/syntax/test_data/parser/ok/0012_visibility.rast create mode 100644 crates/syntax/test_data/parser/ok/0012_visibility.rs create mode 100644 crates/syntax/test_data/parser/ok/0013_use_path_self_super.rast create mode 100644 crates/syntax/test_data/parser/ok/0013_use_path_self_super.rs create mode 100644 crates/syntax/test_data/parser/ok/0014_use_tree.rast create mode 100644 crates/syntax/test_data/parser/ok/0014_use_tree.rs create mode 100644 crates/syntax/test_data/parser/ok/0015_use_tree.rast create mode 100644 crates/syntax/test_data/parser/ok/0015_use_tree.rs create mode 100644 crates/syntax/test_data/parser/ok/0016_struct_flavors.rast create mode 100644 crates/syntax/test_data/parser/ok/0016_struct_flavors.rs create mode 100644 crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rast create mode 100644 crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rs create mode 100644 crates/syntax/test_data/parser/ok/0018_struct_type_params.rast create mode 100644 crates/syntax/test_data/parser/ok/0018_struct_type_params.rs create mode 100644 crates/syntax/test_data/parser/ok/0019_enums.rast create mode 100644 crates/syntax/test_data/parser/ok/0019_enums.rs create mode 100644 crates/syntax/test_data/parser/ok/0020_type_param_bounds.rast create mode 100644 crates/syntax/test_data/parser/ok/0020_type_param_bounds.rs create mode 100644 crates/syntax/test_data/parser/ok/0022_empty_extern_block.rast create mode 100644 crates/syntax/test_data/parser/ok/0022_empty_extern_block.rs create mode 100644 crates/syntax/test_data/parser/ok/0023_static_items.rast create mode 100644 crates/syntax/test_data/parser/ok/0023_static_items.rs create mode 100644 crates/syntax/test_data/parser/ok/0024_const_item.rast create mode 100644 crates/syntax/test_data/parser/ok/0024_const_item.rs create mode 100644 crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rast create mode 100644 crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rs create mode 100644 crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rast create mode 100644 crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rs create mode 100644 crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast create mode 100644 crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rs create mode 100644 crates/syntax/test_data/parser/ok/0028_operator_binding_power.rast create mode 100644 crates/syntax/test_data/parser/ok/0028_operator_binding_power.rs create mode 100644 crates/syntax/test_data/parser/ok/0029_range_forms.rast create mode 100644 crates/syntax/test_data/parser/ok/0029_range_forms.rs create mode 100644 crates/syntax/test_data/parser/ok/0030_string_suffixes.rast create mode 100644 crates/syntax/test_data/parser/ok/0030_string_suffixes.rs create mode 100644 crates/syntax/test_data/parser/ok/0030_traits.rast create mode 100644 crates/syntax/test_data/parser/ok/0030_traits.rs create mode 100644 crates/syntax/test_data/parser/ok/0031_extern.rast create mode 100644 crates/syntax/test_data/parser/ok/0031_extern.rs create mode 100644 crates/syntax/test_data/parser/ok/0032_where_for.rast create mode 100644 crates/syntax/test_data/parser/ok/0032_where_for.rs create mode 100644 crates/syntax/test_data/parser/ok/0033_label_break.rast create mode 100644 crates/syntax/test_data/parser/ok/0033_label_break.rs create mode 100644 crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rast create mode 100644 crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rs create mode 100644 crates/syntax/test_data/parser/ok/0035_weird_exprs.rast create mode 100644 crates/syntax/test_data/parser/ok/0035_weird_exprs.rs create mode 100644 crates/syntax/test_data/parser/ok/0036_fully_qualified.rast create mode 100644 crates/syntax/test_data/parser/ok/0036_fully_qualified.rs create mode 100644 crates/syntax/test_data/parser/ok/0037_mod.rast create mode 100644 crates/syntax/test_data/parser/ok/0037_mod.rs create mode 100644 crates/syntax/test_data/parser/ok/0038_where_pred_type.rast create mode 100644 crates/syntax/test_data/parser/ok/0038_where_pred_type.rs create mode 100644 crates/syntax/test_data/parser/ok/0039_raw_fn_item.rast create mode 100644 crates/syntax/test_data/parser/ok/0039_raw_fn_item.rs create mode 100644 crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rast create mode 100644 crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rs create mode 100644 crates/syntax/test_data/parser/ok/0041_raw_keywords.rast create mode 100644 crates/syntax/test_data/parser/ok/0041_raw_keywords.rs create mode 100644 crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rast create mode 100644 crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rs create mode 100644 crates/syntax/test_data/parser/ok/0043_complex_assignment.rast create mode 100644 crates/syntax/test_data/parser/ok/0043_complex_assignment.rs create mode 100644 crates/syntax/test_data/parser/ok/0044_let_attrs.rast create mode 100644 crates/syntax/test_data/parser/ok/0044_let_attrs.rs create mode 100644 crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rast create mode 100644 crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rs create mode 100644 crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rast create mode 100644 crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rs create mode 100644 crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast create mode 100644 crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rs create mode 100644 crates/syntax/test_data/parser/ok/0048_compound_assignment.rast create mode 100644 crates/syntax/test_data/parser/ok/0048_compound_assignment.rs create mode 100644 crates/syntax/test_data/parser/ok/0049_async_block.rast create mode 100644 crates/syntax/test_data/parser/ok/0049_async_block.rs create mode 100644 crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rast create mode 100644 crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rs create mode 100644 crates/syntax/test_data/parser/ok/0051_parameter_attrs.rast create mode 100644 crates/syntax/test_data/parser/ok/0051_parameter_attrs.rs create mode 100644 crates/syntax/test_data/parser/ok/0052_for_range_block.rast create mode 100644 crates/syntax/test_data/parser/ok/0052_for_range_block.rs create mode 100644 crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast create mode 100644 crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rs create mode 100644 crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast create mode 100644 crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rs create mode 100644 crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rast create mode 100644 crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rs create mode 100644 crates/syntax/test_data/parser/ok/0056_neq_in_type.rast create mode 100644 crates/syntax/test_data/parser/ok/0056_neq_in_type.rs create mode 100644 crates/syntax/test_data/parser/ok/0057_loop_in_call.rast create mode 100644 crates/syntax/test_data/parser/ok/0057_loop_in_call.rs create mode 100644 crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rast create mode 100644 crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rs create mode 100644 crates/syntax/test_data/parser/ok/0059_loops_in_parens.rast create mode 100644 crates/syntax/test_data/parser/ok/0059_loops_in_parens.rs create mode 100644 crates/syntax/test_data/parser/ok/0060_as_range.rast create mode 100644 crates/syntax/test_data/parser/ok/0060_as_range.rs create mode 100644 crates/syntax/test_data/parser/ok/0061_match_full_range.rast create mode 100644 crates/syntax/test_data/parser/ok/0061_match_full_range.rs create mode 100644 crates/syntax/test_data/parser/ok/0062_macro_2.0.rast create mode 100644 crates/syntax/test_data/parser/ok/0062_macro_2.0.rs create mode 100644 crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rast create mode 100644 crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rs create mode 100644 crates/syntax/test_data/parser/ok/0063_variadic_fun.rast create mode 100644 crates/syntax/test_data/parser/ok/0063_variadic_fun.rs create mode 100644 crates/syntax/test_data/parser/ok/0064_impl_fn_params.rast create mode 100644 crates/syntax/test_data/parser/ok/0064_impl_fn_params.rs create mode 100644 crates/syntax/test_data/parser/ok/0065_comment_newline.rast create mode 100644 crates/syntax/test_data/parser/ok/0065_comment_newline.rs create mode 100644 crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast create mode 100644 crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rs create mode 100644 crates/syntax/test_data/parser/ok/0066_default_modifier.rast create mode 100644 crates/syntax/test_data/parser/ok/0066_default_modifier.rs create mode 100644 crates/syntax/test_data/parser/ok/0067_where_for_pred.rast create mode 100644 crates/syntax/test_data/parser/ok/0067_where_for_pred.rs create mode 100644 crates/syntax/test_data/parser/ok/0068_item_modifiers.rast create mode 100644 crates/syntax/test_data/parser/ok/0068_item_modifiers.rs create mode 100644 crates/syntax/test_data/reparse/fuzz-failures/0000.rs create mode 100644 crates/syntax/test_data/reparse/fuzz-failures/0001.rs create mode 100644 crates/syntax/test_data/reparse/fuzz-failures/0002.rs create mode 100644 crates/syntax/test_data/reparse/fuzz-failures/0003.rs create mode 100644 crates/syntax/test_data/reparse/fuzz-failures/0004.rs create mode 100644 crates/syntax/test_data/reparse/fuzz-failures/0005.rs (limited to 'crates/syntax/test_data') diff --git a/crates/syntax/test_data/accidentally_quadratic b/crates/syntax/test_data/accidentally_quadratic new file mode 100644 index 00000000000..428f83a627b --- /dev/null +++ b/crates/syntax/test_data/accidentally_quadratic @@ -0,0 +1,3980 @@ +#[doc = r" Register block"] +#[repr(C)] +pub struct RegisterBlock { + #[doc = "0x00 - Control Register"] + pub cr: CR, + #[doc = "0x04 - Error Status Register"] + pub es: ES, + _reserved0: [u8; 4usize], + #[doc = "0x0c - Enable Request Register"] + pub erq: ERQ, + _reserved1: [u8; 4usize], + #[doc = "0x14 - Enable Error Interrupt Register"] + pub eei: EEI, + #[doc = "0x18 - Clear Enable Error Interrupt Register"] + pub ceei: CEEI, + #[doc = "0x19 - Set Enable Error Interrupt Register"] + pub seei: SEEI, + #[doc = "0x1a - Clear Enable Request Register"] + pub cerq: CERQ, + #[doc = "0x1b - Set Enable Request Register"] + pub serq: SERQ, + #[doc = "0x1c - Clear DONE Status Bit Register"] + pub cdne: CDNE, + #[doc = "0x1d - Set START Bit Register"] + pub ssrt: SSRT, + #[doc = "0x1e - Clear Error Register"] + pub cerr: CERR, + #[doc = "0x1f - Clear Interrupt Request Register"] + pub cint: CINT, + _reserved2: [u8; 4usize], + #[doc = "0x24 - Interrupt Request Register"] + pub int: INT, + _reserved3: [u8; 4usize], + #[doc = "0x2c - Error Register"] + pub err: ERR, + _reserved4: [u8; 4usize], + #[doc = "0x34 - Hardware Request Status Register"] + pub hrs: HRS, + _reserved5: [u8; 12usize], + #[doc = "0x44 - Enable Asynchronous Request in Stop Register"] + pub ears: EARS, + _reserved6: [u8; 184usize], + #[doc = "0x100 - Channel n Priority Register"] + pub dchpri3: DCHPRI3, + #[doc = "0x101 - Channel n Priority Register"] + pub dchpri2: DCHPRI2, + #[doc = "0x102 - Channel n Priority Register"] + pub dchpri1: DCHPRI1, + #[doc = "0x103 - Channel n Priority Register"] + pub dchpri0: DCHPRI0, + #[doc = "0x104 - Channel n Priority Register"] + pub dchpri7: DCHPRI7, + #[doc = "0x105 - Channel n Priority Register"] + pub dchpri6: DCHPRI6, + #[doc = "0x106 - Channel n Priority Register"] + pub dchpri5: DCHPRI5, + #[doc = "0x107 - Channel n Priority Register"] + pub dchpri4: DCHPRI4, + #[doc = "0x108 - Channel n Priority Register"] + pub dchpri11: DCHPRI11, + #[doc = "0x109 - Channel n Priority Register"] + pub dchpri10: DCHPRI10, + #[doc = "0x10a - Channel n Priority Register"] + pub dchpri9: DCHPRI9, + #[doc = "0x10b - Channel n Priority Register"] + pub dchpri8: DCHPRI8, + #[doc = "0x10c - Channel n Priority Register"] + pub dchpri15: DCHPRI15, + #[doc = "0x10d - Channel n Priority Register"] + pub dchpri14: DCHPRI14, + #[doc = "0x10e - Channel n Priority Register"] + pub dchpri13: DCHPRI13, + #[doc = "0x10f - Channel n Priority Register"] + pub dchpri12: DCHPRI12, + #[doc = "0x110 - Channel n Priority Register"] + pub dchpri19: DCHPRI19, + #[doc = "0x111 - Channel n Priority Register"] + pub dchpri18: DCHPRI18, + #[doc = "0x112 - Channel n Priority Register"] + pub dchpri17: DCHPRI17, + #[doc = "0x113 - Channel n Priority Register"] + pub dchpri16: DCHPRI16, + #[doc = "0x114 - Channel n Priority Register"] + pub dchpri23: DCHPRI23, + #[doc = "0x115 - Channel n Priority Register"] + pub dchpri22: DCHPRI22, + #[doc = "0x116 - Channel n Priority Register"] + pub dchpri21: DCHPRI21, + #[doc = "0x117 - Channel n Priority Register"] + pub dchpri20: DCHPRI20, + #[doc = "0x118 - Channel n Priority Register"] + pub dchpri27: DCHPRI27, + #[doc = "0x119 - Channel n Priority Register"] + pub dchpri26: DCHPRI26, + #[doc = "0x11a - Channel n Priority Register"] + pub dchpri25: DCHPRI25, + #[doc = "0x11b - Channel n Priority Register"] + pub dchpri24: DCHPRI24, + #[doc = "0x11c - Channel n Priority Register"] + pub dchpri31: DCHPRI31, + #[doc = "0x11d - Channel n Priority Register"] + pub dchpri30: DCHPRI30, + #[doc = "0x11e - Channel n Priority Register"] + pub dchpri29: DCHPRI29, + #[doc = "0x11f - Channel n Priority Register"] + pub dchpri28: DCHPRI28, + _reserved7: [u8; 3808usize], + #[doc = "0x1000 - TCD Source Address"] + pub tcd0_saddr: TCD0_SADDR, + #[doc = "0x1004 - TCD Signed Source Address Offset"] + pub tcd0_soff: TCD0_SOFF, + #[doc = "0x1006 - TCD Transfer Attributes"] + pub tcd0_attr: TCD0_ATTR, + #[doc = "0x1008 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd0_nbytes_mlno: TCD0_NBYTES_MLNO, + #[doc = "0x100c - TCD Last Source Address Adjustment"] + pub tcd0_slast: TCD0_SLAST, + #[doc = "0x1010 - TCD Destination Address"] + pub tcd0_daddr: TCD0_DADDR, + #[doc = "0x1014 - TCD Signed Destination Address Offset"] + pub tcd0_doff: TCD0_DOFF, + #[doc = "0x1016 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd0_citer_elinkno: TCD0_CITER_ELINKNO, + #[doc = "0x1018 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd0_dlastsga: TCD0_DLASTSGA, + #[doc = "0x101c - TCD Control and Status"] + pub tcd0_csr: TCD0_CSR, + #[doc = "0x101e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd0_biter_elinkno: TCD0_BITER_ELINKNO, + #[doc = "0x1020 - TCD Source Address"] + pub tcd1_saddr: TCD1_SADDR, + #[doc = "0x1024 - TCD Signed Source Address Offset"] + pub tcd1_soff: TCD1_SOFF, + #[doc = "0x1026 - TCD Transfer Attributes"] + pub tcd1_attr: TCD1_ATTR, + #[doc = "0x1028 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd1_nbytes_mlno: TCD1_NBYTES_MLNO, + #[doc = "0x102c - TCD Last Source Address Adjustment"] + pub tcd1_slast: TCD1_SLAST, + #[doc = "0x1030 - TCD Destination Address"] + pub tcd1_daddr: TCD1_DADDR, + #[doc = "0x1034 - TCD Signed Destination Address Offset"] + pub tcd1_doff: TCD1_DOFF, + #[doc = "0x1036 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd1_citer_elinkno: TCD1_CITER_ELINKNO, + #[doc = "0x1038 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd1_dlastsga: TCD1_DLASTSGA, + #[doc = "0x103c - TCD Control and Status"] + pub tcd1_csr: TCD1_CSR, + #[doc = "0x103e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd1_biter_elinkno: TCD1_BITER_ELINKNO, + #[doc = "0x1040 - TCD Source Address"] + pub tcd2_saddr: TCD2_SADDR, + #[doc = "0x1044 - TCD Signed Source Address Offset"] + pub tcd2_soff: TCD2_SOFF, + #[doc = "0x1046 - TCD Transfer Attributes"] + pub tcd2_attr: TCD2_ATTR, + #[doc = "0x1048 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd2_nbytes_mlno: TCD2_NBYTES_MLNO, + #[doc = "0x104c - TCD Last Source Address Adjustment"] + pub tcd2_slast: TCD2_SLAST, + #[doc = "0x1050 - TCD Destination Address"] + pub tcd2_daddr: TCD2_DADDR, + #[doc = "0x1054 - TCD Signed Destination Address Offset"] + pub tcd2_doff: TCD2_DOFF, + #[doc = "0x1056 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd2_citer_elinkno: TCD2_CITER_ELINKNO, + #[doc = "0x1058 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd2_dlastsga: TCD2_DLASTSGA, + #[doc = "0x105c - TCD Control and Status"] + pub tcd2_csr: TCD2_CSR, + #[doc = "0x105e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd2_biter_elinkno: TCD2_BITER_ELINKNO, + #[doc = "0x1060 - TCD Source Address"] + pub tcd3_saddr: TCD3_SADDR, + #[doc = "0x1064 - TCD Signed Source Address Offset"] + pub tcd3_soff: TCD3_SOFF, + #[doc = "0x1066 - TCD Transfer Attributes"] + pub tcd3_attr: TCD3_ATTR, + #[doc = "0x1068 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd3_nbytes_mlno: TCD3_NBYTES_MLNO, + #[doc = "0x106c - TCD Last Source Address Adjustment"] + pub tcd3_slast: TCD3_SLAST, + #[doc = "0x1070 - TCD Destination Address"] + pub tcd3_daddr: TCD3_DADDR, + #[doc = "0x1074 - TCD Signed Destination Address Offset"] + pub tcd3_doff: TCD3_DOFF, + #[doc = "0x1076 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd3_citer_elinkno: TCD3_CITER_ELINKNO, + #[doc = "0x1078 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd3_dlastsga: TCD3_DLASTSGA, + #[doc = "0x107c - TCD Control and Status"] + pub tcd3_csr: TCD3_CSR, + #[doc = "0x107e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd3_biter_elinkno: TCD3_BITER_ELINKNO, + #[doc = "0x1080 - TCD Source Address"] + pub tcd4_saddr: TCD4_SADDR, + #[doc = "0x1084 - TCD Signed Source Address Offset"] + pub tcd4_soff: TCD4_SOFF, + #[doc = "0x1086 - TCD Transfer Attributes"] + pub tcd4_attr: TCD4_ATTR, + #[doc = "0x1088 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd4_nbytes_mlno: TCD4_NBYTES_MLNO, + #[doc = "0x108c - TCD Last Source Address Adjustment"] + pub tcd4_slast: TCD4_SLAST, + #[doc = "0x1090 - TCD Destination Address"] + pub tcd4_daddr: TCD4_DADDR, + #[doc = "0x1094 - TCD Signed Destination Address Offset"] + pub tcd4_doff: TCD4_DOFF, + #[doc = "0x1096 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd4_citer_elinkno: TCD4_CITER_ELINKNO, + #[doc = "0x1098 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd4_dlastsga: TCD4_DLASTSGA, + #[doc = "0x109c - TCD Control and Status"] + pub tcd4_csr: TCD4_CSR, + #[doc = "0x109e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd4_biter_elinkno: TCD4_BITER_ELINKNO, + #[doc = "0x10a0 - TCD Source Address"] + pub tcd5_saddr: TCD5_SADDR, + #[doc = "0x10a4 - TCD Signed Source Address Offset"] + pub tcd5_soff: TCD5_SOFF, + #[doc = "0x10a6 - TCD Transfer Attributes"] + pub tcd5_attr: TCD5_ATTR, + #[doc = "0x10a8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd5_nbytes_mlno: TCD5_NBYTES_MLNO, + #[doc = "0x10ac - TCD Last Source Address Adjustment"] + pub tcd5_slast: TCD5_SLAST, + #[doc = "0x10b0 - TCD Destination Address"] + pub tcd5_daddr: TCD5_DADDR, + #[doc = "0x10b4 - TCD Signed Destination Address Offset"] + pub tcd5_doff: TCD5_DOFF, + #[doc = "0x10b6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd5_citer_elinkno: TCD5_CITER_ELINKNO, + #[doc = "0x10b8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd5_dlastsga: TCD5_DLASTSGA, + #[doc = "0x10bc - TCD Control and Status"] + pub tcd5_csr: TCD5_CSR, + #[doc = "0x10be - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd5_biter_elinkno: TCD5_BITER_ELINKNO, + #[doc = "0x10c0 - TCD Source Address"] + pub tcd6_saddr: TCD6_SADDR, + #[doc = "0x10c4 - TCD Signed Source Address Offset"] + pub tcd6_soff: TCD6_SOFF, + #[doc = "0x10c6 - TCD Transfer Attributes"] + pub tcd6_attr: TCD6_ATTR, + #[doc = "0x10c8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd6_nbytes_mlno: TCD6_NBYTES_MLNO, + #[doc = "0x10cc - TCD Last Source Address Adjustment"] + pub tcd6_slast: TCD6_SLAST, + #[doc = "0x10d0 - TCD Destination Address"] + pub tcd6_daddr: TCD6_DADDR, + #[doc = "0x10d4 - TCD Signed Destination Address Offset"] + pub tcd6_doff: TCD6_DOFF, + #[doc = "0x10d6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd6_citer_elinkno: TCD6_CITER_ELINKNO, + #[doc = "0x10d8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd6_dlastsga: TCD6_DLASTSGA, + #[doc = "0x10dc - TCD Control and Status"] + pub tcd6_csr: TCD6_CSR, + #[doc = "0x10de - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd6_biter_elinkno: TCD6_BITER_ELINKNO, + #[doc = "0x10e0 - TCD Source Address"] + pub tcd7_saddr: TCD7_SADDR, + #[doc = "0x10e4 - TCD Signed Source Address Offset"] + pub tcd7_soff: TCD7_SOFF, + #[doc = "0x10e6 - TCD Transfer Attributes"] + pub tcd7_attr: TCD7_ATTR, + #[doc = "0x10e8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd7_nbytes_mlno: TCD7_NBYTES_MLNO, + #[doc = "0x10ec - TCD Last Source Address Adjustment"] + pub tcd7_slast: TCD7_SLAST, + #[doc = "0x10f0 - TCD Destination Address"] + pub tcd7_daddr: TCD7_DADDR, + #[doc = "0x10f4 - TCD Signed Destination Address Offset"] + pub tcd7_doff: TCD7_DOFF, + #[doc = "0x10f6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd7_citer_elinkno: TCD7_CITER_ELINKNO, + #[doc = "0x10f8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd7_dlastsga: TCD7_DLASTSGA, + #[doc = "0x10fc - TCD Control and Status"] + pub tcd7_csr: TCD7_CSR, + #[doc = "0x10fe - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd7_biter_elinkno: TCD7_BITER_ELINKNO, + #[doc = "0x1100 - TCD Source Address"] + pub tcd8_saddr: TCD8_SADDR, + #[doc = "0x1104 - TCD Signed Source Address Offset"] + pub tcd8_soff: TCD8_SOFF, + #[doc = "0x1106 - TCD Transfer Attributes"] + pub tcd8_attr: TCD8_ATTR, + #[doc = "0x1108 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd8_nbytes_mlno: TCD8_NBYTES_MLNO, + #[doc = "0x110c - TCD Last Source Address Adjustment"] + pub tcd8_slast: TCD8_SLAST, + #[doc = "0x1110 - TCD Destination Address"] + pub tcd8_daddr: TCD8_DADDR, + #[doc = "0x1114 - TCD Signed Destination Address Offset"] + pub tcd8_doff: TCD8_DOFF, + #[doc = "0x1116 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd8_citer_elinkno: TCD8_CITER_ELINKNO, + #[doc = "0x1118 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd8_dlastsga: TCD8_DLASTSGA, + #[doc = "0x111c - TCD Control and Status"] + pub tcd8_csr: TCD8_CSR, + #[doc = "0x111e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd8_biter_elinkno: TCD8_BITER_ELINKNO, + #[doc = "0x1120 - TCD Source Address"] + pub tcd9_saddr: TCD9_SADDR, + #[doc = "0x1124 - TCD Signed Source Address Offset"] + pub tcd9_soff: TCD9_SOFF, + #[doc = "0x1126 - TCD Transfer Attributes"] + pub tcd9_attr: TCD9_ATTR, + #[doc = "0x1128 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd9_nbytes_mlno: TCD9_NBYTES_MLNO, + #[doc = "0x112c - TCD Last Source Address Adjustment"] + pub tcd9_slast: TCD9_SLAST, + #[doc = "0x1130 - TCD Destination Address"] + pub tcd9_daddr: TCD9_DADDR, + #[doc = "0x1134 - TCD Signed Destination Address Offset"] + pub tcd9_doff: TCD9_DOFF, + #[doc = "0x1136 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd9_citer_elinkno: TCD9_CITER_ELINKNO, + #[doc = "0x1138 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd9_dlastsga: TCD9_DLASTSGA, + #[doc = "0x113c - TCD Control and Status"] + pub tcd9_csr: TCD9_CSR, + #[doc = "0x113e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd9_biter_elinkno: TCD9_BITER_ELINKNO, + #[doc = "0x1140 - TCD Source Address"] + pub tcd10_saddr: TCD10_SADDR, + #[doc = "0x1144 - TCD Signed Source Address Offset"] + pub tcd10_soff: TCD10_SOFF, + #[doc = "0x1146 - TCD Transfer Attributes"] + pub tcd10_attr: TCD10_ATTR, + #[doc = "0x1148 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd10_nbytes_mlno: TCD10_NBYTES_MLNO, + #[doc = "0x114c - TCD Last Source Address Adjustment"] + pub tcd10_slast: TCD10_SLAST, + #[doc = "0x1150 - TCD Destination Address"] + pub tcd10_daddr: TCD10_DADDR, + #[doc = "0x1154 - TCD Signed Destination Address Offset"] + pub tcd10_doff: TCD10_DOFF, + #[doc = "0x1156 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd10_citer_elinkno: TCD10_CITER_ELINKNO, + #[doc = "0x1158 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd10_dlastsga: TCD10_DLASTSGA, + #[doc = "0x115c - TCD Control and Status"] + pub tcd10_csr: TCD10_CSR, + #[doc = "0x115e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd10_biter_elinkno: TCD10_BITER_ELINKNO, + #[doc = "0x1160 - TCD Source Address"] + pub tcd11_saddr: TCD11_SADDR, + #[doc = "0x1164 - TCD Signed Source Address Offset"] + pub tcd11_soff: TCD11_SOFF, + #[doc = "0x1166 - TCD Transfer Attributes"] + pub tcd11_attr: TCD11_ATTR, + #[doc = "0x1168 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd11_nbytes_mlno: TCD11_NBYTES_MLNO, + #[doc = "0x116c - TCD Last Source Address Adjustment"] + pub tcd11_slast: TCD11_SLAST, + #[doc = "0x1170 - TCD Destination Address"] + pub tcd11_daddr: TCD11_DADDR, + #[doc = "0x1174 - TCD Signed Destination Address Offset"] + pub tcd11_doff: TCD11_DOFF, + #[doc = "0x1176 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd11_citer_elinkno: TCD11_CITER_ELINKNO, + #[doc = "0x1178 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd11_dlastsga: TCD11_DLASTSGA, + #[doc = "0x117c - TCD Control and Status"] + pub tcd11_csr: TCD11_CSR, + #[doc = "0x117e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd11_biter_elinkno: TCD11_BITER_ELINKNO, + #[doc = "0x1180 - TCD Source Address"] + pub tcd12_saddr: TCD12_SADDR, + #[doc = "0x1184 - TCD Signed Source Address Offset"] + pub tcd12_soff: TCD12_SOFF, + #[doc = "0x1186 - TCD Transfer Attributes"] + pub tcd12_attr: TCD12_ATTR, + #[doc = "0x1188 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd12_nbytes_mlno: TCD12_NBYTES_MLNO, + #[doc = "0x118c - TCD Last Source Address Adjustment"] + pub tcd12_slast: TCD12_SLAST, + #[doc = "0x1190 - TCD Destination Address"] + pub tcd12_daddr: TCD12_DADDR, + #[doc = "0x1194 - TCD Signed Destination Address Offset"] + pub tcd12_doff: TCD12_DOFF, + #[doc = "0x1196 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd12_citer_elinkno: TCD12_CITER_ELINKNO, + #[doc = "0x1198 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd12_dlastsga: TCD12_DLASTSGA, + #[doc = "0x119c - TCD Control and Status"] + pub tcd12_csr: TCD12_CSR, + #[doc = "0x119e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd12_biter_elinkno: TCD12_BITER_ELINKNO, + #[doc = "0x11a0 - TCD Source Address"] + pub tcd13_saddr: TCD13_SADDR, + #[doc = "0x11a4 - TCD Signed Source Address Offset"] + pub tcd13_soff: TCD13_SOFF, + #[doc = "0x11a6 - TCD Transfer Attributes"] + pub tcd13_attr: TCD13_ATTR, + #[doc = "0x11a8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd13_nbytes_mlno: TCD13_NBYTES_MLNO, + #[doc = "0x11ac - TCD Last Source Address Adjustment"] + pub tcd13_slast: TCD13_SLAST, + #[doc = "0x11b0 - TCD Destination Address"] + pub tcd13_daddr: TCD13_DADDR, + #[doc = "0x11b4 - TCD Signed Destination Address Offset"] + pub tcd13_doff: TCD13_DOFF, + #[doc = "0x11b6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd13_citer_elinkno: TCD13_CITER_ELINKNO, + #[doc = "0x11b8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd13_dlastsga: TCD13_DLASTSGA, + #[doc = "0x11bc - TCD Control and Status"] + pub tcd13_csr: TCD13_CSR, + #[doc = "0x11be - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd13_biter_elinkno: TCD13_BITER_ELINKNO, + #[doc = "0x11c0 - TCD Source Address"] + pub tcd14_saddr: TCD14_SADDR, + #[doc = "0x11c4 - TCD Signed Source Address Offset"] + pub tcd14_soff: TCD14_SOFF, + #[doc = "0x11c6 - TCD Transfer Attributes"] + pub tcd14_attr: TCD14_ATTR, + #[doc = "0x11c8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd14_nbytes_mlno: TCD14_NBYTES_MLNO, + #[doc = "0x11cc - TCD Last Source Address Adjustment"] + pub tcd14_slast: TCD14_SLAST, + #[doc = "0x11d0 - TCD Destination Address"] + pub tcd14_daddr: TCD14_DADDR, + #[doc = "0x11d4 - TCD Signed Destination Address Offset"] + pub tcd14_doff: TCD14_DOFF, + #[doc = "0x11d6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd14_citer_elinkno: TCD14_CITER_ELINKNO, + #[doc = "0x11d8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd14_dlastsga: TCD14_DLASTSGA, + #[doc = "0x11dc - TCD Control and Status"] + pub tcd14_csr: TCD14_CSR, + #[doc = "0x11de - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd14_biter_elinkno: TCD14_BITER_ELINKNO, + #[doc = "0x11e0 - TCD Source Address"] + pub tcd15_saddr: TCD15_SADDR, + #[doc = "0x11e4 - TCD Signed Source Address Offset"] + pub tcd15_soff: TCD15_SOFF, + #[doc = "0x11e6 - TCD Transfer Attributes"] + pub tcd15_attr: TCD15_ATTR, + #[doc = "0x11e8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd15_nbytes_mlno: TCD15_NBYTES_MLNO, + #[doc = "0x11ec - TCD Last Source Address Adjustment"] + pub tcd15_slast: TCD15_SLAST, + #[doc = "0x11f0 - TCD Destination Address"] + pub tcd15_daddr: TCD15_DADDR, + #[doc = "0x11f4 - TCD Signed Destination Address Offset"] + pub tcd15_doff: TCD15_DOFF, + #[doc = "0x11f6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd15_citer_elinkno: TCD15_CITER_ELINKNO, + #[doc = "0x11f8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd15_dlastsga: TCD15_DLASTSGA, + #[doc = "0x11fc - TCD Control and Status"] + pub tcd15_csr: TCD15_CSR, + #[doc = "0x11fe - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd15_biter_elinkno: TCD15_BITER_ELINKNO, + #[doc = "0x1200 - TCD Source Address"] + pub tcd16_saddr: TCD16_SADDR, + #[doc = "0x1204 - TCD Signed Source Address Offset"] + pub tcd16_soff: TCD16_SOFF, + #[doc = "0x1206 - TCD Transfer Attributes"] + pub tcd16_attr: TCD16_ATTR, + #[doc = "0x1208 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd16_nbytes_mlno: TCD16_NBYTES_MLNO, + #[doc = "0x120c - TCD Last Source Address Adjustment"] + pub tcd16_slast: TCD16_SLAST, + #[doc = "0x1210 - TCD Destination Address"] + pub tcd16_daddr: TCD16_DADDR, + #[doc = "0x1214 - TCD Signed Destination Address Offset"] + pub tcd16_doff: TCD16_DOFF, + #[doc = "0x1216 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd16_citer_elinkno: TCD16_CITER_ELINKNO, + #[doc = "0x1218 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd16_dlastsga: TCD16_DLASTSGA, + #[doc = "0x121c - TCD Control and Status"] + pub tcd16_csr: TCD16_CSR, + #[doc = "0x121e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd16_biter_elinkno: TCD16_BITER_ELINKNO, + #[doc = "0x1220 - TCD Source Address"] + pub tcd17_saddr: TCD17_SADDR, + #[doc = "0x1224 - TCD Signed Source Address Offset"] + pub tcd17_soff: TCD17_SOFF, + #[doc = "0x1226 - TCD Transfer Attributes"] + pub tcd17_attr: TCD17_ATTR, + #[doc = "0x1228 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd17_nbytes_mlno: TCD17_NBYTES_MLNO, + #[doc = "0x122c - TCD Last Source Address Adjustment"] + pub tcd17_slast: TCD17_SLAST, + #[doc = "0x1230 - TCD Destination Address"] + pub tcd17_daddr: TCD17_DADDR, + #[doc = "0x1234 - TCD Signed Destination Address Offset"] + pub tcd17_doff: TCD17_DOFF, + #[doc = "0x1236 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd17_citer_elinkno: TCD17_CITER_ELINKNO, + #[doc = "0x1238 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd17_dlastsga: TCD17_DLASTSGA, + #[doc = "0x123c - TCD Control and Status"] + pub tcd17_csr: TCD17_CSR, + #[doc = "0x123e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd17_biter_elinkno: TCD17_BITER_ELINKNO, + #[doc = "0x1240 - TCD Source Address"] + pub tcd18_saddr: TCD18_SADDR, + #[doc = "0x1244 - TCD Signed Source Address Offset"] + pub tcd18_soff: TCD18_SOFF, + #[doc = "0x1246 - TCD Transfer Attributes"] + pub tcd18_attr: TCD18_ATTR, + #[doc = "0x1248 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd18_nbytes_mlno: TCD18_NBYTES_MLNO, + #[doc = "0x124c - TCD Last Source Address Adjustment"] + pub tcd18_slast: TCD18_SLAST, + #[doc = "0x1250 - TCD Destination Address"] + pub tcd18_daddr: TCD18_DADDR, + #[doc = "0x1254 - TCD Signed Destination Address Offset"] + pub tcd18_doff: TCD18_DOFF, + #[doc = "0x1256 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd18_citer_elinkno: TCD18_CITER_ELINKNO, + #[doc = "0x1258 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd18_dlastsga: TCD18_DLASTSGA, + #[doc = "0x125c - TCD Control and Status"] + pub tcd18_csr: TCD18_CSR, + #[doc = "0x125e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd18_biter_elinkno: TCD18_BITER_ELINKNO, + #[doc = "0x1260 - TCD Source Address"] + pub tcd19_saddr: TCD19_SADDR, + #[doc = "0x1264 - TCD Signed Source Address Offset"] + pub tcd19_soff: TCD19_SOFF, + #[doc = "0x1266 - TCD Transfer Attributes"] + pub tcd19_attr: TCD19_ATTR, + #[doc = "0x1268 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd19_nbytes_mlno: TCD19_NBYTES_MLNO, + #[doc = "0x126c - TCD Last Source Address Adjustment"] + pub tcd19_slast: TCD19_SLAST, + #[doc = "0x1270 - TCD Destination Address"] + pub tcd19_daddr: TCD19_DADDR, + #[doc = "0x1274 - TCD Signed Destination Address Offset"] + pub tcd19_doff: TCD19_DOFF, + #[doc = "0x1276 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd19_citer_elinkno: TCD19_CITER_ELINKNO, + #[doc = "0x1278 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd19_dlastsga: TCD19_DLASTSGA, + #[doc = "0x127c - TCD Control and Status"] + pub tcd19_csr: TCD19_CSR, + #[doc = "0x127e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd19_biter_elinkno: TCD19_BITER_ELINKNO, + #[doc = "0x1280 - TCD Source Address"] + pub tcd20_saddr: TCD20_SADDR, + #[doc = "0x1284 - TCD Signed Source Address Offset"] + pub tcd20_soff: TCD20_SOFF, + #[doc = "0x1286 - TCD Transfer Attributes"] + pub tcd20_attr: TCD20_ATTR, + #[doc = "0x1288 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd20_nbytes_mlno: TCD20_NBYTES_MLNO, + #[doc = "0x128c - TCD Last Source Address Adjustment"] + pub tcd20_slast: TCD20_SLAST, + #[doc = "0x1290 - TCD Destination Address"] + pub tcd20_daddr: TCD20_DADDR, + #[doc = "0x1294 - TCD Signed Destination Address Offset"] + pub tcd20_doff: TCD20_DOFF, + #[doc = "0x1296 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd20_citer_elinkno: TCD20_CITER_ELINKNO, + #[doc = "0x1298 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd20_dlastsga: TCD20_DLASTSGA, + #[doc = "0x129c - TCD Control and Status"] + pub tcd20_csr: TCD20_CSR, + #[doc = "0x129e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd20_biter_elinkno: TCD20_BITER_ELINKNO, + #[doc = "0x12a0 - TCD Source Address"] + pub tcd21_saddr: TCD21_SADDR, + #[doc = "0x12a4 - TCD Signed Source Address Offset"] + pub tcd21_soff: TCD21_SOFF, + #[doc = "0x12a6 - TCD Transfer Attributes"] + pub tcd21_attr: TCD21_ATTR, + #[doc = "0x12a8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd21_nbytes_mlno: TCD21_NBYTES_MLNO, + #[doc = "0x12ac - TCD Last Source Address Adjustment"] + pub tcd21_slast: TCD21_SLAST, + #[doc = "0x12b0 - TCD Destination Address"] + pub tcd21_daddr: TCD21_DADDR, + #[doc = "0x12b4 - TCD Signed Destination Address Offset"] + pub tcd21_doff: TCD21_DOFF, + #[doc = "0x12b6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd21_citer_elinkno: TCD21_CITER_ELINKNO, + #[doc = "0x12b8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd21_dlastsga: TCD21_DLASTSGA, + #[doc = "0x12bc - TCD Control and Status"] + pub tcd21_csr: TCD21_CSR, + #[doc = "0x12be - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd21_biter_elinkno: TCD21_BITER_ELINKNO, + #[doc = "0x12c0 - TCD Source Address"] + pub tcd22_saddr: TCD22_SADDR, + #[doc = "0x12c4 - TCD Signed Source Address Offset"] + pub tcd22_soff: TCD22_SOFF, + #[doc = "0x12c6 - TCD Transfer Attributes"] + pub tcd22_attr: TCD22_ATTR, + #[doc = "0x12c8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd22_nbytes_mlno: TCD22_NBYTES_MLNO, + #[doc = "0x12cc - TCD Last Source Address Adjustment"] + pub tcd22_slast: TCD22_SLAST, + #[doc = "0x12d0 - TCD Destination Address"] + pub tcd22_daddr: TCD22_DADDR, + #[doc = "0x12d4 - TCD Signed Destination Address Offset"] + pub tcd22_doff: TCD22_DOFF, + #[doc = "0x12d6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd22_citer_elinkno: TCD22_CITER_ELINKNO, + #[doc = "0x12d8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd22_dlastsga: TCD22_DLASTSGA, + #[doc = "0x12dc - TCD Control and Status"] + pub tcd22_csr: TCD22_CSR, + #[doc = "0x12de - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd22_biter_elinkno: TCD22_BITER_ELINKNO, + #[doc = "0x12e0 - TCD Source Address"] + pub tcd23_saddr: TCD23_SADDR, + #[doc = "0x12e4 - TCD Signed Source Address Offset"] + pub tcd23_soff: TCD23_SOFF, + #[doc = "0x12e6 - TCD Transfer Attributes"] + pub tcd23_attr: TCD23_ATTR, + #[doc = "0x12e8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd23_nbytes_mlno: TCD23_NBYTES_MLNO, + #[doc = "0x12ec - TCD Last Source Address Adjustment"] + pub tcd23_slast: TCD23_SLAST, + #[doc = "0x12f0 - TCD Destination Address"] + pub tcd23_daddr: TCD23_DADDR, + #[doc = "0x12f4 - TCD Signed Destination Address Offset"] + pub tcd23_doff: TCD23_DOFF, + #[doc = "0x12f6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd23_citer_elinkno: TCD23_CITER_ELINKNO, + #[doc = "0x12f8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd23_dlastsga: TCD23_DLASTSGA, + #[doc = "0x12fc - TCD Control and Status"] + pub tcd23_csr: TCD23_CSR, + #[doc = "0x12fe - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd23_biter_elinkno: TCD23_BITER_ELINKNO, + #[doc = "0x1300 - TCD Source Address"] + pub tcd24_saddr: TCD24_SADDR, + #[doc = "0x1304 - TCD Signed Source Address Offset"] + pub tcd24_soff: TCD24_SOFF, + #[doc = "0x1306 - TCD Transfer Attributes"] + pub tcd24_attr: TCD24_ATTR, + #[doc = "0x1308 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd24_nbytes_mlno: TCD24_NBYTES_MLNO, + #[doc = "0x130c - TCD Last Source Address Adjustment"] + pub tcd24_slast: TCD24_SLAST, + #[doc = "0x1310 - TCD Destination Address"] + pub tcd24_daddr: TCD24_DADDR, + #[doc = "0x1314 - TCD Signed Destination Address Offset"] + pub tcd24_doff: TCD24_DOFF, + #[doc = "0x1316 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd24_citer_elinkno: TCD24_CITER_ELINKNO, + #[doc = "0x1318 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd24_dlastsga: TCD24_DLASTSGA, + #[doc = "0x131c - TCD Control and Status"] + pub tcd24_csr: TCD24_CSR, + #[doc = "0x131e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd24_biter_elinkno: TCD24_BITER_ELINKNO, + #[doc = "0x1320 - TCD Source Address"] + pub tcd25_saddr: TCD25_SADDR, + #[doc = "0x1324 - TCD Signed Source Address Offset"] + pub tcd25_soff: TCD25_SOFF, + #[doc = "0x1326 - TCD Transfer Attributes"] + pub tcd25_attr: TCD25_ATTR, + #[doc = "0x1328 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd25_nbytes_mlno: TCD25_NBYTES_MLNO, + #[doc = "0x132c - TCD Last Source Address Adjustment"] + pub tcd25_slast: TCD25_SLAST, + #[doc = "0x1330 - TCD Destination Address"] + pub tcd25_daddr: TCD25_DADDR, + #[doc = "0x1334 - TCD Signed Destination Address Offset"] + pub tcd25_doff: TCD25_DOFF, + #[doc = "0x1336 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd25_citer_elinkno: TCD25_CITER_ELINKNO, + #[doc = "0x1338 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd25_dlastsga: TCD25_DLASTSGA, + #[doc = "0x133c - TCD Control and Status"] + pub tcd25_csr: TCD25_CSR, + #[doc = "0x133e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd25_biter_elinkno: TCD25_BITER_ELINKNO, + #[doc = "0x1340 - TCD Source Address"] + pub tcd26_saddr: TCD26_SADDR, + #[doc = "0x1344 - TCD Signed Source Address Offset"] + pub tcd26_soff: TCD26_SOFF, + #[doc = "0x1346 - TCD Transfer Attributes"] + pub tcd26_attr: TCD26_ATTR, + #[doc = "0x1348 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd26_nbytes_mlno: TCD26_NBYTES_MLNO, + #[doc = "0x134c - TCD Last Source Address Adjustment"] + pub tcd26_slast: TCD26_SLAST, + #[doc = "0x1350 - TCD Destination Address"] + pub tcd26_daddr: TCD26_DADDR, + #[doc = "0x1354 - TCD Signed Destination Address Offset"] + pub tcd26_doff: TCD26_DOFF, + #[doc = "0x1356 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd26_citer_elinkno: TCD26_CITER_ELINKNO, + #[doc = "0x1358 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd26_dlastsga: TCD26_DLASTSGA, + #[doc = "0x135c - TCD Control and Status"] + pub tcd26_csr: TCD26_CSR, + #[doc = "0x135e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd26_biter_elinkno: TCD26_BITER_ELINKNO, + #[doc = "0x1360 - TCD Source Address"] + pub tcd27_saddr: TCD27_SADDR, + #[doc = "0x1364 - TCD Signed Source Address Offset"] + pub tcd27_soff: TCD27_SOFF, + #[doc = "0x1366 - TCD Transfer Attributes"] + pub tcd27_attr: TCD27_ATTR, + #[doc = "0x1368 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd27_nbytes_mlno: TCD27_NBYTES_MLNO, + #[doc = "0x136c - TCD Last Source Address Adjustment"] + pub tcd27_slast: TCD27_SLAST, + #[doc = "0x1370 - TCD Destination Address"] + pub tcd27_daddr: TCD27_DADDR, + #[doc = "0x1374 - TCD Signed Destination Address Offset"] + pub tcd27_doff: TCD27_DOFF, + #[doc = "0x1376 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd27_citer_elinkno: TCD27_CITER_ELINKNO, + #[doc = "0x1378 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd27_dlastsga: TCD27_DLASTSGA, + #[doc = "0x137c - TCD Control and Status"] + pub tcd27_csr: TCD27_CSR, + #[doc = "0x137e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd27_biter_elinkno: TCD27_BITER_ELINKNO, + #[doc = "0x1380 - TCD Source Address"] + pub tcd28_saddr: TCD28_SADDR, + #[doc = "0x1384 - TCD Signed Source Address Offset"] + pub tcd28_soff: TCD28_SOFF, + #[doc = "0x1386 - TCD Transfer Attributes"] + pub tcd28_attr: TCD28_ATTR, + #[doc = "0x1388 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd28_nbytes_mlno: TCD28_NBYTES_MLNO, + #[doc = "0x138c - TCD Last Source Address Adjustment"] + pub tcd28_slast: TCD28_SLAST, + #[doc = "0x1390 - TCD Destination Address"] + pub tcd28_daddr: TCD28_DADDR, + #[doc = "0x1394 - TCD Signed Destination Address Offset"] + pub tcd28_doff: TCD28_DOFF, + #[doc = "0x1396 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd28_citer_elinkno: TCD28_CITER_ELINKNO, + #[doc = "0x1398 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd28_dlastsga: TCD28_DLASTSGA, + #[doc = "0x139c - TCD Control and Status"] + pub tcd28_csr: TCD28_CSR, + #[doc = "0x139e - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd28_biter_elinkno: TCD28_BITER_ELINKNO, + #[doc = "0x13a0 - TCD Source Address"] + pub tcd29_saddr: TCD29_SADDR, + #[doc = "0x13a4 - TCD Signed Source Address Offset"] + pub tcd29_soff: TCD29_SOFF, + #[doc = "0x13a6 - TCD Transfer Attributes"] + pub tcd29_attr: TCD29_ATTR, + #[doc = "0x13a8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd29_nbytes_mlno: TCD29_NBYTES_MLNO, + #[doc = "0x13ac - TCD Last Source Address Adjustment"] + pub tcd29_slast: TCD29_SLAST, + #[doc = "0x13b0 - TCD Destination Address"] + pub tcd29_daddr: TCD29_DADDR, + #[doc = "0x13b4 - TCD Signed Destination Address Offset"] + pub tcd29_doff: TCD29_DOFF, + #[doc = "0x13b6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd29_citer_elinkno: TCD29_CITER_ELINKNO, + #[doc = "0x13b8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd29_dlastsga: TCD29_DLASTSGA, + #[doc = "0x13bc - TCD Control and Status"] + pub tcd29_csr: TCD29_CSR, + #[doc = "0x13be - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd29_biter_elinkno: TCD29_BITER_ELINKNO, + #[doc = "0x13c0 - TCD Source Address"] + pub tcd30_saddr: TCD30_SADDR, + #[doc = "0x13c4 - TCD Signed Source Address Offset"] + pub tcd30_soff: TCD30_SOFF, + #[doc = "0x13c6 - TCD Transfer Attributes"] + pub tcd30_attr: TCD30_ATTR, + #[doc = "0x13c8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd30_nbytes_mlno: TCD30_NBYTES_MLNO, + #[doc = "0x13cc - TCD Last Source Address Adjustment"] + pub tcd30_slast: TCD30_SLAST, + #[doc = "0x13d0 - TCD Destination Address"] + pub tcd30_daddr: TCD30_DADDR, + #[doc = "0x13d4 - TCD Signed Destination Address Offset"] + pub tcd30_doff: TCD30_DOFF, + #[doc = "0x13d6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd30_citer_elinkno: TCD30_CITER_ELINKNO, + #[doc = "0x13d8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd30_dlastsga: TCD30_DLASTSGA, + #[doc = "0x13dc - TCD Control and Status"] + pub tcd30_csr: TCD30_CSR, + #[doc = "0x13de - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd30_biter_elinkno: TCD30_BITER_ELINKNO, + #[doc = "0x13e0 - TCD Source Address"] + pub tcd31_saddr: TCD31_SADDR, + #[doc = "0x13e4 - TCD Signed Source Address Offset"] + pub tcd31_soff: TCD31_SOFF, + #[doc = "0x13e6 - TCD Transfer Attributes"] + pub tcd31_attr: TCD31_ATTR, + #[doc = "0x13e8 - TCD Minor Byte Count (Minor Loop Mapping Disabled)"] + pub tcd31_nbytes_mlno: TCD31_NBYTES_MLNO, + #[doc = "0x13ec - TCD Last Source Address Adjustment"] + pub tcd31_slast: TCD31_SLAST, + #[doc = "0x13f0 - TCD Destination Address"] + pub tcd31_daddr: TCD31_DADDR, + #[doc = "0x13f4 - TCD Signed Destination Address Offset"] + pub tcd31_doff: TCD31_DOFF, + #[doc = "0x13f6 - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd31_citer_elinkno: TCD31_CITER_ELINKNO, + #[doc = "0x13f8 - TCD Last Destination Address Adjustment/Scatter Gather Address"] + pub tcd31_dlastsga: TCD31_DLASTSGA, + #[doc = "0x13fc - TCD Control and Status"] + pub tcd31_csr: TCD31_CSR, + #[doc = "0x13fe - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] + pub tcd31_biter_elinkno: TCD31_BITER_ELINKNO, +} +#[doc = "Control Register"] +pub struct CR { + register: VolatileCell, +} +#[doc = "Control Register"] +pub mod cr; +#[doc = "Error Status Register"] +pub struct ES { + register: VolatileCell, +} +#[doc = "Error Status Register"] +pub mod es; +#[doc = "Enable Request Register"] +pub struct ERQ { + register: VolatileCell, +} +#[doc = "Enable Request Register"] +pub mod erq; +#[doc = "Enable Error Interrupt Register"] +pub struct EEI { + register: VolatileCell, +} +#[doc = "Enable Error Interrupt Register"] +pub mod eei; +#[doc = "Clear Enable Error Interrupt Register"] +pub struct CEEI { + register: VolatileCell, +} +#[doc = "Clear Enable Error Interrupt Register"] +pub mod ceei; +#[doc = "Set Enable Error Interrupt Register"] +pub struct SEEI { + register: VolatileCell, +} +#[doc = "Set Enable Error Interrupt Register"] +pub mod seei; +#[doc = "Clear Enable Request Register"] +pub struct CERQ { + register: VolatileCell, +} +#[doc = "Clear Enable Request Register"] +pub mod cerq; +#[doc = "Set Enable Request Register"] +pub struct SERQ { + register: VolatileCell, +} +#[doc = "Set Enable Request Register"] +pub mod serq; +#[doc = "Clear DONE Status Bit Register"] +pub struct CDNE { + register: VolatileCell, +} +#[doc = "Clear DONE Status Bit Register"] +pub mod cdne; +#[doc = "Set START Bit Register"] +pub struct SSRT { + register: VolatileCell, +} +#[doc = "Set START Bit Register"] +pub mod ssrt; +#[doc = "Clear Error Register"] +pub struct CERR { + register: VolatileCell, +} +#[doc = "Clear Error Register"] +pub mod cerr; +#[doc = "Clear Interrupt Request Register"] +pub struct CINT { + register: VolatileCell, +} +#[doc = "Clear Interrupt Request Register"] +pub mod cint; +#[doc = "Interrupt Request Register"] +pub struct INT { + register: VolatileCell, +} +#[doc = "Interrupt Request Register"] +pub mod int; +#[doc = "Error Register"] +pub struct ERR { + register: VolatileCell, +} +#[doc = "Error Register"] +pub mod err; +#[doc = "Hardware Request Status Register"] +pub struct HRS { + register: VolatileCell, +} +#[doc = "Hardware Request Status Register"] +pub mod hrs; +#[doc = "Enable Asynchronous Request in Stop Register"] +pub struct EARS { + register: VolatileCell, +} +#[doc = "Enable Asynchronous Request in Stop Register"] +pub mod ears; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI3 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri3; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI2 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri2; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI1 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri1; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI0 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri0; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI7 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri7; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI6 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri6; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI5 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri5; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI4 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri4; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI11 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri11; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI10 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri10; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI9 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri9; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI8 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri8; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI15 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri15; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI14 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri14; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI13 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri13; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI12 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri12; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI19 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri19; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI18 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri18; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI17 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri17; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI16 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri16; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI23 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri23; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI22 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri22; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI21 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri21; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI20 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri20; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI27 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri27; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI26 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri26; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI25 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri25; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI24 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri24; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI31 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri31; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI30 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri30; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI29 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri29; +#[doc = "Channel n Priority Register"] +pub struct DCHPRI28 { + register: VolatileCell, +} +#[doc = "Channel n Priority Register"] +pub mod dchpri28; +#[doc = "TCD Source Address"] +pub struct TCD0_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd0_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD0_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd0_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD0_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd0_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD0_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd0_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD0_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd0_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD0_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd0_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD0_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd0_slast; +#[doc = "TCD Destination Address"] +pub struct TCD0_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd0_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD0_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd0_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD0_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd0_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD0_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd0_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD0_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd0_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD0_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd0_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD0_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd0_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD0_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd0_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD1_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd1_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD1_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd1_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD1_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd1_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD1_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd1_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD1_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd1_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD1_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd1_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD1_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd1_slast; +#[doc = "TCD Destination Address"] +pub struct TCD1_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd1_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD1_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd1_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD1_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd1_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD1_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd1_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD1_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd1_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD1_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd1_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD1_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd1_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD1_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd1_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD2_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd2_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD2_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd2_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD2_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd2_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD2_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd2_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD2_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd2_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD2_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd2_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD2_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd2_slast; +#[doc = "TCD Destination Address"] +pub struct TCD2_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd2_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD2_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd2_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD2_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd2_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD2_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd2_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD2_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd2_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD2_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd2_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD2_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd2_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD2_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd2_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD3_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd3_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD3_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd3_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD3_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd3_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD3_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd3_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD3_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd3_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD3_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd3_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD3_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd3_slast; +#[doc = "TCD Destination Address"] +pub struct TCD3_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd3_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD3_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd3_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD3_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd3_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD3_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd3_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD3_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd3_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD3_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd3_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD3_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd3_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD3_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd3_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD4_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd4_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD4_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd4_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD4_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd4_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD4_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd4_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD4_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd4_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD4_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd4_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD4_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd4_slast; +#[doc = "TCD Destination Address"] +pub struct TCD4_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd4_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD4_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd4_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD4_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd4_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD4_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd4_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD4_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd4_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD4_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd4_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD4_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd4_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD4_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd4_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD5_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd5_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD5_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd5_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD5_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd5_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD5_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd5_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD5_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd5_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD5_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd5_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD5_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd5_slast; +#[doc = "TCD Destination Address"] +pub struct TCD5_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd5_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD5_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd5_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD5_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd5_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD5_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd5_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD5_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd5_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD5_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd5_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD5_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd5_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD5_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd5_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD6_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd6_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD6_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd6_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD6_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd6_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD6_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd6_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD6_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd6_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD6_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd6_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD6_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd6_slast; +#[doc = "TCD Destination Address"] +pub struct TCD6_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd6_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD6_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd6_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD6_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd6_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD6_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd6_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD6_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd6_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD6_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd6_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD6_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd6_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD6_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd6_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD7_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd7_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD7_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd7_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD7_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd7_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD7_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd7_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD7_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd7_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD7_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd7_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD7_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd7_slast; +#[doc = "TCD Destination Address"] +pub struct TCD7_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd7_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD7_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd7_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD7_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd7_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD7_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd7_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD7_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd7_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD7_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd7_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD7_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd7_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD7_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd7_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD8_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd8_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD8_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd8_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD8_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd8_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD8_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd8_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD8_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd8_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD8_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd8_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD8_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd8_slast; +#[doc = "TCD Destination Address"] +pub struct TCD8_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd8_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD8_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd8_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD8_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd8_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD8_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd8_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD8_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd8_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD8_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd8_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD8_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd8_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD8_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd8_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD9_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd9_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD9_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd9_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD9_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd9_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD9_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd9_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD9_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd9_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD9_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd9_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD9_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd9_slast; +#[doc = "TCD Destination Address"] +pub struct TCD9_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd9_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD9_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd9_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD9_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd9_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD9_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd9_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD9_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd9_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD9_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd9_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD9_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd9_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD9_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd9_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD10_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd10_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD10_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd10_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD10_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd10_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD10_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd10_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD10_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd10_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD10_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd10_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD10_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd10_slast; +#[doc = "TCD Destination Address"] +pub struct TCD10_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd10_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD10_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd10_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD10_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd10_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD10_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd10_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD10_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd10_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD10_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd10_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD10_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd10_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD10_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd10_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD11_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd11_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD11_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd11_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD11_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd11_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD11_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd11_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD11_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd11_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD11_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd11_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD11_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd11_slast; +#[doc = "TCD Destination Address"] +pub struct TCD11_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd11_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD11_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd11_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD11_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd11_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD11_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd11_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD11_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd11_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD11_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd11_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD11_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd11_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD11_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd11_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD12_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd12_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD12_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd12_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD12_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd12_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD12_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd12_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD12_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd12_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD12_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd12_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD12_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd12_slast; +#[doc = "TCD Destination Address"] +pub struct TCD12_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd12_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD12_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd12_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD12_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd12_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD12_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd12_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD12_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd12_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD12_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd12_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD12_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd12_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD12_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd12_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD13_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd13_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD13_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd13_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD13_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd13_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD13_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd13_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD13_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd13_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD13_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd13_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD13_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd13_slast; +#[doc = "TCD Destination Address"] +pub struct TCD13_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd13_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD13_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd13_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD13_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd13_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD13_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd13_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD13_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd13_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD13_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd13_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD13_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd13_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD13_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd13_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD14_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd14_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD14_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd14_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD14_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd14_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD14_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd14_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD14_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd14_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD14_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd14_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD14_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd14_slast; +#[doc = "TCD Destination Address"] +pub struct TCD14_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd14_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD14_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd14_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD14_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd14_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD14_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd14_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD14_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd14_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD14_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd14_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD14_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd14_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD14_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd14_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD15_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd15_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD15_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd15_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD15_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd15_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD15_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd15_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD15_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd15_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD15_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd15_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD15_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd15_slast; +#[doc = "TCD Destination Address"] +pub struct TCD15_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd15_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD15_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd15_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD15_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd15_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD15_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd15_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD15_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd15_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD15_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd15_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD15_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd15_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD15_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd15_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD16_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd16_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD16_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd16_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD16_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd16_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD16_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd16_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD16_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd16_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD16_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd16_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD16_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd16_slast; +#[doc = "TCD Destination Address"] +pub struct TCD16_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd16_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD16_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd16_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD16_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd16_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD16_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd16_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD16_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd16_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD16_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd16_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD16_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd16_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD16_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd16_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD17_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd17_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD17_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd17_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD17_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd17_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD17_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd17_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD17_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd17_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD17_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd17_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD17_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd17_slast; +#[doc = "TCD Destination Address"] +pub struct TCD17_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd17_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD17_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd17_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD17_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd17_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD17_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd17_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD17_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd17_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD17_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd17_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD17_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd17_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD17_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd17_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD18_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd18_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD18_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd18_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD18_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd18_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD18_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd18_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD18_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd18_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD18_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd18_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD18_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd18_slast; +#[doc = "TCD Destination Address"] +pub struct TCD18_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd18_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD18_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd18_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD18_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd18_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD18_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd18_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD18_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd18_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD18_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd18_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD18_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd18_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD18_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd18_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD19_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd19_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD19_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd19_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD19_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd19_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD19_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd19_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD19_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd19_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD19_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd19_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD19_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd19_slast; +#[doc = "TCD Destination Address"] +pub struct TCD19_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd19_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD19_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd19_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD19_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd19_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD19_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd19_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD19_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd19_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD19_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd19_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD19_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd19_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD19_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd19_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD20_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd20_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD20_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd20_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD20_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd20_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD20_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd20_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD20_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd20_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD20_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd20_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD20_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd20_slast; +#[doc = "TCD Destination Address"] +pub struct TCD20_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd20_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD20_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd20_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD20_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd20_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD20_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd20_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD20_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd20_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD20_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd20_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD20_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd20_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD20_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd20_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD21_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd21_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD21_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd21_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD21_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd21_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD21_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd21_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD21_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd21_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD21_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd21_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD21_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd21_slast; +#[doc = "TCD Destination Address"] +pub struct TCD21_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd21_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD21_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd21_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD21_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd21_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD21_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd21_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD21_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd21_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD21_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd21_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD21_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd21_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD21_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd21_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD22_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd22_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD22_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd22_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD22_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd22_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD22_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd22_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD22_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd22_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD22_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd22_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD22_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd22_slast; +#[doc = "TCD Destination Address"] +pub struct TCD22_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd22_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD22_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd22_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD22_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd22_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD22_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd22_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD22_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd22_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD22_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd22_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD22_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd22_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD22_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd22_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD23_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd23_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD23_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd23_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD23_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd23_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD23_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd23_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD23_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd23_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD23_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd23_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD23_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd23_slast; +#[doc = "TCD Destination Address"] +pub struct TCD23_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd23_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD23_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd23_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD23_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd23_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD23_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd23_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD23_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd23_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD23_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd23_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD23_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd23_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD23_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd23_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD24_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd24_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD24_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd24_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD24_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd24_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD24_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd24_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD24_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd24_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD24_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd24_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD24_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd24_slast; +#[doc = "TCD Destination Address"] +pub struct TCD24_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd24_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD24_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd24_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD24_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd24_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD24_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd24_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD24_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd24_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD24_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd24_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD24_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd24_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD24_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd24_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD25_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd25_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD25_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd25_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD25_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd25_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD25_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd25_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD25_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd25_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD25_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd25_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD25_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd25_slast; +#[doc = "TCD Destination Address"] +pub struct TCD25_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd25_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD25_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd25_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD25_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd25_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD25_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd25_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD25_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd25_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD25_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd25_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD25_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd25_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD25_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd25_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD26_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd26_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD26_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd26_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD26_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd26_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD26_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd26_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD26_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd26_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD26_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd26_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD26_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd26_slast; +#[doc = "TCD Destination Address"] +pub struct TCD26_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd26_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD26_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd26_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD26_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd26_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD26_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd26_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD26_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd26_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD26_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd26_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD26_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd26_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD26_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd26_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD27_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd27_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD27_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd27_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD27_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd27_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD27_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd27_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD27_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd27_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD27_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd27_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD27_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd27_slast; +#[doc = "TCD Destination Address"] +pub struct TCD27_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd27_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD27_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd27_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD27_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd27_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD27_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd27_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD27_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd27_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD27_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd27_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD27_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd27_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD27_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd27_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD28_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd28_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD28_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd28_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD28_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd28_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD28_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd28_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD28_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd28_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD28_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd28_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD28_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd28_slast; +#[doc = "TCD Destination Address"] +pub struct TCD28_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd28_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD28_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd28_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD28_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd28_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD28_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd28_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD28_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd28_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD28_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd28_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD28_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd28_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD28_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd28_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD29_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd29_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD29_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd29_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD29_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd29_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD29_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd29_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD29_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd29_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD29_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd29_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD29_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd29_slast; +#[doc = "TCD Destination Address"] +pub struct TCD29_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd29_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD29_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd29_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD29_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd29_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD29_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd29_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD29_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd29_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD29_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd29_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD29_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd29_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD29_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd29_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD30_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd30_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD30_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd30_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD30_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd30_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD30_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd30_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD30_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd30_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD30_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd30_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD30_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd30_slast; +#[doc = "TCD Destination Address"] +pub struct TCD30_DADDR { + register: VolatileCellz, +} +#[doc = "TCD Destination Address"] +pub mod tcd30_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD30_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd30_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD30_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd30_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD30_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd30_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD30_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd30_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD30_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd30_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD30_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd30_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD30_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd30_biter_elinkyes; +#[doc = "TCD Source Address"] +pub struct TCD31_SADDR { + register: VolatileCell, +} +#[doc = "TCD Source Address"] +pub mod tcd31_saddr; +#[doc = "TCD Signed Source Address Offset"] +pub struct TCD31_SOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Source Address Offset"] +pub mod tcd31_soff; +#[doc = "TCD Transfer Attributes"] +pub struct TCD31_ATTR { + register: VolatileCell, +} +#[doc = "TCD Transfer Attributes"] +pub mod tcd31_attr; +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub struct TCD31_NBYTES_MLNO { + register: VolatileCell, +} +#[doc = "TCD Minor Byte Count (Minor Loop Mapping Disabled)"] +pub mod tcd31_nbytes_mlno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub struct TCD31_NBYTES_MLOFFNO { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping Enabled and Offset Disabled)"] +pub mod tcd31_nbytes_mloffno; +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub struct TCD31_NBYTES_MLOFFYES { + register: VolatileCell, +} +#[doc = "TCD Signed Minor Loop Offset (Minor Loop Mapping and Offset Enabled)"] +pub mod tcd31_nbytes_mloffyes; +#[doc = "TCD Last Source Address Adjustment"] +pub struct TCD31_SLAST { + register: VolatileCell, +} +#[doc = "TCD Last Source Address Adjustment"] +pub mod tcd31_slast; +#[doc = "TCD Destination Address"] +pub struct TCD31_DADDR { + register: VolatileCell, +} +#[doc = "TCD Destination Address"] +pub mod tcd31_daddr; +#[doc = "TCD Signed Destination Address Offset"] +pub struct TCD31_DOFF { + register: VolatileCell, +} +#[doc = "TCD Signed Destination Address Offset"] +pub mod tcd31_doff; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD31_CITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd31_citer_elinkno; +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD31_CITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd31_citer_elinkyes; +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub struct TCD31_DLASTSGA { + register: VolatileCell, +} +#[doc = "TCD Last Destination Address Adjustment/Scatter Gather Address"] +pub mod tcd31_dlastsga; +#[doc = "TCD Control and Status"] +pub struct TCD31_CSR { + register: VolatileCell, +} +#[doc = "TCD Control and Status"] +pub mod tcd31_csr; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub struct TCD31_BITER_ELINKNO { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled)"] +pub mod tcd31_biter_elinkno; +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub struct TCD31_BITER_ELINKYES { + register: VolatileCell, +} +#[doc = "TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled)"] +pub mod tcd31_biter_elinkyes; diff --git a/crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.rs b/crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.rs new file mode 100644 index 00000000000..ad2823b48f7 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.rs @@ -0,0 +1 @@ +' \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt b/crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt new file mode 100644 index 00000000000..4d5ad74df57 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0001_unclosed_char_at_eof.txt @@ -0,0 +1,2 @@ +CHAR 1 "\'" +> error0..1 token("\'") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.rs b/crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.rs new file mode 100644 index 00000000000..e264a415280 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.rs @@ -0,0 +1 @@ +'🦀 \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt b/crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt new file mode 100644 index 00000000000..eafdb3c7c91 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0002_unclosed_char_with_ferris.txt @@ -0,0 +1,2 @@ +CHAR 5 "\'🦀" +> error0..5 token("\'🦀") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.rs b/crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.rs new file mode 100644 index 00000000000..cf74b4dad3b --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.rs @@ -0,0 +1 @@ +'\x7f \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt b/crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt new file mode 100644 index 00000000000..cc2b4866a17 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0003_unclosed_char_with_ascii_escape.txt @@ -0,0 +1,2 @@ +CHAR 5 "\'\\x7f" +> error0..5 token("\'\\x7f") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.rs b/crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.rs new file mode 100644 index 00000000000..50be91f6852 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.rs @@ -0,0 +1 @@ +'\u{20AA} \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt b/crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt new file mode 100644 index 00000000000..a6d422cb3d4 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0004_unclosed_char_with_unicode_escape.txt @@ -0,0 +1,2 @@ +CHAR 9 "\'\\u{20AA}" +> error0..9 token("\'\\u{20AA}") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.rs b/crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.rs new file mode 100644 index 00000000000..309ecfe4786 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.rs @@ -0,0 +1 @@ +' \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt b/crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt new file mode 100644 index 00000000000..47e7baa708a --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0005_unclosed_char_with_space.txt @@ -0,0 +1,2 @@ +CHAR 2 "\' " +> error0..2 token("\' ") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.rs b/crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.rs new file mode 100644 index 00000000000..6ba258b1093 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.rs @@ -0,0 +1 @@ +'\ \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt b/crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt new file mode 100644 index 00000000000..511029d8078 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0006_unclosed_char_with_slash.txt @@ -0,0 +1,2 @@ +CHAR 2 "\'\\" +> error0..2 token("\'\\") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.rs b/crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.rs new file mode 100644 index 00000000000..78bef7e3eb2 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.rs @@ -0,0 +1 @@ +'\n \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt b/crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt new file mode 100644 index 00000000000..d2ba5742c67 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0007_unclosed_char_with_slash_n.txt @@ -0,0 +1,2 @@ +CHAR 3 "\'\\n" +> error0..3 token("\'\\n") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.rs b/crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.rs new file mode 100644 index 00000000000..a0e722065bd --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.rs @@ -0,0 +1 @@ +'\' \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt b/crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt new file mode 100644 index 00000000000..ae9a7f0e2a7 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0008_unclosed_char_with_slash_single_quote.txt @@ -0,0 +1,2 @@ +CHAR 3 "\'\\\'" +> error0..3 token("\'\\\'") msg(Missing trailing `'` symbol to terminate the character literal) diff --git a/crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.rs b/crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.rs new file mode 100644 index 00000000000..795dc7e25c5 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.rs @@ -0,0 +1 @@ +b' \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt b/crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt new file mode 100644 index 00000000000..ff15045920f --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0009_unclosed_byte_at_eof.txt @@ -0,0 +1,2 @@ +BYTE 2 "b\'" +> error0..2 token("b\'") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.rs b/crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.rs new file mode 100644 index 00000000000..c9230dc24ea --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.rs @@ -0,0 +1 @@ +b'🦀 \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt b/crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt new file mode 100644 index 00000000000..34f7bd6d407 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0010_unclosed_byte_with_ferris.txt @@ -0,0 +1,2 @@ +BYTE 6 "b\'🦀" +> error0..6 token("b\'🦀") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.rs b/crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.rs new file mode 100644 index 00000000000..d146a8090d1 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.rs @@ -0,0 +1 @@ +b'\x7f \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt b/crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt new file mode 100644 index 00000000000..c964d0f00a5 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0011_unclosed_byte_with_ascii_escape.txt @@ -0,0 +1,2 @@ +BYTE 6 "b\'\\x7f" +> error0..6 token("b\'\\x7f") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.rs b/crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.rs new file mode 100644 index 00000000000..a3dec7c255d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.rs @@ -0,0 +1 @@ +b'\u{20AA} \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt b/crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt new file mode 100644 index 00000000000..cc65fb86f97 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0012_unclosed_byte_with_unicode_escape.txt @@ -0,0 +1,2 @@ +BYTE 10 "b\'\\u{20AA}" +> error0..10 token("b\'\\u{20AA}") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.rs b/crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.rs new file mode 100644 index 00000000000..93b7f9c87c9 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.rs @@ -0,0 +1 @@ +b' \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt b/crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt new file mode 100644 index 00000000000..800834a144f --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0013_unclosed_byte_with_space.txt @@ -0,0 +1,2 @@ +BYTE 3 "b\' " +> error0..3 token("b\' ") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.rs b/crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.rs new file mode 100644 index 00000000000..abffa5037c0 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.rs @@ -0,0 +1 @@ +b'\ \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt b/crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt new file mode 100644 index 00000000000..7b85ee64634 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0014_unclosed_byte_with_slash.txt @@ -0,0 +1,2 @@ +BYTE 3 "b\'\\" +> error0..3 token("b\'\\") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.rs b/crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.rs new file mode 100644 index 00000000000..4f46836a935 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.rs @@ -0,0 +1 @@ +b'\n \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt b/crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt new file mode 100644 index 00000000000..4b9a63117b5 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0015_unclosed_byte_with_slash_n.txt @@ -0,0 +1,2 @@ +BYTE 4 "b\'\\n" +> error0..4 token("b\'\\n") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.rs b/crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.rs new file mode 100644 index 00000000000..645b641eedb --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.rs @@ -0,0 +1 @@ +b'\' \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt b/crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt new file mode 100644 index 00000000000..fe337f8d325 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0016_unclosed_byte_with_slash_single_quote.txt @@ -0,0 +1,2 @@ +BYTE 4 "b\'\\\'" +> error0..4 token("b\'\\\'") msg(Missing trailing `'` symbol to terminate the byte literal) diff --git a/crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.rs b/crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.rs new file mode 100644 index 00000000000..9d68933c44f --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.rs @@ -0,0 +1 @@ +" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt b/crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt new file mode 100644 index 00000000000..d11a8d880ea --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0017_unclosed_string_at_eof.txt @@ -0,0 +1,2 @@ +STRING 1 "\"" +> error0..1 token("\"") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.rs b/crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.rs new file mode 100644 index 00000000000..d439b8d2a1d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.rs @@ -0,0 +1 @@ +"🦀 \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt b/crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt new file mode 100644 index 00000000000..167f942d12c --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0018_unclosed_string_with_ferris.txt @@ -0,0 +1,2 @@ +STRING 5 "\"🦀" +> error0..5 token("\"🦀") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.rs b/crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.rs new file mode 100644 index 00000000000..56186a34444 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.rs @@ -0,0 +1 @@ +"\x7f \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt b/crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt new file mode 100644 index 00000000000..224c653d26d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0019_unclosed_string_with_ascii_escape.txt @@ -0,0 +1,2 @@ +STRING 5 "\"\\x7f" +> error0..5 token("\"\\x7f") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.rs b/crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.rs new file mode 100644 index 00000000000..ed24095c3d4 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.rs @@ -0,0 +1 @@ +"\u{20AA} \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt b/crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt new file mode 100644 index 00000000000..48975bbcbc4 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0020_unclosed_string_with_unicode_escape.txt @@ -0,0 +1,2 @@ +STRING 9 "\"\\u{20AA}" +> error0..9 token("\"\\u{20AA}") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.rs b/crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.rs new file mode 100644 index 00000000000..72cdc841fbd --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.rs @@ -0,0 +1 @@ +" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt b/crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt new file mode 100644 index 00000000000..a823cca7a48 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0021_unclosed_string_with_space.txt @@ -0,0 +1,2 @@ +STRING 2 "\" " +> error0..2 token("\" ") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.rs b/crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.rs new file mode 100644 index 00000000000..00a25840087 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.rs @@ -0,0 +1 @@ +"\ \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt b/crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt new file mode 100644 index 00000000000..0914f001f55 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0022_unclosed_string_with_slash.txt @@ -0,0 +1,2 @@ +STRING 2 "\"\\" +> error0..2 token("\"\\") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.rs b/crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.rs new file mode 100644 index 00000000000..a0c29b8cff7 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.rs @@ -0,0 +1 @@ +"\n \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt b/crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt new file mode 100644 index 00000000000..5674b55fdfa --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0023_unclosed_string_with_slash_n.txt @@ -0,0 +1,2 @@ +STRING 3 "\"\\n" +> error0..3 token("\"\\n") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.rs b/crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.rs new file mode 100644 index 00000000000..403c2d6ddc6 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.rs @@ -0,0 +1 @@ +"\" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt b/crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt new file mode 100644 index 00000000000..4c9a774e466 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0024_unclosed_string_with_slash_double_quote.txt @@ -0,0 +1,2 @@ +STRING 3 "\"\\\"" +> error0..3 token("\"\\\"") msg(Missing trailing `"` symbol to terminate the string literal) diff --git a/crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.rs b/crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.rs new file mode 100644 index 00000000000..36f4f432187 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.rs @@ -0,0 +1 @@ +b" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt b/crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt new file mode 100644 index 00000000000..04e6b0aa4f1 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0025_unclosed_byte_string_at_eof.txt @@ -0,0 +1,2 @@ +BYTE_STRING 2 "b\"" +> error0..2 token("b\"") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.rs b/crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.rs new file mode 100644 index 00000000000..3c23a037228 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.rs @@ -0,0 +1 @@ +b"🦀 \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt b/crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt new file mode 100644 index 00000000000..0576a0609a8 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0026_unclosed_byte_string_with_ferris.txt @@ -0,0 +1,2 @@ +BYTE_STRING 6 "b\"🦀" +> error0..6 token("b\"🦀") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.rs b/crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.rs new file mode 100644 index 00000000000..836c112c157 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.rs @@ -0,0 +1 @@ +b"\x7f \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt b/crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt new file mode 100644 index 00000000000..541a013d853 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0027_unclosed_byte_string_with_ascii_escape.txt @@ -0,0 +1,2 @@ +BYTE_STRING 6 "b\"\\x7f" +> error0..6 token("b\"\\x7f") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.rs b/crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.rs new file mode 100644 index 00000000000..1c6df1d00e4 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.rs @@ -0,0 +1 @@ +b"\u{20AA} \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt b/crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt new file mode 100644 index 00000000000..71b0fb2118c --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0028_unclosed_byte_string_with_unicode_escape.txt @@ -0,0 +1,2 @@ +BYTE_STRING 10 "b\"\\u{20AA}" +> error0..10 token("b\"\\u{20AA}") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.rs b/crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.rs new file mode 100644 index 00000000000..d6898541e62 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.rs @@ -0,0 +1 @@ +b" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt b/crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt new file mode 100644 index 00000000000..bd5058bc118 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0029_unclosed_byte_string_with_space.txt @@ -0,0 +1,2 @@ +BYTE_STRING 3 "b\" " +> error0..3 token("b\" ") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.rs b/crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.rs new file mode 100644 index 00000000000..cce6615381d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.rs @@ -0,0 +1 @@ +b"\ \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt b/crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt new file mode 100644 index 00000000000..7f94f10ba15 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0030_unclosed_byte_string_with_slash.txt @@ -0,0 +1,2 @@ +BYTE_STRING 3 "b\"\\" +> error0..3 token("b\"\\") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.rs b/crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.rs new file mode 100644 index 00000000000..5e680aabb7b --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.rs @@ -0,0 +1 @@ +b"\n \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt b/crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt new file mode 100644 index 00000000000..9c3c089d724 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0031_unclosed_byte_string_with_slash_n.txt @@ -0,0 +1,2 @@ +BYTE_STRING 4 "b\"\\n" +> error0..4 token("b\"\\n") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.rs b/crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.rs new file mode 100644 index 00000000000..f2ff58ba9a8 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.rs @@ -0,0 +1 @@ +b"\" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt b/crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt new file mode 100644 index 00000000000..884b12c8ee0 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0032_unclosed_byte_string_with_slash_double_quote.txt @@ -0,0 +1,2 @@ +BYTE_STRING 4 "b\"\\\"" +> error0..4 token("b\"\\\"") msg(Missing trailing `"` symbol to terminate the byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.rs b/crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.rs new file mode 100644 index 00000000000..557c59b6251 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.rs @@ -0,0 +1 @@ +r##" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt b/crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt new file mode 100644 index 00000000000..6fd59ccc027 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0033_unclosed_raw_string_at_eof.txt @@ -0,0 +1,2 @@ +RAW_STRING 4 "r##\"" +> error0..4 token("r##\"") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.rs b/crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.rs new file mode 100644 index 00000000000..bd046e4bb91 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.rs @@ -0,0 +1 @@ +r##"🦀 \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt b/crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt new file mode 100644 index 00000000000..8d9ca0e8f12 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0034_unclosed_raw_string_with_ferris.txt @@ -0,0 +1,2 @@ +RAW_STRING 8 "r##\"🦀" +> error0..8 token("r##\"🦀") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.rs b/crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.rs new file mode 100644 index 00000000000..5bec883dc7a --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.rs @@ -0,0 +1 @@ +r##"\x7f \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt b/crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt new file mode 100644 index 00000000000..a906380c718 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0035_unclosed_raw_string_with_ascii_escape.txt @@ -0,0 +1,2 @@ +RAW_STRING 8 "r##\"\\x7f" +> error0..8 token("r##\"\\x7f") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.rs b/crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.rs new file mode 100644 index 00000000000..bf05c39134b --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.rs @@ -0,0 +1 @@ +r##"\u{20AA} \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt b/crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt new file mode 100644 index 00000000000..5667c614995 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0036_unclosed_raw_string_with_unicode_escape.txt @@ -0,0 +1,2 @@ +RAW_STRING 12 "r##\"\\u{20AA}" +> error0..12 token("r##\"\\u{20AA}") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.rs b/crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.rs new file mode 100644 index 00000000000..f104bae4f2c --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.rs @@ -0,0 +1 @@ +r##" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt b/crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt new file mode 100644 index 00000000000..141c8268e80 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0037_unclosed_raw_string_with_space.txt @@ -0,0 +1,2 @@ +RAW_STRING 5 "r##\" " +> error0..5 token("r##\" ") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.rs b/crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.rs new file mode 100644 index 00000000000..9242077b8b7 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.rs @@ -0,0 +1 @@ +r##"\ \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt b/crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt new file mode 100644 index 00000000000..f61d4cc915e --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0038_unclosed_raw_string_with_slash.txt @@ -0,0 +1,2 @@ +RAW_STRING 5 "r##\"\\" +> error0..5 token("r##\"\\") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.rs b/crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.rs new file mode 100644 index 00000000000..db1c16f2ba5 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.rs @@ -0,0 +1 @@ +r##"\n \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt b/crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt new file mode 100644 index 00000000000..12e2c0fc038 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0039_unclosed_raw_string_with_slash_n.txt @@ -0,0 +1,2 @@ +RAW_STRING 6 "r##\"\\n" +> error0..6 token("r##\"\\n") msg(Missing trailing `"` with `#` symbols to terminate the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.rs b/crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.rs new file mode 100644 index 00000000000..ae5bae62230 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.rs @@ -0,0 +1 @@ +br##" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt b/crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt new file mode 100644 index 00000000000..fe12cb5fc6d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0040_unclosed_raw_byte_string_at_eof.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 5 "br##\"" +> error0..5 token("br##\"") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.rs b/crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.rs new file mode 100644 index 00000000000..9ef01207a17 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.rs @@ -0,0 +1 @@ +br##"🦀 \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt b/crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt new file mode 100644 index 00000000000..5be2a7861b4 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0041_unclosed_raw_byte_string_with_ferris.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 9 "br##\"🦀" +> error0..9 token("br##\"🦀") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.rs b/crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.rs new file mode 100644 index 00000000000..d50270afe1e --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.rs @@ -0,0 +1 @@ +br##"\x7f \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt b/crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt new file mode 100644 index 00000000000..6cbe08d07ed --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0042_unclosed_raw_byte_string_with_ascii_escape.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 9 "br##\"\\x7f" +> error0..9 token("br##\"\\x7f") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.rs b/crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.rs new file mode 100644 index 00000000000..90e299a1a97 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.rs @@ -0,0 +1 @@ +br##"\u{20AA} \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt b/crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt new file mode 100644 index 00000000000..f56a4f98480 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0043_unclosed_raw_byte_string_with_unicode_escape.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 13 "br##\"\\u{20AA}" +> error0..13 token("br##\"\\u{20AA}") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.rs b/crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.rs new file mode 100644 index 00000000000..14c602fd2b3 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.rs @@ -0,0 +1 @@ +br##" \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt b/crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt new file mode 100644 index 00000000000..3d32ce34ea5 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0044_unclosed_raw_byte_string_with_space.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 6 "br##\" " +> error0..6 token("br##\" ") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.rs b/crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.rs new file mode 100644 index 00000000000..0b3c015d74d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.rs @@ -0,0 +1 @@ +br##"\ \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt b/crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt new file mode 100644 index 00000000000..320fea17700 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0045_unclosed_raw_byte_string_with_slash.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 6 "br##\"\\" +> error0..6 token("br##\"\\") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.rs b/crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.rs new file mode 100644 index 00000000000..0d8b0e7ab04 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.rs @@ -0,0 +1 @@ +br##"\n \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt b/crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt new file mode 100644 index 00000000000..b3a56380cbd --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0046_unclosed_raw_byte_string_with_slash_n.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 7 "br##\"\\n" +> error0..7 token("br##\"\\n") msg(Missing trailing `"` with `#` symbols to terminate the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.rs b/crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.rs new file mode 100644 index 00000000000..eddf8d08094 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.rs @@ -0,0 +1 @@ +r## \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt b/crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt new file mode 100644 index 00000000000..5af1e2d97ff --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0047_unstarted_raw_string_at_eof.txt @@ -0,0 +1,2 @@ +RAW_STRING 3 "r##" +> error0..3 token("r##") msg(Missing `"` symbol after `#` symbols to begin the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.rs b/crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.rs new file mode 100644 index 00000000000..7e8cadf4f49 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.rs @@ -0,0 +1 @@ +br## \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt b/crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt new file mode 100644 index 00000000000..aec7afd9278 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0048_unstarted_raw_byte_string_at_eof.txt @@ -0,0 +1,2 @@ +RAW_BYTE_STRING 4 "br##" +> error0..4 token("br##") msg(Missing `"` symbol after `#` symbols to begin the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.rs b/crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.rs new file mode 100644 index 00000000000..534668a9b66 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.rs @@ -0,0 +1 @@ +r## I lack a quote! \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt b/crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt new file mode 100644 index 00000000000..e22fe5374f0 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0049_unstarted_raw_string_with_ascii.txt @@ -0,0 +1,10 @@ +RAW_STRING 4 "r## " +IDENT 1 "I" +WHITESPACE 1 " " +IDENT 4 "lack" +WHITESPACE 1 " " +IDENT 1 "a" +WHITESPACE 1 " " +IDENT 5 "quote" +BANG 1 "!" +> error0..4 token("r## ") msg(Missing `"` symbol after `#` symbols to begin the raw string literal) diff --git a/crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.rs b/crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.rs new file mode 100644 index 00000000000..d9b55455ac4 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.rs @@ -0,0 +1 @@ +br## I lack a quote! \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt b/crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt new file mode 100644 index 00000000000..d74ea4c2796 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0050_unstarted_raw_byte_string_with_ascii.txt @@ -0,0 +1,10 @@ +RAW_BYTE_STRING 5 "br## " +IDENT 1 "I" +WHITESPACE 1 " " +IDENT 4 "lack" +WHITESPACE 1 " " +IDENT 1 "a" +WHITESPACE 1 " " +IDENT 5 "quote" +BANG 1 "!" +> error0..5 token("br## ") msg(Missing `"` symbol after `#` symbols to begin the raw byte string literal) diff --git a/crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.rs b/crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.rs new file mode 100644 index 00000000000..22e83649f7d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.rs @@ -0,0 +1 @@ +/* \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt b/crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt new file mode 100644 index 00000000000..2a256e9dffd --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0051_unclosed_block_comment_at_eof.txt @@ -0,0 +1,2 @@ +COMMENT 2 "/*" +> error0..2 token("/*") msg(Missing trailing `*/` symbols to terminate the block comment) diff --git a/crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.rs b/crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.rs new file mode 100644 index 00000000000..c45c2844dbc --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.rs @@ -0,0 +1 @@ +/* comment diff --git a/crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt b/crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt new file mode 100644 index 00000000000..8e8490302a5 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0052_unclosed_block_comment_with_content.txt @@ -0,0 +1,2 @@ +COMMENT 11 "/* comment\n" +> error0..11 token("/* comment\n") msg(Missing trailing `*/` symbols to terminate the block comment) diff --git a/crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.rs b/crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.rs new file mode 100644 index 00000000000..3fcfc96600a --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.rs @@ -0,0 +1 @@ +/* /* /* diff --git a/crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt b/crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt new file mode 100644 index 00000000000..b7d28fc05d5 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0053_unclosed_nested_block_comment_entirely.txt @@ -0,0 +1,2 @@ +COMMENT 9 "/* /* /*\n" +> error0..9 token("/* /* /*\n") msg(Missing trailing `*/` symbols to terminate the block comment) diff --git a/crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.rs b/crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.rs new file mode 100644 index 00000000000..26c898f019d --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.rs @@ -0,0 +1 @@ +/** /*! /* comment */ */ diff --git a/crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt b/crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt new file mode 100644 index 00000000000..4742d2c12ca --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0054_unclosed_nested_block_comment_partially.txt @@ -0,0 +1,2 @@ +COMMENT 25 "/** /*! /* comment */ */\n" +> error0..25 token("/** /*! /* comment */ */\n") msg(Missing trailing `*/` symbols to terminate the block comment) diff --git a/crates/syntax/test_data/lexer/err/0055_empty_int.rs b/crates/syntax/test_data/lexer/err/0055_empty_int.rs new file mode 100644 index 00000000000..aa2a9fdca17 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0055_empty_int.rs @@ -0,0 +1,17 @@ +0b +0o +0x + +0b_ +0o_ +0x_ + +0bnoDigit +0onoDigit +0xnoDigit + +0xG +0xg + +0x_g +0x_G diff --git a/crates/syntax/test_data/lexer/err/0055_empty_int.txt b/crates/syntax/test_data/lexer/err/0055_empty_int.txt new file mode 100644 index 00000000000..bcd094b6ef7 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0055_empty_int.txt @@ -0,0 +1,39 @@ +INT_NUMBER 2 "0b" +WHITESPACE 1 "\n" +INT_NUMBER 2 "0o" +WHITESPACE 1 "\n" +INT_NUMBER 2 "0x" +WHITESPACE 2 "\n\n" +INT_NUMBER 3 "0b_" +WHITESPACE 1 "\n" +INT_NUMBER 3 "0o_" +WHITESPACE 1 "\n" +INT_NUMBER 3 "0x_" +WHITESPACE 2 "\n\n" +INT_NUMBER 9 "0bnoDigit" +WHITESPACE 1 "\n" +INT_NUMBER 9 "0onoDigit" +WHITESPACE 1 "\n" +INT_NUMBER 9 "0xnoDigit" +WHITESPACE 2 "\n\n" +INT_NUMBER 3 "0xG" +WHITESPACE 1 "\n" +INT_NUMBER 3 "0xg" +WHITESPACE 2 "\n\n" +INT_NUMBER 4 "0x_g" +WHITESPACE 1 "\n" +INT_NUMBER 4 "0x_G" +WHITESPACE 1 "\n" +> error0..2 token("0b") msg(Missing digits after the integer base prefix) +> error3..5 token("0o") msg(Missing digits after the integer base prefix) +> error6..8 token("0x") msg(Missing digits after the integer base prefix) +> error10..13 token("0b_") msg(Missing digits after the integer base prefix) +> error14..17 token("0o_") msg(Missing digits after the integer base prefix) +> error18..21 token("0x_") msg(Missing digits after the integer base prefix) +> error23..32 token("0bnoDigit") msg(Missing digits after the integer base prefix) +> error33..42 token("0onoDigit") msg(Missing digits after the integer base prefix) +> error43..52 token("0xnoDigit") msg(Missing digits after the integer base prefix) +> error54..57 token("0xG") msg(Missing digits after the integer base prefix) +> error58..61 token("0xg") msg(Missing digits after the integer base prefix) +> error63..67 token("0x_g") msg(Missing digits after the integer base prefix) +> error68..72 token("0x_G") msg(Missing digits after the integer base prefix) diff --git a/crates/syntax/test_data/lexer/err/0056_empty_exponent.rs b/crates/syntax/test_data/lexer/err/0056_empty_exponent.rs new file mode 100644 index 00000000000..286584c887f --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0056_empty_exponent.rs @@ -0,0 +1,22 @@ +0e +0E + +42e+ +42e- +42E+ +42E- + +42.e+ +42.e- +42.E+ +42.E- + +42.2e+ +42.2e- +42.2E+ +42.2E- + +42.2e+f32 +42.2e-f32 +42.2E+f32 +42.2E-f32 diff --git a/crates/syntax/test_data/lexer/err/0056_empty_exponent.txt b/crates/syntax/test_data/lexer/err/0056_empty_exponent.txt new file mode 100644 index 00000000000..6a645a6a44c --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0056_empty_exponent.txt @@ -0,0 +1,62 @@ +FLOAT_NUMBER 2 "0e" +WHITESPACE 1 "\n" +FLOAT_NUMBER 2 "0E" +WHITESPACE 2 "\n\n" +FLOAT_NUMBER 4 "42e+" +WHITESPACE 1 "\n" +FLOAT_NUMBER 4 "42e-" +WHITESPACE 1 "\n" +FLOAT_NUMBER 4 "42E+" +WHITESPACE 1 "\n" +FLOAT_NUMBER 4 "42E-" +WHITESPACE 2 "\n\n" +INT_NUMBER 2 "42" +DOT 1 "." +IDENT 1 "e" +PLUS 1 "+" +WHITESPACE 1 "\n" +INT_NUMBER 2 "42" +DOT 1 "." +IDENT 1 "e" +MINUS 1 "-" +WHITESPACE 1 "\n" +INT_NUMBER 2 "42" +DOT 1 "." +IDENT 1 "E" +PLUS 1 "+" +WHITESPACE 1 "\n" +INT_NUMBER 2 "42" +DOT 1 "." +IDENT 1 "E" +MINUS 1 "-" +WHITESPACE 2 "\n\n" +FLOAT_NUMBER 6 "42.2e+" +WHITESPACE 1 "\n" +FLOAT_NUMBER 6 "42.2e-" +WHITESPACE 1 "\n" +FLOAT_NUMBER 6 "42.2E+" +WHITESPACE 1 "\n" +FLOAT_NUMBER 6 "42.2E-" +WHITESPACE 2 "\n\n" +FLOAT_NUMBER 9 "42.2e+f32" +WHITESPACE 1 "\n" +FLOAT_NUMBER 9 "42.2e-f32" +WHITESPACE 1 "\n" +FLOAT_NUMBER 9 "42.2E+f32" +WHITESPACE 1 "\n" +FLOAT_NUMBER 9 "42.2E-f32" +WHITESPACE 1 "\n" +> error0..2 token("0e") msg(Missing digits after the exponent symbol) +> error3..5 token("0E") msg(Missing digits after the exponent symbol) +> error7..11 token("42e+") msg(Missing digits after the exponent symbol) +> error12..16 token("42e-") msg(Missing digits after the exponent symbol) +> error17..21 token("42E+") msg(Missing digits after the exponent symbol) +> error22..26 token("42E-") msg(Missing digits after the exponent symbol) +> error53..59 token("42.2e+") msg(Missing digits after the exponent symbol) +> error60..66 token("42.2e-") msg(Missing digits after the exponent symbol) +> error67..73 token("42.2E+") msg(Missing digits after the exponent symbol) +> error74..80 token("42.2E-") msg(Missing digits after the exponent symbol) +> error82..91 token("42.2e+f32") msg(Missing digits after the exponent symbol) +> error92..101 token("42.2e-f32") msg(Missing digits after the exponent symbol) +> error102..111 token("42.2E+f32") msg(Missing digits after the exponent symbol) +> error112..121 token("42.2E-f32") msg(Missing digits after the exponent symbol) diff --git a/crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.rs b/crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.rs new file mode 100644 index 00000000000..a7698a404a8 --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.rs @@ -0,0 +1,2 @@ +'1 +'1lifetime diff --git a/crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt b/crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt new file mode 100644 index 00000000000..e138bcebcdc --- /dev/null +++ b/crates/syntax/test_data/lexer/err/0057_lifetime_strarts_with_a_number.txt @@ -0,0 +1,6 @@ +LIFETIME 2 "\'1" +WHITESPACE 1 "\n" +LIFETIME 10 "\'1lifetime" +WHITESPACE 1 "\n" +> error0..2 token("\'1") msg(Lifetime name cannot start with a number) +> error3..13 token("\'1lifetime") msg(Lifetime name cannot start with a number) diff --git a/crates/syntax/test_data/lexer/ok/0001_hello.rs b/crates/syntax/test_data/lexer/ok/0001_hello.rs new file mode 100644 index 00000000000..95d09f2b101 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0001_hello.rs @@ -0,0 +1 @@ +hello world \ No newline at end of file diff --git a/crates/syntax/test_data/lexer/ok/0001_hello.txt b/crates/syntax/test_data/lexer/ok/0001_hello.txt new file mode 100644 index 00000000000..27a5940a9c1 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0001_hello.txt @@ -0,0 +1,3 @@ +IDENT 5 "hello" +WHITESPACE 1 " " +IDENT 5 "world" diff --git a/crates/syntax/test_data/lexer/ok/0002_whitespace.rs b/crates/syntax/test_data/lexer/ok/0002_whitespace.rs new file mode 100644 index 00000000000..08fce1418a7 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0002_whitespace.rs @@ -0,0 +1,4 @@ +a b c +d + +e f diff --git a/crates/syntax/test_data/lexer/ok/0002_whitespace.txt b/crates/syntax/test_data/lexer/ok/0002_whitespace.txt new file mode 100644 index 00000000000..01d260918ee --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0002_whitespace.txt @@ -0,0 +1,12 @@ +IDENT 1 "a" +WHITESPACE 1 " " +IDENT 1 "b" +WHITESPACE 2 " " +IDENT 1 "c" +WHITESPACE 1 "\n" +IDENT 1 "d" +WHITESPACE 2 "\n\n" +IDENT 1 "e" +WHITESPACE 1 "\t" +IDENT 1 "f" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0003_ident.rs b/crates/syntax/test_data/lexer/ok/0003_ident.rs new file mode 100644 index 00000000000..c05c9c009d7 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0003_ident.rs @@ -0,0 +1 @@ +foo foo_ _foo _ __ x привет diff --git a/crates/syntax/test_data/lexer/ok/0003_ident.txt b/crates/syntax/test_data/lexer/ok/0003_ident.txt new file mode 100644 index 00000000000..4a0d5c05312 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0003_ident.txt @@ -0,0 +1,14 @@ +IDENT 3 "foo" +WHITESPACE 1 " " +IDENT 4 "foo_" +WHITESPACE 1 " " +IDENT 4 "_foo" +WHITESPACE 1 " " +UNDERSCORE 1 "_" +WHITESPACE 1 " " +IDENT 2 "__" +WHITESPACE 1 " " +IDENT 1 "x" +WHITESPACE 1 " " +IDENT 12 "привет" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0004_numbers.rs b/crates/syntax/test_data/lexer/ok/0004_numbers.rs new file mode 100644 index 00000000000..bc761c235d8 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0004_numbers.rs @@ -0,0 +1,9 @@ +0 00 0_ 0. 0z +01790 0b1790 0o1790 0x1790aAbBcCdDeEfF 001279 0_1279 0.1279 0e1279 0E1279 +0..2 +0.foo() +0e+1 +0.e+1 +0.0E-2 +0___0.10000____0000e+111__ +1i64 92.0f32 11__s diff --git a/crates/syntax/test_data/lexer/ok/0004_numbers.txt b/crates/syntax/test_data/lexer/ok/0004_numbers.txt new file mode 100644 index 00000000000..e19fc5789e3 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0004_numbers.txt @@ -0,0 +1,57 @@ +INT_NUMBER 1 "0" +WHITESPACE 1 " " +INT_NUMBER 2 "00" +WHITESPACE 1 " " +INT_NUMBER 2 "0_" +WHITESPACE 1 " " +FLOAT_NUMBER 2 "0." +WHITESPACE 1 " " +INT_NUMBER 2 "0z" +WHITESPACE 1 "\n" +INT_NUMBER 5 "01790" +WHITESPACE 1 " " +INT_NUMBER 6 "0b1790" +WHITESPACE 1 " " +INT_NUMBER 6 "0o1790" +WHITESPACE 1 " " +INT_NUMBER 18 "0x1790aAbBcCdDeEfF" +WHITESPACE 1 " " +INT_NUMBER 6 "001279" +WHITESPACE 1 " " +INT_NUMBER 6 "0_1279" +WHITESPACE 1 " " +FLOAT_NUMBER 6 "0.1279" +WHITESPACE 1 " " +FLOAT_NUMBER 6 "0e1279" +WHITESPACE 1 " " +FLOAT_NUMBER 6 "0E1279" +WHITESPACE 1 "\n" +INT_NUMBER 1 "0" +DOT 1 "." +DOT 1 "." +INT_NUMBER 1 "2" +WHITESPACE 1 "\n" +INT_NUMBER 1 "0" +DOT 1 "." +IDENT 3 "foo" +L_PAREN 1 "(" +R_PAREN 1 ")" +WHITESPACE 1 "\n" +FLOAT_NUMBER 4 "0e+1" +WHITESPACE 1 "\n" +INT_NUMBER 1 "0" +DOT 1 "." +IDENT 1 "e" +PLUS 1 "+" +INT_NUMBER 1 "1" +WHITESPACE 1 "\n" +FLOAT_NUMBER 6 "0.0E-2" +WHITESPACE 1 "\n" +FLOAT_NUMBER 26 "0___0.10000____0000e+111__" +WHITESPACE 1 "\n" +INT_NUMBER 4 "1i64" +WHITESPACE 1 " " +FLOAT_NUMBER 7 "92.0f32" +WHITESPACE 1 " " +INT_NUMBER 5 "11__s" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0005_symbols.rs b/crates/syntax/test_data/lexer/ok/0005_symbols.rs new file mode 100644 index 00000000000..487569b5ae3 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0005_symbols.rs @@ -0,0 +1,6 @@ +; , ( ) { } [ ] < > @ # ~ ? $ & | + * / ^ % +. .. ... ..= +: :: += => +! != +- -> diff --git a/crates/syntax/test_data/lexer/ok/0005_symbols.txt b/crates/syntax/test_data/lexer/ok/0005_symbols.txt new file mode 100644 index 00000000000..2049c2f1d66 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0005_symbols.txt @@ -0,0 +1,77 @@ +SEMICOLON 1 ";" +WHITESPACE 1 " " +COMMA 1 "," +WHITESPACE 1 " " +L_PAREN 1 "(" +WHITESPACE 1 " " +R_PAREN 1 ")" +WHITESPACE 1 " " +L_CURLY 1 "{" +WHITESPACE 1 " " +R_CURLY 1 "}" +WHITESPACE 1 " " +L_BRACK 1 "[" +WHITESPACE 1 " " +R_BRACK 1 "]" +WHITESPACE 1 " " +L_ANGLE 1 "<" +WHITESPACE 1 " " +R_ANGLE 1 ">" +WHITESPACE 1 " " +AT 1 "@" +WHITESPACE 1 " " +POUND 1 "#" +WHITESPACE 1 " " +TILDE 1 "~" +WHITESPACE 1 " " +QUESTION 1 "?" +WHITESPACE 1 " " +DOLLAR 1 "$" +WHITESPACE 1 " " +AMP 1 "&" +WHITESPACE 1 " " +PIPE 1 "|" +WHITESPACE 1 " " +PLUS 1 "+" +WHITESPACE 1 " " +STAR 1 "*" +WHITESPACE 1 " " +SLASH 1 "/" +WHITESPACE 1 " " +CARET 1 "^" +WHITESPACE 1 " " +PERCENT 1 "%" +WHITESPACE 1 "\n" +DOT 1 "." +WHITESPACE 1 " " +DOT 1 "." +DOT 1 "." +WHITESPACE 1 " " +DOT 1 "." +DOT 1 "." +DOT 1 "." +WHITESPACE 1 " " +DOT 1 "." +DOT 1 "." +EQ 1 "=" +WHITESPACE 1 "\n" +COLON 1 ":" +WHITESPACE 1 " " +COLON 1 ":" +COLON 1 ":" +WHITESPACE 1 "\n" +EQ 1 "=" +WHITESPACE 1 " " +EQ 1 "=" +R_ANGLE 1 ">" +WHITESPACE 1 "\n" +BANG 1 "!" +WHITESPACE 1 " " +BANG 1 "!" +EQ 1 "=" +WHITESPACE 1 "\n" +MINUS 1 "-" +WHITESPACE 1 " " +MINUS 1 "-" +R_ANGLE 1 ">" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0006_chars.rs b/crates/syntax/test_data/lexer/ok/0006_chars.rs new file mode 100644 index 00000000000..454ee0a5f61 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0006_chars.rs @@ -0,0 +1 @@ +'x' ' ' '0' 'hello' '\x7f' '\n' '\\' '\'' diff --git a/crates/syntax/test_data/lexer/ok/0006_chars.txt b/crates/syntax/test_data/lexer/ok/0006_chars.txt new file mode 100644 index 00000000000..950954fbc88 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0006_chars.txt @@ -0,0 +1,16 @@ +CHAR 3 "\'x\'" +WHITESPACE 1 " " +CHAR 3 "\' \'" +WHITESPACE 1 " " +CHAR 3 "\'0\'" +WHITESPACE 1 " " +CHAR 7 "\'hello\'" +WHITESPACE 1 " " +CHAR 6 "\'\\x7f\'" +WHITESPACE 1 " " +CHAR 4 "\'\\n\'" +WHITESPACE 1 " " +CHAR 4 "\'\\\\\'" +WHITESPACE 1 " " +CHAR 4 "\'\\\'\'" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0007_lifetimes.rs b/crates/syntax/test_data/lexer/ok/0007_lifetimes.rs new file mode 100644 index 00000000000..b764f1dce3c --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0007_lifetimes.rs @@ -0,0 +1 @@ +'a 'foo 'foo_bar_baz '_ diff --git a/crates/syntax/test_data/lexer/ok/0007_lifetimes.txt b/crates/syntax/test_data/lexer/ok/0007_lifetimes.txt new file mode 100644 index 00000000000..005c29100a0 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0007_lifetimes.txt @@ -0,0 +1,8 @@ +LIFETIME 2 "\'a" +WHITESPACE 1 " " +LIFETIME 4 "\'foo" +WHITESPACE 1 " " +LIFETIME 12 "\'foo_bar_baz" +WHITESPACE 1 " " +LIFETIME 2 "\'_" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0008_byte_strings.rs b/crates/syntax/test_data/lexer/ok/0008_byte_strings.rs new file mode 100644 index 00000000000..b54930f5e69 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0008_byte_strings.rs @@ -0,0 +1,3 @@ +b'' b'x' b"foo" br"" +b''suf b""ix br""br +b'\n' b'\\' b'\'' b'hello' diff --git a/crates/syntax/test_data/lexer/ok/0008_byte_strings.txt b/crates/syntax/test_data/lexer/ok/0008_byte_strings.txt new file mode 100644 index 00000000000..bc03b51a8ab --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0008_byte_strings.txt @@ -0,0 +1,22 @@ +BYTE 3 "b\'\'" +WHITESPACE 1 " " +BYTE 4 "b\'x\'" +WHITESPACE 1 " " +BYTE_STRING 6 "b\"foo\"" +WHITESPACE 1 " " +RAW_BYTE_STRING 4 "br\"\"" +WHITESPACE 1 "\n" +BYTE 6 "b\'\'suf" +WHITESPACE 1 " " +BYTE_STRING 5 "b\"\"ix" +WHITESPACE 1 " " +RAW_BYTE_STRING 6 "br\"\"br" +WHITESPACE 1 "\n" +BYTE 5 "b\'\\n\'" +WHITESPACE 1 " " +BYTE 5 "b\'\\\\\'" +WHITESPACE 1 " " +BYTE 5 "b\'\\\'\'" +WHITESPACE 1 " " +BYTE 8 "b\'hello\'" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0009_strings.rs b/crates/syntax/test_data/lexer/ok/0009_strings.rs new file mode 100644 index 00000000000..4ddb5bffccc --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0009_strings.rs @@ -0,0 +1,2 @@ +"hello" r"world" "\n\"\\no escape" "multi +line" diff --git a/crates/syntax/test_data/lexer/ok/0009_strings.txt b/crates/syntax/test_data/lexer/ok/0009_strings.txt new file mode 100644 index 00000000000..4cb4d711d67 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0009_strings.txt @@ -0,0 +1,8 @@ +STRING 7 "\"hello\"" +WHITESPACE 1 " " +RAW_STRING 8 "r\"world\"" +WHITESPACE 1 " " +STRING 17 "\"\\n\\\"\\\\no escape\"" +WHITESPACE 1 " " +STRING 12 "\"multi\nline\"" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0010_single_line_comments.rs b/crates/syntax/test_data/lexer/ok/0010_single_line_comments.rs new file mode 100644 index 00000000000..4b6653f9cc9 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0010_single_line_comments.rs @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +// hello +//! World +//!! Inner line doc +/// Outer line doc +//// Just a comment + +// +//! +//!! +/// +//// diff --git a/crates/syntax/test_data/lexer/ok/0010_single_line_comments.txt b/crates/syntax/test_data/lexer/ok/0010_single_line_comments.txt new file mode 100644 index 00000000000..98a3818c06c --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0010_single_line_comments.txt @@ -0,0 +1,22 @@ +SHEBANG 19 "#!/usr/bin/env bash" +WHITESPACE 1 "\n" +COMMENT 8 "// hello" +WHITESPACE 1 "\n" +COMMENT 9 "//! World" +WHITESPACE 1 "\n" +COMMENT 19 "//!! Inner line doc" +WHITESPACE 1 "\n" +COMMENT 18 "/// Outer line doc" +WHITESPACE 1 "\n" +COMMENT 19 "//// Just a comment" +WHITESPACE 2 "\n\n" +COMMENT 2 "//" +WHITESPACE 1 "\n" +COMMENT 3 "//!" +WHITESPACE 1 "\n" +COMMENT 4 "//!!" +WHITESPACE 1 "\n" +COMMENT 3 "///" +WHITESPACE 1 "\n" +COMMENT 4 "////" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0011_keywords.rs b/crates/syntax/test_data/lexer/ok/0011_keywords.rs new file mode 100644 index 00000000000..1e91bff4e7d --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0011_keywords.rs @@ -0,0 +1,3 @@ +async fn use struct trait enum impl true false as extern crate +mod pub self super in where for loop while if match const +static mut type ref let else move return diff --git a/crates/syntax/test_data/lexer/ok/0011_keywords.txt b/crates/syntax/test_data/lexer/ok/0011_keywords.txt new file mode 100644 index 00000000000..22c00eefb62 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0011_keywords.txt @@ -0,0 +1,64 @@ +ASYNC_KW 5 "async" +WHITESPACE 1 " " +FN_KW 2 "fn" +WHITESPACE 1 " " +USE_KW 3 "use" +WHITESPACE 1 " " +STRUCT_KW 6 "struct" +WHITESPACE 1 " " +TRAIT_KW 5 "trait" +WHITESPACE 1 " " +ENUM_KW 4 "enum" +WHITESPACE 1 " " +IMPL_KW 4 "impl" +WHITESPACE 1 " " +TRUE_KW 4 "true" +WHITESPACE 1 " " +FALSE_KW 5 "false" +WHITESPACE 1 " " +AS_KW 2 "as" +WHITESPACE 1 " " +EXTERN_KW 6 "extern" +WHITESPACE 1 " " +CRATE_KW 5 "crate" +WHITESPACE 1 "\n" +MOD_KW 3 "mod" +WHITESPACE 1 " " +PUB_KW 3 "pub" +WHITESPACE 1 " " +SELF_KW 4 "self" +WHITESPACE 1 " " +SUPER_KW 5 "super" +WHITESPACE 1 " " +IN_KW 2 "in" +WHITESPACE 1 " " +WHERE_KW 5 "where" +WHITESPACE 1 " " +FOR_KW 3 "for" +WHITESPACE 1 " " +LOOP_KW 4 "loop" +WHITESPACE 1 " " +WHILE_KW 5 "while" +WHITESPACE 1 " " +IF_KW 2 "if" +WHITESPACE 1 " " +MATCH_KW 5 "match" +WHITESPACE 1 " " +CONST_KW 5 "const" +WHITESPACE 1 "\n" +STATIC_KW 6 "static" +WHITESPACE 1 " " +MUT_KW 3 "mut" +WHITESPACE 1 " " +TYPE_KW 4 "type" +WHITESPACE 1 " " +REF_KW 3 "ref" +WHITESPACE 1 " " +LET_KW 3 "let" +WHITESPACE 1 " " +ELSE_KW 4 "else" +WHITESPACE 1 " " +MOVE_KW 4 "move" +WHITESPACE 1 " " +RETURN_KW 6 "return" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0012_block_comment.rs b/crates/syntax/test_data/lexer/ok/0012_block_comment.rs new file mode 100644 index 00000000000..b880a59d952 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0012_block_comment.rs @@ -0,0 +1,3 @@ +/* */ +/**/ +/* /* */ */ diff --git a/crates/syntax/test_data/lexer/ok/0012_block_comment.txt b/crates/syntax/test_data/lexer/ok/0012_block_comment.txt new file mode 100644 index 00000000000..2618e287e63 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0012_block_comment.txt @@ -0,0 +1,6 @@ +COMMENT 5 "/* */" +WHITESPACE 1 "\n" +COMMENT 4 "/**/" +WHITESPACE 1 "\n" +COMMENT 11 "/* /* */ */" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0013_raw_strings.rs b/crates/syntax/test_data/lexer/ok/0013_raw_strings.rs new file mode 100644 index 00000000000..e5ed0b693b3 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0013_raw_strings.rs @@ -0,0 +1 @@ +r###"this is a r##"raw"## string"### diff --git a/crates/syntax/test_data/lexer/ok/0013_raw_strings.txt b/crates/syntax/test_data/lexer/ok/0013_raw_strings.txt new file mode 100644 index 00000000000..9cf0957d1e6 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0013_raw_strings.txt @@ -0,0 +1,2 @@ +RAW_STRING 36 "r###\"this is a r##\"raw\"## string\"###" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/lexer/ok/0014_raw_ident.rs b/crates/syntax/test_data/lexer/ok/0014_raw_ident.rs new file mode 100644 index 00000000000..b40a1b6a248 --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0014_raw_ident.rs @@ -0,0 +1 @@ +r#raw_ident diff --git a/crates/syntax/test_data/lexer/ok/0014_raw_ident.txt b/crates/syntax/test_data/lexer/ok/0014_raw_ident.txt new file mode 100644 index 00000000000..484689693ba --- /dev/null +++ b/crates/syntax/test_data/lexer/ok/0014_raw_ident.txt @@ -0,0 +1,2 @@ +IDENT 11 "r#raw_ident" +WHITESPACE 1 "\n" diff --git a/crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rast b/crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rast new file mode 100644 index 00000000000..bbbf496c82d --- /dev/null +++ b/crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rast @@ -0,0 +1,34 @@ +SOURCE_FILE@0..34 + STRUCT@0..34 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + WHITESPACE@8..9 " " + RECORD_FIELD_LIST@9..34 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + RECORD_FIELD@15..21 + NAME@15..16 + IDENT@15..16 "a" + COLON@16..17 ":" + WHITESPACE@17..18 " " + PATH_TYPE@18..21 + PATH@18..21 + PATH_SEGMENT@18..21 + NAME_REF@18..21 + IDENT@18..21 "u32" + WHITESPACE@21..26 "\n " + RECORD_FIELD@26..32 + NAME@26..27 + IDENT@26..27 "b" + COLON@27..28 ":" + WHITESPACE@28..29 " " + PATH_TYPE@29..32 + PATH@29..32 + PATH_SEGMENT@29..32 + NAME_REF@29..32 + IDENT@29..32 "u32" + WHITESPACE@32..33 "\n" + R_CURLY@33..34 "}" +error 21..21: expected COMMA diff --git a/crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rs b/crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rs new file mode 100644 index 00000000000..fe5030d893f --- /dev/null +++ b/crates/syntax/test_data/parser/err/0000_struct_field_missing_comma.rs @@ -0,0 +1,4 @@ +struct S { + a: u32 + b: u32 +} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rast b/crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rast new file mode 100644 index 00000000000..6dc73bfdbae --- /dev/null +++ b/crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rast @@ -0,0 +1,18 @@ +SOURCE_FILE@0..21 + ERROR@0..2 + IF_KW@0..2 "if" + WHITESPACE@2..3 " " + ERROR@3..8 + MATCH_KW@3..8 "match" + WHITESPACE@8..10 "\n\n" + STRUCT@10..21 + STRUCT_KW@10..16 "struct" + WHITESPACE@16..17 " " + NAME@17..18 + IDENT@17..18 "S" + WHITESPACE@18..19 " " + RECORD_FIELD_LIST@19..21 + L_CURLY@19..20 "{" + R_CURLY@20..21 "}" +error 0..0: expected an item +error 3..3: expected an item diff --git a/crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rs b/crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rs new file mode 100644 index 00000000000..98f23de1f22 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0001_item_recovery_in_file.rs @@ -0,0 +1,3 @@ +if match + +struct S {} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/err/0002_duplicate_shebang.rast b/crates/syntax/test_data/parser/err/0002_duplicate_shebang.rast new file mode 100644 index 00000000000..4cfd1bce4b1 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0002_duplicate_shebang.rast @@ -0,0 +1,39 @@ +SOURCE_FILE@0..42 + SHEBANG@0..20 "#!/use/bin/env rusti" + WHITESPACE@20..21 "\n" + ATTR@21..23 + POUND@21..22 "#" + BANG@22..23 "!" + ERROR@23..24 + SLASH@23..24 "/" + USE@24..28 + USE_KW@24..27 "use" + ERROR@27..28 + SLASH@27..28 "/" + MACRO_CALL@28..31 + PATH@28..31 + PATH_SEGMENT@28..31 + NAME_REF@28..31 + IDENT@28..31 "bin" + ERROR@31..32 + SLASH@31..32 "/" + MACRO_CALL@32..41 + PATH@32..35 + PATH_SEGMENT@32..35 + NAME_REF@32..35 + IDENT@32..35 "env" + WHITESPACE@35..36 " " + NAME@36..41 + IDENT@36..41 "rusti" + WHITESPACE@41..42 "\n" +error 23..23: expected `[` +error 23..23: expected an item +error 27..27: expected one of `*`, `::`, `{`, `self`, `super` or an identifier +error 28..28: expected SEMICOLON +error 31..31: expected BANG +error 31..31: expected `{`, `[`, `(` +error 31..31: expected SEMICOLON +error 31..31: expected an item +error 35..35: expected BANG +error 41..41: expected `{`, `[`, `(` +error 41..41: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0002_duplicate_shebang.rs b/crates/syntax/test_data/parser/err/0002_duplicate_shebang.rs new file mode 100644 index 00000000000..48a3a3980ba --- /dev/null +++ b/crates/syntax/test_data/parser/err/0002_duplicate_shebang.rs @@ -0,0 +1,2 @@ +#!/use/bin/env rusti +#!/use/bin/env rusti diff --git a/crates/syntax/test_data/parser/err/0003_C++_semicolon.rast b/crates/syntax/test_data/parser/err/0003_C++_semicolon.rast new file mode 100644 index 00000000000..7763fad840b --- /dev/null +++ b/crates/syntax/test_data/parser/err/0003_C++_semicolon.rast @@ -0,0 +1,39 @@ +SOURCE_FILE@0..40 + STRUCT@0..39 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + WHITESPACE@8..9 " " + RECORD_FIELD_LIST@9..39 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + RECORD_FIELD@15..21 + NAME@15..16 + IDENT@15..16 "a" + COLON@16..17 ":" + WHITESPACE@17..18 " " + PATH_TYPE@18..21 + PATH@18..21 + PATH_SEGMENT@18..21 + NAME_REF@18..21 + IDENT@18..21 "i32" + COMMA@21..22 "," + WHITESPACE@22..27 "\n " + RECORD_FIELD@27..36 + NAME@27..28 + IDENT@27..28 "b" + COLON@28..29 ":" + WHITESPACE@29..30 " " + PATH_TYPE@30..36 + PATH@30..36 + PATH_SEGMENT@30..36 + NAME_REF@30..36 + IDENT@30..36 "String" + COMMA@36..37 "," + WHITESPACE@37..38 "\n" + R_CURLY@38..39 "}" + ERROR@39..40 + SEMICOLON@39..40 ";" +error 39..39: expected item, found `;` +consider removing this semicolon diff --git a/crates/syntax/test_data/parser/err/0003_C++_semicolon.rs b/crates/syntax/test_data/parser/err/0003_C++_semicolon.rs new file mode 100644 index 00000000000..009312270fe --- /dev/null +++ b/crates/syntax/test_data/parser/err/0003_C++_semicolon.rs @@ -0,0 +1,4 @@ +struct S { + a: i32, + b: String, +}; \ No newline at end of file diff --git a/crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rast b/crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rast new file mode 100644 index 00000000000..9a0f4665efc --- /dev/null +++ b/crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rast @@ -0,0 +1,15 @@ +SOURCE_FILE@0..12 + USE@0..12 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..11 + PATH@4..11 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "foo" + COLON2@7..9 "::" + ERROR@9..11 + INT_NUMBER@9..11 "92" + SEMICOLON@11..12 ";" +error 9..9: expected identifier diff --git a/crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rs b/crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rs new file mode 100644 index 00000000000..060e65d06d2 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0004_use_path_bad_segment.rs @@ -0,0 +1 @@ +use foo::92; \ No newline at end of file diff --git a/crates/syntax/test_data/parser/err/0005_attribute_recover.rast b/crates/syntax/test_data/parser/err/0005_attribute_recover.rast new file mode 100644 index 00000000000..4845a6563cb --- /dev/null +++ b/crates/syntax/test_data/parser/err/0005_attribute_recover.rast @@ -0,0 +1,59 @@ +SOURCE_FILE@0..54 + FN@0..31 + ATTR@0..18 + POUND@0..1 "#" + L_BRACK@1..2 "[" + PATH@2..5 + PATH_SEGMENT@2..5 + NAME_REF@2..5 + IDENT@2..5 "foo" + TOKEN_TREE@5..17 + L_PAREN@5..6 "(" + IDENT@6..9 "foo" + COMMA@9..10 "," + WHITESPACE@10..11 " " + PLUS@11..12 "+" + COMMA@12..13 "," + WHITESPACE@13..14 " " + INT_NUMBER@14..16 "92" + R_PAREN@16..17 ")" + R_BRACK@17..18 "]" + WHITESPACE@18..19 "\n" + FN_KW@19..21 "fn" + WHITESPACE@21..22 " " + NAME@22..25 + IDENT@22..25 "foo" + PARAM_LIST@25..27 + L_PAREN@25..26 "(" + R_PAREN@26..27 ")" + WHITESPACE@27..28 " " + BLOCK_EXPR@28..31 + L_CURLY@28..29 "{" + WHITESPACE@29..30 "\n" + R_CURLY@30..31 "}" + WHITESPACE@31..34 "\n\n\n" + ATTR@34..53 + POUND@34..35 "#" + L_BRACK@35..36 "[" + PATH@36..39 + PATH_SEGMENT@36..39 + NAME_REF@36..39 + IDENT@36..39 "foo" + TOKEN_TREE@39..53 + L_PAREN@39..40 "(" + WHITESPACE@40..41 "\n" + FN_KW@41..43 "fn" + WHITESPACE@43..44 " " + IDENT@44..47 "foo" + TOKEN_TREE@47..49 + L_PAREN@47..48 "(" + R_PAREN@48..49 ")" + WHITESPACE@49..50 " " + TOKEN_TREE@50..53 + L_CURLY@50..51 "{" + WHITESPACE@51..52 "\n" + R_CURLY@52..53 "}" + WHITESPACE@53..54 "\n" +error 53..53: expected R_PAREN +error 53..53: expected `]` +error 53..53: expected an item diff --git a/crates/syntax/test_data/parser/err/0005_attribute_recover.rs b/crates/syntax/test_data/parser/err/0005_attribute_recover.rs new file mode 100644 index 00000000000..de7f8162839 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0005_attribute_recover.rs @@ -0,0 +1,8 @@ +#[foo(foo, +, 92)] +fn foo() { +} + + +#[foo( +fn foo() { +} diff --git a/crates/syntax/test_data/parser/err/0006_named_field_recovery.rast b/crates/syntax/test_data/parser/err/0006_named_field_recovery.rast new file mode 100644 index 00000000000..5f85c3943ab --- /dev/null +++ b/crates/syntax/test_data/parser/err/0006_named_field_recovery.rast @@ -0,0 +1,74 @@ +SOURCE_FILE@0..74 + STRUCT@0..73 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + WHITESPACE@8..9 " " + RECORD_FIELD_LIST@9..73 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + RECORD_FIELD@15..21 + NAME@15..16 + IDENT@15..16 "f" + COLON@16..17 ":" + WHITESPACE@17..18 " " + PATH_TYPE@18..21 + PATH@18..21 + PATH_SEGMENT@18..21 + NAME_REF@18..21 + IDENT@18..21 "u32" + COMMA@21..22 "," + WHITESPACE@22..27 "\n " + VISIBILITY@27..30 + PUB_KW@27..30 "pub" + WHITESPACE@30..31 " " + ERROR@31..33 + INT_NUMBER@31..33 "92" + WHITESPACE@33..38 "\n " + ERROR@38..39 + PLUS@38..39 "+" + WHITESPACE@39..40 " " + ERROR@40..41 + MINUS@40..41 "-" + WHITESPACE@41..42 " " + ERROR@42..43 + STAR@42..43 "*" + WHITESPACE@43..48 "\n " + RECORD_FIELD@48..58 + VISIBILITY@48..51 + PUB_KW@48..51 "pub" + WHITESPACE@51..52 " " + NAME@52..53 + IDENT@52..53 "x" + COLON@53..54 ":" + WHITESPACE@54..55 " " + PATH_TYPE@55..58 + PATH@55..58 + PATH_SEGMENT@55..58 + NAME_REF@55..58 + IDENT@55..58 "u32" + COMMA@58..59 "," + WHITESPACE@59..64 "\n " + RECORD_FIELD@64..70 + NAME@64..65 + IDENT@64..65 "z" + COLON@65..66 ":" + WHITESPACE@66..67 " " + PATH_TYPE@67..70 + PATH@67..70 + PATH_SEGMENT@67..70 + NAME_REF@67..70 + IDENT@67..70 "f64" + COMMA@70..71 "," + WHITESPACE@71..72 "\n" + R_CURLY@72..73 "}" + WHITESPACE@73..74 "\n" +error 31..31: expected field declaration +error 33..33: expected COMMA +error 38..38: expected field declaration +error 39..39: expected COMMA +error 40..40: expected field declaration +error 41..41: expected COMMA +error 42..42: expected field declaration +error 43..43: expected COMMA diff --git a/crates/syntax/test_data/parser/err/0006_named_field_recovery.rs b/crates/syntax/test_data/parser/err/0006_named_field_recovery.rs new file mode 100644 index 00000000000..8069c111b4b --- /dev/null +++ b/crates/syntax/test_data/parser/err/0006_named_field_recovery.rs @@ -0,0 +1,7 @@ +struct S { + f: u32, + pub 92 + + - * + pub x: u32, + z: f64, +} diff --git a/crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rast b/crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rast new file mode 100644 index 00000000000..560bfd75186 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rast @@ -0,0 +1,32 @@ +SOURCE_FILE@0..31 + ERROR@0..1 + R_CURLY@0..1 "}" + WHITESPACE@1..3 "\n\n" + STRUCT@3..12 + STRUCT_KW@3..9 "struct" + WHITESPACE@9..10 " " + NAME@10..11 + IDENT@10..11 "S" + SEMICOLON@11..12 ";" + WHITESPACE@12..14 "\n\n" + ERROR@14..15 + R_CURLY@14..15 "}" + WHITESPACE@15..17 "\n\n" + FN@17..27 + FN_KW@17..19 "fn" + WHITESPACE@19..20 " " + NAME@20..23 + IDENT@20..23 "foo" + PARAM_LIST@23..25 + L_PAREN@23..24 "(" + R_PAREN@24..25 ")" + BLOCK_EXPR@25..27 + L_CURLY@25..26 "{" + R_CURLY@26..27 "}" + WHITESPACE@27..29 "\n\n" + ERROR@29..30 + R_CURLY@29..30 "}" + WHITESPACE@30..31 "\n" +error 0..0: unmatched `}` +error 14..14: unmatched `}` +error 29..29: unmatched `}` diff --git a/crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rs b/crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rs new file mode 100644 index 00000000000..dc869fb785e --- /dev/null +++ b/crates/syntax/test_data/parser/err/0007_stray_curly_in_file.rs @@ -0,0 +1,9 @@ +} + +struct S; + +} + +fn foo(){} + +} diff --git a/crates/syntax/test_data/parser/err/0008_item_block_recovery.rast b/crates/syntax/test_data/parser/err/0008_item_block_recovery.rast new file mode 100644 index 00000000000..1e9637c26d5 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0008_item_block_recovery.rast @@ -0,0 +1,77 @@ +SOURCE_FILE@0..95 + FN@0..12 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..12 + L_CURLY@9..10 "{" + WHITESPACE@10..11 "\n" + R_CURLY@11..12 "}" + WHITESPACE@12..14 "\n\n" + MACRO_CALL@14..19 + PATH@14..17 + PATH_SEGMENT@14..17 + NAME_REF@14..17 + IDENT@14..17 "bar" + TOKEN_TREE@17..19 + L_PAREN@17..18 "(" + R_PAREN@18..19 ")" + WHITESPACE@19..20 " " + ERROR@20..80 + L_CURLY@20..21 "{" + WHITESPACE@21..26 "\n " + IF_EXPR@26..78 + IF_KW@26..28 "if" + WHITESPACE@28..29 " " + CONDITION@29..33 + LITERAL@29..33 + TRUE_KW@29..33 "true" + WHITESPACE@33..34 " " + BLOCK_EXPR@34..51 + L_CURLY@34..35 "{" + WHITESPACE@35..44 "\n " + LITERAL@44..45 + INT_NUMBER@44..45 "1" + WHITESPACE@45..50 "\n " + R_CURLY@50..51 "}" + WHITESPACE@51..52 " " + ELSE_KW@52..56 "else" + WHITESPACE@56..57 " " + BLOCK_EXPR@57..78 + L_CURLY@57..58 "{" + WHITESPACE@58..67 "\n " + BIN_EXPR@67..72 + LITERAL@67..68 + INT_NUMBER@67..68 "2" + WHITESPACE@68..69 " " + PLUS@69..70 "+" + WHITESPACE@70..71 " " + LITERAL@71..72 + INT_NUMBER@71..72 "3" + WHITESPACE@72..77 "\n " + R_CURLY@77..78 "}" + WHITESPACE@78..79 "\n" + R_CURLY@79..80 "}" + WHITESPACE@80..82 "\n\n" + FN@82..94 + FN_KW@82..84 "fn" + WHITESPACE@84..85 " " + NAME@85..88 + IDENT@85..88 "baz" + PARAM_LIST@88..90 + L_PAREN@88..89 "(" + R_PAREN@89..90 ")" + WHITESPACE@90..91 " " + BLOCK_EXPR@91..94 + L_CURLY@91..92 "{" + WHITESPACE@92..93 "\n" + R_CURLY@93..94 "}" + WHITESPACE@94..95 "\n" +error 17..17: expected BANG +error 19..19: expected SEMICOLON +error 20..20: expected an item diff --git a/crates/syntax/test_data/parser/err/0008_item_block_recovery.rs b/crates/syntax/test_data/parser/err/0008_item_block_recovery.rs new file mode 100644 index 00000000000..9fcac19b5ce --- /dev/null +++ b/crates/syntax/test_data/parser/err/0008_item_block_recovery.rs @@ -0,0 +1,13 @@ +fn foo() { +} + +bar() { + if true { + 1 + } else { + 2 + 3 + } +} + +fn baz() { +} diff --git a/crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast b/crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast new file mode 100644 index 00000000000..dacf71aa165 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rast @@ -0,0 +1,58 @@ +SOURCE_FILE@0..43 + STRUCT@0..11 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + GENERIC_PARAM_LIST@8..11 + L_ANGLE@8..9 "<" + ERROR@9..11 + INT_NUMBER@9..11 "90" + WHITESPACE@11..12 " " + ERROR@12..13 + PLUS@12..13 "+" + WHITESPACE@13..14 " " + ERROR@14..15 + INT_NUMBER@14..15 "2" + ERROR@15..16 + R_ANGLE@15..16 ">" + WHITESPACE@16..17 " " + ERROR@17..31 + L_CURLY@17..18 "{" + WHITESPACE@18..23 "\n " + EXPR_STMT@23..24 + PATH_EXPR@23..24 + PATH@23..24 + PATH_SEGMENT@23..24 + NAME_REF@23..24 + IDENT@23..24 "f" + EXPR_STMT@24..25 + ERROR@24..25 + COLON@24..25 ":" + WHITESPACE@25..26 " " + PATH_EXPR@26..29 + PATH@26..29 + PATH_SEGMENT@26..29 + NAME_REF@26..29 + IDENT@26..29 "u32" + WHITESPACE@29..30 "\n" + R_CURLY@30..31 "}" + WHITESPACE@31..33 "\n\n" + STRUCT@33..42 + STRUCT_KW@33..39 "struct" + WHITESPACE@39..40 " " + NAME@40..41 + IDENT@40..41 "T" + SEMICOLON@41..42 ";" + WHITESPACE@42..43 "\n" +error 9..9: expected type parameter +error 11..11: expected COMMA +error 11..11: expected R_ANGLE +error 11..11: expected `;`, `{`, or `(` +error 12..12: expected an item +error 14..14: expected an item +error 15..15: expected an item +error 17..17: expected an item +error 24..24: expected SEMICOLON +error 24..24: expected expression +error 25..25: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rs b/crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rs new file mode 100644 index 00000000000..0dd30d0bd68 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0009_broken_struct_type_parameter.rs @@ -0,0 +1,5 @@ +struct S<90 + 2> { + f: u32 +} + +struct T; diff --git a/crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rast b/crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rast new file mode 100644 index 00000000000..e0f1d0c2749 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rast @@ -0,0 +1,44 @@ +SOURCE_FILE@0..42 + FN@0..41 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..41 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + EXPR_STMT@16..24 + CLOSURE_EXPR@16..24 + PARAM_LIST@16..18 + PIPE@16..17 "|" + PIPE@17..18 "|" + WHITESPACE@18..19 " " + RET_TYPE@19..24 + THIN_ARROW@19..21 "->" + WHITESPACE@21..22 " " + TUPLE_TYPE@22..24 + L_PAREN@22..23 "(" + R_PAREN@23..24 ")" + WHITESPACE@24..25 " " + EXPR_STMT@25..39 + EFFECT_EXPR@25..38 + UNSAFE_KW@25..31 "unsafe" + WHITESPACE@31..32 " " + BLOCK_EXPR@32..38 + L_CURLY@32..33 "{" + WHITESPACE@33..34 " " + TUPLE_EXPR@34..36 + L_PAREN@34..35 "(" + R_PAREN@35..36 ")" + WHITESPACE@36..37 " " + R_CURLY@37..38 "}" + SEMICOLON@38..39 ";" + WHITESPACE@39..40 "\n" + R_CURLY@40..41 "}" + WHITESPACE@41..42 "\n" +error 24..24: expected a block +error 24..24: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rs b/crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rs new file mode 100644 index 00000000000..9857752824a --- /dev/null +++ b/crates/syntax/test_data/parser/err/0010_unsafe_lambda_block.rs @@ -0,0 +1,3 @@ +fn main() { + || -> () unsafe { () }; +} diff --git a/crates/syntax/test_data/parser/err/0011_extern_struct.rast b/crates/syntax/test_data/parser/err/0011_extern_struct.rast new file mode 100644 index 00000000000..b02d390af9b --- /dev/null +++ b/crates/syntax/test_data/parser/err/0011_extern_struct.rast @@ -0,0 +1,13 @@ +SOURCE_FILE@0..19 + ERROR@0..6 + ABI@0..6 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + STRUCT@7..18 + STRUCT_KW@7..13 "struct" + WHITESPACE@13..14 " " + NAME@14..17 + IDENT@14..17 "Foo" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" +error 6..6: expected existential, fn, trait or impl diff --git a/crates/syntax/test_data/parser/err/0011_extern_struct.rs b/crates/syntax/test_data/parser/err/0011_extern_struct.rs new file mode 100644 index 00000000000..c1bd0a2d1be --- /dev/null +++ b/crates/syntax/test_data/parser/err/0011_extern_struct.rs @@ -0,0 +1 @@ +extern struct Foo; diff --git a/crates/syntax/test_data/parser/err/0012_broken_lambda.rast b/crates/syntax/test_data/parser/err/0012_broken_lambda.rast new file mode 100644 index 00000000000..f31c2763398 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0012_broken_lambda.rast @@ -0,0 +1,387 @@ +SOURCE_FILE@0..389 + FN@0..389 + VISIBILITY@0..10 + PUB_KW@0..3 + L_PAREN@3..4 + SUPER_KW@4..9 + R_PAREN@9..10 + WHITESPACE@10..11 + FN_KW@11..13 + WHITESPACE@13..14 + NAME@14..21 + IDENT@14..21 "process" + GENERIC_PARAM_LIST@21..38 + L_ANGLE@21..22 + LIFETIME_PARAM@22..24 + LIFETIME@22..24 "'a" + COMMA@24..25 + WHITESPACE@25..26 + TYPE_PARAM@26..37 + NAME@26..27 + IDENT@26..27 "S" + COLON@27..28 + WHITESPACE@28..29 + PATH@29..37 + PATH_SEGMENT@29..37 + NAME_REF@29..33 + IDENT@29..33 "Sink" + GENERIC_ARG_LIST@33..37 + L_ANGLE@33..34 + LIFETIME_ARG@34..36 + LIFETIME@34..36 "'a" + R_ANGLE@36..37 + R_ANGLE@37..38 + PARAM_LIST@38..93 + L_PAREN@38..39 + PARAM@39..54 + IDENT_PAT@39..46 + NAME@39..46 + IDENT@39..46 "builder" + COLON@46..47 + WHITESPACE@47..48 + REF_TYPE@48..54 + AMP@48..49 + MUT_KW@49..52 + WHITESPACE@52..53 + PATH_TYPE@53..54 + PATH@53..54 + PATH_SEGMENT@53..54 + NAME_REF@53..54 + IDENT@53..54 "S" + COMMA@54..55 + WHITESPACE@55..56 + PARAM@56..72 + IDENT_PAT@56..62 + NAME@56..62 + IDENT@56..62 "tokens" + COLON@62..63 + WHITESPACE@63..64 + REF_TYPE@64..72 + AMP@64..65 + SLICE_TYPE@65..72 + L_BRACK@65..66 + PATH_TYPE@66..71 + PATH@66..71 + PATH_SEGMENT@66..71 + NAME_REF@66..71 + IDENT@66..71 "Token" + R_BRACK@71..72 + COMMA@72..73 + WHITESPACE@73..74 + PARAM@74..92 + IDENT_PAT@74..80 + NAME@74..80 + IDENT@74..80 "events" + COLON@80..81 + WHITESPACE@81..82 + PATH_TYPE@82..92 + PATH@82..92 + PATH_SEGMENT@82..92 + NAME_REF@82..85 + IDENT@82..85 "Vec" + GENERIC_ARG_LIST@85..92 + L_ANGLE@85..86 + TYPE_ARG@86..91 + PATH_TYPE@86..91 + PATH@86..91 + PATH_SEGMENT@86..91 + NAME_REF@86..91 + IDENT@86..91 "Event" + R_ANGLE@91..92 + R_PAREN@92..93 + WHITESPACE@93..94 + BLOCK_EXPR@94..389 + L_CURLY@94..95 + WHITESPACE@95..100 + LET_STMT@100..125 + LET_KW@100..103 + WHITESPACE@103..104 + IDENT_PAT@104..120 + MUT_KW@104..107 + WHITESPACE@107..108 + NAME@108..120 + IDENT@108..120 "next_tok_idx" + WHITESPACE@120..121 + EQ@121..122 + WHITESPACE@122..123 + LITERAL@123..124 + INT_NUMBER@123..124 "0" + SEMICOLON@124..125 + WHITESPACE@125..130 + LET_STMT@130..389 + LET_KW@130..133 + WHITESPACE@133..134 + IDENT_PAT@134..140 + NAME@134..140 + IDENT@134..140 "eat_ws" + WHITESPACE@140..141 + EQ@141..142 + WHITESPACE@142..143 + CLOSURE_EXPR@143..389 + PARAM_LIST@143..388 + PIPE@143..144 + PARAM@144..159 + IDENT_PAT@144..147 + NAME@144..147 + IDENT@144..147 "idx" + COLON@147..148 + WHITESPACE@148..149 + REF_TYPE@149..159 + AMP@149..150 + MUT_KW@150..153 + WHITESPACE@153..154 + PATH_TYPE@154..159 + PATH@154..159 + PATH_SEGMENT@154..159 + NAME_REF@154..159 + IDENT@154..159 "usize" + COMMA@159..160 + WHITESPACE@160..161 + PARAM@161..167 + REF_PAT@161..167 + AMP@161..162 + MUT_KW@162..165 + WHITESPACE@165..166 + err: `expected pattern` + ERROR@166..167 + PIPE@166..167 + err: `expected COMMA` + WHITESPACE@167..168 + err: `expected pattern` + PARAM@168..169 + ERROR@168..169 + L_CURLY@168..169 + err: `expected COMMA` + WHITESPACE@169..178 + err: `expected pattern` + PARAM@178..183 + ERROR@178..183 + WHILE_KW@178..183 + err: `expected COMMA` + WHITESPACE@183..184 + err: `expected pattern` + PARAM@184..187 + ERROR@184..187 + LET_KW@184..187 + err: `expected COMMA` + WHITESPACE@187..188 + PARAM@188..199 + TUPLE_STRUCT_PAT@188..199 + PATH@188..192 + PATH_SEGMENT@188..192 + NAME_REF@188..192 + IDENT@188..192 "Some" + L_PAREN@192..193 + IDENT_PAT@193..198 + NAME@193..198 + IDENT@193..198 "token" + R_PAREN@198..199 + err: `expected COMMA` + WHITESPACE@199..200 + err: `expected pattern` + PARAM@200..201 + ERROR@200..201 + EQ@200..201 + err: `expected COMMA` + WHITESPACE@201..202 + PARAM@202..208 + IDENT_PAT@202..208 + NAME@202..208 + IDENT@202..208 "tokens" + err: `expected COMMA` + err: `expected pattern` + PARAM@208..209 + ERROR@208..209 + DOT@208..209 + err: `expected COMMA` + PARAM@209..218 + TUPLE_STRUCT_PAT@209..218 + PATH@209..212 + PATH_SEGMENT@209..212 + NAME_REF@209..212 + IDENT@209..212 "get" + L_PAREN@212..213 + err: `expected pattern` + ERROR@213..214 + STAR@213..214 + err: `expected COMMA` + IDENT_PAT@214..217 + NAME@214..217 + IDENT@214..217 "idx" + R_PAREN@217..218 + err: `expected COMMA` + WHITESPACE@218..219 + err: `expected pattern` + PARAM@219..220 + ERROR@219..220 + L_CURLY@219..220 + err: `expected COMMA` + WHITESPACE@220..233 + err: `expected pattern` + PARAM@233..235 + ERROR@233..235 + IF_KW@233..235 + err: `expected COMMA` + WHITESPACE@235..236 + err: `expected pattern` + PARAM@236..237 + ERROR@236..237 + BANG@236..237 + err: `expected COMMA` + PARAM@237..242 + IDENT_PAT@237..242 + NAME@237..242 + IDENT@237..242 "token" + err: `expected COMMA` + err: `expected pattern` + PARAM@242..243 + ERROR@242..243 + DOT@242..243 + err: `expected COMMA` + PARAM@243..247 + IDENT_PAT@243..247 + NAME@243..247 + IDENT@243..247 "kind" + err: `expected COMMA` + err: `expected pattern` + PARAM@247..248 + ERROR@247..248 + DOT@247..248 + err: `expected COMMA` + PARAM@248..259 + TUPLE_STRUCT_PAT@248..259 + PATH@248..257 + PATH_SEGMENT@248..257 + NAME_REF@248..257 + IDENT@248..257 "is_trivia" + L_PAREN@257..258 + R_PAREN@258..259 + err: `expected COMMA` + WHITESPACE@259..260 + err: `expected pattern` + PARAM@260..261 + ERROR@260..261 + L_CURLY@260..261 + err: `expected COMMA` + WHITESPACE@261..278 + PARAM@278..283 + IDENT_PAT@278..283 + NAME@278..283 + IDENT@278..283 "break" + err: `expected COMMA` + err: `expected pattern` + PARAM@283..284 + ERROR@283..284 + SEMICOLON@283..284 + err: `expected COMMA` + WHITESPACE@284..297 + err: `expected pattern` + PARAM@297..298 + ERROR@297..298 + R_CURLY@297..298 + err: `expected COMMA` + WHITESPACE@298..311 + PARAM@311..318 + IDENT_PAT@311..318 + NAME@311..318 + IDENT@311..318 "builder" + err: `expected COMMA` + err: `expected pattern` + PARAM@318..319 + ERROR@318..319 + DOT@318..319 + err: `expected COMMA` + PARAM@319..346 + TUPLE_STRUCT_PAT@319..346 + PATH@319..323 + PATH_SEGMENT@319..323 + NAME_REF@319..323 + IDENT@319..323 "leaf" + L_PAREN@323..324 + IDENT_PAT@324..329 + NAME@324..329 + IDENT@324..329 "token" + err: `expected COMMA` + err: `expected pattern` + ERROR@329..330 + DOT@329..330 + err: `expected COMMA` + IDENT_PAT@330..334 + NAME@330..334 + IDENT@330..334 "kind" + COMMA@334..335 + WHITESPACE@335..336 + IDENT_PAT@336..341 + NAME@336..341 + IDENT@336..341 "token" + err: `expected COMMA` + err: `expected pattern` + ERROR@341..342 + DOT@341..342 + err: `expected COMMA` + IDENT_PAT@342..345 + NAME@342..345 + IDENT@342..345 "len" + R_PAREN@345..346 + err: `expected COMMA` + err: `expected pattern` + PARAM@346..347 + ERROR@346..347 + SEMICOLON@346..347 + err: `expected COMMA` + WHITESPACE@347..360 + err: `expected pattern` + PARAM@360..361 + ERROR@360..361 + STAR@360..361 + err: `expected COMMA` + PARAM@361..364 + IDENT_PAT@361..364 + NAME@361..364 + IDENT@361..364 "idx" + err: `expected COMMA` + WHITESPACE@364..365 + err: `expected pattern` + PARAM@365..366 + ERROR@365..366 + PLUS@365..366 + err: `expected COMMA` + err: `expected pattern` + PARAM@366..367 + ERROR@366..367 + EQ@366..367 + err: `expected COMMA` + WHITESPACE@367..368 + PARAM@368..369 + LITERAL@368..369 + INT_NUMBER@368..369 "1" + err: `expected COMMA` + WHITESPACE@369..378 + err: `expected pattern` + PARAM@378..379 + ERROR@378..379 + R_CURLY@378..379 + err: `expected COMMA` + WHITESPACE@379..384 + err: `expected pattern` + PARAM@384..385 + ERROR@384..385 + R_CURLY@384..385 + err: `expected COMMA` + err: `expected pattern` + PARAM@385..386 + ERROR@385..386 + SEMICOLON@385..386 + err: `expected COMMA` + WHITESPACE@386..387 + err: `expected pattern` + PARAM@387..388 + ERROR@387..388 + R_CURLY@387..388 + err: `expected COMMA` + err: `expected PIPE` + WHITESPACE@388..389 + err: `expected expression` + err: `expected SEMI` + err: `expected R_CURLY` + ERROR@389..389 diff --git a/crates/syntax/test_data/parser/err/0013_invalid_type.rast b/crates/syntax/test_data/parser/err/0013_invalid_type.rast new file mode 100644 index 00000000000..f48ab6e7124 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0013_invalid_type.rast @@ -0,0 +1,89 @@ +SOURCE_FILE@0..86 + STRUCT@0..72 + VISIBILITY@0..3 + PUB_KW@0..3 "pub" + WHITESPACE@3..4 " " + STRUCT_KW@4..10 "struct" + WHITESPACE@10..11 " " + NAME@11..16 + IDENT@11..16 "Cache" + TUPLE_FIELD_LIST@16..72 + L_PAREN@16..17 "(" + WHITESPACE@17..22 "\n " + TUPLE_FIELD@22..68 + PATH_TYPE@22..68 + PATH@22..68 + PATH_SEGMENT@22..68 + NAME_REF@22..29 + IDENT@22..29 "RefCell" + GENERIC_ARG_LIST@29..68 + L_ANGLE@29..30 "<" + TYPE_ARG@30..68 + PATH_TYPE@30..68 + PATH@30..68 + PATH_SEGMENT@30..68 + NAME_REF@30..37 + IDENT@30..37 "HashMap" + GENERIC_ARG_LIST@37..68 + L_ANGLE@37..38 "<" + WHITESPACE@38..47 "\n " + TYPE_ARG@47..53 + PATH_TYPE@47..53 + PATH@47..53 + PATH_SEGMENT@47..53 + NAME_REF@47..53 + IDENT@47..53 "TypeId" + COMMA@53..54 "," + WHITESPACE@54..63 "\n " + TYPE_ARG@63..68 + PATH_TYPE@63..68 + PATH@63..68 + PATH_SEGMENT@63..68 + NAME_REF@63..66 + IDENT@63..66 "Box" + GENERIC_ARG_LIST@66..68 + L_ANGLE@66..67 "<" + TYPE_ARG@67..68 + ERROR@67..68 + AT@67..68 "@" + WHITESPACE@68..69 " " + TUPLE_FIELD@69..72 + PATH_TYPE@69..72 + PATH@69..72 + PATH_SEGMENT@69..72 + NAME_REF@69..72 + IDENT@69..72 "Any" + ERROR@72..72 + ERROR@72..73 + R_ANGLE@72..73 ">" + ERROR@73..74 + COMMA@73..74 "," + WHITESPACE@74..79 "\n " + ERROR@79..80 + R_ANGLE@79..80 ">" + ERROR@80..81 + R_ANGLE@80..81 ">" + WHITESPACE@81..82 "\n" + ERROR@82..83 + R_PAREN@82..83 ")" + ERROR@83..84 + SEMICOLON@83..84 ";" + WHITESPACE@84..86 "\n\n" +error 67..67: expected type +error 68..68: expected COMMA +error 68..68: expected R_ANGLE +error 68..68: expected COMMA +error 68..68: expected R_ANGLE +error 68..68: expected COMMA +error 68..68: expected R_ANGLE +error 68..68: expected COMMA +error 72..72: expected COMMA +error 72..72: expected a type +error 72..72: expected R_PAREN +error 72..72: expected SEMICOLON +error 72..72: expected an item +error 73..73: expected an item +error 79..79: expected an item +error 80..80: expected an item +error 82..82: expected an item +error 83..83: expected an item diff --git a/crates/syntax/test_data/parser/err/0013_invalid_type.rs b/crates/syntax/test_data/parser/err/0013_invalid_type.rs new file mode 100644 index 00000000000..20dde3bc30f --- /dev/null +++ b/crates/syntax/test_data/parser/err/0013_invalid_type.rs @@ -0,0 +1,7 @@ +pub struct Cache( + RefCell, + >> +); + diff --git a/crates/syntax/test_data/parser/err/0014_where_no_bounds.rast b/crates/syntax/test_data/parser/err/0014_where_no_bounds.rast new file mode 100644 index 00000000000..a1f39b22a52 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0014_where_no_bounds.rast @@ -0,0 +1,31 @@ +SOURCE_FILE@0..23 + FN@0..22 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + GENERIC_PARAM_LIST@6..9 + L_ANGLE@6..7 "<" + TYPE_PARAM@7..8 + NAME@7..8 + IDENT@7..8 "T" + R_ANGLE@8..9 ">" + PARAM_LIST@9..11 + L_PAREN@9..10 "(" + R_PAREN@10..11 ")" + WHITESPACE@11..12 " " + WHERE_CLAUSE@12..19 + WHERE_KW@12..17 "where" + WHITESPACE@17..18 " " + WHERE_PRED@18..19 + PATH_TYPE@18..19 + PATH@18..19 + PATH_SEGMENT@18..19 + NAME_REF@18..19 + IDENT@18..19 "T" + WHITESPACE@19..20 " " + BLOCK_EXPR@20..22 + L_CURLY@20..21 "{" + R_CURLY@21..22 "}" + WHITESPACE@22..23 "\n" +error 19..19: expected colon diff --git a/crates/syntax/test_data/parser/err/0014_where_no_bounds.rs b/crates/syntax/test_data/parser/err/0014_where_no_bounds.rs new file mode 100644 index 00000000000..75c1d2f9861 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0014_where_no_bounds.rs @@ -0,0 +1 @@ +fn foo() where T {} diff --git a/crates/syntax/test_data/parser/err/0015_curly_in_params.rast b/crates/syntax/test_data/parser/err/0015_curly_in_params.rast new file mode 100644 index 00000000000..a3c25b450a9 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0015_curly_in_params.rast @@ -0,0 +1,24 @@ +SOURCE_FILE@0..14 + FN@0..7 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..7 + L_PAREN@6..7 "(" + ERROR@7..8 + R_CURLY@7..8 "}" + ERROR@8..9 + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + ERROR@10..13 + L_CURLY@10..11 "{" + WHITESPACE@11..12 "\n" + R_CURLY@12..13 "}" + WHITESPACE@13..14 "\n" +error 7..7: expected value parameter +error 7..7: expected R_PAREN +error 7..7: expected a block +error 7..7: unmatched `}` +error 8..8: expected an item +error 10..10: expected an item diff --git a/crates/syntax/test_data/parser/err/0015_curly_in_params.rs b/crates/syntax/test_data/parser/err/0015_curly_in_params.rs new file mode 100644 index 00000000000..156e70251a1 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0015_curly_in_params.rs @@ -0,0 +1,2 @@ +fn foo(}) { +} diff --git a/crates/syntax/test_data/parser/err/0016_missing_semi.rast b/crates/syntax/test_data/parser/err/0016_missing_semi.rast new file mode 100644 index 00000000000..66157c3dce9 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0016_missing_semi.rast @@ -0,0 +1,43 @@ +SOURCE_FILE@0..56 + FN@0..55 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..55 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..38 + CALL_EXPR@15..38 + PATH_EXPR@15..18 + PATH@15..18 + PATH_SEGMENT@15..18 + NAME_REF@15..18 + IDENT@15..18 "foo" + ARG_LIST@18..38 + L_PAREN@18..19 "(" + WHITESPACE@19..28 "\n " + LITERAL@28..29 + INT_NUMBER@28..29 "1" + COMMA@29..30 "," + WHITESPACE@30..31 " " + LITERAL@31..32 + INT_NUMBER@31..32 "2" + WHITESPACE@32..37 "\n " + R_PAREN@37..38 ")" + WHITESPACE@38..43 "\n " + EXPR_STMT@43..53 + RETURN_EXPR@43..52 + RETURN_KW@43..49 "return" + WHITESPACE@49..50 " " + LITERAL@50..52 + INT_NUMBER@50..52 "92" + SEMICOLON@52..53 ";" + WHITESPACE@53..54 "\n" + R_CURLY@54..55 "}" + WHITESPACE@55..56 "\n" +error 38..38: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0016_missing_semi.rs b/crates/syntax/test_data/parser/err/0016_missing_semi.rs new file mode 100644 index 00000000000..9ae85768619 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0016_missing_semi.rs @@ -0,0 +1,6 @@ +fn foo() { + foo( + 1, 2 + ) + return 92; +} diff --git a/crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rast b/crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rast new file mode 100644 index 00000000000..fe094f61c17 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rast @@ -0,0 +1,46 @@ +SOURCE_FILE@0..47 + FN@0..46 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..16 + L_PAREN@6..7 "(" + PARAM@7..15 + IDENT_PAT@7..10 + NAME@7..10 + IDENT@7..10 "foo" + COLON@10..11 ":" + WHITESPACE@11..12 " " + PATH_TYPE@12..15 + PATH@12..15 + PATH_SEGMENT@12..15 + NAME_REF@12..15 + IDENT@12..15 "i32" + R_PAREN@15..16 ")" + WHITESPACE@16..17 " " + BLOCK_EXPR@17..46 + L_CURLY@17..18 "{" + WHITESPACE@18..23 "\n " + LET_STMT@23..36 + LET_KW@23..26 "let" + WHITESPACE@26..27 " " + IDENT_PAT@27..30 + NAME@27..30 + IDENT@27..30 "bar" + WHITESPACE@30..31 " " + EQ@31..32 "=" + WHITESPACE@32..33 " " + LITERAL@33..35 + INT_NUMBER@33..35 "92" + SEMICOLON@35..36 ";" + WHITESPACE@36..41 "\n " + BIN_EXPR@41..44 + LITERAL@41..42 + INT_NUMBER@41..42 "1" + WHITESPACE@42..43 " " + PLUS@43..44 "+" + WHITESPACE@44..45 "\n" + R_CURLY@45..46 "}" + WHITESPACE@46..47 "\n" +error 44..44: expected expression diff --git a/crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rs b/crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rs new file mode 100644 index 00000000000..17bd4977777 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0017_incomplete_binexpr.rs @@ -0,0 +1,4 @@ +fn foo(foo: i32) { + let bar = 92; + 1 + +} diff --git a/crates/syntax/test_data/parser/err/0018_incomplete_fn.rast b/crates/syntax/test_data/parser/err/0018_incomplete_fn.rast new file mode 100644 index 00000000000..72939fc981a --- /dev/null +++ b/crates/syntax/test_data/parser/err/0018_incomplete_fn.rast @@ -0,0 +1,131 @@ +SOURCE_FILE@0..183 + IMPL@0..182 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..13 + PATH@5..13 + PATH_SEGMENT@5..13 + NAME_REF@5..13 + IDENT@5..13 "FnScopes" + WHITESPACE@13..14 " " + ASSOC_ITEM_LIST@14..182 + L_CURLY@14..15 "{" + WHITESPACE@15..20 "\n " + FN@20..161 + FN_KW@20..22 "fn" + WHITESPACE@22..23 " " + NAME@23..32 + IDENT@23..32 "new_scope" + PARAM_LIST@32..35 + L_PAREN@32..33 "(" + PARAM@33..34 + REF_PAT@33..34 + AMP@33..34 "&" + R_PAREN@34..35 ")" + WHITESPACE@35..36 " " + RET_TYPE@36..46 + THIN_ARROW@36..38 "->" + WHITESPACE@38..39 " " + PATH_TYPE@39..46 + PATH@39..46 + PATH_SEGMENT@39..46 + NAME_REF@39..46 + IDENT@39..46 "ScopeId" + WHITESPACE@46..47 " " + BLOCK_EXPR@47..161 + L_CURLY@47..48 "{" + WHITESPACE@48..57 "\n " + LET_STMT@57..85 + LET_KW@57..60 "let" + WHITESPACE@60..61 " " + IDENT_PAT@61..64 + NAME@61..64 + IDENT@61..64 "res" + WHITESPACE@64..65 " " + EQ@65..66 "=" + WHITESPACE@66..67 " " + METHOD_CALL_EXPR@67..84 + FIELD_EXPR@67..78 + PATH_EXPR@67..71 + PATH@67..71 + PATH_SEGMENT@67..71 + SELF_KW@67..71 "self" + DOT@71..72 "." + NAME_REF@72..78 + IDENT@72..78 "scopes" + DOT@78..79 "." + NAME_REF@79..82 + IDENT@79..82 "len" + ARG_LIST@82..84 + L_PAREN@82..83 "(" + R_PAREN@83..84 ")" + SEMICOLON@84..85 ";" + WHITESPACE@85..94 "\n " + METHOD_CALL_EXPR@94..155 + FIELD_EXPR@94..105 + PATH_EXPR@94..98 + PATH@94..98 + PATH_SEGMENT@94..98 + SELF_KW@94..98 "self" + DOT@98..99 "." + NAME_REF@99..105 + IDENT@99..105 "scopes" + DOT@105..106 "." + NAME_REF@106..110 + IDENT@106..110 "push" + ARG_LIST@110..155 + L_PAREN@110..111 "(" + RECORD_EXPR@111..154 + PATH@111..120 + PATH_SEGMENT@111..120 + NAME_REF@111..120 + IDENT@111..120 "ScopeData" + WHITESPACE@120..121 " " + RECORD_EXPR_FIELD_LIST@121..154 + L_CURLY@121..122 "{" + WHITESPACE@122..123 " " + RECORD_EXPR_FIELD@123..135 + NAME_REF@123..129 + IDENT@123..129 "parent" + COLON@129..130 ":" + WHITESPACE@130..131 " " + PATH_EXPR@131..135 + PATH@131..135 + PATH_SEGMENT@131..135 + NAME_REF@131..135 + IDENT@131..135 "None" + COMMA@135..136 "," + WHITESPACE@136..137 " " + RECORD_EXPR_FIELD@137..152 + NAME_REF@137..144 + IDENT@137..144 "entries" + COLON@144..145 ":" + WHITESPACE@145..146 " " + MACRO_CALL@146..152 + PATH@146..149 + PATH_SEGMENT@146..149 + NAME_REF@146..149 + IDENT@146..149 "vec" + BANG@149..150 "!" + TOKEN_TREE@150..152 + L_BRACK@150..151 "[" + R_BRACK@151..152 "]" + WHITESPACE@152..153 " " + R_CURLY@153..154 "}" + R_PAREN@154..155 ")" + WHITESPACE@155..160 "\n " + R_CURLY@160..161 "}" + WHITESPACE@161..167 "\n\n " + FN@167..180 + FN_KW@167..169 "fn" + WHITESPACE@169..170 " " + NAME@170..180 + IDENT@170..180 "set_parent" + WHITESPACE@180..181 "\n" + R_CURLY@181..182 "}" + WHITESPACE@182..183 "\n" +error 34..34: expected pattern +error 34..34: expected COLON +error 34..34: expected type +error 180..180: expected function arguments +error 180..180: expected a block diff --git a/crates/syntax/test_data/parser/err/0018_incomplete_fn.rs b/crates/syntax/test_data/parser/err/0018_incomplete_fn.rs new file mode 100644 index 00000000000..fe604006c9e --- /dev/null +++ b/crates/syntax/test_data/parser/err/0018_incomplete_fn.rs @@ -0,0 +1,8 @@ +impl FnScopes { + fn new_scope(&) -> ScopeId { + let res = self.scopes.len(); + self.scopes.push(ScopeData { parent: None, entries: vec![] }) + } + + fn set_parent +} diff --git a/crates/syntax/test_data/parser/err/0019_let_recover.rast b/crates/syntax/test_data/parser/err/0019_let_recover.rast new file mode 100644 index 00000000000..72c05bd964a --- /dev/null +++ b/crates/syntax/test_data/parser/err/0019_let_recover.rast @@ -0,0 +1,103 @@ +SOURCE_FILE@0..139 + FN@0..138 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..138 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..24 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + IDENT_PAT@19..22 + NAME@19..22 + IDENT@19..22 "foo" + WHITESPACE@22..23 " " + EQ@23..24 "=" + WHITESPACE@24..29 "\n " + LET_STMT@29..41 + LET_KW@29..32 "let" + WHITESPACE@32..33 " " + IDENT_PAT@33..36 + NAME@33..36 + IDENT@33..36 "bar" + WHITESPACE@36..37 " " + EQ@37..38 "=" + WHITESPACE@38..39 " " + LITERAL@39..40 + INT_NUMBER@39..40 "1" + SEMICOLON@40..41 ";" + WHITESPACE@41..46 "\n " + LET_STMT@46..49 + LET_KW@46..49 "let" + WHITESPACE@49..54 "\n " + LET_STMT@54..67 + LET_KW@54..57 "let" + WHITESPACE@57..58 " " + IDENT_PAT@58..61 + NAME@58..61 + IDENT@58..61 "baz" + WHITESPACE@61..62 " " + EQ@62..63 "=" + WHITESPACE@63..64 " " + LITERAL@64..66 + INT_NUMBER@64..66 "92" + SEMICOLON@66..67 ";" + WHITESPACE@67..72 "\n " + LET_STMT@72..75 + LET_KW@72..75 "let" + WHITESPACE@75..80 "\n " + EXPR_STMT@80..90 + IF_EXPR@80..90 + IF_KW@80..82 "if" + WHITESPACE@82..83 " " + CONDITION@83..87 + LITERAL@83..87 + TRUE_KW@83..87 "true" + WHITESPACE@87..88 " " + BLOCK_EXPR@88..90 + L_CURLY@88..89 "{" + R_CURLY@89..90 "}" + WHITESPACE@90..95 "\n " + LET_STMT@95..98 + LET_KW@95..98 "let" + WHITESPACE@98..103 "\n " + EXPR_STMT@103..116 + WHILE_EXPR@103..116 + WHILE_KW@103..108 "while" + WHITESPACE@108..109 " " + CONDITION@109..113 + LITERAL@109..113 + TRUE_KW@109..113 "true" + WHITESPACE@113..114 " " + BLOCK_EXPR@114..116 + L_CURLY@114..115 "{" + R_CURLY@115..116 "}" + WHITESPACE@116..121 "\n " + LET_STMT@121..124 + LET_KW@121..124 "let" + WHITESPACE@124..129 "\n " + LOOP_EXPR@129..136 + LOOP_KW@129..133 "loop" + WHITESPACE@133..134 " " + BLOCK_EXPR@134..136 + L_CURLY@134..135 "{" + R_CURLY@135..136 "}" + WHITESPACE@136..137 "\n" + R_CURLY@137..138 "}" + WHITESPACE@138..139 "\n" +error 24..24: expected expression +error 24..24: expected SEMICOLON +error 49..49: expected pattern +error 49..49: expected SEMICOLON +error 75..75: expected pattern +error 75..75: expected SEMICOLON +error 98..98: expected pattern +error 98..98: expected SEMICOLON +error 124..124: expected pattern +error 124..124: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0019_let_recover.rs b/crates/syntax/test_data/parser/err/0019_let_recover.rs new file mode 100644 index 00000000000..48bf3d68bd3 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0019_let_recover.rs @@ -0,0 +1,12 @@ +fn foo() { + let foo = + let bar = 1; + let + let baz = 92; + let + if true {} + let + while true {} + let + loop {} +} diff --git a/crates/syntax/test_data/parser/err/0020_fn_recover.rast b/crates/syntax/test_data/parser/err/0020_fn_recover.rast new file mode 100644 index 00000000000..6f6feba5a83 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0020_fn_recover.rast @@ -0,0 +1,20 @@ +SOURCE_FILE@0..16 + FN@0..2 + FN_KW@0..2 "fn" + WHITESPACE@2..4 "\n\n" + FN@4..15 + FN_KW@4..6 "fn" + WHITESPACE@6..7 " " + NAME@7..10 + IDENT@7..10 "foo" + PARAM_LIST@10..12 + L_PAREN@10..11 "(" + R_PAREN@11..12 ")" + WHITESPACE@12..13 " " + BLOCK_EXPR@13..15 + L_CURLY@13..14 "{" + R_CURLY@14..15 "}" + WHITESPACE@15..16 "\n" +error 2..2: expected a name +error 2..2: expected function arguments +error 2..2: expected a block diff --git a/crates/syntax/test_data/parser/err/0020_fn_recover.rs b/crates/syntax/test_data/parser/err/0020_fn_recover.rs new file mode 100644 index 00000000000..3393b668b41 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0020_fn_recover.rs @@ -0,0 +1,3 @@ +fn + +fn foo() {} diff --git a/crates/syntax/test_data/parser/err/0021_incomplete_param.rast b/crates/syntax/test_data/parser/err/0021_incomplete_param.rast new file mode 100644 index 00000000000..b3284553770 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0021_incomplete_param.rast @@ -0,0 +1,34 @@ +SOURCE_FILE@0..22 + FN@0..21 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..17 + L_PAREN@6..7 "(" + PARAM@7..13 + IDENT_PAT@7..8 + NAME@7..8 + IDENT@7..8 "x" + COLON@8..9 ":" + WHITESPACE@9..10 " " + PATH_TYPE@10..13 + PATH@10..13 + PATH_SEGMENT@10..13 + NAME_REF@10..13 + IDENT@10..13 "i32" + COMMA@13..14 "," + WHITESPACE@14..15 " " + PARAM@15..16 + IDENT_PAT@15..16 + NAME@15..16 + IDENT@15..16 "y" + R_PAREN@16..17 ")" + WHITESPACE@17..18 " " + BLOCK_EXPR@18..21 + L_CURLY@18..19 "{" + WHITESPACE@19..20 "\n" + R_CURLY@20..21 "}" + WHITESPACE@21..22 "\n" +error 16..16: expected COLON +error 16..16: expected type diff --git a/crates/syntax/test_data/parser/err/0021_incomplete_param.rs b/crates/syntax/test_data/parser/err/0021_incomplete_param.rs new file mode 100644 index 00000000000..7a6c264f6d7 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0021_incomplete_param.rs @@ -0,0 +1,2 @@ +fn foo(x: i32, y) { +} diff --git a/crates/syntax/test_data/parser/err/0022_bad_exprs.rast b/crates/syntax/test_data/parser/err/0022_bad_exprs.rast new file mode 100644 index 00000000000..71fb19783ad --- /dev/null +++ b/crates/syntax/test_data/parser/err/0022_bad_exprs.rast @@ -0,0 +1,180 @@ +SOURCE_FILE@0..112 + FN@0..33 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "a" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + BLOCK_EXPR@7..33 + L_CURLY@7..8 "{" + WHITESPACE@8..9 " " + EXPR_STMT@9..17 + ARRAY_EXPR@9..17 + L_BRACK@9..10 "[" + LITERAL@10..11 + INT_NUMBER@10..11 "1" + COMMA@11..12 "," + WHITESPACE@12..13 " " + LITERAL@13..14 + INT_NUMBER@13..14 "2" + COMMA@14..15 "," + WHITESPACE@15..16 " " + ERROR@16..17 + AT@16..17 "@" + EXPR_STMT@17..18 + ERROR@17..18 + COMMA@17..18 "," + WHITESPACE@18..19 " " + STRUCT@19..26 + STRUCT_KW@19..25 "struct" + ERROR@25..26 + COMMA@25..26 "," + WHITESPACE@26..27 " " + LET_STMT@27..31 + LET_KW@27..30 "let" + ERROR@30..31 + R_BRACK@30..31 "]" + WHITESPACE@31..32 " " + R_CURLY@32..33 "}" + WHITESPACE@33..34 "\n" + FN@34..68 + FN_KW@34..36 "fn" + WHITESPACE@36..37 " " + NAME@37..38 + IDENT@37..38 "b" + PARAM_LIST@38..40 + L_PAREN@38..39 "(" + R_PAREN@39..40 ")" + WHITESPACE@40..41 " " + BLOCK_EXPR@41..68 + L_CURLY@41..42 "{" + WHITESPACE@42..43 " " + EXPR_STMT@43..54 + CALL_EXPR@43..54 + PATH_EXPR@43..46 + PATH@43..46 + PATH_SEGMENT@43..46 + NAME_REF@43..46 + IDENT@43..46 "foo" + ARG_LIST@46..54 + L_PAREN@46..47 "(" + LITERAL@47..48 + INT_NUMBER@47..48 "1" + COMMA@48..49 "," + WHITESPACE@49..50 " " + LITERAL@50..51 + INT_NUMBER@50..51 "2" + COMMA@51..52 "," + WHITESPACE@52..53 " " + ERROR@53..54 + AT@53..54 "@" + EXPR_STMT@54..55 + ERROR@54..55 + COMMA@54..55 "," + WHITESPACE@55..56 " " + IMPL@56..60 + IMPL_KW@56..60 "impl" + EXPR_STMT@60..61 + ERROR@60..61 + COMMA@60..61 "," + WHITESPACE@61..62 " " + LET_STMT@62..65 + LET_KW@62..65 "let" + ERROR@65..66 + R_PAREN@65..66 ")" + WHITESPACE@66..67 " " + R_CURLY@67..68 "}" + WHITESPACE@68..69 "\n" + FN@69..111 + FN_KW@69..71 "fn" + WHITESPACE@71..72 " " + NAME@72..73 + IDENT@72..73 "c" + PARAM_LIST@73..75 + L_PAREN@73..74 "(" + R_PAREN@74..75 ")" + WHITESPACE@75..76 " " + BLOCK_EXPR@76..111 + L_CURLY@76..77 "{" + WHITESPACE@77..78 " " + EXPR_STMT@78..93 + METHOD_CALL_EXPR@78..93 + PATH_EXPR@78..81 + PATH@78..81 + PATH_SEGMENT@78..81 + NAME_REF@78..81 + IDENT@78..81 "foo" + DOT@81..82 "." + NAME_REF@82..85 + IDENT@82..85 "bar" + ARG_LIST@85..93 + L_PAREN@85..86 "(" + LITERAL@86..87 + INT_NUMBER@86..87 "1" + COMMA@87..88 "," + WHITESPACE@88..89 " " + LITERAL@89..90 + INT_NUMBER@89..90 "2" + COMMA@90..91 "," + WHITESPACE@91..92 " " + ERROR@92..93 + AT@92..93 "@" + EXPR_STMT@93..94 + ERROR@93..94 + COMMA@93..94 "," + WHITESPACE@94..95 " " + EXPR_STMT@95..96 + ERROR@95..96 + R_BRACK@95..96 "]" + EXPR_STMT@96..97 + ERROR@96..97 + COMMA@96..97 "," + WHITESPACE@97..98 " " + TRAIT@98..104 + TRAIT_KW@98..103 "trait" + ERROR@103..104 + COMMA@103..104 "," + WHITESPACE@104..105 " " + LET_STMT@105..108 + LET_KW@105..108 "let" + ERROR@108..109 + R_PAREN@108..109 ")" + WHITESPACE@109..110 " " + R_CURLY@110..111 "}" + WHITESPACE@111..112 "\n" +error 16..16: expected expression +error 17..17: expected R_BRACK +error 17..17: expected SEMICOLON +error 17..17: expected expression +error 18..18: expected SEMICOLON +error 25..25: expected a name +error 26..26: expected `;`, `{`, or `(` +error 30..30: expected pattern +error 31..31: expected SEMICOLON +error 53..53: expected expression +error 54..54: expected SEMICOLON +error 54..54: expected expression +error 55..55: expected SEMICOLON +error 60..60: expected type +error 60..60: expected `{` +error 60..60: expected expression +error 61..61: expected SEMICOLON +error 65..65: expected pattern +error 65..65: expected SEMICOLON +error 65..65: expected expression +error 92..92: expected expression +error 93..93: expected SEMICOLON +error 93..93: expected expression +error 94..94: expected SEMICOLON +error 95..95: expected expression +error 96..96: expected SEMICOLON +error 96..96: expected expression +error 97..97: expected SEMICOLON +error 103..103: expected a name +error 104..104: expected `{` +error 108..108: expected pattern +error 108..108: expected SEMICOLON +error 108..108: expected expression diff --git a/crates/syntax/test_data/parser/err/0022_bad_exprs.rs b/crates/syntax/test_data/parser/err/0022_bad_exprs.rs new file mode 100644 index 00000000000..cd2d493a10c --- /dev/null +++ b/crates/syntax/test_data/parser/err/0022_bad_exprs.rs @@ -0,0 +1,3 @@ +fn a() { [1, 2, @, struct, let] } +fn b() { foo(1, 2, @, impl, let) } +fn c() { foo.bar(1, 2, @, ], trait, let) } diff --git a/crates/syntax/test_data/parser/err/0023_mismatched_paren.rast b/crates/syntax/test_data/parser/err/0023_mismatched_paren.rast new file mode 100644 index 00000000000..5ffefd74290 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0023_mismatched_paren.rast @@ -0,0 +1,43 @@ +SOURCE_FILE@0..94 + FN@0..55 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..55 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + MACRO_CALL@16..49 + PATH@16..19 + PATH_SEGMENT@16..19 + NAME_REF@16..19 + IDENT@16..19 "foo" + BANG@19..20 "!" + WHITESPACE@20..21 " " + TOKEN_TREE@21..49 + L_PAREN@21..22 "(" + WHITESPACE@22..31 "\n " + IDENT@31..34 "bar" + COMMA@34..35 "," + WHITESPACE@35..36 " " + STRING@36..41 "\"baz\"" + COMMA@41..42 "," + WHITESPACE@42..43 " " + INT_NUMBER@43..44 "1" + COMMA@44..45 "," + WHITESPACE@45..46 " " + FLOAT_NUMBER@46..49 "2.0" + WHITESPACE@49..54 "\n " + R_CURLY@54..55 "}" + WHITESPACE@55..56 " " + COMMENT@56..91 "//~ ERROR incorrect c ..." + WHITESPACE@91..92 "\n" + ERROR@92..93 + R_CURLY@92..93 "}" + WHITESPACE@93..94 "\n" +error 49..49: unmatched `}` +error 92..92: unmatched `}` diff --git a/crates/syntax/test_data/parser/err/0023_mismatched_paren.rs b/crates/syntax/test_data/parser/err/0023_mismatched_paren.rs new file mode 100644 index 00000000000..0206d563ea7 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0023_mismatched_paren.rs @@ -0,0 +1,5 @@ +fn main() { + foo! ( + bar, "baz", 1, 2.0 + } //~ ERROR incorrect close delimiter +} diff --git a/crates/syntax/test_data/parser/err/0024_many_type_parens.rast b/crates/syntax/test_data/parser/err/0024_many_type_parens.rast new file mode 100644 index 00000000000..e3be6b22e11 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0024_many_type_parens.rast @@ -0,0 +1,319 @@ +SOURCE_FILE@0..240 + FN@0..53 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "f" + GENERIC_PARAM_LIST@4..48 + L_ANGLE@4..5 "<" + TYPE_PARAM@5..47 + NAME@5..6 + IDENT@5..6 "T" + COLON@6..7 ":" + WHITESPACE@7..8 " " + TYPE_BOUND_LIST@8..47 + TYPE_BOUND@8..14 + L_PAREN@8..9 "(" + PATH_TYPE@9..13 + PATH@9..13 + PATH_SEGMENT@9..13 + NAME_REF@9..13 + IDENT@9..13 "Copy" + R_PAREN@13..14 ")" + WHITESPACE@14..15 " " + PLUS@15..16 "+" + WHITESPACE@16..17 " " + TYPE_BOUND@17..25 + L_PAREN@17..18 "(" + QUESTION@18..19 "?" + PATH_TYPE@19..24 + PATH@19..24 + PATH_SEGMENT@19..24 + NAME_REF@19..24 + IDENT@19..24 "Sized" + R_PAREN@24..25 ")" + WHITESPACE@25..26 " " + PLUS@26..27 "+" + WHITESPACE@27..28 " " + TYPE_BOUND@28..47 + L_PAREN@28..29 "(" + FOR_TYPE@29..46 + FOR_KW@29..32 "for" + GENERIC_PARAM_LIST@32..36 + L_ANGLE@32..33 "<" + LIFETIME_PARAM@33..35 + LIFETIME@33..35 "\'a" + R_ANGLE@35..36 ">" + WHITESPACE@36..37 " " + PATH_TYPE@37..46 + PATH@37..46 + PATH_SEGMENT@37..46 + NAME_REF@37..42 + IDENT@37..42 "Trait" + GENERIC_ARG_LIST@42..46 + L_ANGLE@42..43 "<" + LIFETIME_ARG@43..45 + LIFETIME@43..45 "\'a" + R_ANGLE@45..46 ">" + R_PAREN@46..47 ")" + R_ANGLE@47..48 ">" + PARAM_LIST@48..50 + L_PAREN@48..49 "(" + R_PAREN@49..50 ")" + WHITESPACE@50..51 " " + BLOCK_EXPR@51..53 + L_CURLY@51..52 "{" + R_CURLY@52..53 "}" + WHITESPACE@53..55 "\n\n" + FN@55..239 + FN_KW@55..57 "fn" + WHITESPACE@57..58 " " + NAME@58..62 + IDENT@58..62 "main" + PARAM_LIST@62..64 + L_PAREN@62..63 "(" + R_PAREN@63..64 ")" + WHITESPACE@64..65 " " + BLOCK_EXPR@65..239 + L_CURLY@65..66 "{" + WHITESPACE@66..71 "\n " + LET_STMT@71..121 + LET_KW@71..74 "let" + WHITESPACE@74..75 " " + WILDCARD_PAT@75..76 + UNDERSCORE@75..76 "_" + COLON@76..77 ":" + WHITESPACE@77..78 " " + DYN_TRAIT_TYPE@78..121 + TYPE_BOUND_LIST@78..121 + TYPE_BOUND@78..88 + PATH_TYPE@78..88 + PATH@78..88 + PATH_SEGMENT@78..88 + NAME_REF@78..81 + IDENT@78..81 "Box" + GENERIC_ARG_LIST@81..88 + L_ANGLE@81..82 "<" + TYPE_ARG@82..88 + PAREN_TYPE@82..88 + L_PAREN@82..83 "(" + PATH_TYPE@83..87 + PATH@83..87 + PATH_SEGMENT@83..87 + NAME_REF@83..87 + IDENT@83..87 "Copy" + R_PAREN@87..88 ")" + WHITESPACE@88..89 " " + PLUS@89..90 "+" + WHITESPACE@90..91 " " + TYPE_BOUND@91..99 + L_PAREN@91..92 "(" + QUESTION@92..93 "?" + PATH_TYPE@93..98 + PATH@93..98 + PATH_SEGMENT@93..98 + NAME_REF@93..98 + IDENT@93..98 "Sized" + R_PAREN@98..99 ")" + WHITESPACE@99..100 " " + PLUS@100..101 "+" + WHITESPACE@101..102 " " + TYPE_BOUND@102..121 + L_PAREN@102..103 "(" + FOR_TYPE@103..120 + FOR_KW@103..106 "for" + GENERIC_PARAM_LIST@106..110 + L_ANGLE@106..107 "<" + LIFETIME_PARAM@107..109 + LIFETIME@107..109 "\'a" + R_ANGLE@109..110 ">" + WHITESPACE@110..111 " " + PATH_TYPE@111..120 + PATH@111..120 + PATH_SEGMENT@111..120 + NAME_REF@111..116 + IDENT@111..116 "Trait" + GENERIC_ARG_LIST@116..120 + L_ANGLE@116..117 "<" + LIFETIME_ARG@117..119 + LIFETIME@117..119 "\'a" + R_ANGLE@119..120 ">" + R_PAREN@120..121 ")" + EXPR_STMT@121..123 + ERROR@121..122 + R_ANGLE@121..122 ">" + SEMICOLON@122..123 ";" + WHITESPACE@123..128 "\n " + LET_STMT@128..141 + LET_KW@128..131 "let" + WHITESPACE@131..132 " " + WILDCARD_PAT@132..133 + UNDERSCORE@132..133 "_" + COLON@133..134 ":" + WHITESPACE@134..135 " " + PATH_TYPE@135..141 + PATH@135..141 + PATH_SEGMENT@135..141 + NAME_REF@135..138 + IDENT@135..138 "Box" + GENERIC_ARG_LIST@138..141 + L_ANGLE@138..139 "<" + TYPE_ARG@139..141 + PAREN_TYPE@139..141 + L_PAREN@139..140 "(" + ERROR@140..141 + QUESTION@140..141 "?" + EXPR_STMT@141..146 + PATH_EXPR@141..146 + PATH@141..146 + PATH_SEGMENT@141..146 + NAME_REF@141..146 + IDENT@141..146 "Sized" + EXPR_STMT@146..147 + ERROR@146..147 + R_PAREN@146..147 ")" + WHITESPACE@147..148 " " + EXPR_STMT@148..149 + ERROR@148..149 + PLUS@148..149 "+" + WHITESPACE@149..150 " " + EXPR_STMT@150..180 + TUPLE_EXPR@150..180 + L_PAREN@150..151 "(" + FOR_EXPR@151..180 + FOR_KW@151..154 "for" + PATH_PAT@154..158 + PATH@154..158 + PATH_SEGMENT@154..158 + L_ANGLE@154..155 "<" + ERROR@155..157 + LIFETIME@155..157 "\'a" + R_ANGLE@157..158 ">" + WHITESPACE@158..159 " " + BIN_EXPR@159..180 + BIN_EXPR@159..178 + BIN_EXPR@159..169 + BIN_EXPR@159..167 + PATH_EXPR@159..164 + PATH@159..164 + PATH_SEGMENT@159..164 + NAME_REF@159..164 + IDENT@159..164 "Trait" + L_ANGLE@164..165 "<" + ERROR@165..167 + LIFETIME@165..167 "\'a" + R_ANGLE@167..168 ">" + ERROR@168..169 + R_PAREN@168..169 ")" + WHITESPACE@169..170 " " + PLUS@170..171 "+" + WHITESPACE@171..172 " " + PAREN_EXPR@172..178 + L_PAREN@172..173 "(" + PATH_EXPR@173..177 + PATH@173..177 + PATH_SEGMENT@173..177 + NAME_REF@173..177 + IDENT@173..177 "Copy" + R_PAREN@177..178 ")" + R_ANGLE@178..179 ">" + ERROR@179..180 + SEMICOLON@179..180 ";" + WHITESPACE@180..185 "\n " + LET_STMT@185..235 + LET_KW@185..188 "let" + WHITESPACE@188..189 " " + WILDCARD_PAT@189..190 + UNDERSCORE@189..190 "_" + COLON@190..191 ":" + WHITESPACE@191..192 " " + DYN_TRAIT_TYPE@192..235 + TYPE_BOUND_LIST@192..235 + TYPE_BOUND@192..215 + PATH_TYPE@192..215 + PATH@192..215 + PATH_SEGMENT@192..215 + NAME_REF@192..195 + IDENT@192..195 "Box" + GENERIC_ARG_LIST@195..215 + L_ANGLE@195..196 "<" + TYPE_ARG@196..215 + PAREN_TYPE@196..215 + L_PAREN@196..197 "(" + FOR_TYPE@197..214 + FOR_KW@197..200 "for" + GENERIC_PARAM_LIST@200..204 + L_ANGLE@200..201 "<" + LIFETIME_PARAM@201..203 + LIFETIME@201..203 "\'a" + R_ANGLE@203..204 ">" + WHITESPACE@204..205 " " + PATH_TYPE@205..214 + PATH@205..214 + PATH_SEGMENT@205..214 + NAME_REF@205..210 + IDENT@205..210 "Trait" + GENERIC_ARG_LIST@210..214 + L_ANGLE@210..211 "<" + LIFETIME_ARG@211..213 + LIFETIME@211..213 "\'a" + R_ANGLE@213..214 ">" + R_PAREN@214..215 ")" + WHITESPACE@215..216 " " + PLUS@216..217 "+" + WHITESPACE@217..218 " " + TYPE_BOUND@218..224 + L_PAREN@218..219 "(" + PATH_TYPE@219..223 + PATH@219..223 + PATH_SEGMENT@219..223 + NAME_REF@219..223 + IDENT@219..223 "Copy" + R_PAREN@223..224 ")" + WHITESPACE@224..225 " " + PLUS@225..226 "+" + WHITESPACE@226..227 " " + TYPE_BOUND@227..235 + L_PAREN@227..228 "(" + QUESTION@228..229 "?" + PATH_TYPE@229..234 + PATH@229..234 + PATH_SEGMENT@229..234 + NAME_REF@229..234 + IDENT@229..234 "Sized" + R_PAREN@234..235 ")" + EXPR_STMT@235..237 + ERROR@235..236 + R_ANGLE@235..236 ">" + SEMICOLON@236..237 ";" + WHITESPACE@237..238 "\n" + R_CURLY@238..239 "}" + WHITESPACE@239..240 "\n" +error 88..88: expected COMMA +error 88..88: expected R_ANGLE +error 121..121: expected SEMICOLON +error 121..121: expected expression +error 140..140: expected type +error 141..141: expected R_PAREN +error 141..141: expected COMMA +error 141..141: expected R_ANGLE +error 141..141: expected SEMICOLON +error 146..146: expected SEMICOLON +error 146..146: expected expression +error 147..147: expected SEMICOLON +error 148..148: expected expression +error 149..149: expected SEMICOLON +error 155..155: expected type +error 158..158: expected IN_KW +error 165..165: expected expression +error 168..168: expected expression +error 179..179: expected expression +error 180..180: expected a block +error 180..180: expected COMMA +error 180..180: expected expression +error 180..180: expected R_PAREN +error 180..180: expected SEMICOLON +error 215..215: expected COMMA +error 215..215: expected R_ANGLE +error 235..235: expected SEMICOLON +error 235..235: expected expression diff --git a/crates/syntax/test_data/parser/err/0024_many_type_parens.rs b/crates/syntax/test_data/parser/err/0024_many_type_parens.rs new file mode 100644 index 00000000000..6c2e95c0296 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0024_many_type_parens.rs @@ -0,0 +1,7 @@ +fn f Trait<'a>)>() {} + +fn main() { + let _: Box<(Copy) + (?Sized) + (for<'a> Trait<'a>)>; + let _: Box<(?Sized) + (for<'a> Trait<'a>) + (Copy)>; + let _: Box<(for<'a> Trait<'a>) + (Copy) + (?Sized)>; +} diff --git a/crates/syntax/test_data/parser/err/0025_nope.rast b/crates/syntax/test_data/parser/err/0025_nope.rast new file mode 100644 index 00000000000..83fc9fe776c --- /dev/null +++ b/crates/syntax/test_data/parser/err/0025_nope.rast @@ -0,0 +1,202 @@ +SOURCE_FILE@0..575 + FN@0..574 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..574 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + ENUM@16..152 + ENUM_KW@16..20 "enum" + WHITESPACE@20..21 " " + NAME@21..25 + IDENT@21..25 "Test" + WHITESPACE@25..26 " " + VARIANT_LIST@26..152 + L_CURLY@26..27 "{" + WHITESPACE@27..36 "\n " + VARIANT@36..40 + NAME@36..40 + IDENT@36..40 "Var1" + COMMA@40..41 "," + WHITESPACE@41..50 "\n " + VARIANT@50..62 + NAME@50..54 + IDENT@50..54 "Var2" + TUPLE_FIELD_LIST@54..62 + L_PAREN@54..55 "(" + TUPLE_FIELD@55..61 + PATH_TYPE@55..61 + PATH@55..61 + PATH_SEGMENT@55..61 + NAME_REF@55..61 + IDENT@55..61 "String" + R_PAREN@61..62 ")" + COMMA@62..63 "," + WHITESPACE@63..72 "\n " + VARIANT@72..145 + NAME@72..76 + IDENT@72..76 "Var3" + WHITESPACE@76..77 " " + RECORD_FIELD_LIST@77..145 + L_CURLY@77..78 "{" + WHITESPACE@78..91 "\n " + RECORD_FIELD@91..95 + NAME@91..94 + IDENT@91..94 "abc" + COLON@94..95 ":" + WHITESPACE@95..96 " " + ERROR@96..98 + L_CURLY@96..97 "{" + R_CURLY@97..98 "}" + ERROR@98..99 + COMMA@98..99 "," + WHITESPACE@99..100 " " + COMMENT@100..135 "//~ ERROR: expected t ..." + WHITESPACE@135..144 "\n " + R_CURLY@144..145 "}" + COMMA@145..146 "," + WHITESPACE@146..151 "\n " + R_CURLY@151..152 "}" + WHITESPACE@152..158 "\n\n " + COMMENT@158..171 "// recover..." + WHITESPACE@171..176 "\n " + LET_STMT@176..186 + LET_KW@176..179 "let" + WHITESPACE@179..180 " " + IDENT_PAT@180..181 + NAME@180..181 + IDENT@180..181 "a" + WHITESPACE@181..182 " " + EQ@182..183 "=" + WHITESPACE@183..184 " " + LITERAL@184..185 + INT_NUMBER@184..185 "1" + SEMICOLON@185..186 ";" + WHITESPACE@186..191 "\n " + ENUM@191..223 + ENUM_KW@191..195 "enum" + WHITESPACE@195..196 " " + NAME@196..201 + IDENT@196..201 "Test2" + WHITESPACE@201..202 " " + VARIANT_LIST@202..223 + L_CURLY@202..203 "{" + WHITESPACE@203..212 "\n " + VARIANT@212..216 + NAME@212..216 + IDENT@212..216 "Fine" + COMMA@216..217 "," + WHITESPACE@217..222 "\n " + R_CURLY@222..223 "}" + WHITESPACE@223..229 "\n\n " + ENUM@229..300 + ENUM_KW@229..233 "enum" + WHITESPACE@233..234 " " + NAME@234..239 + IDENT@234..239 "Test3" + WHITESPACE@239..240 " " + VARIANT_LIST@240..300 + L_CURLY@240..241 "{" + WHITESPACE@241..250 "\n " + VARIANT@250..293 + NAME@250..259 + IDENT@250..259 "StillFine" + WHITESPACE@259..260 " " + RECORD_FIELD_LIST@260..293 + L_CURLY@260..261 "{" + WHITESPACE@261..274 "\n " + RECORD_FIELD@274..282 + NAME@274..277 + IDENT@274..277 "def" + COLON@277..278 ":" + WHITESPACE@278..279 " " + PATH_TYPE@279..282 + PATH@279..282 + PATH_SEGMENT@279..282 + NAME_REF@279..282 + IDENT@279..282 "i32" + COMMA@282..283 "," + WHITESPACE@283..292 "\n " + R_CURLY@292..293 "}" + COMMA@293..294 "," + WHITESPACE@294..299 "\n " + R_CURLY@299..300 "}" + WHITESPACE@300..306 "\n\n " + EXPR_STMT@306..459 + BLOCK_EXPR@306..459 + L_CURLY@306..307 "{" + WHITESPACE@307..316 "\n " + ENUM@316..453 + COMMENT@316..329 "// fail again" + WHITESPACE@329..338 "\n " + ENUM_KW@338..342 "enum" + WHITESPACE@342..343 " " + NAME@343..348 + IDENT@343..348 "Test4" + WHITESPACE@348..349 " " + VARIANT_LIST@349..453 + L_CURLY@349..350 "{" + WHITESPACE@350..363 "\n " + VARIANT@363..372 + NAME@363..367 + IDENT@363..367 "Nope" + TUPLE_FIELD_LIST@367..372 + L_PAREN@367..368 "(" + TUPLE_FIELD@368..371 + PATH_TYPE@368..371 + PATH@368..371 + PATH_SEGMENT@368..371 + NAME_REF@368..371 + IDENT@368..371 "i32" + WHITESPACE@371..372 " " + ERROR@372..372 + ERROR@372..374 + L_CURLY@372..373 "{" + R_CURLY@373..374 "}" + ERROR@374..375 + R_PAREN@374..375 ")" + WHITESPACE@375..376 " " + COMMENT@376..396 "//~ ERROR: found `{`" + WHITESPACE@396..422 "\n ..." + COMMENT@422..443 "//~^ ERROR: found `{`" + WHITESPACE@443..452 "\n " + R_CURLY@452..453 "}" + WHITESPACE@453..458 "\n " + R_CURLY@458..459 "}" + WHITESPACE@459..464 "\n " + COMMENT@464..486 "// still recover later" + WHITESPACE@486..491 "\n " + LET_STMT@491..510 + LET_KW@491..494 "let" + WHITESPACE@494..495 " " + IDENT_PAT@495..505 + NAME@495..505 + IDENT@495..505 "bad_syntax" + WHITESPACE@505..506 " " + EQ@506..507 "=" + WHITESPACE@507..508 " " + ERROR@508..509 + UNDERSCORE@508..509 "_" + SEMICOLON@509..510 ";" + WHITESPACE@510..511 " " + COMMENT@511..572 "//~ ERROR: expected e ..." + WHITESPACE@572..573 "\n" + R_CURLY@573..574 "}" + WHITESPACE@574..575 "\n" +error 95..95: expected type +error 95..95: expected COMMA +error 96..96: expected field +error 98..98: expected field declaration +error 371..371: expected COMMA +error 372..372: expected a type +error 372..372: expected R_PAREN +error 372..372: expected COMMA +error 372..372: expected enum variant +error 374..374: expected enum variant +error 508..508: expected expression diff --git a/crates/syntax/test_data/parser/err/0025_nope.rs b/crates/syntax/test_data/parser/err/0025_nope.rs new file mode 100644 index 00000000000..28726ed5138 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0025_nope.rs @@ -0,0 +1,31 @@ +fn main() { + enum Test { + Var1, + Var2(String), + Var3 { + abc: {}, //~ ERROR: expected type, found `{` + }, + } + + // recover... + let a = 1; + enum Test2 { + Fine, + } + + enum Test3 { + StillFine { + def: i32, + }, + } + + { + // fail again + enum Test4 { + Nope(i32 {}) //~ ERROR: found `{` + //~^ ERROR: found `{` + } + } + // still recover later + let bad_syntax = _; //~ ERROR: expected expression, found reserved identifier `_` +} diff --git a/crates/syntax/test_data/parser/err/0026_imp_recovery.rast b/crates/syntax/test_data/parser/err/0026_imp_recovery.rast new file mode 100644 index 00000000000..1b08c834eb8 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0026_imp_recovery.rast @@ -0,0 +1,49 @@ +SOURCE_FILE@0..38 + IMPL@0..14 + IMPL_KW@0..4 "impl" + GENERIC_PARAM_LIST@4..14 + L_ANGLE@4..5 "<" + TYPE_PARAM@5..13 + NAME@5..6 + IDENT@5..6 "T" + COLON@6..7 ":" + WHITESPACE@7..8 " " + TYPE_BOUND_LIST@8..13 + TYPE_BOUND@8..13 + PATH_TYPE@8..13 + PATH@8..13 + PATH_SEGMENT@8..13 + NAME_REF@8..13 + IDENT@8..13 "Clone" + R_ANGLE@13..14 ">" + WHITESPACE@14..15 "\n" + IMPL@15..37 + IMPL_KW@15..19 "impl" + GENERIC_PARAM_LIST@19..22 + L_ANGLE@19..20 "<" + TYPE_PARAM@20..21 + NAME@20..21 + IDENT@20..21 "T" + R_ANGLE@21..22 ">" + WHITESPACE@22..23 " " + PATH_TYPE@23..34 + PATH@23..34 + PATH_SEGMENT@23..34 + NAME_REF@23..31 + IDENT@23..31 "OnceCell" + GENERIC_ARG_LIST@31..34 + L_ANGLE@31..32 "<" + TYPE_ARG@32..33 + PATH_TYPE@32..33 + PATH@32..33 + PATH_SEGMENT@32..33 + NAME_REF@32..33 + IDENT@32..33 "T" + R_ANGLE@33..34 ">" + WHITESPACE@34..35 " " + ASSOC_ITEM_LIST@35..37 + L_CURLY@35..36 "{" + R_CURLY@36..37 "}" + WHITESPACE@37..38 "\n" +error 14..14: expected trait or type +error 14..14: expected `{` diff --git a/crates/syntax/test_data/parser/err/0026_imp_recovery.rs b/crates/syntax/test_data/parser/err/0026_imp_recovery.rs new file mode 100644 index 00000000000..829ca1c4be9 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0026_imp_recovery.rs @@ -0,0 +1,2 @@ +impl +impl OnceCell {} diff --git a/crates/syntax/test_data/parser/err/0027_incomplere_where_for.rast b/crates/syntax/test_data/parser/err/0027_incomplere_where_for.rast new file mode 100644 index 00000000000..a8e42e6eaae --- /dev/null +++ b/crates/syntax/test_data/parser/err/0027_incomplere_where_for.rast @@ -0,0 +1,27 @@ +SOURCE_FILE@0..30 + FN@0..29 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..13 "\n " + WHERE_CLAUSE@13..26 + WHERE_KW@13..18 "where" + WHITESPACE@18..19 " " + WHERE_PRED@19..26 + FOR_KW@19..22 "for" + GENERIC_PARAM_LIST@22..26 + L_ANGLE@22..23 "<" + LIFETIME_PARAM@23..25 + LIFETIME@23..25 "\'a" + R_ANGLE@25..26 ">" + WHITESPACE@26..27 "\n" + BLOCK_EXPR@27..29 + L_CURLY@27..28 "{" + R_CURLY@28..29 "}" + WHITESPACE@29..30 "\n" +error 26..26: expected type +error 26..26: expected colon diff --git a/crates/syntax/test_data/parser/err/0027_incomplere_where_for.rs b/crates/syntax/test_data/parser/err/0027_incomplere_where_for.rs new file mode 100644 index 00000000000..2792c20843a --- /dev/null +++ b/crates/syntax/test_data/parser/err/0027_incomplere_where_for.rs @@ -0,0 +1,3 @@ +fn foo() + where for<'a> +{} diff --git a/crates/syntax/test_data/parser/err/0029_field_completion.rast b/crates/syntax/test_data/parser/err/0029_field_completion.rast new file mode 100644 index 00000000000..c6402cdd847 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0029_field_completion.rast @@ -0,0 +1,35 @@ +SOURCE_FILE@0..24 + FN@0..23 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..12 + L_PAREN@6..7 "(" + PARAM@7..11 + IDENT_PAT@7..8 + NAME@7..8 + IDENT@7..8 "a" + COLON@8..9 ":" + WHITESPACE@9..10 " " + PATH_TYPE@10..11 + PATH@10..11 + PATH_SEGMENT@10..11 + NAME_REF@10..11 + IDENT@10..11 "A" + R_PAREN@11..12 ")" + WHITESPACE@12..13 " " + BLOCK_EXPR@13..23 + L_CURLY@13..14 "{" + WHITESPACE@14..19 "\n " + FIELD_EXPR@19..21 + PATH_EXPR@19..20 + PATH@19..20 + PATH_SEGMENT@19..20 + NAME_REF@19..20 + IDENT@19..20 "a" + DOT@20..21 "." + WHITESPACE@21..22 "\n" + R_CURLY@22..23 "}" + WHITESPACE@23..24 "\n" +error 21..21: expected field name or number diff --git a/crates/syntax/test_data/parser/err/0029_field_completion.rs b/crates/syntax/test_data/parser/err/0029_field_completion.rs new file mode 100644 index 00000000000..a7cdc17bb11 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0029_field_completion.rs @@ -0,0 +1,3 @@ +fn foo(a: A) { + a. +} diff --git a/crates/syntax/test_data/parser/err/0031_block_inner_attrs.rast b/crates/syntax/test_data/parser/err/0031_block_inner_attrs.rast new file mode 100644 index 00000000000..a443b37db17 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0031_block_inner_attrs.rast @@ -0,0 +1,121 @@ +SOURCE_FILE@0..350 + FN@0..349 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..8 + IDENT@3..8 "block" + PARAM_LIST@8..10 + L_PAREN@8..9 "(" + R_PAREN@9..10 ")" + WHITESPACE@10..11 " " + BLOCK_EXPR@11..349 + L_CURLY@11..12 "{" + WHITESPACE@12..17 "\n " + LET_STMT@17..129 + LET_KW@17..20 "let" + WHITESPACE@20..21 " " + IDENT_PAT@21..26 + NAME@21..26 + IDENT@21..26 "inner" + WHITESPACE@26..27 " " + EQ@27..28 "=" + WHITESPACE@28..29 " " + BLOCK_EXPR@29..128 + L_CURLY@29..30 "{" + WHITESPACE@30..39 "\n " + ATTR@39..83 + POUND@39..40 "#" + BANG@40..41 "!" + L_BRACK@41..42 "[" + PATH@42..45 + PATH_SEGMENT@42..45 + NAME_REF@42..45 + IDENT@42..45 "doc" + TOKEN_TREE@45..82 + L_PAREN@45..46 "(" + STRING@46..81 "\"Inner attributes not ..." + R_PAREN@81..82 ")" + R_BRACK@82..83 "]" + WHITESPACE@83..92 "\n " + COMMENT@92..122 "//! Nor are ModuleDoc ..." + WHITESPACE@122..127 "\n " + R_CURLY@127..128 "}" + SEMICOLON@128..129 ";" + WHITESPACE@129..134 "\n " + EXPR_STMT@134..257 + IF_EXPR@134..257 + IF_KW@134..136 "if" + WHITESPACE@136..137 " " + CONDITION@137..141 + LITERAL@137..141 + TRUE_KW@137..141 "true" + WHITESPACE@141..142 " " + BLOCK_EXPR@142..257 + L_CURLY@142..143 "{" + WHITESPACE@143..152 "\n " + ATTR@152..171 + POUND@152..153 "#" + BANG@153..154 "!" + L_BRACK@154..155 "[" + PATH@155..158 + PATH_SEGMENT@155..158 + NAME_REF@155..158 + IDENT@155..158 "doc" + TOKEN_TREE@158..170 + L_PAREN@158..159 "(" + STRING@159..169 "\"Nor here\"" + R_PAREN@169..170 ")" + R_BRACK@170..171 "]" + WHITESPACE@171..180 "\n " + ATTR@180..212 + POUND@180..181 "#" + BANG@181..182 "!" + L_BRACK@182..183 "[" + PATH@183..186 + PATH_SEGMENT@183..186 + NAME_REF@183..186 + IDENT@183..186 "doc" + TOKEN_TREE@186..211 + L_PAREN@186..187 "(" + STRING@187..210 "\"We error on each attr\"" + R_PAREN@210..211 ")" + R_BRACK@211..212 "]" + WHITESPACE@212..221 "\n " + COMMENT@221..251 "//! Nor are ModuleDoc ..." + WHITESPACE@251..256 "\n " + R_CURLY@256..257 "}" + WHITESPACE@257..262 "\n " + WHILE_EXPR@262..347 + WHILE_KW@262..267 "while" + WHITESPACE@267..268 " " + CONDITION@268..272 + LITERAL@268..272 + TRUE_KW@268..272 "true" + WHITESPACE@272..273 " " + BLOCK_EXPR@273..347 + L_CURLY@273..274 "{" + WHITESPACE@274..283 "\n " + ATTR@283..302 + POUND@283..284 "#" + BANG@284..285 "!" + L_BRACK@285..286 "[" + PATH@286..289 + PATH_SEGMENT@286..289 + NAME_REF@286..289 + IDENT@286..289 "doc" + TOKEN_TREE@289..301 + L_PAREN@289..290 "(" + STRING@290..300 "\"Nor here\"" + R_PAREN@300..301 ")" + R_BRACK@301..302 "]" + WHITESPACE@302..311 "\n " + COMMENT@311..341 "//! Nor are ModuleDoc ..." + WHITESPACE@341..346 "\n " + R_CURLY@346..347 "}" + WHITESPACE@347..348 "\n" + R_CURLY@348..349 "}" + WHITESPACE@349..350 "\n" +error 39..83: A block in this position cannot accept inner attributes +error 152..171: A block in this position cannot accept inner attributes +error 180..212: A block in this position cannot accept inner attributes +error 283..302: A block in this position cannot accept inner attributes diff --git a/crates/syntax/test_data/parser/err/0031_block_inner_attrs.rs b/crates/syntax/test_data/parser/err/0031_block_inner_attrs.rs new file mode 100644 index 00000000000..6a04f2d0aae --- /dev/null +++ b/crates/syntax/test_data/parser/err/0031_block_inner_attrs.rs @@ -0,0 +1,15 @@ +fn block() { + let inner = { + #![doc("Inner attributes not allowed here")] + //! Nor are ModuleDoc comments + }; + if true { + #![doc("Nor here")] + #![doc("We error on each attr")] + //! Nor are ModuleDoc comments + } + while true { + #![doc("Nor here")] + //! Nor are ModuleDoc comments + } +} diff --git a/crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast b/crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast new file mode 100644 index 00000000000..672dd054ac5 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rast @@ -0,0 +1,203 @@ +SOURCE_FILE@0..293 + FN@0..292 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..292 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..101 + MATCH_EXPR@15..101 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..101 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + MATCH_ARM@34..41 + WILDCARD_PAT@34..35 + UNDERSCORE@34..35 "_" + WHITESPACE@35..36 " " + FAT_ARROW@36..38 "=>" + WHITESPACE@38..39 " " + TUPLE_EXPR@39..41 + L_PAREN@39..40 "(" + R_PAREN@40..41 ")" + COMMA@41..42 "," + WHITESPACE@42..51 "\n " + MATCH_ARM@51..78 + ATTR@51..52 + POUND@51..52 "#" + ERROR@52..53 + BANG@52..53 "!" + ARRAY_EXPR@53..78 + L_BRACK@53..54 "[" + CALL_EXPR@54..77 + PATH_EXPR@54..57 + PATH@54..57 + PATH_SEGMENT@54..57 + NAME_REF@54..57 + IDENT@54..57 "doc" + ARG_LIST@57..77 + L_PAREN@57..58 "(" + LITERAL@58..76 + STRING@58..76 "\"Not allowed here\"" + R_PAREN@76..77 ")" + R_BRACK@77..78 "]" + WHITESPACE@78..87 "\n " + MATCH_ARM@87..94 + WILDCARD_PAT@87..88 + UNDERSCORE@87..88 "_" + WHITESPACE@88..89 " " + FAT_ARROW@89..91 "=>" + WHITESPACE@91..92 " " + TUPLE_EXPR@92..94 + L_PAREN@92..93 "(" + R_PAREN@93..94 ")" + COMMA@94..95 "," + WHITESPACE@95..100 "\n " + R_CURLY@100..101 "}" + WHITESPACE@101..107 "\n\n " + EXPR_STMT@107..185 + MATCH_EXPR@107..185 + MATCH_KW@107..112 "match" + WHITESPACE@112..113 " " + TUPLE_EXPR@113..115 + L_PAREN@113..114 "(" + R_PAREN@114..115 ")" + WHITESPACE@115..116 " " + MATCH_ARM_LIST@116..185 + L_CURLY@116..117 "{" + WHITESPACE@117..126 "\n " + MATCH_ARM@126..133 + WILDCARD_PAT@126..127 + UNDERSCORE@126..127 "_" + WHITESPACE@127..128 " " + FAT_ARROW@128..130 "=>" + WHITESPACE@130..131 " " + TUPLE_EXPR@131..133 + L_PAREN@131..132 "(" + R_PAREN@132..133 ")" + COMMA@133..134 "," + WHITESPACE@134..143 "\n " + MATCH_ARM@143..150 + WILDCARD_PAT@143..144 + UNDERSCORE@143..144 "_" + WHITESPACE@144..145 " " + FAT_ARROW@145..147 "=>" + WHITESPACE@147..148 " " + TUPLE_EXPR@148..150 + L_PAREN@148..149 "(" + R_PAREN@149..150 ")" + COMMA@150..151 "," + WHITESPACE@151..160 "\n " + MATCH_ARM@160..179 + ATTR@160..161 + POUND@160..161 "#" + ERROR@161..162 + BANG@161..162 "!" + ARRAY_EXPR@162..179 + L_BRACK@162..163 "[" + CALL_EXPR@163..178 + PATH_EXPR@163..166 + PATH@163..166 + PATH_SEGMENT@163..166 + NAME_REF@163..166 + IDENT@163..166 "doc" + ARG_LIST@166..178 + L_PAREN@166..167 "(" + LITERAL@167..177 + STRING@167..177 "\"Nor here\"" + R_PAREN@177..178 ")" + R_BRACK@178..179 "]" + WHITESPACE@179..184 "\n " + R_CURLY@184..185 "}" + WHITESPACE@185..191 "\n\n " + MATCH_EXPR@191..290 + MATCH_KW@191..196 "match" + WHITESPACE@196..197 " " + TUPLE_EXPR@197..199 + L_PAREN@197..198 "(" + R_PAREN@198..199 ")" + WHITESPACE@199..200 " " + MATCH_ARM_LIST@200..290 + L_CURLY@200..201 "{" + WHITESPACE@201..210 "\n " + MATCH_ARM@210..250 + ATTR@210..222 + POUND@210..211 "#" + L_BRACK@211..212 "[" + PATH@212..215 + PATH_SEGMENT@212..215 + NAME_REF@212..215 + IDENT@212..215 "cfg" + TOKEN_TREE@215..221 + L_PAREN@215..216 "(" + IDENT@216..220 "test" + R_PAREN@220..221 ")" + R_BRACK@221..222 "]" + WHITESPACE@222..231 "\n " + ATTR@231..232 + POUND@231..232 "#" + ERROR@232..233 + BANG@232..233 "!" + ARRAY_EXPR@233..250 + L_BRACK@233..234 "[" + CALL_EXPR@234..249 + PATH_EXPR@234..237 + PATH@234..237 + PATH_SEGMENT@234..237 + NAME_REF@234..237 + IDENT@234..237 "doc" + ARG_LIST@237..249 + L_PAREN@237..238 "(" + LITERAL@238..248 + STRING@238..248 "\"Nor here\"" + R_PAREN@248..249 ")" + R_BRACK@249..250 "]" + WHITESPACE@250..259 "\n " + MATCH_ARM@259..266 + WILDCARD_PAT@259..260 + UNDERSCORE@259..260 "_" + WHITESPACE@260..261 " " + FAT_ARROW@261..263 "=>" + WHITESPACE@263..264 " " + TUPLE_EXPR@264..266 + L_PAREN@264..265 "(" + R_PAREN@265..266 ")" + COMMA@266..267 "," + WHITESPACE@267..276 "\n " + MATCH_ARM@276..283 + WILDCARD_PAT@276..277 + UNDERSCORE@276..277 "_" + WHITESPACE@277..278 " " + FAT_ARROW@278..280 "=>" + WHITESPACE@280..281 " " + TUPLE_EXPR@281..283 + L_PAREN@281..282 "(" + R_PAREN@282..283 ")" + COMMA@283..284 "," + WHITESPACE@284..289 "\n " + R_CURLY@289..290 "}" + WHITESPACE@290..291 "\n" + R_CURLY@291..292 "}" + WHITESPACE@292..293 "\n" +error 52..52: expected `[` +error 52..52: expected pattern +error 53..53: expected FAT_ARROW +error 78..78: expected COMMA +error 161..161: expected `[` +error 161..161: expected pattern +error 162..162: expected FAT_ARROW +error 232..232: expected `[` +error 232..232: expected pattern +error 233..233: expected FAT_ARROW +error 250..250: expected COMMA diff --git a/crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rs b/crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rs new file mode 100644 index 00000000000..06aa4777043 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0032_match_arms_inner_attrs.rs @@ -0,0 +1,20 @@ +fn foo() { + match () { + _ => (), + #![doc("Not allowed here")] + _ => (), + } + + match () { + _ => (), + _ => (), + #![doc("Nor here")] + } + + match () { + #[cfg(test)] + #![doc("Nor here")] + _ => (), + _ => (), + } +} diff --git a/crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast b/crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast new file mode 100644 index 00000000000..33bb085e918 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rast @@ -0,0 +1,66 @@ +SOURCE_FILE@0..89 + FN@0..88 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..88 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + MATCH_EXPR@15..86 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..86 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + MATCH_ARM@34..41 + WILDCARD_PAT@34..35 + UNDERSCORE@34..35 "_" + WHITESPACE@35..36 " " + FAT_ARROW@36..38 "=>" + WHITESPACE@38..39 " " + TUPLE_EXPR@39..41 + L_PAREN@39..40 "(" + R_PAREN@40..41 ")" + COMMA@41..42 "," + WHITESPACE@42..51 "\n " + MATCH_ARM@51..58 + WILDCARD_PAT@51..52 + UNDERSCORE@51..52 "_" + WHITESPACE@52..53 " " + FAT_ARROW@53..55 "=>" + WHITESPACE@55..56 " " + TUPLE_EXPR@56..58 + L_PAREN@56..57 "(" + R_PAREN@57..58 ")" + COMMA@58..59 "," + WHITESPACE@59..68 "\n " + MATCH_ARM@68..80 + ATTR@68..80 + POUND@68..69 "#" + L_BRACK@69..70 "[" + PATH@70..73 + PATH_SEGMENT@70..73 + NAME_REF@70..73 + IDENT@70..73 "cfg" + TOKEN_TREE@73..79 + L_PAREN@73..74 "(" + IDENT@74..78 "test" + R_PAREN@78..79 ")" + R_BRACK@79..80 "]" + WHITESPACE@80..85 "\n " + R_CURLY@85..86 "}" + WHITESPACE@86..87 "\n" + R_CURLY@87..88 "}" + WHITESPACE@88..89 "\n" +error 80..80: expected pattern +error 80..80: expected FAT_ARROW +error 80..80: expected expression diff --git a/crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rs b/crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rs new file mode 100644 index 00000000000..4635222da28 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0033_match_arms_outer_attrs.rs @@ -0,0 +1,7 @@ +fn foo() { + match () { + _ => (), + _ => (), + #[cfg(test)] + } +} diff --git a/crates/syntax/test_data/parser/err/0034_bad_box_pattern.rast b/crates/syntax/test_data/parser/err/0034_bad_box_pattern.rast new file mode 100644 index 00000000000..d9d49bfb5ff --- /dev/null +++ b/crates/syntax/test_data/parser/err/0034_bad_box_pattern.rast @@ -0,0 +1,95 @@ +SOURCE_FILE@0..91 + FN@0..89 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..89 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..27 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + IDENT_PAT@20..27 + REF_KW@20..23 "ref" + WHITESPACE@23..24 " " + ERROR@24..27 + BOX_KW@24..27 "box" + WHITESPACE@27..28 " " + EXPR_STMT@28..35 + BIN_EXPR@28..34 + PATH_EXPR@28..29 + PATH@28..29 + PATH_SEGMENT@28..29 + NAME_REF@28..29 + IDENT@28..29 "i" + WHITESPACE@29..30 " " + EQ@30..31 "=" + WHITESPACE@31..32 " " + TUPLE_EXPR@32..34 + L_PAREN@32..33 "(" + R_PAREN@33..34 ")" + SEMICOLON@34..35 ";" + WHITESPACE@35..40 "\n " + LET_STMT@40..51 + LET_KW@40..43 "let" + WHITESPACE@43..44 " " + IDENT_PAT@44..51 + MUT_KW@44..47 "mut" + WHITESPACE@47..48 " " + ERROR@48..51 + BOX_KW@48..51 "box" + WHITESPACE@51..52 " " + EXPR_STMT@52..59 + BIN_EXPR@52..58 + PATH_EXPR@52..53 + PATH@52..53 + PATH_SEGMENT@52..53 + NAME_REF@52..53 + IDENT@52..53 "i" + WHITESPACE@53..54 " " + EQ@54..55 "=" + WHITESPACE@55..56 " " + TUPLE_EXPR@56..58 + L_PAREN@56..57 "(" + R_PAREN@57..58 ")" + SEMICOLON@58..59 ";" + WHITESPACE@59..64 "\n " + LET_STMT@64..79 + LET_KW@64..67 "let" + WHITESPACE@67..68 " " + IDENT_PAT@68..79 + REF_KW@68..71 "ref" + WHITESPACE@71..72 " " + MUT_KW@72..75 "mut" + WHITESPACE@75..76 " " + ERROR@76..79 + BOX_KW@76..79 "box" + WHITESPACE@79..80 " " + EXPR_STMT@80..87 + BIN_EXPR@80..86 + PATH_EXPR@80..81 + PATH@80..81 + PATH_SEGMENT@80..81 + NAME_REF@80..81 + IDENT@80..81 "i" + WHITESPACE@81..82 " " + EQ@82..83 "=" + WHITESPACE@83..84 " " + TUPLE_EXPR@84..86 + L_PAREN@84..85 "(" + R_PAREN@85..86 ")" + SEMICOLON@86..87 ";" + WHITESPACE@87..88 "\n" + R_CURLY@88..89 "}" + WHITESPACE@89..91 "\n\n" +error 24..24: expected a name +error 27..27: expected SEMICOLON +error 48..48: expected a name +error 51..51: expected SEMICOLON +error 76..76: expected a name +error 79..79: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0034_bad_box_pattern.rs b/crates/syntax/test_data/parser/err/0034_bad_box_pattern.rs new file mode 100644 index 00000000000..d3fa2e468cc --- /dev/null +++ b/crates/syntax/test_data/parser/err/0034_bad_box_pattern.rs @@ -0,0 +1,6 @@ +fn main() { + let ref box i = (); + let mut box i = (); + let ref mut box i = (); +} + diff --git a/crates/syntax/test_data/parser/err/0035_use_recover.rast b/crates/syntax/test_data/parser/err/0035_use_recover.rast new file mode 100644 index 00000000000..2f03709ebad --- /dev/null +++ b/crates/syntax/test_data/parser/err/0035_use_recover.rast @@ -0,0 +1,53 @@ +SOURCE_FILE@0..48 + USE@0..13 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..12 + PATH@4..12 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "foo" + COLON2@7..9 "::" + PATH_SEGMENT@9..12 + NAME_REF@9..12 + IDENT@9..12 "bar" + SEMICOLON@12..13 ";" + WHITESPACE@13..14 "\n" + USE@14..17 + USE_KW@14..17 "use" + WHITESPACE@17..18 "\n" + USE@18..33 + USE_KW@18..21 "use" + WHITESPACE@21..22 " " + USE_TREE@22..32 + PATH@22..32 + PATH@22..27 + PATH_SEGMENT@22..27 + CRATE_KW@22..27 "crate" + COLON2@27..29 "::" + PATH_SEGMENT@29..32 + NAME_REF@29..32 + IDENT@29..32 "baz" + SEMICOLON@32..33 ";" + WHITESPACE@33..34 "\n" + USE@34..37 + USE_KW@34..37 "use" + WHITESPACE@37..38 "\n" + FN@38..47 + FN_KW@38..40 "fn" + WHITESPACE@40..41 " " + NAME@41..42 + IDENT@41..42 "f" + PARAM_LIST@42..44 + L_PAREN@42..43 "(" + R_PAREN@43..44 ")" + WHITESPACE@44..45 " " + BLOCK_EXPR@45..47 + L_CURLY@45..46 "{" + R_CURLY@46..47 "}" + WHITESPACE@47..48 "\n" +error 17..17: expected one of `*`, `::`, `{`, `self`, `super` or an identifier +error 17..17: expected SEMICOLON +error 37..37: expected one of `*`, `::`, `{`, `self`, `super` or an identifier +error 37..37: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0035_use_recover.rs b/crates/syntax/test_data/parser/err/0035_use_recover.rs new file mode 100644 index 00000000000..4a266812628 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0035_use_recover.rs @@ -0,0 +1,5 @@ +use foo::bar; +use +use crate::baz; +use +fn f() {} diff --git a/crates/syntax/test_data/parser/err/0036_partial_use.rast b/crates/syntax/test_data/parser/err/0036_partial_use.rast new file mode 100644 index 00000000000..ef6172f8a1a --- /dev/null +++ b/crates/syntax/test_data/parser/err/0036_partial_use.rast @@ -0,0 +1,51 @@ +SOURCE_FILE@0..37 + USE@0..36 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..36 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "std" + COLON2@7..9 "::" + USE_TREE_LIST@9..36 + L_CURLY@9..10 "{" + USE_TREE@10..22 + PATH@10..22 + PATH@10..15 + PATH_SEGMENT@10..15 + NAME_REF@10..15 + IDENT@10..15 "error" + COLON2@15..17 "::" + PATH_SEGMENT@17..22 + NAME_REF@17..22 + IDENT@17..22 "Error" + ERROR@22..23 + SEMICOLON@22..23 ";" + WHITESPACE@23..24 "\n" + ERROR@24..27 + USE_KW@24..27 "use" + WHITESPACE@27..28 " " + USE_TREE@28..35 + PATH@28..35 + PATH@28..31 + PATH_SEGMENT@28..31 + NAME_REF@28..31 + IDENT@28..31 "std" + COLON2@31..33 "::" + PATH_SEGMENT@33..35 + NAME_REF@33..35 + IDENT@33..35 "io" + ERROR@35..36 + SEMICOLON@35..36 ";" + WHITESPACE@36..37 "\n" +error 22..22: expected COMMA +error 22..22: expected one of `*`, `::`, `{`, `self`, `super` or an identifier +error 23..23: expected COMMA +error 24..24: expected one of `*`, `::`, `{`, `self`, `super` or an identifier +error 27..27: expected COMMA +error 35..35: expected COMMA +error 35..35: expected one of `*`, `::`, `{`, `self`, `super` or an identifier +error 36..36: expected COMMA +error 36..36: expected R_CURLY +error 36..36: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0036_partial_use.rs b/crates/syntax/test_data/parser/err/0036_partial_use.rs new file mode 100644 index 00000000000..d521a5bb2de --- /dev/null +++ b/crates/syntax/test_data/parser/err/0036_partial_use.rs @@ -0,0 +1,2 @@ +use std::{error::Error; +use std::io; diff --git a/crates/syntax/test_data/parser/err/0037_visibility_in_traits.rast b/crates/syntax/test_data/parser/err/0037_visibility_in_traits.rast new file mode 100644 index 00000000000..faf87d6e5cc --- /dev/null +++ b/crates/syntax/test_data/parser/err/0037_visibility_in_traits.rast @@ -0,0 +1,97 @@ +SOURCE_FILE@0..118 + IMPL@0..117 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + FOR_KW@7..10 "for" + WHITESPACE@10..11 " " + TUPLE_TYPE@11..13 + L_PAREN@11..12 "(" + R_PAREN@12..13 ")" + WHITESPACE@13..14 " " + ASSOC_ITEM_LIST@14..117 + L_CURLY@14..15 "{" + WHITESPACE@15..20 "\n " + FN@20..31 + FN_KW@20..22 "fn" + WHITESPACE@22..23 " " + NAME@23..26 + IDENT@23..26 "foo" + PARAM_LIST@26..28 + L_PAREN@26..27 "(" + R_PAREN@27..28 ")" + WHITESPACE@28..29 " " + BLOCK_EXPR@29..31 + L_CURLY@29..30 "{" + R_CURLY@30..31 "}" + WHITESPACE@31..36 "\n " + FN@36..51 + VISIBILITY@36..39 + PUB_KW@36..39 "pub" + WHITESPACE@39..40 " " + FN_KW@40..42 "fn" + WHITESPACE@42..43 " " + NAME@43..46 + IDENT@43..46 "bar" + PARAM_LIST@46..48 + L_PAREN@46..47 "(" + R_PAREN@47..48 ")" + WHITESPACE@48..49 " " + BLOCK_EXPR@49..51 + L_CURLY@49..50 "{" + R_CURLY@50..51 "}" + WHITESPACE@51..56 "\n " + TYPE_ALIAS@56..81 + VISIBILITY@56..66 + PUB_KW@56..59 "pub" + L_PAREN@59..60 "(" + CRATE_KW@60..65 "crate" + R_PAREN@65..66 ")" + WHITESPACE@66..67 " " + TYPE_KW@67..71 "type" + WHITESPACE@71..72 " " + NAME@72..75 + IDENT@72..75 "Baz" + WHITESPACE@75..76 " " + EQ@76..77 "=" + WHITESPACE@77..78 " " + TUPLE_TYPE@78..80 + L_PAREN@78..79 "(" + R_PAREN@79..80 ")" + SEMICOLON@80..81 ";" + WHITESPACE@81..86 "\n " + CONST@86..115 + VISIBILITY@86..96 + PUB_KW@86..89 "pub" + L_PAREN@89..90 "(" + CRATE_KW@90..95 "crate" + R_PAREN@95..96 ")" + WHITESPACE@96..97 " " + CONST_KW@97..102 "const" + WHITESPACE@102..103 " " + NAME@103..104 + IDENT@103..104 "C" + COLON@104..105 ":" + WHITESPACE@105..106 " " + PATH_TYPE@106..109 + PATH@106..109 + PATH_SEGMENT@106..109 + NAME_REF@106..109 + IDENT@106..109 "i32" + WHITESPACE@109..110 " " + EQ@110..111 "=" + WHITESPACE@111..112 " " + LITERAL@112..114 + INT_NUMBER@112..114 "92" + SEMICOLON@114..115 ";" + WHITESPACE@115..116 "\n" + R_CURLY@116..117 "}" + WHITESPACE@117..118 "\n" +error 36..39: Unnecessary visibility qualifier +error 56..66: Unnecessary visibility qualifier +error 86..96: Unnecessary visibility qualifier diff --git a/crates/syntax/test_data/parser/err/0037_visibility_in_traits.rs b/crates/syntax/test_data/parser/err/0037_visibility_in_traits.rs new file mode 100644 index 00000000000..a43e7ef10c1 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0037_visibility_in_traits.rs @@ -0,0 +1,6 @@ +impl T for () { + fn foo() {} + pub fn bar() {} + pub(crate) type Baz = (); + pub(crate) const C: i32 = 92; +} diff --git a/crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rast b/crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rast new file mode 100644 index 00000000000..bed7ad6c332 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rast @@ -0,0 +1,29 @@ +SOURCE_FILE@0..33 + FN@0..32 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..32 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + EXPR_STMT@16..21 + RANGE_EXPR@16..20 + LITERAL@16..17 + INT_NUMBER@16..17 "0" + DOT2EQ@17..20 "..=" + SEMICOLON@20..21 ";" + WHITESPACE@21..26 "\n " + EXPR_STMT@26..30 + RANGE_EXPR@26..29 + DOT2EQ@26..29 "..=" + SEMICOLON@29..30 ";" + WHITESPACE@30..31 "\n" + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" +error 16..20: An inclusive range must have an end expression +error 26..29: An inclusive range must have an end expression diff --git a/crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rs b/crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rs new file mode 100644 index 00000000000..0b4ed7a2bc2 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0038_endless_inclusive_range.rs @@ -0,0 +1,4 @@ +fn main() { + 0..=; + ..=; +} diff --git a/crates/syntax/test_data/parser/err/0039_lambda_recovery.rast b/crates/syntax/test_data/parser/err/0039_lambda_recovery.rast new file mode 100644 index 00000000000..a9c5b70fd3d --- /dev/null +++ b/crates/syntax/test_data/parser/err/0039_lambda_recovery.rast @@ -0,0 +1,82 @@ +SOURCE_FILE@0..83 + FN@0..82 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + RET_TYPE@9..15 + THIN_ARROW@9..11 "->" + WHITESPACE@11..12 " " + PATH_TYPE@12..15 + PATH@12..15 + PATH_SEGMENT@12..15 + NAME_REF@12..15 + IDENT@12..15 "i32" + WHITESPACE@15..16 " " + BLOCK_EXPR@16..82 + L_CURLY@16..17 "{" + WHITESPACE@17..22 "\n " + EXPR_STMT@22..80 + METHOD_CALL_EXPR@22..79 + METHOD_CALL_EXPR@22..57 + METHOD_CALL_EXPR@22..38 + ARRAY_EXPR@22..31 + L_BRACK@22..23 "[" + LITERAL@23..24 + INT_NUMBER@23..24 "1" + COMMA@24..25 "," + WHITESPACE@25..26 " " + LITERAL@26..27 + INT_NUMBER@26..27 "2" + COMMA@27..28 "," + WHITESPACE@28..29 " " + LITERAL@29..30 + INT_NUMBER@29..30 "3" + R_BRACK@30..31 "]" + DOT@31..32 "." + NAME_REF@32..36 + IDENT@32..36 "iter" + ARG_LIST@36..38 + L_PAREN@36..37 "(" + R_PAREN@37..38 ")" + WHITESPACE@38..47 "\n " + DOT@47..48 "." + NAME_REF@48..51 + IDENT@48..51 "map" + ARG_LIST@51..57 + L_PAREN@51..52 "(" + CLOSURE_EXPR@52..56 + PARAM_LIST@52..56 + PIPE@52..53 "|" + PARAM@53..55 + IDENT_PAT@53..55 + NAME@53..55 + IDENT@53..55 "it" + PIPE@55..56 "|" + R_PAREN@56..57 ")" + WHITESPACE@57..66 "\n " + DOT@66..67 "." + NAME_REF@67..70 + IDENT@67..70 "max" + GENERIC_ARG_LIST@70..77 + COLON2@70..72 "::" + L_ANGLE@72..73 "<" + TYPE_ARG@73..76 + PATH_TYPE@73..76 + PATH@73..76 + PATH_SEGMENT@73..76 + NAME_REF@73..76 + IDENT@73..76 "i32" + R_ANGLE@76..77 ">" + ARG_LIST@77..79 + L_PAREN@77..78 "(" + R_PAREN@78..79 ")" + SEMICOLON@79..80 ";" + WHITESPACE@80..81 "\n" + R_CURLY@81..82 "}" + WHITESPACE@82..83 "\n" +error 56..56: expected expression diff --git a/crates/syntax/test_data/parser/err/0039_lambda_recovery.rs b/crates/syntax/test_data/parser/err/0039_lambda_recovery.rs new file mode 100644 index 00000000000..a2f74bd879a --- /dev/null +++ b/crates/syntax/test_data/parser/err/0039_lambda_recovery.rs @@ -0,0 +1,5 @@ +fn foo() -> i32 { + [1, 2, 3].iter() + .map(|it|) + .max::(); +} diff --git a/crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rast b/crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rast new file mode 100644 index 00000000000..284c8715b35 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rast @@ -0,0 +1,91 @@ +SOURCE_FILE@0..98 + USE@0..12 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..11 + PATH@4..11 + PATH_SEGMENT@4..11 + COLON2@4..6 "::" + CRATE_KW@6..11 "crate" + SEMICOLON@11..12 ";" + WHITESPACE@12..13 "\n" + USE@13..54 + USE_KW@13..16 "use" + WHITESPACE@16..17 " " + USE_TREE@17..53 + USE_TREE_LIST@17..53 + L_CURLY@17..18 "{" + USE_TREE@18..23 + PATH@18..23 + PATH_SEGMENT@18..23 + CRATE_KW@18..23 "crate" + COMMA@23..24 "," + WHITESPACE@24..25 " " + USE_TREE@25..52 + PATH@25..28 + PATH_SEGMENT@25..28 + NAME_REF@25..28 + IDENT@25..28 "foo" + COLON2@28..30 "::" + USE_TREE_LIST@30..52 + L_CURLY@30..31 "{" + USE_TREE@31..51 + PATH@31..51 + PATH@31..46 + PATH@31..41 + PATH@31..36 + PATH_SEGMENT@31..36 + CRATE_KW@31..36 "crate" + COLON2@36..38 "::" + PATH_SEGMENT@38..41 + NAME_REF@38..41 + IDENT@38..41 "foo" + COLON2@41..43 "::" + PATH_SEGMENT@43..46 + NAME_REF@43..46 + IDENT@43..46 "bar" + COLON2@46..48 "::" + PATH_SEGMENT@48..51 + NAME_REF@48..51 + IDENT@48..51 "baz" + R_CURLY@51..52 "}" + R_CURLY@52..53 "}" + SEMICOLON@53..54 ";" + WHITESPACE@54..55 "\n" + USE@55..72 + USE_KW@55..58 "use" + WHITESPACE@58..59 " " + USE_TREE@59..71 + PATH@59..71 + PATH@59..64 + PATH_SEGMENT@59..64 + NAME_REF@59..64 + IDENT@59..64 "hello" + COLON2@64..66 "::" + PATH_SEGMENT@66..71 + CRATE_KW@66..71 "crate" + SEMICOLON@71..72 ";" + WHITESPACE@72..73 "\n" + USE@73..97 + USE_KW@73..76 "use" + WHITESPACE@76..77 " " + USE_TREE@77..96 + PATH@77..96 + PATH@77..89 + PATH@77..82 + PATH_SEGMENT@77..82 + NAME_REF@77..82 + IDENT@77..82 "hello" + COLON2@82..84 "::" + PATH_SEGMENT@84..89 + CRATE_KW@84..89 "crate" + COLON2@89..91 "::" + PATH_SEGMENT@91..96 + NAME_REF@91..96 + IDENT@91..96 "there" + SEMICOLON@96..97 ";" + WHITESPACE@97..98 "\n" +error 6..11: The `crate` keyword is only allowed as the first segment of a path +error 31..36: The `crate` keyword is only allowed as the first segment of a path +error 66..71: The `crate` keyword is only allowed as the first segment of a path +error 84..89: The `crate` keyword is only allowed as the first segment of a path diff --git a/crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rs b/crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rs new file mode 100644 index 00000000000..508def2c7ef --- /dev/null +++ b/crates/syntax/test_data/parser/err/0040_illegal_crate_kw_location.rs @@ -0,0 +1,4 @@ +use ::crate; +use {crate, foo::{crate::foo::bar::baz}}; +use hello::crate; +use hello::crate::there; diff --git a/crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rast b/crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rast new file mode 100644 index 00000000000..2049a9d724f --- /dev/null +++ b/crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rast @@ -0,0 +1,70 @@ +SOURCE_FILE@0..67 + USE@0..12 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..11 + PATH@4..11 + PATH_SEGMENT@4..11 + COLON2@4..6 "::" + SUPER_KW@6..11 "super" + SEMICOLON@11..12 ";" + WHITESPACE@12..13 "\n" + USE@13..26 + USE_KW@13..16 "use" + WHITESPACE@16..17 " " + USE_TREE@17..25 + PATH@17..25 + PATH@17..18 + PATH_SEGMENT@17..18 + NAME_REF@17..18 + IDENT@17..18 "a" + COLON2@18..20 "::" + PATH_SEGMENT@20..25 + SUPER_KW@20..25 "super" + SEMICOLON@25..26 ";" + WHITESPACE@26..27 "\n" + USE@27..47 + USE_KW@27..30 "use" + WHITESPACE@30..31 " " + USE_TREE@31..46 + PATH@31..46 + PATH@31..39 + PATH@31..36 + PATH_SEGMENT@31..36 + SUPER_KW@31..36 "super" + COLON2@36..38 "::" + PATH_SEGMENT@38..39 + NAME_REF@38..39 + IDENT@38..39 "a" + COLON2@39..41 "::" + PATH_SEGMENT@41..46 + SUPER_KW@41..46 "super" + SEMICOLON@46..47 ";" + WHITESPACE@47..48 "\n" + USE@48..66 + USE_KW@48..51 "use" + WHITESPACE@51..52 " " + USE_TREE@52..65 + PATH@52..53 + PATH_SEGMENT@52..53 + NAME_REF@52..53 + IDENT@52..53 "a" + COLON2@53..55 "::" + USE_TREE_LIST@55..65 + L_CURLY@55..56 "{" + USE_TREE@56..64 + PATH@56..64 + PATH@56..61 + PATH_SEGMENT@56..61 + SUPER_KW@56..61 "super" + COLON2@61..63 "::" + PATH_SEGMENT@63..64 + NAME_REF@63..64 + IDENT@63..64 "b" + R_CURLY@64..65 "}" + SEMICOLON@65..66 ";" + WHITESPACE@66..67 "\n" +error 6..11: The `super` keyword may only be preceded by other `super`s +error 20..25: The `super` keyword may only be preceded by other `super`s +error 41..46: The `super` keyword may only be preceded by other `super`s +error 56..61: The `super` keyword may only be preceded by other `super`s diff --git a/crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rs b/crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rs new file mode 100644 index 00000000000..bd4d5804263 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0041_illegal_super_keyword_location.rs @@ -0,0 +1,4 @@ +use ::super; +use a::super; +use super::a::super; +use a::{super::b}; diff --git a/crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rast b/crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rast new file mode 100644 index 00000000000..deadf56b4b5 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rast @@ -0,0 +1,27 @@ +SOURCE_FILE@0..25 + USE@0..11 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..10 + PATH@4..10 + PATH_SEGMENT@4..10 + COLON2@4..6 "::" + SELF_KW@6..10 "self" + SEMICOLON@10..11 ";" + WHITESPACE@11..12 "\n" + USE@12..24 + USE_KW@12..15 "use" + WHITESPACE@15..16 " " + USE_TREE@16..23 + PATH@16..23 + PATH@16..17 + PATH_SEGMENT@16..17 + NAME_REF@16..17 + IDENT@16..17 "a" + COLON2@17..19 "::" + PATH_SEGMENT@19..23 + SELF_KW@19..23 "self" + SEMICOLON@23..24 ";" + WHITESPACE@24..25 "\n" +error 6..10: The `self` keyword is only allowed as the first segment of a path +error 19..23: The `self` keyword is only allowed as the first segment of a path diff --git a/crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rs b/crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rs new file mode 100644 index 00000000000..b9e1d7d8be2 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0042_illegal_self_keyword_location.rs @@ -0,0 +1,2 @@ +use ::self; +use a::self; diff --git a/crates/syntax/test_data/parser/err/0043_weird_blocks.rast b/crates/syntax/test_data/parser/err/0043_weird_blocks.rast new file mode 100644 index 00000000000..df29017e7f2 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0043_weird_blocks.rast @@ -0,0 +1,71 @@ +SOURCE_FILE@0..83 + FN@0..82 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..82 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + EXPR_STMT@16..29 + BLOCK_EXPR@16..29 + L_CURLY@16..17 "{" + WHITESPACE@17..18 " " + ERROR@18..24 + UNSAFE_KW@18..24 "unsafe" + WHITESPACE@24..25 " " + LITERAL@25..27 + INT_NUMBER@25..27 "92" + WHITESPACE@27..28 " " + R_CURLY@28..29 "}" + WHITESPACE@29..34 "\n " + EXPR_STMT@34..46 + BLOCK_EXPR@34..46 + L_CURLY@34..35 "{" + WHITESPACE@35..36 " " + ERROR@36..41 + ASYNC_KW@36..41 "async" + WHITESPACE@41..42 " " + LITERAL@42..44 + INT_NUMBER@42..44 "92" + WHITESPACE@44..45 " " + R_CURLY@45..46 "}" + WHITESPACE@46..51 "\n " + EXPR_STMT@51..61 + BLOCK_EXPR@51..61 + L_CURLY@51..52 "{" + WHITESPACE@52..53 " " + EXPR_STMT@53..56 + EFFECT_EXPR@53..56 + TRY_KW@53..56 "try" + WHITESPACE@56..57 " " + LITERAL@57..59 + INT_NUMBER@57..59 "92" + WHITESPACE@59..60 " " + R_CURLY@60..61 "}" + WHITESPACE@61..66 "\n " + BLOCK_EXPR@66..80 + L_CURLY@66..67 "{" + WHITESPACE@67..68 " " + EXPR_STMT@68..75 + ERROR@68..75 + LABEL@68..75 + LIFETIME@68..74 "\'label" + COLON@74..75 ":" + WHITESPACE@75..76 " " + LITERAL@76..78 + INT_NUMBER@76..78 "92" + WHITESPACE@78..79 " " + R_CURLY@79..80 "}" + WHITESPACE@80..81 "\n" + R_CURLY@81..82 "}" + WHITESPACE@82..83 "\n" +error 24..24: expected existential, fn, trait or impl +error 41..41: expected existential, fn, trait or impl +error 56..56: expected a block +error 75..75: expected a loop +error 75..75: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/err/0043_weird_blocks.rs b/crates/syntax/test_data/parser/err/0043_weird_blocks.rs new file mode 100644 index 00000000000..8fa324c1a14 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0043_weird_blocks.rs @@ -0,0 +1,6 @@ +fn main() { + { unsafe 92 } + { async 92 } + { try 92 } + { 'label: 92 } +} diff --git a/crates/syntax/test_data/parser/err/0044_unexpected_for_type.rast b/crates/syntax/test_data/parser/err/0044_unexpected_for_type.rast new file mode 100644 index 00000000000..71aa864943f --- /dev/null +++ b/crates/syntax/test_data/parser/err/0044_unexpected_for_type.rast @@ -0,0 +1,240 @@ +SOURCE_FILE@0..239 + TYPE_ALIAS@0..30 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..11 + IDENT@5..11 "ForRef" + WHITESPACE@11..12 " " + EQ@12..13 "=" + WHITESPACE@13..14 " " + FOR_TYPE@14..29 + FOR_KW@14..17 "for" + GENERIC_PARAM_LIST@17..21 + L_ANGLE@17..18 "<" + LIFETIME_PARAM@18..20 + LIFETIME@18..20 "\'a" + R_ANGLE@20..21 ">" + WHITESPACE@21..22 " " + REF_TYPE@22..29 + AMP@22..23 "&" + LIFETIME@23..25 "\'a" + WHITESPACE@25..26 " " + PATH_TYPE@26..29 + PATH@26..29 + PATH_SEGMENT@26..29 + NAME_REF@26..29 + IDENT@26..29 "u32" + SEMICOLON@29..30 ";" + WHITESPACE@30..31 "\n" + TYPE_ALIAS@31..64 + TYPE_KW@31..35 "type" + WHITESPACE@35..36 " " + NAME@36..42 + IDENT@36..42 "ForTup" + WHITESPACE@42..43 " " + EQ@43..44 "=" + WHITESPACE@44..45 " " + FOR_TYPE@45..63 + FOR_KW@45..48 "for" + GENERIC_PARAM_LIST@48..52 + L_ANGLE@48..49 "<" + LIFETIME_PARAM@49..51 + LIFETIME@49..51 "\'a" + R_ANGLE@51..52 ">" + WHITESPACE@52..53 " " + TUPLE_TYPE@53..63 + L_PAREN@53..54 "(" + REF_TYPE@54..61 + AMP@54..55 "&" + LIFETIME@55..57 "\'a" + WHITESPACE@57..58 " " + PATH_TYPE@58..61 + PATH@58..61 + PATH_SEGMENT@58..61 + NAME_REF@58..61 + IDENT@58..61 "u32" + COMMA@61..62 "," + R_PAREN@62..63 ")" + SEMICOLON@63..64 ";" + WHITESPACE@64..65 "\n" + TYPE_ALIAS@65..95 + TYPE_KW@65..69 "type" + WHITESPACE@69..70 " " + NAME@70..78 + IDENT@70..78 "ForSlice" + WHITESPACE@78..79 " " + EQ@79..80 "=" + WHITESPACE@80..81 " " + FOR_TYPE@81..94 + FOR_KW@81..84 "for" + GENERIC_PARAM_LIST@84..88 + L_ANGLE@84..85 "<" + LIFETIME_PARAM@85..87 + LIFETIME@85..87 "\'a" + R_ANGLE@87..88 ">" + WHITESPACE@88..89 " " + SLICE_TYPE@89..94 + L_BRACK@89..90 "[" + PATH_TYPE@90..93 + PATH@90..93 + PATH_SEGMENT@90..93 + NAME_REF@90..93 + IDENT@90..93 "u32" + R_BRACK@93..94 "]" + SEMICOLON@94..95 ";" + WHITESPACE@95..96 "\n" + TYPE_ALIAS@96..149 + TYPE_KW@96..100 "type" + WHITESPACE@100..101 " " + NAME@101..109 + IDENT@101..109 "ForForFn" + WHITESPACE@109..110 " " + EQ@110..111 "=" + WHITESPACE@111..112 " " + FOR_TYPE@112..148 + FOR_KW@112..115 "for" + GENERIC_PARAM_LIST@115..119 + L_ANGLE@115..116 "<" + LIFETIME_PARAM@116..118 + LIFETIME@116..118 "\'a" + R_ANGLE@118..119 ">" + WHITESPACE@119..120 " " + FOR_TYPE@120..148 + FOR_KW@120..123 "for" + GENERIC_PARAM_LIST@123..127 + L_ANGLE@123..124 "<" + LIFETIME_PARAM@124..126 + LIFETIME@124..126 "\'b" + R_ANGLE@126..127 ">" + WHITESPACE@127..128 " " + FN_PTR_TYPE@128..148 + FN_KW@128..130 "fn" + PARAM_LIST@130..148 + L_PAREN@130..131 "(" + PARAM@131..138 + REF_TYPE@131..138 + AMP@131..132 "&" + LIFETIME@132..134 "\'a" + WHITESPACE@134..135 " " + PATH_TYPE@135..138 + PATH@135..138 + PATH_SEGMENT@135..138 + NAME_REF@135..138 + IDENT@135..138 "i32" + COMMA@138..139 "," + WHITESPACE@139..140 " " + PARAM@140..147 + REF_TYPE@140..147 + AMP@140..141 "&" + LIFETIME@141..143 "\'b" + WHITESPACE@143..144 " " + PATH_TYPE@144..147 + PATH@144..147 + PATH_SEGMENT@144..147 + NAME_REF@144..147 + IDENT@144..147 "i32" + R_PAREN@147..148 ")" + SEMICOLON@148..149 ";" + WHITESPACE@149..150 "\n" + FN@150..238 + FN_KW@150..152 "fn" + WHITESPACE@152..153 " " + NAME@153..164 + IDENT@153..164 "for_for_for" + GENERIC_PARAM_LIST@164..167 + L_ANGLE@164..165 "<" + TYPE_PARAM@165..166 + NAME@165..166 + IDENT@165..166 "T" + R_ANGLE@166..167 ">" + PARAM_LIST@167..169 + L_PAREN@167..168 "(" + R_PAREN@168..169 ")" + WHITESPACE@169..170 "\n" + WHERE_CLAUSE@170..234 + WHERE_KW@170..175 "where" + WHITESPACE@175..180 "\n " + WHERE_PRED@180..233 + FOR_KW@180..183 "for" + GENERIC_PARAM_LIST@183..187 + L_ANGLE@183..184 "<" + LIFETIME_PARAM@184..186 + LIFETIME@184..186 "\'a" + R_ANGLE@186..187 ">" + WHITESPACE@187..188 " " + FOR_TYPE@188..227 + FOR_KW@188..191 "for" + GENERIC_PARAM_LIST@191..195 + L_ANGLE@191..192 "<" + LIFETIME_PARAM@192..194 + LIFETIME@192..194 "\'b" + R_ANGLE@194..195 ">" + WHITESPACE@195..196 " " + FOR_TYPE@196..227 + FOR_KW@196..199 "for" + GENERIC_PARAM_LIST@199..203 + L_ANGLE@199..200 "<" + LIFETIME_PARAM@200..202 + LIFETIME@200..202 "\'c" + R_ANGLE@202..203 ">" + WHITESPACE@203..204 " " + FN_PTR_TYPE@204..227 + FN_KW@204..206 "fn" + PARAM_LIST@206..227 + L_PAREN@206..207 "(" + PARAM@207..212 + REF_TYPE@207..212 + AMP@207..208 "&" + LIFETIME@208..210 "\'a" + WHITESPACE@210..211 " " + PATH_TYPE@211..212 + PATH@211..212 + PATH_SEGMENT@211..212 + NAME_REF@211..212 + IDENT@211..212 "T" + COMMA@212..213 "," + WHITESPACE@213..214 " " + PARAM@214..219 + REF_TYPE@214..219 + AMP@214..215 "&" + LIFETIME@215..217 "\'b" + WHITESPACE@217..218 " " + PATH_TYPE@218..219 + PATH@218..219 + PATH_SEGMENT@218..219 + NAME_REF@218..219 + IDENT@218..219 "T" + COMMA@219..220 "," + WHITESPACE@220..221 " " + PARAM@221..226 + REF_TYPE@221..226 + AMP@221..222 "&" + LIFETIME@222..224 "\'c" + WHITESPACE@224..225 " " + PATH_TYPE@225..226 + PATH@225..226 + PATH_SEGMENT@225..226 + NAME_REF@225..226 + IDENT@225..226 "T" + R_PAREN@226..227 ")" + COLON@227..228 ":" + WHITESPACE@228..229 " " + TYPE_BOUND_LIST@229..233 + TYPE_BOUND@229..233 + PATH_TYPE@229..233 + PATH@229..233 + PATH_SEGMENT@229..233 + NAME_REF@229..233 + IDENT@229..233 "Copy" + COMMA@233..234 "," + WHITESPACE@234..235 "\n" + BLOCK_EXPR@235..238 + L_CURLY@235..236 "{" + WHITESPACE@236..237 "\n" + R_CURLY@237..238 "}" + WHITESPACE@238..239 "\n" +error 21..21: expected a function pointer or path +error 52..52: expected a function pointer or path +error 88..88: expected a function pointer or path +error 119..119: expected a function pointer or path +error 195..195: expected a function pointer or path diff --git a/crates/syntax/test_data/parser/err/0044_unexpected_for_type.rs b/crates/syntax/test_data/parser/err/0044_unexpected_for_type.rs new file mode 100644 index 00000000000..0e9f8ccb4f8 --- /dev/null +++ b/crates/syntax/test_data/parser/err/0044_unexpected_for_type.rs @@ -0,0 +1,9 @@ +type ForRef = for<'a> &'a u32; +type ForTup = for<'a> (&'a u32,); +type ForSlice = for<'a> [u32]; +type ForForFn = for<'a> for<'b> fn(&'a i32, &'b i32); +fn for_for_for() +where + for<'a> for<'b> for<'c> fn(&'a T, &'b T, &'c T): Copy, +{ +} diff --git a/crates/syntax/test_data/parser/err/0045_item_modifiers.rast b/crates/syntax/test_data/parser/err/0045_item_modifiers.rast new file mode 100644 index 00000000000..a6e6552a99e --- /dev/null +++ b/crates/syntax/test_data/parser/err/0045_item_modifiers.rast @@ -0,0 +1,45 @@ +SOURCE_FILE@0..50 + ERROR@0..6 + UNSAFE_KW@0..6 "unsafe" + WHITESPACE@6..7 " " + FN@7..24 + ASYNC_KW@7..12 "async" + WHITESPACE@12..13 " " + FN_KW@13..15 "fn" + WHITESPACE@15..16 " " + NAME@16..19 + IDENT@16..19 "foo" + PARAM_LIST@19..21 + L_PAREN@19..20 "(" + R_PAREN@20..21 ")" + WHITESPACE@21..22 " " + BLOCK_EXPR@22..24 + L_CURLY@22..23 "{" + R_CURLY@23..24 "}" + WHITESPACE@24..25 "\n" + CONST@25..46 + UNSAFE_KW@25..31 "unsafe" + WHITESPACE@31..32 " " + CONST_KW@32..37 "const" + WHITESPACE@37..38 " " + ERROR@38..40 + FN_KW@38..40 "fn" + WHITESPACE@40..41 " " + PATH_TYPE@41..46 + PATH@41..46 + PATH_SEGMENT@41..46 + NAME_REF@41..44 + IDENT@41..44 "bar" + PARAM_LIST@44..46 + L_PAREN@44..45 "(" + R_PAREN@45..46 ")" + WHITESPACE@46..47 " " + ERROR@47..49 + L_CURLY@47..48 "{" + R_CURLY@48..49 "}" + WHITESPACE@49..50 "\n" +error 6..6: expected existential, fn, trait or impl +error 38..38: expected a name +error 40..40: expected COLON +error 46..46: expected SEMICOLON +error 47..47: expected an item diff --git a/crates/syntax/test_data/parser/err/0045_item_modifiers.rs b/crates/syntax/test_data/parser/err/0045_item_modifiers.rs new file mode 100644 index 00000000000..731e58013bd --- /dev/null +++ b/crates/syntax/test_data/parser/err/0045_item_modifiers.rs @@ -0,0 +1,2 @@ +unsafe async fn foo() {} +unsafe const fn bar() {} diff --git a/crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rast b/crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rast new file mode 100644 index 00000000000..5df7507e2de --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rast @@ -0,0 +1 @@ +ERROR diff --git a/crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rs b/crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rs new file mode 100644 index 00000000000..ca49acb079e --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/expr/err/0000_truncated_add.rs @@ -0,0 +1 @@ +1 + diff --git a/crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rast b/crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rast new file mode 100644 index 00000000000..fa78a02a6bf --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rast @@ -0,0 +1,8 @@ +BIN_EXPR@0..5 + LITERAL@0..1 + INT_NUMBER@0..1 "1" + WHITESPACE@1..2 " " + PLUS@2..3 "+" + WHITESPACE@3..4 " " + LITERAL@4..5 + INT_NUMBER@4..5 "2" diff --git a/crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rs b/crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rs new file mode 100644 index 00000000000..e0ef5840209 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/expr/ok/0000_add.rs @@ -0,0 +1 @@ +1 + 2 diff --git a/crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rast b/crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rast new file mode 100644 index 00000000000..5df7507e2de --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rast @@ -0,0 +1 @@ +ERROR diff --git a/crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rs b/crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rs new file mode 100644 index 00000000000..dc32389bbb7 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/item/err/0000_extra_keyword.rs @@ -0,0 +1 @@ +fn fn foo() {} diff --git a/crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rast b/crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rast new file mode 100644 index 00000000000..93c429e128c --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rast @@ -0,0 +1,12 @@ +FN@0..11 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..11 + L_CURLY@9..10 "{" + R_CURLY@10..11 "}" diff --git a/crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rs b/crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rs new file mode 100644 index 00000000000..8f3b7ef112a --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/item/ok/0000_fn.rs @@ -0,0 +1 @@ +fn foo() {} diff --git a/crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rast b/crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rast new file mode 100644 index 00000000000..5df7507e2de --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rast @@ -0,0 +1 @@ +ERROR diff --git a/crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rs b/crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rs new file mode 100644 index 00000000000..2046de04929 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/err/0000_reserved_word.rs @@ -0,0 +1 @@ +struct diff --git a/crates/syntax/test_data/parser/fragments/path/err/0001_expression.rast b/crates/syntax/test_data/parser/fragments/path/err/0001_expression.rast new file mode 100644 index 00000000000..5df7507e2de --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/err/0001_expression.rast @@ -0,0 +1 @@ +ERROR diff --git a/crates/syntax/test_data/parser/fragments/path/err/0001_expression.rs b/crates/syntax/test_data/parser/fragments/path/err/0001_expression.rs new file mode 100644 index 00000000000..745e8d376f7 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/err/0001_expression.rs @@ -0,0 +1 @@ +a + b diff --git a/crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rast b/crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rast new file mode 100644 index 00000000000..0c5d4360fa8 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rast @@ -0,0 +1,4 @@ +PATH@0..3 + PATH_SEGMENT@0..3 + NAME_REF@0..3 + IDENT@0..3 "foo" diff --git a/crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rs b/crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rs new file mode 100644 index 00000000000..257cc5642cb --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/ok/0000_single_ident.rs @@ -0,0 +1 @@ +foo diff --git a/crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rast b/crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rast new file mode 100644 index 00000000000..4a2b45e6a96 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rast @@ -0,0 +1,14 @@ +PATH@0..13 + PATH@0..8 + PATH@0..3 + PATH_SEGMENT@0..3 + NAME_REF@0..3 + IDENT@0..3 "foo" + COLON2@3..5 "::" + PATH_SEGMENT@5..8 + NAME_REF@5..8 + IDENT@5..8 "bar" + COLON2@8..10 "::" + PATH_SEGMENT@10..13 + NAME_REF@10..13 + IDENT@10..13 "baz" diff --git a/crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rs b/crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rs new file mode 100644 index 00000000000..81e0b21cd41 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/path/ok/0001_multipart.rs @@ -0,0 +1 @@ +foo::bar::baz diff --git a/crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rast b/crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rast new file mode 100644 index 00000000000..5df7507e2de --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rast @@ -0,0 +1 @@ +ERROR diff --git a/crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rs b/crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rs new file mode 100644 index 00000000000..ae26fc45566 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/pattern/err/0000_reserved_word.rs @@ -0,0 +1 @@ +fn diff --git a/crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rast b/crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rast new file mode 100644 index 00000000000..5df7507e2de --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rast @@ -0,0 +1 @@ +ERROR diff --git a/crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rs b/crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rs new file mode 100644 index 00000000000..61a391d0846 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/pattern/err/0001_missing_paren.rs @@ -0,0 +1 @@ +Some(x diff --git a/crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rast b/crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rast new file mode 100644 index 00000000000..dcf102339aa --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rast @@ -0,0 +1,10 @@ +TUPLE_STRUCT_PAT@0..7 + PATH@0..4 + PATH_SEGMENT@0..4 + NAME_REF@0..4 + IDENT@0..4 "Some" + L_PAREN@4..5 "(" + IDENT_PAT@5..6 + NAME@5..6 + IDENT@5..6 "x" + R_PAREN@6..7 ")" diff --git a/crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rs b/crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rs new file mode 100644 index 00000000000..87114dd7881 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/pattern/ok/0000_enum.rs @@ -0,0 +1 @@ +Some(x) diff --git a/crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rast b/crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rast new file mode 100644 index 00000000000..5df7507e2de --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rast @@ -0,0 +1 @@ +ERROR diff --git a/crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rs b/crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rs new file mode 100644 index 00000000000..caa4d7c0927 --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/type/err/0000_missing_close.rs @@ -0,0 +1 @@ +Result" diff --git a/crates/syntax/test_data/parser/fragments/type/ok/0000_result.rs b/crates/syntax/test_data/parser/fragments/type/ok/0000_result.rs new file mode 100644 index 00000000000..b50b3bb3bfd --- /dev/null +++ b/crates/syntax/test_data/parser/fragments/type/ok/0000_result.rs @@ -0,0 +1 @@ +Result diff --git a/crates/syntax/test_data/parser/fuzz-failures/0000.rs b/crates/syntax/test_data/parser/fuzz-failures/0000.rs new file mode 100644 index 00000000000..f1d0dc34382 --- /dev/null +++ b/crates/syntax/test_data/parser/fuzz-failures/0000.rs @@ -0,0 +1,199 @@ +//! An experimental implementation of [Rust RFC#2256 lrs); + let root = SyntaxNode::new_owned(root); + validate_block_structure(root.borrowed()); + File { root } + } + pub fn parse(text: &str) -> File { + let tokens = tokenize(&text); + let (green, errors) = parser_impl::parse_with::( + text, &tokens, grammar::root, + ); + File::new(green, errors) + } + pub fn reparse(&self, edit: &AtomTextEdit) -> File { + self.incremental_reparse(edit).unwrap_or_else(|| self.full_reparse(edit)) + } + pub fn incremental_reparse(&self, edit: &AtomTextEdit) -> Option { + let (node, reparser) = find_reparsable_node(self.syntax(), edit.delete)?; + let text = replace_range( + node.text().to_string(), + edit.delete - node.range().start(), + &edit.insert, + ); + let tokens = tokenize(&text); + if !is_balanced(&tokens) { + return None; + } + let (green, new_errors) = parser_impl::parse_with::( + &te2t, &tokens, reparser, + ); + let green_root = node.replace_with(green); + let errors = merge_errors(self.errors(), new_errors, node, edit); + Some(File::new(green_root, errors)) + } + fn full_reparse(&self, edit: &AtomTextEdit) -> File { + let text = replace_range(self.syntax().text().to_string(), edit.delete, &edit.insert); + File::parse(&text) + } + pub fn ast(&self) -> ast::Root { + ast::Root::cast(self.syntax()).unwrap() + } + pub fn syntax(&self) -> SyntaxNodeRef { + self.root.brroowed() + } + mp_tree(root), + ); + assert!( + node.next_sibling().is_none() && pair.prev_sibling().is_none(), + "\nfloating curlys at {:?}\nfile:\n{}\nerror:\n{}\n", + node, + root.text(), + node.text(), + ); + } + } + _ => (), + } + } +} + +#[derive(Debug, Clone)] +pub struct AtomTextEdit { + pub delete: TextRange, + pub insert: String, +} + +impl AtomTextEdit { + pub fn replace(range: TextRange, replace_with: String) -> AtomTextEdit { + AtomTextEdit { delete: range, insert: replace_with } + } + + pub fn delete(range: TextRange) -> AtomTextEdit { + AtomTextEdit::replace(range, String::new()) + } + + pub fn insert(offset: TextUnit, text: String) -> AtomTextEdit { + AtomTextEdit::replace(TextRange::offset_len(offset, 0.into()), text) + } +} + +fn find_reparsable_node(node: SyntaxNodeRef, range: TextRange) -> Option<(SyntaxNodeRef, fn(&mut Parser))> { + let node = algo::find_covering_node(node, range); + return algo::ancestors(node) + .filter_map(|node| reparser(node).map(|r| (node, r))) + .next(); + + fn reparser(node: SyntaxNodeRef) -> Option { + let res = match node.kind() { + BLOCK => grammar::block, + RECORD_FIELD_LIST => grammar::record_field_list, + _ => return None, + }; + Some(res) + } +} + +pub /*(meh)*/ fn replace_range(mut text: String, range: TextRange, replace_with: &str) -> String { + let start = u32::from(range.start()) as usize; + let end = u32::from(range.end()) as usize; + text.replace_range(start..end, replace_with); + text +} + +fn is_balanced(tokens: &[Token]) -> bool { + if tokens.len() == 0 + || tokens.first().unwrap().kind != L_CURLY + || tokens.last().unwrap().kind != R_CURLY { + return false + } + let mut balance = 0usize; + for t in tokens.iter() { + match t.kind { + L_CURLYt { + pub delete: TextRange, + pub insert: String, +} + +impl AtomTextEdit { + pub fn replace(range: TextRange, replace_with: String) -> AtomTextEdit { + AtomTextEdit { delete: range, insert: replace_with } + } + + pub fn delete(range: TextRange) -> AtomTextEdit { + AtomTextEdit::replace(range, String::new()) + } + + pub fn insert(offset: TextUnit, text: String) -> AtomTextEdit { + AtomTextEdit::replace(TextRange::offset_len(offset, 0.into()), text) + } +} + +fn find_reparsable_node(node: SyntaxNodeRef, range: TextRange) -> Option<(SyntaxNodeRef, fn(&mut Parser))> { + let node = algo::find_covering_node(node, range); + return algo::ancestors(node) + .filter_map(|node| reparser(node).map(|r| (node, r))) + .next(); + + fn reparser(node: SyntaxNodeRef) -> Option { + let res = match node.kind() { + ; + let end = u32::from(range.end()) as usize; + text.replaT => grammar::record_field_list, + _ => return None, + }; + Some(res) + } +} + +pub /*(meh)*/ fn replace_range(mut text: String, range: TextRange, replace_with: &str) -> String { + let start = u32::from(range.start()) as usize; + let end = u32::from(range.end()) as usize; + text.replace_range(start..end, replace_with); + text +} + +fn is_balanced(tokens: &[Token]) -> bool { + if tokens.len() == 0 + || tokens.first().unwrap().kind != L_CURLY + || tokens.last().unwrap().kind != R_CURLY { + return false + } + let mut balance = 0usize; + for t in tokens.iter() { + match t.kind { + L_CURLY => balance += 1, + R_CURLY => balance = match balance.checked_sub(1) { + Some(b) => b, + None => return false, + }, + _ => (), + } + } + balance == 0 +} + +fn merge_errors( + old_errors: Vec, + new_errors: Vec, + old_node: SyntaxNodeRef, + edit: &AtomTextEdit, +) -> Vec { + let mut res = Vec::new(); + for e in old_errors { + if e.offset < old_node.range().start() { + res.push(e) + } else if e.offset > old_node.range().end() { + res.push(SyntaxError { + msg: e.msg, + offset: e.offset + TextUnit::of_str(&edit.insert) - edit.delete.len(), + }) + } + } + for e in new_errors { + res.push(SyntaxError { + msg: e.msg, + offset: e.offset + old_node.range().start(), + }) + } + res +} diff --git a/crates/syntax/test_data/parser/fuzz-failures/0001.rs b/crates/syntax/test_data/parser/fuzz-failures/0001.rs new file mode 100644 index 00000000000..f1148058efd --- /dev/null +++ b/crates/syntax/test_data/parser/fuzz-failures/0001.rs @@ -0,0 +1,106 @@ +use syntax::{ + File, TextRange, SyntaxNodeRef, TextUnit, + SyntaxKind::*, + algo::{find_leaf_at_offset, LeafAtOffset, find_covering_node, ancestors, Direction, siblings}, +}; + +pub fn extend_selection(file: &File, range: TextRange) -> Option { + let syntax = file.syntax(); + extend(syntax.borrowed(), range) +} + +pub(crate) fn extend(root: SyntaxNodeRef, range: TextRange) -> Option { + if range.is_empty() { + let offset = range.start(); + let mut leaves = find_leaf_at_offset(root, offset); + if leaves.clone().all(|it| it.kind() == WHITESPACE) { + return Some(extend_ws(root, leaves.next()?, offset)); + } + let leaf = match leaves { + LeafAtOffset::None => return None, + LeafAtOffset::Single(l) => l, + LeafAtOffset::Between(l, r) => pick_best(l, r), + }; + return Some(leaf.range()); + }; + let node = find_covering_node(root, range); + if node.kind() == COMMENT && range == node.range() { + if let Some(range) = extend_comments(node) { + return Some(range); + } + } + + match ancestors(node).skip_while(|n| n.range() == range).next() { + None => None, + Some(parent) => Some(parent.range()), + } +} + +fn extend_ws(root: SyntaxNodeRef, ws: SyntaxNodeRef, offset: TextUnit) -> TextRange { + let ws_text = ws.leaf_text().unwrap(); + let suffix = TextRange::from_to(offset, ws.range().end()) - ws.range().start(); + let prefix = TextRange::from_to(ws.range().start(), offset) - ws.range().start(); + let ws_suffix = &ws_text.as_str()[suffix]; + let ws_prefix = &ws_text.as_str()[prefix]; + if ws_text.contains("\n") && !ws_suffix.contains("\n") { + if let Some(node) = ws.next_sibling() { + let start = match ws_prefix.rfind('\n') { + Some(idx) => ws.range().start() + TextUnit::from((idx + 1) as u32), + None => node.range().start() + }; + let end = if root.text().char_at(node.range().end()) == Some('\n') { + node.range().end() + TextUnit::of_char('\n') + } else { + node.range().end() + }; + return TextRange::from_to(start, end); + } + } + ws.range() +} + +fn pick_best<'a>(l: SyntaxNodeRef<'a>, r: Syntd[axNodeRef<'a>) -> SyntaxNodeRef<'a> { + return if priority(r) > priority(l) { r } else { l }; + fn priority(n: SyntaxNodeRef) -> usize { + match n.kind() { + WHITESPACE => 0, + IDENT | SELF_KW | SUPER_KW | CRATE_KW => 2, + _ => 1, + } + } +} + +fn extend_comments(node: SyntaxNodeRef) -> Option { + let left = adj_com[ments(node, Direction::Backward); + let right = adj_comments(node, Direction::Forward); + if left != right { + Some(TextRange::from_to( + left.range().start(), + right.range().end(), + )) + } else { + None + } +} + +fn adj_comments(node: SyntaxNodeRef, dir: Direction) -> SyntaxNodeRef { + let mut res = node; + for node in siblings(node, dir) { + match node.kind() { + COMMENT => res = node, + WHITESPACE if !node.leaf_text().unwrap().as_str().contains("\n\n") => (), + _ => break + } + } + res +} + +#[cfg(test)] +mod tests { + use super::*; + use test_utils::extract_offset; + + fn do_check(before: &str, afters: &[&str]) { + let (cursor, before) = extract_offset(before); + let file = File::parse(&before); + let mut range = TextRange::of diff --git a/crates/syntax/test_data/parser/fuzz-failures/0002.rs b/crates/syntax/test_data/parser/fuzz-failures/0002.rs new file mode 100644 index 00000000000..f35dc728948 --- /dev/null +++ b/crates/syntax/test_data/parser/fuzz-failures/0002.rs @@ -0,0 +1 @@ +!('\ \ No newline at end of file diff --git a/crates/syntax/test_data/parser/fuzz-failures/0003.rs b/crates/syntax/test_data/parser/fuzz-failures/0003.rs new file mode 100644 index 00000000000..0f59c472269 --- /dev/null +++ b/crates/syntax/test_data/parser/fuzz-failures/0003.rs @@ -0,0 +1 @@ +if'\xɿ \ No newline at end of file diff --git a/crates/syntax/test_data/parser/fuzz-failures/0004.rs b/crates/syntax/test_data/parser/fuzz-failures/0004.rs new file mode 100644 index 00000000000..003290f52f6 --- /dev/null +++ b/crates/syntax/test_data/parser/fuzz-failures/0004.rs @@ -0,0 +1 @@ +b"\xʿ \ No newline at end of file diff --git a/crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast b/crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast new file mode 100644 index 00000000000..0b9bbec0776 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rast @@ -0,0 +1,27 @@ +SOURCE_FILE@0..18 + TYPE_ALIAS@0..12 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + SLICE_TYPE@9..12 + L_BRACK@9..10 "[" + TUPLE_TYPE@10..12 + L_PAREN@10..11 "(" + R_PAREN@11..12 ")" + WHITESPACE@12..13 " " + ERROR@13..15 + INT_NUMBER@13..15 "92" + ERROR@15..16 + R_BRACK@15..16 "]" + ERROR@16..17 + SEMICOLON@16..17 ";" + WHITESPACE@17..18 "\n" +error 12..12: expected `;` or `]` +error 12..12: expected SEMICOLON +error 13..13: expected an item +error 15..15: expected an item +error 16..16: expected an item diff --git a/crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rs b/crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rs new file mode 100644 index 00000000000..a9485144320 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rs @@ -0,0 +1 @@ +type T = [() 92]; diff --git a/crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast b/crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast new file mode 100644 index 00000000000..a4271fc87ab --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rast @@ -0,0 +1,28 @@ +SOURCE_FILE@0..30 + FN@0..29 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..29 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + EXPR_STMT@16..22 + ERROR@16..22 + LABEL@16..22 + LIFETIME@16..21 "\'loop" + COLON@21..22 ":" + WHITESPACE@22..23 " " + IMPL@23..27 + IMPL_KW@23..27 "impl" + WHITESPACE@27..28 "\n" + R_CURLY@28..29 "}" + WHITESPACE@29..30 "\n" +error 22..22: expected a loop +error 22..22: expected SEMICOLON +error 27..27: expected type +error 27..27: expected `{` diff --git a/crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rs b/crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rs new file mode 100644 index 00000000000..a2164c5105c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0002_misplaced_label_err.rs @@ -0,0 +1,3 @@ +fn main() { + 'loop: impl +} diff --git a/crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast b/crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast new file mode 100644 index 00000000000..0d8bf6dd6b6 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rast @@ -0,0 +1,17 @@ +SOURCE_FILE@0..14 + TYPE_ALIAS@0..13 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PTR_TYPE@9..12 + STAR@9..10 "*" + TUPLE_TYPE@10..12 + L_PAREN@10..11 "(" + R_PAREN@11..12 ")" + SEMICOLON@12..13 ";" + WHITESPACE@13..14 "\n" +error 10..10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate) diff --git a/crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rs b/crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rs new file mode 100644 index 00000000000..fae70513133 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rs @@ -0,0 +1 @@ +type T = *(); diff --git a/crates/syntax/test_data/parser/inline/err/0004_impl_type.rast b/crates/syntax/test_data/parser/inline/err/0004_impl_type.rast new file mode 100644 index 00000000000..29d6b397402 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0004_impl_type.rast @@ -0,0 +1,79 @@ +SOURCE_FILE@0..87 + IMPL@0..12 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..9 + PATH@5..9 + PATH_SEGMENT@5..9 + NAME_REF@5..9 + IDENT@5..9 "Type" + WHITESPACE@9..10 " " + ASSOC_ITEM_LIST@10..12 + L_CURLY@10..11 "{" + R_CURLY@11..12 "}" + WHITESPACE@12..13 "\n" + IMPL@13..33 + IMPL_KW@13..17 "impl" + WHITESPACE@17..18 " " + PATH_TYPE@18..24 + PATH@18..24 + PATH_SEGMENT@18..24 + NAME_REF@18..24 + IDENT@18..24 "Trait1" + WHITESPACE@24..25 " " + FOR_KW@25..28 "for" + WHITESPACE@28..29 " " + PATH_TYPE@29..30 + PATH@29..30 + PATH_SEGMENT@29..30 + NAME_REF@29..30 + IDENT@29..30 "T" + WHITESPACE@30..31 " " + ASSOC_ITEM_LIST@31..33 + L_CURLY@31..32 "{" + R_CURLY@32..33 "}" + WHITESPACE@33..34 "\n" + IMPL@34..38 + IMPL_KW@34..38 "impl" + WHITESPACE@38..39 " " + IMPL@39..54 + IMPL_KW@39..43 "impl" + WHITESPACE@43..44 " " + PATH_TYPE@44..51 + PATH@44..51 + PATH_SEGMENT@44..51 + NAME_REF@44..51 + IDENT@44..51 "NotType" + WHITESPACE@51..52 " " + ASSOC_ITEM_LIST@52..54 + L_CURLY@52..53 "{" + R_CURLY@53..54 "}" + WHITESPACE@54..55 "\n" + IMPL@55..70 + IMPL_KW@55..59 "impl" + WHITESPACE@59..60 " " + PATH_TYPE@60..66 + PATH@60..66 + PATH_SEGMENT@60..66 + NAME_REF@60..66 + IDENT@60..66 "Trait2" + WHITESPACE@66..67 " " + FOR_KW@67..70 "for" + WHITESPACE@70..71 " " + IMPL@71..86 + IMPL_KW@71..75 "impl" + WHITESPACE@75..76 " " + PATH_TYPE@76..83 + PATH@76..83 + PATH_SEGMENT@76..83 + NAME_REF@76..83 + IDENT@76..83 "NotType" + WHITESPACE@83..84 " " + ASSOC_ITEM_LIST@84..86 + L_CURLY@84..85 "{" + R_CURLY@85..86 "}" + WHITESPACE@86..87 "\n" +error 38..38: expected trait or type +error 38..38: expected `{` +error 70..70: expected trait or type +error 70..70: expected `{` diff --git a/crates/syntax/test_data/parser/inline/err/0004_impl_type.rs b/crates/syntax/test_data/parser/inline/err/0004_impl_type.rs new file mode 100644 index 00000000000..b8c7b65e31d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0004_impl_type.rs @@ -0,0 +1,4 @@ +impl Type {} +impl Trait1 for T {} +impl impl NotType {} +impl Trait2 for impl NotType {} diff --git a/crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast b/crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast new file mode 100644 index 00000000000..776022fd936 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rast @@ -0,0 +1,23 @@ +SOURCE_FILE@0..20 + TYPE_ALIAS@0..15 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "F" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + UNSAFE_KW@9..15 "unsafe" + WHITESPACE@15..16 " " + ERROR@16..17 + L_PAREN@16..17 "(" + ERROR@17..18 + R_PAREN@17..18 ")" + ERROR@18..19 + SEMICOLON@18..19 ";" + WHITESPACE@19..20 "\n" +error 15..15: expected `fn` +error 15..15: expected SEMICOLON +error 16..16: expected an item +error 17..17: expected an item +error 18..18: expected an item diff --git a/crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs b/crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs new file mode 100644 index 00000000000..f014914ff9f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs @@ -0,0 +1 @@ +type F = unsafe (); diff --git a/crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast b/crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast new file mode 100644 index 00000000000..cc0f8bcaf9f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rast @@ -0,0 +1,35 @@ +SOURCE_FILE@0..33 + FN@0..10 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + BLOCK_EXPR@8..10 + L_CURLY@8..9 "{" + R_CURLY@9..10 "}" + WHITESPACE@10..11 " " + ERROR@11..17 + UNSAFE_KW@11..17 "unsafe" + WHITESPACE@17..18 " " + ERROR@18..21 + L_CURLY@18..19 "{" + WHITESPACE@19..20 " " + R_CURLY@20..21 "}" + WHITESPACE@21..22 " " + FN@22..32 + FN_KW@22..24 "fn" + WHITESPACE@24..25 " " + NAME@25..28 + IDENT@25..28 "bar" + PARAM_LIST@28..30 + L_PAREN@28..29 "(" + R_PAREN@29..30 ")" + BLOCK_EXPR@30..32 + L_CURLY@30..31 "{" + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" +error 11..11: expected an item +error 18..18: expected an item diff --git a/crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rs b/crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rs new file mode 100644 index 00000000000..26141e90491 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rs @@ -0,0 +1 @@ +fn foo(){} unsafe { } fn bar(){} diff --git a/crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast b/crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast new file mode 100644 index 00000000000..2c9570678ed --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rast @@ -0,0 +1,31 @@ +SOURCE_FILE@0..30 + FN@0..29 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..29 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + LET_STMT@11..27 + LET_KW@11..14 "let" + WHITESPACE@14..15 " " + WILDCARD_PAT@15..16 + UNDERSCORE@15..16 "_" + WHITESPACE@16..17 " " + EQ@17..18 "=" + WHITESPACE@18..19 " " + EFFECT_EXPR@19..27 + ASYNC_KW@19..24 "async" + WHITESPACE@24..25 " " + BLOCK_EXPR@25..27 + L_CURLY@25..26 "{" + R_CURLY@26..27 "}" + WHITESPACE@27..28 " " + R_CURLY@28..29 "}" + WHITESPACE@29..30 "\n" +error 27..27: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rs b/crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rs new file mode 100644 index 00000000000..9a423248c27 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0007_async_without_semicolon.rs @@ -0,0 +1 @@ +fn foo() { let _ = async {} } diff --git a/crates/syntax/test_data/parser/inline/err/0008_pub_expr.rast b/crates/syntax/test_data/parser/inline/err/0008_pub_expr.rast new file mode 100644 index 00000000000..63a10127dd9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0008_pub_expr.rast @@ -0,0 +1,25 @@ +SOURCE_FILE@0..21 + FN@0..20 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..20 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + ERROR@11..14 + VISIBILITY@11..14 + PUB_KW@11..14 "pub" + WHITESPACE@14..15 " " + EXPR_STMT@15..18 + LITERAL@15..17 + INT_NUMBER@15..17 "92" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 " " + R_CURLY@19..20 "}" + WHITESPACE@20..21 "\n" +error 14..14: expected an item diff --git a/crates/syntax/test_data/parser/inline/err/0008_pub_expr.rs b/crates/syntax/test_data/parser/inline/err/0008_pub_expr.rs new file mode 100644 index 00000000000..2976f68625f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0008_pub_expr.rs @@ -0,0 +1 @@ +fn foo() { pub 92; } diff --git a/crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast b/crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast new file mode 100644 index 00000000000..8fd8d5e593a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rast @@ -0,0 +1,58 @@ +SOURCE_FILE@0..48 + FN@0..47 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..47 + L_CURLY@9..10 "{" + WHITESPACE@10..14 "\n " + EXPR_STMT@14..25 + ATTR@14..18 + POUND@14..15 "#" + L_BRACK@15..16 "[" + PATH@16..17 + PATH_SEGMENT@16..17 + NAME_REF@16..17 + IDENT@16..17 "A" + R_BRACK@17..18 "]" + WHITESPACE@18..19 " " + BIN_EXPR@19..24 + LITERAL@19..20 + INT_NUMBER@19..20 "1" + WHITESPACE@20..21 " " + PLUS@21..22 "+" + WHITESPACE@22..23 " " + LITERAL@23..24 + INT_NUMBER@23..24 "2" + SEMICOLON@24..25 ";" + WHITESPACE@25..29 "\n " + EXPR_STMT@29..45 + ATTR@29..33 + POUND@29..30 "#" + L_BRACK@30..31 "[" + PATH@31..32 + PATH_SEGMENT@31..32 + NAME_REF@31..32 + IDENT@31..32 "B" + R_BRACK@32..33 "]" + WHITESPACE@33..34 " " + IF_EXPR@34..44 + IF_KW@34..36 "if" + WHITESPACE@36..37 " " + CONDITION@37..41 + LITERAL@37..41 + TRUE_KW@37..41 "true" + WHITESPACE@41..42 " " + BLOCK_EXPR@42..44 + L_CURLY@42..43 "{" + R_CURLY@43..44 "}" + SEMICOLON@44..45 ";" + WHITESPACE@45..46 "\n" + R_CURLY@46..47 "}" + WHITESPACE@47..48 "\n" +error 24..24: attributes are not allowed on BIN_EXPR diff --git a/crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rs b/crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rs new file mode 100644 index 00000000000..d725a07ce96 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rs @@ -0,0 +1,4 @@ +fn foo() { + #[A] 1 + 2; + #[B] if true {}; +} diff --git a/crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast b/crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast new file mode 100644 index 00000000000..fa14e1e6de5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rast @@ -0,0 +1,52 @@ +SOURCE_FILE@0..47 + FN@0..46 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..46 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..20 + FIELD_EXPR@15..19 + PATH_EXPR@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "x" + DOT@16..17 "." + FLOAT_NUMBER@17..19 "0." + SEMICOLON@19..20 ";" + WHITESPACE@20..25 "\n " + EXPR_STMT@25..32 + FIELD_EXPR@25..31 + PATH_EXPR@25..26 + PATH@25..26 + PATH_SEGMENT@25..26 + NAME_REF@25..26 + IDENT@25..26 "x" + DOT@26..27 "." + NAME_REF@27..31 + INT_NUMBER@27..31 "1i32" + SEMICOLON@31..32 ";" + WHITESPACE@32..37 "\n " + EXPR_STMT@37..44 + FIELD_EXPR@37..43 + PATH_EXPR@37..38 + PATH@37..38 + PATH_SEGMENT@37..38 + NAME_REF@37..38 + IDENT@37..38 "x" + DOT@38..39 "." + NAME_REF@39..43 + INT_NUMBER@39..43 "0x01" + SEMICOLON@43..44 ";" + WHITESPACE@44..45 "\n" + R_CURLY@45..46 "}" + WHITESPACE@46..47 "\n" +error 27..31: Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix +error 39..43: Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix diff --git a/crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rs b/crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rs new file mode 100644 index 00000000000..30cc4913899 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + x.0.; + x.1i32; + x.0x01; +} diff --git a/crates/syntax/test_data/parser/inline/err/0013_static_underscore.rast b/crates/syntax/test_data/parser/inline/err/0013_static_underscore.rast new file mode 100644 index 00000000000..8d761b90741 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0013_static_underscore.rast @@ -0,0 +1,21 @@ +SOURCE_FILE@0..19 + STATIC@0..18 + STATIC_KW@0..6 "static" + WHITESPACE@6..7 " " + ERROR@7..8 + UNDERSCORE@7..8 "_" + COLON@8..9 ":" + WHITESPACE@9..10 " " + PATH_TYPE@10..13 + PATH@10..13 + PATH_SEGMENT@10..13 + NAME_REF@10..13 + IDENT@10..13 "i32" + WHITESPACE@13..14 " " + EQ@14..15 "=" + WHITESPACE@15..16 " " + LITERAL@16..17 + INT_NUMBER@16..17 "5" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" +error 7..7: expected a name diff --git a/crates/syntax/test_data/parser/inline/err/0013_static_underscore.rs b/crates/syntax/test_data/parser/inline/err/0013_static_underscore.rs new file mode 100644 index 00000000000..df8cecb4326 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0013_static_underscore.rs @@ -0,0 +1 @@ +static _: i32 = 5; diff --git a/crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast b/crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast new file mode 100644 index 00000000000..a81c442c0d8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rast @@ -0,0 +1,48 @@ +SOURCE_FILE@0..45 + FN@0..44 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..44 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + RECORD_EXPR@16..42 + PATH@16..17 + PATH_SEGMENT@16..17 + NAME_REF@16..17 + IDENT@16..17 "S" + WHITESPACE@17..18 " " + RECORD_EXPR_FIELD_LIST@18..42 + L_CURLY@18..19 "{" + WHITESPACE@19..20 " " + RECORD_EXPR_FIELD@20..40 + NAME_REF@20..25 + IDENT@20..25 "field" + WHITESPACE@25..26 " " + RANGE_EXPR@26..40 + DOT2@26..28 ".." + CALL_EXPR@28..40 + PATH_EXPR@28..38 + PATH@28..38 + PATH@28..29 + PATH_SEGMENT@28..29 + NAME_REF@28..29 + IDENT@28..29 "S" + COLON2@29..31 "::" + PATH_SEGMENT@31..38 + NAME_REF@31..38 + IDENT@31..38 "default" + ARG_LIST@38..40 + L_PAREN@38..39 "(" + R_PAREN@39..40 ")" + WHITESPACE@40..41 " " + R_CURLY@41..42 "}" + WHITESPACE@42..43 "\n" + R_CURLY@43..44 "}" + WHITESPACE@44..45 "\n" +error 25..25: expected COLON diff --git a/crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rs b/crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rs new file mode 100644 index 00000000000..a4e5b2f6933 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0014_record_literal_before_ellipsis_recovery.rs @@ -0,0 +1,3 @@ +fn main() { + S { field ..S::default() } +} diff --git a/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast b/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast new file mode 100644 index 00000000000..2f59d0606c0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rast @@ -0,0 +1,15 @@ +SOURCE_FILE@0..13 + USE@0..12 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..12 + PATH@4..12 + PATH@4..9 + PATH_SEGMENT@4..9 + CRATE_KW@4..9 "crate" + COLON2@9..11 "::" + ERROR@11..12 + SEMICOLON@11..12 ";" + WHITESPACE@12..13 "\n" +error 11..11: expected identifier +error 12..12: expected SEMICOLON diff --git a/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rs b/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rs new file mode 100644 index 00000000000..7510664e102 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/err/0015_empty_segment.rs @@ -0,0 +1 @@ +use crate::; diff --git a/crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rast b/crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rast new file mode 100644 index 00000000000..c7289e4008a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rast @@ -0,0 +1,71 @@ +SOURCE_FILE@0..83 + IMPL@0..82 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "F" + WHITESPACE@6..7 " " + ASSOC_ITEM_LIST@7..82 + L_CURLY@7..8 "{" + WHITESPACE@8..13 "\n " + TYPE_ALIAS@13..27 + TYPE_KW@13..17 "type" + WHITESPACE@17..18 " " + NAME@18..19 + IDENT@18..19 "A" + COLON@19..20 ":" + WHITESPACE@20..21 " " + TYPE_BOUND_LIST@21..26 + TYPE_BOUND@21..26 + PATH_TYPE@21..26 + PATH@21..26 + PATH_SEGMENT@21..26 + NAME_REF@21..26 + IDENT@21..26 "Clone" + SEMICOLON@26..27 ";" + WHITESPACE@27..32 "\n " + CONST@32..45 + CONST_KW@32..37 "const" + WHITESPACE@37..38 " " + NAME@38..39 + IDENT@38..39 "B" + COLON@39..40 ":" + WHITESPACE@40..41 " " + PATH_TYPE@41..44 + PATH@41..44 + PATH_SEGMENT@41..44 + NAME_REF@41..44 + IDENT@41..44 "i32" + SEMICOLON@44..45 ";" + WHITESPACE@45..50 "\n " + FN@50..61 + FN_KW@50..52 "fn" + WHITESPACE@52..53 " " + NAME@53..56 + IDENT@53..56 "foo" + PARAM_LIST@56..58 + L_PAREN@56..57 "(" + R_PAREN@57..58 ")" + WHITESPACE@58..59 " " + BLOCK_EXPR@59..61 + L_CURLY@59..60 "{" + R_CURLY@60..61 "}" + WHITESPACE@61..66 "\n " + FN@66..80 + FN_KW@66..68 "fn" + WHITESPACE@68..69 " " + NAME@69..72 + IDENT@69..72 "bar" + PARAM_LIST@72..79 + L_PAREN@72..73 "(" + SELF_PARAM@73..78 + AMP@73..74 "&" + SELF_KW@74..78 "self" + R_PAREN@78..79 ")" + SEMICOLON@79..80 ";" + WHITESPACE@80..81 "\n" + R_CURLY@81..82 "}" + WHITESPACE@82..83 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rs b/crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rs new file mode 100644 index 00000000000..a5ec3239f8f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0001_trait_item_list.rs @@ -0,0 +1,6 @@ +impl F { + type A: Clone; + const B: i32; + fn foo() {} + fn bar(&self); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast new file mode 100644 index 00000000000..1e80dd7e27f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast @@ -0,0 +1,136 @@ +SOURCE_FILE@0..249 + USE@0..58 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..57 + USE_TREE_LIST@4..57 + L_CURLY@4..5 "{" + USE_TREE@5..28 + PATH@5..28 + PATH@5..22 + PATH@5..16 + PATH@5..10 + PATH_SEGMENT@5..10 + CRATE_KW@5..10 "crate" + COLON2@10..12 "::" + PATH_SEGMENT@12..16 + NAME_REF@12..16 + IDENT@12..16 "path" + COLON2@16..18 "::" + PATH_SEGMENT@18..22 + NAME_REF@18..22 + IDENT@18..22 "from" + COLON2@22..24 "::" + PATH_SEGMENT@24..28 + NAME_REF@24..28 + IDENT@24..28 "root" + COMMA@28..29 "," + WHITESPACE@29..30 " " + USE_TREE@30..56 + PATH@30..56 + PATH@30..44 + PATH@30..38 + PATH@30..32 + PATH_SEGMENT@30..32 + NAME_REF@30..32 + IDENT@30..32 "or" + COLON2@32..34 "::" + PATH_SEGMENT@34..38 + NAME_REF@34..38 + IDENT@34..38 "path" + COLON2@38..40 "::" + PATH_SEGMENT@40..44 + NAME_REF@40..44 + IDENT@40..44 "from" + COLON2@44..46 "::" + PATH_SEGMENT@46..56 + NAME_REF@46..56 + IDENT@46..56 "crate_name" + R_CURLY@56..57 "}" + SEMICOLON@57..58 ";" + WHITESPACE@58..59 " " + COMMENT@59..97 "// Rust 2018 (with a ..." + WHITESPACE@97..98 "\n" + USE@98..121 + USE_KW@98..101 "use" + WHITESPACE@101..102 " " + USE_TREE@102..120 + USE_TREE_LIST@102..120 + L_CURLY@102..103 "{" + USE_TREE@103..119 + PATH@103..119 + PATH@103..113 + PATH@103..107 + PATH_SEGMENT@103..107 + NAME_REF@103..107 + IDENT@103..107 "path" + COLON2@107..109 "::" + PATH_SEGMENT@109..113 + NAME_REF@109..113 + IDENT@109..113 "from" + COLON2@113..115 "::" + PATH_SEGMENT@115..119 + NAME_REF@115..119 + IDENT@115..119 "root" + R_CURLY@119..120 "}" + SEMICOLON@120..121 ";" + WHITESPACE@121..122 " " + COMMENT@122..134 "// Rust 2015" + WHITESPACE@134..135 "\n" + USE@135..166 + USE_KW@135..138 "use" + WHITESPACE@138..139 " " + USE_TREE@139..165 + COLON2@139..141 "::" + USE_TREE_LIST@141..165 + L_CURLY@141..142 "{" + USE_TREE@142..164 + PATH@142..164 + PATH@142..158 + PATH@142..146 + PATH_SEGMENT@142..146 + NAME_REF@142..146 + IDENT@142..146 "some" + COLON2@146..148 "::" + PATH_SEGMENT@148..158 + NAME_REF@148..158 + IDENT@148..158 "arbritrary" + COLON2@158..160 "::" + PATH_SEGMENT@160..164 + NAME_REF@160..164 + IDENT@160..164 "path" + R_CURLY@164..165 "}" + SEMICOLON@165..166 ";" + WHITESPACE@166..167 " " + COMMENT@167..179 "// Rust 2015" + WHITESPACE@179..180 "\n" + USE@180..205 + USE_KW@180..183 "use" + WHITESPACE@183..184 " " + USE_TREE@184..204 + COLON2@184..186 "::" + USE_TREE_LIST@186..204 + L_CURLY@186..187 "{" + USE_TREE@187..203 + USE_TREE_LIST@187..203 + L_CURLY@187..188 "{" + USE_TREE@188..202 + USE_TREE_LIST@188..202 + L_CURLY@188..189 "{" + USE_TREE@189..201 + PATH@189..201 + PATH@189..193 + PATH_SEGMENT@189..193 + NAME_REF@189..193 + IDENT@189..193 "root" + COLON2@193..195 "::" + PATH_SEGMENT@195..201 + NAME_REF@195..201 + IDENT@195..201 "export" + R_CURLY@201..202 "}" + R_CURLY@202..203 "}" + R_CURLY@203..204 "}" + SEMICOLON@204..205 ";" + WHITESPACE@205..206 " " + COMMENT@206..248 "// Nonsensical but pe ..." + WHITESPACE@248..249 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs new file mode 100644 index 00000000000..381cba1e29e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs @@ -0,0 +1,4 @@ +use {crate::path::from::root, or::path::from::crate_name}; // Rust 2018 (with a crate named `or`) +use {path::from::root}; // Rust 2015 +use ::{some::arbritrary::path}; // Rust 2015 +use ::{{{root::export}}}; // Nonsensical but perfectly legal nesting diff --git a/crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rast b/crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rast new file mode 100644 index 00000000000..62da7b88734 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rast @@ -0,0 +1,60 @@ +SOURCE_FILE@0..54 + FN@0..53 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..12 + IDENT@3..12 "for_trait" + GENERIC_PARAM_LIST@12..15 + L_ANGLE@12..13 "<" + TYPE_PARAM@13..14 + NAME@13..14 + IDENT@13..14 "F" + R_ANGLE@14..15 ">" + PARAM_LIST@15..17 + L_PAREN@15..16 "(" + R_PAREN@16..17 ")" + WHITESPACE@17..18 "\n" + WHERE_CLAUSE@18..49 + WHERE_KW@18..23 "where" + WHITESPACE@23..27 "\n " + WHERE_PRED@27..49 + FOR_KW@27..30 "for" + GENERIC_PARAM_LIST@30..34 + L_ANGLE@30..31 "<" + LIFETIME_PARAM@31..33 + LIFETIME@31..33 "\'a" + R_ANGLE@33..34 ">" + WHITESPACE@34..35 " " + PATH_TYPE@35..36 + PATH@35..36 + PATH_SEGMENT@35..36 + NAME_REF@35..36 + IDENT@35..36 "F" + COLON@36..37 ":" + WHITESPACE@37..38 " " + TYPE_BOUND_LIST@38..49 + TYPE_BOUND@38..49 + PATH_TYPE@38..49 + PATH@38..49 + PATH_SEGMENT@38..49 + NAME_REF@38..40 + IDENT@38..40 "Fn" + PARAM_LIST@40..49 + L_PAREN@40..41 "(" + PARAM@41..48 + REF_TYPE@41..48 + AMP@41..42 "&" + LIFETIME@42..44 "\'a" + WHITESPACE@44..45 " " + PATH_TYPE@45..48 + PATH@45..48 + PATH_SEGMENT@45..48 + NAME_REF@45..48 + IDENT@45..48 "str" + R_PAREN@48..49 ")" + WHITESPACE@49..50 "\n" + BLOCK_EXPR@50..53 + L_CURLY@50..51 "{" + WHITESPACE@51..52 " " + R_CURLY@52..53 "}" + WHITESPACE@53..54 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rs b/crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rs new file mode 100644 index 00000000000..423bc105bd7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0003_where_pred_for.rs @@ -0,0 +1,4 @@ +fn for_trait() +where + for<'a> F: Fn(&'a str) +{ } diff --git a/crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast b/crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast new file mode 100644 index 00000000000..b650735ba1d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rast @@ -0,0 +1,60 @@ +SOURCE_FILE@0..39 + TYPE_ALIAS@0..38 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "F" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PATH_TYPE@9..37 + PATH@9..37 + PATH_SEGMENT@9..37 + NAME_REF@9..12 + IDENT@9..12 "Box" + GENERIC_ARG_LIST@12..37 + L_ANGLE@12..13 "<" + TYPE_ARG@13..36 + PATH_TYPE@13..36 + PATH@13..36 + PATH_SEGMENT@13..36 + NAME_REF@13..15 + IDENT@13..15 "Fn" + PARAM_LIST@15..36 + L_PAREN@15..16 "(" + PARAM@16..19 + PATH_TYPE@16..19 + PATH@16..19 + PATH_SEGMENT@16..19 + NAME_REF@16..19 + IDENT@16..19 "i32" + COMMA@19..20 "," + WHITESPACE@20..21 " " + PARAM@21..25 + REF_TYPE@21..25 + AMP@21..22 "&" + PATH_TYPE@22..25 + PATH@22..25 + PATH_SEGMENT@22..25 + NAME_REF@22..25 + IDENT@22..25 "i32" + COMMA@25..26 "," + WHITESPACE@26..27 " " + PARAM@27..31 + REF_TYPE@27..31 + AMP@27..28 "&" + PATH_TYPE@28..31 + PATH@28..31 + PATH_SEGMENT@28..31 + NAME_REF@28..31 + IDENT@28..31 "i32" + COMMA@31..32 "," + WHITESPACE@32..33 " " + PARAM@33..35 + TUPLE_TYPE@33..35 + L_PAREN@33..34 "(" + R_PAREN@34..35 ")" + R_PAREN@35..36 ")" + R_ANGLE@36..37 ">" + SEMICOLON@37..38 ";" + WHITESPACE@38..39 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rs b/crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rs new file mode 100644 index 00000000000..93636e926e1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rs @@ -0,0 +1 @@ +type F = Box; diff --git a/crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rast b/crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rast new file mode 100644 index 00000000000..8e0252ce743 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rast @@ -0,0 +1,37 @@ +SOURCE_FILE@0..28 + FN@0..27 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + GENERIC_PARAM_LIST@6..23 + L_ANGLE@6..7 "<" + TYPE_PARAM@7..22 + NAME@7..8 + IDENT@7..8 "T" + COLON@8..9 ":" + WHITESPACE@9..10 " " + TYPE_BOUND_LIST@10..22 + TYPE_BOUND@10..15 + PATH_TYPE@10..15 + PATH@10..15 + PATH_SEGMENT@10..15 + NAME_REF@10..15 + IDENT@10..15 "Clone" + WHITESPACE@15..16 " " + PLUS@16..17 "+" + WHITESPACE@17..18 " " + TYPE_BOUND@18..22 + PATH_TYPE@18..22 + PATH@18..22 + PATH_SEGMENT@18..22 + NAME_REF@18..22 + IDENT@18..22 "Copy" + R_ANGLE@22..23 ">" + PARAM_LIST@23..25 + L_PAREN@23..24 "(" + R_PAREN@24..25 ")" + BLOCK_EXPR@25..27 + L_CURLY@25..26 "{" + R_CURLY@26..27 "}" + WHITESPACE@27..28 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rs b/crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rs new file mode 100644 index 00000000000..9df40ed396c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0005_function_type_params.rs @@ -0,0 +1 @@ +fn foo(){} diff --git a/crates/syntax/test_data/parser/inline/ok/0006_self_param.rast b/crates/syntax/test_data/parser/inline/ok/0006_self_param.rast new file mode 100644 index 00000000000..d24ad74232e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0006_self_param.rast @@ -0,0 +1,116 @@ +SOURCE_FILE@0..128 + IMPL@0..127 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "S" + WHITESPACE@6..7 " " + ASSOC_ITEM_LIST@7..127 + L_CURLY@7..8 "{" + WHITESPACE@8..13 "\n " + FN@13..26 + FN_KW@13..15 "fn" + WHITESPACE@15..16 " " + NAME@16..17 + IDENT@16..17 "a" + PARAM_LIST@17..23 + L_PAREN@17..18 "(" + SELF_PARAM@18..22 + SELF_KW@18..22 "self" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + BLOCK_EXPR@24..26 + L_CURLY@24..25 "{" + R_CURLY@25..26 "}" + WHITESPACE@26..31 "\n " + FN@31..46 + FN_KW@31..33 "fn" + WHITESPACE@33..34 " " + NAME@34..35 + IDENT@34..35 "b" + PARAM_LIST@35..43 + L_PAREN@35..36 "(" + SELF_PARAM@36..41 + AMP@36..37 "&" + SELF_KW@37..41 "self" + COMMA@41..42 "," + R_PAREN@42..43 ")" + WHITESPACE@43..44 " " + BLOCK_EXPR@44..46 + L_CURLY@44..45 "{" + R_CURLY@45..46 "}" + WHITESPACE@46..51 "\n " + FN@51..69 + FN_KW@51..53 "fn" + WHITESPACE@53..54 " " + NAME@54..55 + IDENT@54..55 "c" + PARAM_LIST@55..66 + L_PAREN@55..56 "(" + SELF_PARAM@56..64 + AMP@56..57 "&" + LIFETIME@57..59 "\'a" + WHITESPACE@59..60 " " + SELF_KW@60..64 "self" + COMMA@64..65 "," + R_PAREN@65..66 ")" + WHITESPACE@66..67 " " + BLOCK_EXPR@67..69 + L_CURLY@67..68 "{" + R_CURLY@68..69 "}" + WHITESPACE@69..74 "\n " + FN@74..103 + FN_KW@74..76 "fn" + WHITESPACE@76..77 " " + NAME@77..78 + IDENT@77..78 "d" + PARAM_LIST@78..100 + L_PAREN@78..79 "(" + SELF_PARAM@79..91 + AMP@79..80 "&" + LIFETIME@80..82 "\'a" + WHITESPACE@82..83 " " + MUT_KW@83..86 "mut" + WHITESPACE@86..87 " " + SELF_KW@87..91 "self" + COMMA@91..92 "," + WHITESPACE@92..93 " " + PARAM@93..99 + IDENT_PAT@93..94 + NAME@93..94 + IDENT@93..94 "x" + COLON@94..95 ":" + WHITESPACE@95..96 " " + PATH_TYPE@96..99 + PATH@96..99 + PATH_SEGMENT@96..99 + NAME_REF@96..99 + IDENT@96..99 "i32" + R_PAREN@99..100 ")" + WHITESPACE@100..101 " " + BLOCK_EXPR@101..103 + L_CURLY@101..102 "{" + R_CURLY@102..103 "}" + WHITESPACE@103..108 "\n " + FN@108..125 + FN_KW@108..110 "fn" + WHITESPACE@110..111 " " + NAME@111..112 + IDENT@111..112 "e" + PARAM_LIST@112..122 + L_PAREN@112..113 "(" + SELF_PARAM@113..121 + MUT_KW@113..116 "mut" + WHITESPACE@116..117 " " + SELF_KW@117..121 "self" + R_PAREN@121..122 ")" + WHITESPACE@122..123 " " + BLOCK_EXPR@123..125 + L_CURLY@123..124 "{" + R_CURLY@124..125 "}" + WHITESPACE@125..126 "\n" + R_CURLY@126..127 "}" + WHITESPACE@127..128 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0006_self_param.rs b/crates/syntax/test_data/parser/inline/ok/0006_self_param.rs new file mode 100644 index 00000000000..80c0a43f5de --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0006_self_param.rs @@ -0,0 +1,7 @@ +impl S { + fn a(self) {} + fn b(&self,) {} + fn c(&'a self,) {} + fn d(&'a mut self, x: i32) {} + fn e(mut self) {} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast b/crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast new file mode 100644 index 00000000000..e95688f56a5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rast @@ -0,0 +1,40 @@ +SOURCE_FILE@0..35 + STRUCT@0..34 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + GENERIC_PARAM_LIST@8..33 + L_ANGLE@8..9 "<" + TYPE_PARAM@9..32 + NAME@9..10 + IDENT@9..10 "T" + COLON@10..11 ":" + WHITESPACE@11..12 " " + TYPE_BOUND_LIST@12..32 + TYPE_BOUND@12..14 + LIFETIME@12..14 "\'a" + WHITESPACE@14..15 " " + PLUS@15..16 "+" + WHITESPACE@16..17 " " + TYPE_BOUND@17..23 + QUESTION@17..18 "?" + PATH_TYPE@18..23 + PATH@18..23 + PATH_SEGMENT@18..23 + NAME_REF@18..23 + IDENT@18..23 "Sized" + WHITESPACE@23..24 " " + PLUS@24..25 "+" + WHITESPACE@25..26 " " + TYPE_BOUND@26..32 + L_PAREN@26..27 "(" + PATH_TYPE@27..31 + PATH@27..31 + PATH_SEGMENT@27..31 + NAME_REF@27..31 + IDENT@27..31 "Copy" + R_PAREN@31..32 ")" + R_ANGLE@32..33 ">" + SEMICOLON@33..34 ";" + WHITESPACE@34..35 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rs b/crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rs new file mode 100644 index 00000000000..919bde0ee92 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0007_type_param_bounds.rs @@ -0,0 +1 @@ +struct S; diff --git a/crates/syntax/test_data/parser/inline/ok/0008_path_part.rast b/crates/syntax/test_data/parser/inline/ok/0008_path_part.rast new file mode 100644 index 00000000000..7d2f7eab05b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0008_path_part.rast @@ -0,0 +1,96 @@ +SOURCE_FILE@0..103 + FN@0..102 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..102 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..33 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + PATH_PAT@19..27 + PATH@19..27 + PATH@19..22 + PATH_SEGMENT@19..22 + NAME_REF@19..22 + IDENT@19..22 "foo" + COLON2@22..24 "::" + PATH_SEGMENT@24..27 + NAME_REF@24..27 + IDENT@24..27 "Bar" + WHITESPACE@27..28 " " + EQ@28..29 "=" + WHITESPACE@29..30 " " + TUPLE_EXPR@30..32 + L_PAREN@30..31 "(" + R_PAREN@31..32 ")" + SEMICOLON@32..33 ";" + WHITESPACE@33..38 "\n " + LET_STMT@38..53 + LET_KW@38..41 "let" + WHITESPACE@41..42 " " + PATH_PAT@42..47 + PATH@42..47 + PATH_SEGMENT@42..47 + COLON2@42..44 "::" + NAME_REF@44..47 + IDENT@44..47 "Bar" + WHITESPACE@47..48 " " + EQ@48..49 "=" + WHITESPACE@49..50 " " + TUPLE_EXPR@50..52 + L_PAREN@50..51 "(" + R_PAREN@51..52 ")" + SEMICOLON@52..53 ";" + WHITESPACE@53..58 "\n " + LET_STMT@58..78 + LET_KW@58..61 "let" + WHITESPACE@61..62 " " + RECORD_PAT@62..72 + PATH@62..65 + PATH_SEGMENT@62..65 + NAME_REF@62..65 + IDENT@62..65 "Bar" + WHITESPACE@65..66 " " + RECORD_PAT_FIELD_LIST@66..72 + L_CURLY@66..67 "{" + WHITESPACE@67..68 " " + DOT2@68..70 ".." + WHITESPACE@70..71 " " + R_CURLY@71..72 "}" + WHITESPACE@72..73 " " + EQ@73..74 "=" + WHITESPACE@74..75 " " + TUPLE_EXPR@75..77 + L_PAREN@75..76 "(" + R_PAREN@76..77 ")" + SEMICOLON@77..78 ";" + WHITESPACE@78..83 "\n " + LET_STMT@83..100 + LET_KW@83..86 "let" + WHITESPACE@86..87 " " + TUPLE_STRUCT_PAT@87..94 + PATH@87..90 + PATH_SEGMENT@87..90 + NAME_REF@87..90 + IDENT@87..90 "Bar" + L_PAREN@90..91 "(" + REST_PAT@91..93 + DOT2@91..93 ".." + R_PAREN@93..94 ")" + WHITESPACE@94..95 " " + EQ@95..96 "=" + WHITESPACE@96..97 " " + TUPLE_EXPR@97..99 + L_PAREN@97..98 "(" + R_PAREN@98..99 ")" + SEMICOLON@99..100 ";" + WHITESPACE@100..101 "\n" + R_CURLY@101..102 "}" + WHITESPACE@102..103 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0008_path_part.rs b/crates/syntax/test_data/parser/inline/ok/0008_path_part.rs new file mode 100644 index 00000000000..f6e32c7c149 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0008_path_part.rs @@ -0,0 +1,6 @@ +fn foo() { + let foo::Bar = (); + let ::Bar = (); + let Bar { .. } = (); + let Bar(..) = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rast b/crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rast new file mode 100644 index 00000000000..f62826fd55d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rast @@ -0,0 +1,24 @@ +SOURCE_FILE@0..26 + FN@0..25 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..25 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..23 + LOOP_EXPR@15..22 + LOOP_KW@15..19 "loop" + WHITESPACE@19..20 " " + BLOCK_EXPR@20..22 + L_CURLY@20..21 "{" + R_CURLY@21..22 "}" + SEMICOLON@22..23 ";" + WHITESPACE@23..24 "\n" + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rs b/crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rs new file mode 100644 index 00000000000..9f078fa4816 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0009_loop_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + loop {}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0010_extern_block.rast b/crates/syntax/test_data/parser/inline/ok/0010_extern_block.rast new file mode 100644 index 00000000000..869875875e1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0010_extern_block.rast @@ -0,0 +1,9 @@ +SOURCE_FILE@0..10 + EXTERN_BLOCK@0..9 + ABI@0..6 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + EXTERN_ITEM_LIST@7..9 + L_CURLY@7..8 "{" + R_CURLY@8..9 "}" + WHITESPACE@9..10 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0010_extern_block.rs b/crates/syntax/test_data/parser/inline/ok/0010_extern_block.rs new file mode 100644 index 00000000000..26a9ccd1e67 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0010_extern_block.rs @@ -0,0 +1 @@ +extern {} diff --git a/crates/syntax/test_data/parser/inline/ok/0011_field_expr.rast b/crates/syntax/test_data/parser/inline/ok/0011_field_expr.rast new file mode 100644 index 00000000000..66a609346ae --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0011_field_expr.rast @@ -0,0 +1,59 @@ +SOURCE_FILE@0..48 + FN@0..47 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..47 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..21 + FIELD_EXPR@15..20 + PATH_EXPR@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "x" + DOT@16..17 "." + NAME_REF@17..20 + IDENT@17..20 "foo" + SEMICOLON@20..21 ";" + WHITESPACE@21..26 "\n " + EXPR_STMT@26..34 + FIELD_EXPR@26..33 + FIELD_EXPR@26..29 + PATH_EXPR@26..27 + PATH@26..27 + PATH_SEGMENT@26..27 + NAME_REF@26..27 + IDENT@26..27 "x" + DOT@27..28 "." + NAME_REF@28..29 + INT_NUMBER@28..29 "0" + DOT@29..30 "." + NAME_REF@30..33 + IDENT@30..33 "bar" + SEMICOLON@33..34 ";" + WHITESPACE@34..39 "\n " + EXPR_STMT@39..45 + CALL_EXPR@39..44 + FIELD_EXPR@39..42 + PATH_EXPR@39..40 + PATH@39..40 + PATH_SEGMENT@39..40 + NAME_REF@39..40 + IDENT@39..40 "x" + DOT@40..41 "." + NAME_REF@41..42 + INT_NUMBER@41..42 "0" + ARG_LIST@42..44 + L_PAREN@42..43 "(" + R_PAREN@43..44 ")" + SEMICOLON@44..45 ";" + WHITESPACE@45..46 "\n" + R_CURLY@46..47 "}" + WHITESPACE@47..48 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0011_field_expr.rs b/crates/syntax/test_data/parser/inline/ok/0011_field_expr.rs new file mode 100644 index 00000000000..b8da2ddc309 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0011_field_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + x.foo; + x.0.bar; + x.0(); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast b/crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast new file mode 100644 index 00000000000..28c94bfd64f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rast @@ -0,0 +1,33 @@ +SOURCE_FILE@0..31 + TYPE_ALIAS@0..30 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..8 + IDENT@5..8 "Foo" + WHITESPACE@8..9 " " + WHERE_CLAUSE@9..24 + WHERE_KW@9..14 "where" + WHITESPACE@14..15 " " + WHERE_PRED@15..24 + PATH_TYPE@15..18 + PATH@15..18 + PATH_SEGMENT@15..18 + NAME_REF@15..18 + IDENT@15..18 "Foo" + COLON@18..19 ":" + WHITESPACE@19..20 " " + TYPE_BOUND_LIST@20..24 + TYPE_BOUND@20..24 + PATH_TYPE@20..24 + PATH@20..24 + PATH_SEGMENT@20..24 + NAME_REF@20..24 + IDENT@20..24 "Copy" + WHITESPACE@24..25 " " + EQ@25..26 "=" + WHITESPACE@26..27 " " + TUPLE_TYPE@27..29 + L_PAREN@27..28 "(" + R_PAREN@28..29 ")" + SEMICOLON@29..30 ";" + WHITESPACE@30..31 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rs b/crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rs new file mode 100644 index 00000000000..a602d07f03b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rs @@ -0,0 +1 @@ +type Foo where Foo: Copy = (); diff --git a/crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast b/crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast new file mode 100644 index 00000000000..d33215b507c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rast @@ -0,0 +1,35 @@ +SOURCE_FILE@0..36 + TYPE_ALIAS@0..17 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "M" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PTR_TYPE@9..16 + STAR@9..10 "*" + MUT_KW@10..13 "mut" + WHITESPACE@13..14 " " + TUPLE_TYPE@14..16 + L_PAREN@14..15 "(" + R_PAREN@15..16 ")" + SEMICOLON@16..17 ";" + WHITESPACE@17..18 "\n" + TYPE_ALIAS@18..35 + TYPE_KW@18..22 "type" + WHITESPACE@22..23 " " + NAME@23..24 + IDENT@23..24 "C" + WHITESPACE@24..25 " " + EQ@25..26 "=" + WHITESPACE@26..27 " " + PTR_TYPE@27..34 + STAR@27..28 "*" + MUT_KW@28..31 "mut" + WHITESPACE@31..32 " " + TUPLE_TYPE@32..34 + L_PAREN@32..33 "(" + R_PAREN@33..34 ")" + SEMICOLON@34..35 ";" + WHITESPACE@35..36 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rs b/crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rs new file mode 100644 index 00000000000..04b2bb9ba5c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rs @@ -0,0 +1,2 @@ +type M = *mut (); +type C = *mut (); diff --git a/crates/syntax/test_data/parser/inline/ok/0014_never_type.rast b/crates/syntax/test_data/parser/inline/ok/0014_never_type.rast new file mode 100644 index 00000000000..b1d5106ce9a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0014_never_type.rast @@ -0,0 +1,13 @@ +SOURCE_FILE@0..16 + TYPE_ALIAS@0..15 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..10 + IDENT@5..10 "Never" + WHITESPACE@10..11 " " + EQ@11..12 "=" + WHITESPACE@12..13 " " + NEVER_TYPE@13..14 + BANG@13..14 "!" + SEMICOLON@14..15 ";" + WHITESPACE@15..16 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0014_never_type.rs b/crates/syntax/test_data/parser/inline/ok/0014_never_type.rs new file mode 100644 index 00000000000..de399fcf4a2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0014_never_type.rs @@ -0,0 +1 @@ +type Never = !; diff --git a/crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rast b/crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rast new file mode 100644 index 00000000000..104e153ce69 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rast @@ -0,0 +1,35 @@ +SOURCE_FILE@0..69 + FN@0..68 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..68 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LOOP_EXPR@15..66 + LOOP_KW@15..19 "loop" + WHITESPACE@19..20 " " + BLOCK_EXPR@20..66 + L_CURLY@20..21 "{" + WHITESPACE@21..30 "\n " + EXPR_STMT@30..39 + CONTINUE_EXPR@30..38 + CONTINUE_KW@30..38 "continue" + SEMICOLON@38..39 ";" + WHITESPACE@39..48 "\n " + EXPR_STMT@48..60 + CONTINUE_EXPR@48..59 + CONTINUE_KW@48..56 "continue" + WHITESPACE@56..57 " " + LIFETIME@57..59 "\'l" + SEMICOLON@59..60 ";" + WHITESPACE@60..65 "\n " + R_CURLY@65..66 "}" + WHITESPACE@66..67 "\n" + R_CURLY@67..68 "}" + WHITESPACE@68..69 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rs b/crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rs new file mode 100644 index 00000000000..474cc3f0e0c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0015_continue_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + loop { + continue; + continue 'l; + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0017_array_type.rast b/crates/syntax/test_data/parser/inline/ok/0017_array_type.rast new file mode 100644 index 00000000000..c131df1c951 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0017_array_type.rast @@ -0,0 +1,21 @@ +SOURCE_FILE@0..19 + TYPE_ALIAS@0..18 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + ARRAY_TYPE@9..17 + L_BRACK@9..10 "[" + TUPLE_TYPE@10..12 + L_PAREN@10..11 "(" + R_PAREN@11..12 ")" + SEMICOLON@12..13 ";" + WHITESPACE@13..14 " " + LITERAL@14..16 + INT_NUMBER@14..16 "92" + R_BRACK@16..17 "]" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0017_array_type.rs b/crates/syntax/test_data/parser/inline/ok/0017_array_type.rs new file mode 100644 index 00000000000..27eb22f2238 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0017_array_type.rs @@ -0,0 +1 @@ +type T = [(); 92]; diff --git a/crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rast b/crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rast new file mode 100644 index 00000000000..ddbd665888f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rast @@ -0,0 +1,72 @@ +SOURCE_FILE@0..69 + IMPL@0..68 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "S" + WHITESPACE@6..7 " " + ASSOC_ITEM_LIST@7..68 + L_CURLY@7..8 "{" + WHITESPACE@8..13 "\n " + FN@13..33 + FN_KW@13..15 "fn" + WHITESPACE@15..16 " " + NAME@16..17 + IDENT@16..17 "a" + PARAM_LIST@17..30 + L_PAREN@17..18 "(" + SELF_PARAM@18..29 + SELF_KW@18..22 "self" + COLON@22..23 ":" + WHITESPACE@23..24 " " + REF_TYPE@24..29 + AMP@24..25 "&" + PATH_TYPE@25..29 + PATH@25..29 + PATH_SEGMENT@25..29 + NAME_REF@25..29 + IDENT@25..29 "Self" + R_PAREN@29..30 ")" + WHITESPACE@30..31 " " + BLOCK_EXPR@31..33 + L_CURLY@31..32 "{" + R_CURLY@32..33 "}" + WHITESPACE@33..38 "\n " + FN@38..66 + FN_KW@38..40 "fn" + WHITESPACE@40..41 " " + NAME@41..42 + IDENT@41..42 "b" + PARAM_LIST@42..63 + L_PAREN@42..43 "(" + SELF_PARAM@43..62 + MUT_KW@43..46 "mut" + WHITESPACE@46..47 " " + SELF_KW@47..51 "self" + COLON@51..52 ":" + WHITESPACE@52..53 " " + PATH_TYPE@53..62 + PATH@53..62 + PATH_SEGMENT@53..62 + NAME_REF@53..56 + IDENT@53..56 "Box" + GENERIC_ARG_LIST@56..62 + L_ANGLE@56..57 "<" + TYPE_ARG@57..61 + PATH_TYPE@57..61 + PATH@57..61 + PATH_SEGMENT@57..61 + NAME_REF@57..61 + IDENT@57..61 "Self" + R_ANGLE@61..62 ">" + R_PAREN@62..63 ")" + WHITESPACE@63..64 " " + BLOCK_EXPR@64..66 + L_CURLY@64..65 "{" + R_CURLY@65..66 "}" + WHITESPACE@66..67 "\n" + R_CURLY@67..68 "}" + WHITESPACE@68..69 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rs b/crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rs new file mode 100644 index 00000000000..6a170d5ac1d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0018_arb_self_types.rs @@ -0,0 +1,4 @@ +impl S { + fn a(self: &Self) {} + fn b(mut self: Box) {} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rast b/crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rast new file mode 100644 index 00000000000..7db38ea4da5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rast @@ -0,0 +1,44 @@ +SOURCE_FILE@0..44 + FN@0..43 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..43 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..20 + PREFIX_EXPR@15..19 + STAR@15..16 "*" + PREFIX_EXPR@16..19 + STAR@16..17 "*" + REF_EXPR@17..19 + AMP@17..18 "&" + LITERAL@18..19 + INT_NUMBER@18..19 "1" + SEMICOLON@19..20 ";" + WHITESPACE@20..25 "\n " + EXPR_STMT@25..32 + PREFIX_EXPR@25..31 + BANG@25..26 "!" + PREFIX_EXPR@26..31 + BANG@26..27 "!" + LITERAL@27..31 + TRUE_KW@27..31 "true" + SEMICOLON@31..32 ";" + WHITESPACE@32..37 "\n " + EXPR_STMT@37..41 + PREFIX_EXPR@37..40 + MINUS@37..38 "-" + PREFIX_EXPR@38..40 + MINUS@38..39 "-" + LITERAL@39..40 + INT_NUMBER@39..40 "1" + SEMICOLON@40..41 ";" + WHITESPACE@41..42 "\n" + R_CURLY@42..43 "}" + WHITESPACE@43..44 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rs b/crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rs new file mode 100644 index 00000000000..f1c3f7118b2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0019_unary_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + **&1; + !!true; + --1; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0020_use_star.rast b/crates/syntax/test_data/parser/inline/ok/0020_use_star.rast new file mode 100644 index 00000000000..b3623c4455d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0020_use_star.rast @@ -0,0 +1,59 @@ +SOURCE_FILE@0..60 + USE@0..6 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..5 + STAR@4..5 "*" + SEMICOLON@5..6 ";" + WHITESPACE@6..7 "\n" + USE@7..15 + USE_KW@7..10 "use" + WHITESPACE@10..11 " " + USE_TREE@11..14 + COLON2@11..13 "::" + STAR@13..14 "*" + SEMICOLON@14..15 ";" + WHITESPACE@15..16 "\n" + USE@16..36 + USE_KW@16..19 "use" + WHITESPACE@19..20 " " + USE_TREE@20..35 + PATH@20..30 + PATH@20..24 + PATH_SEGMENT@20..24 + NAME_REF@20..24 + IDENT@20..24 "some" + COLON2@24..26 "::" + PATH_SEGMENT@26..30 + NAME_REF@26..30 + IDENT@26..30 "path" + COLON2@30..32 "::" + USE_TREE_LIST@32..35 + L_CURLY@32..33 "{" + USE_TREE@33..34 + STAR@33..34 "*" + R_CURLY@34..35 "}" + SEMICOLON@35..36 ";" + WHITESPACE@36..37 "\n" + USE@37..59 + USE_KW@37..40 "use" + WHITESPACE@40..41 " " + USE_TREE@41..58 + PATH@41..51 + PATH@41..45 + PATH_SEGMENT@41..45 + NAME_REF@41..45 + IDENT@41..45 "some" + COLON2@45..47 "::" + PATH_SEGMENT@47..51 + NAME_REF@47..51 + IDENT@47..51 "path" + COLON2@51..53 "::" + USE_TREE_LIST@53..58 + L_CURLY@53..54 "{" + USE_TREE@54..57 + COLON2@54..56 "::" + STAR@56..57 "*" + R_CURLY@57..58 "}" + SEMICOLON@58..59 ";" + WHITESPACE@59..60 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0020_use_star.rs b/crates/syntax/test_data/parser/inline/ok/0020_use_star.rs new file mode 100644 index 00000000000..6f15769a8c7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0020_use_star.rs @@ -0,0 +1,4 @@ +use *; +use ::*; +use some::path::{*}; +use some::path::{::*}; diff --git a/crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rast b/crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rast new file mode 100644 index 00000000000..ca0702aba59 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rast @@ -0,0 +1,78 @@ +SOURCE_FILE@0..89 + IMPL@0..88 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "F" + WHITESPACE@6..7 " " + ASSOC_ITEM_LIST@7..88 + L_CURLY@7..8 "{" + WHITESPACE@8..13 "\n " + TYPE_ALIAS@13..26 + TYPE_KW@13..17 "type" + WHITESPACE@17..18 " " + NAME@18..19 + IDENT@18..19 "A" + WHITESPACE@19..20 " " + EQ@20..21 "=" + WHITESPACE@21..22 " " + PATH_TYPE@22..25 + PATH@22..25 + PATH_SEGMENT@22..25 + NAME_REF@22..25 + IDENT@22..25 "i32" + SEMICOLON@25..26 ";" + WHITESPACE@26..31 "\n " + CONST@31..49 + CONST_KW@31..36 "const" + WHITESPACE@36..37 " " + NAME@37..38 + IDENT@37..38 "B" + COLON@38..39 ":" + WHITESPACE@39..40 " " + PATH_TYPE@40..43 + PATH@40..43 + PATH_SEGMENT@40..43 + NAME_REF@40..43 + IDENT@40..43 "i32" + WHITESPACE@43..44 " " + EQ@44..45 "=" + WHITESPACE@45..46 " " + LITERAL@46..48 + INT_NUMBER@46..48 "92" + SEMICOLON@48..49 ";" + WHITESPACE@49..54 "\n " + FN@54..65 + FN_KW@54..56 "fn" + WHITESPACE@56..57 " " + NAME@57..60 + IDENT@57..60 "foo" + PARAM_LIST@60..62 + L_PAREN@60..61 "(" + R_PAREN@61..62 ")" + WHITESPACE@62..63 " " + BLOCK_EXPR@63..65 + L_CURLY@63..64 "{" + R_CURLY@64..65 "}" + WHITESPACE@65..70 "\n " + FN@70..86 + FN_KW@70..72 "fn" + WHITESPACE@72..73 " " + NAME@73..76 + IDENT@73..76 "bar" + PARAM_LIST@76..83 + L_PAREN@76..77 "(" + SELF_PARAM@77..82 + AMP@77..78 "&" + SELF_KW@78..82 "self" + R_PAREN@82..83 ")" + WHITESPACE@83..84 " " + BLOCK_EXPR@84..86 + L_CURLY@84..85 "{" + R_CURLY@85..86 "}" + WHITESPACE@86..87 "\n" + R_CURLY@87..88 "}" + WHITESPACE@88..89 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rs b/crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rs new file mode 100644 index 00000000000..f108514879d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0021_impl_item_list.rs @@ -0,0 +1,6 @@ +impl F { + type A = i32; + const B: i32 = 92; + fn foo() {} + fn bar(&self) {} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rast b/crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rast new file mode 100644 index 00000000000..50742cbcf1f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rast @@ -0,0 +1,53 @@ +SOURCE_FILE@0..81 + STRUCT@0..20 + VISIBILITY@0..10 + PUB_KW@0..3 "pub" + L_PAREN@3..4 "(" + CRATE_KW@4..9 "crate" + R_PAREN@9..10 ")" + WHITESPACE@10..11 " " + STRUCT_KW@11..17 "struct" + WHITESPACE@17..18 " " + NAME@18..19 + IDENT@18..19 "S" + SEMICOLON@19..20 ";" + WHITESPACE@20..21 "\n" + STRUCT@21..40 + VISIBILITY@21..30 + PUB_KW@21..24 "pub" + L_PAREN@24..25 "(" + SELF_KW@25..29 "self" + R_PAREN@29..30 ")" + WHITESPACE@30..31 " " + STRUCT_KW@31..37 "struct" + WHITESPACE@37..38 " " + NAME@38..39 + IDENT@38..39 "S" + SEMICOLON@39..40 ";" + WHITESPACE@40..41 "\n" + STRUCT@41..60 + VISIBILITY@41..50 + PUB_KW@41..44 "pub" + L_PAREN@44..45 "(" + SELF_KW@45..49 "self" + R_PAREN@49..50 ")" + WHITESPACE@50..51 " " + STRUCT_KW@51..57 "struct" + WHITESPACE@57..58 " " + NAME@58..59 + IDENT@58..59 "S" + SEMICOLON@59..60 ";" + WHITESPACE@60..61 "\n" + STRUCT@61..80 + VISIBILITY@61..70 + PUB_KW@61..64 "pub" + L_PAREN@64..65 "(" + SELF_KW@65..69 "self" + R_PAREN@69..70 ")" + WHITESPACE@70..71 " " + STRUCT_KW@71..77 "struct" + WHITESPACE@77..78 " " + NAME@78..79 + IDENT@78..79 "S" + SEMICOLON@79..80 ";" + WHITESPACE@80..81 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rs b/crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rs new file mode 100644 index 00000000000..faeefde94e2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0022_crate_visibility.rs @@ -0,0 +1,4 @@ +pub(crate) struct S; +pub(self) struct S; +pub(self) struct S; +pub(self) struct S; diff --git a/crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rast b/crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rast new file mode 100644 index 00000000000..e4fe2b948b0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rast @@ -0,0 +1,13 @@ +SOURCE_FILE@0..22 + TYPE_ALIAS@0..21 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..16 + IDENT@5..16 "Placeholder" + WHITESPACE@16..17 " " + EQ@17..18 "=" + WHITESPACE@18..19 " " + INFER_TYPE@19..20 + UNDERSCORE@19..20 "_" + SEMICOLON@20..21 ";" + WHITESPACE@21..22 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rs b/crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rs new file mode 100644 index 00000000000..7952dbd57d6 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0023_placeholder_type.rs @@ -0,0 +1 @@ +type Placeholder = _; diff --git a/crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rast b/crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rast new file mode 100644 index 00000000000..2dbce34b61e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rast @@ -0,0 +1,41 @@ +SOURCE_FILE@0..39 + FN@0..38 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..38 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..36 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + SLICE_PAT@20..30 + L_BRACK@20..21 "[" + IDENT_PAT@21..22 + NAME@21..22 + IDENT@21..22 "a" + COMMA@22..23 "," + WHITESPACE@23..24 " " + IDENT_PAT@24..25 + NAME@24..25 + IDENT@24..25 "b" + COMMA@25..26 "," + WHITESPACE@26..27 " " + REST_PAT@27..29 + DOT2@27..29 ".." + R_BRACK@29..30 "]" + WHITESPACE@30..31 " " + EQ@31..32 "=" + WHITESPACE@32..33 " " + ARRAY_EXPR@33..35 + L_BRACK@33..34 "[" + R_BRACK@34..35 "]" + SEMICOLON@35..36 ";" + WHITESPACE@36..37 "\n" + R_CURLY@37..38 "}" + WHITESPACE@38..39 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rs b/crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rs new file mode 100644 index 00000000000..7955973b952 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0024_slice_pat.rs @@ -0,0 +1,3 @@ +fn main() { + let [a, b, ..] = []; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0025_slice_type.rast b/crates/syntax/test_data/parser/inline/ok/0025_slice_type.rast new file mode 100644 index 00000000000..fd819ea370e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0025_slice_type.rast @@ -0,0 +1,17 @@ +SOURCE_FILE@0..15 + TYPE_ALIAS@0..14 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + SLICE_TYPE@9..13 + L_BRACK@9..10 "[" + TUPLE_TYPE@10..12 + L_PAREN@10..11 "(" + R_PAREN@11..12 ")" + R_BRACK@12..13 "]" + SEMICOLON@13..14 ";" + WHITESPACE@14..15 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0025_slice_type.rs b/crates/syntax/test_data/parser/inline/ok/0025_slice_type.rs new file mode 100644 index 00000000000..4da1af82705 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0025_slice_type.rs @@ -0,0 +1 @@ +type T = [()]; diff --git a/crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast b/crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast new file mode 100644 index 00000000000..467a3013469 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rast @@ -0,0 +1,104 @@ +SOURCE_FILE@0..97 + FN@0..96 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..96 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..28 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + TUPLE_STRUCT_PAT@19..22 + PATH@19..20 + PATH_SEGMENT@19..20 + NAME_REF@19..20 + IDENT@19..20 "S" + L_PAREN@20..21 "(" + R_PAREN@21..22 ")" + WHITESPACE@22..23 " " + EQ@23..24 "=" + WHITESPACE@24..25 " " + TUPLE_EXPR@25..27 + L_PAREN@25..26 "(" + R_PAREN@26..27 ")" + SEMICOLON@27..28 ";" + WHITESPACE@28..33 "\n " + LET_STMT@33..47 + LET_KW@33..36 "let" + WHITESPACE@36..37 " " + TUPLE_STRUCT_PAT@37..41 + PATH@37..38 + PATH_SEGMENT@37..38 + NAME_REF@37..38 + IDENT@37..38 "S" + L_PAREN@38..39 "(" + WILDCARD_PAT@39..40 + UNDERSCORE@39..40 "_" + R_PAREN@40..41 ")" + WHITESPACE@41..42 " " + EQ@42..43 "=" + WHITESPACE@43..44 " " + TUPLE_EXPR@44..46 + L_PAREN@44..45 "(" + R_PAREN@45..46 ")" + SEMICOLON@46..47 ";" + WHITESPACE@47..52 "\n " + LET_STMT@52..67 + LET_KW@52..55 "let" + WHITESPACE@55..56 " " + TUPLE_STRUCT_PAT@56..61 + PATH@56..57 + PATH_SEGMENT@56..57 + NAME_REF@56..57 + IDENT@56..57 "S" + L_PAREN@57..58 "(" + WILDCARD_PAT@58..59 + UNDERSCORE@58..59 "_" + COMMA@59..60 "," + R_PAREN@60..61 ")" + WHITESPACE@61..62 " " + EQ@62..63 "=" + WHITESPACE@63..64 " " + TUPLE_EXPR@64..66 + L_PAREN@64..65 "(" + R_PAREN@65..66 ")" + SEMICOLON@66..67 ";" + WHITESPACE@67..72 "\n " + LET_STMT@72..94 + LET_KW@72..75 "let" + WHITESPACE@75..76 " " + TUPLE_STRUCT_PAT@76..88 + PATH@76..77 + PATH_SEGMENT@76..77 + NAME_REF@76..77 + IDENT@76..77 "S" + L_PAREN@77..78 "(" + WILDCARD_PAT@78..79 + UNDERSCORE@78..79 "_" + COMMA@79..80 "," + WHITESPACE@80..81 " " + REST_PAT@81..83 + DOT2@81..83 ".." + WHITESPACE@83..84 " " + COMMA@84..85 "," + WHITESPACE@85..86 " " + IDENT_PAT@86..87 + NAME@86..87 + IDENT@86..87 "x" + R_PAREN@87..88 ")" + WHITESPACE@88..89 " " + EQ@89..90 "=" + WHITESPACE@90..91 " " + TUPLE_EXPR@91..93 + L_PAREN@91..92 "(" + R_PAREN@92..93 ")" + SEMICOLON@93..94 ";" + WHITESPACE@94..95 "\n" + R_CURLY@95..96 "}" + WHITESPACE@96..97 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rs b/crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rs new file mode 100644 index 00000000000..0dfe6362967 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rs @@ -0,0 +1,6 @@ +fn foo() { + let S() = (); + let S(_) = (); + let S(_,) = (); + let S(_, .. , x) = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rast b/crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rast new file mode 100644 index 00000000000..348b54dc9d8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rast @@ -0,0 +1,49 @@ +SOURCE_FILE@0..52 + FN@0..51 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..51 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..28 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + REF_PAT@20..22 + AMP@20..21 "&" + IDENT_PAT@21..22 + NAME@21..22 + IDENT@21..22 "a" + WHITESPACE@22..23 " " + EQ@23..24 "=" + WHITESPACE@24..25 " " + TUPLE_EXPR@25..27 + L_PAREN@25..26 "(" + R_PAREN@26..27 ")" + SEMICOLON@27..28 ";" + WHITESPACE@28..33 "\n " + LET_STMT@33..49 + LET_KW@33..36 "let" + WHITESPACE@36..37 " " + REF_PAT@37..43 + AMP@37..38 "&" + MUT_KW@38..41 "mut" + WHITESPACE@41..42 " " + IDENT_PAT@42..43 + NAME@42..43 + IDENT@42..43 "b" + WHITESPACE@43..44 " " + EQ@44..45 "=" + WHITESPACE@45..46 " " + TUPLE_EXPR@46..48 + L_PAREN@46..47 "(" + R_PAREN@47..48 ")" + SEMICOLON@48..49 ";" + WHITESPACE@49..50 "\n" + R_CURLY@50..51 "}" + WHITESPACE@51..52 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rs b/crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rs new file mode 100644 index 00000000000..de41f5cae0f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0027_ref_pat.rs @@ -0,0 +1,4 @@ +fn main() { + let &a = (); + let &mut b = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast b/crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast new file mode 100644 index 00000000000..32b2959bdfc --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rast @@ -0,0 +1,43 @@ +SOURCE_FILE@0..43 + TYPE_ALIAS@0..42 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + IMPL_TRAIT_TYPE@9..41 + IMPL_KW@9..13 "impl" + WHITESPACE@13..14 " " + TYPE_BOUND_LIST@14..41 + TYPE_BOUND@14..36 + PATH_TYPE@14..36 + PATH@14..36 + PATH_SEGMENT@14..36 + NAME_REF@14..22 + IDENT@14..22 "Iterator" + GENERIC_ARG_LIST@22..36 + L_ANGLE@22..23 "<" + ASSOC_TYPE_ARG@23..35 + NAME_REF@23..27 + IDENT@23..27 "Item" + EQ@27..28 "=" + PATH_TYPE@28..35 + PATH@28..35 + PATH_SEGMENT@28..35 + NAME_REF@28..31 + IDENT@28..31 "Foo" + GENERIC_ARG_LIST@31..35 + L_ANGLE@31..32 "<" + LIFETIME_ARG@32..34 + LIFETIME@32..34 "\'a" + R_ANGLE@34..35 ">" + R_ANGLE@35..36 ">" + WHITESPACE@36..37 " " + PLUS@37..38 "+" + WHITESPACE@38..39 " " + TYPE_BOUND@39..41 + LIFETIME@39..41 "\'a" + SEMICOLON@41..42 ";" + WHITESPACE@42..43 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rs b/crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rs new file mode 100644 index 00000000000..54c5a7c4604 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0028_impl_trait_type.rs @@ -0,0 +1 @@ +type A = impl Iterator> + 'a; diff --git a/crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rast b/crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rast new file mode 100644 index 00000000000..e096b3a1f64 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rast @@ -0,0 +1,89 @@ +SOURCE_FILE@0..89 + FN@0..88 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..88 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..25 + CAST_EXPR@15..24 + LITERAL@15..17 + INT_NUMBER@15..17 "82" + WHITESPACE@17..18 " " + AS_KW@18..20 "as" + WHITESPACE@20..21 " " + PATH_TYPE@21..24 + PATH@21..24 + PATH_SEGMENT@21..24 + NAME_REF@21..24 + IDENT@21..24 "i32" + SEMICOLON@24..25 ";" + WHITESPACE@25..30 "\n " + EXPR_STMT@30..43 + BIN_EXPR@30..42 + CAST_EXPR@30..38 + LITERAL@30..32 + INT_NUMBER@30..32 "81" + WHITESPACE@32..33 " " + AS_KW@33..35 "as" + WHITESPACE@35..36 " " + PATH_TYPE@36..38 + PATH@36..38 + PATH_SEGMENT@36..38 + NAME_REF@36..38 + IDENT@36..38 "i8" + WHITESPACE@38..39 " " + PLUS@39..40 "+" + WHITESPACE@40..41 " " + LITERAL@41..42 + INT_NUMBER@41..42 "1" + SEMICOLON@42..43 ";" + WHITESPACE@43..48 "\n " + EXPR_STMT@48..62 + BIN_EXPR@48..61 + CAST_EXPR@48..57 + LITERAL@48..50 + INT_NUMBER@48..50 "79" + WHITESPACE@50..51 " " + AS_KW@51..53 "as" + WHITESPACE@53..54 " " + PATH_TYPE@54..57 + PATH@54..57 + PATH_SEGMENT@54..57 + NAME_REF@54..57 + IDENT@54..57 "i16" + WHITESPACE@57..58 " " + MINUS@58..59 "-" + WHITESPACE@59..60 " " + LITERAL@60..61 + INT_NUMBER@60..61 "1" + SEMICOLON@61..62 ";" + WHITESPACE@62..67 "\n " + EXPR_STMT@67..86 + BIN_EXPR@67..85 + CAST_EXPR@67..77 + LITERAL@67..71 + INT_NUMBER@67..71 "0x36" + WHITESPACE@71..72 " " + AS_KW@72..74 "as" + WHITESPACE@74..75 " " + PATH_TYPE@75..77 + PATH@75..77 + PATH_SEGMENT@75..77 + NAME_REF@75..77 + IDENT@75..77 "u8" + WHITESPACE@77..78 " " + LTEQ@78..80 "<=" + WHITESPACE@80..81 " " + LITERAL@81..85 + INT_NUMBER@81..85 "0x37" + SEMICOLON@85..86 ";" + WHITESPACE@86..87 "\n" + R_CURLY@87..88 "}" + WHITESPACE@88..89 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rs b/crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rs new file mode 100644 index 00000000000..bfe8e4b362a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0029_cast_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + 82 as i32; + 81 as i8 + 1; + 79 as i16 - 1; + 0x36 as u8 <= 0x37; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0030_cond.rast b/crates/syntax/test_data/parser/inline/ok/0030_cond.rast new file mode 100644 index 00000000000..58a97d3ad89 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0030_cond.rast @@ -0,0 +1,202 @@ +SOURCE_FILE@0..197 + FN@0..37 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..37 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + IF_EXPR@11..35 + IF_KW@11..13 "if" + WHITESPACE@13..14 " " + CONDITION@14..32 + LET_KW@14..17 "let" + WHITESPACE@17..18 " " + TUPLE_STRUCT_PAT@18..25 + PATH@18..22 + PATH_SEGMENT@18..22 + NAME_REF@18..22 + IDENT@18..22 "Some" + L_PAREN@22..23 "(" + WILDCARD_PAT@23..24 + UNDERSCORE@23..24 "_" + R_PAREN@24..25 ")" + WHITESPACE@25..26 " " + EQ@26..27 "=" + WHITESPACE@27..28 " " + PATH_EXPR@28..32 + PATH@28..32 + PATH_SEGMENT@28..32 + NAME_REF@28..32 + IDENT@28..32 "None" + WHITESPACE@32..33 " " + BLOCK_EXPR@33..35 + L_CURLY@33..34 "{" + R_CURLY@34..35 "}" + WHITESPACE@35..36 " " + R_CURLY@36..37 "}" + WHITESPACE@37..38 "\n" + FN@38..196 + FN_KW@38..40 "fn" + WHITESPACE@40..41 " " + NAME@41..44 + IDENT@41..44 "bar" + PARAM_LIST@44..46 + L_PAREN@44..45 "(" + R_PAREN@45..46 ")" + WHITESPACE@46..47 " " + BLOCK_EXPR@47..196 + L_CURLY@47..48 "{" + WHITESPACE@48..53 "\n " + EXPR_STMT@53..87 + IF_EXPR@53..87 + IF_KW@53..55 "if" + WHITESPACE@55..56 " " + CONDITION@56..84 + LET_KW@56..59 "let" + WHITESPACE@59..60 " " + OR_PAT@60..77 + TUPLE_STRUCT_PAT@60..67 + PATH@60..64 + PATH_SEGMENT@60..64 + NAME_REF@60..64 + IDENT@60..64 "Some" + L_PAREN@64..65 "(" + WILDCARD_PAT@65..66 + UNDERSCORE@65..66 "_" + R_PAREN@66..67 ")" + WHITESPACE@67..68 " " + PIPE@68..69 "|" + WHITESPACE@69..70 " " + TUPLE_STRUCT_PAT@70..77 + PATH@70..74 + PATH_SEGMENT@70..74 + NAME_REF@70..74 + IDENT@70..74 "Some" + L_PAREN@74..75 "(" + WILDCARD_PAT@75..76 + UNDERSCORE@75..76 "_" + R_PAREN@76..77 ")" + WHITESPACE@77..78 " " + EQ@78..79 "=" + WHITESPACE@79..80 " " + PATH_EXPR@80..84 + PATH@80..84 + PATH_SEGMENT@80..84 + NAME_REF@80..84 + IDENT@80..84 "None" + WHITESPACE@84..85 " " + BLOCK_EXPR@85..87 + L_CURLY@85..86 "{" + R_CURLY@86..87 "}" + WHITESPACE@87..92 "\n " + EXPR_STMT@92..118 + IF_EXPR@92..118 + IF_KW@92..94 "if" + WHITESPACE@94..95 " " + CONDITION@95..115 + LET_KW@95..98 "let" + WHITESPACE@98..99 " " + PIPE@99..100 "|" + WHITESPACE@100..101 " " + TUPLE_STRUCT_PAT@101..108 + PATH@101..105 + PATH_SEGMENT@101..105 + NAME_REF@101..105 + IDENT@101..105 "Some" + L_PAREN@105..106 "(" + WILDCARD_PAT@106..107 + UNDERSCORE@106..107 "_" + R_PAREN@107..108 ")" + WHITESPACE@108..109 " " + EQ@109..110 "=" + WHITESPACE@110..111 " " + PATH_EXPR@111..115 + PATH@111..115 + PATH_SEGMENT@111..115 + NAME_REF@111..115 + IDENT@111..115 "None" + WHITESPACE@115..116 " " + BLOCK_EXPR@116..118 + L_CURLY@116..117 "{" + R_CURLY@117..118 "}" + WHITESPACE@118..123 "\n " + EXPR_STMT@123..160 + WHILE_EXPR@123..160 + WHILE_KW@123..128 "while" + WHITESPACE@128..129 " " + CONDITION@129..157 + LET_KW@129..132 "let" + WHITESPACE@132..133 " " + OR_PAT@133..150 + TUPLE_STRUCT_PAT@133..140 + PATH@133..137 + PATH_SEGMENT@133..137 + NAME_REF@133..137 + IDENT@133..137 "Some" + L_PAREN@137..138 "(" + WILDCARD_PAT@138..139 + UNDERSCORE@138..139 "_" + R_PAREN@139..140 ")" + WHITESPACE@140..141 " " + PIPE@141..142 "|" + WHITESPACE@142..143 " " + TUPLE_STRUCT_PAT@143..150 + PATH@143..147 + PATH_SEGMENT@143..147 + NAME_REF@143..147 + IDENT@143..147 "Some" + L_PAREN@147..148 "(" + WILDCARD_PAT@148..149 + UNDERSCORE@148..149 "_" + R_PAREN@149..150 ")" + WHITESPACE@150..151 " " + EQ@151..152 "=" + WHITESPACE@152..153 " " + PATH_EXPR@153..157 + PATH@153..157 + PATH_SEGMENT@153..157 + NAME_REF@153..157 + IDENT@153..157 "None" + WHITESPACE@157..158 " " + BLOCK_EXPR@158..160 + L_CURLY@158..159 "{" + R_CURLY@159..160 "}" + WHITESPACE@160..165 "\n " + WHILE_EXPR@165..194 + WHILE_KW@165..170 "while" + WHITESPACE@170..171 " " + CONDITION@171..191 + LET_KW@171..174 "let" + WHITESPACE@174..175 " " + PIPE@175..176 "|" + WHITESPACE@176..177 " " + TUPLE_STRUCT_PAT@177..184 + PATH@177..181 + PATH_SEGMENT@177..181 + NAME_REF@177..181 + IDENT@177..181 "Some" + L_PAREN@181..182 "(" + WILDCARD_PAT@182..183 + UNDERSCORE@182..183 "_" + R_PAREN@183..184 ")" + WHITESPACE@184..185 " " + EQ@185..186 "=" + WHITESPACE@186..187 " " + PATH_EXPR@187..191 + PATH@187..191 + PATH_SEGMENT@187..191 + NAME_REF@187..191 + IDENT@187..191 "None" + WHITESPACE@191..192 " " + BLOCK_EXPR@192..194 + L_CURLY@192..193 "{" + R_CURLY@193..194 "}" + WHITESPACE@194..195 "\n" + R_CURLY@195..196 "}" + WHITESPACE@196..197 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0030_cond.rs b/crates/syntax/test_data/parser/inline/ok/0030_cond.rs new file mode 100644 index 00000000000..2552a2621f9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0030_cond.rs @@ -0,0 +1,7 @@ +fn foo() { if let Some(_) = None {} } +fn bar() { + if let Some(_) | Some(_) = None {} + if let | Some(_) = None {} + while let Some(_) | Some(_) = None {} + while let | Some(_) = None {} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0031_while_expr.rast b/crates/syntax/test_data/parser/inline/ok/0031_while_expr.rast new file mode 100644 index 00000000000..173cecf6d9d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0031_while_expr.rast @@ -0,0 +1,84 @@ +SOURCE_FILE@0..93 + FN@0..92 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..92 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..29 + WHILE_EXPR@15..28 + WHILE_KW@15..20 "while" + WHITESPACE@20..21 " " + CONDITION@21..25 + LITERAL@21..25 + TRUE_KW@21..25 "true" + WHITESPACE@25..26 " " + BLOCK_EXPR@26..28 + L_CURLY@26..27 "{" + R_CURLY@27..28 "}" + SEMICOLON@28..29 ";" + WHITESPACE@29..34 "\n " + EXPR_STMT@34..67 + WHILE_EXPR@34..66 + WHILE_KW@34..39 "while" + WHITESPACE@39..40 " " + CONDITION@40..63 + LET_KW@40..43 "let" + WHITESPACE@43..44 " " + TUPLE_STRUCT_PAT@44..51 + PATH@44..48 + PATH_SEGMENT@44..48 + NAME_REF@44..48 + IDENT@44..48 "Some" + L_PAREN@48..49 "(" + IDENT_PAT@49..50 + NAME@49..50 + IDENT@49..50 "x" + R_PAREN@50..51 ")" + WHITESPACE@51..52 " " + EQ@52..53 "=" + WHITESPACE@53..54 " " + METHOD_CALL_EXPR@54..63 + PATH_EXPR@54..56 + PATH@54..56 + PATH_SEGMENT@54..56 + NAME_REF@54..56 + IDENT@54..56 "it" + DOT@56..57 "." + NAME_REF@57..61 + IDENT@57..61 "next" + ARG_LIST@61..63 + L_PAREN@61..62 "(" + R_PAREN@62..63 ")" + WHITESPACE@63..64 " " + BLOCK_EXPR@64..66 + L_CURLY@64..65 "{" + R_CURLY@65..66 "}" + SEMICOLON@66..67 ";" + WHITESPACE@67..72 "\n " + EXPR_STMT@72..90 + WHILE_EXPR@72..89 + WHILE_KW@72..77 "while" + WHITESPACE@77..78 " " + CONDITION@78..86 + BLOCK_EXPR@78..86 + L_CURLY@78..79 "{" + WHITESPACE@79..80 " " + LITERAL@80..84 + TRUE_KW@80..84 "true" + WHITESPACE@84..85 " " + R_CURLY@85..86 "}" + WHITESPACE@86..87 " " + BLOCK_EXPR@87..89 + L_CURLY@87..88 "{" + R_CURLY@88..89 "}" + SEMICOLON@89..90 ";" + WHITESPACE@90..91 "\n" + R_CURLY@91..92 "}" + WHITESPACE@92..93 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0031_while_expr.rs b/crates/syntax/test_data/parser/inline/ok/0031_while_expr.rs new file mode 100644 index 00000000000..2f818816025 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0031_while_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + while true {}; + while let Some(x) = it.next() {}; + while { true } {}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast b/crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast new file mode 100644 index 00000000000..dda6577eda8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rast @@ -0,0 +1,98 @@ +SOURCE_FILE@0..113 + TYPE_ALIAS@0..14 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + FN_PTR_TYPE@9..13 + FN_KW@9..11 "fn" + PARAM_LIST@11..13 + L_PAREN@11..12 "(" + R_PAREN@12..13 ")" + SEMICOLON@13..14 ";" + WHITESPACE@14..15 "\n" + TYPE_ALIAS@15..36 + TYPE_KW@15..19 "type" + WHITESPACE@19..20 " " + NAME@20..21 + IDENT@20..21 "B" + WHITESPACE@21..22 " " + EQ@22..23 "=" + WHITESPACE@23..24 " " + FN_PTR_TYPE@24..35 + UNSAFE_KW@24..30 "unsafe" + WHITESPACE@30..31 " " + FN_KW@31..33 "fn" + PARAM_LIST@33..35 + L_PAREN@33..34 "(" + R_PAREN@34..35 ")" + SEMICOLON@35..36 ";" + WHITESPACE@36..37 "\n" + TYPE_ALIAS@37..69 + TYPE_KW@37..41 "type" + WHITESPACE@41..42 " " + NAME@42..43 + IDENT@42..43 "C" + WHITESPACE@43..44 " " + EQ@44..45 "=" + WHITESPACE@45..46 " " + FN_PTR_TYPE@46..68 + UNSAFE_KW@46..52 "unsafe" + WHITESPACE@52..53 " " + ABI@53..63 + EXTERN_KW@53..59 "extern" + WHITESPACE@59..60 " " + STRING@60..63 "\"C\"" + WHITESPACE@63..64 " " + FN_KW@64..66 "fn" + PARAM_LIST@66..68 + L_PAREN@66..67 "(" + R_PAREN@67..68 ")" + SEMICOLON@68..69 ";" + WHITESPACE@69..70 "\n" + TYPE_ALIAS@70..112 + TYPE_KW@70..74 "type" + WHITESPACE@74..75 " " + NAME@75..76 + IDENT@75..76 "D" + WHITESPACE@76..77 " " + EQ@77..78 "=" + WHITESPACE@78..79 " " + FN_PTR_TYPE@79..111 + ABI@79..89 + EXTERN_KW@79..85 "extern" + WHITESPACE@85..86 " " + STRING@86..89 "\"C\"" + WHITESPACE@89..90 " " + FN_KW@90..92 "fn" + WHITESPACE@92..93 " " + PARAM_LIST@93..105 + L_PAREN@93..94 "(" + WHITESPACE@94..95 " " + PARAM@95..97 + PATH_TYPE@95..97 + PATH@95..97 + PATH_SEGMENT@95..97 + NAME_REF@95..97 + IDENT@95..97 "u8" + WHITESPACE@97..98 " " + COMMA@98..99 "," + WHITESPACE@99..100 " " + PARAM@100..103 + DOT3@100..103 "..." + WHITESPACE@103..104 " " + R_PAREN@104..105 ")" + WHITESPACE@105..106 " " + RET_TYPE@106..111 + THIN_ARROW@106..108 "->" + WHITESPACE@108..109 " " + PATH_TYPE@109..111 + PATH@109..111 + PATH_SEGMENT@109..111 + NAME_REF@109..111 + IDENT@109..111 "u8" + SEMICOLON@111..112 ";" + WHITESPACE@112..113 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rs b/crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rs new file mode 100644 index 00000000000..9493da83d56 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rs @@ -0,0 +1,4 @@ +type A = fn(); +type B = unsafe fn(); +type C = unsafe extern "C" fn(); +type D = extern "C" fn ( u8 , ... ) -> u8; diff --git a/crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rast b/crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rast new file mode 100644 index 00000000000..974df9f9aa1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rast @@ -0,0 +1,50 @@ +SOURCE_FILE@0..54 + TYPE_ALIAS@0..13 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + REF_TYPE@9..12 + AMP@9..10 "&" + TUPLE_TYPE@10..12 + L_PAREN@10..11 "(" + R_PAREN@11..12 ")" + SEMICOLON@12..13 ";" + WHITESPACE@13..14 "\n" + TYPE_ALIAS@14..35 + TYPE_KW@14..18 "type" + WHITESPACE@18..19 " " + NAME@19..20 + IDENT@19..20 "B" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + REF_TYPE@23..34 + AMP@23..24 "&" + LIFETIME@24..31 "\'static" + WHITESPACE@31..32 " " + TUPLE_TYPE@32..34 + L_PAREN@32..33 "(" + R_PAREN@33..34 ")" + SEMICOLON@34..35 ";" + WHITESPACE@35..36 "\n" + TYPE_ALIAS@36..53 + TYPE_KW@36..40 "type" + WHITESPACE@40..41 " " + NAME@41..42 + IDENT@41..42 "C" + WHITESPACE@42..43 " " + EQ@43..44 "=" + WHITESPACE@44..45 " " + REF_TYPE@45..52 + AMP@45..46 "&" + MUT_KW@46..49 "mut" + WHITESPACE@49..50 " " + TUPLE_TYPE@50..52 + L_PAREN@50..51 "(" + R_PAREN@51..52 ")" + SEMICOLON@52..53 ";" + WHITESPACE@53..54 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rs b/crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rs new file mode 100644 index 00000000000..3ac0badabc5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0033_reference_type;.rs @@ -0,0 +1,3 @@ +type A = &(); +type B = &'static (); +type C = &mut (); diff --git a/crates/syntax/test_data/parser/inline/ok/0034_break_expr.rast b/crates/syntax/test_data/parser/inline/ok/0034_break_expr.rast new file mode 100644 index 00000000000..f905def6ff0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0034_break_expr.rast @@ -0,0 +1,53 @@ +SOURCE_FILE@0..102 + FN@0..101 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..101 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LOOP_EXPR@15..99 + LOOP_KW@15..19 "loop" + WHITESPACE@19..20 " " + BLOCK_EXPR@20..99 + L_CURLY@20..21 "{" + WHITESPACE@21..30 "\n " + EXPR_STMT@30..36 + BREAK_EXPR@30..35 + BREAK_KW@30..35 "break" + SEMICOLON@35..36 ";" + WHITESPACE@36..45 "\n " + EXPR_STMT@45..54 + BREAK_EXPR@45..53 + BREAK_KW@45..50 "break" + WHITESPACE@50..51 " " + LIFETIME@51..53 "\'l" + SEMICOLON@53..54 ";" + WHITESPACE@54..63 "\n " + EXPR_STMT@63..72 + BREAK_EXPR@63..71 + BREAK_KW@63..68 "break" + WHITESPACE@68..69 " " + LITERAL@69..71 + INT_NUMBER@69..71 "92" + SEMICOLON@71..72 ";" + WHITESPACE@72..81 "\n " + EXPR_STMT@81..93 + BREAK_EXPR@81..92 + BREAK_KW@81..86 "break" + WHITESPACE@86..87 " " + LIFETIME@87..89 "\'l" + WHITESPACE@89..90 " " + LITERAL@90..92 + INT_NUMBER@90..92 "92" + SEMICOLON@92..93 ";" + WHITESPACE@93..98 "\n " + R_CURLY@98..99 "}" + WHITESPACE@99..100 "\n" + R_CURLY@100..101 "}" + WHITESPACE@101..102 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0034_break_expr.rs b/crates/syntax/test_data/parser/inline/ok/0034_break_expr.rs new file mode 100644 index 00000000000..1b40946365f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0034_break_expr.rs @@ -0,0 +1,8 @@ +fn foo() { + loop { + break; + break 'l; + break 92; + break 'l 92; + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rast b/crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rast new file mode 100644 index 00000000000..b6379e62f8c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rast @@ -0,0 +1,78 @@ +SOURCE_FILE@0..71 + TYPE_ALIAS@0..26 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "X" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PATH_TYPE@9..25 + PATH@9..25 + PATH@9..17 + PATH_SEGMENT@9..17 + L_ANGLE@9..10 "<" + PATH_TYPE@10..11 + PATH@10..11 + PATH_SEGMENT@10..11 + NAME_REF@10..11 + IDENT@10..11 "A" + WHITESPACE@11..12 " " + AS_KW@12..14 "as" + WHITESPACE@14..15 " " + PATH_TYPE@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "B" + R_ANGLE@16..17 ">" + COLON2@17..19 "::" + PATH_SEGMENT@19..25 + NAME_REF@19..25 + IDENT@19..25 "Output" + SEMICOLON@25..26 ";" + WHITESPACE@26..27 "\n" + FN@27..70 + FN_KW@27..29 "fn" + WHITESPACE@29..30 " " + NAME@30..33 + IDENT@30..33 "foo" + PARAM_LIST@33..35 + L_PAREN@33..34 "(" + R_PAREN@34..35 ")" + WHITESPACE@35..36 " " + BLOCK_EXPR@36..70 + L_CURLY@36..37 "{" + WHITESPACE@37..38 " " + EXPR_STMT@38..68 + CALL_EXPR@38..67 + PATH_EXPR@38..65 + PATH@38..65 + PATH@38..56 + PATH_SEGMENT@38..56 + L_ANGLE@38..39 "<" + PATH_TYPE@39..44 + PATH@39..44 + PATH_SEGMENT@39..44 + NAME_REF@39..44 + IDENT@39..44 "usize" + WHITESPACE@44..45 " " + AS_KW@45..47 "as" + WHITESPACE@47..48 " " + PATH_TYPE@48..55 + PATH@48..55 + PATH_SEGMENT@48..55 + NAME_REF@48..55 + IDENT@48..55 "Default" + R_ANGLE@55..56 ">" + COLON2@56..58 "::" + PATH_SEGMENT@58..65 + NAME_REF@58..65 + IDENT@58..65 "default" + ARG_LIST@65..67 + L_PAREN@65..66 "(" + R_PAREN@66..67 ")" + SEMICOLON@67..68 ";" + WHITESPACE@68..69 " " + R_CURLY@69..70 "}" + WHITESPACE@70..71 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rs b/crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rs new file mode 100644 index 00000000000..d140692e210 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0037_qual_paths.rs @@ -0,0 +1,2 @@ +type X = ::Output; +fn foo() { ::default(); } diff --git a/crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rast b/crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rast new file mode 100644 index 00000000000..64e705fb3d2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rast @@ -0,0 +1,28 @@ +SOURCE_FILE@0..21 + FN@0..20 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..20 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + EXPR_STMT@11..18 + INDEX_EXPR@11..17 + PATH_EXPR@11..13 + PATH@11..13 + PATH_SEGMENT@11..13 + NAME_REF@11..13 + IDENT@11..13 "xs" + L_BRACK@13..14 "[" + RANGE_EXPR@14..16 + DOT2@14..16 ".." + R_BRACK@16..17 "]" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 " " + R_CURLY@19..20 "}" + WHITESPACE@20..21 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rs b/crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rs new file mode 100644 index 00000000000..ae21ad94cb3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0038_full_range_expr.rs @@ -0,0 +1 @@ +fn foo() { xs[..]; } diff --git a/crates/syntax/test_data/parser/inline/ok/0039_type_arg.rast b/crates/syntax/test_data/parser/inline/ok/0039_type_arg.rast new file mode 100644 index 00000000000..69e98b9d6c0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0039_type_arg.rast @@ -0,0 +1,55 @@ +SOURCE_FILE@0..46 + TYPE_ALIAS@0..45 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PATH_TYPE@9..44 + PATH@9..44 + PATH_SEGMENT@9..44 + NAME_REF@9..10 + IDENT@9..10 "B" + GENERIC_ARG_LIST@10..44 + L_ANGLE@10..11 "<" + LIFETIME_ARG@11..18 + LIFETIME@11..18 "\'static" + COMMA@18..19 "," + WHITESPACE@19..20 " " + TYPE_ARG@20..23 + PATH_TYPE@20..23 + PATH@20..23 + PATH_SEGMENT@20..23 + NAME_REF@20..23 + IDENT@20..23 "i32" + COMMA@23..24 "," + WHITESPACE@24..25 " " + CONST_ARG@25..26 + LITERAL@25..26 + INT_NUMBER@25..26 "1" + COMMA@26..27 "," + WHITESPACE@27..28 " " + CONST_ARG@28..33 + BLOCK_EXPR@28..33 + L_CURLY@28..29 "{" + WHITESPACE@29..30 " " + LITERAL@30..31 + INT_NUMBER@30..31 "2" + WHITESPACE@31..32 " " + R_CURLY@32..33 "}" + COMMA@33..34 "," + WHITESPACE@34..35 " " + ASSOC_TYPE_ARG@35..43 + NAME_REF@35..39 + IDENT@35..39 "Item" + EQ@39..40 "=" + PATH_TYPE@40..43 + PATH@40..43 + PATH_SEGMENT@40..43 + NAME_REF@40..43 + IDENT@40..43 "u64" + R_ANGLE@43..44 ">" + SEMICOLON@44..45 ";" + WHITESPACE@45..46 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0039_type_arg.rs b/crates/syntax/test_data/parser/inline/ok/0039_type_arg.rs new file mode 100644 index 00000000000..0d07d76514e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0039_type_arg.rs @@ -0,0 +1 @@ +type A = B<'static, i32, 1, { 2 }, Item=u64>; diff --git a/crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast b/crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast new file mode 100644 index 00000000000..db5bd284969 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rast @@ -0,0 +1,62 @@ +SOURCE_FILE@0..71 + FN@0..19 + VISIBILITY@0..5 + CRATE_KW@0..5 "crate" + WHITESPACE@5..6 " " + FN_KW@6..8 "fn" + WHITESPACE@8..9 " " + NAME@9..13 + IDENT@9..13 "main" + PARAM_LIST@13..15 + L_PAREN@13..14 "(" + R_PAREN@14..15 ")" + WHITESPACE@15..16 " " + BLOCK_EXPR@16..19 + L_CURLY@16..17 "{" + WHITESPACE@17..18 " " + R_CURLY@18..19 "}" + WHITESPACE@19..20 "\n" + STRUCT@20..49 + STRUCT_KW@20..26 "struct" + WHITESPACE@26..27 " " + NAME@27..28 + IDENT@27..28 "S" + WHITESPACE@28..29 " " + RECORD_FIELD_LIST@29..49 + L_CURLY@29..30 "{" + WHITESPACE@30..31 " " + RECORD_FIELD@31..47 + VISIBILITY@31..36 + CRATE_KW@31..36 "crate" + WHITESPACE@36..37 " " + NAME@37..42 + IDENT@37..42 "field" + COLON@42..43 ":" + WHITESPACE@43..44 " " + PATH_TYPE@44..47 + PATH@44..47 + PATH_SEGMENT@44..47 + NAME_REF@44..47 + IDENT@44..47 "u32" + WHITESPACE@47..48 " " + R_CURLY@48..49 "}" + WHITESPACE@49..50 "\n" + STRUCT@50..70 + STRUCT_KW@50..56 "struct" + WHITESPACE@56..57 " " + NAME@57..58 + IDENT@57..58 "T" + TUPLE_FIELD_LIST@58..69 + L_PAREN@58..59 "(" + TUPLE_FIELD@59..68 + VISIBILITY@59..64 + CRATE_KW@59..64 "crate" + WHITESPACE@64..65 " " + PATH_TYPE@65..68 + PATH@65..68 + PATH_SEGMENT@65..68 + NAME_REF@65..68 + IDENT@65..68 "u32" + R_PAREN@68..69 ")" + SEMICOLON@69..70 ";" + WHITESPACE@70..71 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rs b/crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rs new file mode 100644 index 00000000000..e2b5f2161df --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rs @@ -0,0 +1,3 @@ +crate fn main() { } +struct S { crate field: u32 } +struct T(crate u32); diff --git a/crates/syntax/test_data/parser/inline/ok/0041_trait_item.rast b/crates/syntax/test_data/parser/inline/ok/0041_trait_item.rast new file mode 100644 index 00000000000..3638462f8b2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0041_trait_item.rast @@ -0,0 +1,125 @@ +SOURCE_FILE@0..101 + TRAIT@0..41 + TRAIT_KW@0..5 "trait" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "T" + GENERIC_PARAM_LIST@7..10 + L_ANGLE@7..8 "<" + TYPE_PARAM@8..9 + NAME@8..9 + IDENT@8..9 "U" + R_ANGLE@9..10 ">" + COLON@10..11 ":" + WHITESPACE@11..12 " " + TYPE_BOUND_LIST@12..24 + TYPE_BOUND@12..16 + PATH_TYPE@12..16 + PATH@12..16 + PATH_SEGMENT@12..16 + NAME_REF@12..16 + IDENT@12..16 "Hash" + WHITESPACE@16..17 " " + PLUS@17..18 "+" + WHITESPACE@18..19 " " + TYPE_BOUND@19..24 + PATH_TYPE@19..24 + PATH@19..24 + PATH_SEGMENT@19..24 + NAME_REF@19..24 + IDENT@19..24 "Clone" + WHITESPACE@24..25 " " + WHERE_CLAUSE@25..38 + WHERE_KW@25..30 "where" + WHITESPACE@30..31 " " + WHERE_PRED@31..38 + PATH_TYPE@31..32 + PATH@31..32 + PATH_SEGMENT@31..32 + NAME_REF@31..32 + IDENT@31..32 "U" + COLON@32..33 ":" + WHITESPACE@33..34 " " + TYPE_BOUND_LIST@34..38 + TYPE_BOUND@34..38 + PATH_TYPE@34..38 + PATH@34..38 + PATH_SEGMENT@34..38 + NAME_REF@34..38 + IDENT@34..38 "Copy" + WHITESPACE@38..39 " " + ASSOC_ITEM_LIST@39..41 + L_CURLY@39..40 "{" + R_CURLY@40..41 "}" + WHITESPACE@41..42 "\n" + TRAIT@42..100 + TRAIT_KW@42..47 "trait" + WHITESPACE@47..48 " " + NAME@48..49 + IDENT@48..49 "X" + GENERIC_PARAM_LIST@49..69 + L_ANGLE@49..50 "<" + TYPE_PARAM@50..68 + NAME@50..51 + IDENT@50..51 "U" + COLON@51..52 ":" + WHITESPACE@52..53 " " + TYPE_BOUND_LIST@53..68 + TYPE_BOUND@53..58 + PATH_TYPE@53..58 + PATH@53..58 + PATH_SEGMENT@53..58 + NAME_REF@53..58 + IDENT@53..58 "Debug" + WHITESPACE@58..59 " " + PLUS@59..60 "+" + WHITESPACE@60..61 " " + TYPE_BOUND@61..68 + PATH_TYPE@61..68 + PATH@61..68 + PATH_SEGMENT@61..68 + NAME_REF@61..68 + IDENT@61..68 "Display" + R_ANGLE@68..69 ">" + COLON@69..70 ":" + WHITESPACE@70..71 " " + TYPE_BOUND_LIST@71..83 + TYPE_BOUND@71..75 + PATH_TYPE@71..75 + PATH@71..75 + PATH_SEGMENT@71..75 + NAME_REF@71..75 + IDENT@71..75 "Hash" + WHITESPACE@75..76 " " + PLUS@76..77 "+" + WHITESPACE@77..78 " " + TYPE_BOUND@78..83 + PATH_TYPE@78..83 + PATH@78..83 + PATH_SEGMENT@78..83 + NAME_REF@78..83 + IDENT@78..83 "Clone" + WHITESPACE@83..84 " " + WHERE_CLAUSE@84..97 + WHERE_KW@84..89 "where" + WHITESPACE@89..90 " " + WHERE_PRED@90..97 + PATH_TYPE@90..91 + PATH@90..91 + PATH_SEGMENT@90..91 + NAME_REF@90..91 + IDENT@90..91 "U" + COLON@91..92 ":" + WHITESPACE@92..93 " " + TYPE_BOUND_LIST@93..97 + TYPE_BOUND@93..97 + PATH_TYPE@93..97 + PATH@93..97 + PATH_SEGMENT@93..97 + NAME_REF@93..97 + IDENT@93..97 "Copy" + WHITESPACE@97..98 " " + ASSOC_ITEM_LIST@98..100 + L_CURLY@98..99 "{" + R_CURLY@99..100 "}" + WHITESPACE@100..101 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0041_trait_item.rs b/crates/syntax/test_data/parser/inline/ok/0041_trait_item.rs new file mode 100644 index 00000000000..32761dd03d0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0041_trait_item.rs @@ -0,0 +1,2 @@ +trait T: Hash + Clone where U: Copy {} +trait X: Hash + Clone where U: Copy {} diff --git a/crates/syntax/test_data/parser/inline/ok/0042_call_expr.rast b/crates/syntax/test_data/parser/inline/ok/0042_call_expr.rast new file mode 100644 index 00000000000..fa38e946673 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0042_call_expr.rast @@ -0,0 +1,147 @@ +SOURCE_FILE@0..118 + FN@0..117 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..117 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..27 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + WILDCARD_PAT@19..20 + UNDERSCORE@19..20 "_" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + CALL_EXPR@23..26 + PATH_EXPR@23..24 + PATH@23..24 + PATH_SEGMENT@23..24 + NAME_REF@23..24 + IDENT@23..24 "f" + ARG_LIST@24..26 + L_PAREN@24..25 "(" + R_PAREN@25..26 ")" + SEMICOLON@26..27 ";" + WHITESPACE@27..32 "\n " + LET_STMT@32..54 + LET_KW@32..35 "let" + WHITESPACE@35..36 " " + WILDCARD_PAT@36..37 + UNDERSCORE@36..37 "_" + WHITESPACE@37..38 " " + EQ@38..39 "=" + WHITESPACE@39..40 " " + CALL_EXPR@40..53 + CALL_EXPR@40..46 + CALL_EXPR@40..43 + PATH_EXPR@40..41 + PATH@40..41 + PATH_SEGMENT@40..41 + NAME_REF@40..41 + IDENT@40..41 "f" + ARG_LIST@41..43 + L_PAREN@41..42 "(" + R_PAREN@42..43 ")" + ARG_LIST@43..46 + L_PAREN@43..44 "(" + LITERAL@44..45 + INT_NUMBER@44..45 "1" + R_PAREN@45..46 ")" + ARG_LIST@46..53 + L_PAREN@46..47 "(" + LITERAL@47..48 + INT_NUMBER@47..48 "1" + COMMA@48..49 "," + WHITESPACE@49..50 " " + LITERAL@50..51 + INT_NUMBER@50..51 "2" + COMMA@51..52 "," + R_PAREN@52..53 ")" + SEMICOLON@53..54 ";" + WHITESPACE@54..59 "\n " + LET_STMT@59..84 + LET_KW@59..62 "let" + WHITESPACE@62..63 " " + WILDCARD_PAT@63..64 + UNDERSCORE@63..64 "_" + WHITESPACE@64..65 " " + EQ@65..66 "=" + WHITESPACE@66..67 " " + CALL_EXPR@67..83 + PATH_EXPR@67..68 + PATH@67..68 + PATH_SEGMENT@67..68 + NAME_REF@67..68 + IDENT@67..68 "f" + ARG_LIST@68..83 + L_PAREN@68..69 "(" + CALL_EXPR@69..82 + PATH_EXPR@69..80 + PATH@69..80 + PATH@69..74 + PATH_SEGMENT@69..74 + L_ANGLE@69..70 "<" + PATH_TYPE@70..73 + PATH@70..73 + PATH_SEGMENT@70..73 + NAME_REF@70..73 + IDENT@70..73 "Foo" + R_ANGLE@73..74 ">" + COLON2@74..76 "::" + PATH_SEGMENT@76..80 + NAME_REF@76..80 + IDENT@76..80 "func" + ARG_LIST@80..82 + L_PAREN@80..81 "(" + R_PAREN@81..82 ")" + R_PAREN@82..83 ")" + SEMICOLON@83..84 ";" + WHITESPACE@84..89 "\n " + EXPR_STMT@89..115 + CALL_EXPR@89..114 + PATH_EXPR@89..90 + PATH@89..90 + PATH_SEGMENT@89..90 + NAME_REF@89..90 + IDENT@89..90 "f" + ARG_LIST@90..114 + L_PAREN@90..91 "(" + CALL_EXPR@91..113 + PATH_EXPR@91..111 + PATH@91..111 + PATH@91..105 + PATH_SEGMENT@91..105 + L_ANGLE@91..92 "<" + PATH_TYPE@92..95 + PATH@92..95 + PATH_SEGMENT@92..95 + NAME_REF@92..95 + IDENT@92..95 "Foo" + WHITESPACE@95..96 " " + AS_KW@96..98 "as" + WHITESPACE@98..99 " " + PATH_TYPE@99..104 + PATH@99..104 + PATH_SEGMENT@99..104 + NAME_REF@99..104 + IDENT@99..104 "Trait" + R_ANGLE@104..105 ">" + COLON2@105..107 "::" + PATH_SEGMENT@107..111 + NAME_REF@107..111 + IDENT@107..111 "func" + ARG_LIST@111..113 + L_PAREN@111..112 "(" + R_PAREN@112..113 ")" + R_PAREN@113..114 ")" + SEMICOLON@114..115 ";" + WHITESPACE@115..116 "\n" + R_CURLY@116..117 "}" + WHITESPACE@117..118 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0042_call_expr.rs b/crates/syntax/test_data/parser/inline/ok/0042_call_expr.rs new file mode 100644 index 00000000000..ffbf46d6d1f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0042_call_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + let _ = f(); + let _ = f()(1)(1, 2,); + let _ = f(::func()); + f(::func()); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast b/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast new file mode 100644 index 00000000000..60b517230e8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast @@ -0,0 +1,138 @@ +SOURCE_FILE@0..198 + USE@0..28 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..27 + PATH@4..14 + PATH@4..8 + PATH_SEGMENT@4..8 + NAME_REF@4..8 + IDENT@4..8 "some" + COLON2@8..10 "::" + PATH_SEGMENT@10..14 + NAME_REF@10..14 + IDENT@10..14 "path" + WHITESPACE@14..15 " " + RENAME@15..27 + AS_KW@15..17 "as" + WHITESPACE@17..18 " " + NAME@18..27 + IDENT@18..27 "some_name" + SEMICOLON@27..28 ";" + WHITESPACE@28..29 "\n" + USE@29..181 + USE_KW@29..32 "use" + WHITESPACE@32..33 " " + USE_TREE@33..180 + PATH@33..37 + PATH_SEGMENT@33..37 + NAME_REF@33..37 + IDENT@33..37 "some" + COLON2@37..39 "::" + USE_TREE_LIST@39..180 + L_CURLY@39..40 "{" + WHITESPACE@40..42 "\n " + USE_TREE@42..72 + PATH@42..53 + PATH@42..47 + PATH_SEGMENT@42..47 + NAME_REF@42..47 + IDENT@42..47 "other" + COLON2@47..49 "::" + PATH_SEGMENT@49..53 + NAME_REF@49..53 + IDENT@49..53 "path" + WHITESPACE@53..54 " " + RENAME@54..72 + AS_KW@54..56 "as" + WHITESPACE@56..57 " " + NAME@57..72 + IDENT@57..72 "some_other_name" + COMMA@72..73 "," + WHITESPACE@73..75 "\n " + USE_TREE@75..108 + PATH@75..90 + PATH@75..84 + PATH_SEGMENT@75..84 + NAME_REF@75..84 + IDENT@75..84 "different" + COLON2@84..86 "::" + PATH_SEGMENT@86..90 + NAME_REF@86..90 + IDENT@86..90 "path" + WHITESPACE@90..91 " " + RENAME@91..108 + AS_KW@91..93 "as" + WHITESPACE@93..94 " " + NAME@94..108 + IDENT@94..108 "different_name" + COMMA@108..109 "," + WHITESPACE@109..111 "\n " + USE_TREE@111..129 + PATH@111..129 + PATH@111..123 + PATH@111..114 + PATH_SEGMENT@111..114 + NAME_REF@111..114 + IDENT@111..114 "yet" + COLON2@114..116 "::" + PATH_SEGMENT@116..123 + NAME_REF@116..123 + IDENT@116..123 "another" + COLON2@123..125 "::" + PATH_SEGMENT@125..129 + NAME_REF@125..129 + IDENT@125..129 "path" + COMMA@129..130 "," + WHITESPACE@130..132 "\n " + USE_TREE@132..178 + PATH@132..175 + PATH@132..164 + PATH@132..158 + PATH@132..148 + PATH@132..144 + PATH@132..139 + PATH_SEGMENT@132..139 + NAME_REF@132..139 + IDENT@132..139 "running" + COLON2@139..141 "::" + PATH_SEGMENT@141..144 + NAME_REF@141..144 + IDENT@141..144 "out" + COLON2@144..146 "::" + PATH_SEGMENT@146..148 + NAME_REF@146..148 + IDENT@146..148 "of" + COLON2@148..150 "::" + PATH_SEGMENT@150..158 + NAME_REF@150..158 + IDENT@150..158 "synonyms" + COLON2@158..160 "::" + PATH_SEGMENT@160..164 + NAME_REF@160..164 + IDENT@160..164 "for_" + COLON2@164..166 "::" + PATH_SEGMENT@166..175 + NAME_REF@166..175 + IDENT@166..175 "different" + COLON2@175..177 "::" + STAR@177..178 "*" + WHITESPACE@178..179 "\n" + R_CURLY@179..180 "}" + SEMICOLON@180..181 ";" + WHITESPACE@181..182 "\n" + USE@182..197 + USE_KW@182..185 "use" + WHITESPACE@185..186 " " + USE_TREE@186..196 + PATH@186..191 + PATH_SEGMENT@186..191 + NAME_REF@186..191 + IDENT@186..191 "Trait" + WHITESPACE@191..192 " " + RENAME@192..196 + AS_KW@192..194 "as" + WHITESPACE@194..195 " " + UNDERSCORE@195..196 "_" + SEMICOLON@196..197 ";" + WHITESPACE@197..198 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs b/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs new file mode 100644 index 00000000000..9be50f87708 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs @@ -0,0 +1,8 @@ +use some::path as some_name; +use some::{ + other::path as some_other_name, + different::path as different_name, + yet::another::path, + running::out::of::synonyms::for_::different::* +}; +use Trait as _; diff --git a/crates/syntax/test_data/parser/inline/ok/0044_block_items.rast b/crates/syntax/test_data/parser/inline/ok/0044_block_items.rast new file mode 100644 index 00000000000..1fd3cd0e783 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0044_block_items.rast @@ -0,0 +1,28 @@ +SOURCE_FILE@0..21 + FN@0..20 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "a" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + BLOCK_EXPR@7..20 + L_CURLY@7..8 "{" + WHITESPACE@8..9 " " + FN@9..18 + FN_KW@9..11 "fn" + WHITESPACE@11..12 " " + NAME@12..13 + IDENT@12..13 "b" + PARAM_LIST@13..15 + L_PAREN@13..14 "(" + R_PAREN@14..15 ")" + WHITESPACE@15..16 " " + BLOCK_EXPR@16..18 + L_CURLY@16..17 "{" + R_CURLY@17..18 "}" + WHITESPACE@18..19 " " + R_CURLY@19..20 "}" + WHITESPACE@20..21 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0044_block_items.rs b/crates/syntax/test_data/parser/inline/ok/0044_block_items.rs new file mode 100644 index 00000000000..d9868718c79 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0044_block_items.rs @@ -0,0 +1 @@ +fn a() { fn b() {} } diff --git a/crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast b/crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast new file mode 100644 index 00000000000..6baea6e3ca2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rast @@ -0,0 +1,46 @@ +SOURCE_FILE@0..35 + FN@0..34 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + GENERIC_PARAM_LIST@6..30 + L_ANGLE@6..7 "<" + TYPE_PARAM@7..29 + NAME@7..8 + IDENT@7..8 "F" + COLON@8..9 ":" + WHITESPACE@9..10 " " + TYPE_BOUND_LIST@10..29 + TYPE_BOUND@10..29 + PATH_TYPE@10..29 + PATH@10..29 + PATH_SEGMENT@10..29 + NAME_REF@10..15 + IDENT@10..15 "FnMut" + PARAM_LIST@15..29 + L_PAREN@15..16 "(" + PARAM@16..28 + REF_TYPE@16..28 + AMP@16..17 "&" + MUT_KW@17..20 "mut" + WHITESPACE@20..21 " " + PATH_TYPE@21..28 + PATH@21..28 + PATH_SEGMENT@21..28 + NAME_REF@21..24 + IDENT@21..24 "Foo" + GENERIC_ARG_LIST@24..28 + L_ANGLE@24..25 "<" + LIFETIME_ARG@25..27 + LIFETIME@25..27 "\'a" + R_ANGLE@27..28 ">" + R_PAREN@28..29 ")" + R_ANGLE@29..30 ">" + PARAM_LIST@30..32 + L_PAREN@30..31 "(" + R_PAREN@31..32 ")" + BLOCK_EXPR@32..34 + L_CURLY@32..33 "{" + R_CURLY@33..34 "}" + WHITESPACE@34..35 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs b/crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs new file mode 100644 index 00000000000..9b93442c0f2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs @@ -0,0 +1 @@ +fn foo)>(){} diff --git a/crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast b/crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast new file mode 100644 index 00000000000..e89284c1405 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rast @@ -0,0 +1,20 @@ +SOURCE_FILE@0..17 + TYPE_ALIAS@0..16 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + TUPLE_TYPE@9..15 + L_PAREN@9..10 "(" + PATH_TYPE@10..13 + PATH@10..13 + PATH_SEGMENT@10..13 + NAME_REF@10..13 + IDENT@10..13 "i32" + COMMA@13..14 "," + R_PAREN@14..15 ")" + SEMICOLON@15..16 ";" + WHITESPACE@16..17 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rs b/crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rs new file mode 100644 index 00000000000..cb66bad2470 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rs @@ -0,0 +1 @@ +type T = (i32,); diff --git a/crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast b/crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast new file mode 100644 index 00000000000..4d8404e7c09 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rast @@ -0,0 +1,81 @@ +SOURCE_FILE@0..58 + FN@0..26 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + RET_TYPE@9..23 + THIN_ARROW@9..11 "->" + WHITESPACE@11..12 " " + PATH_TYPE@12..23 + PATH@12..23 + PATH_SEGMENT@12..23 + NAME_REF@12..15 + IDENT@12..15 "Box" + GENERIC_ARG_LIST@15..23 + L_ANGLE@15..16 "<" + TYPE_ARG@16..22 + DYN_TRAIT_TYPE@16..22 + TYPE_BOUND_LIST@16..22 + TYPE_BOUND@16..17 + PATH_TYPE@16..17 + PATH@16..17 + PATH_SEGMENT@16..17 + NAME_REF@16..17 + IDENT@16..17 "T" + WHITESPACE@17..18 " " + PLUS@18..19 "+" + WHITESPACE@19..20 " " + TYPE_BOUND@20..22 + LIFETIME@20..22 "\'f" + R_ANGLE@22..23 ">" + WHITESPACE@23..24 " " + BLOCK_EXPR@24..26 + L_CURLY@24..25 "{" + R_CURLY@25..26 "}" + WHITESPACE@26..27 "\n" + FN@27..57 + FN_KW@27..29 "fn" + WHITESPACE@29..30 " " + NAME@30..33 + IDENT@30..33 "foo" + PARAM_LIST@33..35 + L_PAREN@33..34 "(" + R_PAREN@34..35 ")" + WHITESPACE@35..36 " " + RET_TYPE@36..54 + THIN_ARROW@36..38 "->" + WHITESPACE@38..39 " " + PATH_TYPE@39..54 + PATH@39..54 + PATH_SEGMENT@39..54 + NAME_REF@39..42 + IDENT@39..42 "Box" + GENERIC_ARG_LIST@42..54 + L_ANGLE@42..43 "<" + TYPE_ARG@43..53 + DYN_TRAIT_TYPE@43..53 + DYN_KW@43..46 "dyn" + WHITESPACE@46..47 " " + TYPE_BOUND_LIST@47..53 + TYPE_BOUND@47..48 + PATH_TYPE@47..48 + PATH@47..48 + PATH_SEGMENT@47..48 + NAME_REF@47..48 + IDENT@47..48 "T" + WHITESPACE@48..49 " " + PLUS@49..50 "+" + WHITESPACE@50..51 " " + TYPE_BOUND@51..53 + LIFETIME@51..53 "\'f" + R_ANGLE@53..54 ">" + WHITESPACE@54..55 " " + BLOCK_EXPR@55..57 + L_CURLY@55..56 "{" + R_CURLY@56..57 "}" + WHITESPACE@57..58 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rs b/crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rs new file mode 100644 index 00000000000..4bb0f63b739 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rs @@ -0,0 +1,2 @@ +fn foo() -> Box {} +fn foo() -> Box {} diff --git a/crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rast b/crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rast new file mode 100644 index 00000000000..a5bf55131dd --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rast @@ -0,0 +1,22 @@ +SOURCE_FILE@0..22 + TRAIT@0..21 + TRAIT_KW@0..5 "trait" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "T" + WHITESPACE@7..8 " " + ASSOC_ITEM_LIST@8..21 + L_CURLY@8..9 "{" + WHITESPACE@9..10 " " + FN@10..19 + FN_KW@10..12 "fn" + WHITESPACE@12..13 " " + NAME@13..16 + IDENT@13..16 "foo" + PARAM_LIST@16..18 + L_PAREN@16..17 "(" + R_PAREN@17..18 ")" + SEMICOLON@18..19 ";" + WHITESPACE@19..20 " " + R_CURLY@20..21 "}" + WHITESPACE@21..22 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rs b/crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rs new file mode 100644 index 00000000000..c9f74f7f5c8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0050_fn_decl.rs @@ -0,0 +1 @@ +trait T { fn foo(); } diff --git a/crates/syntax/test_data/parser/inline/ok/0051_unit_type.rast b/crates/syntax/test_data/parser/inline/ok/0051_unit_type.rast new file mode 100644 index 00000000000..6330dbf9e60 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0051_unit_type.rast @@ -0,0 +1,14 @@ +SOURCE_FILE@0..13 + TYPE_ALIAS@0..12 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + TUPLE_TYPE@9..11 + L_PAREN@9..10 "(" + R_PAREN@10..11 ")" + SEMICOLON@11..12 ";" + WHITESPACE@12..13 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0051_unit_type.rs b/crates/syntax/test_data/parser/inline/ok/0051_unit_type.rs new file mode 100644 index 00000000000..c039cf7d324 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0051_unit_type.rs @@ -0,0 +1 @@ +type T = (); diff --git a/crates/syntax/test_data/parser/inline/ok/0052_path_type.rast b/crates/syntax/test_data/parser/inline/ok/0052_path_type.rast new file mode 100644 index 00000000000..9bc36bea70a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0052_path_type.rast @@ -0,0 +1,70 @@ +SOURCE_FILE@0..71 + TYPE_ALIAS@0..13 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PATH_TYPE@9..12 + PATH@9..12 + PATH_SEGMENT@9..12 + NAME_REF@9..12 + IDENT@9..12 "Foo" + SEMICOLON@12..13 ";" + WHITESPACE@13..14 "\n" + TYPE_ALIAS@14..29 + TYPE_KW@14..18 "type" + WHITESPACE@18..19 " " + NAME@19..20 + IDENT@19..20 "B" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + PATH_TYPE@23..28 + PATH@23..28 + PATH_SEGMENT@23..28 + COLON2@23..25 "::" + NAME_REF@25..28 + IDENT@25..28 "Foo" + SEMICOLON@28..29 ";" + WHITESPACE@29..30 "\n" + TYPE_ALIAS@30..49 + TYPE_KW@30..34 "type" + WHITESPACE@34..35 " " + NAME@35..36 + IDENT@35..36 "C" + WHITESPACE@36..37 " " + EQ@37..38 "=" + WHITESPACE@38..39 " " + PATH_TYPE@39..48 + PATH@39..48 + PATH@39..43 + PATH_SEGMENT@39..43 + SELF_KW@39..43 "self" + COLON2@43..45 "::" + PATH_SEGMENT@45..48 + NAME_REF@45..48 + IDENT@45..48 "Foo" + SEMICOLON@48..49 ";" + WHITESPACE@49..50 "\n" + TYPE_ALIAS@50..70 + TYPE_KW@50..54 "type" + WHITESPACE@54..55 " " + NAME@55..56 + IDENT@55..56 "D" + WHITESPACE@56..57 " " + EQ@57..58 "=" + WHITESPACE@58..59 " " + PATH_TYPE@59..69 + PATH@59..69 + PATH@59..64 + PATH_SEGMENT@59..64 + SUPER_KW@59..64 "super" + COLON2@64..66 "::" + PATH_SEGMENT@66..69 + NAME_REF@66..69 + IDENT@66..69 "Foo" + SEMICOLON@69..70 ";" + WHITESPACE@70..71 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0052_path_type.rs b/crates/syntax/test_data/parser/inline/ok/0052_path_type.rs new file mode 100644 index 00000000000..bf94f32e196 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0052_path_type.rs @@ -0,0 +1,4 @@ +type A = Foo; +type B = ::Foo; +type C = self::Foo; +type D = super::Foo; diff --git a/crates/syntax/test_data/parser/inline/ok/0053_path_expr.rast b/crates/syntax/test_data/parser/inline/ok/0053_path_expr.rast new file mode 100644 index 00000000000..c34cfeb3155 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0053_path_expr.rast @@ -0,0 +1,95 @@ +SOURCE_FILE@0..91 + FN@0..90 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..90 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..25 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + WILDCARD_PAT@19..20 + UNDERSCORE@19..20 "_" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + PATH_EXPR@23..24 + PATH@23..24 + PATH_SEGMENT@23..24 + NAME_REF@23..24 + IDENT@23..24 "a" + SEMICOLON@24..25 ";" + WHITESPACE@25..30 "\n " + LET_STMT@30..43 + LET_KW@30..33 "let" + WHITESPACE@33..34 " " + WILDCARD_PAT@34..35 + UNDERSCORE@34..35 "_" + WHITESPACE@35..36 " " + EQ@36..37 "=" + WHITESPACE@37..38 " " + PATH_EXPR@38..42 + PATH@38..42 + PATH@38..39 + PATH_SEGMENT@38..39 + NAME_REF@38..39 + IDENT@38..39 "a" + COLON2@39..41 "::" + PATH_SEGMENT@41..42 + NAME_REF@41..42 + IDENT@41..42 "b" + SEMICOLON@42..43 ";" + WHITESPACE@43..48 "\n " + LET_STMT@48..65 + LET_KW@48..51 "let" + WHITESPACE@51..52 " " + WILDCARD_PAT@52..53 + UNDERSCORE@52..53 "_" + WHITESPACE@53..54 " " + EQ@54..55 "=" + WHITESPACE@55..56 " " + PATH_EXPR@56..64 + PATH@56..64 + PATH_SEGMENT@56..64 + COLON2@56..58 "::" + NAME_REF@58..59 + IDENT@58..59 "a" + GENERIC_ARG_LIST@59..64 + COLON2@59..61 "::" + L_ANGLE@61..62 "<" + TYPE_ARG@62..63 + PATH_TYPE@62..63 + PATH@62..63 + PATH_SEGMENT@62..63 + NAME_REF@62..63 + IDENT@62..63 "b" + R_ANGLE@63..64 ">" + SEMICOLON@64..65 ";" + WHITESPACE@65..70 "\n " + LET_STMT@70..88 + LET_KW@70..73 "let" + WHITESPACE@73..74 " " + WILDCARD_PAT@74..75 + UNDERSCORE@74..75 "_" + WHITESPACE@75..76 " " + EQ@76..77 "=" + WHITESPACE@77..78 " " + MACRO_CALL@78..87 + PATH@78..84 + PATH_SEGMENT@78..84 + NAME_REF@78..84 + IDENT@78..84 "format" + BANG@84..85 "!" + TOKEN_TREE@85..87 + L_PAREN@85..86 "(" + R_PAREN@86..87 ")" + SEMICOLON@87..88 ";" + WHITESPACE@88..89 "\n" + R_CURLY@89..90 "}" + WHITESPACE@90..91 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0053_path_expr.rs b/crates/syntax/test_data/parser/inline/ok/0053_path_expr.rs new file mode 100644 index 00000000000..333ebabef48 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0053_path_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + let _ = a; + let _ = a::b; + let _ = ::a::; + let _ = format!(); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast b/crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast new file mode 100644 index 00000000000..9ae271817e9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rast @@ -0,0 +1,44 @@ +SOURCE_FILE@0..64 + STRUCT@0..63 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + WHITESPACE@8..9 " " + RECORD_FIELD_LIST@9..63 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + RECORD_FIELD@15..60 + ATTR@15..43 + POUND@15..16 "#" + L_BRACK@16..17 "[" + PATH@17..22 + PATH_SEGMENT@17..22 + NAME_REF@17..22 + IDENT@17..22 "serde" + TOKEN_TREE@22..42 + L_PAREN@22..23 "(" + IDENT@23..27 "with" + WHITESPACE@27..28 " " + EQ@28..29 "=" + WHITESPACE@29..30 " " + STRING@30..41 "\"url_serde\"" + R_PAREN@41..42 ")" + R_BRACK@42..43 "]" + WHITESPACE@43..48 "\n " + VISIBILITY@48..51 + PUB_KW@48..51 "pub" + WHITESPACE@51..52 " " + NAME@52..55 + IDENT@52..55 "uri" + COLON@55..56 ":" + WHITESPACE@56..57 " " + PATH_TYPE@57..60 + PATH@57..60 + PATH_SEGMENT@57..60 + NAME_REF@57..60 + IDENT@57..60 "Uri" + COMMA@60..61 "," + WHITESPACE@61..62 "\n" + R_CURLY@62..63 "}" + WHITESPACE@63..64 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rs b/crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rs new file mode 100644 index 00000000000..4744d8ac065 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0054_record_field_attrs.rs @@ -0,0 +1,4 @@ +struct S { + #[serde(with = "url_serde")] + pub uri: Uri, +} diff --git a/crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rast b/crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rast new file mode 100644 index 00000000000..68bb4385256 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rast @@ -0,0 +1,76 @@ +SOURCE_FILE@0..113 + FN@0..112 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..112 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + MATCH_EXPR@16..110 + MATCH_KW@16..21 "match" + WHITESPACE@21..22 " " + TUPLE_EXPR@22..24 + L_PAREN@22..23 "(" + R_PAREN@23..24 ")" + WHITESPACE@24..25 " " + MATCH_ARM_LIST@25..110 + L_CURLY@25..26 "{" + WHITESPACE@26..35 "\n " + MATCH_ARM@35..43 + LITERAL_PAT@35..37 + MINUS@35..36 "-" + LITERAL@36..37 + INT_NUMBER@36..37 "1" + WHITESPACE@37..38 " " + FAT_ARROW@38..40 "=>" + WHITESPACE@40..41 " " + TUPLE_EXPR@41..43 + L_PAREN@41..42 "(" + R_PAREN@42..43 ")" + COMMA@43..44 "," + WHITESPACE@44..53 "\n " + MATCH_ARM@53..61 + LITERAL_PAT@53..55 + LITERAL@53..55 + INT_NUMBER@53..55 "92" + WHITESPACE@55..56 " " + FAT_ARROW@56..58 "=>" + WHITESPACE@58..59 " " + TUPLE_EXPR@59..61 + L_PAREN@59..60 "(" + R_PAREN@60..61 ")" + COMMA@61..62 "," + WHITESPACE@62..71 "\n " + MATCH_ARM@71..80 + LITERAL_PAT@71..74 + LITERAL@71..74 + CHAR@71..74 "\'c\'" + WHITESPACE@74..75 " " + FAT_ARROW@75..77 "=>" + WHITESPACE@77..78 " " + TUPLE_EXPR@78..80 + L_PAREN@78..79 "(" + R_PAREN@79..80 ")" + COMMA@80..81 "," + WHITESPACE@81..90 "\n " + MATCH_ARM@90..103 + LITERAL_PAT@90..97 + LITERAL@90..97 + STRING@90..97 "\"hello\"" + WHITESPACE@97..98 " " + FAT_ARROW@98..100 "=>" + WHITESPACE@100..101 " " + TUPLE_EXPR@101..103 + L_PAREN@101..102 "(" + R_PAREN@102..103 ")" + COMMA@103..104 "," + WHITESPACE@104..109 "\n " + R_CURLY@109..110 "}" + WHITESPACE@110..111 "\n" + R_CURLY@111..112 "}" + WHITESPACE@112..113 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rs b/crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rs new file mode 100644 index 00000000000..6dfd67b4ce9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0055_literal_pattern.rs @@ -0,0 +1,8 @@ +fn main() { + match () { + -1 => (), + 92 => (), + 'c' => (), + "hello" => (), + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0056_where_clause.rast b/crates/syntax/test_data/parser/inline/ok/0056_where_clause.rast new file mode 100644 index 00000000000..28129c50c61 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0056_where_clause.rast @@ -0,0 +1,110 @@ +SOURCE_FILE@0..116 + FN@0..115 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 "\n" + WHERE_CLAUSE@9..112 + WHERE_KW@9..14 "where" + WHITESPACE@14..18 "\n " + WHERE_PRED@18..29 + LIFETIME@18..20 "\'a" + COLON@20..21 ":" + WHITESPACE@21..22 " " + TYPE_BOUND_LIST@22..29 + TYPE_BOUND@22..24 + LIFETIME@22..24 "\'b" + WHITESPACE@24..25 " " + PLUS@25..26 "+" + WHITESPACE@26..27 " " + TYPE_BOUND@27..29 + LIFETIME@27..29 "\'c" + COMMA@29..30 "," + WHITESPACE@30..34 "\n " + WHERE_PRED@34..59 + PATH_TYPE@34..35 + PATH@34..35 + PATH_SEGMENT@34..35 + NAME_REF@34..35 + IDENT@34..35 "T" + COLON@35..36 ":" + WHITESPACE@36..37 " " + TYPE_BOUND_LIST@37..59 + TYPE_BOUND@37..42 + PATH_TYPE@37..42 + PATH@37..42 + PATH_SEGMENT@37..42 + NAME_REF@37..42 + IDENT@37..42 "Clone" + WHITESPACE@42..43 " " + PLUS@43..44 "+" + WHITESPACE@44..45 " " + TYPE_BOUND@45..49 + PATH_TYPE@45..49 + PATH@45..49 + PATH_SEGMENT@45..49 + NAME_REF@45..49 + IDENT@45..49 "Copy" + WHITESPACE@49..50 " " + PLUS@50..51 "+" + WHITESPACE@51..52 " " + TYPE_BOUND@52..59 + LIFETIME@52..59 "\'static" + COMMA@59..60 "," + WHITESPACE@60..64 "\n " + WHERE_PRED@64..82 + PATH_TYPE@64..78 + PATH@64..78 + PATH@64..72 + PATH_SEGMENT@64..72 + NAME_REF@64..72 + IDENT@64..72 "Iterator" + COLON2@72..74 "::" + PATH_SEGMENT@74..78 + NAME_REF@74..78 + IDENT@74..78 "Item" + COLON@78..79 ":" + WHITESPACE@79..80 " " + TYPE_BOUND_LIST@80..82 + TYPE_BOUND@80..82 + LIFETIME@80..82 "\'a" + COMMA@82..83 "," + WHITESPACE@83..87 "\n " + WHERE_PRED@87..112 + PATH_TYPE@87..108 + PATH@87..108 + PATH@87..102 + PATH_SEGMENT@87..102 + L_ANGLE@87..88 "<" + PATH_TYPE@88..89 + PATH@88..89 + PATH_SEGMENT@88..89 + NAME_REF@88..89 + IDENT@88..89 "T" + WHITESPACE@89..90 " " + AS_KW@90..92 "as" + WHITESPACE@92..93 " " + PATH_TYPE@93..101 + PATH@93..101 + PATH_SEGMENT@93..101 + NAME_REF@93..101 + IDENT@93..101 "Iterator" + R_ANGLE@101..102 ">" + COLON2@102..104 "::" + PATH_SEGMENT@104..108 + NAME_REF@104..108 + IDENT@104..108 "Item" + COLON@108..109 ":" + WHITESPACE@109..110 " " + TYPE_BOUND_LIST@110..112 + TYPE_BOUND@110..112 + LIFETIME@110..112 "\'a" + WHITESPACE@112..113 "\n" + BLOCK_EXPR@113..115 + L_CURLY@113..114 "{" + R_CURLY@114..115 "}" + WHITESPACE@115..116 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0056_where_clause.rs b/crates/syntax/test_data/parser/inline/ok/0056_where_clause.rs new file mode 100644 index 00000000000..19d7e571b0c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0056_where_clause.rs @@ -0,0 +1,7 @@ +fn foo() +where + 'a: 'b + 'c, + T: Clone + Copy + 'static, + Iterator::Item: 'a, + ::Item: 'a +{} diff --git a/crates/syntax/test_data/parser/inline/ok/0058_range_pat.rast b/crates/syntax/test_data/parser/inline/ok/0058_range_pat.rast new file mode 100644 index 00000000000..3e72f9671c3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0058_range_pat.rast @@ -0,0 +1,82 @@ +SOURCE_FILE@0..112 + FN@0..111 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..111 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + MATCH_EXPR@16..109 + MATCH_KW@16..21 "match" + WHITESPACE@21..22 " " + LITERAL@22..24 + INT_NUMBER@22..24 "92" + WHITESPACE@24..25 " " + MATCH_ARM_LIST@25..109 + L_CURLY@25..26 "{" + WHITESPACE@26..35 "\n " + MATCH_ARM@35..50 + RANGE_PAT@35..44 + LITERAL_PAT@35..36 + LITERAL@35..36 + INT_NUMBER@35..36 "0" + WHITESPACE@36..37 " " + DOT3@37..40 "..." + WHITESPACE@40..41 " " + LITERAL_PAT@41..44 + LITERAL@41..44 + INT_NUMBER@41..44 "100" + WHITESPACE@44..45 " " + FAT_ARROW@45..47 "=>" + WHITESPACE@47..48 " " + TUPLE_EXPR@48..50 + L_PAREN@48..49 "(" + R_PAREN@49..50 ")" + COMMA@50..51 "," + WHITESPACE@51..60 "\n " + MATCH_ARM@60..77 + RANGE_PAT@60..71 + LITERAL_PAT@60..63 + LITERAL@60..63 + INT_NUMBER@60..63 "101" + WHITESPACE@63..64 " " + DOT2EQ@64..67 "..=" + WHITESPACE@67..68 " " + LITERAL_PAT@68..71 + LITERAL@68..71 + INT_NUMBER@68..71 "200" + WHITESPACE@71..72 " " + FAT_ARROW@72..74 "=>" + WHITESPACE@74..75 " " + TUPLE_EXPR@75..77 + L_PAREN@75..76 "(" + R_PAREN@76..77 ")" + COMMA@77..78 "," + WHITESPACE@78..87 "\n " + MATCH_ARM@87..102 + RANGE_PAT@87..97 + LITERAL_PAT@87..90 + LITERAL@87..90 + INT_NUMBER@87..90 "200" + WHITESPACE@90..91 " " + DOT2@91..93 ".." + WHITESPACE@93..94 " " + LITERAL_PAT@94..97 + LITERAL@94..97 + INT_NUMBER@94..97 "301" + FAT_ARROW@97..99 "=>" + WHITESPACE@99..100 " " + TUPLE_EXPR@100..102 + L_PAREN@100..101 "(" + R_PAREN@101..102 ")" + COMMA@102..103 "," + WHITESPACE@103..108 "\n " + R_CURLY@108..109 "}" + WHITESPACE@109..110 "\n" + R_CURLY@110..111 "}" + WHITESPACE@111..112 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0058_range_pat.rs b/crates/syntax/test_data/parser/inline/ok/0058_range_pat.rs new file mode 100644 index 00000000000..c12ab6fcea2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0058_range_pat.rs @@ -0,0 +1,7 @@ +fn main() { + match 92 { + 0 ... 100 => (), + 101 ..= 200 => (), + 200 .. 301=> (), + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast b/crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast new file mode 100644 index 00000000000..984829317e2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rast @@ -0,0 +1,58 @@ +SOURCE_FILE@0..83 + FN@0..82 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..82 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + MATCH_EXPR@15..80 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..80 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + MATCH_ARM@34..41 + WILDCARD_PAT@34..35 + UNDERSCORE@34..35 "_" + WHITESPACE@35..36 " " + FAT_ARROW@36..38 "=>" + WHITESPACE@38..39 " " + TUPLE_EXPR@39..41 + L_PAREN@39..40 "(" + R_PAREN@40..41 ")" + COMMA@41..42 "," + WHITESPACE@42..51 "\n " + MATCH_ARM@51..58 + WILDCARD_PAT@51..52 + UNDERSCORE@51..52 "_" + WHITESPACE@52..53 " " + FAT_ARROW@53..55 "=>" + WHITESPACE@55..56 " " + BLOCK_EXPR@56..58 + L_CURLY@56..57 "{" + R_CURLY@57..58 "}" + WHITESPACE@58..67 "\n " + MATCH_ARM@67..74 + WILDCARD_PAT@67..68 + UNDERSCORE@67..68 "_" + WHITESPACE@68..69 " " + FAT_ARROW@69..71 "=>" + WHITESPACE@71..72 " " + TUPLE_EXPR@72..74 + L_PAREN@72..73 "(" + R_PAREN@73..74 ")" + WHITESPACE@74..79 "\n " + R_CURLY@79..80 "}" + WHITESPACE@80..81 "\n" + R_CURLY@81..82 "}" + WHITESPACE@82..83 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rs b/crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rs new file mode 100644 index 00000000000..1f25d577a95 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0059_match_arms_commas.rs @@ -0,0 +1,7 @@ +fn foo() { + match () { + _ => (), + _ => {} + _ => () + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rast b/crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rast new file mode 100644 index 00000000000..25e1777d1ab --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rast @@ -0,0 +1,10 @@ +SOURCE_FILE@0..18 + EXTERN_CRATE@0..17 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + CRATE_KW@7..12 "crate" + WHITESPACE@12..13 " " + NAME_REF@13..16 + IDENT@13..16 "foo" + SEMICOLON@16..17 ";" + WHITESPACE@17..18 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rs b/crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rs new file mode 100644 index 00000000000..49af74e1b74 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0060_extern_crate.rs @@ -0,0 +1 @@ +extern crate foo; diff --git a/crates/syntax/test_data/parser/inline/ok/0061_record_lit.rast b/crates/syntax/test_data/parser/inline/ok/0061_record_lit.rast new file mode 100644 index 00000000000..a9ae1aa5953 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0061_record_lit.rast @@ -0,0 +1,124 @@ +SOURCE_FILE@0..112 + FN@0..111 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..111 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..20 + RECORD_EXPR@15..19 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "S" + WHITESPACE@16..17 " " + RECORD_EXPR_FIELD_LIST@17..19 + L_CURLY@17..18 "{" + R_CURLY@18..19 "}" + SEMICOLON@19..20 ";" + WHITESPACE@20..25 "\n " + EXPR_STMT@25..41 + RECORD_EXPR@25..40 + PATH@25..26 + PATH_SEGMENT@25..26 + NAME_REF@25..26 + IDENT@25..26 "S" + WHITESPACE@26..27 " " + RECORD_EXPR_FIELD_LIST@27..40 + L_CURLY@27..28 "{" + WHITESPACE@28..29 " " + RECORD_EXPR_FIELD@29..30 + PATH_EXPR@29..30 + PATH@29..30 + PATH_SEGMENT@29..30 + NAME_REF@29..30 + IDENT@29..30 "x" + COMMA@30..31 "," + WHITESPACE@31..32 " " + RECORD_EXPR_FIELD@32..37 + NAME_REF@32..33 + IDENT@32..33 "y" + COLON@33..34 ":" + WHITESPACE@34..35 " " + LITERAL@35..37 + INT_NUMBER@35..37 "32" + COMMA@37..38 "," + WHITESPACE@38..39 " " + R_CURLY@39..40 "}" + SEMICOLON@40..41 ";" + WHITESPACE@41..46 "\n " + EXPR_STMT@46..83 + RECORD_EXPR@46..82 + PATH@46..47 + PATH_SEGMENT@46..47 + NAME_REF@46..47 + IDENT@46..47 "S" + WHITESPACE@47..48 " " + RECORD_EXPR_FIELD_LIST@48..82 + L_CURLY@48..49 "{" + WHITESPACE@49..50 " " + RECORD_EXPR_FIELD@50..51 + PATH_EXPR@50..51 + PATH@50..51 + PATH_SEGMENT@50..51 + NAME_REF@50..51 + IDENT@50..51 "x" + COMMA@51..52 "," + WHITESPACE@52..53 " " + RECORD_EXPR_FIELD@53..58 + NAME_REF@53..54 + IDENT@53..54 "y" + COLON@54..55 ":" + WHITESPACE@55..56 " " + LITERAL@56..58 + INT_NUMBER@56..58 "32" + COMMA@58..59 "," + WHITESPACE@59..60 " " + DOT2@60..62 ".." + CALL_EXPR@62..80 + PATH_EXPR@62..78 + PATH@62..78 + PATH@62..69 + PATH_SEGMENT@62..69 + NAME_REF@62..69 + IDENT@62..69 "Default" + COLON2@69..71 "::" + PATH_SEGMENT@71..78 + NAME_REF@71..78 + IDENT@71..78 "default" + ARG_LIST@78..80 + L_PAREN@78..79 "(" + R_PAREN@79..80 ")" + WHITESPACE@80..81 " " + R_CURLY@81..82 "}" + SEMICOLON@82..83 ";" + WHITESPACE@83..88 "\n " + EXPR_STMT@88..109 + RECORD_EXPR@88..108 + PATH@88..99 + PATH_SEGMENT@88..99 + NAME_REF@88..99 + IDENT@88..99 "TupleStruct" + WHITESPACE@99..100 " " + RECORD_EXPR_FIELD_LIST@100..108 + L_CURLY@100..101 "{" + WHITESPACE@101..102 " " + RECORD_EXPR_FIELD@102..106 + NAME_REF@102..103 + INT_NUMBER@102..103 "0" + COLON@103..104 ":" + WHITESPACE@104..105 " " + LITERAL@105..106 + INT_NUMBER@105..106 "1" + WHITESPACE@106..107 " " + R_CURLY@107..108 "}" + SEMICOLON@108..109 ";" + WHITESPACE@109..110 "\n" + R_CURLY@110..111 "}" + WHITESPACE@111..112 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0061_record_lit.rs b/crates/syntax/test_data/parser/inline/ok/0061_record_lit.rs new file mode 100644 index 00000000000..6285e554977 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0061_record_lit.rs @@ -0,0 +1,6 @@ +fn foo() { + S {}; + S { x, y: 32, }; + S { x, y: 32, ..Default::default() }; + TupleStruct { 0: 1 }; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rast b/crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rast new file mode 100644 index 00000000000..de8217064f1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rast @@ -0,0 +1,66 @@ +SOURCE_FILE@0..70 + FN@0..11 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..11 + L_CURLY@9..10 "{" + R_CURLY@10..11 "}" + WHITESPACE@11..12 "\n" + MACRO_CALL@12..31 + PATH@12..23 + PATH_SEGMENT@12..23 + NAME_REF@12..23 + IDENT@12..23 "macro_rules" + BANG@23..24 "!" + WHITESPACE@24..25 " " + NAME@25..28 + IDENT@25..28 "foo" + WHITESPACE@28..29 " " + TOKEN_TREE@29..31 + L_CURLY@29..30 "{" + R_CURLY@30..31 "}" + WHITESPACE@31..32 "\n" + MACRO_CALL@32..44 + PATH@32..40 + PATH@32..35 + PATH_SEGMENT@32..35 + NAME_REF@32..35 + IDENT@32..35 "foo" + COLON2@35..37 "::" + PATH_SEGMENT@37..40 + NAME_REF@37..40 + IDENT@37..40 "bar" + BANG@40..41 "!" + TOKEN_TREE@41..43 + L_PAREN@41..42 "(" + R_PAREN@42..43 ")" + SEMICOLON@43..44 ";" + WHITESPACE@44..45 "\n" + MACRO_CALL@45..59 + PATH@45..55 + PATH@45..50 + PATH_SEGMENT@45..50 + SUPER_KW@45..50 "super" + COLON2@50..52 "::" + PATH_SEGMENT@52..55 + NAME_REF@52..55 + IDENT@52..55 "baz" + BANG@55..56 "!" + WHITESPACE@56..57 " " + TOKEN_TREE@57..59 + L_CURLY@57..58 "{" + R_CURLY@58..59 "}" + WHITESPACE@59..60 "\n" + STRUCT@60..69 + STRUCT_KW@60..66 "struct" + WHITESPACE@66..67 " " + NAME@67..68 + IDENT@67..68 "S" + SEMICOLON@68..69 ";" + WHITESPACE@69..70 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rs b/crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rs new file mode 100644 index 00000000000..24a15c5c5c9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0062_mod_contents.rs @@ -0,0 +1,5 @@ +fn foo() {} +macro_rules! foo {} +foo::bar!(); +super::baz! {} +struct S; diff --git a/crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast b/crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast new file mode 100644 index 00000000000..4368930cc91 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rast @@ -0,0 +1,23 @@ +SOURCE_FILE@0..20 + IMPL@0..19 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + BANG@5..6 "!" + PATH_TYPE@6..10 + PATH@6..10 + PATH_SEGMENT@6..10 + NAME_REF@6..10 + IDENT@6..10 "Send" + WHITESPACE@10..11 " " + FOR_KW@11..14 "for" + WHITESPACE@14..15 " " + PATH_TYPE@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "X" + WHITESPACE@16..17 " " + ASSOC_ITEM_LIST@17..19 + L_CURLY@17..18 "{" + R_CURLY@18..19 "}" + WHITESPACE@19..20 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rs b/crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rs new file mode 100644 index 00000000000..b7527c8705a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0063_impl_def_neg.rs @@ -0,0 +1 @@ +impl !Send for X {} diff --git a/crates/syntax/test_data/parser/inline/ok/0064_if_expr.rast b/crates/syntax/test_data/parser/inline/ok/0064_if_expr.rast new file mode 100644 index 00000000000..58716000344 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0064_if_expr.rast @@ -0,0 +1,121 @@ +SOURCE_FILE@0..137 + FN@0..136 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..136 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..26 + IF_EXPR@15..25 + IF_KW@15..17 "if" + WHITESPACE@17..18 " " + CONDITION@18..22 + LITERAL@18..22 + TRUE_KW@18..22 "true" + WHITESPACE@22..23 " " + BLOCK_EXPR@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + SEMICOLON@25..26 ";" + WHITESPACE@26..31 "\n " + EXPR_STMT@31..50 + IF_EXPR@31..49 + IF_KW@31..33 "if" + WHITESPACE@33..34 " " + CONDITION@34..38 + LITERAL@34..38 + TRUE_KW@34..38 "true" + WHITESPACE@38..39 " " + BLOCK_EXPR@39..41 + L_CURLY@39..40 "{" + R_CURLY@40..41 "}" + WHITESPACE@41..42 " " + ELSE_KW@42..46 "else" + WHITESPACE@46..47 " " + BLOCK_EXPR@47..49 + L_CURLY@47..48 "{" + R_CURLY@48..49 "}" + SEMICOLON@49..50 ";" + WHITESPACE@50..55 "\n " + EXPR_STMT@55..91 + IF_EXPR@55..90 + IF_KW@55..57 "if" + WHITESPACE@57..58 " " + CONDITION@58..62 + LITERAL@58..62 + TRUE_KW@58..62 "true" + WHITESPACE@62..63 " " + BLOCK_EXPR@63..65 + L_CURLY@63..64 "{" + R_CURLY@64..65 "}" + WHITESPACE@65..66 " " + ELSE_KW@66..70 "else" + WHITESPACE@70..71 " " + IF_EXPR@71..90 + IF_KW@71..73 "if" + WHITESPACE@73..74 " " + CONDITION@74..79 + LITERAL@74..79 + FALSE_KW@74..79 "false" + WHITESPACE@79..80 " " + BLOCK_EXPR@80..82 + L_CURLY@80..81 "{" + R_CURLY@81..82 "}" + WHITESPACE@82..83 " " + ELSE_KW@83..87 "else" + WHITESPACE@87..88 " " + BLOCK_EXPR@88..90 + L_CURLY@88..89 "{" + R_CURLY@89..90 "}" + SEMICOLON@90..91 ";" + WHITESPACE@91..96 "\n " + EXPR_STMT@96..104 + IF_EXPR@96..103 + IF_KW@96..98 "if" + WHITESPACE@98..99 " " + CONDITION@99..100 + PATH_EXPR@99..100 + PATH@99..100 + PATH_SEGMENT@99..100 + NAME_REF@99..100 + IDENT@99..100 "S" + WHITESPACE@100..101 " " + BLOCK_EXPR@101..103 + L_CURLY@101..102 "{" + R_CURLY@102..103 "}" + SEMICOLON@103..104 ";" + WHITESPACE@104..109 "\n " + EXPR_STMT@109..134 + IF_EXPR@109..133 + IF_KW@109..111 "if" + WHITESPACE@111..112 " " + CONDITION@112..120 + BLOCK_EXPR@112..120 + L_CURLY@112..113 "{" + WHITESPACE@113..114 " " + LITERAL@114..118 + TRUE_KW@114..118 "true" + WHITESPACE@118..119 " " + R_CURLY@119..120 "}" + WHITESPACE@120..121 " " + BLOCK_EXPR@121..124 + L_CURLY@121..122 "{" + WHITESPACE@122..123 " " + R_CURLY@123..124 "}" + WHITESPACE@124..125 " " + ELSE_KW@125..129 "else" + WHITESPACE@129..130 " " + BLOCK_EXPR@130..133 + L_CURLY@130..131 "{" + WHITESPACE@131..132 " " + R_CURLY@132..133 "}" + SEMICOLON@133..134 ";" + WHITESPACE@134..135 "\n" + R_CURLY@135..136 "}" + WHITESPACE@136..137 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0064_if_expr.rs b/crates/syntax/test_data/parser/inline/ok/0064_if_expr.rs new file mode 100644 index 00000000000..40f227ba3a4 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0064_if_expr.rs @@ -0,0 +1,7 @@ +fn foo() { + if true {}; + if true {} else {}; + if true {} else if false {} else {}; + if S {}; + if { true } { } else { }; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast b/crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast new file mode 100644 index 00000000000..3a7fcfe2487 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rast @@ -0,0 +1,43 @@ +SOURCE_FILE@0..42 + TYPE_ALIAS@0..41 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + DYN_TRAIT_TYPE@9..40 + DYN_KW@9..12 "dyn" + WHITESPACE@12..13 " " + TYPE_BOUND_LIST@13..40 + TYPE_BOUND@13..35 + PATH_TYPE@13..35 + PATH@13..35 + PATH_SEGMENT@13..35 + NAME_REF@13..21 + IDENT@13..21 "Iterator" + GENERIC_ARG_LIST@21..35 + L_ANGLE@21..22 "<" + ASSOC_TYPE_ARG@22..34 + NAME_REF@22..26 + IDENT@22..26 "Item" + EQ@26..27 "=" + PATH_TYPE@27..34 + PATH@27..34 + PATH_SEGMENT@27..34 + NAME_REF@27..30 + IDENT@27..30 "Foo" + GENERIC_ARG_LIST@30..34 + L_ANGLE@30..31 "<" + LIFETIME_ARG@31..33 + LIFETIME@31..33 "\'a" + R_ANGLE@33..34 ">" + R_ANGLE@34..35 ">" + WHITESPACE@35..36 " " + PLUS@36..37 "+" + WHITESPACE@37..38 " " + TYPE_BOUND@38..40 + LIFETIME@38..40 "\'a" + SEMICOLON@40..41 ";" + WHITESPACE@41..42 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rs b/crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rs new file mode 100644 index 00000000000..c3ecabb992b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rs @@ -0,0 +1 @@ +type A = dyn Iterator> + 'a; diff --git a/crates/syntax/test_data/parser/inline/ok/0066_match_arm.rast b/crates/syntax/test_data/parser/inline/ok/0066_match_arm.rast new file mode 100644 index 00000000000..57d0661a54d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0066_match_arm.rast @@ -0,0 +1,151 @@ +SOURCE_FILE@0..167 + FN@0..166 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..166 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..164 + MATCH_EXPR@15..163 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..163 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + MATCH_ARM@34..41 + WILDCARD_PAT@34..35 + UNDERSCORE@34..35 "_" + WHITESPACE@35..36 " " + FAT_ARROW@36..38 "=>" + WHITESPACE@38..39 " " + TUPLE_EXPR@39..41 + L_PAREN@39..40 "(" + R_PAREN@40..41 ")" + COMMA@41..42 "," + WHITESPACE@42..51 "\n " + MATCH_ARM@51..83 + WILDCARD_PAT@51..52 + UNDERSCORE@51..52 "_" + WHITESPACE@52..53 " " + MATCH_GUARD@53..77 + IF_KW@53..55 "if" + WHITESPACE@55..56 " " + BIN_EXPR@56..77 + PATH_EXPR@56..60 + PATH@56..60 + PATH_SEGMENT@56..60 + NAME_REF@56..60 + IDENT@56..60 "Test" + WHITESPACE@60..61 " " + R_ANGLE@61..62 ">" + WHITESPACE@62..63 " " + RECORD_EXPR@63..77 + PATH@63..67 + PATH_SEGMENT@63..67 + NAME_REF@63..67 + IDENT@63..67 "Test" + RECORD_EXPR_FIELD_LIST@67..77 + L_CURLY@67..68 "{" + RECORD_EXPR_FIELD@68..76 + NAME_REF@68..73 + IDENT@68..73 "field" + COLON@73..74 ":" + WHITESPACE@74..75 " " + LITERAL@75..76 + INT_NUMBER@75..76 "0" + R_CURLY@76..77 "}" + WHITESPACE@77..78 " " + FAT_ARROW@78..80 "=>" + WHITESPACE@80..81 " " + TUPLE_EXPR@81..83 + L_PAREN@81..82 "(" + R_PAREN@82..83 ")" + COMMA@83..84 "," + WHITESPACE@84..93 "\n " + MATCH_ARM@93..109 + OR_PAT@93..98 + IDENT_PAT@93..94 + NAME@93..94 + IDENT@93..94 "X" + WHITESPACE@94..95 " " + PIPE@95..96 "|" + WHITESPACE@96..97 " " + IDENT_PAT@97..98 + NAME@97..98 + IDENT@97..98 "Y" + WHITESPACE@98..99 " " + MATCH_GUARD@99..103 + IF_KW@99..101 "if" + WHITESPACE@101..102 " " + PATH_EXPR@102..103 + PATH@102..103 + PATH_SEGMENT@102..103 + NAME_REF@102..103 + IDENT@102..103 "Z" + WHITESPACE@103..104 " " + FAT_ARROW@104..106 "=>" + WHITESPACE@106..107 " " + TUPLE_EXPR@107..109 + L_PAREN@107..108 "(" + R_PAREN@108..109 ")" + COMMA@109..110 "," + WHITESPACE@110..119 "\n " + MATCH_ARM@119..137 + PIPE@119..120 "|" + WHITESPACE@120..121 " " + OR_PAT@121..126 + IDENT_PAT@121..122 + NAME@121..122 + IDENT@121..122 "X" + WHITESPACE@122..123 " " + PIPE@123..124 "|" + WHITESPACE@124..125 " " + IDENT_PAT@125..126 + NAME@125..126 + IDENT@125..126 "Y" + WHITESPACE@126..127 " " + MATCH_GUARD@127..131 + IF_KW@127..129 "if" + WHITESPACE@129..130 " " + PATH_EXPR@130..131 + PATH@130..131 + PATH_SEGMENT@130..131 + NAME_REF@130..131 + IDENT@130..131 "Z" + WHITESPACE@131..132 " " + FAT_ARROW@132..134 "=>" + WHITESPACE@134..135 " " + TUPLE_EXPR@135..137 + L_PAREN@135..136 "(" + R_PAREN@136..137 ")" + COMMA@137..138 "," + WHITESPACE@138..147 "\n " + MATCH_ARM@147..156 + PIPE@147..148 "|" + WHITESPACE@148..149 " " + IDENT_PAT@149..150 + NAME@149..150 + IDENT@149..150 "X" + WHITESPACE@150..151 " " + FAT_ARROW@151..153 "=>" + WHITESPACE@153..154 " " + TUPLE_EXPR@154..156 + L_PAREN@154..155 "(" + R_PAREN@155..156 ")" + COMMA@156..157 "," + WHITESPACE@157..162 "\n " + R_CURLY@162..163 "}" + SEMICOLON@163..164 ";" + WHITESPACE@164..165 "\n" + R_CURLY@165..166 "}" + WHITESPACE@166..167 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0066_match_arm.rs b/crates/syntax/test_data/parser/inline/ok/0066_match_arm.rs new file mode 100644 index 00000000000..9e009e24f4e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0066_match_arm.rs @@ -0,0 +1,9 @@ +fn foo() { + match () { + _ => (), + _ if Test > Test{field: 0} => (), + X | Y if Z => (), + | X | Y if Z => (), + | X => (), + }; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0067_crate_path.rast b/crates/syntax/test_data/parser/inline/ok/0067_crate_path.rast new file mode 100644 index 00000000000..702f2e0b0aa --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0067_crate_path.rast @@ -0,0 +1,15 @@ +SOURCE_FILE@0..16 + USE@0..15 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..14 + PATH@4..14 + PATH@4..9 + PATH_SEGMENT@4..9 + CRATE_KW@4..9 "crate" + COLON2@9..11 "::" + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "foo" + SEMICOLON@14..15 ";" + WHITESPACE@15..16 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0067_crate_path.rs b/crates/syntax/test_data/parser/inline/ok/0067_crate_path.rs new file mode 100644 index 00000000000..1bbb5930bf6 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0067_crate_path.rs @@ -0,0 +1 @@ +use crate::foo; diff --git a/crates/syntax/test_data/parser/inline/ok/0068_union_items.rast b/crates/syntax/test_data/parser/inline/ok/0068_union_items.rast new file mode 100644 index 00000000000..6589e479519 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0068_union_items.rast @@ -0,0 +1,46 @@ +SOURCE_FILE@0..51 + UNION@0..12 + UNION_KW@0..5 "union" + WHITESPACE@5..6 " " + NAME@6..9 + IDENT@6..9 "Foo" + WHITESPACE@9..10 " " + RECORD_FIELD_LIST@10..12 + L_CURLY@10..11 "{" + R_CURLY@11..12 "}" + WHITESPACE@12..13 "\n" + UNION@13..50 + UNION_KW@13..18 "union" + WHITESPACE@18..19 " " + NAME@19..22 + IDENT@19..22 "Foo" + WHITESPACE@22..23 " " + RECORD_FIELD_LIST@23..50 + L_CURLY@23..24 "{" + WHITESPACE@24..29 "\n " + RECORD_FIELD@29..35 + NAME@29..30 + IDENT@29..30 "a" + COLON@30..31 ":" + WHITESPACE@31..32 " " + PATH_TYPE@32..35 + PATH@32..35 + PATH_SEGMENT@32..35 + NAME_REF@32..35 + IDENT@32..35 "i32" + COMMA@35..36 "," + WHITESPACE@36..41 "\n " + RECORD_FIELD@41..47 + NAME@41..42 + IDENT@41..42 "b" + COLON@42..43 ":" + WHITESPACE@43..44 " " + PATH_TYPE@44..47 + PATH@44..47 + PATH_SEGMENT@44..47 + NAME_REF@44..47 + IDENT@44..47 "f32" + COMMA@47..48 "," + WHITESPACE@48..49 "\n" + R_CURLY@49..50 "}" + WHITESPACE@50..51 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0068_union_items.rs b/crates/syntax/test_data/parser/inline/ok/0068_union_items.rs new file mode 100644 index 00000000000..b7dd610d80a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0068_union_items.rs @@ -0,0 +1,5 @@ +union Foo {} +union Foo { + a: i32, + b: f32, +} diff --git a/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast b/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast new file mode 100644 index 00000000000..c4c5bc51e3e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast @@ -0,0 +1,37 @@ +SOURCE_FILE@0..37 + USE@0..18 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..17 + PATH@4..9 + PATH_SEGMENT@4..9 + CRATE_KW@4..9 "crate" + COLON2@9..11 "::" + USE_TREE_LIST@11..17 + L_CURLY@11..12 "{" + USE_TREE@12..16 + PATH@12..16 + PATH_SEGMENT@12..16 + NAME_REF@12..16 + IDENT@12..16 "Item" + R_CURLY@16..17 "}" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" + USE@19..36 + USE_KW@19..22 "use" + WHITESPACE@22..23 " " + USE_TREE@23..35 + PATH@23..27 + PATH_SEGMENT@23..27 + SELF_KW@23..27 "self" + COLON2@27..29 "::" + USE_TREE_LIST@29..35 + L_CURLY@29..30 "{" + USE_TREE@30..34 + PATH@30..34 + PATH_SEGMENT@30..34 + NAME_REF@30..34 + IDENT@30..34 "Item" + R_CURLY@34..35 "}" + SEMICOLON@35..36 ";" + WHITESPACE@36..37 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs b/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs new file mode 100644 index 00000000000..c0a3d634e57 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs @@ -0,0 +1,2 @@ +use crate::{Item}; +use self::{Item}; diff --git a/crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast b/crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast new file mode 100644 index 00000000000..36c9cd5bb2b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rast @@ -0,0 +1,50 @@ +SOURCE_FILE@0..46 + FN@0..45 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..45 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..31 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + WILDCARD_PAT@19..20 + UNDERSCORE@19..20 "_" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + BIN_EXPR@23..30 + BLOCK_EXPR@23..26 + L_CURLY@23..24 "{" + LITERAL@24..25 + INT_NUMBER@24..25 "1" + R_CURLY@25..26 "}" + WHITESPACE@26..27 " " + AMP@27..28 "&" + WHITESPACE@28..29 " " + LITERAL@29..30 + INT_NUMBER@29..30 "2" + SEMICOLON@30..31 ";" + WHITESPACE@31..36 "\n " + EXPR_STMT@36..39 + BLOCK_EXPR@36..39 + L_CURLY@36..37 "{" + LITERAL@37..38 + INT_NUMBER@37..38 "1" + R_CURLY@38..39 "}" + WHITESPACE@39..40 " " + EXPR_STMT@40..43 + REF_EXPR@40..42 + AMP@40..41 "&" + LITERAL@41..42 + INT_NUMBER@41..42 "2" + SEMICOLON@42..43 ";" + WHITESPACE@43..44 "\n" + R_CURLY@44..45 "}" + WHITESPACE@45..46 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs b/crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs new file mode 100644 index 00000000000..37b8437426d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs @@ -0,0 +1,4 @@ +fn foo() { + let _ = {1} & 2; + {1} &2; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0071_match_expr.rast b/crates/syntax/test_data/parser/inline/ok/0071_match_expr.rast new file mode 100644 index 00000000000..d34d98ced0c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0071_match_expr.rast @@ -0,0 +1,93 @@ +SOURCE_FILE@0..97 + FN@0..96 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..96 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..28 + MATCH_EXPR@15..27 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..27 + L_CURLY@24..25 "{" + WHITESPACE@25..26 " " + R_CURLY@26..27 "}" + SEMICOLON@27..28 ";" + WHITESPACE@28..33 "\n " + EXPR_STMT@33..44 + MATCH_EXPR@33..43 + MATCH_KW@33..38 "match" + WHITESPACE@38..39 " " + PATH_EXPR@39..40 + PATH@39..40 + PATH_SEGMENT@39..40 + NAME_REF@39..40 + IDENT@39..40 "S" + WHITESPACE@40..41 " " + MATCH_ARM_LIST@41..43 + L_CURLY@41..42 "{" + R_CURLY@42..43 "}" + SEMICOLON@43..44 ";" + WHITESPACE@44..49 "\n " + EXPR_STMT@49..71 + MATCH_EXPR@49..70 + MATCH_KW@49..54 "match" + WHITESPACE@54..55 " " + BLOCK_EXPR@55..58 + L_CURLY@55..56 "{" + WHITESPACE@56..57 " " + R_CURLY@57..58 "}" + WHITESPACE@58..59 " " + MATCH_ARM_LIST@59..70 + L_CURLY@59..60 "{" + WHITESPACE@60..61 " " + MATCH_ARM@61..68 + WILDCARD_PAT@61..62 + UNDERSCORE@61..62 "_" + WHITESPACE@62..63 " " + FAT_ARROW@63..65 "=>" + WHITESPACE@65..66 " " + TUPLE_EXPR@66..68 + L_PAREN@66..67 "(" + R_PAREN@67..68 ")" + WHITESPACE@68..69 " " + R_CURLY@69..70 "}" + SEMICOLON@70..71 ";" + WHITESPACE@71..76 "\n " + EXPR_STMT@76..94 + MATCH_EXPR@76..93 + MATCH_KW@76..81 "match" + WHITESPACE@81..82 " " + BLOCK_EXPR@82..90 + L_CURLY@82..83 "{" + WHITESPACE@83..84 " " + RECORD_EXPR@84..88 + PATH@84..85 + PATH_SEGMENT@84..85 + NAME_REF@84..85 + IDENT@84..85 "S" + WHITESPACE@85..86 " " + RECORD_EXPR_FIELD_LIST@86..88 + L_CURLY@86..87 "{" + R_CURLY@87..88 "}" + WHITESPACE@88..89 " " + R_CURLY@89..90 "}" + WHITESPACE@90..91 " " + MATCH_ARM_LIST@91..93 + L_CURLY@91..92 "{" + R_CURLY@92..93 "}" + SEMICOLON@93..94 ";" + WHITESPACE@94..95 "\n" + R_CURLY@95..96 "}" + WHITESPACE@96..97 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0071_match_expr.rs b/crates/syntax/test_data/parser/inline/ok/0071_match_expr.rs new file mode 100644 index 00000000000..c4021dc1048 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0071_match_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + match () { }; + match S {}; + match { } { _ => () }; + match { S {} } {}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0072_return_expr.rast b/crates/syntax/test_data/parser/inline/ok/0072_return_expr.rast new file mode 100644 index 00000000000..437d7ac0424 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0072_return_expr.rast @@ -0,0 +1,28 @@ +SOURCE_FILE@0..40 + FN@0..39 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..39 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..22 + RETURN_EXPR@15..21 + RETURN_KW@15..21 "return" + SEMICOLON@21..22 ";" + WHITESPACE@22..27 "\n " + EXPR_STMT@27..37 + RETURN_EXPR@27..36 + RETURN_KW@27..33 "return" + WHITESPACE@33..34 " " + LITERAL@34..36 + INT_NUMBER@34..36 "92" + SEMICOLON@36..37 ";" + WHITESPACE@37..38 "\n" + R_CURLY@38..39 "}" + WHITESPACE@39..40 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0072_return_expr.rs b/crates/syntax/test_data/parser/inline/ok/0072_return_expr.rs new file mode 100644 index 00000000000..5733666b605 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0072_return_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + return; + return 92; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast b/crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast new file mode 100644 index 00000000000..00cce69e6c7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rast @@ -0,0 +1,20 @@ +SOURCE_FILE@0..21 + TYPE_ALIAS@0..20 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..11 + IDENT@5..11 "Result" + GENERIC_PARAM_LIST@11..14 + L_ANGLE@11..12 "<" + TYPE_PARAM@12..13 + NAME@12..13 + IDENT@12..13 "T" + R_ANGLE@13..14 ">" + WHITESPACE@14..15 " " + EQ@15..16 "=" + WHITESPACE@16..17 " " + TUPLE_TYPE@17..19 + L_PAREN@17..18 "(" + R_PAREN@18..19 ")" + SEMICOLON@19..20 ";" + WHITESPACE@20..21 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rs b/crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rs new file mode 100644 index 00000000000..defd110c492 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0073_type_item_type_params.rs @@ -0,0 +1 @@ +type Result = (); diff --git a/crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast b/crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast new file mode 100644 index 00000000000..3a789b9f510 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rast @@ -0,0 +1,59 @@ +SOURCE_FILE@0..84 + FN@0..83 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..83 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + MATCH_EXPR@15..81 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..81 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + MATCH_ARM@34..41 + WILDCARD_PAT@34..35 + UNDERSCORE@34..35 "_" + WHITESPACE@35..36 " " + FAT_ARROW@36..38 "=>" + WHITESPACE@38..39 " " + BLOCK_EXPR@39..41 + L_CURLY@39..40 "{" + R_CURLY@40..41 "}" + WHITESPACE@41..50 "\n " + MATCH_ARM@50..58 + TUPLE_PAT@50..52 + L_PAREN@50..51 "(" + R_PAREN@51..52 ")" + WHITESPACE@52..53 " " + FAT_ARROW@53..55 "=>" + WHITESPACE@55..56 " " + BLOCK_EXPR@56..58 + L_CURLY@56..57 "{" + R_CURLY@57..58 "}" + WHITESPACE@58..67 "\n " + MATCH_ARM@67..75 + SLICE_PAT@67..69 + L_BRACK@67..68 "[" + R_BRACK@68..69 "]" + WHITESPACE@69..70 " " + FAT_ARROW@70..72 "=>" + WHITESPACE@72..73 " " + BLOCK_EXPR@73..75 + L_CURLY@73..74 "{" + R_CURLY@74..75 "}" + WHITESPACE@75..80 "\n " + R_CURLY@80..81 "}" + WHITESPACE@81..82 "\n" + R_CURLY@82..83 "}" + WHITESPACE@83..84 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs b/crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs new file mode 100644 index 00000000000..2edd578f9d7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs @@ -0,0 +1,7 @@ +fn foo() { + match () { + _ => {} + () => {} + [] => {} + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0075_block.rast b/crates/syntax/test_data/parser/inline/ok/0075_block.rast new file mode 100644 index 00000000000..e847ce9b268 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0075_block.rast @@ -0,0 +1,86 @@ +SOURCE_FILE@0..65 + FN@0..9 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "a" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + BLOCK_EXPR@7..9 + L_CURLY@7..8 "{" + R_CURLY@8..9 "}" + WHITESPACE@9..10 "\n" + FN@10..31 + FN_KW@10..12 "fn" + WHITESPACE@12..13 " " + NAME@13..14 + IDENT@13..14 "b" + PARAM_LIST@14..16 + L_PAREN@14..15 "(" + R_PAREN@15..16 ")" + WHITESPACE@16..17 " " + BLOCK_EXPR@17..31 + L_CURLY@17..18 "{" + WHITESPACE@18..19 " " + LET_STMT@19..29 + LET_KW@19..22 "let" + WHITESPACE@22..23 " " + WILDCARD_PAT@23..24 + UNDERSCORE@23..24 "_" + WHITESPACE@24..25 " " + EQ@25..26 "=" + WHITESPACE@26..27 " " + LITERAL@27..28 + INT_NUMBER@27..28 "1" + SEMICOLON@28..29 ";" + WHITESPACE@29..30 " " + R_CURLY@30..31 "}" + WHITESPACE@31..32 "\n" + FN@32..48 + FN_KW@32..34 "fn" + WHITESPACE@34..35 " " + NAME@35..36 + IDENT@35..36 "c" + PARAM_LIST@36..38 + L_PAREN@36..37 "(" + R_PAREN@37..38 ")" + WHITESPACE@38..39 " " + BLOCK_EXPR@39..48 + L_CURLY@39..40 "{" + WHITESPACE@40..41 " " + EXPR_STMT@41..43 + LITERAL@41..42 + INT_NUMBER@41..42 "1" + SEMICOLON@42..43 ";" + WHITESPACE@43..44 " " + EXPR_STMT@44..46 + LITERAL@44..45 + INT_NUMBER@44..45 "2" + SEMICOLON@45..46 ";" + WHITESPACE@46..47 " " + R_CURLY@47..48 "}" + WHITESPACE@48..49 "\n" + FN@49..64 + FN_KW@49..51 "fn" + WHITESPACE@51..52 " " + NAME@52..53 + IDENT@52..53 "d" + PARAM_LIST@53..55 + L_PAREN@53..54 "(" + R_PAREN@54..55 ")" + WHITESPACE@55..56 " " + BLOCK_EXPR@56..64 + L_CURLY@56..57 "{" + WHITESPACE@57..58 " " + EXPR_STMT@58..60 + LITERAL@58..59 + INT_NUMBER@58..59 "1" + SEMICOLON@59..60 ";" + WHITESPACE@60..61 " " + LITERAL@61..62 + INT_NUMBER@61..62 "2" + WHITESPACE@62..63 " " + R_CURLY@63..64 "}" + WHITESPACE@64..65 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0075_block.rs b/crates/syntax/test_data/parser/inline/ok/0075_block.rs new file mode 100644 index 00000000000..81f44c53307 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0075_block.rs @@ -0,0 +1,4 @@ +fn a() {} +fn b() { let _ = 1; } +fn c() { 1; 2; } +fn d() { 1; 2 } diff --git a/crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rast b/crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rast new file mode 100644 index 00000000000..96217a7fdb4 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rast @@ -0,0 +1,39 @@ +SOURCE_FILE@0..29 + FN@0..28 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + GENERIC_PARAM_LIST@6..9 + L_ANGLE@6..7 "<" + TYPE_PARAM@7..8 + NAME@7..8 + IDENT@7..8 "T" + R_ANGLE@8..9 ">" + PARAM_LIST@9..11 + L_PAREN@9..10 "(" + R_PAREN@10..11 ")" + WHITESPACE@11..12 " " + WHERE_CLAUSE@12..25 + WHERE_KW@12..17 "where" + WHITESPACE@17..18 " " + WHERE_PRED@18..25 + PATH_TYPE@18..19 + PATH@18..19 + PATH_SEGMENT@18..19 + NAME_REF@18..19 + IDENT@18..19 "T" + COLON@19..20 ":" + WHITESPACE@20..21 " " + TYPE_BOUND_LIST@21..25 + TYPE_BOUND@21..25 + PATH_TYPE@21..25 + PATH@21..25 + PATH_SEGMENT@21..25 + NAME_REF@21..25 + IDENT@21..25 "Copy" + WHITESPACE@25..26 " " + BLOCK_EXPR@26..28 + L_CURLY@26..27 "{" + R_CURLY@27..28 "}" + WHITESPACE@28..29 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rs b/crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rs new file mode 100644 index 00000000000..f0920b2a8ad --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0076_function_where_clause.rs @@ -0,0 +1 @@ +fn foo() where T: Copy {} diff --git a/crates/syntax/test_data/parser/inline/ok/0077_try_expr.rast b/crates/syntax/test_data/parser/inline/ok/0077_try_expr.rast new file mode 100644 index 00000000000..33e6fb93f7a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0077_try_expr.rast @@ -0,0 +1,25 @@ +SOURCE_FILE@0..21 + FN@0..20 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..20 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..18 + TRY_EXPR@15..17 + PATH_EXPR@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "x" + QUESTION@16..17 "?" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" + R_CURLY@19..20 "}" + WHITESPACE@20..21 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0077_try_expr.rs b/crates/syntax/test_data/parser/inline/ok/0077_try_expr.rs new file mode 100644 index 00000000000..8b74f7bc814 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0077_try_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + x?; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0078_type_item.rast b/crates/syntax/test_data/parser/inline/ok/0078_type_item.rast new file mode 100644 index 00000000000..2befc8388ec --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0078_type_item.rast @@ -0,0 +1,16 @@ +SOURCE_FILE@0..16 + TYPE_ALIAS@0..15 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..8 + IDENT@5..8 "Foo" + WHITESPACE@8..9 " " + EQ@9..10 "=" + WHITESPACE@10..11 " " + PATH_TYPE@11..14 + PATH@11..14 + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "Bar" + SEMICOLON@14..15 ";" + WHITESPACE@15..16 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0078_type_item.rs b/crates/syntax/test_data/parser/inline/ok/0078_type_item.rs new file mode 100644 index 00000000000..04c0344fa36 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0078_type_item.rs @@ -0,0 +1 @@ +type Foo = Bar; diff --git a/crates/syntax/test_data/parser/inline/ok/0079_impl_def.rast b/crates/syntax/test_data/parser/inline/ok/0079_impl_def.rast new file mode 100644 index 00000000000..209711fc496 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0079_impl_def.rast @@ -0,0 +1,14 @@ +SOURCE_FILE@0..12 + IMPL@0..11 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..8 + PATH@5..8 + PATH_SEGMENT@5..8 + NAME_REF@5..8 + IDENT@5..8 "Foo" + WHITESPACE@8..9 " " + ASSOC_ITEM_LIST@9..11 + L_CURLY@9..10 "{" + R_CURLY@10..11 "}" + WHITESPACE@11..12 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0079_impl_def.rs b/crates/syntax/test_data/parser/inline/ok/0079_impl_def.rs new file mode 100644 index 00000000000..d6337f6b3a7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0079_impl_def.rs @@ -0,0 +1 @@ +impl Foo {} diff --git a/crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rast b/crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rast new file mode 100644 index 00000000000..b3003577cc0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rast @@ -0,0 +1,95 @@ +SOURCE_FILE@0..89 + FN@0..88 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..88 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..27 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + IDENT_PAT@19..20 + NAME@19..20 + IDENT@19..20 "x" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + RANGE_EXPR@23..26 + LITERAL@23..24 + INT_NUMBER@23..24 "1" + DOT2@24..26 ".." + SEMICOLON@26..27 ";" + WHITESPACE@27..32 "\n " + EXPR_STMT@32..54 + MATCH_EXPR@32..53 + MATCH_KW@32..37 "match" + WHITESPACE@37..38 " " + RANGE_EXPR@38..41 + LITERAL@38..39 + INT_NUMBER@38..39 "1" + DOT2@39..41 ".." + WHITESPACE@41..42 " " + MATCH_ARM_LIST@42..53 + L_CURLY@42..43 "{" + WHITESPACE@43..44 " " + MATCH_ARM@44..51 + WILDCARD_PAT@44..45 + UNDERSCORE@44..45 "_" + WHITESPACE@45..46 " " + FAT_ARROW@46..48 "=>" + WHITESPACE@48..49 " " + TUPLE_EXPR@49..51 + L_PAREN@49..50 "(" + R_PAREN@50..51 ")" + WHITESPACE@51..52 " " + R_CURLY@52..53 "}" + SEMICOLON@53..54 ";" + WHITESPACE@54..59 "\n " + EXPR_STMT@59..86 + MATCH_EXPR@59..85 + MATCH_KW@59..64 "match" + WHITESPACE@64..65 " " + RANGE_EXPR@65..73 + METHOD_CALL_EXPR@65..70 + PATH_EXPR@65..66 + PATH@65..66 + PATH_SEGMENT@65..66 + NAME_REF@65..66 + IDENT@65..66 "a" + DOT@66..67 "." + NAME_REF@67..68 + IDENT@67..68 "b" + ARG_LIST@68..70 + L_PAREN@68..69 "(" + R_PAREN@69..70 ")" + DOT2@70..72 ".." + PATH_EXPR@72..73 + PATH@72..73 + PATH_SEGMENT@72..73 + NAME_REF@72..73 + IDENT@72..73 "S" + WHITESPACE@73..74 " " + MATCH_ARM_LIST@74..85 + L_CURLY@74..75 "{" + WHITESPACE@75..76 " " + MATCH_ARM@76..83 + WILDCARD_PAT@76..77 + UNDERSCORE@76..77 "_" + WHITESPACE@77..78 " " + FAT_ARROW@78..80 "=>" + WHITESPACE@80..81 " " + TUPLE_EXPR@81..83 + L_PAREN@81..82 "(" + R_PAREN@82..83 ")" + WHITESPACE@83..84 " " + R_CURLY@84..85 "}" + SEMICOLON@85..86 ";" + WHITESPACE@86..87 "\n" + R_CURLY@87..88 "}" + WHITESPACE@88..89 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rs b/crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rs new file mode 100644 index 00000000000..e7b7cfc6b1a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0080_postfix_range.rs @@ -0,0 +1,5 @@ +fn foo() { + let x = 1..; + match 1.. { _ => () }; + match a.b()..S { _ => () }; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0081_for_type.rast b/crates/syntax/test_data/parser/inline/ok/0081_for_type.rast new file mode 100644 index 00000000000..f319d5141d5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0081_for_type.rast @@ -0,0 +1,112 @@ +SOURCE_FILE@0..121 + TYPE_ALIAS@0..28 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + FOR_TYPE@9..27 + FOR_KW@9..12 "for" + GENERIC_PARAM_LIST@12..16 + L_ANGLE@12..13 "<" + LIFETIME_PARAM@13..15 + LIFETIME@13..15 "\'a" + R_ANGLE@15..16 ">" + WHITESPACE@16..17 " " + FN_PTR_TYPE@17..27 + FN_KW@17..19 "fn" + PARAM_LIST@19..21 + L_PAREN@19..20 "(" + R_PAREN@20..21 ")" + WHITESPACE@21..22 " " + RET_TYPE@22..27 + THIN_ARROW@22..24 "->" + WHITESPACE@24..25 " " + TUPLE_TYPE@25..27 + L_PAREN@25..26 "(" + R_PAREN@26..27 ")" + SEMICOLON@27..28 ";" + WHITESPACE@28..29 "\n" + TYPE_ALIAS@29..81 + TYPE_KW@29..33 "type" + WHITESPACE@33..34 " " + NAME@34..35 + IDENT@34..35 "B" + WHITESPACE@35..36 " " + EQ@36..37 "=" + WHITESPACE@37..38 " " + FOR_TYPE@38..80 + FOR_KW@38..41 "for" + GENERIC_PARAM_LIST@41..45 + L_ANGLE@41..42 "<" + LIFETIME_PARAM@42..44 + LIFETIME@42..44 "\'a" + R_ANGLE@44..45 ">" + WHITESPACE@45..46 " " + FN_PTR_TYPE@46..80 + UNSAFE_KW@46..52 "unsafe" + WHITESPACE@52..53 " " + ABI@53..63 + EXTERN_KW@53..59 "extern" + WHITESPACE@59..60 " " + STRING@60..63 "\"C\"" + WHITESPACE@63..64 " " + FN_KW@64..66 "fn" + PARAM_LIST@66..74 + L_PAREN@66..67 "(" + PARAM@67..73 + REF_TYPE@67..73 + AMP@67..68 "&" + LIFETIME@68..70 "\'a" + WHITESPACE@70..71 " " + TUPLE_TYPE@71..73 + L_PAREN@71..72 "(" + R_PAREN@72..73 ")" + R_PAREN@73..74 ")" + WHITESPACE@74..75 " " + RET_TYPE@75..80 + THIN_ARROW@75..77 "->" + WHITESPACE@77..78 " " + TUPLE_TYPE@78..80 + L_PAREN@78..79 "(" + R_PAREN@79..80 ")" + SEMICOLON@80..81 ";" + WHITESPACE@81..82 "\n" + TYPE_ALIAS@82..120 + TYPE_KW@82..86 "type" + WHITESPACE@86..87 " " + NAME@87..90 + IDENT@87..90 "Obj" + WHITESPACE@90..91 " " + EQ@91..92 "=" + WHITESPACE@92..93 " " + FOR_TYPE@93..119 + FOR_KW@93..96 "for" + GENERIC_PARAM_LIST@96..100 + L_ANGLE@96..97 "<" + LIFETIME_PARAM@97..99 + LIFETIME@97..99 "\'a" + R_ANGLE@99..100 ">" + WHITESPACE@100..101 " " + PATH_TYPE@101..119 + PATH@101..119 + PATH_SEGMENT@101..119 + NAME_REF@101..110 + IDENT@101..110 "PartialEq" + GENERIC_ARG_LIST@110..119 + L_ANGLE@110..111 "<" + TYPE_ARG@111..118 + REF_TYPE@111..118 + AMP@111..112 "&" + LIFETIME@112..114 "\'a" + WHITESPACE@114..115 " " + PATH_TYPE@115..118 + PATH@115..118 + PATH_SEGMENT@115..118 + NAME_REF@115..118 + IDENT@115..118 "i32" + R_ANGLE@118..119 ">" + SEMICOLON@119..120 ";" + WHITESPACE@120..121 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0081_for_type.rs b/crates/syntax/test_data/parser/inline/ok/0081_for_type.rs new file mode 100644 index 00000000000..8ac7b9e1038 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0081_for_type.rs @@ -0,0 +1,3 @@ +type A = for<'a> fn() -> (); +type B = for<'a> unsafe extern "C" fn(&'a ()) -> (); +type Obj = for<'a> PartialEq<&'a i32>; diff --git a/crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rast b/crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rast new file mode 100644 index 00000000000..70b975c0b14 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rast @@ -0,0 +1,138 @@ +SOURCE_FILE@0..200 + FN@0..199 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..199 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + COMMENT@15..36 "// reference operator" + WHITESPACE@36..41 "\n " + LET_STMT@41..52 + LET_KW@41..44 "let" + WHITESPACE@44..45 " " + WILDCARD_PAT@45..46 + UNDERSCORE@45..46 "_" + WHITESPACE@46..47 " " + EQ@47..48 "=" + WHITESPACE@48..49 " " + REF_EXPR@49..51 + AMP@49..50 "&" + LITERAL@50..51 + INT_NUMBER@50..51 "1" + SEMICOLON@51..52 ";" + WHITESPACE@52..57 "\n " + LET_STMT@57..75 + LET_KW@57..60 "let" + WHITESPACE@60..61 " " + WILDCARD_PAT@61..62 + UNDERSCORE@61..62 "_" + WHITESPACE@62..63 " " + EQ@63..64 "=" + WHITESPACE@64..65 " " + REF_EXPR@65..74 + AMP@65..66 "&" + MUT_KW@66..69 "mut" + WHITESPACE@69..70 " " + REF_EXPR@70..74 + AMP@70..71 "&" + CALL_EXPR@71..74 + PATH_EXPR@71..72 + PATH@71..72 + PATH_SEGMENT@71..72 + NAME_REF@71..72 + IDENT@71..72 "f" + ARG_LIST@72..74 + L_PAREN@72..73 "(" + R_PAREN@73..74 ")" + SEMICOLON@74..75 ";" + WHITESPACE@75..80 "\n " + LET_STMT@80..93 + LET_KW@80..83 "let" + WHITESPACE@83..84 " " + WILDCARD_PAT@84..85 + UNDERSCORE@84..85 "_" + WHITESPACE@85..86 " " + EQ@86..87 "=" + WHITESPACE@87..88 " " + REF_EXPR@88..92 + AMP@88..89 "&" + PATH_EXPR@89..92 + PATH@89..92 + PATH_SEGMENT@89..92 + NAME_REF@89..92 + IDENT@89..92 "raw" + SEMICOLON@92..93 ";" + WHITESPACE@93..98 "\n " + LET_STMT@98..113 + LET_KW@98..101 "let" + WHITESPACE@101..102 " " + WILDCARD_PAT@102..103 + UNDERSCORE@102..103 "_" + WHITESPACE@103..104 " " + EQ@104..105 "=" + WHITESPACE@105..106 " " + REF_EXPR@106..112 + AMP@106..107 "&" + FIELD_EXPR@107..112 + PATH_EXPR@107..110 + PATH@107..110 + PATH_SEGMENT@107..110 + NAME_REF@107..110 + IDENT@107..110 "raw" + DOT@110..111 "." + NAME_REF@111..112 + INT_NUMBER@111..112 "0" + SEMICOLON@112..113 ";" + WHITESPACE@113..118 "\n " + COMMENT@118..143 "// raw reference oper ..." + WHITESPACE@143..148 "\n " + LET_STMT@148..169 + LET_KW@148..151 "let" + WHITESPACE@151..152 " " + WILDCARD_PAT@152..153 + UNDERSCORE@152..153 "_" + WHITESPACE@153..154 " " + EQ@154..155 "=" + WHITESPACE@155..156 " " + REF_EXPR@156..168 + AMP@156..157 "&" + RAW_KW@157..160 "raw" + WHITESPACE@160..161 " " + MUT_KW@161..164 "mut" + WHITESPACE@164..165 " " + PATH_EXPR@165..168 + PATH@165..168 + PATH_SEGMENT@165..168 + NAME_REF@165..168 + IDENT@165..168 "foo" + SEMICOLON@168..169 ";" + WHITESPACE@169..174 "\n " + LET_STMT@174..197 + LET_KW@174..177 "let" + WHITESPACE@177..178 " " + WILDCARD_PAT@178..179 + UNDERSCORE@178..179 "_" + WHITESPACE@179..180 " " + EQ@180..181 "=" + WHITESPACE@181..182 " " + REF_EXPR@182..196 + AMP@182..183 "&" + RAW_KW@183..186 "raw" + WHITESPACE@186..187 " " + CONST_KW@187..192 "const" + WHITESPACE@192..193 " " + PATH_EXPR@193..196 + PATH@193..196 + PATH_SEGMENT@193..196 + NAME_REF@193..196 + IDENT@193..196 "foo" + SEMICOLON@196..197 ";" + WHITESPACE@197..198 "\n" + R_CURLY@198..199 "}" + WHITESPACE@199..200 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rs b/crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rs new file mode 100644 index 00000000000..c5262f4469b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0082_ref_expr.rs @@ -0,0 +1,10 @@ +fn foo() { + // reference operator + let _ = &1; + let _ = &mut &f(); + let _ = &raw; + let _ = &raw.0; + // raw reference operator + let _ = &raw mut foo; + let _ = &raw const foo; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0083_struct_items.rast b/crates/syntax/test_data/parser/inline/ok/0083_struct_items.rast new file mode 100644 index 00000000000..cdbc40fe0b2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0083_struct_items.rast @@ -0,0 +1,87 @@ +SOURCE_FILE@0..106 + STRUCT@0..11 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..10 + IDENT@7..10 "Foo" + SEMICOLON@10..11 ";" + WHITESPACE@11..12 "\n" + STRUCT@12..25 + STRUCT_KW@12..18 "struct" + WHITESPACE@18..19 " " + NAME@19..22 + IDENT@19..22 "Foo" + WHITESPACE@22..23 " " + RECORD_FIELD_LIST@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" + STRUCT@26..39 + STRUCT_KW@26..32 "struct" + WHITESPACE@32..33 " " + NAME@33..36 + IDENT@33..36 "Foo" + TUPLE_FIELD_LIST@36..38 + L_PAREN@36..37 "(" + R_PAREN@37..38 ")" + SEMICOLON@38..39 ";" + WHITESPACE@39..40 "\n" + STRUCT@40..66 + STRUCT_KW@40..46 "struct" + WHITESPACE@46..47 " " + NAME@47..50 + IDENT@47..50 "Foo" + TUPLE_FIELD_LIST@50..65 + L_PAREN@50..51 "(" + TUPLE_FIELD@51..57 + PATH_TYPE@51..57 + PATH@51..57 + PATH_SEGMENT@51..57 + NAME_REF@51..57 + IDENT@51..57 "String" + COMMA@57..58 "," + WHITESPACE@58..59 " " + TUPLE_FIELD@59..64 + PATH_TYPE@59..64 + PATH@59..64 + PATH_SEGMENT@59..64 + NAME_REF@59..64 + IDENT@59..64 "usize" + R_PAREN@64..65 ")" + SEMICOLON@65..66 ";" + WHITESPACE@66..67 "\n" + STRUCT@67..105 + STRUCT_KW@67..73 "struct" + WHITESPACE@73..74 " " + NAME@74..77 + IDENT@74..77 "Foo" + WHITESPACE@77..78 " " + RECORD_FIELD_LIST@78..105 + L_CURLY@78..79 "{" + WHITESPACE@79..84 "\n " + RECORD_FIELD@84..90 + NAME@84..85 + IDENT@84..85 "a" + COLON@85..86 ":" + WHITESPACE@86..87 " " + PATH_TYPE@87..90 + PATH@87..90 + PATH_SEGMENT@87..90 + NAME_REF@87..90 + IDENT@87..90 "i32" + COMMA@90..91 "," + WHITESPACE@91..96 "\n " + RECORD_FIELD@96..102 + NAME@96..97 + IDENT@96..97 "b" + COLON@97..98 ":" + WHITESPACE@98..99 " " + PATH_TYPE@99..102 + PATH@99..102 + PATH_SEGMENT@99..102 + NAME_REF@99..102 + IDENT@99..102 "f32" + COMMA@102..103 "," + WHITESPACE@103..104 "\n" + R_CURLY@104..105 "}" + WHITESPACE@105..106 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0083_struct_items.rs b/crates/syntax/test_data/parser/inline/ok/0083_struct_items.rs new file mode 100644 index 00000000000..693e3f3ee12 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0083_struct_items.rs @@ -0,0 +1,8 @@ +struct Foo; +struct Foo {} +struct Foo(); +struct Foo(String, usize); +struct Foo { + a: i32, + b: f32, +} diff --git a/crates/syntax/test_data/parser/inline/ok/0084_paren_type.rast b/crates/syntax/test_data/parser/inline/ok/0084_paren_type.rast new file mode 100644 index 00000000000..ee889496686 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0084_paren_type.rast @@ -0,0 +1,19 @@ +SOURCE_FILE@0..16 + TYPE_ALIAS@0..15 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PAREN_TYPE@9..14 + L_PAREN@9..10 "(" + PATH_TYPE@10..13 + PATH@10..13 + PATH_SEGMENT@10..13 + NAME_REF@10..13 + IDENT@10..13 "i32" + R_PAREN@13..14 ")" + SEMICOLON@14..15 ";" + WHITESPACE@15..16 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0084_paren_type.rs b/crates/syntax/test_data/parser/inline/ok/0084_paren_type.rs new file mode 100644 index 00000000000..6e1b2510124 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0084_paren_type.rs @@ -0,0 +1 @@ +type T = (i32); diff --git a/crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rast b/crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rast new file mode 100644 index 00000000000..9a87b5b936d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rast @@ -0,0 +1,135 @@ +SOURCE_FILE@0..189 + FN@0..188 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..188 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..28 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + WILDCARD_PAT@19..20 + UNDERSCORE@19..20 "_" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + LITERAL@23..27 + TRUE_KW@23..27 "true" + SEMICOLON@27..28 ";" + WHITESPACE@28..33 "\n " + LET_STMT@33..47 + LET_KW@33..36 "let" + WHITESPACE@36..37 " " + WILDCARD_PAT@37..38 + UNDERSCORE@37..38 "_" + WHITESPACE@38..39 " " + EQ@39..40 "=" + WHITESPACE@40..41 " " + LITERAL@41..46 + FALSE_KW@41..46 "false" + SEMICOLON@46..47 ";" + WHITESPACE@47..52 "\n " + LET_STMT@52..62 + LET_KW@52..55 "let" + WHITESPACE@55..56 " " + WILDCARD_PAT@56..57 + UNDERSCORE@56..57 "_" + WHITESPACE@57..58 " " + EQ@58..59 "=" + WHITESPACE@59..60 " " + LITERAL@60..61 + INT_NUMBER@60..61 "1" + SEMICOLON@61..62 ";" + WHITESPACE@62..67 "\n " + LET_STMT@67..79 + LET_KW@67..70 "let" + WHITESPACE@70..71 " " + WILDCARD_PAT@71..72 + UNDERSCORE@71..72 "_" + WHITESPACE@72..73 " " + EQ@73..74 "=" + WHITESPACE@74..75 " " + LITERAL@75..78 + FLOAT_NUMBER@75..78 "2.0" + SEMICOLON@78..79 ";" + WHITESPACE@79..84 "\n " + LET_STMT@84..97 + LET_KW@84..87 "let" + WHITESPACE@87..88 " " + WILDCARD_PAT@88..89 + UNDERSCORE@88..89 "_" + WHITESPACE@89..90 " " + EQ@90..91 "=" + WHITESPACE@91..92 " " + LITERAL@92..96 + BYTE@92..96 "b\'a\'" + SEMICOLON@96..97 ";" + WHITESPACE@97..102 "\n " + LET_STMT@102..114 + LET_KW@102..105 "let" + WHITESPACE@105..106 " " + WILDCARD_PAT@106..107 + UNDERSCORE@106..107 "_" + WHITESPACE@107..108 " " + EQ@108..109 "=" + WHITESPACE@109..110 " " + LITERAL@110..113 + CHAR@110..113 "\'b\'" + SEMICOLON@113..114 ";" + WHITESPACE@114..119 "\n " + LET_STMT@119..131 + LET_KW@119..122 "let" + WHITESPACE@122..123 " " + WILDCARD_PAT@123..124 + UNDERSCORE@123..124 "_" + WHITESPACE@124..125 " " + EQ@125..126 "=" + WHITESPACE@126..127 " " + LITERAL@127..130 + STRING@127..130 "\"c\"" + SEMICOLON@130..131 ";" + WHITESPACE@131..136 "\n " + LET_STMT@136..149 + LET_KW@136..139 "let" + WHITESPACE@139..140 " " + WILDCARD_PAT@140..141 + UNDERSCORE@140..141 "_" + WHITESPACE@141..142 " " + EQ@142..143 "=" + WHITESPACE@143..144 " " + LITERAL@144..148 + RAW_STRING@144..148 "r\"d\"" + SEMICOLON@148..149 ";" + WHITESPACE@149..154 "\n " + LET_STMT@154..167 + LET_KW@154..157 "let" + WHITESPACE@157..158 " " + WILDCARD_PAT@158..159 + UNDERSCORE@158..159 "_" + WHITESPACE@159..160 " " + EQ@160..161 "=" + WHITESPACE@161..162 " " + LITERAL@162..166 + BYTE_STRING@162..166 "b\"e\"" + SEMICOLON@166..167 ";" + WHITESPACE@167..172 "\n " + LET_STMT@172..186 + LET_KW@172..175 "let" + WHITESPACE@175..176 " " + WILDCARD_PAT@176..177 + UNDERSCORE@176..177 "_" + WHITESPACE@177..178 " " + EQ@178..179 "=" + WHITESPACE@179..180 " " + LITERAL@180..185 + RAW_BYTE_STRING@180..185 "br\"f\"" + SEMICOLON@185..186 ";" + WHITESPACE@186..187 "\n" + R_CURLY@187..188 "}" + WHITESPACE@188..189 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rs b/crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rs new file mode 100644 index 00000000000..2e11a5a6e68 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0085_expr_literals.rs @@ -0,0 +1,12 @@ +fn foo() { + let _ = true; + let _ = false; + let _ = 1; + let _ = 2.0; + let _ = b'a'; + let _ = 'b'; + let _ = "c"; + let _ = r"d"; + let _ = b"e"; + let _ = br"f"; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rast b/crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rast new file mode 100644 index 00000000000..70e05a859b1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rast @@ -0,0 +1,34 @@ +SOURCE_FILE@0..30 + FN@0..11 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..11 + L_CURLY@9..10 "{" + R_CURLY@10..11 "}" + WHITESPACE@11..12 "\n" + FN@12..29 + FN_KW@12..14 "fn" + WHITESPACE@14..15 " " + NAME@15..18 + IDENT@15..18 "bar" + PARAM_LIST@18..20 + L_PAREN@18..19 "(" + R_PAREN@19..20 ")" + WHITESPACE@20..21 " " + RET_TYPE@21..26 + THIN_ARROW@21..23 "->" + WHITESPACE@23..24 " " + TUPLE_TYPE@24..26 + L_PAREN@24..25 "(" + R_PAREN@25..26 ")" + WHITESPACE@26..27 " " + BLOCK_EXPR@27..29 + L_CURLY@27..28 "{" + R_CURLY@28..29 "}" + WHITESPACE@29..30 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rs b/crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rs new file mode 100644 index 00000000000..d22d8cada69 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0086_function_ret_type.rs @@ -0,0 +1,2 @@ +fn foo() {} +fn bar() -> () {} diff --git a/crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast b/crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast new file mode 100644 index 00000000000..f7b839303c3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rast @@ -0,0 +1,65 @@ +SOURCE_FILE@0..88 + FN@0..87 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + BLOCK_EXPR@8..87 + L_CURLY@8..9 "{" + WHITESPACE@9..14 "\n " + EXPR_STMT@14..25 + IF_EXPR@14..25 + IF_KW@14..16 "if" + WHITESPACE@16..17 " " + CONDITION@17..22 + BREAK_EXPR@17..22 + BREAK_KW@17..22 "break" + WHITESPACE@22..23 " " + BLOCK_EXPR@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + WHITESPACE@25..30 "\n " + EXPR_STMT@30..44 + WHILE_EXPR@30..44 + WHILE_KW@30..35 "while" + WHITESPACE@35..36 " " + CONDITION@36..41 + BREAK_EXPR@36..41 + BREAK_KW@36..41 "break" + WHITESPACE@41..42 " " + BLOCK_EXPR@42..44 + L_CURLY@42..43 "{" + R_CURLY@43..44 "}" + WHITESPACE@44..49 "\n " + EXPR_STMT@49..66 + FOR_EXPR@49..66 + FOR_KW@49..52 "for" + WHITESPACE@52..53 " " + IDENT_PAT@53..54 + NAME@53..54 + IDENT@53..54 "i" + WHITESPACE@54..55 " " + IN_KW@55..57 "in" + WHITESPACE@57..58 " " + BREAK_EXPR@58..63 + BREAK_KW@58..63 "break" + WHITESPACE@63..64 " " + BLOCK_EXPR@64..66 + L_CURLY@64..65 "{" + R_CURLY@65..66 "}" + WHITESPACE@66..71 "\n " + MATCH_EXPR@71..85 + MATCH_KW@71..76 "match" + WHITESPACE@76..77 " " + BREAK_EXPR@77..82 + BREAK_KW@77..82 "break" + WHITESPACE@82..83 " " + MATCH_ARM_LIST@83..85 + L_CURLY@83..84 "{" + R_CURLY@84..85 "}" + WHITESPACE@85..86 "\n" + R_CURLY@86..87 "}" + WHITESPACE@87..88 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rs b/crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rs new file mode 100644 index 00000000000..560eb05b949 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0088_break_ambiguity.rs @@ -0,0 +1,6 @@ +fn foo(){ + if break {} + while break {} + for i in break {} + match break {} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rast b/crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rast new file mode 100644 index 00000000000..2ef026e3709 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rast @@ -0,0 +1,22 @@ +SOURCE_FILE@0..19 + STRUCT@0..18 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + GENERIC_PARAM_LIST@8..17 + L_ANGLE@8..9 "<" + TYPE_PARAM@9..16 + NAME@9..10 + IDENT@9..10 "T" + WHITESPACE@10..11 " " + EQ@11..12 "=" + WHITESPACE@12..13 " " + PATH_TYPE@13..16 + PATH@13..16 + PATH_SEGMENT@13..16 + NAME_REF@13..16 + IDENT@13..16 "i32" + R_ANGLE@16..17 ">" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rs b/crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rs new file mode 100644 index 00000000000..540eacb0277 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0090_type_param_default.rs @@ -0,0 +1 @@ +struct S; diff --git a/crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast b/crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast new file mode 100644 index 00000000000..f80326465fd --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rast @@ -0,0 +1,23 @@ +SOURCE_FILE@0..21 + TYPE_ALIAS@0..20 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "F" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + FN_PTR_TYPE@9..19 + FN_KW@9..11 "fn" + PARAM_LIST@11..13 + L_PAREN@11..12 "(" + R_PAREN@12..13 ")" + WHITESPACE@13..14 " " + RET_TYPE@14..19 + THIN_ARROW@14..16 "->" + WHITESPACE@16..17 " " + TUPLE_TYPE@17..19 + L_PAREN@17..18 "(" + R_PAREN@18..19 ")" + SEMICOLON@19..20 ";" + WHITESPACE@20..21 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs b/crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs new file mode 100644 index 00000000000..e3ba5e87f5d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs @@ -0,0 +1 @@ +type F = fn() -> (); diff --git a/crates/syntax/test_data/parser/inline/ok/0093_index_expr.rast b/crates/syntax/test_data/parser/inline/ok/0093_index_expr.rast new file mode 100644 index 00000000000..82f03f9c18b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0093_index_expr.rast @@ -0,0 +1,33 @@ +SOURCE_FILE@0..26 + FN@0..25 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..25 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..23 + INDEX_EXPR@15..22 + INDEX_EXPR@15..19 + PATH_EXPR@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "x" + L_BRACK@16..17 "[" + LITERAL@17..18 + INT_NUMBER@17..18 "1" + R_BRACK@18..19 "]" + L_BRACK@19..20 "[" + LITERAL@20..21 + INT_NUMBER@20..21 "2" + R_BRACK@21..22 "]" + SEMICOLON@22..23 ";" + WHITESPACE@23..24 "\n" + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0093_index_expr.rs b/crates/syntax/test_data/parser/inline/ok/0093_index_expr.rs new file mode 100644 index 00000000000..b9ba78a6cbd --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0093_index_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + x[1][2]; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast b/crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast new file mode 100644 index 00000000000..c1fdc6e259c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rast @@ -0,0 +1,28 @@ +SOURCE_FILE@0..26 + FN@0..25 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..25 + L_CURLY@10..11 "{" + WHITESPACE@11..12 " " + LET_STMT@12..23 + LET_KW@12..15 "let" + WHITESPACE@15..16 " " + WILDCARD_PAT@16..17 + UNDERSCORE@16..17 "_" + WHITESPACE@17..18 " " + EQ@18..19 "=" + WHITESPACE@19..20 " " + TUPLE_EXPR@20..22 + L_PAREN@20..21 "(" + R_PAREN@21..22 ")" + SEMICOLON@22..23 ";" + WHITESPACE@23..24 " " + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rs b/crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rs new file mode 100644 index 00000000000..4d719c4335b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0095_placeholder_pat.rs @@ -0,0 +1 @@ +fn main() { let _ = (); } diff --git a/crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast b/crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast new file mode 100644 index 00000000000..e757249f06d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rast @@ -0,0 +1,123 @@ +SOURCE_FILE@0..167 + FN@0..166 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..166 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..25 + IF_EXPR@15..25 + IF_KW@15..17 "if" + WHITESPACE@17..18 " " + CONDITION@18..22 + LITERAL@18..22 + TRUE_KW@18..22 "true" + WHITESPACE@22..23 " " + BLOCK_EXPR@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + WHITESPACE@25..30 "\n " + EXPR_STMT@30..37 + LOOP_EXPR@30..37 + LOOP_KW@30..34 "loop" + WHITESPACE@34..35 " " + BLOCK_EXPR@35..37 + L_CURLY@35..36 "{" + R_CURLY@36..37 "}" + WHITESPACE@37..42 "\n " + EXPR_STMT@42..53 + MATCH_EXPR@42..53 + MATCH_KW@42..47 "match" + WHITESPACE@47..48 " " + TUPLE_EXPR@48..50 + L_PAREN@48..49 "(" + R_PAREN@49..50 ")" + WHITESPACE@50..51 " " + MATCH_ARM_LIST@51..53 + L_CURLY@51..52 "{" + R_CURLY@52..53 "}" + WHITESPACE@53..58 "\n " + EXPR_STMT@58..71 + WHILE_EXPR@58..71 + WHILE_KW@58..63 "while" + WHITESPACE@63..64 " " + CONDITION@64..68 + LITERAL@64..68 + TRUE_KW@64..68 "true" + WHITESPACE@68..69 " " + BLOCK_EXPR@69..71 + L_CURLY@69..70 "{" + R_CURLY@70..71 "}" + WHITESPACE@71..76 "\n " + EXPR_STMT@76..90 + FOR_EXPR@76..90 + FOR_KW@76..79 "for" + WHITESPACE@79..80 " " + WILDCARD_PAT@80..81 + UNDERSCORE@80..81 "_" + WHITESPACE@81..82 " " + IN_KW@82..84 "in" + WHITESPACE@84..85 " " + TUPLE_EXPR@85..87 + L_PAREN@85..86 "(" + R_PAREN@86..87 ")" + WHITESPACE@87..88 " " + BLOCK_EXPR@88..90 + L_CURLY@88..89 "{" + R_CURLY@89..90 "}" + WHITESPACE@90..95 "\n " + EXPR_STMT@95..97 + BLOCK_EXPR@95..97 + L_CURLY@95..96 "{" + R_CURLY@96..97 "}" + WHITESPACE@97..102 "\n " + EXPR_STMT@102..104 + BLOCK_EXPR@102..104 + L_CURLY@102..103 "{" + R_CURLY@103..104 "}" + WHITESPACE@104..109 "\n " + EXPR_STMT@109..152 + MACRO_CALL@109..152 + PATH@109..120 + PATH_SEGMENT@109..120 + NAME_REF@109..120 + IDENT@109..120 "macro_rules" + BANG@120..121 "!" + WHITESPACE@121..122 " " + NAME@122..126 + IDENT@122..126 "test" + WHITESPACE@126..127 " " + TOKEN_TREE@127..152 + L_CURLY@127..128 "{" + WHITESPACE@128..138 "\n " + TOKEN_TREE@138..140 + L_PAREN@138..139 "(" + R_PAREN@139..140 ")" + WHITESPACE@140..141 " " + EQ@141..142 "=" + R_ANGLE@142..143 ">" + WHITESPACE@143..144 " " + TOKEN_TREE@144..146 + L_CURLY@144..145 "{" + R_CURLY@145..146 "}" + WHITESPACE@146..151 "\n " + R_CURLY@151..152 "}" + WHITESPACE@152..157 "\n " + MACRO_CALL@157..164 + PATH@157..161 + PATH_SEGMENT@157..161 + NAME_REF@157..161 + IDENT@157..161 "test" + BANG@161..162 "!" + TOKEN_TREE@162..164 + L_CURLY@162..163 "{" + R_CURLY@163..164 "}" + WHITESPACE@164..165 "\n" + R_CURLY@165..166 "}" + WHITESPACE@166..167 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rs b/crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rs new file mode 100644 index 00000000000..4919665cb57 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rs @@ -0,0 +1,13 @@ +fn foo() { + if true {} + loop {} + match () {} + while true {} + for _ in () {} + {} + {} + macro_rules! test { + () => {} + } + test!{} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0099_param_list.rast b/crates/syntax/test_data/parser/inline/ok/0099_param_list.rast new file mode 100644 index 00000000000..f19e9fd5229 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0099_param_list.rast @@ -0,0 +1,99 @@ +SOURCE_FILE@0..67 + FN@0..9 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "a" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + BLOCK_EXPR@7..9 + L_CURLY@7..8 "{" + R_CURLY@8..9 "}" + WHITESPACE@9..10 "\n" + FN@10..25 + FN_KW@10..12 "fn" + WHITESPACE@12..13 " " + NAME@13..14 + IDENT@13..14 "b" + PARAM_LIST@14..22 + L_PAREN@14..15 "(" + PARAM@15..21 + IDENT_PAT@15..16 + NAME@15..16 + IDENT@15..16 "x" + COLON@16..17 ":" + WHITESPACE@17..18 " " + PATH_TYPE@18..21 + PATH@18..21 + PATH_SEGMENT@18..21 + NAME_REF@18..21 + IDENT@18..21 "i32" + R_PAREN@21..22 ")" + WHITESPACE@22..23 " " + BLOCK_EXPR@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" + FN@26..43 + FN_KW@26..28 "fn" + WHITESPACE@28..29 " " + NAME@29..30 + IDENT@29..30 "c" + PARAM_LIST@30..40 + L_PAREN@30..31 "(" + PARAM@31..37 + IDENT_PAT@31..32 + NAME@31..32 + IDENT@31..32 "x" + COLON@32..33 ":" + WHITESPACE@33..34 " " + PATH_TYPE@34..37 + PATH@34..37 + PATH_SEGMENT@34..37 + NAME_REF@34..37 + IDENT@34..37 "i32" + COMMA@37..38 "," + WHITESPACE@38..39 " " + R_PAREN@39..40 ")" + WHITESPACE@40..41 " " + BLOCK_EXPR@41..43 + L_CURLY@41..42 "{" + R_CURLY@42..43 "}" + WHITESPACE@43..44 "\n" + FN@44..66 + FN_KW@44..46 "fn" + WHITESPACE@46..47 " " + NAME@47..48 + IDENT@47..48 "d" + PARAM_LIST@48..63 + L_PAREN@48..49 "(" + PARAM@49..55 + IDENT_PAT@49..50 + NAME@49..50 + IDENT@49..50 "x" + COLON@50..51 ":" + WHITESPACE@51..52 " " + PATH_TYPE@52..55 + PATH@52..55 + PATH_SEGMENT@52..55 + NAME_REF@52..55 + IDENT@52..55 "i32" + COMMA@55..56 "," + WHITESPACE@56..57 " " + PARAM@57..62 + IDENT_PAT@57..58 + NAME@57..58 + IDENT@57..58 "y" + COLON@58..59 ":" + WHITESPACE@59..60 " " + TUPLE_TYPE@60..62 + L_PAREN@60..61 "(" + R_PAREN@61..62 ")" + R_PAREN@62..63 ")" + WHITESPACE@63..64 " " + BLOCK_EXPR@64..66 + L_CURLY@64..65 "{" + R_CURLY@65..66 "}" + WHITESPACE@66..67 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0099_param_list.rs b/crates/syntax/test_data/parser/inline/ok/0099_param_list.rs new file mode 100644 index 00000000000..9d55bedbba7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0099_param_list.rs @@ -0,0 +1,4 @@ +fn a() {} +fn b(x: i32) {} +fn c(x: i32, ) {} +fn d(x: i32, y: ()) {} diff --git a/crates/syntax/test_data/parser/inline/ok/0100_for_expr.rast b/crates/syntax/test_data/parser/inline/ok/0100_for_expr.rast new file mode 100644 index 00000000000..5c4055e44b0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0100_for_expr.rast @@ -0,0 +1,34 @@ +SOURCE_FILE@0..33 + FN@0..32 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..32 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..30 + FOR_EXPR@15..29 + FOR_KW@15..18 "for" + WHITESPACE@18..19 " " + IDENT_PAT@19..20 + NAME@19..20 + IDENT@19..20 "x" + WHITESPACE@20..21 " " + IN_KW@21..23 "in" + WHITESPACE@23..24 " " + ARRAY_EXPR@24..26 + L_BRACK@24..25 "[" + R_BRACK@25..26 "]" + WHITESPACE@26..27 " " + BLOCK_EXPR@27..29 + L_CURLY@27..28 "{" + R_CURLY@28..29 "}" + SEMICOLON@29..30 ";" + WHITESPACE@30..31 "\n" + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0100_for_expr.rs b/crates/syntax/test_data/parser/inline/ok/0100_for_expr.rs new file mode 100644 index 00000000000..972197d2a17 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0100_for_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + for x in [] {}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast b/crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast new file mode 100644 index 00000000000..866e60ed8a1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rast @@ -0,0 +1,132 @@ +SOURCE_FILE@0..119 + FN@0..118 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..118 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..29 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + RECORD_PAT@19..23 + PATH@19..20 + PATH_SEGMENT@19..20 + NAME_REF@19..20 + IDENT@19..20 "S" + WHITESPACE@20..21 " " + RECORD_PAT_FIELD_LIST@21..23 + L_CURLY@21..22 "{" + R_CURLY@22..23 "}" + WHITESPACE@23..24 " " + EQ@24..25 "=" + WHITESPACE@25..26 " " + TUPLE_EXPR@26..28 + L_PAREN@26..27 "(" + R_PAREN@27..28 ")" + SEMICOLON@28..29 ";" + WHITESPACE@29..34 "\n " + LET_STMT@34..62 + LET_KW@34..37 "let" + WHITESPACE@37..38 " " + RECORD_PAT@38..56 + PATH@38..39 + PATH_SEGMENT@38..39 + NAME_REF@38..39 + IDENT@38..39 "S" + WHITESPACE@39..40 " " + RECORD_PAT_FIELD_LIST@40..56 + L_CURLY@40..41 "{" + WHITESPACE@41..42 " " + RECORD_PAT_FIELD@42..43 + IDENT_PAT@42..43 + NAME@42..43 + IDENT@42..43 "f" + COMMA@43..44 "," + WHITESPACE@44..45 " " + RECORD_PAT_FIELD@45..54 + IDENT_PAT@45..54 + REF_KW@45..48 "ref" + WHITESPACE@48..49 " " + MUT_KW@49..52 "mut" + WHITESPACE@52..53 " " + NAME@53..54 + IDENT@53..54 "g" + WHITESPACE@54..55 " " + R_CURLY@55..56 "}" + WHITESPACE@56..57 " " + EQ@57..58 "=" + WHITESPACE@58..59 " " + TUPLE_EXPR@59..61 + L_PAREN@59..60 "(" + R_PAREN@60..61 ")" + SEMICOLON@61..62 ";" + WHITESPACE@62..67 "\n " + LET_STMT@67..90 + LET_KW@67..70 "let" + WHITESPACE@70..71 " " + RECORD_PAT@71..84 + PATH@71..72 + PATH_SEGMENT@71..72 + NAME_REF@71..72 + IDENT@71..72 "S" + WHITESPACE@72..73 " " + RECORD_PAT_FIELD_LIST@73..84 + L_CURLY@73..74 "{" + WHITESPACE@74..75 " " + RECORD_PAT_FIELD@75..79 + NAME_REF@75..76 + IDENT@75..76 "h" + COLON@76..77 ":" + WHITESPACE@77..78 " " + WILDCARD_PAT@78..79 + UNDERSCORE@78..79 "_" + COMMA@79..80 "," + WHITESPACE@80..81 " " + DOT2@81..83 ".." + R_CURLY@83..84 "}" + WHITESPACE@84..85 " " + EQ@85..86 "=" + WHITESPACE@86..87 " " + TUPLE_EXPR@87..89 + L_PAREN@87..88 "(" + R_PAREN@88..89 ")" + SEMICOLON@89..90 ";" + WHITESPACE@90..95 "\n " + LET_STMT@95..116 + LET_KW@95..98 "let" + WHITESPACE@98..99 " " + RECORD_PAT@99..110 + PATH@99..100 + PATH_SEGMENT@99..100 + NAME_REF@99..100 + IDENT@99..100 "S" + WHITESPACE@100..101 " " + RECORD_PAT_FIELD_LIST@101..110 + L_CURLY@101..102 "{" + WHITESPACE@102..103 " " + RECORD_PAT_FIELD@103..107 + NAME_REF@103..104 + IDENT@103..104 "h" + COLON@104..105 ":" + WHITESPACE@105..106 " " + WILDCARD_PAT@106..107 + UNDERSCORE@106..107 "_" + COMMA@107..108 "," + WHITESPACE@108..109 " " + R_CURLY@109..110 "}" + WHITESPACE@110..111 " " + EQ@111..112 "=" + WHITESPACE@112..113 " " + TUPLE_EXPR@113..115 + L_PAREN@113..114 "(" + R_PAREN@114..115 ")" + SEMICOLON@115..116 ";" + WHITESPACE@116..117 "\n" + R_CURLY@117..118 "}" + WHITESPACE@118..119 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rs b/crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rs new file mode 100644 index 00000000000..da3412fa8a9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0102_record_field_pat_list.rs @@ -0,0 +1,6 @@ +fn foo() { + let S {} = (); + let S { f, ref mut g } = (); + let S { h: _, ..} = (); + let S { h: _, } = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0103_array_expr.rast b/crates/syntax/test_data/parser/inline/ok/0103_array_expr.rast new file mode 100644 index 00000000000..c4c0a0568a4 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0103_array_expr.rast @@ -0,0 +1,54 @@ +SOURCE_FILE@0..55 + FN@0..54 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..54 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..18 + ARRAY_EXPR@15..17 + L_BRACK@15..16 "[" + R_BRACK@16..17 "]" + SEMICOLON@17..18 ";" + WHITESPACE@18..23 "\n " + EXPR_STMT@23..27 + ARRAY_EXPR@23..26 + L_BRACK@23..24 "[" + LITERAL@24..25 + INT_NUMBER@24..25 "1" + R_BRACK@25..26 "]" + SEMICOLON@26..27 ";" + WHITESPACE@27..32 "\n " + EXPR_STMT@32..40 + ARRAY_EXPR@32..39 + L_BRACK@32..33 "[" + LITERAL@33..34 + INT_NUMBER@33..34 "1" + COMMA@34..35 "," + WHITESPACE@35..36 " " + LITERAL@36..37 + INT_NUMBER@36..37 "2" + COMMA@37..38 "," + R_BRACK@38..39 "]" + SEMICOLON@39..40 ";" + WHITESPACE@40..45 "\n " + EXPR_STMT@45..52 + ARRAY_EXPR@45..51 + L_BRACK@45..46 "[" + LITERAL@46..47 + INT_NUMBER@46..47 "1" + SEMICOLON@47..48 ";" + WHITESPACE@48..49 " " + LITERAL@49..50 + INT_NUMBER@49..50 "2" + R_BRACK@50..51 "]" + SEMICOLON@51..52 ";" + WHITESPACE@52..53 "\n" + R_CURLY@53..54 "}" + WHITESPACE@54..55 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0103_array_expr.rs b/crates/syntax/test_data/parser/inline/ok/0103_array_expr.rs new file mode 100644 index 00000000000..4dc1999d140 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0103_array_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + []; + [1]; + [1, 2,]; + [1; 2]; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast b/crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast new file mode 100644 index 00000000000..1244a503134 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rast @@ -0,0 +1,41 @@ +SOURCE_FILE@0..29 + TYPE_ALIAS@0..28 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "F" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + PATH_TYPE@9..27 + PATH@9..27 + PATH_SEGMENT@9..27 + NAME_REF@9..12 + IDENT@9..12 "Box" + GENERIC_ARG_LIST@12..27 + L_ANGLE@12..13 "<" + TYPE_ARG@13..26 + PATH_TYPE@13..26 + PATH@13..26 + PATH_SEGMENT@13..26 + NAME_REF@13..15 + IDENT@13..15 "Fn" + PARAM_LIST@15..20 + L_PAREN@15..16 "(" + PARAM@16..19 + PATH_TYPE@16..19 + PATH@16..19 + PATH_SEGMENT@16..19 + NAME_REF@16..19 + IDENT@16..19 "i32" + R_PAREN@19..20 ")" + WHITESPACE@20..21 " " + RET_TYPE@21..26 + THIN_ARROW@21..23 "->" + WHITESPACE@23..24 " " + TUPLE_TYPE@24..26 + L_PAREN@24..25 "(" + R_PAREN@25..26 ")" + R_ANGLE@26..27 ">" + SEMICOLON@27..28 ";" + WHITESPACE@28..29 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rs b/crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rs new file mode 100644 index 00000000000..17ed20e5b13 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rs @@ -0,0 +1 @@ +type F = Box ()>; diff --git a/crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rast b/crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rast new file mode 100644 index 00000000000..9b8381619a2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rast @@ -0,0 +1,135 @@ +SOURCE_FILE@0..134 + FN@0..133 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..133 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..21 + CLOSURE_EXPR@15..20 + PARAM_LIST@15..17 + PIPE@15..16 "|" + PIPE@16..17 "|" + WHITESPACE@17..18 " " + TUPLE_EXPR@18..20 + L_PAREN@18..19 "(" + R_PAREN@19..20 ")" + SEMICOLON@20..21 ";" + WHITESPACE@21..26 "\n " + EXPR_STMT@26..43 + CLOSURE_EXPR@26..42 + PARAM_LIST@26..28 + PIPE@26..27 "|" + PIPE@27..28 "|" + WHITESPACE@28..29 " " + RET_TYPE@29..35 + THIN_ARROW@29..31 "->" + WHITESPACE@31..32 " " + PATH_TYPE@32..35 + PATH@32..35 + PATH_SEGMENT@32..35 + NAME_REF@32..35 + IDENT@32..35 "i32" + WHITESPACE@35..36 " " + BLOCK_EXPR@36..42 + L_CURLY@36..37 "{" + WHITESPACE@37..38 " " + LITERAL@38..40 + INT_NUMBER@38..40 "92" + WHITESPACE@40..41 " " + R_CURLY@41..42 "}" + SEMICOLON@42..43 ";" + WHITESPACE@43..48 "\n " + EXPR_STMT@48..54 + CLOSURE_EXPR@48..53 + PARAM_LIST@48..51 + PIPE@48..49 "|" + PARAM@49..50 + IDENT_PAT@49..50 + NAME@49..50 + IDENT@49..50 "x" + PIPE@50..51 "|" + WHITESPACE@51..52 " " + PATH_EXPR@52..53 + PATH@52..53 + PATH_SEGMENT@52..53 + NAME_REF@52..53 + IDENT@52..53 "x" + SEMICOLON@53..54 ";" + WHITESPACE@54..59 "\n " + EXPR_STMT@59..76 + CLOSURE_EXPR@59..75 + MOVE_KW@59..63 "move" + WHITESPACE@63..64 " " + PARAM_LIST@64..73 + PIPE@64..65 "|" + PARAM@65..71 + IDENT_PAT@65..66 + NAME@65..66 + IDENT@65..66 "x" + COLON@66..67 ":" + WHITESPACE@67..68 " " + PATH_TYPE@68..71 + PATH@68..71 + PATH_SEGMENT@68..71 + NAME_REF@68..71 + IDENT@68..71 "i32" + COMMA@71..72 "," + PIPE@72..73 "|" + WHITESPACE@73..74 " " + PATH_EXPR@74..75 + PATH@74..75 + PATH_SEGMENT@74..75 + NAME_REF@74..75 + IDENT@74..75 "x" + SEMICOLON@75..76 ";" + WHITESPACE@76..81 "\n " + EXPR_STMT@81..93 + CLOSURE_EXPR@81..92 + ASYNC_KW@81..86 "async" + WHITESPACE@86..87 " " + PARAM_LIST@87..89 + PIPE@87..88 "|" + PIPE@88..89 "|" + WHITESPACE@89..90 " " + BLOCK_EXPR@90..92 + L_CURLY@90..91 "{" + R_CURLY@91..92 "}" + SEMICOLON@92..93 ";" + WHITESPACE@93..98 "\n " + EXPR_STMT@98..109 + CLOSURE_EXPR@98..108 + MOVE_KW@98..102 "move" + WHITESPACE@102..103 " " + PARAM_LIST@103..105 + PIPE@103..104 "|" + PIPE@104..105 "|" + WHITESPACE@105..106 " " + BLOCK_EXPR@106..108 + L_CURLY@106..107 "{" + R_CURLY@107..108 "}" + SEMICOLON@108..109 ";" + WHITESPACE@109..114 "\n " + EXPR_STMT@114..131 + CLOSURE_EXPR@114..130 + ASYNC_KW@114..119 "async" + WHITESPACE@119..120 " " + MOVE_KW@120..124 "move" + WHITESPACE@124..125 " " + PARAM_LIST@125..127 + PIPE@125..126 "|" + PIPE@126..127 "|" + WHITESPACE@127..128 " " + BLOCK_EXPR@128..130 + L_CURLY@128..129 "{" + R_CURLY@129..130 "}" + SEMICOLON@130..131 ";" + WHITESPACE@131..132 "\n" + R_CURLY@132..133 "}" + WHITESPACE@133..134 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rs b/crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rs new file mode 100644 index 00000000000..0757178239d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0106_lambda_expr.rs @@ -0,0 +1,9 @@ +fn foo() { + || (); + || -> i32 { 92 }; + |x| x; + move |x: i32,| x; + async || {}; + move || {}; + async move || {}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rast b/crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rast new file mode 100644 index 00000000000..be8365e0571 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rast @@ -0,0 +1,62 @@ +SOURCE_FILE@0..49 + FN@0..48 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..48 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..23 + METHOD_CALL_EXPR@15..22 + PATH_EXPR@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "x" + DOT@16..17 "." + NAME_REF@17..20 + IDENT@17..20 "foo" + ARG_LIST@20..22 + L_PAREN@20..21 "(" + R_PAREN@21..22 ")" + SEMICOLON@22..23 ";" + WHITESPACE@23..28 "\n " + EXPR_STMT@28..46 + METHOD_CALL_EXPR@28..45 + PATH_EXPR@28..29 + PATH@28..29 + PATH_SEGMENT@28..29 + NAME_REF@28..29 + IDENT@28..29 "y" + DOT@29..30 "." + NAME_REF@30..33 + IDENT@30..33 "bar" + GENERIC_ARG_LIST@33..38 + COLON2@33..35 "::" + L_ANGLE@35..36 "<" + TYPE_ARG@36..37 + PATH_TYPE@36..37 + PATH@36..37 + PATH_SEGMENT@36..37 + NAME_REF@36..37 + IDENT@36..37 "T" + R_ANGLE@37..38 ">" + ARG_LIST@38..45 + L_PAREN@38..39 "(" + LITERAL@39..40 + INT_NUMBER@39..40 "1" + COMMA@40..41 "," + WHITESPACE@41..42 " " + LITERAL@42..43 + INT_NUMBER@42..43 "2" + COMMA@43..44 "," + R_PAREN@44..45 ")" + SEMICOLON@45..46 ";" + WHITESPACE@46..47 "\n" + R_CURLY@47..48 "}" + WHITESPACE@48..49 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rs b/crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rs new file mode 100644 index 00000000000..1a3aa35ae8e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0107_method_call_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + x.foo(); + y.bar::(1, 2,); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rast b/crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rast new file mode 100644 index 00000000000..ca7e4a5c361 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rast @@ -0,0 +1,38 @@ +SOURCE_FILE@0..40 + FN@0..39 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..39 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..18 + TUPLE_EXPR@15..17 + L_PAREN@15..16 "(" + R_PAREN@16..17 ")" + SEMICOLON@17..18 ";" + WHITESPACE@18..23 "\n " + EXPR_STMT@23..27 + PAREN_EXPR@23..26 + L_PAREN@23..24 "(" + LITERAL@24..25 + INT_NUMBER@24..25 "1" + R_PAREN@25..26 ")" + SEMICOLON@26..27 ";" + WHITESPACE@27..32 "\n " + EXPR_STMT@32..37 + TUPLE_EXPR@32..36 + L_PAREN@32..33 "(" + LITERAL@33..34 + INT_NUMBER@33..34 "1" + COMMA@34..35 "," + R_PAREN@35..36 ")" + SEMICOLON@36..37 ";" + WHITESPACE@37..38 "\n" + R_CURLY@38..39 "}" + WHITESPACE@39..40 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rs b/crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rs new file mode 100644 index 00000000000..e4f774280ca --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0108_tuple_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + (); + (1); + (1,); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0109_label.rast b/crates/syntax/test_data/parser/inline/ok/0109_label.rast new file mode 100644 index 00000000000..c9588025ce5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0109_label.rast @@ -0,0 +1,64 @@ +SOURCE_FILE@0..74 + FN@0..73 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..73 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..26 + LOOP_EXPR@15..26 + LABEL@15..18 + LIFETIME@15..17 "\'a" + COLON@17..18 ":" + WHITESPACE@18..19 " " + LOOP_KW@19..23 "loop" + WHITESPACE@23..24 " " + BLOCK_EXPR@24..26 + L_CURLY@24..25 "{" + R_CURLY@25..26 "}" + WHITESPACE@26..31 "\n " + EXPR_STMT@31..48 + WHILE_EXPR@31..48 + LABEL@31..34 + LIFETIME@31..33 "\'b" + COLON@33..34 ":" + WHITESPACE@34..35 " " + WHILE_KW@35..40 "while" + WHITESPACE@40..41 " " + CONDITION@41..45 + LITERAL@41..45 + TRUE_KW@41..45 "true" + WHITESPACE@45..46 " " + BLOCK_EXPR@46..48 + L_CURLY@46..47 "{" + R_CURLY@47..48 "}" + WHITESPACE@48..53 "\n " + FOR_EXPR@53..71 + LABEL@53..56 + LIFETIME@53..55 "\'c" + COLON@55..56 ":" + WHITESPACE@56..57 " " + FOR_KW@57..60 "for" + WHITESPACE@60..61 " " + IDENT_PAT@61..62 + NAME@61..62 + IDENT@61..62 "x" + WHITESPACE@62..63 " " + IN_KW@63..65 "in" + WHITESPACE@65..66 " " + TUPLE_EXPR@66..68 + L_PAREN@66..67 "(" + R_PAREN@67..68 ")" + WHITESPACE@68..69 " " + BLOCK_EXPR@69..71 + L_CURLY@69..70 "{" + R_CURLY@70..71 "}" + WHITESPACE@71..72 "\n" + R_CURLY@72..73 "}" + WHITESPACE@73..74 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0109_label.rs b/crates/syntax/test_data/parser/inline/ok/0109_label.rs new file mode 100644 index 00000000000..48e83f263b9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0109_label.rs @@ -0,0 +1,5 @@ +fn foo() { + 'a: loop {} + 'b: while true {} + 'c: for x in () {} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0110_use_path.rast b/crates/syntax/test_data/parser/inline/ok/0110_use_path.rast new file mode 100644 index 00000000000..82028096f83 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0110_use_path.rast @@ -0,0 +1,38 @@ +SOURCE_FILE@0..154 + USE@0..17 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..16 + PATH@4..16 + PATH_SEGMENT@4..16 + COLON2@4..6 "::" + NAME_REF@6..16 + IDENT@6..16 "crate_name" + SEMICOLON@16..17 ";" + WHITESPACE@17..18 " " + COMMENT@18..45 "// Rust 2018 - All fl ..." + WHITESPACE@45..46 "\n" + USE@46..61 + USE_KW@46..49 "use" + WHITESPACE@49..50 " " + USE_TREE@50..60 + PATH@50..60 + PATH_SEGMENT@50..60 + NAME_REF@50..60 + IDENT@50..60 "crate_name" + SEMICOLON@60..61 ";" + WHITESPACE@61..62 " " + COMMENT@62..91 "// Rust 2018 - Anchor ..." + WHITESPACE@91..92 "\n" + USE@92..124 + USE_KW@92..95 "use" + WHITESPACE@95..96 " " + USE_TREE@96..123 + PATH@96..123 + PATH_SEGMENT@96..123 + NAME_REF@96..123 + IDENT@96..123 "item_in_scope_or_crat ..." + SEMICOLON@123..124 ";" + WHITESPACE@124..125 " " + COMMENT@125..153 "// Rust 2018 - Unifor ..." + WHITESPACE@153..154 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0110_use_path.rs b/crates/syntax/test_data/parser/inline/ok/0110_use_path.rs new file mode 100644 index 00000000000..328e9473602 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0110_use_path.rs @@ -0,0 +1,3 @@ +use ::crate_name; // Rust 2018 - All flavours +use crate_name; // Rust 2018 - Anchored paths +use item_in_scope_or_crate_name; // Rust 2018 - Uniform Paths diff --git a/crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rast b/crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rast new file mode 100644 index 00000000000..b82ed0230b1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rast @@ -0,0 +1,89 @@ +SOURCE_FILE@0..94 + FN@0..93 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..93 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..36 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + TUPLE_PAT@20..30 + L_PAREN@20..21 "(" + IDENT_PAT@21..22 + NAME@21..22 + IDENT@21..22 "a" + COMMA@22..23 "," + WHITESPACE@23..24 " " + IDENT_PAT@24..25 + NAME@24..25 + IDENT@24..25 "b" + COMMA@25..26 "," + WHITESPACE@26..27 " " + REST_PAT@27..29 + DOT2@27..29 ".." + R_PAREN@29..30 ")" + WHITESPACE@30..31 " " + EQ@31..32 "=" + WHITESPACE@32..33 " " + TUPLE_EXPR@33..35 + L_PAREN@33..34 "(" + R_PAREN@34..35 ")" + SEMICOLON@35..36 ";" + WHITESPACE@36..41 "\n " + LET_STMT@41..55 + LET_KW@41..44 "let" + WHITESPACE@44..45 " " + TUPLE_PAT@45..49 + L_PAREN@45..46 "(" + IDENT_PAT@46..47 + NAME@46..47 + IDENT@46..47 "a" + COMMA@47..48 "," + R_PAREN@48..49 ")" + WHITESPACE@49..50 " " + EQ@50..51 "=" + WHITESPACE@51..52 " " + TUPLE_EXPR@52..54 + L_PAREN@52..53 "(" + R_PAREN@53..54 ")" + SEMICOLON@54..55 ";" + WHITESPACE@55..60 "\n " + LET_STMT@60..74 + LET_KW@60..63 "let" + WHITESPACE@63..64 " " + TUPLE_PAT@64..68 + L_PAREN@64..65 "(" + REST_PAT@65..67 + DOT2@65..67 ".." + R_PAREN@67..68 ")" + WHITESPACE@68..69 " " + EQ@69..70 "=" + WHITESPACE@70..71 " " + TUPLE_EXPR@71..73 + L_PAREN@71..72 "(" + R_PAREN@72..73 ")" + SEMICOLON@73..74 ";" + WHITESPACE@74..79 "\n " + LET_STMT@79..91 + LET_KW@79..82 "let" + WHITESPACE@82..83 " " + TUPLE_PAT@83..85 + L_PAREN@83..84 "(" + R_PAREN@84..85 ")" + WHITESPACE@85..86 " " + EQ@86..87 "=" + WHITESPACE@87..88 " " + TUPLE_EXPR@88..90 + L_PAREN@88..89 "(" + R_PAREN@89..90 ")" + SEMICOLON@90..91 ";" + WHITESPACE@91..92 "\n" + R_CURLY@92..93 "}" + WHITESPACE@93..94 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rs b/crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rs new file mode 100644 index 00000000000..ba719879d4c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0111_tuple_pat.rs @@ -0,0 +1,6 @@ +fn main() { + let (a, b, ..) = (); + let (a,) = (); + let (..) = (); + let () = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rast b/crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rast new file mode 100644 index 00000000000..7b9a498c8ee --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rast @@ -0,0 +1,127 @@ +SOURCE_FILE@0..146 + FN@0..145 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..145 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..27 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + IDENT_PAT@20..21 + NAME@20..21 + IDENT@20..21 "a" + WHITESPACE@21..22 " " + EQ@22..23 "=" + WHITESPACE@23..24 " " + TUPLE_EXPR@24..26 + L_PAREN@24..25 "(" + R_PAREN@25..26 ")" + SEMICOLON@26..27 ";" + WHITESPACE@27..32 "\n " + LET_STMT@32..47 + LET_KW@32..35 "let" + WHITESPACE@35..36 " " + IDENT_PAT@36..41 + MUT_KW@36..39 "mut" + WHITESPACE@39..40 " " + NAME@40..41 + IDENT@40..41 "b" + WHITESPACE@41..42 " " + EQ@42..43 "=" + WHITESPACE@43..44 " " + TUPLE_EXPR@44..46 + L_PAREN@44..45 "(" + R_PAREN@45..46 ")" + SEMICOLON@46..47 ";" + WHITESPACE@47..52 "\n " + LET_STMT@52..67 + LET_KW@52..55 "let" + WHITESPACE@55..56 " " + IDENT_PAT@56..61 + REF_KW@56..59 "ref" + WHITESPACE@59..60 " " + NAME@60..61 + IDENT@60..61 "c" + WHITESPACE@61..62 " " + EQ@62..63 "=" + WHITESPACE@63..64 " " + TUPLE_EXPR@64..66 + L_PAREN@64..65 "(" + R_PAREN@65..66 ")" + SEMICOLON@66..67 ";" + WHITESPACE@67..72 "\n " + LET_STMT@72..91 + LET_KW@72..75 "let" + WHITESPACE@75..76 " " + IDENT_PAT@76..85 + REF_KW@76..79 "ref" + WHITESPACE@79..80 " " + MUT_KW@80..83 "mut" + WHITESPACE@83..84 " " + NAME@84..85 + IDENT@84..85 "d" + WHITESPACE@85..86 " " + EQ@86..87 "=" + WHITESPACE@87..88 " " + TUPLE_EXPR@88..90 + L_PAREN@88..89 "(" + R_PAREN@89..90 ")" + SEMICOLON@90..91 ";" + WHITESPACE@91..96 "\n " + LET_STMT@96..111 + LET_KW@96..99 "let" + WHITESPACE@99..100 " " + IDENT_PAT@100..105 + NAME@100..101 + IDENT@100..101 "e" + WHITESPACE@101..102 " " + AT@102..103 "@" + WHITESPACE@103..104 " " + WILDCARD_PAT@104..105 + UNDERSCORE@104..105 "_" + WHITESPACE@105..106 " " + EQ@106..107 "=" + WHITESPACE@107..108 " " + TUPLE_EXPR@108..110 + L_PAREN@108..109 "(" + R_PAREN@109..110 ")" + SEMICOLON@110..111 ";" + WHITESPACE@111..116 "\n " + LET_STMT@116..143 + LET_KW@116..119 "let" + WHITESPACE@119..120 " " + IDENT_PAT@120..137 + REF_KW@120..123 "ref" + WHITESPACE@123..124 " " + MUT_KW@124..127 "mut" + WHITESPACE@127..128 " " + NAME@128..129 + IDENT@128..129 "f" + WHITESPACE@129..130 " " + AT@130..131 "@" + WHITESPACE@131..132 " " + IDENT_PAT@132..137 + NAME@132..133 + IDENT@132..133 "g" + WHITESPACE@133..134 " " + AT@134..135 "@" + WHITESPACE@135..136 " " + WILDCARD_PAT@136..137 + UNDERSCORE@136..137 "_" + WHITESPACE@137..138 " " + EQ@138..139 "=" + WHITESPACE@139..140 " " + TUPLE_EXPR@140..142 + L_PAREN@140..141 "(" + R_PAREN@141..142 ")" + SEMICOLON@142..143 ";" + WHITESPACE@143..144 "\n" + R_CURLY@144..145 "}" + WHITESPACE@145..146 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rs b/crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rs new file mode 100644 index 00000000000..820a9e72ce5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0112_bind_pat.rs @@ -0,0 +1,8 @@ +fn main() { + let a = (); + let mut b = (); + let ref c = (); + let ref mut d = (); + let e @ _ = (); + let ref mut f @ g @ _ = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast b/crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast new file mode 100644 index 00000000000..d761c1c68e1 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rast @@ -0,0 +1,55 @@ +SOURCE_FILE@0..50 + FN@0..49 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + BLOCK_EXPR@8..49 + L_CURLY@8..9 "{" + WHITESPACE@9..14 "\n " + SEMICOLON@14..15 ";" + SEMICOLON@15..16 ";" + SEMICOLON@16..17 ";" + EXPR_STMT@17..29 + CALL_EXPR@17..28 + PATH_EXPR@17..26 + PATH@17..26 + PATH_SEGMENT@17..26 + NAME_REF@17..26 + IDENT@17..26 "some_expr" + ARG_LIST@26..28 + L_PAREN@26..27 "(" + R_PAREN@27..28 ")" + SEMICOLON@28..29 ";" + SEMICOLON@29..30 ";" + SEMICOLON@30..31 ";" + SEMICOLON@31..32 ";" + EXPR_STMT@32..38 + BLOCK_EXPR@32..37 + L_CURLY@32..33 "{" + SEMICOLON@33..34 ";" + SEMICOLON@34..35 ";" + SEMICOLON@35..36 ";" + R_CURLY@36..37 "}" + SEMICOLON@37..38 ";" + SEMICOLON@38..39 ";" + SEMICOLON@39..40 ";" + SEMICOLON@40..41 ";" + CALL_EXPR@41..47 + PATH_EXPR@41..43 + PATH@41..43 + PATH_SEGMENT@41..43 + NAME_REF@41..43 + IDENT@41..43 "Ok" + ARG_LIST@43..47 + L_PAREN@43..44 "(" + TUPLE_EXPR@44..46 + L_PAREN@44..45 "(" + R_PAREN@45..46 ")" + R_PAREN@46..47 ")" + WHITESPACE@47..48 "\n" + R_CURLY@48..49 "}" + WHITESPACE@49..50 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rs b/crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rs new file mode 100644 index 00000000000..bbf09e367cf --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0113_nocontentexpr.rs @@ -0,0 +1,3 @@ +fn foo(){ + ;;;some_expr();;;;{;;;};;;;Ok(()) +} diff --git a/crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast b/crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast new file mode 100644 index 00000000000..0e1594dc485 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rast @@ -0,0 +1,64 @@ +SOURCE_FILE@0..53 + STRUCT@0..33 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..11 + IDENT@7..11 "Test" + GENERIC_PARAM_LIST@11..14 + L_ANGLE@11..12 "<" + TYPE_PARAM@12..13 + NAME@12..13 + IDENT@12..13 "T" + R_ANGLE@13..14 ">" + TUPLE_FIELD_LIST@14..17 + L_PAREN@14..15 "(" + TUPLE_FIELD@15..16 + PATH_TYPE@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "T" + R_PAREN@16..17 ")" + WHITESPACE@17..18 " " + WHERE_CLAUSE@18..32 + WHERE_KW@18..23 "where" + WHITESPACE@23..24 " " + WHERE_PRED@24..32 + PATH_TYPE@24..25 + PATH@24..25 + PATH_SEGMENT@24..25 + NAME_REF@24..25 + IDENT@24..25 "T" + COLON@25..26 ":" + WHITESPACE@26..27 " " + TYPE_BOUND_LIST@27..32 + TYPE_BOUND@27..32 + PATH_TYPE@27..32 + PATH@27..32 + PATH_SEGMENT@27..32 + NAME_REF@27..32 + IDENT@27..32 "Clone" + SEMICOLON@32..33 ";" + WHITESPACE@33..34 "\n" + STRUCT@34..52 + STRUCT_KW@34..40 "struct" + WHITESPACE@40..41 " " + NAME@41..45 + IDENT@41..45 "Test" + GENERIC_PARAM_LIST@45..48 + L_ANGLE@45..46 "<" + TYPE_PARAM@46..47 + NAME@46..47 + IDENT@46..47 "T" + R_ANGLE@47..48 ">" + TUPLE_FIELD_LIST@48..51 + L_PAREN@48..49 "(" + TUPLE_FIELD@49..50 + PATH_TYPE@49..50 + PATH@49..50 + PATH_SEGMENT@49..50 + NAME_REF@49..50 + IDENT@49..50 "T" + R_PAREN@50..51 ")" + SEMICOLON@51..52 ";" + WHITESPACE@52..53 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rs b/crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rs new file mode 100644 index 00000000000..ddd59016dc6 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rs @@ -0,0 +1,2 @@ +struct Test(T) where T: Clone; +struct Test(T); diff --git a/crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast b/crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast new file mode 100644 index 00000000000..4d09c9f50f3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rast @@ -0,0 +1,41 @@ +SOURCE_FILE@0..60 + STRUCT@0..59 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + WHITESPACE@8..9 " " + TUPLE_FIELD_LIST@9..58 + L_PAREN@9..10 "(" + WHITESPACE@10..15 "\n " + TUPLE_FIELD@15..55 + ATTR@15..43 + POUND@15..16 "#" + L_BRACK@16..17 "[" + PATH@17..22 + PATH_SEGMENT@17..22 + NAME_REF@17..22 + IDENT@17..22 "serde" + TOKEN_TREE@22..42 + L_PAREN@22..23 "(" + IDENT@23..27 "with" + WHITESPACE@27..28 " " + EQ@28..29 "=" + WHITESPACE@29..30 " " + STRING@30..41 "\"url_serde\"" + R_PAREN@41..42 ")" + R_BRACK@42..43 "]" + WHITESPACE@43..48 "\n " + VISIBILITY@48..51 + PUB_KW@48..51 "pub" + WHITESPACE@51..52 " " + PATH_TYPE@52..55 + PATH@52..55 + PATH_SEGMENT@52..55 + NAME_REF@52..55 + IDENT@52..55 "Uri" + COMMA@55..56 "," + WHITESPACE@56..57 "\n" + R_PAREN@57..58 ")" + SEMICOLON@58..59 ";" + WHITESPACE@59..60 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rs b/crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rs new file mode 100644 index 00000000000..635b9ac21af --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.rs @@ -0,0 +1,4 @@ +struct S ( + #[serde(with = "url_serde")] + pub Uri, +); diff --git a/crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rast b/crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rast new file mode 100644 index 00000000000..f3d4ad72c32 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rast @@ -0,0 +1,43 @@ +SOURCE_FILE@0..41 + TYPE_ALIAS@0..16 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "A" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + MACRO_CALL@9..15 + PATH@9..12 + PATH_SEGMENT@9..12 + NAME_REF@9..12 + IDENT@9..12 "foo" + BANG@12..13 "!" + TOKEN_TREE@13..15 + L_PAREN@13..14 "(" + R_PAREN@14..15 ")" + SEMICOLON@15..16 ";" + WHITESPACE@16..17 "\n" + TYPE_ALIAS@17..40 + TYPE_KW@17..21 "type" + WHITESPACE@21..22 " " + NAME@22..23 + IDENT@22..23 "B" + WHITESPACE@23..24 " " + EQ@24..25 "=" + WHITESPACE@25..26 " " + MACRO_CALL@26..39 + PATH@26..36 + PATH@26..31 + PATH_SEGMENT@26..31 + CRATE_KW@26..31 "crate" + COLON2@31..33 "::" + PATH_SEGMENT@33..36 + NAME_REF@33..36 + IDENT@33..36 "foo" + BANG@36..37 "!" + TOKEN_TREE@37..39 + L_PAREN@37..38 "(" + R_PAREN@38..39 ")" + SEMICOLON@39..40 ";" + WHITESPACE@40..41 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rs b/crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rs new file mode 100644 index 00000000000..edb470c8999 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0117_macro_call_type.rs @@ -0,0 +1,2 @@ +type A = foo!(); +type B = crate::foo!(); diff --git a/crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast b/crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast new file mode 100644 index 00000000000..141a7b2035f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rast @@ -0,0 +1,40 @@ +SOURCE_FILE@0..94 + ENUM@0..8 + ENUM_KW@0..4 "enum" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "F" + VARIANT_LIST@6..8 + L_CURLY@6..7 "{" + R_CURLY@7..8 "}" + WHITESPACE@8..9 "\n" + IMPL@9..93 + IMPL_KW@9..13 "impl" + WHITESPACE@13..14 " " + PATH_TYPE@14..15 + PATH@14..15 + PATH_SEGMENT@14..15 + NAME_REF@14..15 + IDENT@14..15 "F" + WHITESPACE@15..16 " " + ASSOC_ITEM_LIST@16..93 + L_CURLY@16..17 "{" + WHITESPACE@17..23 "\n " + COMMENT@23..48 "//! This is a doc com ..." + WHITESPACE@48..54 "\n " + ATTR@54..91 + POUND@54..55 "#" + BANG@55..56 "!" + L_BRACK@56..57 "[" + PATH@57..60 + PATH_SEGMENT@57..60 + NAME_REF@57..60 + IDENT@57..60 "doc" + TOKEN_TREE@60..90 + L_PAREN@60..61 "(" + STRING@61..89 "\"This is also a doc c ..." + R_PAREN@89..90 ")" + R_BRACK@90..91 "]" + WHITESPACE@91..92 "\n" + R_CURLY@92..93 "}" + WHITESPACE@93..94 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rs b/crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rs new file mode 100644 index 00000000000..4d68cceb710 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rs @@ -0,0 +1,5 @@ +enum F{} +impl F { + //! This is a doc comment + #![doc("This is also a doc comment")] +} diff --git a/crates/syntax/test_data/parser/inline/ok/0118_match_guard.rast b/crates/syntax/test_data/parser/inline/ok/0118_match_guard.rast new file mode 100644 index 00000000000..0cf4eb0a5aa --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0118_match_guard.rast @@ -0,0 +1,47 @@ +SOURCE_FILE@0..58 + FN@0..57 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..57 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + MATCH_EXPR@15..55 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..55 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + MATCH_ARM@34..48 + WILDCARD_PAT@34..35 + UNDERSCORE@34..35 "_" + WHITESPACE@35..36 " " + MATCH_GUARD@36..42 + IF_KW@36..38 "if" + WHITESPACE@38..39 " " + PATH_EXPR@39..42 + PATH@39..42 + PATH_SEGMENT@39..42 + NAME_REF@39..42 + IDENT@39..42 "foo" + WHITESPACE@42..43 " " + FAT_ARROW@43..45 "=>" + WHITESPACE@45..46 " " + TUPLE_EXPR@46..48 + L_PAREN@46..47 "(" + R_PAREN@47..48 ")" + COMMA@48..49 "," + WHITESPACE@49..54 "\n " + R_CURLY@54..55 "}" + WHITESPACE@55..56 "\n" + R_CURLY@56..57 "}" + WHITESPACE@57..58 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0118_match_guard.rs b/crates/syntax/test_data/parser/inline/ok/0118_match_guard.rs new file mode 100644 index 00000000000..f1bd72fc4cb --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0118_match_guard.rs @@ -0,0 +1,5 @@ +fn foo() { + match () { + _ if foo => (), + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast b/crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast new file mode 100644 index 00000000000..ec7a00f1db8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rast @@ -0,0 +1,80 @@ +SOURCE_FILE@0..139 + FN@0..138 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..138 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + MATCH_EXPR@15..136 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..136 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + ATTR@34..60 + POUND@34..35 "#" + BANG@35..36 "!" + L_BRACK@36..37 "[" + PATH@37..40 + PATH_SEGMENT@37..40 + NAME_REF@37..40 + IDENT@37..40 "doc" + TOKEN_TREE@40..59 + L_PAREN@40..41 "(" + STRING@41..58 "\"Inner attribute\"" + R_PAREN@58..59 ")" + R_BRACK@59..60 "]" + WHITESPACE@60..69 "\n " + ATTR@69..86 + POUND@69..70 "#" + BANG@70..71 "!" + L_BRACK@71..72 "[" + PATH@72..75 + PATH_SEGMENT@72..75 + NAME_REF@72..75 + IDENT@72..75 "doc" + TOKEN_TREE@75..85 + L_PAREN@75..76 "(" + STRING@76..84 "\"Can be\"" + R_PAREN@84..85 ")" + R_BRACK@85..86 "]" + WHITESPACE@86..95 "\n " + ATTR@95..113 + POUND@95..96 "#" + BANG@96..97 "!" + L_BRACK@97..98 "[" + PATH@98..101 + PATH_SEGMENT@98..101 + NAME_REF@98..101 + IDENT@98..101 "doc" + TOKEN_TREE@101..112 + L_PAREN@101..102 "(" + STRING@102..111 "\"Stacked\"" + R_PAREN@111..112 ")" + R_BRACK@112..113 "]" + WHITESPACE@113..122 "\n " + MATCH_ARM@122..129 + WILDCARD_PAT@122..123 + UNDERSCORE@122..123 "_" + WHITESPACE@123..124 " " + FAT_ARROW@124..126 "=>" + WHITESPACE@126..127 " " + TUPLE_EXPR@127..129 + L_PAREN@127..128 "(" + R_PAREN@128..129 ")" + COMMA@129..130 "," + WHITESPACE@130..135 "\n " + R_CURLY@135..136 "}" + WHITESPACE@136..137 "\n" + R_CURLY@137..138 "}" + WHITESPACE@138..139 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rs b/crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rs new file mode 100644 index 00000000000..54a67c9d7b7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rs @@ -0,0 +1,8 @@ +fn foo() { + match () { + #![doc("Inner attribute")] + #![doc("Can be")] + #![doc("Stacked")] + _ => (), + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast b/crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast new file mode 100644 index 00000000000..97924da0526 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rast @@ -0,0 +1,145 @@ +SOURCE_FILE@0..259 + FN@0..258 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..258 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + MATCH_EXPR@15..256 + MATCH_KW@15..20 "match" + WHITESPACE@20..21 " " + TUPLE_EXPR@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + MATCH_ARM_LIST@24..256 + L_CURLY@24..25 "{" + WHITESPACE@25..34 "\n " + MATCH_ARM@34..74 + ATTR@34..58 + POUND@34..35 "#" + L_BRACK@35..36 "[" + PATH@36..39 + PATH_SEGMENT@36..39 + NAME_REF@36..39 + IDENT@36..39 "cfg" + TOKEN_TREE@39..57 + L_PAREN@39..40 "(" + IDENT@40..47 "feature" + WHITESPACE@47..48 " " + EQ@48..49 "=" + WHITESPACE@49..50 " " + STRING@50..56 "\"some\"" + R_PAREN@56..57 ")" + R_BRACK@57..58 "]" + WHITESPACE@58..67 "\n " + WILDCARD_PAT@67..68 + UNDERSCORE@67..68 "_" + WHITESPACE@68..69 " " + FAT_ARROW@69..71 "=>" + WHITESPACE@71..72 " " + TUPLE_EXPR@72..74 + L_PAREN@72..73 "(" + R_PAREN@73..74 ")" + COMMA@74..75 "," + WHITESPACE@75..84 "\n " + MATCH_ARM@84..125 + ATTR@84..109 + POUND@84..85 "#" + L_BRACK@85..86 "[" + PATH@86..89 + PATH_SEGMENT@86..89 + NAME_REF@86..89 + IDENT@86..89 "cfg" + TOKEN_TREE@89..108 + L_PAREN@89..90 "(" + IDENT@90..97 "feature" + WHITESPACE@97..98 " " + EQ@98..99 "=" + WHITESPACE@99..100 " " + STRING@100..107 "\"other\"" + R_PAREN@107..108 ")" + R_BRACK@108..109 "]" + WHITESPACE@109..118 "\n " + WILDCARD_PAT@118..119 + UNDERSCORE@118..119 "_" + WHITESPACE@119..120 " " + FAT_ARROW@120..122 "=>" + WHITESPACE@122..123 " " + TUPLE_EXPR@123..125 + L_PAREN@123..124 "(" + R_PAREN@124..125 ")" + COMMA@125..126 "," + WHITESPACE@126..135 "\n " + MATCH_ARM@135..249 + ATTR@135..159 + POUND@135..136 "#" + L_BRACK@136..137 "[" + PATH@137..140 + PATH_SEGMENT@137..140 + NAME_REF@137..140 + IDENT@137..140 "cfg" + TOKEN_TREE@140..158 + L_PAREN@140..141 "(" + IDENT@141..148 "feature" + WHITESPACE@148..149 " " + EQ@149..150 "=" + WHITESPACE@150..151 " " + STRING@151..157 "\"many\"" + R_PAREN@157..158 ")" + R_BRACK@158..159 "]" + WHITESPACE@159..168 "\n " + ATTR@168..198 + POUND@168..169 "#" + L_BRACK@169..170 "[" + PATH@170..173 + PATH_SEGMENT@170..173 + NAME_REF@170..173 + IDENT@170..173 "cfg" + TOKEN_TREE@173..197 + L_PAREN@173..174 "(" + IDENT@174..181 "feature" + WHITESPACE@181..182 " " + EQ@182..183 "=" + WHITESPACE@183..184 " " + STRING@184..196 "\"attributes\"" + R_PAREN@196..197 ")" + R_BRACK@197..198 "]" + WHITESPACE@198..207 "\n " + ATTR@207..233 + POUND@207..208 "#" + L_BRACK@208..209 "[" + PATH@209..212 + PATH_SEGMENT@209..212 + NAME_REF@209..212 + IDENT@209..212 "cfg" + TOKEN_TREE@212..232 + L_PAREN@212..213 "(" + IDENT@213..220 "feature" + WHITESPACE@220..221 " " + EQ@221..222 "=" + WHITESPACE@222..223 " " + STRING@223..231 "\"before\"" + R_PAREN@231..232 ")" + R_BRACK@232..233 "]" + WHITESPACE@233..242 "\n " + WILDCARD_PAT@242..243 + UNDERSCORE@242..243 "_" + WHITESPACE@243..244 " " + FAT_ARROW@244..246 "=>" + WHITESPACE@246..247 " " + TUPLE_EXPR@247..249 + L_PAREN@247..248 "(" + R_PAREN@248..249 ")" + COMMA@249..250 "," + WHITESPACE@250..255 "\n " + R_CURLY@255..256 "}" + WHITESPACE@256..257 "\n" + R_CURLY@257..258 "}" + WHITESPACE@258..259 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rs b/crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rs new file mode 100644 index 00000000000..676db42d1a7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rs @@ -0,0 +1,12 @@ +fn foo() { + match () { + #[cfg(feature = "some")] + _ => (), + #[cfg(feature = "other")] + _ => (), + #[cfg(feature = "many")] + #[cfg(feature = "attributes")] + #[cfg(feature = "before")] + _ => (), + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast b/crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast new file mode 100644 index 00000000000..570b9520526 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rast @@ -0,0 +1,65 @@ +SOURCE_FILE@0..64 + FN@0..63 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + GENERIC_PARAM_LIST@6..49 + L_ANGLE@6..7 "<" + LIFETIME_PARAM@7..29 + ATTR@7..26 + POUND@7..8 "#" + L_BRACK@8..9 "[" + PATH@9..15 + PATH_SEGMENT@9..15 + NAME_REF@9..15 + IDENT@9..15 "derive" + TOKEN_TREE@15..25 + L_PAREN@15..16 "(" + IDENT@16..24 "Lifetime" + R_PAREN@24..25 ")" + R_BRACK@25..26 "]" + WHITESPACE@26..27 " " + LIFETIME@27..29 "\'a" + COMMA@29..30 "," + WHITESPACE@30..31 " " + TYPE_PARAM@31..48 + ATTR@31..46 + POUND@31..32 "#" + L_BRACK@32..33 "[" + PATH@33..39 + PATH_SEGMENT@33..39 + NAME_REF@33..39 + IDENT@33..39 "derive" + TOKEN_TREE@39..45 + L_PAREN@39..40 "(" + IDENT@40..44 "Type" + R_PAREN@44..45 ")" + R_BRACK@45..46 "]" + WHITESPACE@46..47 " " + NAME@47..48 + IDENT@47..48 "T" + R_ANGLE@48..49 ">" + PARAM_LIST@49..59 + L_PAREN@49..50 "(" + PARAM@50..58 + WILDCARD_PAT@50..51 + UNDERSCORE@50..51 "_" + COLON@51..52 ":" + WHITESPACE@52..53 " " + REF_TYPE@53..58 + AMP@53..54 "&" + LIFETIME@54..56 "\'a" + WHITESPACE@56..57 " " + PATH_TYPE@57..58 + PATH@57..58 + PATH_SEGMENT@57..58 + NAME_REF@57..58 + IDENT@57..58 "T" + R_PAREN@58..59 ")" + WHITESPACE@59..60 " " + BLOCK_EXPR@60..63 + L_CURLY@60..61 "{" + WHITESPACE@61..62 "\n" + R_CURLY@62..63 "}" + WHITESPACE@63..64 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs b/crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs new file mode 100644 index 00000000000..e8fdf741fb9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs @@ -0,0 +1,2 @@ +fn foo<#[derive(Lifetime)] 'a, #[derive(Type)] T>(_: &'a T) { +} diff --git a/crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast b/crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast new file mode 100644 index 00000000000..7cdec663473 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rast @@ -0,0 +1,50 @@ +SOURCE_FILE@0..57 + EXTERN_BLOCK@0..56 + ABI@0..10 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + STRING@7..10 "\"C\"" + WHITESPACE@10..11 " " + EXTERN_ITEM_LIST@11..56 + L_CURLY@11..12 "{" + WHITESPACE@12..13 " " + FN@13..54 + FN_KW@13..15 "fn" + WHITESPACE@15..16 " " + NAME@16..22 + IDENT@16..22 "printf" + PARAM_LIST@22..46 + L_PAREN@22..23 "(" + PARAM@23..40 + IDENT_PAT@23..29 + NAME@23..29 + IDENT@23..29 "format" + COLON@29..30 ":" + WHITESPACE@30..31 " " + PTR_TYPE@31..40 + STAR@31..32 "*" + CONST_KW@32..37 "const" + WHITESPACE@37..38 " " + PATH_TYPE@38..40 + PATH@38..40 + PATH_SEGMENT@38..40 + NAME_REF@38..40 + IDENT@38..40 "i8" + COMMA@40..41 "," + WHITESPACE@41..42 " " + PARAM@42..45 + DOT3@42..45 "..." + R_PAREN@45..46 ")" + WHITESPACE@46..47 " " + RET_TYPE@47..53 + THIN_ARROW@47..49 "->" + WHITESPACE@49..50 " " + PATH_TYPE@50..53 + PATH@50..53 + PATH_SEGMENT@50..53 + NAME_REF@50..53 + IDENT@50..53 "i32" + SEMICOLON@53..54 ";" + WHITESPACE@54..55 " " + R_CURLY@55..56 "}" + WHITESPACE@56..57 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs b/crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs new file mode 100644 index 00000000000..c59addaf420 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs @@ -0,0 +1 @@ +extern "C" { fn printf(format: *const i8, ...) -> i32; } diff --git a/crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast b/crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast new file mode 100644 index 00000000000..aa4d7a784f4 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rast @@ -0,0 +1,31 @@ +SOURCE_FILE@0..27 + FN@0..26 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..26 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + EXPR_STMT@11..24 + CALL_EXPR@11..23 + PATH_EXPR@11..21 + PATH@11..21 + PATH@11..16 + PATH_SEGMENT@11..16 + CRATE_KW@11..16 "crate" + COLON2@16..18 "::" + PATH_SEGMENT@18..21 + NAME_REF@18..21 + IDENT@18..21 "foo" + ARG_LIST@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + SEMICOLON@23..24 ";" + WHITESPACE@24..25 " " + R_CURLY@25..26 "}" + WHITESPACE@26..27 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rs b/crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rs new file mode 100644 index 00000000000..0f454d121d6 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rs @@ -0,0 +1 @@ +fn foo() { crate::foo(); } diff --git a/crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast b/crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast new file mode 100644 index 00000000000..54ea2c7c669 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rast @@ -0,0 +1,47 @@ +SOURCE_FILE@0..46 + FN@0..45 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..45 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + RECORD_EXPR@16..43 + PATH@16..17 + PATH_SEGMENT@16..17 + NAME_REF@16..17 + IDENT@16..17 "S" + WHITESPACE@17..18 " " + RECORD_EXPR_FIELD_LIST@18..43 + L_CURLY@18..19 "{" + WHITESPACE@19..20 " " + RECORD_EXPR_FIELD@20..41 + ATTR@20..32 + POUND@20..21 "#" + L_BRACK@21..22 "[" + PATH@22..25 + PATH_SEGMENT@22..25 + NAME_REF@22..25 + IDENT@22..25 "cfg" + TOKEN_TREE@25..31 + L_PAREN@25..26 "(" + IDENT@26..30 "test" + R_PAREN@30..31 ")" + R_BRACK@31..32 "]" + WHITESPACE@32..33 " " + NAME_REF@33..38 + IDENT@33..38 "field" + COLON@38..39 ":" + WHITESPACE@39..40 " " + LITERAL@40..41 + INT_NUMBER@40..41 "1" + WHITESPACE@41..42 " " + R_CURLY@42..43 "}" + WHITESPACE@43..44 "\n" + R_CURLY@44..45 "}" + WHITESPACE@45..46 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rs b/crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rs new file mode 100644 index 00000000000..a6c7760c767 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.rs @@ -0,0 +1,3 @@ +fn main() { + S { #[cfg(test)] field: 1 } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast b/crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast new file mode 100644 index 00000000000..0342e64f396 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rast @@ -0,0 +1,97 @@ +SOURCE_FILE@0..82 + FN@0..81 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..81 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..26 + ATTR@15..19 + POUND@15..16 "#" + L_BRACK@16..17 "[" + PATH@17..18 + PATH_SEGMENT@17..18 + NAME_REF@17..18 + IDENT@17..18 "A" + R_BRACK@18..19 "]" + WHITESPACE@19..20 " " + CALL_EXPR@20..25 + PATH_EXPR@20..23 + PATH@20..23 + PATH_SEGMENT@20..23 + NAME_REF@20..23 + IDENT@20..23 "foo" + ARG_LIST@23..25 + L_PAREN@23..24 "(" + R_PAREN@24..25 ")" + SEMICOLON@25..26 ";" + WHITESPACE@26..31 "\n " + EXPR_STMT@31..42 + ATTR@31..35 + POUND@31..32 "#" + L_BRACK@32..33 "[" + PATH@33..34 + PATH_SEGMENT@33..34 + NAME_REF@33..34 + IDENT@33..34 "B" + R_BRACK@34..35 "]" + WHITESPACE@35..36 " " + MACRO_CALL@36..42 + PATH@36..39 + PATH_SEGMENT@36..39 + NAME_REF@36..39 + IDENT@36..39 "bar" + BANG@39..40 "!" + TOKEN_TREE@40..42 + L_CURLY@40..41 "{" + R_CURLY@41..42 "}" + WHITESPACE@42..47 "\n " + EXPR_STMT@47..59 + ATTR@47..51 + POUND@47..48 "#" + L_BRACK@48..49 "[" + PATH@49..50 + PATH_SEGMENT@49..50 + NAME_REF@49..50 + IDENT@49..50 "C" + R_BRACK@50..51 "]" + WHITESPACE@51..52 " " + ATTR@52..56 + POUND@52..53 "#" + L_BRACK@53..54 "[" + PATH@54..55 + PATH_SEGMENT@54..55 + NAME_REF@54..55 + IDENT@54..55 "D" + R_BRACK@55..56 "]" + WHITESPACE@56..57 " " + BLOCK_EXPR@57..59 + L_CURLY@57..58 "{" + R_CURLY@58..59 "}" + WHITESPACE@59..64 "\n " + EXPR_STMT@64..79 + ATTR@64..68 + POUND@64..65 "#" + L_BRACK@65..66 "[" + PATH@66..67 + PATH_SEGMENT@66..67 + NAME_REF@66..67 + IDENT@66..67 "D" + R_BRACK@67..68 "]" + WHITESPACE@68..69 " " + RETURN_EXPR@69..78 + RETURN_KW@69..75 "return" + WHITESPACE@75..76 " " + TUPLE_EXPR@76..78 + L_PAREN@76..77 "(" + R_PAREN@77..78 ")" + SEMICOLON@78..79 ";" + WHITESPACE@79..80 "\n" + R_CURLY@80..81 "}" + WHITESPACE@81..82 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rs b/crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rs new file mode 100644 index 00000000000..b28c078f935 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rs @@ -0,0 +1,6 @@ +fn foo() { + #[A] foo(); + #[B] bar!{} + #[C] #[D] {} + #[D] return (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast b/crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast new file mode 100644 index 00000000000..3b46e5b479d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rast @@ -0,0 +1,57 @@ +SOURCE_FILE@0..47 + FN@0..46 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..46 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..31 + BLOCK_EXPR@15..31 + L_CURLY@15..16 "{" + WHITESPACE@16..17 " " + TRY_EXPR@17..29 + ATTR@17..21 + POUND@17..18 "#" + L_BRACK@18..19 "[" + PATH@19..20 + PATH_SEGMENT@19..20 + NAME_REF@19..20 + IDENT@19..20 "A" + R_BRACK@20..21 "]" + WHITESPACE@21..22 " " + MACRO_CALL@22..28 + PATH@22..25 + PATH_SEGMENT@22..25 + NAME_REF@22..25 + IDENT@22..25 "bar" + BANG@25..26 "!" + TOKEN_TREE@26..28 + L_PAREN@26..27 "(" + R_PAREN@27..28 ")" + QUESTION@28..29 "?" + WHITESPACE@29..30 " " + R_CURLY@30..31 "}" + WHITESPACE@31..36 "\n " + REF_EXPR@36..44 + ATTR@36..40 + POUND@36..37 "#" + L_BRACK@37..38 "[" + PATH@38..39 + PATH_SEGMENT@38..39 + NAME_REF@38..39 + IDENT@38..39 "B" + R_BRACK@39..40 "]" + WHITESPACE@40..41 " " + AMP@41..42 "&" + TUPLE_EXPR@42..44 + L_PAREN@42..43 "(" + R_PAREN@43..44 ")" + WHITESPACE@44..45 "\n" + R_CURLY@45..46 "}" + WHITESPACE@46..47 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs b/crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs new file mode 100644 index 00000000000..9c5c8eb3615 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs @@ -0,0 +1,4 @@ +fn foo() { + { #[A] bar!()? } + #[B] &() +} diff --git a/crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rast b/crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rast new file mode 100644 index 00000000000..e283966ca23 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rast @@ -0,0 +1,36 @@ +SOURCE_FILE@0..33 + FN@0..32 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..32 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..30 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + MACRO_PAT@20..25 + MACRO_CALL@20..25 + PATH@20..21 + PATH_SEGMENT@20..21 + NAME_REF@20..21 + IDENT@20..21 "m" + BANG@21..22 "!" + TOKEN_TREE@22..25 + L_PAREN@22..23 "(" + IDENT@23..24 "x" + R_PAREN@24..25 ")" + WHITESPACE@25..26 " " + EQ@26..27 "=" + WHITESPACE@27..28 " " + LITERAL@28..29 + INT_NUMBER@28..29 "0" + SEMICOLON@29..30 ";" + WHITESPACE@30..31 "\n" + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rs b/crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rs new file mode 100644 index 00000000000..811181d9ba8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0129_marco_pat.rs @@ -0,0 +1,3 @@ +fn main() { + let m!(x) = 0; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rast b/crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rast new file mode 100644 index 00000000000..4c07cefa6d7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rast @@ -0,0 +1,126 @@ +SOURCE_FILE@0..135 + FN@0..134 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..134 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..21 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + IDENT_PAT@19..20 + NAME@19..20 + IDENT@19..20 "a" + SEMICOLON@20..21 ";" + WHITESPACE@21..26 "\n " + LET_STMT@26..37 + LET_KW@26..29 "let" + WHITESPACE@29..30 " " + IDENT_PAT@30..31 + NAME@30..31 + IDENT@30..31 "b" + COLON@31..32 ":" + WHITESPACE@32..33 " " + PATH_TYPE@33..36 + PATH@33..36 + PATH_SEGMENT@33..36 + NAME_REF@33..36 + IDENT@33..36 "i32" + SEMICOLON@36..37 ";" + WHITESPACE@37..42 "\n " + LET_STMT@42..53 + LET_KW@42..45 "let" + WHITESPACE@45..46 " " + IDENT_PAT@46..47 + NAME@46..47 + IDENT@46..47 "c" + WHITESPACE@47..48 " " + EQ@48..49 "=" + WHITESPACE@49..50 " " + LITERAL@50..52 + INT_NUMBER@50..52 "92" + SEMICOLON@52..53 ";" + WHITESPACE@53..58 "\n " + LET_STMT@58..74 + LET_KW@58..61 "let" + WHITESPACE@61..62 " " + IDENT_PAT@62..63 + NAME@62..63 + IDENT@62..63 "d" + COLON@63..64 ":" + WHITESPACE@64..65 " " + PATH_TYPE@65..68 + PATH@65..68 + PATH_SEGMENT@65..68 + NAME_REF@65..68 + IDENT@65..68 "i32" + WHITESPACE@68..69 " " + EQ@69..70 "=" + WHITESPACE@70..71 " " + LITERAL@71..73 + INT_NUMBER@71..73 "92" + SEMICOLON@73..74 ";" + WHITESPACE@74..79 "\n " + LET_STMT@79..88 + LET_KW@79..82 "let" + WHITESPACE@82..83 " " + IDENT_PAT@83..84 + NAME@83..84 + IDENT@83..84 "e" + COLON@84..85 ":" + WHITESPACE@85..86 " " + NEVER_TYPE@86..87 + BANG@86..87 "!" + SEMICOLON@87..88 ";" + WHITESPACE@88..93 "\n " + LET_STMT@93..107 + LET_KW@93..96 "let" + WHITESPACE@96..97 " " + WILDCARD_PAT@97..98 + UNDERSCORE@97..98 "_" + COLON@98..99 ":" + WHITESPACE@99..100 " " + NEVER_TYPE@100..101 + BANG@100..101 "!" + WHITESPACE@101..102 " " + EQ@102..103 "=" + WHITESPACE@103..104 " " + BLOCK_EXPR@104..106 + L_CURLY@104..105 "{" + R_CURLY@105..106 "}" + SEMICOLON@106..107 ";" + WHITESPACE@107..112 "\n " + LET_STMT@112..132 + LET_KW@112..115 "let" + WHITESPACE@115..116 " " + IDENT_PAT@116..117 + NAME@116..117 + IDENT@116..117 "f" + WHITESPACE@117..118 " " + EQ@118..119 "=" + WHITESPACE@119..120 " " + CLOSURE_EXPR@120..131 + ATTR@120..127 + POUND@120..121 "#" + L_BRACK@121..122 "[" + PATH@122..126 + PATH_SEGMENT@122..126 + NAME_REF@122..126 + IDENT@122..126 "attr" + R_BRACK@126..127 "]" + PARAM_LIST@127..129 + PIPE@127..128 "|" + PIPE@128..129 "|" + BLOCK_EXPR@129..131 + L_CURLY@129..130 "{" + R_CURLY@130..131 "}" + SEMICOLON@131..132 ";" + WHITESPACE@132..133 "\n" + R_CURLY@133..134 "}" + WHITESPACE@134..135 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rs b/crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rs new file mode 100644 index 00000000000..fa8ee49a231 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0130_let_stmt.rs @@ -0,0 +1,9 @@ +fn foo() { + let a; + let b: i32; + let c = 92; + let d: i32 = 92; + let e: !; + let _: ! = {}; + let f = #[attr]||{}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rast b/crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rast new file mode 100644 index 00000000000..ffdffe2f801 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rast @@ -0,0 +1,31 @@ +SOURCE_FILE@0..33 + FN@0..32 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..32 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..30 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + WILDCARD_PAT@19..20 + UNDERSCORE@19..20 "_" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + EFFECT_EXPR@23..29 + TRY_KW@23..26 "try" + WHITESPACE@26..27 " " + BLOCK_EXPR@27..29 + L_CURLY@27..28 "{" + R_CURLY@28..29 "}" + SEMICOLON@29..30 ";" + WHITESPACE@30..31 "\n" + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rs b/crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rs new file mode 100644 index 00000000000..0f1b41eb64b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0130_try_block_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + let _ = try {}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0131_existential_type.rast b/crates/syntax/test_data/parser/inline/ok/0131_existential_type.rast new file mode 100644 index 00000000000..d47071a911a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0131_existential_type.rast @@ -0,0 +1,31 @@ +SOURCE_FILE@0..37 + TYPE_ALIAS@0..36 + EXISTENTIAL_KW@0..11 "existential" + WHITESPACE@11..12 " " + TYPE_KW@12..16 "type" + WHITESPACE@16..17 " " + NAME@17..20 + IDENT@17..20 "Foo" + COLON@20..21 ":" + WHITESPACE@21..22 " " + TYPE_BOUND_LIST@22..35 + TYPE_BOUND@22..35 + PATH_TYPE@22..35 + PATH@22..35 + PATH_SEGMENT@22..35 + NAME_REF@22..24 + IDENT@22..24 "Fn" + PARAM_LIST@24..26 + L_PAREN@24..25 "(" + R_PAREN@25..26 ")" + WHITESPACE@26..27 " " + RET_TYPE@27..35 + THIN_ARROW@27..29 "->" + WHITESPACE@29..30 " " + PATH_TYPE@30..35 + PATH@30..35 + PATH_SEGMENT@30..35 + NAME_REF@30..35 + IDENT@30..35 "usize" + SEMICOLON@35..36 ";" + WHITESPACE@36..37 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0131_existential_type.rs b/crates/syntax/test_data/parser/inline/ok/0131_existential_type.rs new file mode 100644 index 00000000000..23baf7145cc --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0131_existential_type.rs @@ -0,0 +1 @@ +existential type Foo: Fn() -> usize; diff --git a/crates/syntax/test_data/parser/inline/ok/0132_box_expr.rast b/crates/syntax/test_data/parser/inline/ok/0132_box_expr.rast new file mode 100644 index 00000000000..c5503824729 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0132_box_expr.rast @@ -0,0 +1,89 @@ +SOURCE_FILE@0..106 + FN@0..105 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..105 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..32 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + IDENT_PAT@19..20 + NAME@19..20 + IDENT@19..20 "x" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + BOX_EXPR@23..31 + BOX_KW@23..26 "box" + WHITESPACE@26..27 " " + LITERAL@27..31 + INT_NUMBER@27..31 "1i32" + SEMICOLON@31..32 ";" + WHITESPACE@32..37 "\n " + LET_STMT@37..66 + LET_KW@37..40 "let" + WHITESPACE@40..41 " " + IDENT_PAT@41..42 + NAME@41..42 + IDENT@41..42 "y" + WHITESPACE@42..43 " " + EQ@43..44 "=" + WHITESPACE@44..45 " " + TUPLE_EXPR@45..65 + L_PAREN@45..46 "(" + BOX_EXPR@46..54 + BOX_KW@46..49 "box" + WHITESPACE@49..50 " " + LITERAL@50..54 + INT_NUMBER@50..54 "1i32" + COMMA@54..55 "," + WHITESPACE@55..56 " " + BOX_EXPR@56..64 + BOX_KW@56..59 "box" + WHITESPACE@59..60 " " + LITERAL@60..64 + INT_NUMBER@60..64 "2i32" + R_PAREN@64..65 ")" + SEMICOLON@65..66 ";" + WHITESPACE@66..71 "\n " + LET_STMT@71..103 + LET_KW@71..74 "let" + WHITESPACE@74..75 " " + IDENT_PAT@75..76 + NAME@75..76 + IDENT@75..76 "z" + WHITESPACE@76..77 " " + EQ@77..78 "=" + WHITESPACE@78..79 " " + CALL_EXPR@79..102 + PATH_EXPR@79..82 + PATH@79..82 + PATH_SEGMENT@79..82 + NAME_REF@79..82 + IDENT@79..82 "Foo" + ARG_LIST@82..102 + L_PAREN@82..83 "(" + BOX_EXPR@83..91 + BOX_KW@83..86 "box" + WHITESPACE@86..87 " " + LITERAL@87..91 + INT_NUMBER@87..91 "1i32" + COMMA@91..92 "," + WHITESPACE@92..93 " " + BOX_EXPR@93..101 + BOX_KW@93..96 "box" + WHITESPACE@96..97 " " + LITERAL@97..101 + INT_NUMBER@97..101 "2i32" + R_PAREN@101..102 ")" + SEMICOLON@102..103 ";" + WHITESPACE@103..104 "\n" + R_CURLY@104..105 "}" + WHITESPACE@105..106 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0132_box_expr.rs b/crates/syntax/test_data/parser/inline/ok/0132_box_expr.rs new file mode 100644 index 00000000000..fc9923b7137 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0132_box_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + let x = box 1i32; + let y = (box 1i32, box 2i32); + let z = Foo(box 1i32, box 2i32); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast b/crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast new file mode 100644 index 00000000000..429a0506e1a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rast @@ -0,0 +1,62 @@ +SOURCE_FILE@0..111 + FN@0..110 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..18 + IDENT@3..18 "simple_function" + PARAM_LIST@18..20 + L_PAREN@18..19 "(" + R_PAREN@19..20 ")" + WHITESPACE@20..21 " " + BLOCK_EXPR@21..110 + L_CURLY@21..22 "{" + WHITESPACE@22..27 "\n " + ENUM@27..75 + ENUM_KW@27..31 "enum" + WHITESPACE@31..32 " " + NAME@32..41 + IDENT@32..41 "LocalEnum" + WHITESPACE@41..42 " " + VARIANT_LIST@42..75 + L_CURLY@42..43 "{" + WHITESPACE@43..52 "\n " + VARIANT@52..55 + NAME@52..55 + IDENT@52..55 "One" + COMMA@55..56 "," + WHITESPACE@56..65 "\n " + VARIANT@65..68 + NAME@65..68 + IDENT@65..68 "Two" + COMMA@68..69 "," + WHITESPACE@69..74 "\n " + R_CURLY@74..75 "}" + SEMICOLON@75..76 ";" + WHITESPACE@76..81 "\n " + FN@81..90 + FN_KW@81..83 "fn" + WHITESPACE@83..84 " " + NAME@84..85 + IDENT@84..85 "f" + PARAM_LIST@85..87 + L_PAREN@85..86 "(" + R_PAREN@86..87 ")" + WHITESPACE@87..88 " " + BLOCK_EXPR@88..90 + L_CURLY@88..89 "{" + R_CURLY@89..90 "}" + SEMICOLON@90..91 ";" + WHITESPACE@91..96 "\n " + STRUCT@96..107 + STRUCT_KW@96..102 "struct" + WHITESPACE@102..103 " " + NAME@103..104 + IDENT@103..104 "S" + WHITESPACE@104..105 " " + RECORD_FIELD_LIST@105..107 + L_CURLY@105..106 "{" + R_CURLY@106..107 "}" + SEMICOLON@107..108 ";" + WHITESPACE@108..109 "\n" + R_CURLY@109..110 "}" + WHITESPACE@110..111 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rs b/crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rs new file mode 100644 index 00000000000..eadc7fffb13 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rs @@ -0,0 +1,8 @@ +fn simple_function() { + enum LocalEnum { + One, + Two, + }; + fn f() {}; + struct S {}; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0137_await_expr.rast b/crates/syntax/test_data/parser/inline/ok/0137_await_expr.rast new file mode 100644 index 00000000000..923effe3831 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0137_await_expr.rast @@ -0,0 +1,69 @@ +SOURCE_FILE@0..67 + FN@0..66 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..66 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..23 + AWAIT_EXPR@15..22 + PATH_EXPR@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "x" + DOT@16..17 "." + AWAIT_KW@17..22 "await" + SEMICOLON@22..23 ";" + WHITESPACE@23..28 "\n " + EXPR_STMT@28..38 + AWAIT_EXPR@28..37 + FIELD_EXPR@28..31 + PATH_EXPR@28..29 + PATH@28..29 + PATH_SEGMENT@28..29 + NAME_REF@28..29 + IDENT@28..29 "x" + DOT@29..30 "." + NAME_REF@30..31 + INT_NUMBER@30..31 "0" + DOT@31..32 "." + AWAIT_KW@32..37 "await" + SEMICOLON@37..38 ";" + WHITESPACE@38..43 "\n " + EXPR_STMT@43..64 + METHOD_CALL_EXPR@43..63 + TRY_EXPR@43..55 + AWAIT_EXPR@43..54 + CALL_EXPR@43..48 + FIELD_EXPR@43..46 + PATH_EXPR@43..44 + PATH@43..44 + PATH_SEGMENT@43..44 + NAME_REF@43..44 + IDENT@43..44 "x" + DOT@44..45 "." + NAME_REF@45..46 + INT_NUMBER@45..46 "0" + ARG_LIST@46..48 + L_PAREN@46..47 "(" + R_PAREN@47..48 ")" + DOT@48..49 "." + AWAIT_KW@49..54 "await" + QUESTION@54..55 "?" + DOT@55..56 "." + NAME_REF@56..61 + IDENT@56..61 "hello" + ARG_LIST@61..63 + L_PAREN@61..62 "(" + R_PAREN@62..63 ")" + SEMICOLON@63..64 ";" + WHITESPACE@64..65 "\n" + R_CURLY@65..66 "}" + WHITESPACE@66..67 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0137_await_expr.rs b/crates/syntax/test_data/parser/inline/ok/0137_await_expr.rs new file mode 100644 index 00000000000..d2ba89ca607 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0137_await_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + x.await; + x.0.await; + x.0().await?.hello(); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast b/crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast new file mode 100644 index 00000000000..3870ec1353d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rast @@ -0,0 +1,55 @@ +SOURCE_FILE@0..59 + FN@0..58 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..12 + IDENT@3..12 "print_all" + GENERIC_PARAM_LIST@12..40 + L_ANGLE@12..13 "<" + TYPE_PARAM@13..39 + NAME@13..14 + IDENT@13..14 "T" + COLON@14..15 ":" + WHITESPACE@15..16 " " + TYPE_BOUND_LIST@16..39 + TYPE_BOUND@16..39 + PATH_TYPE@16..39 + PATH@16..39 + PATH_SEGMENT@16..39 + NAME_REF@16..24 + IDENT@16..24 "Iterator" + GENERIC_ARG_LIST@24..39 + L_ANGLE@24..25 "<" + ASSOC_TYPE_ARG@25..38 + NAME_REF@25..29 + IDENT@25..29 "Item" + COLON@29..30 ":" + WHITESPACE@30..31 " " + TYPE_BOUND_LIST@31..38 + TYPE_BOUND@31..38 + PATH_TYPE@31..38 + PATH@31..38 + PATH_SEGMENT@31..38 + NAME_REF@31..38 + IDENT@31..38 "Display" + R_ANGLE@38..39 ">" + R_ANGLE@39..40 ">" + PARAM_LIST@40..55 + L_PAREN@40..41 "(" + PARAM@41..54 + IDENT_PAT@41..51 + NAME@41..51 + IDENT@41..51 "printables" + COLON@51..52 ":" + WHITESPACE@52..53 " " + PATH_TYPE@53..54 + PATH@53..54 + PATH_SEGMENT@53..54 + NAME_REF@53..54 + IDENT@53..54 "T" + R_PAREN@54..55 ")" + WHITESPACE@55..56 " " + BLOCK_EXPR@56..58 + L_CURLY@56..57 "{" + R_CURLY@57..58 "}" + WHITESPACE@58..59 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rs b/crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rs new file mode 100644 index 00000000000..eb21a657b90 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0138_associated_type_bounds.rs @@ -0,0 +1 @@ +fn print_all>(printables: T) {} diff --git a/crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rast b/crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rast new file mode 100644 index 00000000000..f7c0e0ab0b7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rast @@ -0,0 +1,64 @@ +SOURCE_FILE@0..52 + FN@0..51 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..51 + L_CURLY@9..10 "{" + WHITESPACE@10..14 "\n " + LET_STMT@14..34 + LET_KW@14..17 "let" + WHITESPACE@17..18 " " + IDENT_PAT@18..23 + MUT_KW@18..21 "mut" + WHITESPACE@21..22 " " + NAME@22..23 + IDENT@22..23 "p" + WHITESPACE@23..24 " " + EQ@24..25 "=" + WHITESPACE@25..26 " " + RECORD_EXPR@26..33 + PATH@26..27 + PATH_SEGMENT@26..27 + NAME_REF@26..27 + IDENT@26..27 "F" + RECORD_EXPR_FIELD_LIST@27..33 + L_CURLY@27..28 "{" + RECORD_EXPR_FIELD@28..32 + NAME_REF@28..29 + IDENT@28..29 "x" + COLON@29..30 ":" + WHITESPACE@30..31 " " + LITERAL@31..32 + INT_NUMBER@31..32 "5" + R_CURLY@32..33 "}" + SEMICOLON@33..34 ";" + WHITESPACE@34..38 "\n " + EXPR_STMT@38..49 + BIN_EXPR@38..48 + FIELD_EXPR@38..43 + BLOCK_EXPR@38..41 + L_CURLY@38..39 "{" + PATH_EXPR@39..40 + PATH@39..40 + PATH_SEGMENT@39..40 + NAME_REF@39..40 + IDENT@39..40 "p" + R_CURLY@40..41 "}" + DOT@41..42 "." + NAME_REF@42..43 + IDENT@42..43 "x" + WHITESPACE@43..44 " " + EQ@44..45 "=" + WHITESPACE@45..46 " " + LITERAL@46..48 + INT_NUMBER@46..48 "10" + SEMICOLON@48..49 ";" + WHITESPACE@49..50 "\n" + R_CURLY@50..51 "}" + WHITESPACE@51..52 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rs b/crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rs new file mode 100644 index 00000000000..76007e3ee77 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0138_expression_after_block.rs @@ -0,0 +1,4 @@ +fn foo() { + let mut p = F{x: 5}; + {p}.x = 10; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast b/crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast new file mode 100644 index 00000000000..6403ff8d5c7 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rast @@ -0,0 +1,25 @@ +SOURCE_FILE@0..26 + FN@0..25 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "f" + PARAM_LIST@4..22 + L_PAREN@4..5 "(" + ATTR@5..16 + POUND@5..6 "#" + L_BRACK@6..7 "[" + PATH@7..15 + PATH_SEGMENT@7..15 + NAME_REF@7..15 + IDENT@7..15 "must_use" + R_BRACK@15..16 "]" + WHITESPACE@16..17 " " + SELF_PARAM@17..21 + SELF_KW@17..21 "self" + R_PAREN@21..22 ")" + WHITESPACE@22..23 " " + BLOCK_EXPR@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs b/crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs new file mode 100644 index 00000000000..35155057a68 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs @@ -0,0 +1 @@ +fn f(#[must_use] self) {} diff --git a/crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast b/crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast new file mode 100644 index 00000000000..495e4c51b58 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rast @@ -0,0 +1,34 @@ +SOURCE_FILE@0..28 + FN@0..27 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "f" + PARAM_LIST@4..24 + L_PAREN@4..5 "(" + ATTR@5..13 + POUND@5..6 "#" + L_BRACK@6..7 "[" + PATH@7..12 + PATH_SEGMENT@7..12 + NAME_REF@7..12 + IDENT@7..12 "attr1" + R_BRACK@12..13 "]" + WHITESPACE@13..14 " " + PARAM@14..23 + IDENT_PAT@14..17 + NAME@14..17 + IDENT@14..17 "pat" + COLON@17..18 ":" + WHITESPACE@18..19 " " + PATH_TYPE@19..23 + PATH@19..23 + PATH_SEGMENT@19..23 + NAME_REF@19..23 + IDENT@19..23 "Type" + R_PAREN@23..24 ")" + WHITESPACE@24..25 " " + BLOCK_EXPR@25..27 + L_CURLY@25..26 "{" + R_CURLY@26..27 "}" + WHITESPACE@27..28 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs b/crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs new file mode 100644 index 00000000000..c238be791bd --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs @@ -0,0 +1 @@ +fn f(#[attr1] pat: Type) {} diff --git a/crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rast b/crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rast new file mode 100644 index 00000000000..36e448c94ee --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rast @@ -0,0 +1,40 @@ +SOURCE_FILE@0..51 + FN@0..50 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..50 + L_CURLY@9..10 "{" + WHITESPACE@10..14 "\n " + FOR_EXPR@14..48 + FOR_KW@14..17 "for" + WHITESPACE@17..18 " " + IDENT_PAT@18..19 + NAME@18..19 + IDENT@18..19 "x" + WHITESPACE@19..20 " " + IN_KW@20..22 "in" + WHITESPACE@22..23 " " + RANGE_EXPR@23..27 + LITERAL@23..24 + INT_NUMBER@23..24 "0" + WHITESPACE@24..25 " " + DOT2@25..27 ".." + WHITESPACE@27..28 " " + BLOCK_EXPR@28..48 + L_CURLY@28..29 "{" + WHITESPACE@29..37 "\n " + EXPR_STMT@37..43 + BREAK_EXPR@37..42 + BREAK_KW@37..42 "break" + SEMICOLON@42..43 ";" + WHITESPACE@43..47 "\n " + R_CURLY@47..48 "}" + WHITESPACE@48..49 "\n" + R_CURLY@49..50 "}" + WHITESPACE@50..51 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rs b/crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rs new file mode 100644 index 00000000000..af0d40a7aa2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0142_for_range_from.rs @@ -0,0 +1,5 @@ +fn foo() { + for x in 0 .. { + break; + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0143_box_pat.rast b/crates/syntax/test_data/parser/inline/ok/0143_box_pat.rast new file mode 100644 index 00000000000..65887b96216 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0143_box_pat.rast @@ -0,0 +1,110 @@ +SOURCE_FILE@0..118 + FN@0..117 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..117 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..31 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + BOX_PAT@20..25 + BOX_KW@20..23 "box" + WHITESPACE@23..24 " " + IDENT_PAT@24..25 + NAME@24..25 + IDENT@24..25 "i" + WHITESPACE@25..26 " " + EQ@26..27 "=" + WHITESPACE@27..28 " " + TUPLE_EXPR@28..30 + L_PAREN@28..29 "(" + R_PAREN@29..30 ")" + SEMICOLON@30..31 ";" + WHITESPACE@31..36 "\n " + LET_STMT@36..87 + LET_KW@36..39 "let" + WHITESPACE@39..40 " " + BOX_PAT@40..81 + BOX_KW@40..43 "box" + WHITESPACE@43..44 " " + RECORD_PAT@44..81 + PATH@44..49 + PATH_SEGMENT@44..49 + NAME_REF@44..49 + IDENT@44..49 "Outer" + WHITESPACE@49..50 " " + RECORD_PAT_FIELD_LIST@50..81 + L_CURLY@50..51 "{" + WHITESPACE@51..52 " " + RECORD_PAT_FIELD@52..57 + BOX_PAT@52..57 + BOX_KW@52..55 "box" + WHITESPACE@55..56 " " + IDENT_PAT@56..57 + NAME@56..57 + IDENT@56..57 "i" + COMMA@57..58 "," + WHITESPACE@58..59 " " + RECORD_PAT_FIELD@59..79 + NAME_REF@59..60 + IDENT@59..60 "j" + COLON@60..61 ":" + WHITESPACE@61..62 " " + BOX_PAT@62..79 + BOX_KW@62..65 "box" + WHITESPACE@65..66 " " + TUPLE_STRUCT_PAT@66..79 + PATH@66..71 + PATH_SEGMENT@66..71 + NAME_REF@66..71 + IDENT@66..71 "Inner" + L_PAREN@71..72 "(" + BOX_PAT@72..78 + BOX_KW@72..75 "box" + WHITESPACE@75..76 " " + REF_PAT@76..78 + AMP@76..77 "&" + IDENT_PAT@77..78 + NAME@77..78 + IDENT@77..78 "x" + R_PAREN@78..79 ")" + WHITESPACE@79..80 " " + R_CURLY@80..81 "}" + WHITESPACE@81..82 " " + EQ@82..83 "=" + WHITESPACE@83..84 " " + TUPLE_EXPR@84..86 + L_PAREN@84..85 "(" + R_PAREN@85..86 ")" + SEMICOLON@86..87 ";" + WHITESPACE@87..92 "\n " + LET_STMT@92..115 + LET_KW@92..95 "let" + WHITESPACE@95..96 " " + BOX_PAT@96..109 + BOX_KW@96..99 "box" + WHITESPACE@99..100 " " + IDENT_PAT@100..109 + REF_KW@100..103 "ref" + WHITESPACE@103..104 " " + MUT_KW@104..107 "mut" + WHITESPACE@107..108 " " + NAME@108..109 + IDENT@108..109 "i" + WHITESPACE@109..110 " " + EQ@110..111 "=" + WHITESPACE@111..112 " " + TUPLE_EXPR@112..114 + L_PAREN@112..113 "(" + R_PAREN@113..114 ")" + SEMICOLON@114..115 ";" + WHITESPACE@115..116 "\n" + R_CURLY@116..117 "}" + WHITESPACE@117..118 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0143_box_pat.rs b/crates/syntax/test_data/parser/inline/ok/0143_box_pat.rs new file mode 100644 index 00000000000..9d458aa1e6b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0143_box_pat.rs @@ -0,0 +1,5 @@ +fn main() { + let box i = (); + let box Outer { box i, j: box Inner(box &x) } = (); + let box ref mut i = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast b/crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast new file mode 100644 index 00000000000..8a5bde0b6af --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rast @@ -0,0 +1,455 @@ +SOURCE_FILE@0..555 + FN@0..554 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..554 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..28 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + REST_PAT@20..22 + DOT2@20..22 ".." + WHITESPACE@22..23 " " + EQ@23..24 "=" + WHITESPACE@24..25 " " + TUPLE_EXPR@25..27 + L_PAREN@25..26 "(" + R_PAREN@26..27 ")" + SEMICOLON@27..28 ";" + WHITESPACE@28..33 "\n " + COMMENT@33..35 "//" + WHITESPACE@35..40 "\n " + COMMENT@40..49 "// Tuples" + WHITESPACE@49..54 "\n " + COMMENT@54..56 "//" + WHITESPACE@56..61 "\n " + LET_STMT@61..78 + LET_KW@61..64 "let" + WHITESPACE@64..65 " " + TUPLE_PAT@65..72 + L_PAREN@65..66 "(" + IDENT_PAT@66..67 + NAME@66..67 + IDENT@66..67 "a" + COMMA@67..68 "," + WHITESPACE@68..69 " " + REST_PAT@69..71 + DOT2@69..71 ".." + R_PAREN@71..72 ")" + WHITESPACE@72..73 " " + EQ@73..74 "=" + WHITESPACE@74..75 " " + TUPLE_EXPR@75..77 + L_PAREN@75..76 "(" + R_PAREN@76..77 ")" + SEMICOLON@77..78 ";" + WHITESPACE@78..83 "\n " + LET_STMT@83..101 + LET_KW@83..86 "let" + WHITESPACE@86..87 " " + TUPLE_PAT@87..95 + L_PAREN@87..88 "(" + IDENT_PAT@88..89 + NAME@88..89 + IDENT@88..89 "a" + COMMA@89..90 "," + WHITESPACE@90..91 " " + REST_PAT@91..93 + DOT2@91..93 ".." + COMMA@93..94 "," + R_PAREN@94..95 ")" + WHITESPACE@95..96 " " + EQ@96..97 "=" + WHITESPACE@97..98 " " + TUPLE_EXPR@98..100 + L_PAREN@98..99 "(" + R_PAREN@99..100 ")" + SEMICOLON@100..101 ";" + WHITESPACE@101..106 "\n " + LET_STMT@106..128 + LET_KW@106..109 "let" + WHITESPACE@109..110 " " + TUPLE_STRUCT_PAT@110..122 + PATH@110..115 + PATH_SEGMENT@110..115 + NAME_REF@110..115 + IDENT@110..115 "Tuple" + L_PAREN@115..116 "(" + IDENT_PAT@116..117 + NAME@116..117 + IDENT@116..117 "a" + COMMA@117..118 "," + WHITESPACE@118..119 " " + REST_PAT@119..121 + DOT2@119..121 ".." + R_PAREN@121..122 ")" + WHITESPACE@122..123 " " + EQ@123..124 "=" + WHITESPACE@124..125 " " + TUPLE_EXPR@125..127 + L_PAREN@125..126 "(" + R_PAREN@126..127 ")" + SEMICOLON@127..128 ";" + WHITESPACE@128..133 "\n " + LET_STMT@133..156 + LET_KW@133..136 "let" + WHITESPACE@136..137 " " + TUPLE_STRUCT_PAT@137..150 + PATH@137..142 + PATH_SEGMENT@137..142 + NAME_REF@137..142 + IDENT@137..142 "Tuple" + L_PAREN@142..143 "(" + IDENT_PAT@143..144 + NAME@143..144 + IDENT@143..144 "a" + COMMA@144..145 "," + WHITESPACE@145..146 " " + REST_PAT@146..148 + DOT2@146..148 ".." + COMMA@148..149 "," + R_PAREN@149..150 ")" + WHITESPACE@150..151 " " + EQ@151..152 "=" + WHITESPACE@152..153 " " + TUPLE_EXPR@153..155 + L_PAREN@153..154 "(" + R_PAREN@154..155 ")" + SEMICOLON@155..156 ";" + WHITESPACE@156..161 "\n " + LET_STMT@161..179 + LET_KW@161..164 "let" + WHITESPACE@164..165 " " + TUPLE_PAT@165..173 + L_PAREN@165..166 "(" + REST_PAT@166..168 + DOT2@166..168 ".." + COMMA@168..169 "," + WHITESPACE@169..170 " " + REST_PAT@170..172 + DOT2@170..172 ".." + R_PAREN@172..173 ")" + WHITESPACE@173..174 " " + EQ@174..175 "=" + WHITESPACE@175..176 " " + TUPLE_EXPR@176..178 + L_PAREN@176..177 "(" + R_PAREN@177..178 ")" + SEMICOLON@178..179 ";" + WHITESPACE@179..184 "\n " + LET_STMT@184..207 + LET_KW@184..187 "let" + WHITESPACE@187..188 " " + TUPLE_STRUCT_PAT@188..201 + PATH@188..193 + PATH_SEGMENT@188..193 + NAME_REF@188..193 + IDENT@188..193 "Tuple" + L_PAREN@193..194 "(" + REST_PAT@194..196 + DOT2@194..196 ".." + COMMA@196..197 "," + WHITESPACE@197..198 " " + REST_PAT@198..200 + DOT2@198..200 ".." + R_PAREN@200..201 ")" + WHITESPACE@201..202 " " + EQ@202..203 "=" + WHITESPACE@203..204 " " + TUPLE_EXPR@204..206 + L_PAREN@204..205 "(" + R_PAREN@205..206 ")" + SEMICOLON@206..207 ";" + WHITESPACE@207..212 "\n " + LET_STMT@212..233 + LET_KW@212..215 "let" + WHITESPACE@215..216 " " + TUPLE_PAT@216..227 + L_PAREN@216..217 "(" + REST_PAT@217..219 + DOT2@217..219 ".." + COMMA@219..220 "," + WHITESPACE@220..221 " " + IDENT_PAT@221..222 + NAME@221..222 + IDENT@221..222 "a" + COMMA@222..223 "," + WHITESPACE@223..224 " " + REST_PAT@224..226 + DOT2@224..226 ".." + R_PAREN@226..227 ")" + WHITESPACE@227..228 " " + EQ@228..229 "=" + WHITESPACE@229..230 " " + TUPLE_EXPR@230..232 + L_PAREN@230..231 "(" + R_PAREN@231..232 ")" + SEMICOLON@232..233 ";" + WHITESPACE@233..238 "\n " + LET_STMT@238..264 + LET_KW@238..241 "let" + WHITESPACE@241..242 " " + TUPLE_STRUCT_PAT@242..258 + PATH@242..247 + PATH_SEGMENT@242..247 + NAME_REF@242..247 + IDENT@242..247 "Tuple" + L_PAREN@247..248 "(" + REST_PAT@248..250 + DOT2@248..250 ".." + COMMA@250..251 "," + WHITESPACE@251..252 " " + IDENT_PAT@252..253 + NAME@252..253 + IDENT@252..253 "a" + COMMA@253..254 "," + WHITESPACE@254..255 " " + REST_PAT@255..257 + DOT2@255..257 ".." + R_PAREN@257..258 ")" + WHITESPACE@258..259 " " + EQ@259..260 "=" + WHITESPACE@260..261 " " + TUPLE_EXPR@261..263 + L_PAREN@261..262 "(" + R_PAREN@262..263 ")" + SEMICOLON@263..264 ";" + WHITESPACE@264..269 "\n " + COMMENT@269..271 "//" + WHITESPACE@271..276 "\n " + COMMENT@276..285 "// Slices" + WHITESPACE@285..290 "\n " + COMMENT@290..292 "//" + WHITESPACE@292..297 "\n " + LET_STMT@297..311 + LET_KW@297..300 "let" + WHITESPACE@300..301 " " + SLICE_PAT@301..305 + L_BRACK@301..302 "[" + REST_PAT@302..304 + DOT2@302..304 ".." + R_BRACK@304..305 "]" + WHITESPACE@305..306 " " + EQ@306..307 "=" + WHITESPACE@307..308 " " + TUPLE_EXPR@308..310 + L_PAREN@308..309 "(" + R_PAREN@309..310 ")" + SEMICOLON@310..311 ";" + WHITESPACE@311..316 "\n " + LET_STMT@316..336 + LET_KW@316..319 "let" + WHITESPACE@319..320 " " + SLICE_PAT@320..330 + L_BRACK@320..321 "[" + IDENT_PAT@321..325 + NAME@321..325 + IDENT@321..325 "head" + COMMA@325..326 "," + WHITESPACE@326..327 " " + REST_PAT@327..329 + DOT2@327..329 ".." + R_BRACK@329..330 "]" + WHITESPACE@330..331 " " + EQ@331..332 "=" + WHITESPACE@332..333 " " + TUPLE_EXPR@333..335 + L_PAREN@333..334 "(" + R_PAREN@334..335 ")" + SEMICOLON@335..336 ";" + WHITESPACE@336..341 "\n " + LET_STMT@341..368 + LET_KW@341..344 "let" + WHITESPACE@344..345 " " + SLICE_PAT@345..362 + L_BRACK@345..346 "[" + IDENT_PAT@346..350 + NAME@346..350 + IDENT@346..350 "head" + COMMA@350..351 "," + WHITESPACE@351..352 " " + IDENT_PAT@352..361 + NAME@352..356 + IDENT@352..356 "tail" + WHITESPACE@356..357 " " + AT@357..358 "@" + WHITESPACE@358..359 " " + REST_PAT@359..361 + DOT2@359..361 ".." + R_BRACK@361..362 "]" + WHITESPACE@362..363 " " + EQ@363..364 "=" + WHITESPACE@364..365 " " + TUPLE_EXPR@365..367 + L_PAREN@365..366 "(" + R_PAREN@366..367 ")" + SEMICOLON@367..368 ";" + WHITESPACE@368..373 "\n " + LET_STMT@373..399 + LET_KW@373..376 "let" + WHITESPACE@376..377 " " + SLICE_PAT@377..393 + L_BRACK@377..378 "[" + IDENT_PAT@378..382 + NAME@378..382 + IDENT@378..382 "head" + COMMA@382..383 "," + WHITESPACE@383..384 " " + REST_PAT@384..386 + DOT2@384..386 ".." + COMMA@386..387 "," + WHITESPACE@387..388 " " + IDENT_PAT@388..392 + NAME@388..392 + IDENT@388..392 "cons" + R_BRACK@392..393 "]" + WHITESPACE@393..394 " " + EQ@394..395 "=" + WHITESPACE@395..396 " " + TUPLE_EXPR@396..398 + L_PAREN@396..397 "(" + R_PAREN@397..398 ")" + SEMICOLON@398..399 ";" + WHITESPACE@399..404 "\n " + LET_STMT@404..436 + LET_KW@404..407 "let" + WHITESPACE@407..408 " " + SLICE_PAT@408..430 + L_BRACK@408..409 "[" + IDENT_PAT@409..413 + NAME@409..413 + IDENT@409..413 "head" + COMMA@413..414 "," + WHITESPACE@414..415 " " + IDENT_PAT@415..423 + NAME@415..418 + IDENT@415..418 "mid" + WHITESPACE@418..419 " " + AT@419..420 "@" + WHITESPACE@420..421 " " + REST_PAT@421..423 + DOT2@421..423 ".." + COMMA@423..424 "," + WHITESPACE@424..425 " " + IDENT_PAT@425..429 + NAME@425..429 + IDENT@425..429 "cons" + R_BRACK@429..430 "]" + WHITESPACE@430..431 " " + EQ@431..432 "=" + WHITESPACE@432..433 " " + TUPLE_EXPR@433..435 + L_PAREN@433..434 "(" + R_PAREN@434..435 ")" + SEMICOLON@435..436 ";" + WHITESPACE@436..441 "\n " + LET_STMT@441..471 + LET_KW@441..444 "let" + WHITESPACE@444..445 " " + SLICE_PAT@445..465 + L_BRACK@445..446 "[" + IDENT_PAT@446..450 + NAME@446..450 + IDENT@446..450 "head" + COMMA@450..451 "," + WHITESPACE@451..452 " " + REST_PAT@452..454 + DOT2@452..454 ".." + COMMA@454..455 "," + WHITESPACE@455..456 " " + REST_PAT@456..458 + DOT2@456..458 ".." + COMMA@458..459 "," + WHITESPACE@459..460 " " + IDENT_PAT@460..464 + NAME@460..464 + IDENT@460..464 "cons" + R_BRACK@464..465 "]" + WHITESPACE@465..466 " " + EQ@466..467 "=" + WHITESPACE@467..468 " " + TUPLE_EXPR@468..470 + L_PAREN@468..469 "(" + R_PAREN@469..470 ")" + SEMICOLON@470..471 ";" + WHITESPACE@471..476 "\n " + LET_STMT@476..512 + LET_KW@476..479 "let" + WHITESPACE@479..480 " " + SLICE_PAT@480..506 + L_BRACK@480..481 "[" + IDENT_PAT@481..485 + NAME@481..485 + IDENT@481..485 "head" + COMMA@485..486 "," + WHITESPACE@486..487 " " + REST_PAT@487..489 + DOT2@487..489 ".." + COMMA@489..490 "," + WHITESPACE@490..491 " " + IDENT_PAT@491..494 + NAME@491..494 + IDENT@491..494 "mid" + COMMA@494..495 "," + WHITESPACE@495..496 " " + IDENT_PAT@496..505 + NAME@496..500 + IDENT@496..500 "tail" + WHITESPACE@500..501 " " + AT@501..502 "@" + WHITESPACE@502..503 " " + REST_PAT@503..505 + DOT2@503..505 ".." + R_BRACK@505..506 "]" + WHITESPACE@506..507 " " + EQ@507..508 "=" + WHITESPACE@508..509 " " + TUPLE_EXPR@509..511 + L_PAREN@509..510 "(" + R_PAREN@510..511 ")" + SEMICOLON@511..512 ";" + WHITESPACE@512..517 "\n " + LET_STMT@517..552 + LET_KW@517..520 "let" + WHITESPACE@520..521 " " + SLICE_PAT@521..546 + L_BRACK@521..522 "[" + IDENT_PAT@522..526 + NAME@522..526 + IDENT@522..526 "head" + COMMA@526..527 "," + WHITESPACE@527..528 " " + REST_PAT@528..530 + DOT2@528..530 ".." + COMMA@530..531 "," + WHITESPACE@531..532 " " + IDENT_PAT@532..535 + NAME@532..535 + IDENT@532..535 "mid" + COMMA@535..536 "," + WHITESPACE@536..537 " " + REST_PAT@537..539 + DOT2@537..539 ".." + COMMA@539..540 "," + WHITESPACE@540..541 " " + IDENT_PAT@541..545 + NAME@541..545 + IDENT@541..545 "cons" + R_BRACK@545..546 "]" + WHITESPACE@546..547 " " + EQ@547..548 "=" + WHITESPACE@548..549 " " + TUPLE_EXPR@549..551 + L_PAREN@549..550 "(" + R_PAREN@550..551 ")" + SEMICOLON@551..552 ";" + WHITESPACE@552..553 "\n" + R_CURLY@553..554 "}" + WHITESPACE@554..555 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rs b/crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rs new file mode 100644 index 00000000000..3262f27e140 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rs @@ -0,0 +1,25 @@ +fn main() { + let .. = (); + // + // Tuples + // + let (a, ..) = (); + let (a, ..,) = (); + let Tuple(a, ..) = (); + let Tuple(a, ..,) = (); + let (.., ..) = (); + let Tuple(.., ..) = (); + let (.., a, ..) = (); + let Tuple(.., a, ..) = (); + // + // Slices + // + let [..] = (); + let [head, ..] = (); + let [head, tail @ ..] = (); + let [head, .., cons] = (); + let [head, mid @ .., cons] = (); + let [head, .., .., cons] = (); + let [head, .., mid, tail @ ..] = (); + let [head, .., mid, .., cons] = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rast b/crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rast new file mode 100644 index 00000000000..925409bdfe3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rast @@ -0,0 +1,75 @@ +SOURCE_FILE@0..63 + FN@0..62 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..62 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..35 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + RECORD_PAT@19..29 + PATH@19..20 + PATH_SEGMENT@19..20 + NAME_REF@19..20 + IDENT@19..20 "S" + WHITESPACE@20..21 " " + RECORD_PAT_FIELD_LIST@21..29 + L_CURLY@21..22 "{" + WHITESPACE@22..23 " " + RECORD_PAT_FIELD@23..27 + NAME_REF@23..24 + INT_NUMBER@23..24 "0" + COLON@24..25 ":" + WHITESPACE@25..26 " " + LITERAL_PAT@26..27 + LITERAL@26..27 + INT_NUMBER@26..27 "1" + WHITESPACE@27..28 " " + R_CURLY@28..29 "}" + WHITESPACE@29..30 " " + EQ@30..31 "=" + WHITESPACE@31..32 " " + TUPLE_EXPR@32..34 + L_PAREN@32..33 "(" + R_PAREN@33..34 ")" + SEMICOLON@34..35 ";" + WHITESPACE@35..40 "\n " + LET_STMT@40..60 + LET_KW@40..43 "let" + WHITESPACE@43..44 " " + RECORD_PAT@44..54 + PATH@44..45 + PATH_SEGMENT@44..45 + NAME_REF@44..45 + IDENT@44..45 "S" + WHITESPACE@45..46 " " + RECORD_PAT_FIELD_LIST@46..54 + L_CURLY@46..47 "{" + WHITESPACE@47..48 " " + RECORD_PAT_FIELD@48..52 + NAME_REF@48..49 + IDENT@48..49 "x" + COLON@49..50 ":" + WHITESPACE@50..51 " " + LITERAL_PAT@51..52 + LITERAL@51..52 + INT_NUMBER@51..52 "1" + WHITESPACE@52..53 " " + R_CURLY@53..54 "}" + WHITESPACE@54..55 " " + EQ@55..56 "=" + WHITESPACE@56..57 " " + TUPLE_EXPR@57..59 + L_PAREN@57..58 "(" + R_PAREN@58..59 ")" + SEMICOLON@59..60 ";" + WHITESPACE@60..61 "\n" + R_CURLY@61..62 "}" + WHITESPACE@62..63 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rs b/crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rs new file mode 100644 index 00000000000..26b1d5f8952 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0145_record_field_pat.rs @@ -0,0 +1,4 @@ +fn foo() { + let S { 0: 1 } = (); + let S { x: 1 } = (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rast b/crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rast new file mode 100644 index 00000000000..a36cc8dab36 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rast @@ -0,0 +1,42 @@ +SOURCE_FILE@0..43 + FN@0..42 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..42 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + LET_STMT@15..40 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + WILDCARD_PAT@19..20 + UNDERSCORE@19..20 "_" + WHITESPACE@20..21 " " + EQ@21..22 "=" + WHITESPACE@22..23 " " + CAST_EXPR@23..39 + REF_EXPR@23..25 + AMP@23..24 "&" + LITERAL@24..25 + INT_NUMBER@24..25 "1" + WHITESPACE@25..26 " " + AS_KW@26..28 "as" + WHITESPACE@28..29 " " + PTR_TYPE@29..39 + STAR@29..30 "*" + CONST_KW@30..35 "const" + WHITESPACE@35..36 " " + PATH_TYPE@36..39 + PATH@36..39 + PATH_SEGMENT@36..39 + NAME_REF@36..39 + IDENT@36..39 "i32" + SEMICOLON@39..40 ";" + WHITESPACE@40..41 "\n" + R_CURLY@41..42 "}" + WHITESPACE@42..43 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rs b/crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rs new file mode 100644 index 00000000000..a06dec1faf3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0146_as_precedence.rs @@ -0,0 +1,3 @@ +fn foo() { + let _ = &1 as *const i32; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0147_const_param.rast b/crates/syntax/test_data/parser/inline/ok/0147_const_param.rast new file mode 100644 index 00000000000..9312eab65e4 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0147_const_param.rast @@ -0,0 +1,23 @@ +SOURCE_FILE@0..24 + STRUCT@0..23 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + GENERIC_PARAM_LIST@8..22 + L_ANGLE@8..9 "<" + CONST_PARAM@9..21 + CONST_KW@9..14 "const" + WHITESPACE@14..15 " " + NAME@15..16 + IDENT@15..16 "N" + COLON@16..17 ":" + WHITESPACE@17..18 " " + PATH_TYPE@18..21 + PATH@18..21 + PATH_SEGMENT@18..21 + NAME_REF@18..21 + IDENT@18..21 "u32" + R_ANGLE@21..22 ">" + SEMICOLON@22..23 ";" + WHITESPACE@23..24 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0147_const_param.rs b/crates/syntax/test_data/parser/inline/ok/0147_const_param.rs new file mode 100644 index 00000000000..8cdb3b70367 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0147_const_param.rs @@ -0,0 +1 @@ +struct S; diff --git a/crates/syntax/test_data/parser/inline/ok/0147_macro_def.rast b/crates/syntax/test_data/parser/inline/ok/0147_macro_def.rast new file mode 100644 index 00000000000..6655aeab139 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0147_macro_def.rast @@ -0,0 +1,45 @@ +SOURCE_FILE@0..50 + MACRO_DEF@0..28 + MACRO_KW@0..5 "macro" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "m" + WHITESPACE@7..8 " " + TOKEN_TREE@8..28 + L_CURLY@8..9 "{" + WHITESPACE@9..10 " " + TOKEN_TREE@10..20 + L_PAREN@10..11 "(" + DOLLAR@11..12 "$" + IDENT@12..13 "i" + COLON@13..14 ":" + IDENT@14..19 "ident" + R_PAREN@19..20 ")" + WHITESPACE@20..21 " " + EQ@21..22 "=" + R_ANGLE@22..23 ">" + WHITESPACE@23..24 " " + TOKEN_TREE@24..26 + L_CURLY@24..25 "{" + R_CURLY@25..26 "}" + WHITESPACE@26..27 " " + R_CURLY@27..28 "}" + WHITESPACE@28..29 "\n" + MACRO_DEF@29..49 + MACRO_KW@29..34 "macro" + WHITESPACE@34..35 " " + NAME@35..36 + IDENT@35..36 "m" + TOKEN_TREE@36..49 + TOKEN_TREE@36..46 + L_PAREN@36..37 "(" + DOLLAR@37..38 "$" + IDENT@38..39 "i" + COLON@39..40 ":" + IDENT@40..45 "ident" + R_PAREN@45..46 ")" + WHITESPACE@46..47 " " + TOKEN_TREE@47..49 + L_CURLY@47..48 "{" + R_CURLY@48..49 "}" + WHITESPACE@49..50 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0147_macro_def.rs b/crates/syntax/test_data/parser/inline/ok/0147_macro_def.rs new file mode 100644 index 00000000000..319a4e2aad2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0147_macro_def.rs @@ -0,0 +1,2 @@ +macro m { ($i:ident) => {} } +macro m($i:ident) {} diff --git a/crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast b/crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast new file mode 100644 index 00000000000..1c527f60b9c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rast @@ -0,0 +1,21 @@ +SOURCE_FILE@0..24 + MACRO_DEF@0..23 + VISIBILITY@0..3 + PUB_KW@0..3 "pub" + WHITESPACE@3..4 " " + MACRO_KW@4..9 "macro" + WHITESPACE@9..10 " " + NAME@10..11 + IDENT@10..11 "m" + TOKEN_TREE@11..23 + TOKEN_TREE@11..20 + L_PAREN@11..12 "(" + DOLLAR@12..13 "$" + COLON@13..14 ":" + IDENT@14..19 "ident" + R_PAREN@19..20 ")" + WHITESPACE@20..21 " " + TOKEN_TREE@21..23 + L_CURLY@21..22 "{" + R_CURLY@22..23 "}" + WHITESPACE@23..24 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rs b/crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rs new file mode 100644 index 00000000000..3b2be597fd8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0148_pub_macro_def.rs @@ -0,0 +1 @@ +pub macro m($:ident) {} diff --git a/crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rast b/crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rast new file mode 100644 index 00000000000..f284aafcdfd --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rast @@ -0,0 +1,47 @@ +SOURCE_FILE@0..40 + CONST@0..39 + CONST_KW@0..5 "const" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "A" + COLON@7..8 ":" + WHITESPACE@8..9 " " + REF_TYPE@9..15 + AMP@9..10 "&" + SLICE_TYPE@10..15 + L_BRACK@10..11 "[" + PATH_TYPE@11..14 + PATH@11..14 + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "i64" + R_BRACK@14..15 "]" + WHITESPACE@15..16 " " + EQ@16..17 "=" + WHITESPACE@17..18 " " + REF_EXPR@18..38 + AMP@18..19 "&" + ARRAY_EXPR@19..38 + L_BRACK@19..20 "[" + LITERAL@20..21 + INT_NUMBER@20..21 "1" + COMMA@21..22 "," + WHITESPACE@22..23 " " + LITERAL@23..37 + ATTR@23..35 + POUND@23..24 "#" + L_BRACK@24..25 "[" + PATH@25..28 + PATH_SEGMENT@25..28 + NAME_REF@25..28 + IDENT@25..28 "cfg" + TOKEN_TREE@28..34 + L_PAREN@28..29 "(" + IDENT@29..33 "test" + R_PAREN@33..34 ")" + R_BRACK@34..35 "]" + WHITESPACE@35..36 " " + INT_NUMBER@36..37 "2" + R_BRACK@37..38 "]" + SEMICOLON@38..39 ";" + WHITESPACE@39..40 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rs b/crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rs new file mode 100644 index 00000000000..2ac310924fd --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0150_array_attrs.rs @@ -0,0 +1 @@ +const A: &[i64] = &[1, #[cfg(test)] 2]; diff --git a/crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rast b/crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rast new file mode 100644 index 00000000000..12194abdafe --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rast @@ -0,0 +1,38 @@ +SOURCE_FILE@0..29 + IMPL@0..28 + IMPL_KW@0..4 "impl" + GENERIC_PARAM_LIST@4..18 + L_ANGLE@4..5 "<" + CONST_PARAM@5..17 + CONST_KW@5..10 "const" + WHITESPACE@10..11 " " + NAME@11..12 + IDENT@11..12 "N" + COLON@12..13 ":" + WHITESPACE@13..14 " " + PATH_TYPE@14..17 + PATH@14..17 + PATH_SEGMENT@14..17 + NAME_REF@14..17 + IDENT@14..17 "u32" + R_ANGLE@17..18 ">" + WHITESPACE@18..19 " " + PATH_TYPE@19..25 + PATH@19..25 + PATH_SEGMENT@19..25 + NAME_REF@19..22 + IDENT@19..22 "Bar" + GENERIC_ARG_LIST@22..25 + L_ANGLE@22..23 "<" + TYPE_ARG@23..24 + PATH_TYPE@23..24 + PATH@23..24 + PATH_SEGMENT@23..24 + NAME_REF@23..24 + IDENT@23..24 "N" + R_ANGLE@24..25 ">" + WHITESPACE@25..26 " " + ASSOC_ITEM_LIST@26..28 + L_CURLY@26..27 "{" + R_CURLY@27..28 "}" + WHITESPACE@28..29 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rs b/crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rs new file mode 100644 index 00000000000..cb0a105c29f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0150_impl_type_params.rs @@ -0,0 +1 @@ +impl Bar {} diff --git a/crates/syntax/test_data/parser/inline/ok/0151_fn.rast b/crates/syntax/test_data/parser/inline/ok/0151_fn.rast new file mode 100644 index 00000000000..23c4269b306 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0151_fn.rast @@ -0,0 +1,14 @@ +SOURCE_FILE@0..12 + FN@0..11 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..11 + L_CURLY@9..10 "{" + R_CURLY@10..11 "}" + WHITESPACE@11..12 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0151_fn.rs b/crates/syntax/test_data/parser/inline/ok/0151_fn.rs new file mode 100644 index 00000000000..8f3b7ef112a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0151_fn.rs @@ -0,0 +1 @@ +fn foo() {} diff --git a/crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rast b/crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rast new file mode 100644 index 00000000000..dac50410e42 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rast @@ -0,0 +1,128 @@ +SOURCE_FILE@0..83 + TRAIT@0..18 + TRAIT_KW@0..5 "trait" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "Z" + GENERIC_PARAM_LIST@7..10 + L_ANGLE@7..8 "<" + TYPE_PARAM@8..9 + NAME@8..9 + IDENT@8..9 "U" + R_ANGLE@9..10 ">" + WHITESPACE@10..11 " " + EQ@11..12 "=" + WHITESPACE@12..13 " " + TYPE_BOUND_LIST@13..17 + TYPE_BOUND@13..17 + PATH_TYPE@13..17 + PATH@13..17 + PATH_SEGMENT@13..17 + NAME_REF@13..14 + IDENT@13..14 "T" + GENERIC_ARG_LIST@14..17 + L_ANGLE@14..15 "<" + TYPE_ARG@15..16 + PATH_TYPE@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "U" + R_ANGLE@16..17 ">" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" + TRAIT@19..51 + TRAIT_KW@19..24 "trait" + WHITESPACE@24..25 " " + NAME@25..26 + IDENT@25..26 "Z" + GENERIC_PARAM_LIST@26..29 + L_ANGLE@26..27 "<" + TYPE_PARAM@27..28 + NAME@27..28 + IDENT@27..28 "U" + R_ANGLE@28..29 ">" + WHITESPACE@29..30 " " + EQ@30..31 "=" + WHITESPACE@31..32 " " + TYPE_BOUND_LIST@32..36 + TYPE_BOUND@32..36 + PATH_TYPE@32..36 + PATH@32..36 + PATH_SEGMENT@32..36 + NAME_REF@32..33 + IDENT@32..33 "T" + GENERIC_ARG_LIST@33..36 + L_ANGLE@33..34 "<" + TYPE_ARG@34..35 + PATH_TYPE@34..35 + PATH@34..35 + PATH_SEGMENT@34..35 + NAME_REF@34..35 + IDENT@34..35 "U" + R_ANGLE@35..36 ">" + WHITESPACE@36..37 " " + WHERE_CLAUSE@37..50 + WHERE_KW@37..42 "where" + WHITESPACE@42..43 " " + WHERE_PRED@43..50 + PATH_TYPE@43..44 + PATH@43..44 + PATH_SEGMENT@43..44 + NAME_REF@43..44 + IDENT@43..44 "U" + COLON@44..45 ":" + WHITESPACE@45..46 " " + TYPE_BOUND_LIST@46..50 + TYPE_BOUND@46..50 + PATH_TYPE@46..50 + PATH@46..50 + PATH_SEGMENT@46..50 + NAME_REF@46..50 + IDENT@46..50 "Copy" + SEMICOLON@50..51 ";" + WHITESPACE@51..52 "\n" + TRAIT@52..82 + TRAIT_KW@52..57 "trait" + WHITESPACE@57..58 " " + NAME@58..59 + IDENT@58..59 "Z" + GENERIC_PARAM_LIST@59..62 + L_ANGLE@59..60 "<" + TYPE_PARAM@60..61 + NAME@60..61 + IDENT@60..61 "U" + R_ANGLE@61..62 ">" + WHITESPACE@62..63 " " + EQ@63..64 "=" + WHITESPACE@64..65 " " + TYPE_BOUND_LIST@65..65 + WHERE_CLAUSE@65..81 + WHERE_KW@65..70 "where" + WHITESPACE@70..71 " " + WHERE_PRED@71..81 + PATH_TYPE@71..75 + PATH@71..75 + PATH_SEGMENT@71..75 + NAME_REF@71..75 + IDENT@71..75 "Self" + COLON@75..76 ":" + WHITESPACE@76..77 " " + TYPE_BOUND_LIST@77..81 + TYPE_BOUND@77..81 + PATH_TYPE@77..81 + PATH@77..81 + PATH_SEGMENT@77..81 + NAME_REF@77..78 + IDENT@77..78 "T" + GENERIC_ARG_LIST@78..81 + L_ANGLE@78..79 "<" + TYPE_ARG@79..80 + PATH_TYPE@79..80 + PATH@79..80 + PATH_SEGMENT@79..80 + NAME_REF@79..80 + IDENT@79..80 "U" + R_ANGLE@80..81 ">" + SEMICOLON@81..82 ";" + WHITESPACE@82..83 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rs b/crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rs new file mode 100644 index 00000000000..4bd428ee469 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0151_trait_alias.rs @@ -0,0 +1,3 @@ +trait Z = T; +trait Z = T where U: Copy; +trait Z = where Self: T; diff --git a/crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast b/crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast new file mode 100644 index 00000000000..2905c5f1a5d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rast @@ -0,0 +1,36 @@ +SOURCE_FILE@0..34 + FN@0..33 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..33 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + CALL_EXPR@16..31 + PATH_EXPR@16..19 + PATH@16..19 + PATH_SEGMENT@16..19 + NAME_REF@16..19 + IDENT@16..19 "foo" + ARG_LIST@19..31 + L_PAREN@19..20 "(" + LITERAL@20..30 + ATTR@20..27 + POUND@20..21 "#" + L_BRACK@21..22 "[" + PATH@22..26 + PATH_SEGMENT@22..26 + NAME_REF@22..26 + IDENT@22..26 "attr" + R_BRACK@26..27 "]" + WHITESPACE@27..28 " " + INT_NUMBER@28..30 "92" + R_PAREN@30..31 ")" + WHITESPACE@31..32 "\n" + R_CURLY@32..33 "}" + WHITESPACE@33..34 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rs b/crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rs new file mode 100644 index 00000000000..5daf1d7b0be --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0152_arg_with_attr.rs @@ -0,0 +1,3 @@ +fn main() { + foo(#[attr] 92) +} diff --git a/crates/syntax/test_data/parser/inline/ok/0152_impl.rast b/crates/syntax/test_data/parser/inline/ok/0152_impl.rast new file mode 100644 index 00000000000..7968cf9ffa0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0152_impl.rast @@ -0,0 +1,22 @@ +SOURCE_FILE@0..16 + IMPL@0..15 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "T" + WHITESPACE@6..7 " " + FOR_KW@7..10 "for" + WHITESPACE@10..11 " " + PATH_TYPE@11..12 + PATH@11..12 + PATH_SEGMENT@11..12 + NAME_REF@11..12 + IDENT@11..12 "S" + WHITESPACE@12..13 " " + ASSOC_ITEM_LIST@13..15 + L_CURLY@13..14 "{" + R_CURLY@14..15 "}" + WHITESPACE@15..16 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0152_impl.rs b/crates/syntax/test_data/parser/inline/ok/0152_impl.rs new file mode 100644 index 00000000000..a1a550d8a60 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0152_impl.rs @@ -0,0 +1 @@ +impl T for S {} diff --git a/crates/syntax/test_data/parser/inline/ok/0153_trait.rast b/crates/syntax/test_data/parser/inline/ok/0153_trait.rast new file mode 100644 index 00000000000..9881e5048c8 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0153_trait.rast @@ -0,0 +1,11 @@ +SOURCE_FILE@0..11 + TRAIT@0..10 + TRAIT_KW@0..5 "trait" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "T" + WHITESPACE@7..8 " " + ASSOC_ITEM_LIST@8..10 + L_CURLY@8..9 "{" + R_CURLY@9..10 "}" + WHITESPACE@10..11 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0153_trait.rs b/crates/syntax/test_data/parser/inline/ok/0153_trait.rs new file mode 100644 index 00000000000..8d183dbb5d3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0153_trait.rs @@ -0,0 +1 @@ +trait T {} diff --git a/crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast b/crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast new file mode 100644 index 00000000000..e6aff7b3735 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rast @@ -0,0 +1,58 @@ +SOURCE_FILE@0..55 + TYPE_ALIAS@0..24 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..8 + IDENT@5..8 "Foo" + WHITESPACE@8..9 " " + EQ@9..10 "=" + WHITESPACE@10..11 " " + FN_PTR_TYPE@11..23 + FN_KW@11..13 "fn" + PARAM_LIST@13..23 + L_PAREN@13..14 "(" + PARAM@14..22 + PATH_TYPE@14..22 + PATH@14..22 + PATH@14..17 + PATH_SEGMENT@14..17 + NAME_REF@14..17 + IDENT@14..17 "Bar" + COLON2@17..19 "::" + PATH_SEGMENT@19..22 + NAME_REF@19..22 + IDENT@19..22 "Baz" + R_PAREN@22..23 ")" + SEMICOLON@23..24 ";" + WHITESPACE@24..25 "\n" + TYPE_ALIAS@25..54 + TYPE_KW@25..29 "type" + WHITESPACE@29..30 " " + NAME@30..33 + IDENT@30..33 "Qux" + WHITESPACE@33..34 " " + EQ@34..35 "=" + WHITESPACE@35..36 " " + FN_PTR_TYPE@36..53 + FN_KW@36..38 "fn" + PARAM_LIST@38..53 + L_PAREN@38..39 "(" + PARAM@39..52 + IDENT_PAT@39..42 + NAME@39..42 + IDENT@39..42 "baz" + COLON@42..43 ":" + WHITESPACE@43..44 " " + PATH_TYPE@44..52 + PATH@44..52 + PATH@44..47 + PATH_SEGMENT@44..47 + NAME_REF@44..47 + IDENT@44..47 "Bar" + COLON2@47..49 "::" + PATH_SEGMENT@49..52 + NAME_REF@49..52 + IDENT@49..52 "Baz" + R_PAREN@52..53 ")" + SEMICOLON@53..54 ";" + WHITESPACE@54..55 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rs b/crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rs new file mode 100644 index 00000000000..80a1701fd66 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0154_fn_pointer_param_ident_path.rs @@ -0,0 +1,2 @@ +type Foo = fn(Bar::Baz); +type Qux = fn(baz: Bar::Baz); diff --git a/crates/syntax/test_data/parser/inline/ok/0155_closure_params.rast b/crates/syntax/test_data/parser/inline/ok/0155_closure_params.rast new file mode 100644 index 00000000000..31671b42018 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0155_closure_params.rast @@ -0,0 +1,69 @@ +SOURCE_FILE@0..63 + FN@0..62 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..62 + L_CURLY@10..11 "{" + WHITESPACE@11..15 "\n " + LET_STMT@15..60 + LET_KW@15..18 "let" + WHITESPACE@18..19 " " + IDENT_PAT@19..22 + NAME@19..22 + IDENT@19..22 "foo" + WHITESPACE@22..23 " " + EQ@23..24 "=" + WHITESPACE@24..25 " " + CLOSURE_EXPR@25..59 + PARAM_LIST@25..56 + PIPE@25..26 "|" + PARAM@26..29 + IDENT_PAT@26..29 + NAME@26..29 + IDENT@26..29 "bar" + COMMA@29..30 "," + WHITESPACE@30..31 " " + PARAM@31..39 + IDENT_PAT@31..34 + NAME@31..34 + IDENT@31..34 "baz" + COLON@34..35 ":" + WHITESPACE@35..36 " " + PATH_TYPE@36..39 + PATH@36..39 + PATH_SEGMENT@36..39 + NAME_REF@36..39 + IDENT@36..39 "Baz" + COMMA@39..40 "," + WHITESPACE@40..41 " " + PARAM@41..55 + IDENT_PAT@41..44 + NAME@41..44 + IDENT@41..44 "qux" + COLON@44..45 ":" + WHITESPACE@45..46 " " + PATH_TYPE@46..55 + PATH@46..55 + PATH@46..49 + PATH_SEGMENT@46..49 + NAME_REF@46..49 + IDENT@46..49 "Qux" + COLON2@49..51 "::" + PATH_SEGMENT@51..55 + NAME_REF@51..55 + IDENT@51..55 "Quux" + PIPE@55..56 "|" + WHITESPACE@56..57 " " + TUPLE_EXPR@57..59 + L_PAREN@57..58 "(" + R_PAREN@58..59 ")" + SEMICOLON@59..60 ";" + WHITESPACE@60..61 "\n" + R_CURLY@61..62 "}" + WHITESPACE@62..63 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0155_closure_params.rs b/crates/syntax/test_data/parser/inline/ok/0155_closure_params.rs new file mode 100644 index 00000000000..6ca8dd2d6a9 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0155_closure_params.rs @@ -0,0 +1,3 @@ +fn main() { + let foo = |bar, baz: Baz, qux: Qux::Quux| (); +} diff --git a/crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rast b/crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rast new file mode 100644 index 00000000000..508b4aca7d2 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rast @@ -0,0 +1,43 @@ +SOURCE_FILE@0..30 + FN@0..29 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..26 + L_PAREN@6..7 "(" + PARAM@7..25 + TUPLE_PAT@7..13 + L_PAREN@7..8 "(" + IDENT_PAT@8..9 + NAME@8..9 + IDENT@8..9 "x" + COMMA@9..10 "," + WHITESPACE@10..11 " " + IDENT_PAT@11..12 + NAME@11..12 + IDENT@11..12 "y" + R_PAREN@12..13 ")" + COLON@13..14 ":" + WHITESPACE@14..15 " " + TUPLE_TYPE@15..25 + L_PAREN@15..16 "(" + PATH_TYPE@16..19 + PATH@16..19 + PATH_SEGMENT@16..19 + NAME_REF@16..19 + IDENT@16..19 "i32" + COMMA@19..20 "," + WHITESPACE@20..21 " " + PATH_TYPE@21..24 + PATH@21..24 + PATH_SEGMENT@21..24 + NAME_REF@21..24 + IDENT@21..24 "i32" + R_PAREN@24..25 ")" + R_PAREN@25..26 ")" + WHITESPACE@26..27 " " + BLOCK_EXPR@27..29 + L_CURLY@27..28 "{" + R_CURLY@28..29 "}" + WHITESPACE@29..30 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rs b/crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rs new file mode 100644 index 00000000000..7b277c16b15 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0156_fn_def_param.rs @@ -0,0 +1 @@ +fn foo((x, y): (i32, i32)) {} diff --git a/crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rast b/crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rast new file mode 100644 index 00000000000..88a513cee26 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rast @@ -0,0 +1,111 @@ +SOURCE_FILE@0..130 + FN@0..129 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..129 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + MATCH_EXPR@16..127 + MATCH_KW@16..21 "match" + WHITESPACE@21..22 " " + TUPLE_EXPR@22..24 + L_PAREN@22..23 "(" + R_PAREN@23..24 ")" + WHITESPACE@24..25 " " + MATCH_ARM_LIST@25..127 + L_CURLY@25..26 "{" + WHITESPACE@26..35 "\n " + MATCH_ARM@35..48 + PAREN_PAT@35..42 + L_PAREN@35..36 "(" + OR_PAT@36..41 + WILDCARD_PAT@36..37 + UNDERSCORE@36..37 "_" + WHITESPACE@37..38 " " + PIPE@38..39 "|" + WHITESPACE@39..40 " " + WILDCARD_PAT@40..41 + UNDERSCORE@40..41 "_" + R_PAREN@41..42 ")" + WHITESPACE@42..43 " " + FAT_ARROW@43..45 "=>" + WHITESPACE@45..46 " " + TUPLE_EXPR@46..48 + L_PAREN@46..47 "(" + R_PAREN@47..48 ")" + COMMA@48..49 "," + WHITESPACE@49..58 "\n " + MATCH_ARM@58..72 + REF_PAT@58..66 + AMP@58..59 "&" + PAREN_PAT@59..66 + L_PAREN@59..60 "(" + OR_PAT@60..65 + WILDCARD_PAT@60..61 + UNDERSCORE@60..61 "_" + WHITESPACE@61..62 " " + PIPE@62..63 "|" + WHITESPACE@63..64 " " + WILDCARD_PAT@64..65 + UNDERSCORE@64..65 "_" + R_PAREN@65..66 ")" + WHITESPACE@66..67 " " + FAT_ARROW@67..69 "=>" + WHITESPACE@69..70 " " + TUPLE_EXPR@70..72 + L_PAREN@70..71 "(" + R_PAREN@71..72 ")" + COMMA@72..73 "," + WHITESPACE@73..82 "\n " + MATCH_ARM@82..96 + TUPLE_PAT@82..90 + L_PAREN@82..83 "(" + OR_PAT@83..88 + WILDCARD_PAT@83..84 + UNDERSCORE@83..84 "_" + WHITESPACE@84..85 " " + PIPE@85..86 "|" + WHITESPACE@86..87 " " + WILDCARD_PAT@87..88 + UNDERSCORE@87..88 "_" + COMMA@88..89 "," + R_PAREN@89..90 ")" + WHITESPACE@90..91 " " + FAT_ARROW@91..93 "=>" + WHITESPACE@93..94 " " + TUPLE_EXPR@94..96 + L_PAREN@94..95 "(" + R_PAREN@95..96 ")" + COMMA@96..97 "," + WHITESPACE@97..106 "\n " + MATCH_ARM@106..120 + SLICE_PAT@106..114 + L_BRACK@106..107 "[" + OR_PAT@107..112 + WILDCARD_PAT@107..108 + UNDERSCORE@107..108 "_" + WHITESPACE@108..109 " " + PIPE@109..110 "|" + WHITESPACE@110..111 " " + WILDCARD_PAT@111..112 + UNDERSCORE@111..112 "_" + COMMA@112..113 "," + R_BRACK@113..114 "]" + WHITESPACE@114..115 " " + FAT_ARROW@115..117 "=>" + WHITESPACE@117..118 " " + TUPLE_EXPR@118..120 + L_PAREN@118..119 "(" + R_PAREN@119..120 ")" + COMMA@120..121 "," + WHITESPACE@121..126 "\n " + R_CURLY@126..127 "}" + WHITESPACE@127..128 "\n" + R_CURLY@128..129 "}" + WHITESPACE@129..130 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rs b/crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rs new file mode 100644 index 00000000000..a2631660550 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0156_or_pattern.rs @@ -0,0 +1,8 @@ +fn main() { + match () { + (_ | _) => (), + &(_ | _) => (), + (_ | _,) => (), + [_ | _,] => (), + } +} diff --git a/crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast b/crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast new file mode 100644 index 00000000000..6abb4fe5ac4 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rast @@ -0,0 +1,26 @@ +SOURCE_FILE@0..23 + TYPE_ALIAS@0..22 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..8 + IDENT@5..8 "Foo" + WHITESPACE@8..9 " " + EQ@9..10 "=" + WHITESPACE@10..11 " " + FN_PTR_TYPE@11..21 + FN_KW@11..13 "fn" + PARAM_LIST@13..21 + L_PAREN@13..14 "(" + PARAM@14..20 + WILDCARD_PAT@14..15 + UNDERSCORE@14..15 "_" + COLON@15..16 ":" + WHITESPACE@16..17 " " + PATH_TYPE@17..20 + PATH@17..20 + PATH_SEGMENT@17..20 + NAME_REF@17..20 + IDENT@17..20 "bar" + R_PAREN@20..21 ")" + SEMICOLON@21..22 ";" + WHITESPACE@22..23 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rs b/crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rs new file mode 100644 index 00000000000..1ebbe5b0355 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0157_fn_pointer_unnamed_arg.rs @@ -0,0 +1 @@ +type Foo = fn(_: bar); diff --git a/crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast b/crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast new file mode 100644 index 00000000000..a2e05eb2e2a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rast @@ -0,0 +1,30 @@ +SOURCE_FILE@0..23 + ENUM@0..22 + ENUM_KW@0..4 "enum" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "E" + WHITESPACE@6..7 " " + VARIANT_LIST@7..22 + L_CURLY@7..8 "{" + WHITESPACE@8..9 " " + VARIANT@9..20 + NAME@9..10 + IDENT@9..10 "X" + TUPLE_FIELD_LIST@10..15 + L_PAREN@10..11 "(" + TUPLE_FIELD@11..14 + PATH_TYPE@11..14 + PATH@11..14 + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "i32" + R_PAREN@14..15 ")" + WHITESPACE@15..16 " " + EQ@16..17 "=" + WHITESPACE@17..18 " " + LITERAL@18..20 + INT_NUMBER@18..20 "10" + WHITESPACE@20..21 " " + R_CURLY@21..22 "}" + WHITESPACE@22..23 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rs b/crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rs new file mode 100644 index 00000000000..c8c5c0f174e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0157_variant_discriminant.rs @@ -0,0 +1 @@ +enum E { X(i32) = 10 } diff --git a/crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast b/crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast new file mode 100644 index 00000000000..8ae24b9c101 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rast @@ -0,0 +1,36 @@ +SOURCE_FILE@0..28 + FN@0..27 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..27 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..25 + BIN_EXPR@15..24 + PATH_EXPR@15..16 + PATH@15..16 + PATH_SEGMENT@15..16 + NAME_REF@15..16 + IDENT@15..16 "v" + WHITESPACE@16..17 " " + EQ@17..18 "=" + WHITESPACE@18..19 " " + BIN_EXPR@19..24 + BLOCK_EXPR@19..22 + L_CURLY@19..20 "{" + LITERAL@20..21 + INT_NUMBER@20..21 "1" + R_CURLY@21..22 "}" + AMP@22..23 "&" + LITERAL@23..24 + INT_NUMBER@23..24 "2" + SEMICOLON@24..25 ";" + WHITESPACE@25..26 "\n" + R_CURLY@26..27 "}" + WHITESPACE@27..28 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rs b/crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rs new file mode 100644 index 00000000000..05acc30f126 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0158_binop_resets_statementness.rs @@ -0,0 +1,3 @@ +fn foo() { + v = {1}&2; +} diff --git a/crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast b/crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast new file mode 100644 index 00000000000..aa4099a9293 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rast @@ -0,0 +1,43 @@ +SOURCE_FILE@0..34 + FN@0..33 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..33 + L_CURLY@10..11 "{" + WHITESPACE@11..12 " " + EXPR_STMT@12..31 + CALL_EXPR@12..30 + CLOSURE_EXPR@12..28 + PARAM_LIST@12..14 + PIPE@12..13 "|" + PIPE@13..14 "|" + WHITESPACE@14..15 " " + RET_TYPE@15..21 + THIN_ARROW@15..17 "->" + WHITESPACE@17..18 " " + PATH_TYPE@18..21 + PATH@18..21 + PATH_SEGMENT@18..21 + NAME_REF@18..21 + IDENT@18..21 "i32" + WHITESPACE@21..22 " " + BLOCK_EXPR@22..28 + L_CURLY@22..23 "{" + WHITESPACE@23..24 " " + LITERAL@24..26 + INT_NUMBER@24..26 "92" + WHITESPACE@26..27 " " + R_CURLY@27..28 "}" + ARG_LIST@28..30 + L_PAREN@28..29 "(" + R_PAREN@29..30 ")" + SEMICOLON@30..31 ";" + WHITESPACE@31..32 " " + R_CURLY@32..33 "}" + WHITESPACE@33..34 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rs b/crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rs new file mode 100644 index 00000000000..061118d3aab --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0158_lambda_ret_block.rs @@ -0,0 +1 @@ +fn main() { || -> i32 { 92 }(); } diff --git a/crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast b/crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast new file mode 100644 index 00000000000..fb46d4ce401 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast @@ -0,0 +1,34 @@ +SOURCE_FILE@0..27 + FN@0..26 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..26 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + EXPR_STMT@11..24 + MACRO_CALL@11..23 + PATH@11..14 + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "try" + BANG@14..15 "!" + TOKEN_TREE@15..23 + L_PAREN@15..16 "(" + IDENT@16..18 "Ok" + TOKEN_TREE@18..22 + L_PAREN@18..19 "(" + TOKEN_TREE@19..21 + L_PAREN@19..20 "(" + R_PAREN@20..21 ")" + R_PAREN@21..22 ")" + R_PAREN@22..23 ")" + SEMICOLON@23..24 ";" + WHITESPACE@24..25 " " + R_CURLY@25..26 "}" + WHITESPACE@26..27 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs b/crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs new file mode 100644 index 00000000000..61a6b46a0b3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs @@ -0,0 +1 @@ +fn foo() { try!(Ok(())); } diff --git a/crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast b/crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast new file mode 100644 index 00000000000..05b89d1c369 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast @@ -0,0 +1,27 @@ +SOURCE_FILE@0..30 + MACRO_CALL@0..29 + PATH@0..11 + PATH_SEGMENT@0..11 + NAME_REF@0..11 + IDENT@0..11 "macro_rules" + BANG@11..12 "!" + WHITESPACE@12..13 " " + NAME@13..16 + IDENT@13..16 "try" + WHITESPACE@16..17 " " + TOKEN_TREE@17..29 + L_CURLY@17..18 "{" + WHITESPACE@18..19 " " + TOKEN_TREE@19..21 + L_PAREN@19..20 "(" + R_PAREN@20..21 ")" + WHITESPACE@21..22 " " + EQ@22..23 "=" + R_ANGLE@23..24 ">" + WHITESPACE@24..25 " " + TOKEN_TREE@25..27 + L_CURLY@25..26 "{" + R_CURLY@26..27 "}" + WHITESPACE@27..28 " " + R_CURLY@28..29 "}" + WHITESPACE@29..30 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs b/crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs new file mode 100644 index 00000000000..2e2ab6e60b6 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs @@ -0,0 +1 @@ +macro_rules! try { () => {} } diff --git a/crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rast b/crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rast new file mode 100644 index 00000000000..9e9a5f9c5b5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rast @@ -0,0 +1,26 @@ +SOURCE_FILE@0..23 + FN@0..22 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "f" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + BLOCK_EXPR@7..22 + L_CURLY@7..8 "{" + WHITESPACE@8..9 " " + EXPR_STMT@9..20 + EFFECT_EXPR@9..19 + LABEL@9..16 + LIFETIME@9..15 "\'label" + COLON@15..16 ":" + WHITESPACE@16..17 " " + BLOCK_EXPR@17..19 + L_CURLY@17..18 "{" + R_CURLY@18..19 "}" + SEMICOLON@19..20 ";" + WHITESPACE@20..21 " " + R_CURLY@21..22 "}" + WHITESPACE@22..23 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rs b/crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rs new file mode 100644 index 00000000000..18b4ff4b1ba --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0161_labeled_block.rs @@ -0,0 +1 @@ +fn f() { 'label: {}; } diff --git a/crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rast b/crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rast new file mode 100644 index 00000000000..ca9a1183d6a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rast @@ -0,0 +1,23 @@ +SOURCE_FILE@0..22 + FN@0..21 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "f" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + BLOCK_EXPR@7..21 + L_CURLY@7..8 "{" + WHITESPACE@8..9 " " + EFFECT_EXPR@9..19 + UNSAFE_KW@9..15 "unsafe" + WHITESPACE@15..16 " " + BLOCK_EXPR@16..19 + L_CURLY@16..17 "{" + WHITESPACE@17..18 " " + R_CURLY@18..19 "}" + WHITESPACE@19..20 " " + R_CURLY@20..21 "}" + WHITESPACE@21..22 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rs b/crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rs new file mode 100644 index 00000000000..dfb9b2a1c18 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0162_unsafe_block.rs @@ -0,0 +1 @@ +fn f() { unsafe { } } diff --git a/crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rast b/crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rast new file mode 100644 index 00000000000..f2e2014605a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rast @@ -0,0 +1,44 @@ +SOURCE_FILE@0..65 + IMPL@0..64 + DEFAULT_KW@0..7 "default" + WHITESPACE@7..8 " " + UNSAFE_KW@8..14 "unsafe" + WHITESPACE@14..15 " " + IMPL_KW@15..19 "impl" + WHITESPACE@19..20 " " + PATH_TYPE@20..21 + PATH@20..21 + PATH_SEGMENT@20..21 + NAME_REF@20..21 + IDENT@20..21 "T" + WHITESPACE@21..22 " " + FOR_KW@22..25 "for" + WHITESPACE@25..26 " " + PATH_TYPE@26..29 + PATH@26..29 + PATH_SEGMENT@26..29 + NAME_REF@26..29 + IDENT@26..29 "Foo" + WHITESPACE@29..30 " " + ASSOC_ITEM_LIST@30..64 + L_CURLY@30..31 "{" + WHITESPACE@31..36 "\n " + FN@36..62 + DEFAULT_KW@36..43 "default" + WHITESPACE@43..44 " " + UNSAFE_KW@44..50 "unsafe" + WHITESPACE@50..51 " " + FN_KW@51..53 "fn" + WHITESPACE@53..54 " " + NAME@54..57 + IDENT@54..57 "foo" + PARAM_LIST@57..59 + L_PAREN@57..58 "(" + R_PAREN@58..59 ")" + WHITESPACE@59..60 " " + BLOCK_EXPR@60..62 + L_CURLY@60..61 "{" + R_CURLY@61..62 "}" + WHITESPACE@62..63 "\n" + R_CURLY@63..64 "}" + WHITESPACE@64..65 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rs b/crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rs new file mode 100644 index 00000000000..96340f84ab3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0163_default_unsafe_item.rs @@ -0,0 +1,3 @@ +default unsafe impl T for Foo { + default unsafe fn foo() {} +} diff --git a/crates/syntax/test_data/parser/inline/ok/0164_default_item.rast b/crates/syntax/test_data/parser/inline/ok/0164_default_item.rast new file mode 100644 index 00000000000..9282772f34d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0164_default_item.rast @@ -0,0 +1,24 @@ +SOURCE_FILE@0..26 + IMPL@0..25 + DEFAULT_KW@0..7 "default" + WHITESPACE@7..8 " " + IMPL_KW@8..12 "impl" + WHITESPACE@12..13 " " + PATH_TYPE@13..14 + PATH@13..14 + PATH_SEGMENT@13..14 + NAME_REF@13..14 + IDENT@13..14 "T" + WHITESPACE@14..15 " " + FOR_KW@15..18 "for" + WHITESPACE@18..19 " " + PATH_TYPE@19..22 + PATH@19..22 + PATH_SEGMENT@19..22 + NAME_REF@19..22 + IDENT@19..22 "Foo" + WHITESPACE@22..23 " " + ASSOC_ITEM_LIST@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0164_default_item.rs b/crates/syntax/test_data/parser/inline/ok/0164_default_item.rs new file mode 100644 index 00000000000..a6836cbd577 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0164_default_item.rs @@ -0,0 +1 @@ +default impl T for Foo {} diff --git a/crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rast b/crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rast new file mode 100644 index 00000000000..f8910677b46 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rast @@ -0,0 +1,38 @@ +SOURCE_FILE@0..33 + FN@0..32 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..32 + L_CURLY@10..11 "{" + WHITESPACE@11..12 " " + LET_STMT@12..30 + LET_KW@12..15 "let" + WHITESPACE@15..16 " " + PATH_PAT@16..24 + PATH@16..24 + PATH@16..19 + PATH_SEGMENT@16..19 + L_ANGLE@16..17 "<" + INFER_TYPE@17..18 + UNDERSCORE@17..18 "_" + R_ANGLE@18..19 ">" + COLON2@19..21 "::" + PATH_SEGMENT@21..24 + NAME_REF@21..24 + IDENT@21..24 "Foo" + WHITESPACE@24..25 " " + EQ@25..26 "=" + WHITESPACE@26..27 " " + TUPLE_EXPR@27..29 + L_PAREN@27..28 "(" + R_PAREN@28..29 ")" + SEMICOLON@29..30 ";" + WHITESPACE@30..31 " " + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rs b/crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rs new file mode 100644 index 00000000000..ebe26834d88 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0164_type_path_in_pattern.rs @@ -0,0 +1 @@ +fn main() { let <_>::Foo = (); } diff --git a/crates/syntax/test_data/parser/ok/0000_empty.rast b/crates/syntax/test_data/parser/ok/0000_empty.rast new file mode 100644 index 00000000000..6b234b0b241 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0000_empty.rast @@ -0,0 +1 @@ +SOURCE_FILE@0..0 diff --git a/crates/syntax/test_data/parser/ok/0000_empty.rs b/crates/syntax/test_data/parser/ok/0000_empty.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/crates/syntax/test_data/parser/ok/0001_struct_item.rast b/crates/syntax/test_data/parser/ok/0001_struct_item.rast new file mode 100644 index 00000000000..a171fe7a86d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0001_struct_item.rast @@ -0,0 +1,39 @@ +SOURCE_FILE@0..32 + STRUCT@0..31 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + GENERIC_PARAM_LIST@8..17 + L_ANGLE@8..9 "<" + TYPE_PARAM@9..16 + NAME@9..10 + IDENT@9..10 "T" + COLON@10..11 ":" + WHITESPACE@11..12 " " + TYPE_BOUND_LIST@12..16 + TYPE_BOUND@12..16 + PATH_TYPE@12..16 + PATH@12..16 + PATH_SEGMENT@12..16 + NAME_REF@12..16 + IDENT@12..16 "Copy" + R_ANGLE@16..17 ">" + WHITESPACE@17..18 " " + RECORD_FIELD_LIST@18..31 + L_CURLY@18..19 "{" + WHITESPACE@19..24 "\n " + RECORD_FIELD@24..28 + NAME@24..25 + IDENT@24..25 "f" + COLON@25..26 ":" + WHITESPACE@26..27 " " + PATH_TYPE@27..28 + PATH@27..28 + PATH_SEGMENT@27..28 + NAME_REF@27..28 + IDENT@27..28 "T" + COMMA@28..29 "," + WHITESPACE@29..30 "\n" + R_CURLY@30..31 "}" + WHITESPACE@31..32 "\n" diff --git a/crates/syntax/test_data/parser/ok/0001_struct_item.rs b/crates/syntax/test_data/parser/ok/0001_struct_item.rs new file mode 100644 index 00000000000..512aeb3e7a0 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0001_struct_item.rs @@ -0,0 +1,3 @@ +struct S { + f: T, +} diff --git a/crates/syntax/test_data/parser/ok/0002_struct_item_field.rast b/crates/syntax/test_data/parser/ok/0002_struct_item_field.rast new file mode 100644 index 00000000000..362892b91f1 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0002_struct_item_field.rast @@ -0,0 +1,22 @@ +SOURCE_FILE@0..25 + STRUCT@0..25 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + WHITESPACE@8..9 " " + RECORD_FIELD_LIST@9..25 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + RECORD_FIELD@15..23 + NAME@15..18 + IDENT@15..18 "foo" + COLON@18..19 ":" + WHITESPACE@19..20 " " + PATH_TYPE@20..23 + PATH@20..23 + PATH_SEGMENT@20..23 + NAME_REF@20..23 + IDENT@20..23 "u32" + WHITESPACE@23..24 "\n" + R_CURLY@24..25 "}" diff --git a/crates/syntax/test_data/parser/ok/0002_struct_item_field.rs b/crates/syntax/test_data/parser/ok/0002_struct_item_field.rs new file mode 100644 index 00000000000..cc3866d2511 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0002_struct_item_field.rs @@ -0,0 +1,3 @@ +struct S { + foo: u32 +} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0004_file_shebang.rast b/crates/syntax/test_data/parser/ok/0004_file_shebang.rast new file mode 100644 index 00000000000..67e21df13a1 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0004_file_shebang.rast @@ -0,0 +1,2 @@ +SOURCE_FILE@0..20 + SHEBANG@0..20 "#!/use/bin/env rusti" diff --git a/crates/syntax/test_data/parser/ok/0004_file_shebang.rs b/crates/syntax/test_data/parser/ok/0004_file_shebang.rs new file mode 100644 index 00000000000..53dc9e61733 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0004_file_shebang.rs @@ -0,0 +1 @@ +#!/use/bin/env rusti \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0005_fn_item.rast b/crates/syntax/test_data/parser/ok/0005_fn_item.rast new file mode 100644 index 00000000000..a7a2b11a723 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0005_fn_item.rast @@ -0,0 +1,15 @@ +SOURCE_FILE@0..13 + FN@0..12 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..12 + L_CURLY@9..10 "{" + WHITESPACE@10..11 "\n" + R_CURLY@11..12 "}" + WHITESPACE@12..13 "\n" diff --git a/crates/syntax/test_data/parser/ok/0005_fn_item.rs b/crates/syntax/test_data/parser/ok/0005_fn_item.rs new file mode 100644 index 00000000000..03210551cb1 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0005_fn_item.rs @@ -0,0 +1,2 @@ +fn foo() { +} diff --git a/crates/syntax/test_data/parser/ok/0006_inner_attributes.rast b/crates/syntax/test_data/parser/ok/0006_inner_attributes.rast new file mode 100644 index 00000000000..42587243a96 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0006_inner_attributes.rast @@ -0,0 +1,184 @@ +SOURCE_FILE@0..236 + ATTR@0..8 + POUND@0..1 "#" + BANG@1..2 "!" + L_BRACK@2..3 "[" + PATH@3..7 + PATH_SEGMENT@3..7 + NAME_REF@3..7 + IDENT@3..7 "attr" + R_BRACK@7..8 "]" + WHITESPACE@8..9 "\n" + ATTR@9..23 + POUND@9..10 "#" + BANG@10..11 "!" + L_BRACK@11..12 "[" + PATH@12..16 + PATH_SEGMENT@12..16 + NAME_REF@12..16 + IDENT@12..16 "attr" + TOKEN_TREE@16..22 + L_PAREN@16..17 "(" + TRUE_KW@17..21 "true" + R_PAREN@21..22 ")" + R_BRACK@22..23 "]" + WHITESPACE@23..24 "\n" + ATTR@24..39 + POUND@24..25 "#" + BANG@25..26 "!" + L_BRACK@26..27 "[" + PATH@27..31 + PATH_SEGMENT@27..31 + NAME_REF@27..31 + IDENT@27..31 "attr" + TOKEN_TREE@31..38 + L_PAREN@31..32 "(" + IDENT@32..37 "ident" + R_PAREN@37..38 ")" + R_BRACK@38..39 "]" + WHITESPACE@39..40 "\n" + ATTR@40..116 + POUND@40..41 "#" + BANG@41..42 "!" + L_BRACK@42..43 "[" + PATH@43..47 + PATH_SEGMENT@43..47 + NAME_REF@43..47 + IDENT@43..47 "attr" + TOKEN_TREE@47..115 + L_PAREN@47..48 "(" + IDENT@48..53 "ident" + COMMA@53..54 "," + WHITESPACE@54..55 " " + INT_NUMBER@55..58 "100" + COMMA@58..59 "," + WHITESPACE@59..60 " " + TRUE_KW@60..64 "true" + COMMA@64..65 "," + WHITESPACE@65..66 " " + STRING@66..72 "\"true\"" + COMMA@72..73 "," + WHITESPACE@73..74 " " + IDENT@74..79 "ident" + WHITESPACE@79..80 " " + EQ@80..81 "=" + WHITESPACE@81..82 " " + INT_NUMBER@82..85 "100" + COMMA@85..86 "," + WHITESPACE@86..87 " " + IDENT@87..92 "ident" + WHITESPACE@92..93 " " + EQ@93..94 "=" + WHITESPACE@94..95 " " + STRING@95..102 "\"hello\"" + COMMA@102..103 "," + WHITESPACE@103..104 " " + IDENT@104..109 "ident" + TOKEN_TREE@109..114 + L_PAREN@109..110 "(" + INT_NUMBER@110..113 "100" + R_PAREN@113..114 ")" + R_PAREN@114..115 ")" + R_BRACK@115..116 "]" + WHITESPACE@116..117 "\n" + ATTR@117..130 + POUND@117..118 "#" + BANG@118..119 "!" + L_BRACK@119..120 "[" + PATH@120..124 + PATH_SEGMENT@120..124 + NAME_REF@120..124 + IDENT@120..124 "attr" + TOKEN_TREE@124..129 + L_PAREN@124..125 "(" + INT_NUMBER@125..128 "100" + R_PAREN@128..129 ")" + R_BRACK@129..130 "]" + WHITESPACE@130..131 "\n" + ATTR@131..155 + POUND@131..132 "#" + BANG@132..133 "!" + L_BRACK@133..134 "[" + PATH@134..138 + PATH_SEGMENT@134..138 + NAME_REF@134..138 + IDENT@134..138 "attr" + TOKEN_TREE@138..154 + L_PAREN@138..139 "(" + IDENT@139..146 "enabled" + WHITESPACE@146..147 " " + EQ@147..148 "=" + WHITESPACE@148..149 " " + TRUE_KW@149..153 "true" + R_PAREN@153..154 ")" + R_BRACK@154..155 "]" + WHITESPACE@155..156 "\n" + ATTR@156..173 + POUND@156..157 "#" + BANG@157..158 "!" + L_BRACK@158..159 "[" + PATH@159..166 + PATH_SEGMENT@159..166 + NAME_REF@159..166 + IDENT@159..166 "enabled" + TOKEN_TREE@166..172 + L_PAREN@166..167 "(" + TRUE_KW@167..171 "true" + R_PAREN@171..172 ")" + R_BRACK@172..173 "]" + WHITESPACE@173..174 "\n" + ATTR@174..191 + POUND@174..175 "#" + BANG@175..176 "!" + L_BRACK@176..177 "[" + PATH@177..181 + PATH_SEGMENT@177..181 + NAME_REF@177..181 + IDENT@177..181 "attr" + TOKEN_TREE@181..190 + L_PAREN@181..182 "(" + STRING@182..189 "\"hello\"" + R_PAREN@189..190 ")" + R_BRACK@190..191 "]" + WHITESPACE@191..192 "\n" + ATTR@192..214 + POUND@192..193 "#" + BANG@193..194 "!" + L_BRACK@194..195 "[" + PATH@195..199 + PATH_SEGMENT@195..199 + NAME_REF@195..199 + IDENT@195..199 "repr" + TOKEN_TREE@199..213 + L_PAREN@199..200 "(" + IDENT@200..201 "C" + COMMA@201..202 "," + WHITESPACE@202..203 " " + IDENT@203..208 "align" + WHITESPACE@208..209 " " + EQ@209..210 "=" + WHITESPACE@210..211 " " + INT_NUMBER@211..212 "4" + R_PAREN@212..213 ")" + R_BRACK@213..214 "]" + WHITESPACE@214..215 "\n" + ATTR@215..236 + POUND@215..216 "#" + BANG@216..217 "!" + L_BRACK@217..218 "[" + PATH@218..222 + PATH_SEGMENT@218..222 + NAME_REF@218..222 + IDENT@218..222 "repr" + TOKEN_TREE@222..235 + L_PAREN@222..223 "(" + IDENT@223..224 "C" + COMMA@224..225 "," + WHITESPACE@225..226 " " + IDENT@226..231 "align" + TOKEN_TREE@231..234 + L_PAREN@231..232 "(" + INT_NUMBER@232..233 "4" + R_PAREN@233..234 ")" + R_PAREN@234..235 ")" + R_BRACK@235..236 "]" diff --git a/crates/syntax/test_data/parser/ok/0006_inner_attributes.rs b/crates/syntax/test_data/parser/ok/0006_inner_attributes.rs new file mode 100644 index 00000000000..e81f8b1e84f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0006_inner_attributes.rs @@ -0,0 +1,10 @@ +#![attr] +#![attr(true)] +#![attr(ident)] +#![attr(ident, 100, true, "true", ident = 100, ident = "hello", ident(100))] +#![attr(100)] +#![attr(enabled = true)] +#![enabled(true)] +#![attr("hello")] +#![repr(C, align = 4)] +#![repr(C, align(4))] \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0007_extern_crate.rast b/crates/syntax/test_data/parser/ok/0007_extern_crate.rast new file mode 100644 index 00000000000..594c2f8f20a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0007_extern_crate.rast @@ -0,0 +1,39 @@ +SOURCE_FILE@0..69 + EXTERN_CRATE@0..17 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + CRATE_KW@7..12 "crate" + WHITESPACE@12..13 " " + NAME_REF@13..16 + IDENT@13..16 "foo" + SEMICOLON@16..17 ";" + WHITESPACE@17..18 "\n" + EXTERN_CRATE@18..42 + EXTERN_KW@18..24 "extern" + WHITESPACE@24..25 " " + CRATE_KW@25..30 "crate" + WHITESPACE@30..31 " " + NAME_REF@31..34 + IDENT@31..34 "foo" + WHITESPACE@34..35 " " + RENAME@35..41 + AS_KW@35..37 "as" + WHITESPACE@37..38 " " + NAME@38..41 + IDENT@38..41 "bar" + SEMICOLON@41..42 ";" + WHITESPACE@42..43 "\n" + EXTERN_CRATE@43..68 + EXTERN_KW@43..49 "extern" + WHITESPACE@49..50 " " + CRATE_KW@50..55 "crate" + WHITESPACE@55..56 " " + SELF_KW@56..60 "self" + WHITESPACE@60..61 " " + RENAME@61..67 + AS_KW@61..63 "as" + WHITESPACE@63..64 " " + NAME@64..67 + IDENT@64..67 "baz" + SEMICOLON@67..68 ";" + WHITESPACE@68..69 "\n" diff --git a/crates/syntax/test_data/parser/ok/0007_extern_crate.rs b/crates/syntax/test_data/parser/ok/0007_extern_crate.rs new file mode 100644 index 00000000000..ab81a608cb5 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0007_extern_crate.rs @@ -0,0 +1,3 @@ +extern crate foo; +extern crate foo as bar; +extern crate self as baz; diff --git a/crates/syntax/test_data/parser/ok/0008_mod_item.rast b/crates/syntax/test_data/parser/ok/0008_mod_item.rast new file mode 100644 index 00000000000..b2c1d791f14 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0008_mod_item.rast @@ -0,0 +1,92 @@ +SOURCE_FILE@0..118 + MODULE@0..6 + MOD_KW@0..3 "mod" + WHITESPACE@3..4 " " + NAME@4..5 + IDENT@4..5 "a" + SEMICOLON@5..6 ";" + WHITESPACE@6..8 "\n\n" + MODULE@8..17 + MOD_KW@8..11 "mod" + WHITESPACE@11..12 " " + NAME@12..13 + IDENT@12..13 "b" + WHITESPACE@13..14 " " + ITEM_LIST@14..17 + L_CURLY@14..15 "{" + WHITESPACE@15..16 "\n" + R_CURLY@16..17 "}" + WHITESPACE@17..19 "\n\n" + MODULE@19..65 + MOD_KW@19..22 "mod" + WHITESPACE@22..23 " " + NAME@23..24 + IDENT@23..24 "c" + WHITESPACE@24..25 " " + ITEM_LIST@25..65 + L_CURLY@25..26 "{" + WHITESPACE@26..31 "\n " + FN@31..47 + FN_KW@31..33 "fn" + WHITESPACE@33..34 " " + NAME@34..37 + IDENT@34..37 "foo" + PARAM_LIST@37..39 + L_PAREN@37..38 "(" + R_PAREN@38..39 ")" + WHITESPACE@39..40 " " + BLOCK_EXPR@40..47 + L_CURLY@40..41 "{" + WHITESPACE@41..46 "\n " + R_CURLY@46..47 "}" + WHITESPACE@47..52 "\n " + STRUCT@52..63 + STRUCT_KW@52..58 "struct" + WHITESPACE@58..59 " " + NAME@59..60 + IDENT@59..60 "S" + WHITESPACE@60..61 " " + RECORD_FIELD_LIST@61..63 + L_CURLY@61..62 "{" + R_CURLY@62..63 "}" + WHITESPACE@63..64 "\n" + R_CURLY@64..65 "}" + WHITESPACE@65..67 "\n\n" + MODULE@67..118 + MOD_KW@67..70 "mod" + WHITESPACE@70..71 " " + NAME@71..72 + IDENT@71..72 "d" + WHITESPACE@72..73 " " + ITEM_LIST@73..118 + L_CURLY@73..74 "{" + WHITESPACE@74..79 "\n " + ATTR@79..87 + POUND@79..80 "#" + BANG@80..81 "!" + L_BRACK@81..82 "[" + PATH@82..86 + PATH_SEGMENT@82..86 + NAME_REF@82..86 + IDENT@82..86 "attr" + R_BRACK@86..87 "]" + WHITESPACE@87..92 "\n " + MODULE@92..98 + MOD_KW@92..95 "mod" + WHITESPACE@95..96 " " + NAME@96..97 + IDENT@96..97 "e" + SEMICOLON@97..98 ";" + WHITESPACE@98..103 "\n " + MODULE@103..116 + MOD_KW@103..106 "mod" + WHITESPACE@106..107 " " + NAME@107..108 + IDENT@107..108 "f" + WHITESPACE@108..109 " " + ITEM_LIST@109..116 + L_CURLY@109..110 "{" + WHITESPACE@110..115 "\n " + R_CURLY@115..116 "}" + WHITESPACE@116..117 "\n" + R_CURLY@117..118 "}" diff --git a/crates/syntax/test_data/parser/ok/0008_mod_item.rs b/crates/syntax/test_data/parser/ok/0008_mod_item.rs new file mode 100644 index 00000000000..d22993bc150 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0008_mod_item.rs @@ -0,0 +1,17 @@ +mod a; + +mod b { +} + +mod c { + fn foo() { + } + struct S {} +} + +mod d { + #![attr] + mod e; + mod f { + } +} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0009_use_item.rast b/crates/syntax/test_data/parser/ok/0009_use_item.rast new file mode 100644 index 00000000000..6be1cf9fc83 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0009_use_item.rast @@ -0,0 +1,21 @@ +SOURCE_FILE@0..19 + USE@0..8 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..7 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "foo" + SEMICOLON@7..8 ";" + WHITESPACE@8..9 "\n" + USE@9..19 + USE_KW@9..12 "use" + WHITESPACE@12..13 " " + USE_TREE@13..18 + PATH@13..18 + PATH_SEGMENT@13..18 + COLON2@13..15 "::" + NAME_REF@15..18 + IDENT@15..18 "bar" + SEMICOLON@18..19 ";" diff --git a/crates/syntax/test_data/parser/ok/0009_use_item.rs b/crates/syntax/test_data/parser/ok/0009_use_item.rs new file mode 100644 index 00000000000..05a6aff83fc --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0009_use_item.rs @@ -0,0 +1,2 @@ +use foo; +use ::bar; \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0010_use_path_segments.rast b/crates/syntax/test_data/parser/ok/0010_use_path_segments.rast new file mode 100644 index 00000000000..4d49e793374 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0010_use_path_segments.rast @@ -0,0 +1,42 @@ +SOURCE_FILE@0..40 + USE@0..20 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..19 + PATH@4..19 + PATH@4..14 + PATH@4..9 + PATH_SEGMENT@4..9 + COLON2@4..6 "::" + NAME_REF@6..9 + IDENT@6..9 "foo" + COLON2@9..11 "::" + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "bar" + COLON2@14..16 "::" + PATH_SEGMENT@16..19 + NAME_REF@16..19 + IDENT@16..19 "baz" + SEMICOLON@19..20 ";" + WHITESPACE@20..21 "\n" + USE@21..39 + USE_KW@21..24 "use" + WHITESPACE@24..25 " " + USE_TREE@25..38 + PATH@25..38 + PATH@25..33 + PATH@25..28 + PATH_SEGMENT@25..28 + NAME_REF@25..28 + IDENT@25..28 "foo" + COLON2@28..30 "::" + PATH_SEGMENT@30..33 + NAME_REF@30..33 + IDENT@30..33 "bar" + COLON2@33..35 "::" + PATH_SEGMENT@35..38 + NAME_REF@35..38 + IDENT@35..38 "baz" + SEMICOLON@38..39 ";" + WHITESPACE@39..40 "\n" diff --git a/crates/syntax/test_data/parser/ok/0010_use_path_segments.rs b/crates/syntax/test_data/parser/ok/0010_use_path_segments.rs new file mode 100644 index 00000000000..1e71b7a6c5d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0010_use_path_segments.rs @@ -0,0 +1,2 @@ +use ::foo::bar::baz; +use foo::bar::baz; diff --git a/crates/syntax/test_data/parser/ok/0011_outer_attribute.rast b/crates/syntax/test_data/parser/ok/0011_outer_attribute.rast new file mode 100644 index 00000000000..478fdba758a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0011_outer_attribute.rast @@ -0,0 +1,57 @@ +SOURCE_FILE@0..60 + FN@0..34 + ATTR@0..12 + POUND@0..1 "#" + L_BRACK@1..2 "[" + PATH@2..5 + PATH_SEGMENT@2..5 + NAME_REF@2..5 + IDENT@2..5 "cfg" + TOKEN_TREE@5..11 + L_PAREN@5..6 "(" + IDENT@6..10 "test" + R_PAREN@10..11 ")" + R_BRACK@11..12 "]" + WHITESPACE@12..13 "\n" + ATTR@13..22 + POUND@13..14 "#" + L_BRACK@14..15 "[" + PATH@15..21 + PATH_SEGMENT@15..21 + NAME_REF@15..21 + IDENT@15..21 "ignore" + R_BRACK@21..22 "]" + WHITESPACE@22..23 "\n" + FN_KW@23..25 "fn" + WHITESPACE@25..26 " " + NAME@26..29 + IDENT@26..29 "foo" + PARAM_LIST@29..31 + L_PAREN@29..30 "(" + R_PAREN@30..31 ")" + WHITESPACE@31..32 " " + BLOCK_EXPR@32..34 + L_CURLY@32..33 "{" + R_CURLY@33..34 "}" + WHITESPACE@34..36 "\n\n" + MODULE@36..59 + ATTR@36..52 + POUND@36..37 "#" + L_BRACK@37..38 "[" + PATH@38..42 + PATH_SEGMENT@38..42 + NAME_REF@38..42 + IDENT@38..42 "path" + WHITESPACE@42..43 " " + EQ@43..44 "=" + WHITESPACE@44..45 " " + LITERAL@45..51 + STRING@45..51 "\"a.rs\"" + R_BRACK@51..52 "]" + WHITESPACE@52..53 "\n" + MOD_KW@53..56 "mod" + WHITESPACE@56..57 " " + NAME@57..58 + IDENT@57..58 "b" + SEMICOLON@58..59 ";" + WHITESPACE@59..60 "\n" diff --git a/crates/syntax/test_data/parser/ok/0011_outer_attribute.rs b/crates/syntax/test_data/parser/ok/0011_outer_attribute.rs new file mode 100644 index 00000000000..3d2e01d5c6f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0011_outer_attribute.rs @@ -0,0 +1,6 @@ +#[cfg(test)] +#[ignore] +fn foo() {} + +#[path = "a.rs"] +mod b; diff --git a/crates/syntax/test_data/parser/ok/0012_visibility.rast b/crates/syntax/test_data/parser/ok/0012_visibility.rast new file mode 100644 index 00000000000..83a93b5a9e5 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0012_visibility.rast @@ -0,0 +1,102 @@ +SOURCE_FILE@0..98 + FN@0..9 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "a" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + BLOCK_EXPR@7..9 + L_CURLY@7..8 "{" + R_CURLY@8..9 "}" + WHITESPACE@9..10 "\n" + FN@10..23 + VISIBILITY@10..13 + PUB_KW@10..13 "pub" + WHITESPACE@13..14 " " + FN_KW@14..16 "fn" + WHITESPACE@16..17 " " + NAME@17..18 + IDENT@17..18 "b" + PARAM_LIST@18..20 + L_PAREN@18..19 "(" + R_PAREN@19..20 ")" + WHITESPACE@20..21 " " + BLOCK_EXPR@21..23 + L_CURLY@21..22 "{" + R_CURLY@22..23 "}" + WHITESPACE@23..24 "\n" + FN@24..44 + VISIBILITY@24..34 + PUB_KW@24..27 "pub" + L_PAREN@27..28 "(" + CRATE_KW@28..33 "crate" + R_PAREN@33..34 ")" + WHITESPACE@34..35 " " + FN_KW@35..37 "fn" + WHITESPACE@37..38 " " + NAME@38..39 + IDENT@38..39 "c" + PARAM_LIST@39..41 + L_PAREN@39..40 "(" + R_PAREN@40..41 ")" + WHITESPACE@41..42 " " + BLOCK_EXPR@42..44 + L_CURLY@42..43 "{" + R_CURLY@43..44 "}" + WHITESPACE@44..45 "\n" + FN@45..65 + VISIBILITY@45..55 + PUB_KW@45..48 "pub" + L_PAREN@48..49 "(" + SUPER_KW@49..54 "super" + R_PAREN@54..55 ")" + WHITESPACE@55..56 " " + FN_KW@56..58 "fn" + WHITESPACE@58..59 " " + NAME@59..60 + IDENT@59..60 "d" + PARAM_LIST@60..62 + L_PAREN@60..61 "(" + R_PAREN@61..62 ")" + WHITESPACE@62..63 " " + BLOCK_EXPR@63..65 + L_CURLY@63..64 "{" + R_CURLY@64..65 "}" + WHITESPACE@65..66 "\n" + FN@66..97 + VISIBILITY@66..87 + PUB_KW@66..69 "pub" + L_PAREN@69..70 "(" + IN_KW@70..72 "in" + WHITESPACE@72..73 " " + PATH@73..86 + PATH@73..81 + PATH@73..76 + PATH_SEGMENT@73..76 + NAME_REF@73..76 + IDENT@73..76 "foo" + COLON2@76..78 "::" + PATH_SEGMENT@78..81 + NAME_REF@78..81 + IDENT@78..81 "bar" + COLON2@81..83 "::" + PATH_SEGMENT@83..86 + NAME_REF@83..86 + IDENT@83..86 "baz" + R_PAREN@86..87 ")" + WHITESPACE@87..88 " " + FN_KW@88..90 "fn" + WHITESPACE@90..91 " " + NAME@91..92 + IDENT@91..92 "e" + PARAM_LIST@92..94 + L_PAREN@92..93 "(" + R_PAREN@93..94 ")" + WHITESPACE@94..95 " " + BLOCK_EXPR@95..97 + L_CURLY@95..96 "{" + R_CURLY@96..97 "}" + WHITESPACE@97..98 "\n" diff --git a/crates/syntax/test_data/parser/ok/0012_visibility.rs b/crates/syntax/test_data/parser/ok/0012_visibility.rs new file mode 100644 index 00000000000..75b1db12134 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0012_visibility.rs @@ -0,0 +1,5 @@ +fn a() {} +pub fn b() {} +pub(crate) fn c() {} +pub(super) fn d() {} +pub(in foo::bar::baz) fn e() {} diff --git a/crates/syntax/test_data/parser/ok/0013_use_path_self_super.rast b/crates/syntax/test_data/parser/ok/0013_use_path_self_super.rast new file mode 100644 index 00000000000..66ab1366095 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0013_use_path_self_super.rast @@ -0,0 +1,33 @@ +SOURCE_FILE@0..38 + USE@0..14 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..13 + PATH@4..13 + PATH@4..8 + PATH_SEGMENT@4..8 + SELF_KW@4..8 "self" + COLON2@8..10 "::" + PATH_SEGMENT@10..13 + NAME_REF@10..13 + IDENT@10..13 "foo" + SEMICOLON@13..14 ";" + WHITESPACE@14..15 "\n" + USE@15..37 + USE_KW@15..18 "use" + WHITESPACE@18..19 " " + USE_TREE@19..36 + PATH@19..36 + PATH@19..31 + PATH@19..24 + PATH_SEGMENT@19..24 + SUPER_KW@19..24 "super" + COLON2@24..26 "::" + PATH_SEGMENT@26..31 + SUPER_KW@26..31 "super" + COLON2@31..33 "::" + PATH_SEGMENT@33..36 + NAME_REF@33..36 + IDENT@33..36 "bar" + SEMICOLON@36..37 ";" + WHITESPACE@37..38 "\n" diff --git a/crates/syntax/test_data/parser/ok/0013_use_path_self_super.rs b/crates/syntax/test_data/parser/ok/0013_use_path_self_super.rs new file mode 100644 index 00000000000..9d9eb99175b --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0013_use_path_self_super.rs @@ -0,0 +1,2 @@ +use self::foo; +use super::super::bar; diff --git a/crates/syntax/test_data/parser/ok/0014_use_tree.rast b/crates/syntax/test_data/parser/ok/0014_use_tree.rast new file mode 100644 index 00000000000..4389d2d4bce --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0014_use_tree.rast @@ -0,0 +1,95 @@ +SOURCE_FILE@0..81 + USE@0..6 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..5 + STAR@4..5 "*" + SEMICOLON@5..6 ";" + WHITESPACE@6..7 "\n" + USE@7..15 + USE_KW@7..10 "use" + WHITESPACE@10..11 " " + USE_TREE@11..14 + COLON2@11..13 "::" + STAR@13..14 "*" + SEMICOLON@14..15 ";" + WHITESPACE@15..16 "\n" + USE@16..25 + USE_KW@16..19 "use" + WHITESPACE@19..20 " " + USE_TREE@20..24 + COLON2@20..22 "::" + USE_TREE_LIST@22..24 + L_CURLY@22..23 "{" + R_CURLY@23..24 "}" + SEMICOLON@24..25 ";" + WHITESPACE@25..26 "\n" + USE@26..33 + USE_KW@26..29 "use" + WHITESPACE@29..30 " " + USE_TREE@30..32 + USE_TREE_LIST@30..32 + L_CURLY@30..31 "{" + R_CURLY@31..32 "}" + SEMICOLON@32..33 ";" + WHITESPACE@33..34 "\n" + USE@34..45 + USE_KW@34..37 "use" + WHITESPACE@37..38 " " + USE_TREE@38..44 + PATH@38..41 + PATH_SEGMENT@38..41 + NAME_REF@38..41 + IDENT@38..41 "foo" + COLON2@41..43 "::" + STAR@43..44 "*" + SEMICOLON@44..45 ";" + WHITESPACE@45..46 "\n" + USE@46..58 + USE_KW@46..49 "use" + WHITESPACE@49..50 " " + USE_TREE@50..57 + PATH@50..53 + PATH_SEGMENT@50..53 + NAME_REF@50..53 + IDENT@50..53 "foo" + COLON2@53..55 "::" + USE_TREE_LIST@55..57 + L_CURLY@55..56 "{" + R_CURLY@56..57 "}" + SEMICOLON@57..58 ";" + WHITESPACE@58..59 "\n" + USE@59..80 + USE_KW@59..62 "use" + WHITESPACE@62..63 " " + USE_TREE@63..79 + PATH@63..68 + PATH_SEGMENT@63..68 + COLON2@63..65 "::" + NAME_REF@65..68 + IDENT@65..68 "foo" + COLON2@68..70 "::" + USE_TREE_LIST@70..79 + L_CURLY@70..71 "{" + USE_TREE@71..72 + PATH@71..72 + PATH_SEGMENT@71..72 + NAME_REF@71..72 + IDENT@71..72 "a" + COMMA@72..73 "," + WHITESPACE@73..74 " " + USE_TREE@74..75 + PATH@74..75 + PATH_SEGMENT@74..75 + NAME_REF@74..75 + IDENT@74..75 "b" + COMMA@75..76 "," + WHITESPACE@76..77 " " + USE_TREE@77..78 + PATH@77..78 + PATH_SEGMENT@77..78 + NAME_REF@77..78 + IDENT@77..78 "c" + R_CURLY@78..79 "}" + SEMICOLON@79..80 ";" + WHITESPACE@80..81 "\n" diff --git a/crates/syntax/test_data/parser/ok/0014_use_tree.rs b/crates/syntax/test_data/parser/ok/0014_use_tree.rs new file mode 100644 index 00000000000..5e4aa3a3321 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0014_use_tree.rs @@ -0,0 +1,7 @@ +use *; +use ::*; +use ::{}; +use {}; +use foo::*; +use foo::{}; +use ::foo::{a, b, c}; diff --git a/crates/syntax/test_data/parser/ok/0015_use_tree.rast b/crates/syntax/test_data/parser/ok/0015_use_tree.rast new file mode 100644 index 00000000000..d7e93f7eb75 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0015_use_tree.rast @@ -0,0 +1,65 @@ +SOURCE_FILE@0..55 + USE@0..15 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..14 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "foo" + WHITESPACE@7..8 " " + RENAME@8..14 + AS_KW@8..10 "as" + WHITESPACE@10..11 " " + NAME@11..14 + IDENT@11..14 "bar" + SEMICOLON@14..15 ";" + WHITESPACE@15..16 "\n" + USE@16..54 + USE_KW@16..19 "use" + WHITESPACE@19..20 " " + USE_TREE@20..53 + PATH@20..23 + PATH_SEGMENT@20..23 + NAME_REF@20..23 + IDENT@20..23 "foo" + COLON2@23..25 "::" + USE_TREE_LIST@25..53 + L_CURLY@25..26 "{" + USE_TREE@26..32 + PATH@26..27 + PATH_SEGMENT@26..27 + NAME_REF@26..27 + IDENT@26..27 "a" + WHITESPACE@27..28 " " + RENAME@28..32 + AS_KW@28..30 "as" + WHITESPACE@30..31 " " + NAME@31..32 + IDENT@31..32 "b" + COMMA@32..33 "," + WHITESPACE@33..34 " " + USE_TREE@34..35 + STAR@34..35 "*" + COMMA@35..36 "," + WHITESPACE@36..37 " " + USE_TREE@37..40 + COLON2@37..39 "::" + STAR@39..40 "*" + COMMA@40..41 "," + WHITESPACE@41..42 " " + USE_TREE@42..52 + PATH@42..47 + PATH_SEGMENT@42..47 + COLON2@42..44 "::" + NAME_REF@44..47 + IDENT@44..47 "foo" + WHITESPACE@47..48 " " + RENAME@48..52 + AS_KW@48..50 "as" + WHITESPACE@50..51 " " + NAME@51..52 + IDENT@51..52 "x" + R_CURLY@52..53 "}" + SEMICOLON@53..54 ";" + WHITESPACE@54..55 "\n" diff --git a/crates/syntax/test_data/parser/ok/0015_use_tree.rs b/crates/syntax/test_data/parser/ok/0015_use_tree.rs new file mode 100644 index 00000000000..46a0783a2bd --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0015_use_tree.rs @@ -0,0 +1,2 @@ +use foo as bar; +use foo::{a as b, *, ::*, ::foo as x}; diff --git a/crates/syntax/test_data/parser/ok/0016_struct_flavors.rast b/crates/syntax/test_data/parser/ok/0016_struct_flavors.rast new file mode 100644 index 00000000000..b15f41dd7e9 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0016_struct_flavors.rast @@ -0,0 +1,93 @@ +SOURCE_FILE@0..97 + STRUCT@0..9 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "A" + SEMICOLON@8..9 ";" + WHITESPACE@9..10 "\n" + STRUCT@10..21 + STRUCT_KW@10..16 "struct" + WHITESPACE@16..17 " " + NAME@17..18 + IDENT@17..18 "B" + WHITESPACE@18..19 " " + RECORD_FIELD_LIST@19..21 + L_CURLY@19..20 "{" + R_CURLY@20..21 "}" + WHITESPACE@21..22 "\n" + STRUCT@22..33 + STRUCT_KW@22..28 "struct" + WHITESPACE@28..29 " " + NAME@29..30 + IDENT@29..30 "C" + TUPLE_FIELD_LIST@30..32 + L_PAREN@30..31 "(" + R_PAREN@31..32 ")" + SEMICOLON@32..33 ";" + WHITESPACE@33..35 "\n\n" + STRUCT@35..74 + STRUCT_KW@35..41 "struct" + WHITESPACE@41..42 " " + NAME@42..43 + IDENT@42..43 "D" + WHITESPACE@43..44 " " + RECORD_FIELD_LIST@44..74 + L_CURLY@44..45 "{" + WHITESPACE@45..50 "\n " + RECORD_FIELD@50..56 + NAME@50..51 + IDENT@50..51 "a" + COLON@51..52 ":" + WHITESPACE@52..53 " " + PATH_TYPE@53..56 + PATH@53..56 + PATH_SEGMENT@53..56 + NAME_REF@53..56 + IDENT@53..56 "u32" + COMMA@56..57 "," + WHITESPACE@57..62 "\n " + RECORD_FIELD@62..72 + VISIBILITY@62..65 + PUB_KW@62..65 "pub" + WHITESPACE@65..66 " " + NAME@66..67 + IDENT@66..67 "b" + COLON@67..68 ":" + WHITESPACE@68..69 " " + PATH_TYPE@69..72 + PATH@69..72 + PATH_SEGMENT@69..72 + NAME_REF@69..72 + IDENT@69..72 "u32" + WHITESPACE@72..73 "\n" + R_CURLY@73..74 "}" + WHITESPACE@74..76 "\n\n" + STRUCT@76..96 + STRUCT_KW@76..82 "struct" + WHITESPACE@82..83 " " + NAME@83..84 + IDENT@83..84 "E" + TUPLE_FIELD_LIST@84..95 + L_PAREN@84..85 "(" + TUPLE_FIELD@85..90 + VISIBILITY@85..88 + PUB_KW@85..88 "pub" + WHITESPACE@88..89 " " + PATH_TYPE@89..90 + PATH@89..90 + PATH_SEGMENT@89..90 + NAME_REF@89..90 + IDENT@89..90 "x" + COMMA@90..91 "," + WHITESPACE@91..92 " " + TUPLE_FIELD@92..93 + PATH_TYPE@92..93 + PATH@92..93 + PATH_SEGMENT@92..93 + NAME_REF@92..93 + IDENT@92..93 "y" + COMMA@93..94 "," + R_PAREN@94..95 ")" + SEMICOLON@95..96 ";" + WHITESPACE@96..97 "\n" diff --git a/crates/syntax/test_data/parser/ok/0016_struct_flavors.rs b/crates/syntax/test_data/parser/ok/0016_struct_flavors.rs new file mode 100644 index 00000000000..69638350c46 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0016_struct_flavors.rs @@ -0,0 +1,10 @@ +struct A; +struct B {} +struct C(); + +struct D { + a: u32, + pub b: u32 +} + +struct E(pub x, y,); diff --git a/crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rast b/crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rast new file mode 100644 index 00000000000..a3e091ad369 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rast @@ -0,0 +1,28 @@ +SOURCE_FILE@0..23 + FN@0..22 + ATTR@0..10 + POUND@0..1 "#" + L_BRACK@1..2 "[" + PATH@2..5 + PATH_SEGMENT@2..5 + NAME_REF@2..5 + IDENT@2..5 "foo" + TOKEN_TREE@5..9 + L_PAREN@5..6 "(" + IDENT@6..7 "a" + COMMA@7..8 "," + R_PAREN@8..9 ")" + R_BRACK@9..10 "]" + WHITESPACE@10..11 "\n" + FN_KW@11..13 "fn" + WHITESPACE@13..14 " " + NAME@14..17 + IDENT@14..17 "foo" + PARAM_LIST@17..19 + L_PAREN@17..18 "(" + R_PAREN@18..19 ")" + WHITESPACE@19..20 " " + BLOCK_EXPR@20..22 + L_CURLY@20..21 "{" + R_CURLY@21..22 "}" + WHITESPACE@22..23 "\n" diff --git a/crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rs b/crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rs new file mode 100644 index 00000000000..fe0a7bb97e3 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0017_attr_trailing_comma.rs @@ -0,0 +1,2 @@ +#[foo(a,)] +fn foo() {} diff --git a/crates/syntax/test_data/parser/ok/0018_struct_type_params.rast b/crates/syntax/test_data/parser/ok/0018_struct_type_params.rast new file mode 100644 index 00000000000..630aa0708bb --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0018_struct_type_params.rast @@ -0,0 +1,257 @@ +SOURCE_FILE@0..290 + STRUCT@0..13 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..9 + IDENT@7..9 "S1" + GENERIC_PARAM_LIST@9..12 + L_ANGLE@9..10 "<" + TYPE_PARAM@10..11 + NAME@10..11 + IDENT@10..11 "T" + R_ANGLE@11..12 ">" + SEMICOLON@12..13 ";" + WHITESPACE@13..14 "\n" + STRUCT@14..32 + STRUCT_KW@14..20 "struct" + WHITESPACE@20..21 " " + NAME@21..23 + IDENT@21..23 "S2" + GENERIC_PARAM_LIST@23..26 + L_ANGLE@23..24 "<" + TYPE_PARAM@24..25 + NAME@24..25 + IDENT@24..25 "T" + R_ANGLE@25..26 ">" + TUPLE_FIELD_LIST@26..31 + L_PAREN@26..27 "(" + TUPLE_FIELD@27..30 + PATH_TYPE@27..30 + PATH@27..30 + PATH_SEGMENT@27..30 + NAME_REF@27..30 + IDENT@27..30 "u32" + R_PAREN@30..31 ")" + SEMICOLON@31..32 ";" + WHITESPACE@32..33 "\n" + STRUCT@33..56 + STRUCT_KW@33..39 "struct" + WHITESPACE@39..40 " " + NAME@40..42 + IDENT@40..42 "S3" + GENERIC_PARAM_LIST@42..45 + L_ANGLE@42..43 "<" + TYPE_PARAM@43..44 + NAME@43..44 + IDENT@43..44 "T" + R_ANGLE@44..45 ">" + WHITESPACE@45..46 " " + RECORD_FIELD_LIST@46..56 + L_CURLY@46..47 "{" + WHITESPACE@47..48 " " + RECORD_FIELD@48..54 + NAME@48..49 + IDENT@48..49 "u" + COLON@49..50 ":" + WHITESPACE@50..51 " " + PATH_TYPE@51..54 + PATH@51..54 + PATH_SEGMENT@51..54 + NAME_REF@51..54 + IDENT@51..54 "u32" + WHITESPACE@54..55 " " + R_CURLY@55..56 "}" + WHITESPACE@56..58 "\n\n" + STRUCT@58..70 + STRUCT_KW@58..64 "struct" + WHITESPACE@64..65 " " + NAME@65..67 + IDENT@65..67 "S4" + GENERIC_PARAM_LIST@67..69 + L_ANGLE@67..68 "<" + R_ANGLE@68..69 ">" + SEMICOLON@69..70 ";" + WHITESPACE@70..71 "\n" + STRUCT@71..85 + STRUCT_KW@71..77 "struct" + WHITESPACE@77..78 " " + NAME@78..80 + IDENT@78..80 "S5" + GENERIC_PARAM_LIST@80..84 + L_ANGLE@80..81 "<" + LIFETIME_PARAM@81..83 + LIFETIME@81..83 "\'a" + R_ANGLE@83..84 ">" + SEMICOLON@84..85 ";" + WHITESPACE@85..86 "\n" + STRUCT@86..101 + STRUCT_KW@86..92 "struct" + WHITESPACE@92..93 " " + NAME@93..95 + IDENT@93..95 "S6" + GENERIC_PARAM_LIST@95..100 + L_ANGLE@95..96 "<" + LIFETIME_PARAM@96..99 + LIFETIME@96..98 "\'a" + COLON@98..99 ":" + R_ANGLE@99..100 ">" + SEMICOLON@100..101 ";" + WHITESPACE@101..102 "\n" + STRUCT@102..120 + STRUCT_KW@102..108 "struct" + WHITESPACE@108..109 " " + NAME@109..111 + IDENT@109..111 "S7" + GENERIC_PARAM_LIST@111..119 + L_ANGLE@111..112 "<" + LIFETIME_PARAM@112..118 + LIFETIME@112..114 "\'a" + COLON@114..115 ":" + WHITESPACE@115..116 " " + LIFETIME@116..118 "\'b" + R_ANGLE@118..119 ">" + SEMICOLON@119..120 ";" + WHITESPACE@120..121 "\n" + STRUCT@121..142 + STRUCT_KW@121..127 "struct" + WHITESPACE@127..128 " " + NAME@128..130 + IDENT@128..130 "S8" + GENERIC_PARAM_LIST@130..141 + L_ANGLE@130..131 "<" + LIFETIME_PARAM@131..139 + LIFETIME@131..133 "\'a" + COLON@133..134 ":" + WHITESPACE@134..135 " " + LIFETIME@135..137 "\'b" + WHITESPACE@137..138 " " + PLUS@138..139 "+" + WHITESPACE@139..140 " " + R_ANGLE@140..141 ">" + SEMICOLON@141..142 ";" + WHITESPACE@142..143 "\n" + STRUCT@143..166 + STRUCT_KW@143..149 "struct" + WHITESPACE@149..150 " " + NAME@150..152 + IDENT@150..152 "S9" + GENERIC_PARAM_LIST@152..165 + L_ANGLE@152..153 "<" + LIFETIME_PARAM@153..164 + LIFETIME@153..155 "\'a" + COLON@155..156 ":" + WHITESPACE@156..157 " " + LIFETIME@157..159 "\'b" + WHITESPACE@159..160 " " + PLUS@160..161 "+" + WHITESPACE@161..162 " " + LIFETIME@162..164 "\'c" + R_ANGLE@164..165 ">" + SEMICOLON@165..166 ";" + WHITESPACE@166..167 "\n" + STRUCT@167..183 + STRUCT_KW@167..173 "struct" + WHITESPACE@173..174 " " + NAME@174..177 + IDENT@174..177 "S10" + GENERIC_PARAM_LIST@177..182 + L_ANGLE@177..178 "<" + LIFETIME_PARAM@178..180 + LIFETIME@178..180 "\'a" + COMMA@180..181 "," + R_ANGLE@181..182 ">" + SEMICOLON@182..183 ";" + WHITESPACE@183..184 "\n" + STRUCT@184..203 + STRUCT_KW@184..190 "struct" + WHITESPACE@190..191 " " + NAME@191..194 + IDENT@191..194 "S11" + GENERIC_PARAM_LIST@194..202 + L_ANGLE@194..195 "<" + LIFETIME_PARAM@195..197 + LIFETIME@195..197 "\'a" + COMMA@197..198 "," + WHITESPACE@198..199 " " + LIFETIME_PARAM@199..201 + LIFETIME@199..201 "\'b" + R_ANGLE@201..202 ">" + SEMICOLON@202..203 ";" + WHITESPACE@203..204 "\n" + STRUCT@204..233 + STRUCT_KW@204..210 "struct" + WHITESPACE@210..211 " " + NAME@211..214 + IDENT@211..214 "S12" + GENERIC_PARAM_LIST@214..232 + L_ANGLE@214..215 "<" + LIFETIME_PARAM@215..222 + LIFETIME@215..217 "\'a" + COLON@217..218 ":" + WHITESPACE@218..219 " " + LIFETIME@219..221 "\'b" + PLUS@221..222 "+" + COMMA@222..223 "," + WHITESPACE@223..224 " " + LIFETIME_PARAM@224..230 + LIFETIME@224..226 "\'b" + COLON@226..227 ":" + WHITESPACE@227..228 " " + LIFETIME@228..230 "\'c" + COMMA@230..231 "," + R_ANGLE@231..232 ">" + SEMICOLON@232..233 ";" + WHITESPACE@233..235 "\n\n" + STRUCT@235..249 + STRUCT_KW@235..241 "struct" + WHITESPACE@241..242 " " + NAME@242..245 + IDENT@242..245 "S13" + GENERIC_PARAM_LIST@245..248 + L_ANGLE@245..246 "<" + TYPE_PARAM@246..247 + NAME@246..247 + IDENT@246..247 "T" + R_ANGLE@247..248 ">" + SEMICOLON@248..249 ";" + WHITESPACE@249..250 "\n" + STRUCT@250..267 + STRUCT_KW@250..256 "struct" + WHITESPACE@256..257 " " + NAME@257..260 + IDENT@257..260 "S14" + GENERIC_PARAM_LIST@260..266 + L_ANGLE@260..261 "<" + TYPE_PARAM@261..262 + NAME@261..262 + IDENT@261..262 "T" + COMMA@262..263 "," + WHITESPACE@263..264 " " + TYPE_PARAM@264..265 + NAME@264..265 + IDENT@264..265 "U" + R_ANGLE@265..266 ">" + SEMICOLON@266..267 ";" + WHITESPACE@267..268 "\n" + STRUCT@268..289 + STRUCT_KW@268..274 "struct" + WHITESPACE@274..275 " " + NAME@275..278 + IDENT@275..278 "S15" + GENERIC_PARAM_LIST@278..288 + L_ANGLE@278..279 "<" + LIFETIME_PARAM@279..281 + LIFETIME@279..281 "\'a" + COMMA@281..282 "," + WHITESPACE@282..283 " " + TYPE_PARAM@283..284 + NAME@283..284 + IDENT@283..284 "T" + COMMA@284..285 "," + WHITESPACE@285..286 " " + TYPE_PARAM@286..287 + NAME@286..287 + IDENT@286..287 "U" + R_ANGLE@287..288 ">" + SEMICOLON@288..289 ";" + WHITESPACE@289..290 "\n" diff --git a/crates/syntax/test_data/parser/ok/0018_struct_type_params.rs b/crates/syntax/test_data/parser/ok/0018_struct_type_params.rs new file mode 100644 index 00000000000..88c544923b5 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0018_struct_type_params.rs @@ -0,0 +1,17 @@ +struct S1; +struct S2(u32); +struct S3 { u: u32 } + +struct S4<>; +struct S5<'a>; +struct S6<'a:>; +struct S7<'a: 'b>; +struct S8<'a: 'b + >; +struct S9<'a: 'b + 'c>; +struct S10<'a,>; +struct S11<'a, 'b>; +struct S12<'a: 'b+, 'b: 'c,>; + +struct S13; +struct S14; +struct S15<'a, T, U>; diff --git a/crates/syntax/test_data/parser/ok/0019_enums.rast b/crates/syntax/test_data/parser/ok/0019_enums.rast new file mode 100644 index 00000000000..c3df008146d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0019_enums.rast @@ -0,0 +1,155 @@ +SOURCE_FILE@0..182 + ENUM@0..11 + ENUM_KW@0..4 "enum" + WHITESPACE@4..5 " " + NAME@5..7 + IDENT@5..7 "E1" + WHITESPACE@7..8 " " + VARIANT_LIST@8..11 + L_CURLY@8..9 "{" + WHITESPACE@9..10 "\n" + R_CURLY@10..11 "}" + WHITESPACE@11..13 "\n\n" + ENUM@13..27 + ENUM_KW@13..17 "enum" + WHITESPACE@17..18 " " + NAME@18..20 + IDENT@18..20 "E2" + GENERIC_PARAM_LIST@20..23 + L_ANGLE@20..21 "<" + TYPE_PARAM@21..22 + NAME@21..22 + IDENT@21..22 "T" + R_ANGLE@22..23 ">" + WHITESPACE@23..24 " " + VARIANT_LIST@24..27 + L_CURLY@24..25 "{" + WHITESPACE@25..26 "\n" + R_CURLY@26..27 "}" + WHITESPACE@27..29 "\n\n" + ENUM@29..46 + ENUM_KW@29..33 "enum" + WHITESPACE@33..34 " " + NAME@34..36 + IDENT@34..36 "E3" + WHITESPACE@36..37 " " + VARIANT_LIST@37..46 + L_CURLY@37..38 "{" + WHITESPACE@38..43 "\n " + VARIANT@43..44 + NAME@43..44 + IDENT@43..44 "X" + WHITESPACE@44..45 "\n" + R_CURLY@45..46 "}" + WHITESPACE@46..48 "\n\n" + ENUM@48..66 + ENUM_KW@48..52 "enum" + WHITESPACE@52..53 " " + NAME@53..55 + IDENT@53..55 "E4" + WHITESPACE@55..56 " " + VARIANT_LIST@56..66 + L_CURLY@56..57 "{" + WHITESPACE@57..62 "\n " + VARIANT@62..63 + NAME@62..63 + IDENT@62..63 "X" + COMMA@63..64 "," + WHITESPACE@64..65 "\n" + R_CURLY@65..66 "}" + WHITESPACE@66..68 "\n\n" + ENUM@68..181 + ENUM_KW@68..72 "enum" + WHITESPACE@72..73 " " + NAME@73..75 + IDENT@73..75 "E5" + WHITESPACE@75..76 " " + VARIANT_LIST@76..181 + L_CURLY@76..77 "{" + WHITESPACE@77..82 "\n " + VARIANT@82..83 + NAME@82..83 + IDENT@82..83 "A" + COMMA@83..84 "," + WHITESPACE@84..89 "\n " + VARIANT@89..95 + NAME@89..90 + IDENT@89..90 "B" + WHITESPACE@90..91 " " + EQ@91..92 "=" + WHITESPACE@92..93 " " + LITERAL@93..95 + INT_NUMBER@93..95 "92" + COMMA@95..96 "," + WHITESPACE@96..101 "\n " + VARIANT@101..146 + NAME@101..102 + IDENT@101..102 "C" + WHITESPACE@102..103 " " + RECORD_FIELD_LIST@103..146 + L_CURLY@103..104 "{" + WHITESPACE@104..113 "\n " + RECORD_FIELD@113..119 + NAME@113..114 + IDENT@113..114 "a" + COLON@114..115 ":" + WHITESPACE@115..116 " " + PATH_TYPE@116..119 + PATH@116..119 + PATH_SEGMENT@116..119 + NAME_REF@116..119 + IDENT@116..119 "u32" + COMMA@119..120 "," + WHITESPACE@120..129 "\n " + RECORD_FIELD@129..139 + VISIBILITY@129..132 + PUB_KW@129..132 "pub" + WHITESPACE@132..133 " " + NAME@133..134 + IDENT@133..134 "b" + COLON@134..135 ":" + WHITESPACE@135..136 " " + PATH_TYPE@136..139 + PATH@136..139 + PATH_SEGMENT@136..139 + NAME_REF@136..139 + IDENT@136..139 "f64" + COMMA@139..140 "," + WHITESPACE@140..145 "\n " + R_CURLY@145..146 "}" + COMMA@146..147 "," + WHITESPACE@147..152 "\n " + VARIANT@152..156 + NAME@152..153 + IDENT@152..153 "F" + WHITESPACE@153..154 " " + RECORD_FIELD_LIST@154..156 + L_CURLY@154..155 "{" + R_CURLY@155..156 "}" + COMMA@156..157 "," + WHITESPACE@157..162 "\n " + VARIANT@162..169 + NAME@162..163 + IDENT@162..163 "D" + TUPLE_FIELD_LIST@163..169 + L_PAREN@163..164 "(" + TUPLE_FIELD@164..167 + PATH_TYPE@164..167 + PATH@164..167 + PATH_SEGMENT@164..167 + NAME_REF@164..167 + IDENT@164..167 "u32" + COMMA@167..168 "," + R_PAREN@168..169 ")" + COMMA@169..170 "," + WHITESPACE@170..175 "\n " + VARIANT@175..178 + NAME@175..176 + IDENT@175..176 "E" + TUPLE_FIELD_LIST@176..178 + L_PAREN@176..177 "(" + R_PAREN@177..178 ")" + COMMA@178..179 "," + WHITESPACE@179..180 "\n" + R_CURLY@180..181 "}" + WHITESPACE@181..182 "\n" diff --git a/crates/syntax/test_data/parser/ok/0019_enums.rs b/crates/syntax/test_data/parser/ok/0019_enums.rs new file mode 100644 index 00000000000..7a1afa0e62f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0019_enums.rs @@ -0,0 +1,25 @@ +enum E1 { +} + +enum E2 { +} + +enum E3 { + X +} + +enum E4 { + X, +} + +enum E5 { + A, + B = 92, + C { + a: u32, + pub b: f64, + }, + F {}, + D(u32,), + E(), +} diff --git a/crates/syntax/test_data/parser/ok/0020_type_param_bounds.rast b/crates/syntax/test_data/parser/ok/0020_type_param_bounds.rast new file mode 100644 index 00000000000..9bdc50e1e79 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0020_type_param_bounds.rast @@ -0,0 +1,268 @@ +SOURCE_FILE@0..250 + STRUCT@0..12 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "A" + GENERIC_PARAM_LIST@8..11 + L_ANGLE@8..9 "<" + TYPE_PARAM@9..10 + NAME@9..10 + IDENT@9..10 "T" + R_ANGLE@10..11 ">" + SEMICOLON@11..12 ";" + WHITESPACE@12..13 "\n" + STRUCT@13..26 + STRUCT_KW@13..19 "struct" + WHITESPACE@19..20 " " + NAME@20..21 + IDENT@20..21 "B" + GENERIC_PARAM_LIST@21..25 + L_ANGLE@21..22 "<" + TYPE_PARAM@22..24 + NAME@22..23 + IDENT@22..23 "T" + COLON@23..24 ":" + TYPE_BOUND_LIST@24..24 + R_ANGLE@24..25 ">" + SEMICOLON@25..26 ";" + WHITESPACE@26..27 "\n" + STRUCT@27..43 + STRUCT_KW@27..33 "struct" + WHITESPACE@33..34 " " + NAME@34..35 + IDENT@34..35 "C" + GENERIC_PARAM_LIST@35..42 + L_ANGLE@35..36 "<" + TYPE_PARAM@36..41 + NAME@36..37 + IDENT@36..37 "T" + COLON@37..38 ":" + WHITESPACE@38..39 " " + TYPE_BOUND_LIST@39..41 + TYPE_BOUND@39..41 + LIFETIME@39..41 "\'a" + R_ANGLE@41..42 ">" + SEMICOLON@42..43 ";" + WHITESPACE@43..44 "\n" + STRUCT@44..63 + STRUCT_KW@44..50 "struct" + WHITESPACE@50..51 " " + NAME@51..52 + IDENT@51..52 "D" + GENERIC_PARAM_LIST@52..62 + L_ANGLE@52..53 "<" + TYPE_PARAM@53..60 + NAME@53..54 + IDENT@53..54 "T" + COLON@54..55 ":" + WHITESPACE@55..56 " " + TYPE_BOUND_LIST@56..60 + TYPE_BOUND@56..58 + LIFETIME@56..58 "\'a" + WHITESPACE@58..59 " " + PLUS@59..60 "+" + WHITESPACE@60..61 " " + R_ANGLE@61..62 ">" + SEMICOLON@62..63 ";" + WHITESPACE@63..64 "\n" + STRUCT@64..86 + STRUCT_KW@64..70 "struct" + WHITESPACE@70..71 " " + NAME@71..72 + IDENT@71..72 "E" + GENERIC_PARAM_LIST@72..85 + L_ANGLE@72..73 "<" + TYPE_PARAM@73..83 + NAME@73..74 + IDENT@73..74 "T" + COLON@74..75 ":" + WHITESPACE@75..76 " " + TYPE_BOUND_LIST@76..83 + TYPE_BOUND@76..78 + LIFETIME@76..78 "\'a" + WHITESPACE@78..79 " " + PLUS@79..80 "+" + WHITESPACE@80..81 " " + TYPE_BOUND@81..83 + LIFETIME@81..83 "\'d" + WHITESPACE@83..84 " " + R_ANGLE@84..85 ">" + SEMICOLON@85..86 ";" + WHITESPACE@86..87 "\n" + STRUCT@87..116 + STRUCT_KW@87..93 "struct" + WHITESPACE@93..94 " " + NAME@94..95 + IDENT@94..95 "F" + GENERIC_PARAM_LIST@95..115 + L_ANGLE@95..96 "<" + TYPE_PARAM@96..114 + NAME@96..97 + IDENT@96..97 "T" + COLON@97..98 ":" + WHITESPACE@98..99 " " + TYPE_BOUND_LIST@99..114 + TYPE_BOUND@99..101 + LIFETIME@99..101 "\'a" + WHITESPACE@101..102 " " + PLUS@102..103 "+" + WHITESPACE@103..104 " " + TYPE_BOUND@104..106 + LIFETIME@104..106 "\'d" + WHITESPACE@106..107 " " + PLUS@107..108 "+" + WHITESPACE@108..109 " " + TYPE_BOUND@109..114 + PATH_TYPE@109..114 + PATH@109..114 + PATH_SEGMENT@109..114 + NAME_REF@109..114 + IDENT@109..114 "Clone" + R_ANGLE@114..115 ">" + SEMICOLON@115..116 ";" + WHITESPACE@116..117 "\n" + STRUCT@117..143 + STRUCT_KW@117..123 "struct" + WHITESPACE@123..124 " " + NAME@124..125 + IDENT@124..125 "G" + GENERIC_PARAM_LIST@125..142 + L_ANGLE@125..126 "<" + TYPE_PARAM@126..141 + NAME@126..127 + IDENT@126..127 "T" + COLON@127..128 ":" + WHITESPACE@128..129 " " + TYPE_BOUND_LIST@129..141 + TYPE_BOUND@129..134 + PATH_TYPE@129..134 + PATH@129..134 + PATH_SEGMENT@129..134 + NAME_REF@129..134 + IDENT@129..134 "Clone" + WHITESPACE@134..135 " " + PLUS@135..136 "+" + WHITESPACE@136..137 " " + TYPE_BOUND@137..141 + PATH_TYPE@137..141 + PATH@137..141 + PATH_SEGMENT@137..141 + NAME_REF@137..141 + IDENT@137..141 "Copy" + R_ANGLE@141..142 ">" + SEMICOLON@142..143 ";" + WHITESPACE@143..144 "\n" + STRUCT@144..180 + STRUCT_KW@144..150 "struct" + WHITESPACE@150..151 " " + NAME@151..152 + IDENT@151..152 "H" + GENERIC_PARAM_LIST@152..179 + L_ANGLE@152..153 "<" + TYPE_PARAM@153..178 + NAME@153..154 + IDENT@153..154 "T" + COLON@154..155 ":" + WHITESPACE@155..156 " " + TYPE_BOUND_LIST@156..178 + TYPE_BOUND@156..161 + PATH_TYPE@156..161 + PATH@156..161 + PATH_SEGMENT@156..161 + COLON2@156..158 "::" + NAME_REF@158..161 + IDENT@158..161 "Foo" + WHITESPACE@161..162 " " + PLUS@162..163 "+" + WHITESPACE@163..164 " " + TYPE_BOUND@164..173 + PATH_TYPE@164..173 + PATH@164..173 + PATH@164..168 + PATH_SEGMENT@164..168 + SELF_KW@164..168 "self" + COLON2@168..170 "::" + PATH_SEGMENT@170..173 + NAME_REF@170..173 + IDENT@170..173 "Bar" + WHITESPACE@173..174 " " + PLUS@174..175 "+" + WHITESPACE@175..176 " " + TYPE_BOUND@176..178 + LIFETIME@176..178 "\'a" + R_ANGLE@178..179 ">" + SEMICOLON@179..180 ";" + WHITESPACE@180..181 "\n" + STRUCT@181..199 + STRUCT_KW@181..187 "struct" + WHITESPACE@187..188 " " + NAME@188..189 + IDENT@188..189 "I" + GENERIC_PARAM_LIST@189..198 + L_ANGLE@189..190 "<" + TYPE_PARAM@190..192 + NAME@190..191 + IDENT@190..191 "T" + COLON@191..192 ":" + TYPE_BOUND_LIST@192..192 + COMMA@192..193 "," + WHITESPACE@193..194 " " + TYPE_PARAM@194..196 + NAME@194..195 + IDENT@194..195 "U" + COLON@195..196 ":" + TYPE_BOUND_LIST@196..196 + COMMA@196..197 "," + R_ANGLE@197..198 ">" + SEMICOLON@198..199 ";" + WHITESPACE@199..200 "\n" + STRUCT@200..250 + STRUCT_KW@200..206 "struct" + WHITESPACE@206..207 " " + NAME@207..208 + IDENT@207..208 "K" + GENERIC_PARAM_LIST@208..249 + L_ANGLE@208..209 "<" + LIFETIME_PARAM@209..215 + LIFETIME@209..211 "\'a" + COLON@211..212 ":" + WHITESPACE@212..213 " " + LIFETIME@213..215 "\'d" + COMMA@215..216 "," + WHITESPACE@216..217 " " + LIFETIME_PARAM@217..228 + LIFETIME@217..219 "\'d" + COLON@219..220 ":" + WHITESPACE@220..221 " " + LIFETIME@221..223 "\'a" + WHITESPACE@223..224 " " + PLUS@224..225 "+" + WHITESPACE@225..226 " " + LIFETIME@226..228 "\'b" + COMMA@228..229 "," + WHITESPACE@229..230 " " + TYPE_PARAM@230..248 + NAME@230..231 + IDENT@230..231 "T" + COLON@231..232 ":" + WHITESPACE@232..233 " " + TYPE_BOUND_LIST@233..248 + TYPE_BOUND@233..235 + LIFETIME@233..235 "\'a" + WHITESPACE@235..236 " " + PLUS@236..237 "+" + WHITESPACE@237..238 " " + TYPE_BOUND@238..240 + LIFETIME@238..240 "\'d" + WHITESPACE@240..241 " " + PLUS@241..242 "+" + WHITESPACE@242..243 " " + TYPE_BOUND@243..248 + PATH_TYPE@243..248 + PATH@243..248 + PATH_SEGMENT@243..248 + NAME_REF@243..248 + IDENT@243..248 "Clone" + R_ANGLE@248..249 ">" + SEMICOLON@249..250 ";" diff --git a/crates/syntax/test_data/parser/ok/0020_type_param_bounds.rs b/crates/syntax/test_data/parser/ok/0020_type_param_bounds.rs new file mode 100644 index 00000000000..7128989789a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0020_type_param_bounds.rs @@ -0,0 +1,10 @@ +struct A; +struct B; +struct C; +struct D; +struct E; +struct F; +struct G; +struct H; +struct I; +struct K<'a: 'd, 'd: 'a + 'b, T: 'a + 'd + Clone>; \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0022_empty_extern_block.rast b/crates/syntax/test_data/parser/ok/0022_empty_extern_block.rast new file mode 100644 index 00000000000..26abae3b29d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0022_empty_extern_block.rast @@ -0,0 +1,21 @@ +SOURCE_FILE@0..27 + EXTERN_BLOCK@0..10 + ABI@0..6 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + EXTERN_ITEM_LIST@7..10 + L_CURLY@7..8 "{" + WHITESPACE@8..9 "\n" + R_CURLY@9..10 "}" + WHITESPACE@10..12 "\n\n" + EXTERN_BLOCK@12..26 + ABI@12..22 + EXTERN_KW@12..18 "extern" + WHITESPACE@18..19 " " + STRING@19..22 "\"C\"" + WHITESPACE@22..23 " " + EXTERN_ITEM_LIST@23..26 + L_CURLY@23..24 "{" + WHITESPACE@24..25 "\n" + R_CURLY@25..26 "}" + WHITESPACE@26..27 "\n" diff --git a/crates/syntax/test_data/parser/ok/0022_empty_extern_block.rs b/crates/syntax/test_data/parser/ok/0022_empty_extern_block.rs new file mode 100644 index 00000000000..f5fe0e6ef30 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0022_empty_extern_block.rs @@ -0,0 +1,5 @@ +extern { +} + +extern "C" { +} diff --git a/crates/syntax/test_data/parser/ok/0023_static_items.rast b/crates/syntax/test_data/parser/ok/0023_static_items.rast new file mode 100644 index 00000000000..9374cf5e965 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0023_static_items.rast @@ -0,0 +1,41 @@ +SOURCE_FILE@0..47 + STATIC@0..20 + STATIC_KW@0..6 "static" + WHITESPACE@6..7 " " + NAME@7..10 + IDENT@7..10 "FOO" + COLON@10..11 ":" + WHITESPACE@11..12 " " + PATH_TYPE@12..15 + PATH@12..15 + PATH_SEGMENT@12..15 + NAME_REF@12..15 + IDENT@12..15 "u32" + WHITESPACE@15..16 " " + EQ@16..17 "=" + WHITESPACE@17..18 " " + LITERAL@18..19 + INT_NUMBER@18..19 "1" + SEMICOLON@19..20 ";" + WHITESPACE@20..21 "\n" + STATIC@21..46 + STATIC_KW@21..27 "static" + WHITESPACE@27..28 " " + MUT_KW@28..31 "mut" + WHITESPACE@31..32 " " + NAME@32..35 + IDENT@32..35 "BAR" + COLON@35..36 ":" + WHITESPACE@36..37 " " + PATH_TYPE@37..40 + PATH@37..40 + PATH_SEGMENT@37..40 + NAME_REF@37..40 + IDENT@37..40 "i32" + WHITESPACE@40..41 " " + EQ@41..42 "=" + WHITESPACE@42..43 " " + LITERAL@43..45 + INT_NUMBER@43..45 "92" + SEMICOLON@45..46 ";" + WHITESPACE@46..47 "\n" diff --git a/crates/syntax/test_data/parser/ok/0023_static_items.rs b/crates/syntax/test_data/parser/ok/0023_static_items.rs new file mode 100644 index 00000000000..5fb92ce33f0 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0023_static_items.rs @@ -0,0 +1,2 @@ +static FOO: u32 = 1; +static mut BAR: i32 = 92; diff --git a/crates/syntax/test_data/parser/ok/0024_const_item.rast b/crates/syntax/test_data/parser/ok/0024_const_item.rast new file mode 100644 index 00000000000..dd1b9c9a0a4 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0024_const_item.rast @@ -0,0 +1,59 @@ +SOURCE_FILE@0..64 + CONST@0..17 + CONST_KW@0..5 "const" + WHITESPACE@5..6 " " + UNDERSCORE@6..7 "_" + COLON@7..8 ":" + WHITESPACE@8..9 " " + PATH_TYPE@9..12 + PATH@9..12 + PATH_SEGMENT@9..12 + NAME_REF@9..12 + IDENT@9..12 "u32" + WHITESPACE@12..13 " " + EQ@13..14 "=" + WHITESPACE@14..15 " " + LITERAL@15..16 + INT_NUMBER@15..16 "0" + SEMICOLON@16..17 ";" + WHITESPACE@17..18 "\n" + CONST@18..38 + CONST_KW@18..23 "const" + WHITESPACE@23..24 " " + NAME@24..27 + IDENT@24..27 "FOO" + COLON@27..28 ":" + WHITESPACE@28..29 " " + PATH_TYPE@29..32 + PATH@29..32 + PATH_SEGMENT@29..32 + NAME_REF@29..32 + IDENT@29..32 "u32" + WHITESPACE@32..33 " " + EQ@33..34 "=" + WHITESPACE@34..35 " " + LITERAL@35..37 + INT_NUMBER@35..37 "92" + SEMICOLON@37..38 ";" + WHITESPACE@38..39 "\n" + CONST@39..63 + CONST_KW@39..44 "const" + WHITESPACE@44..45 " " + MUT_KW@45..48 "mut" + WHITESPACE@48..49 " " + NAME@49..52 + IDENT@49..52 "BAR" + COLON@52..53 ":" + WHITESPACE@53..54 " " + PATH_TYPE@54..57 + PATH@54..57 + PATH_SEGMENT@54..57 + NAME_REF@54..57 + IDENT@54..57 "u32" + WHITESPACE@57..58 " " + EQ@58..59 "=" + WHITESPACE@59..60 " " + LITERAL@60..62 + INT_NUMBER@60..62 "62" + SEMICOLON@62..63 ";" + WHITESPACE@63..64 "\n" diff --git a/crates/syntax/test_data/parser/ok/0024_const_item.rs b/crates/syntax/test_data/parser/ok/0024_const_item.rs new file mode 100644 index 00000000000..a806a209dc1 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0024_const_item.rs @@ -0,0 +1,3 @@ +const _: u32 = 0; +const FOO: u32 = 92; +const mut BAR: u32 = 62; diff --git a/crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rast b/crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rast new file mode 100644 index 00000000000..bb6527b484a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rast @@ -0,0 +1,31 @@ +SOURCE_FILE@0..35 + FN@0..34 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..34 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + FN@16..32 + ABI@16..22 + EXTERN_KW@16..22 "extern" + WHITESPACE@22..23 " " + FN_KW@23..25 "fn" + WHITESPACE@25..26 " " + NAME@26..27 + IDENT@26..27 "f" + PARAM_LIST@27..29 + L_PAREN@27..28 "(" + R_PAREN@28..29 ")" + WHITESPACE@29..30 " " + BLOCK_EXPR@30..32 + L_CURLY@30..31 "{" + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" + R_CURLY@33..34 "}" + WHITESPACE@34..35 "\n" diff --git a/crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rs b/crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rs new file mode 100644 index 00000000000..289809809a6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0025_extern_fn_in_block.rs @@ -0,0 +1,3 @@ +fn main() { + extern fn f() {} +} diff --git a/crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rast b/crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rast new file mode 100644 index 00000000000..5bcf54deb69 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rast @@ -0,0 +1,30 @@ +SOURCE_FILE@0..34 + FN@0..33 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..33 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + FN@16..31 + CONST_KW@16..21 "const" + WHITESPACE@21..22 " " + FN_KW@22..24 "fn" + WHITESPACE@24..25 " " + NAME@25..26 + IDENT@25..26 "f" + PARAM_LIST@26..28 + L_PAREN@26..27 "(" + R_PAREN@27..28 ")" + WHITESPACE@28..29 " " + BLOCK_EXPR@29..31 + L_CURLY@29..30 "{" + R_CURLY@30..31 "}" + WHITESPACE@31..32 "\n" + R_CURLY@32..33 "}" + WHITESPACE@33..34 "\n" diff --git a/crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rs b/crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rs new file mode 100644 index 00000000000..7641a3d28e6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0026_const_fn_in_block.rs @@ -0,0 +1,3 @@ +fn main() { + const fn f() {} +} diff --git a/crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast b/crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast new file mode 100644 index 00000000000..a7cc122951f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast @@ -0,0 +1,41 @@ +SOURCE_FILE@0..53 + FN@0..52 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..52 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + FN@16..32 + UNSAFE_KW@16..22 "unsafe" + WHITESPACE@22..23 " " + FN_KW@23..25 "fn" + WHITESPACE@25..26 " " + NAME@26..27 + IDENT@26..27 "f" + PARAM_LIST@27..29 + L_PAREN@27..28 "(" + R_PAREN@28..29 ")" + WHITESPACE@29..30 " " + BLOCK_EXPR@30..32 + L_CURLY@30..31 "{" + R_CURLY@31..32 "}" + WHITESPACE@32..37 "\n " + EFFECT_EXPR@37..50 + UNSAFE_KW@37..43 "unsafe" + WHITESPACE@43..44 " " + BLOCK_EXPR@44..50 + L_CURLY@44..45 "{" + WHITESPACE@45..46 " " + LITERAL@46..48 + INT_NUMBER@46..48 "92" + WHITESPACE@48..49 " " + R_CURLY@49..50 "}" + WHITESPACE@50..51 "\n" + R_CURLY@51..52 "}" + WHITESPACE@52..53 "\n" diff --git a/crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rs b/crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rs new file mode 100644 index 00000000000..f3c5ff93863 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rs @@ -0,0 +1,4 @@ +fn main() { + unsafe fn f() {} + unsafe { 92 } +} diff --git a/crates/syntax/test_data/parser/ok/0028_operator_binding_power.rast b/crates/syntax/test_data/parser/ok/0028_operator_binding_power.rast new file mode 100644 index 00000000000..3271a4695d2 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0028_operator_binding_power.rast @@ -0,0 +1,185 @@ +SOURCE_FILE@0..248 + FN@0..247 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..16 + IDENT@3..16 "binding_power" + PARAM_LIST@16..18 + L_PAREN@16..17 "(" + R_PAREN@17..18 ")" + WHITESPACE@18..19 " " + BLOCK_EXPR@19..247 + L_CURLY@19..20 "{" + WHITESPACE@20..25 "\n " + LET_STMT@25..55 + LET_KW@25..28 "let" + WHITESPACE@28..29 " " + IDENT_PAT@29..30 + NAME@29..30 + IDENT@29..30 "x" + WHITESPACE@30..31 " " + EQ@31..32 "=" + WHITESPACE@32..33 " " + BIN_EXPR@33..54 + BIN_EXPR@33..46 + LITERAL@33..34 + INT_NUMBER@33..34 "1" + WHITESPACE@34..35 " " + PLUS@35..36 "+" + WHITESPACE@36..37 " " + BIN_EXPR@37..46 + BIN_EXPR@37..42 + LITERAL@37..38 + INT_NUMBER@37..38 "2" + WHITESPACE@38..39 " " + STAR@39..40 "*" + WHITESPACE@40..41 " " + LITERAL@41..42 + INT_NUMBER@41..42 "3" + WHITESPACE@42..43 " " + PERCENT@43..44 "%" + WHITESPACE@44..45 " " + LITERAL@45..46 + INT_NUMBER@45..46 "4" + WHITESPACE@46..47 " " + MINUS@47..48 "-" + WHITESPACE@48..49 " " + BIN_EXPR@49..54 + LITERAL@49..50 + INT_NUMBER@49..50 "5" + WHITESPACE@50..51 " " + SLASH@51..52 "/" + WHITESPACE@52..53 " " + LITERAL@53..54 + INT_NUMBER@53..54 "6" + SEMICOLON@54..55 ";" + WHITESPACE@55..60 "\n " + EXPR_STMT@60..70 + BIN_EXPR@60..69 + LITERAL@60..61 + INT_NUMBER@60..61 "1" + WHITESPACE@61..62 " " + PLUS@62..63 "+" + WHITESPACE@63..64 " " + BIN_EXPR@64..69 + LITERAL@64..65 + INT_NUMBER@64..65 "2" + WHITESPACE@65..66 " " + STAR@66..67 "*" + WHITESPACE@67..68 " " + LITERAL@68..69 + INT_NUMBER@68..69 "3" + SEMICOLON@69..70 ";" + WHITESPACE@70..75 "\n " + EXPR_STMT@75..86 + BIN_EXPR@75..85 + LITERAL@75..76 + INT_NUMBER@75..76 "1" + WHITESPACE@76..77 " " + SHL@77..79 "<<" + WHITESPACE@79..80 " " + BIN_EXPR@80..85 + LITERAL@80..81 + INT_NUMBER@80..81 "2" + WHITESPACE@81..82 " " + PLUS@82..83 "+" + WHITESPACE@83..84 " " + LITERAL@84..85 + INT_NUMBER@84..85 "3" + SEMICOLON@85..86 ";" + WHITESPACE@86..91 "\n " + EXPR_STMT@91..102 + BIN_EXPR@91..101 + LITERAL@91..92 + INT_NUMBER@91..92 "1" + WHITESPACE@92..93 " " + AMP@93..94 "&" + WHITESPACE@94..95 " " + BIN_EXPR@95..101 + LITERAL@95..96 + INT_NUMBER@95..96 "2" + WHITESPACE@96..97 " " + SHR@97..99 ">>" + WHITESPACE@99..100 " " + LITERAL@100..101 + INT_NUMBER@100..101 "3" + SEMICOLON@101..102 ";" + WHITESPACE@102..107 "\n " + EXPR_STMT@107..117 + BIN_EXPR@107..116 + LITERAL@107..108 + INT_NUMBER@107..108 "1" + WHITESPACE@108..109 " " + CARET@109..110 "^" + WHITESPACE@110..111 " " + BIN_EXPR@111..116 + LITERAL@111..112 + INT_NUMBER@111..112 "2" + WHITESPACE@112..113 " " + AMP@113..114 "&" + WHITESPACE@114..115 " " + LITERAL@115..116 + INT_NUMBER@115..116 "3" + SEMICOLON@116..117 ";" + WHITESPACE@117..122 "\n " + EXPR_STMT@122..132 + BIN_EXPR@122..131 + LITERAL@122..123 + INT_NUMBER@122..123 "1" + WHITESPACE@123..124 " " + PIPE@124..125 "|" + WHITESPACE@125..126 " " + BIN_EXPR@126..131 + LITERAL@126..127 + INT_NUMBER@126..127 "2" + WHITESPACE@127..128 " " + CARET@128..129 "^" + WHITESPACE@129..130 " " + LITERAL@130..131 + INT_NUMBER@130..131 "3" + SEMICOLON@131..132 ";" + WHITESPACE@132..137 "\n " + EXPR_STMT@137..148 + BIN_EXPR@137..147 + LITERAL@137..138 + INT_NUMBER@137..138 "1" + WHITESPACE@138..139 " " + EQ2@139..141 "==" + WHITESPACE@141..142 " " + BIN_EXPR@142..147 + LITERAL@142..143 + INT_NUMBER@142..143 "2" + WHITESPACE@143..144 " " + PIPE@144..145 "|" + WHITESPACE@145..146 " " + LITERAL@146..147 + INT_NUMBER@146..147 "3" + SEMICOLON@147..148 ";" + WHITESPACE@148..153 "\n " + EXPR_STMT@153..165 + BIN_EXPR@153..164 + LITERAL@153..154 + INT_NUMBER@153..154 "1" + WHITESPACE@154..155 " " + AMP2@155..157 "&&" + WHITESPACE@157..158 " " + BIN_EXPR@158..164 + LITERAL@158..159 + INT_NUMBER@158..159 "2" + WHITESPACE@159..160 " " + EQ2@160..162 "==" + WHITESPACE@162..163 " " + LITERAL@163..164 + INT_NUMBER@163..164 "3" + SEMICOLON@164..165 ";" + WHITESPACE@165..170 "\n " + COMMENT@170..184 "//1 || 2 && 2;" + WHITESPACE@184..189 "\n " + COMMENT@189..203 "//1 .. 2 || 3;" + WHITESPACE@203..208 "\n " + COMMENT@208..221 "//1 = 2 .. 3;" + WHITESPACE@221..226 "\n " + COMMENT@226..245 "//---&*1 - --2 * 9;" + WHITESPACE@245..246 "\n" + R_CURLY@246..247 "}" + WHITESPACE@247..248 "\n" diff --git a/crates/syntax/test_data/parser/ok/0028_operator_binding_power.rs b/crates/syntax/test_data/parser/ok/0028_operator_binding_power.rs new file mode 100644 index 00000000000..cc9598470d8 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0028_operator_binding_power.rs @@ -0,0 +1,14 @@ +fn binding_power() { + let x = 1 + 2 * 3 % 4 - 5 / 6; + 1 + 2 * 3; + 1 << 2 + 3; + 1 & 2 >> 3; + 1 ^ 2 & 3; + 1 | 2 ^ 3; + 1 == 2 | 3; + 1 && 2 == 3; + //1 || 2 && 2; + //1 .. 2 || 3; + //1 = 2 .. 3; + //---&*1 - --2 * 9; +} diff --git a/crates/syntax/test_data/parser/ok/0029_range_forms.rast b/crates/syntax/test_data/parser/ok/0029_range_forms.rast new file mode 100644 index 00000000000..a732f11c430 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0029_range_forms.rast @@ -0,0 +1,151 @@ +SOURCE_FILE@0..153 + FN@0..152 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..152 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..23 + RANGE_EXPR@15..22 + DOT2@15..17 ".." + BIN_EXPR@17..22 + LITERAL@17..18 + INT_NUMBER@17..18 "1" + WHITESPACE@18..19 " " + PLUS@19..20 "+" + WHITESPACE@20..21 " " + LITERAL@21..22 + INT_NUMBER@21..22 "1" + SEMICOLON@22..23 ";" + WHITESPACE@23..28 "\n " + EXPR_STMT@28..36 + BIN_EXPR@28..35 + RANGE_EXPR@28..31 + DOT2@28..30 ".." + PATH_EXPR@30..31 + PATH@30..31 + PATH_SEGMENT@30..31 + NAME_REF@30..31 + IDENT@30..31 "z" + WHITESPACE@31..32 " " + EQ@32..33 "=" + WHITESPACE@33..34 " " + LITERAL@34..35 + INT_NUMBER@34..35 "2" + SEMICOLON@35..36 ";" + WHITESPACE@36..41 "\n " + EXPR_STMT@41..59 + BIN_EXPR@41..58 + PATH_EXPR@41..42 + PATH@41..42 + PATH_SEGMENT@41..42 + NAME_REF@41..42 + IDENT@41..42 "x" + WHITESPACE@42..43 " " + EQ@43..44 "=" + WHITESPACE@44..45 " " + RANGE_EXPR@45..58 + LITERAL@45..50 + FALSE_KW@45..50 "false" + DOT2@50..52 ".." + BIN_EXPR@52..58 + LITERAL@52..53 + INT_NUMBER@52..53 "1" + WHITESPACE@53..54 " " + EQ2@54..56 "==" + WHITESPACE@56..57 " " + LITERAL@57..58 + INT_NUMBER@57..58 "1" + SEMICOLON@58..59 ";" + WHITESPACE@59..64 "\n " + LET_STMT@64..76 + LET_KW@64..67 "let" + WHITESPACE@67..68 " " + IDENT_PAT@68..69 + NAME@68..69 + IDENT@68..69 "x" + WHITESPACE@69..70 " " + EQ@70..71 "=" + WHITESPACE@71..72 " " + RANGE_EXPR@72..75 + LITERAL@72..73 + INT_NUMBER@72..73 "1" + DOT2@73..75 ".." + SEMICOLON@75..76 ";" + WHITESPACE@76..86 "\n \n " + EXPR_STMT@86..95 + RANGE_EXPR@86..94 + DOT2EQ@86..89 "..=" + BIN_EXPR@89..94 + LITERAL@89..90 + INT_NUMBER@89..90 "1" + WHITESPACE@90..91 " " + PLUS@91..92 "+" + WHITESPACE@92..93 " " + LITERAL@93..94 + INT_NUMBER@93..94 "1" + SEMICOLON@94..95 ";" + WHITESPACE@95..100 "\n " + EXPR_STMT@100..109 + BIN_EXPR@100..108 + RANGE_EXPR@100..104 + DOT2EQ@100..103 "..=" + PATH_EXPR@103..104 + PATH@103..104 + PATH_SEGMENT@103..104 + NAME_REF@103..104 + IDENT@103..104 "z" + WHITESPACE@104..105 " " + EQ@105..106 "=" + WHITESPACE@106..107 " " + LITERAL@107..108 + INT_NUMBER@107..108 "2" + SEMICOLON@108..109 ";" + WHITESPACE@109..114 "\n " + EXPR_STMT@114..133 + BIN_EXPR@114..132 + PATH_EXPR@114..115 + PATH@114..115 + PATH_SEGMENT@114..115 + NAME_REF@114..115 + IDENT@114..115 "x" + WHITESPACE@115..116 " " + EQ@116..117 "=" + WHITESPACE@117..118 " " + RANGE_EXPR@118..132 + LITERAL@118..123 + FALSE_KW@118..123 "false" + DOT2EQ@123..126 "..=" + BIN_EXPR@126..132 + LITERAL@126..127 + INT_NUMBER@126..127 "1" + WHITESPACE@127..128 " " + EQ2@128..130 "==" + WHITESPACE@130..131 " " + LITERAL@131..132 + INT_NUMBER@131..132 "1" + SEMICOLON@132..133 ";" + WHITESPACE@133..138 "\n " + LET_STMT@138..150 + LET_KW@138..141 "let" + WHITESPACE@141..142 " " + IDENT_PAT@142..143 + NAME@142..143 + IDENT@142..143 "x" + WHITESPACE@143..144 " " + EQ@144..145 "=" + WHITESPACE@145..146 " " + RANGE_EXPR@146..149 + LITERAL@146..147 + INT_NUMBER@146..147 "1" + DOT2@147..149 ".." + SEMICOLON@149..150 ";" + WHITESPACE@150..151 "\n" + R_CURLY@151..152 "}" + WHITESPACE@152..153 "\n" diff --git a/crates/syntax/test_data/parser/ok/0029_range_forms.rs b/crates/syntax/test_data/parser/ok/0029_range_forms.rs new file mode 100644 index 00000000000..f9ff444d400 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0029_range_forms.rs @@ -0,0 +1,11 @@ +fn foo() { + ..1 + 1; + ..z = 2; + x = false..1 == 1; + let x = 1..; + + ..=1 + 1; + ..=z = 2; + x = false..=1 == 1; + let x = 1..; +} diff --git a/crates/syntax/test_data/parser/ok/0030_string_suffixes.rast b/crates/syntax/test_data/parser/ok/0030_string_suffixes.rast new file mode 100644 index 00000000000..80f7f5942c0 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0030_string_suffixes.rast @@ -0,0 +1,63 @@ +SOURCE_FILE@0..112 + FN@0..111 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..111 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + LET_STMT@16..31 + LET_KW@16..19 "let" + WHITESPACE@19..20 " " + WILDCARD_PAT@20..21 + UNDERSCORE@20..21 "_" + WHITESPACE@21..22 " " + EQ@22..23 "=" + WHITESPACE@23..24 " " + LITERAL@24..30 + CHAR@24..30 "\'c\'u32" + SEMICOLON@30..31 ";" + WHITESPACE@31..36 "\n " + LET_STMT@36..60 + LET_KW@36..39 "let" + WHITESPACE@39..40 " " + WILDCARD_PAT@40..41 + UNDERSCORE@40..41 "_" + WHITESPACE@41..42 " " + EQ@42..43 "=" + WHITESPACE@43..44 " " + LITERAL@44..59 + STRING@44..59 "\"string\"invalid" + SEMICOLON@59..60 ";" + WHITESPACE@60..65 "\n " + LET_STMT@65..83 + LET_KW@65..68 "let" + WHITESPACE@68..69 " " + WILDCARD_PAT@69..70 + UNDERSCORE@69..70 "_" + WHITESPACE@70..71 " " + EQ@71..72 "=" + WHITESPACE@72..73 " " + LITERAL@73..82 + BYTE@73..82 "b\'b\'_suff" + SEMICOLON@82..83 ";" + WHITESPACE@83..88 "\n " + LET_STMT@88..109 + LET_KW@88..91 "let" + WHITESPACE@91..92 " " + WILDCARD_PAT@92..93 + UNDERSCORE@92..93 "_" + WHITESPACE@93..94 " " + EQ@94..95 "=" + WHITESPACE@95..96 " " + LITERAL@96..108 + BYTE_STRING@96..108 "b\"bs\"invalid" + SEMICOLON@108..109 ";" + WHITESPACE@109..110 "\n" + R_CURLY@110..111 "}" + WHITESPACE@111..112 "\n" diff --git a/crates/syntax/test_data/parser/ok/0030_string_suffixes.rs b/crates/syntax/test_data/parser/ok/0030_string_suffixes.rs new file mode 100644 index 00000000000..261aad1fb6b --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0030_string_suffixes.rs @@ -0,0 +1,6 @@ +fn main() { + let _ = 'c'u32; + let _ = "string"invalid; + let _ = b'b'_suff; + let _ = b"bs"invalid; +} diff --git a/crates/syntax/test_data/parser/ok/0030_traits.rast b/crates/syntax/test_data/parser/ok/0030_traits.rast new file mode 100644 index 00000000000..d07c6683a3d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0030_traits.rast @@ -0,0 +1,61 @@ +SOURCE_FILE@0..96 + TRAIT@0..36 + TRAIT_KW@0..5 "trait" + WHITESPACE@5..6 " " + NAME@6..14 + IDENT@6..14 "Runnable" + WHITESPACE@14..15 " " + ASSOC_ITEM_LIST@15..36 + L_CURLY@15..16 "{" + WHITESPACE@16..21 "\n " + FN@21..34 + FN_KW@21..23 "fn" + WHITESPACE@23..24 " " + NAME@24..31 + IDENT@24..31 "handler" + PARAM_LIST@31..33 + L_PAREN@31..32 "(" + R_PAREN@32..33 ")" + SEMICOLON@33..34 ";" + WHITESPACE@34..35 "\n" + R_CURLY@35..36 "}" + WHITESPACE@36..38 "\n\n" + TRAIT@38..95 + TRAIT_KW@38..43 "trait" + WHITESPACE@43..44 " " + NAME@44..57 + IDENT@44..57 "TraitWithExpr" + WHITESPACE@57..58 " " + ASSOC_ITEM_LIST@58..95 + L_CURLY@58..59 "{" + WHITESPACE@59..64 "\n " + FN@64..93 + FN_KW@64..66 "fn" + WHITESPACE@66..67 " " + NAME@67..79 + IDENT@67..79 "fn_with_expr" + PARAM_LIST@79..92 + L_PAREN@79..80 "(" + PARAM@80..91 + IDENT_PAT@80..81 + NAME@80..81 + IDENT@80..81 "x" + COLON@81..82 ":" + WHITESPACE@82..83 " " + ARRAY_TYPE@83..91 + L_BRACK@83..84 "[" + PATH_TYPE@84..87 + PATH@84..87 + PATH_SEGMENT@84..87 + NAME_REF@84..87 + IDENT@84..87 "i32" + SEMICOLON@87..88 ";" + WHITESPACE@88..89 " " + LITERAL@89..90 + INT_NUMBER@89..90 "1" + R_BRACK@90..91 "]" + R_PAREN@91..92 ")" + SEMICOLON@92..93 ";" + WHITESPACE@93..94 "\n" + R_CURLY@94..95 "}" + WHITESPACE@95..96 "\n" diff --git a/crates/syntax/test_data/parser/ok/0030_traits.rs b/crates/syntax/test_data/parser/ok/0030_traits.rs new file mode 100644 index 00000000000..ac30843eff6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0030_traits.rs @@ -0,0 +1,7 @@ +trait Runnable { + fn handler(); +} + +trait TraitWithExpr { + fn fn_with_expr(x: [i32; 1]); +} diff --git a/crates/syntax/test_data/parser/ok/0031_extern.rast b/crates/syntax/test_data/parser/ok/0031_extern.rast new file mode 100644 index 00000000000..8150d445f37 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0031_extern.rast @@ -0,0 +1,973 @@ +SOURCE_FILE@0..1598 + EXTERN_BLOCK@0..1597 + ABI@0..6 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + EXTERN_ITEM_LIST@7..1597 + L_CURLY@7..8 "{" + WHITESPACE@8..13 "\n " + FN@13..87 + VISIBILITY@13..16 + PUB_KW@13..16 "pub" + WHITESPACE@16..17 " " + FN_KW@17..19 "fn" + WHITESPACE@19..20 " " + NAME@20..26 + IDENT@20..26 "socket" + PARAM_LIST@26..75 + L_PAREN@26..27 "(" + PARAM@27..42 + IDENT_PAT@27..33 + NAME@27..33 + IDENT@27..33 "domain" + COLON@33..34 ":" + WHITESPACE@34..35 " " + PATH_TYPE@35..42 + PATH@35..42 + PATH_SEGMENT@35..42 + COLON2@35..37 "::" + NAME_REF@37..42 + IDENT@37..42 "c_int" + COMMA@42..43 "," + WHITESPACE@43..44 " " + PARAM@44..55 + IDENT_PAT@44..46 + NAME@44..46 + IDENT@44..46 "ty" + COLON@46..47 ":" + WHITESPACE@47..48 " " + PATH_TYPE@48..55 + PATH@48..55 + PATH_SEGMENT@48..55 + COLON2@48..50 "::" + NAME_REF@50..55 + IDENT@50..55 "c_int" + COMMA@55..56 "," + WHITESPACE@56..57 " " + PARAM@57..74 + IDENT_PAT@57..65 + NAME@57..65 + IDENT@57..65 "protocol" + COLON@65..66 ":" + WHITESPACE@66..67 " " + PATH_TYPE@67..74 + PATH@67..74 + PATH_SEGMENT@67..74 + COLON2@67..69 "::" + NAME_REF@69..74 + IDENT@69..74 "c_int" + R_PAREN@74..75 ")" + WHITESPACE@75..76 " " + RET_TYPE@76..86 + THIN_ARROW@76..78 "->" + WHITESPACE@78..79 " " + PATH_TYPE@79..86 + PATH@79..86 + PATH_SEGMENT@79..86 + COLON2@79..81 "::" + NAME_REF@81..86 + IDENT@81..86 "c_int" + SEMICOLON@86..87 ";" + WHITESPACE@87..92 "\n " + FN@92..167 + VISIBILITY@92..95 + PUB_KW@92..95 "pub" + WHITESPACE@95..96 " " + FN_KW@96..98 "fn" + WHITESPACE@98..99 " " + NAME@99..103 + IDENT@99..103 "bind" + PARAM_LIST@103..155 + L_PAREN@103..104 "(" + PARAM@104..115 + IDENT_PAT@104..106 + NAME@104..106 + IDENT@104..106 "fd" + COLON@106..107 ":" + WHITESPACE@107..108 " " + PATH_TYPE@108..115 + PATH@108..115 + PATH_SEGMENT@108..115 + COLON2@108..110 "::" + NAME_REF@110..115 + IDENT@110..115 "c_int" + COMMA@115..116 "," + WHITESPACE@116..117 " " + PARAM@117..138 + IDENT_PAT@117..121 + NAME@117..121 + IDENT@117..121 "addr" + COLON@121..122 ":" + WHITESPACE@122..123 " " + PTR_TYPE@123..138 + STAR@123..124 "*" + CONST_KW@124..129 "const" + WHITESPACE@129..130 " " + PATH_TYPE@130..138 + PATH@130..138 + PATH_SEGMENT@130..138 + NAME_REF@130..138 + IDENT@130..138 "sockaddr" + COMMA@138..139 "," + WHITESPACE@139..140 " " + PARAM@140..154 + IDENT_PAT@140..143 + NAME@140..143 + IDENT@140..143 "len" + COLON@143..144 ":" + WHITESPACE@144..145 " " + PATH_TYPE@145..154 + PATH@145..154 + PATH_SEGMENT@145..154 + NAME_REF@145..154 + IDENT@145..154 "socklen_t" + R_PAREN@154..155 ")" + WHITESPACE@155..156 " " + RET_TYPE@156..166 + THIN_ARROW@156..158 "->" + WHITESPACE@158..159 " " + PATH_TYPE@159..166 + PATH@159..166 + PATH_SEGMENT@159..166 + COLON2@159..161 "::" + NAME_REF@161..166 + IDENT@161..166 "c_int" + SEMICOLON@166..167 ";" + WHITESPACE@167..172 "\n " + FN@172..276 + VISIBILITY@172..175 + PUB_KW@172..175 "pub" + WHITESPACE@175..176 " " + FN_KW@176..178 "fn" + WHITESPACE@178..179 " " + NAME@179..186 + IDENT@179..186 "connect" + PARAM_LIST@186..264 + L_PAREN@186..187 "(" + PARAM@187..202 + IDENT_PAT@187..193 + NAME@187..193 + IDENT@187..193 "socket" + COLON@193..194 ":" + WHITESPACE@194..195 " " + PATH_TYPE@195..202 + PATH@195..202 + PATH_SEGMENT@195..202 + COLON2@195..197 "::" + NAME_REF@197..202 + IDENT@197..202 "c_int" + COMMA@202..203 "," + WHITESPACE@203..204 " " + PARAM@204..228 + IDENT_PAT@204..211 + NAME@204..211 + IDENT@204..211 "address" + COLON@211..212 ":" + WHITESPACE@212..213 " " + PTR_TYPE@213..228 + STAR@213..214 "*" + CONST_KW@214..219 "const" + WHITESPACE@219..220 " " + PATH_TYPE@220..228 + PATH@220..228 + PATH_SEGMENT@220..228 + NAME_REF@220..228 + IDENT@220..228 "sockaddr" + COMMA@228..229 "," + WHITESPACE@229..249 "\n " + PARAM@249..263 + IDENT_PAT@249..252 + NAME@249..252 + IDENT@249..252 "len" + COLON@252..253 ":" + WHITESPACE@253..254 " " + PATH_TYPE@254..263 + PATH@254..263 + PATH_SEGMENT@254..263 + NAME_REF@254..263 + IDENT@254..263 "socklen_t" + R_PAREN@263..264 ")" + WHITESPACE@264..265 " " + RET_TYPE@265..275 + THIN_ARROW@265..267 "->" + WHITESPACE@267..268 " " + PATH_TYPE@268..275 + PATH@268..275 + PATH_SEGMENT@268..275 + COLON2@268..270 "::" + NAME_REF@270..275 + IDENT@270..275 "c_int" + SEMICOLON@275..276 ";" + WHITESPACE@276..281 "\n " + FN@281..341 + VISIBILITY@281..284 + PUB_KW@281..284 "pub" + WHITESPACE@284..285 " " + FN_KW@285..287 "fn" + WHITESPACE@287..288 " " + NAME@288..294 + IDENT@288..294 "listen" + PARAM_LIST@294..329 + L_PAREN@294..295 "(" + PARAM@295..310 + IDENT_PAT@295..301 + NAME@295..301 + IDENT@295..301 "socket" + COLON@301..302 ":" + WHITESPACE@302..303 " " + PATH_TYPE@303..310 + PATH@303..310 + PATH_SEGMENT@303..310 + COLON2@303..305 "::" + NAME_REF@305..310 + IDENT@305..310 "c_int" + COMMA@310..311 "," + WHITESPACE@311..312 " " + PARAM@312..328 + IDENT_PAT@312..319 + NAME@312..319 + IDENT@312..319 "backlog" + COLON@319..320 ":" + WHITESPACE@320..321 " " + PATH_TYPE@321..328 + PATH@321..328 + PATH_SEGMENT@321..328 + COLON2@321..323 "::" + NAME_REF@323..328 + IDENT@323..328 "c_int" + R_PAREN@328..329 ")" + WHITESPACE@329..330 " " + RET_TYPE@330..340 + THIN_ARROW@330..332 "->" + WHITESPACE@332..333 " " + PATH_TYPE@333..340 + PATH@333..340 + PATH_SEGMENT@333..340 + COLON2@333..335 "::" + NAME_REF@335..340 + IDENT@335..340 "c_int" + SEMICOLON@340..341 ";" + WHITESPACE@341..346 "\n " + FN@346..469 + VISIBILITY@346..349 + PUB_KW@346..349 "pub" + WHITESPACE@349..350 " " + FN_KW@350..352 "fn" + WHITESPACE@352..353 " " + NAME@353..364 + IDENT@353..364 "getsockname" + PARAM_LIST@364..457 + L_PAREN@364..365 "(" + PARAM@365..380 + IDENT_PAT@365..371 + NAME@365..371 + IDENT@365..371 "socket" + COLON@371..372 ":" + WHITESPACE@372..373 " " + PATH_TYPE@373..380 + PATH@373..380 + PATH_SEGMENT@373..380 + COLON2@373..375 "::" + NAME_REF@375..380 + IDENT@375..380 "c_int" + COMMA@380..381 "," + WHITESPACE@381..382 " " + PARAM@382..404 + IDENT_PAT@382..389 + NAME@382..389 + IDENT@382..389 "address" + COLON@389..390 ":" + WHITESPACE@390..391 " " + PTR_TYPE@391..404 + STAR@391..392 "*" + MUT_KW@392..395 "mut" + WHITESPACE@395..396 " " + PATH_TYPE@396..404 + PATH@396..404 + PATH_SEGMENT@396..404 + NAME_REF@396..404 + IDENT@396..404 "sockaddr" + COMMA@404..405 "," + WHITESPACE@405..429 "\n " + PARAM@429..456 + IDENT_PAT@429..440 + NAME@429..440 + IDENT@429..440 "address_len" + COLON@440..441 ":" + WHITESPACE@441..442 " " + PTR_TYPE@442..456 + STAR@442..443 "*" + MUT_KW@443..446 "mut" + WHITESPACE@446..447 " " + PATH_TYPE@447..456 + PATH@447..456 + PATH_SEGMENT@447..456 + NAME_REF@447..456 + IDENT@447..456 "socklen_t" + R_PAREN@456..457 ")" + WHITESPACE@457..458 " " + RET_TYPE@458..468 + THIN_ARROW@458..460 "->" + WHITESPACE@460..461 " " + PATH_TYPE@461..468 + PATH@461..468 + PATH_SEGMENT@461..468 + COLON2@461..463 "::" + NAME_REF@463..468 + IDENT@463..468 "c_int" + SEMICOLON@468..469 ";" + WHITESPACE@469..474 "\n " + FN@474..691 + VISIBILITY@474..477 + PUB_KW@474..477 "pub" + WHITESPACE@477..478 " " + FN_KW@478..480 "fn" + WHITESPACE@480..481 " " + NAME@481..491 + IDENT@481..491 "getsockopt" + PARAM_LIST@491..679 + L_PAREN@491..492 "(" + PARAM@492..507 + IDENT_PAT@492..498 + NAME@492..498 + IDENT@492..498 "sockfd" + COLON@498..499 ":" + WHITESPACE@499..500 " " + PATH_TYPE@500..507 + PATH@500..507 + PATH_SEGMENT@500..507 + COLON2@500..502 "::" + NAME_REF@502..507 + IDENT@502..507 "c_int" + COMMA@507..508 "," + WHITESPACE@508..531 "\n " + PARAM@531..545 + IDENT_PAT@531..536 + NAME@531..536 + IDENT@531..536 "level" + COLON@536..537 ":" + WHITESPACE@537..538 " " + PATH_TYPE@538..545 + PATH@538..545 + PATH_SEGMENT@538..545 + COLON2@538..540 "::" + NAME_REF@540..545 + IDENT@540..545 "c_int" + COMMA@545..546 "," + WHITESPACE@546..569 "\n " + PARAM@569..585 + IDENT_PAT@569..576 + NAME@569..576 + IDENT@569..576 "optname" + COLON@576..577 ":" + WHITESPACE@577..578 " " + PATH_TYPE@578..585 + PATH@578..585 + PATH_SEGMENT@578..585 + COLON2@578..580 "::" + NAME_REF@580..585 + IDENT@580..585 "c_int" + COMMA@585..586 "," + WHITESPACE@586..609 "\n " + PARAM@609..630 + IDENT_PAT@609..615 + NAME@609..615 + IDENT@609..615 "optval" + COLON@615..616 ":" + WHITESPACE@616..617 " " + PTR_TYPE@617..630 + STAR@617..618 "*" + MUT_KW@618..621 "mut" + WHITESPACE@621..622 " " + PATH_TYPE@622..630 + PATH@622..630 + PATH_SEGMENT@622..630 + COLON2@622..624 "::" + NAME_REF@624..630 + IDENT@624..630 "c_void" + COMMA@630..631 "," + WHITESPACE@631..654 "\n " + PARAM@654..678 + IDENT_PAT@654..660 + NAME@654..660 + IDENT@654..660 "optlen" + COLON@660..661 ":" + WHITESPACE@661..662 " " + PTR_TYPE@662..678 + STAR@662..663 "*" + MUT_KW@663..666 "mut" + WHITESPACE@666..667 " " + PATH_TYPE@667..678 + PATH@667..678 + PATH_SEGMENT@667..678 + COLON2@667..669 "::" + NAME_REF@669..678 + IDENT@669..678 "socklen_t" + R_PAREN@678..679 ")" + WHITESPACE@679..680 " " + RET_TYPE@680..690 + THIN_ARROW@680..682 "->" + WHITESPACE@682..683 " " + PATH_TYPE@683..690 + PATH@683..690 + PATH_SEGMENT@683..690 + COLON2@683..685 "::" + NAME_REF@685..690 + IDENT@685..690 "c_int" + SEMICOLON@690..691 ";" + WHITESPACE@691..696 "\n " + FN@696..864 + VISIBILITY@696..699 + PUB_KW@696..699 "pub" + WHITESPACE@699..700 " " + FN_KW@700..702 "fn" + WHITESPACE@702..703 " " + NAME@703..713 + IDENT@703..713 "setsockopt" + PARAM_LIST@713..852 + L_PAREN@713..714 "(" + PARAM@714..729 + IDENT_PAT@714..720 + NAME@714..720 + IDENT@714..720 "socket" + COLON@720..721 ":" + WHITESPACE@721..722 " " + PATH_TYPE@722..729 + PATH@722..729 + PATH_SEGMENT@722..729 + COLON2@722..724 "::" + NAME_REF@724..729 + IDENT@724..729 "c_int" + COMMA@729..730 "," + WHITESPACE@730..731 " " + PARAM@731..745 + IDENT_PAT@731..736 + NAME@731..736 + IDENT@731..736 "level" + COLON@736..737 ":" + WHITESPACE@737..738 " " + PATH_TYPE@738..745 + PATH@738..745 + PATH_SEGMENT@738..745 + COLON2@738..740 "::" + NAME_REF@740..745 + IDENT@740..745 "c_int" + COMMA@745..746 "," + WHITESPACE@746..747 " " + PARAM@747..760 + IDENT_PAT@747..751 + NAME@747..751 + IDENT@747..751 "name" + COLON@751..752 ":" + WHITESPACE@752..753 " " + PATH_TYPE@753..760 + PATH@753..760 + PATH_SEGMENT@753..760 + COLON2@753..755 "::" + NAME_REF@755..760 + IDENT@755..760 "c_int" + COMMA@760..761 "," + WHITESPACE@761..784 "\n " + PARAM@784..806 + IDENT_PAT@784..789 + NAME@784..789 + IDENT@784..789 "value" + COLON@789..790 ":" + WHITESPACE@790..791 " " + PTR_TYPE@791..806 + STAR@791..792 "*" + CONST_KW@792..797 "const" + WHITESPACE@797..798 " " + PATH_TYPE@798..806 + PATH@798..806 + PATH_SEGMENT@798..806 + COLON2@798..800 "::" + NAME_REF@800..806 + IDENT@800..806 "c_void" + COMMA@806..807 "," + WHITESPACE@807..830 "\n " + PARAM@830..851 + IDENT_PAT@830..840 + NAME@830..840 + IDENT@830..840 "option_len" + COLON@840..841 ":" + WHITESPACE@841..842 " " + PATH_TYPE@842..851 + PATH@842..851 + PATH_SEGMENT@842..851 + NAME_REF@842..851 + IDENT@842..851 "socklen_t" + R_PAREN@851..852 ")" + WHITESPACE@852..853 " " + RET_TYPE@853..863 + THIN_ARROW@853..855 "->" + WHITESPACE@855..856 " " + PATH_TYPE@856..863 + PATH@856..863 + PATH_SEGMENT@856..863 + COLON2@856..858 "::" + NAME_REF@858..863 + IDENT@858..863 "c_int" + SEMICOLON@863..864 ";" + WHITESPACE@864..869 "\n " + FN@869..992 + VISIBILITY@869..872 + PUB_KW@869..872 "pub" + WHITESPACE@872..873 " " + FN_KW@873..875 "fn" + WHITESPACE@875..876 " " + NAME@876..887 + IDENT@876..887 "getpeername" + PARAM_LIST@887..980 + L_PAREN@887..888 "(" + PARAM@888..903 + IDENT_PAT@888..894 + NAME@888..894 + IDENT@888..894 "socket" + COLON@894..895 ":" + WHITESPACE@895..896 " " + PATH_TYPE@896..903 + PATH@896..903 + PATH_SEGMENT@896..903 + COLON2@896..898 "::" + NAME_REF@898..903 + IDENT@898..903 "c_int" + COMMA@903..904 "," + WHITESPACE@904..905 " " + PARAM@905..927 + IDENT_PAT@905..912 + NAME@905..912 + IDENT@905..912 "address" + COLON@912..913 ":" + WHITESPACE@913..914 " " + PTR_TYPE@914..927 + STAR@914..915 "*" + MUT_KW@915..918 "mut" + WHITESPACE@918..919 " " + PATH_TYPE@919..927 + PATH@919..927 + PATH_SEGMENT@919..927 + NAME_REF@919..927 + IDENT@919..927 "sockaddr" + COMMA@927..928 "," + WHITESPACE@928..952 "\n " + PARAM@952..979 + IDENT_PAT@952..963 + NAME@952..963 + IDENT@952..963 "address_len" + COLON@963..964 ":" + WHITESPACE@964..965 " " + PTR_TYPE@965..979 + STAR@965..966 "*" + MUT_KW@966..969 "mut" + WHITESPACE@969..970 " " + PATH_TYPE@970..979 + PATH@970..979 + PATH_SEGMENT@970..979 + NAME_REF@970..979 + IDENT@970..979 "socklen_t" + R_PAREN@979..980 ")" + WHITESPACE@980..981 " " + RET_TYPE@981..991 + THIN_ARROW@981..983 "->" + WHITESPACE@983..984 " " + PATH_TYPE@984..991 + PATH@984..991 + PATH_SEGMENT@984..991 + COLON2@984..986 "::" + NAME_REF@986..991 + IDENT@986..991 "c_int" + SEMICOLON@991..992 ";" + WHITESPACE@992..997 "\n " + FN@997..1173 + VISIBILITY@997..1000 + PUB_KW@997..1000 "pub" + WHITESPACE@1000..1001 " " + FN_KW@1001..1003 "fn" + WHITESPACE@1003..1004 " " + NAME@1004..1010 + IDENT@1004..1010 "sendto" + PARAM_LIST@1010..1159 + L_PAREN@1010..1011 "(" + PARAM@1011..1026 + IDENT_PAT@1011..1017 + NAME@1011..1017 + IDENT@1011..1017 "socket" + COLON@1017..1018 ":" + WHITESPACE@1018..1019 " " + PATH_TYPE@1019..1026 + PATH@1019..1026 + PATH_SEGMENT@1019..1026 + COLON2@1019..1021 "::" + NAME_REF@1021..1026 + IDENT@1021..1026 "c_int" + COMMA@1026..1027 "," + WHITESPACE@1027..1028 " " + PARAM@1028..1048 + IDENT_PAT@1028..1031 + NAME@1028..1031 + IDENT@1028..1031 "buf" + COLON@1031..1032 ":" + WHITESPACE@1032..1033 " " + PTR_TYPE@1033..1048 + STAR@1033..1034 "*" + CONST_KW@1034..1039 "const" + WHITESPACE@1039..1040 " " + PATH_TYPE@1040..1048 + PATH@1040..1048 + PATH_SEGMENT@1040..1048 + COLON2@1040..1042 "::" + NAME_REF@1042..1048 + IDENT@1042..1048 "c_void" + COMMA@1048..1049 "," + WHITESPACE@1049..1050 " " + PARAM@1050..1063 + IDENT_PAT@1050..1053 + NAME@1050..1053 + IDENT@1050..1053 "len" + COLON@1053..1054 ":" + WHITESPACE@1054..1055 " " + PATH_TYPE@1055..1063 + PATH@1055..1063 + PATH_SEGMENT@1055..1063 + COLON2@1055..1057 "::" + NAME_REF@1057..1063 + IDENT@1057..1063 "size_t" + COMMA@1063..1064 "," + WHITESPACE@1064..1083 "\n " + PARAM@1083..1097 + IDENT_PAT@1083..1088 + NAME@1083..1088 + IDENT@1083..1088 "flags" + COLON@1088..1089 ":" + WHITESPACE@1089..1090 " " + PATH_TYPE@1090..1097 + PATH@1090..1097 + PATH_SEGMENT@1090..1097 + COLON2@1090..1092 "::" + NAME_REF@1092..1097 + IDENT@1092..1097 "c_int" + COMMA@1097..1098 "," + WHITESPACE@1098..1099 " " + PARAM@1099..1120 + IDENT_PAT@1099..1103 + NAME@1099..1103 + IDENT@1099..1103 "addr" + COLON@1103..1104 ":" + WHITESPACE@1104..1105 " " + PTR_TYPE@1105..1120 + STAR@1105..1106 "*" + CONST_KW@1106..1111 "const" + WHITESPACE@1111..1112 " " + PATH_TYPE@1112..1120 + PATH@1112..1120 + PATH_SEGMENT@1112..1120 + NAME_REF@1112..1120 + IDENT@1112..1120 "sockaddr" + COMMA@1120..1121 "," + WHITESPACE@1121..1140 "\n " + PARAM@1140..1158 + IDENT_PAT@1140..1147 + NAME@1140..1147 + IDENT@1140..1147 "addrlen" + COLON@1147..1148 ":" + WHITESPACE@1148..1149 " " + PATH_TYPE@1149..1158 + PATH@1149..1158 + PATH_SEGMENT@1149..1158 + NAME_REF@1149..1158 + IDENT@1149..1158 "socklen_t" + R_PAREN@1158..1159 ")" + WHITESPACE@1159..1160 " " + RET_TYPE@1160..1172 + THIN_ARROW@1160..1162 "->" + WHITESPACE@1162..1163 " " + PATH_TYPE@1163..1172 + PATH@1163..1172 + PATH_SEGMENT@1163..1172 + COLON2@1163..1165 "::" + NAME_REF@1165..1172 + IDENT@1165..1172 "ssize_t" + SEMICOLON@1172..1173 ";" + WHITESPACE@1173..1178 "\n " + FN@1178..1289 + VISIBILITY@1178..1181 + PUB_KW@1178..1181 "pub" + WHITESPACE@1181..1182 " " + FN_KW@1182..1184 "fn" + WHITESPACE@1184..1185 " " + NAME@1185..1189 + IDENT@1185..1189 "send" + PARAM_LIST@1189..1275 + L_PAREN@1189..1190 "(" + PARAM@1190..1205 + IDENT_PAT@1190..1196 + NAME@1190..1196 + IDENT@1190..1196 "socket" + COLON@1196..1197 ":" + WHITESPACE@1197..1198 " " + PATH_TYPE@1198..1205 + PATH@1198..1205 + PATH_SEGMENT@1198..1205 + COLON2@1198..1200 "::" + NAME_REF@1200..1205 + IDENT@1200..1205 "c_int" + COMMA@1205..1206 "," + WHITESPACE@1206..1207 " " + PARAM@1207..1227 + IDENT_PAT@1207..1210 + NAME@1207..1210 + IDENT@1207..1210 "buf" + COLON@1210..1211 ":" + WHITESPACE@1211..1212 " " + PTR_TYPE@1212..1227 + STAR@1212..1213 "*" + CONST_KW@1213..1218 "const" + WHITESPACE@1218..1219 " " + PATH_TYPE@1219..1227 + PATH@1219..1227 + PATH_SEGMENT@1219..1227 + COLON2@1219..1221 "::" + NAME_REF@1221..1227 + IDENT@1221..1227 "c_void" + COMMA@1227..1228 "," + WHITESPACE@1228..1229 " " + PARAM@1229..1242 + IDENT_PAT@1229..1232 + NAME@1229..1232 + IDENT@1229..1232 "len" + COLON@1232..1233 ":" + WHITESPACE@1233..1234 " " + PATH_TYPE@1234..1242 + PATH@1234..1242 + PATH_SEGMENT@1234..1242 + COLON2@1234..1236 "::" + NAME_REF@1236..1242 + IDENT@1236..1242 "size_t" + COMMA@1242..1243 "," + WHITESPACE@1243..1260 "\n " + PARAM@1260..1274 + IDENT_PAT@1260..1265 + NAME@1260..1265 + IDENT@1260..1265 "flags" + COLON@1265..1266 ":" + WHITESPACE@1266..1267 " " + PATH_TYPE@1267..1274 + PATH@1267..1274 + PATH_SEGMENT@1267..1274 + COLON2@1267..1269 "::" + NAME_REF@1269..1274 + IDENT@1269..1274 "c_int" + R_PAREN@1274..1275 ")" + WHITESPACE@1275..1276 " " + RET_TYPE@1276..1288 + THIN_ARROW@1276..1278 "->" + WHITESPACE@1278..1279 " " + PATH_TYPE@1279..1288 + PATH@1279..1288 + PATH_SEGMENT@1279..1288 + COLON2@1279..1281 "::" + NAME_REF@1281..1288 + IDENT@1281..1288 "ssize_t" + SEMICOLON@1288..1289 ";" + WHITESPACE@1289..1294 "\n " + FN@1294..1481 + VISIBILITY@1294..1297 + PUB_KW@1294..1297 "pub" + WHITESPACE@1297..1298 " " + FN_KW@1298..1300 "fn" + WHITESPACE@1300..1301 " " + NAME@1301..1309 + IDENT@1301..1309 "recvfrom" + PARAM_LIST@1309..1467 + L_PAREN@1309..1310 "(" + PARAM@1310..1325 + IDENT_PAT@1310..1316 + NAME@1310..1316 + IDENT@1310..1316 "socket" + COLON@1316..1317 ":" + WHITESPACE@1317..1318 " " + PATH_TYPE@1318..1325 + PATH@1318..1325 + PATH_SEGMENT@1318..1325 + COLON2@1318..1320 "::" + NAME_REF@1320..1325 + IDENT@1320..1325 "c_int" + COMMA@1325..1326 "," + WHITESPACE@1326..1327 " " + PARAM@1327..1345 + IDENT_PAT@1327..1330 + NAME@1327..1330 + IDENT@1327..1330 "buf" + COLON@1330..1331 ":" + WHITESPACE@1331..1332 " " + PTR_TYPE@1332..1345 + STAR@1332..1333 "*" + MUT_KW@1333..1336 "mut" + WHITESPACE@1336..1337 " " + PATH_TYPE@1337..1345 + PATH@1337..1345 + PATH_SEGMENT@1337..1345 + COLON2@1337..1339 "::" + NAME_REF@1339..1345 + IDENT@1339..1345 "c_void" + COMMA@1345..1346 "," + WHITESPACE@1346..1347 " " + PARAM@1347..1360 + IDENT_PAT@1347..1350 + NAME@1347..1350 + IDENT@1347..1350 "len" + COLON@1350..1351 ":" + WHITESPACE@1351..1352 " " + PATH_TYPE@1352..1360 + PATH@1352..1360 + PATH_SEGMENT@1352..1360 + COLON2@1352..1354 "::" + NAME_REF@1354..1360 + IDENT@1354..1360 "size_t" + COMMA@1360..1361 "," + WHITESPACE@1361..1382 "\n " + PARAM@1382..1396 + IDENT_PAT@1382..1387 + NAME@1382..1387 + IDENT@1382..1387 "flags" + COLON@1387..1388 ":" + WHITESPACE@1388..1389 " " + PATH_TYPE@1389..1396 + PATH@1389..1396 + PATH_SEGMENT@1389..1396 + COLON2@1389..1391 "::" + NAME_REF@1391..1396 + IDENT@1391..1396 "c_int" + COMMA@1396..1397 "," + WHITESPACE@1397..1398 " " + PARAM@1398..1419 + IDENT_PAT@1398..1402 + NAME@1398..1402 + IDENT@1398..1402 "addr" + COLON@1402..1403 ":" + WHITESPACE@1403..1404 " " + PTR_TYPE@1404..1419 + STAR@1404..1405 "*" + MUT_KW@1405..1408 "mut" + WHITESPACE@1408..1409 " " + PATH_TYPE@1409..1419 + PATH@1409..1419 + PATH_SEGMENT@1409..1419 + COLON2@1409..1411 "::" + NAME_REF@1411..1419 + IDENT@1411..1419 "sockaddr" + COMMA@1419..1420 "," + WHITESPACE@1420..1441 "\n " + PARAM@1441..1466 + IDENT_PAT@1441..1448 + NAME@1441..1448 + IDENT@1441..1448 "addrlen" + COLON@1448..1449 ":" + WHITESPACE@1449..1450 " " + PTR_TYPE@1450..1466 + STAR@1450..1451 "*" + MUT_KW@1451..1454 "mut" + WHITESPACE@1454..1455 " " + PATH_TYPE@1455..1466 + PATH@1455..1466 + PATH_SEGMENT@1455..1466 + COLON2@1455..1457 "::" + NAME_REF@1457..1466 + IDENT@1457..1466 "socklen_t" + R_PAREN@1466..1467 ")" + WHITESPACE@1467..1468 " " + RET_TYPE@1468..1480 + THIN_ARROW@1468..1470 "->" + WHITESPACE@1470..1471 " " + PATH_TYPE@1471..1480 + PATH@1471..1480 + PATH_SEGMENT@1471..1480 + COLON2@1471..1473 "::" + NAME_REF@1473..1480 + IDENT@1473..1480 "ssize_t" + SEMICOLON@1480..1481 ";" + WHITESPACE@1481..1486 "\n " + FN@1486..1595 + VISIBILITY@1486..1489 + PUB_KW@1486..1489 "pub" + WHITESPACE@1489..1490 " " + FN_KW@1490..1492 "fn" + WHITESPACE@1492..1493 " " + NAME@1493..1497 + IDENT@1493..1497 "recv" + PARAM_LIST@1497..1581 + L_PAREN@1497..1498 "(" + PARAM@1498..1513 + IDENT_PAT@1498..1504 + NAME@1498..1504 + IDENT@1498..1504 "socket" + COLON@1504..1505 ":" + WHITESPACE@1505..1506 " " + PATH_TYPE@1506..1513 + PATH@1506..1513 + PATH_SEGMENT@1506..1513 + COLON2@1506..1508 "::" + NAME_REF@1508..1513 + IDENT@1508..1513 "c_int" + COMMA@1513..1514 "," + WHITESPACE@1514..1515 " " + PARAM@1515..1533 + IDENT_PAT@1515..1518 + NAME@1515..1518 + IDENT@1515..1518 "buf" + COLON@1518..1519 ":" + WHITESPACE@1519..1520 " " + PTR_TYPE@1520..1533 + STAR@1520..1521 "*" + MUT_KW@1521..1524 "mut" + WHITESPACE@1524..1525 " " + PATH_TYPE@1525..1533 + PATH@1525..1533 + PATH_SEGMENT@1525..1533 + COLON2@1525..1527 "::" + NAME_REF@1527..1533 + IDENT@1527..1533 "c_void" + COMMA@1533..1534 "," + WHITESPACE@1534..1535 " " + PARAM@1535..1548 + IDENT_PAT@1535..1538 + NAME@1535..1538 + IDENT@1535..1538 "len" + COLON@1538..1539 ":" + WHITESPACE@1539..1540 " " + PATH_TYPE@1540..1548 + PATH@1540..1548 + PATH_SEGMENT@1540..1548 + COLON2@1540..1542 "::" + NAME_REF@1542..1548 + IDENT@1542..1548 "size_t" + COMMA@1548..1549 "," + WHITESPACE@1549..1566 "\n " + PARAM@1566..1580 + IDENT_PAT@1566..1571 + NAME@1566..1571 + IDENT@1566..1571 "flags" + COLON@1571..1572 ":" + WHITESPACE@1572..1573 " " + PATH_TYPE@1573..1580 + PATH@1573..1580 + PATH_SEGMENT@1573..1580 + COLON2@1573..1575 "::" + NAME_REF@1575..1580 + IDENT@1575..1580 "c_int" + R_PAREN@1580..1581 ")" + WHITESPACE@1581..1582 " " + RET_TYPE@1582..1594 + THIN_ARROW@1582..1584 "->" + WHITESPACE@1584..1585 " " + PATH_TYPE@1585..1594 + PATH@1585..1594 + PATH_SEGMENT@1585..1594 + COLON2@1585..1587 "::" + NAME_REF@1587..1594 + IDENT@1587..1594 "ssize_t" + SEMICOLON@1594..1595 ";" + WHITESPACE@1595..1596 "\n" + R_CURLY@1596..1597 "}" + WHITESPACE@1597..1598 "\n" diff --git a/crates/syntax/test_data/parser/ok/0031_extern.rs b/crates/syntax/test_data/parser/ok/0031_extern.rs new file mode 100644 index 00000000000..b33ac273ca6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0031_extern.rs @@ -0,0 +1,29 @@ +extern { + pub fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int; + pub fn bind(fd: ::c_int, addr: *const sockaddr, len: socklen_t) -> ::c_int; + pub fn connect(socket: ::c_int, address: *const sockaddr, + len: socklen_t) -> ::c_int; + pub fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int; + pub fn getsockname(socket: ::c_int, address: *mut sockaddr, + address_len: *mut socklen_t) -> ::c_int; + pub fn getsockopt(sockfd: ::c_int, + level: ::c_int, + optname: ::c_int, + optval: *mut ::c_void, + optlen: *mut ::socklen_t) -> ::c_int; + pub fn setsockopt(socket: ::c_int, level: ::c_int, name: ::c_int, + value: *const ::c_void, + option_len: socklen_t) -> ::c_int; + pub fn getpeername(socket: ::c_int, address: *mut sockaddr, + address_len: *mut socklen_t) -> ::c_int; + pub fn sendto(socket: ::c_int, buf: *const ::c_void, len: ::size_t, + flags: ::c_int, addr: *const sockaddr, + addrlen: socklen_t) -> ::ssize_t; + pub fn send(socket: ::c_int, buf: *const ::c_void, len: ::size_t, + flags: ::c_int) -> ::ssize_t; + pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, + flags: ::c_int, addr: *mut ::sockaddr, + addrlen: *mut ::socklen_t) -> ::ssize_t; + pub fn recv(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, + flags: ::c_int) -> ::ssize_t; +} diff --git a/crates/syntax/test_data/parser/ok/0032_where_for.rast b/crates/syntax/test_data/parser/ok/0032_where_for.rast new file mode 100644 index 00000000000..d59548f2107 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0032_where_for.rast @@ -0,0 +1,90 @@ +SOURCE_FILE@0..116 + FN@0..115 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..21 + IDENT@3..21 "test_serialization" + GENERIC_PARAM_LIST@21..26 + L_ANGLE@21..22 "<" + TYPE_PARAM@22..25 + NAME@22..25 + IDENT@22..25 "SER" + R_ANGLE@25..26 ">" + PARAM_LIST@26..28 + L_PAREN@26..27 "(" + R_PAREN@27..28 ")" + WHITESPACE@28..29 "\n" + WHERE_CLAUSE@29..112 + WHERE_KW@29..34 "where" + WHITESPACE@34..39 "\n " + WHERE_PRED@39..111 + PATH_TYPE@39..42 + PATH@39..42 + PATH_SEGMENT@39..42 + NAME_REF@39..42 + IDENT@39..42 "SER" + COLON@42..43 ":" + WHITESPACE@43..44 " " + TYPE_BOUND_LIST@44..111 + TYPE_BOUND@44..53 + PATH_TYPE@44..53 + PATH@44..53 + PATH_SEGMENT@44..53 + NAME_REF@44..53 + IDENT@44..53 "Serialize" + WHITESPACE@53..54 " " + PLUS@54..55 "+" + WHITESPACE@55..56 " " + TYPE_BOUND@56..81 + FOR_TYPE@56..81 + FOR_KW@56..59 "for" + GENERIC_PARAM_LIST@59..64 + L_ANGLE@59..60 "<" + LIFETIME_PARAM@60..63 + LIFETIME@60..63 "\'de" + R_ANGLE@63..64 ">" + WHITESPACE@64..65 " " + PATH_TYPE@65..81 + PATH@65..81 + PATH_SEGMENT@65..81 + NAME_REF@65..76 + IDENT@65..76 "Deserialize" + GENERIC_ARG_LIST@76..81 + L_ANGLE@76..77 "<" + LIFETIME_ARG@77..80 + LIFETIME@77..80 "\'de" + R_ANGLE@80..81 ">" + WHITESPACE@81..82 " " + PLUS@82..83 "+" + WHITESPACE@83..84 " " + TYPE_BOUND@84..93 + PATH_TYPE@84..93 + PATH@84..93 + PATH_SEGMENT@84..93 + NAME_REF@84..93 + IDENT@84..93 "PartialEq" + WHITESPACE@93..94 " " + PLUS@94..95 "+" + WHITESPACE@95..96 " " + TYPE_BOUND@96..111 + PATH_TYPE@96..111 + PATH@96..111 + PATH@96..104 + PATH@96..99 + PATH_SEGMENT@96..99 + NAME_REF@96..99 + IDENT@96..99 "std" + COLON2@99..101 "::" + PATH_SEGMENT@101..104 + NAME_REF@101..104 + IDENT@101..104 "fmt" + COLON2@104..106 "::" + PATH_SEGMENT@106..111 + NAME_REF@106..111 + IDENT@106..111 "Debug" + COMMA@111..112 "," + WHITESPACE@112..113 "\n" + BLOCK_EXPR@113..115 + L_CURLY@113..114 "{" + R_CURLY@114..115 "}" + WHITESPACE@115..116 "\n" diff --git a/crates/syntax/test_data/parser/ok/0032_where_for.rs b/crates/syntax/test_data/parser/ok/0032_where_for.rs new file mode 100644 index 00000000000..588170fbef5 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0032_where_for.rs @@ -0,0 +1,4 @@ +fn test_serialization() +where + SER: Serialize + for<'de> Deserialize<'de> + PartialEq + std::fmt::Debug, +{} diff --git a/crates/syntax/test_data/parser/ok/0033_label_break.rast b/crates/syntax/test_data/parser/ok/0033_label_break.rast new file mode 100644 index 00000000000..88800ca7a3f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0033_label_break.rast @@ -0,0 +1,215 @@ +SOURCE_FILE@0..506 + FN@0..505 + COMMENT@0..33 "// format with label ..." + WHITESPACE@33..34 "\n" + FN_KW@34..36 "fn" + WHITESPACE@36..37 " " + NAME@37..41 + IDENT@37..41 "main" + PARAM_LIST@41..43 + L_PAREN@41..42 "(" + R_PAREN@42..43 ")" + WHITESPACE@43..44 " " + BLOCK_EXPR@44..505 + L_CURLY@44..45 "{" + WHITESPACE@45..50 "\n " + EXPR_STMT@50..66 + EFFECT_EXPR@50..66 + LABEL@50..63 + LIFETIME@50..62 "\'empty_block" + COLON@62..63 ":" + WHITESPACE@63..64 " " + BLOCK_EXPR@64..66 + L_CURLY@64..65 "{" + R_CURLY@65..66 "}" + WHITESPACE@66..72 "\n\n " + EXPR_STMT@72..295 + EFFECT_EXPR@72..295 + LABEL@72..79 + LIFETIME@72..78 "\'block" + COLON@78..79 ":" + WHITESPACE@79..80 " " + BLOCK_EXPR@80..295 + L_CURLY@80..81 "{" + WHITESPACE@81..90 "\n " + EXPR_STMT@90..101 + CALL_EXPR@90..100 + PATH_EXPR@90..98 + PATH@90..98 + PATH_SEGMENT@90..98 + NAME_REF@90..98 + IDENT@90..98 "do_thing" + ARG_LIST@98..100 + L_PAREN@98..99 "(" + R_PAREN@99..100 ")" + SEMICOLON@100..101 ";" + WHITESPACE@101..110 "\n " + EXPR_STMT@110..170 + IF_EXPR@110..170 + IF_KW@110..112 "if" + WHITESPACE@112..113 " " + CONDITION@113..132 + CALL_EXPR@113..132 + PATH_EXPR@113..130 + PATH@113..130 + PATH_SEGMENT@113..130 + NAME_REF@113..130 + IDENT@113..130 "condition_not_met" + ARG_LIST@130..132 + L_PAREN@130..131 "(" + R_PAREN@131..132 ")" + WHITESPACE@132..133 " " + BLOCK_EXPR@133..170 + L_CURLY@133..134 "{" + WHITESPACE@134..147 "\n " + EXPR_STMT@147..160 + BREAK_EXPR@147..159 + BREAK_KW@147..152 "break" + WHITESPACE@152..153 " " + LIFETIME@153..159 "\'block" + SEMICOLON@159..160 ";" + WHITESPACE@160..169 "\n " + R_CURLY@169..170 "}" + WHITESPACE@170..179 "\n " + EXPR_STMT@179..195 + CALL_EXPR@179..194 + PATH_EXPR@179..192 + PATH@179..192 + PATH_SEGMENT@179..192 + NAME_REF@179..192 + IDENT@179..192 "do_next_thing" + ARG_LIST@192..194 + L_PAREN@192..193 "(" + R_PAREN@193..194 ")" + SEMICOLON@194..195 ";" + WHITESPACE@195..204 "\n " + EXPR_STMT@204..264 + IF_EXPR@204..264 + IF_KW@204..206 "if" + WHITESPACE@206..207 " " + CONDITION@207..226 + CALL_EXPR@207..226 + PATH_EXPR@207..224 + PATH@207..224 + PATH_SEGMENT@207..224 + NAME_REF@207..224 + IDENT@207..224 "condition_not_met" + ARG_LIST@224..226 + L_PAREN@224..225 "(" + R_PAREN@225..226 ")" + WHITESPACE@226..227 " " + BLOCK_EXPR@227..264 + L_CURLY@227..228 "{" + WHITESPACE@228..241 "\n " + EXPR_STMT@241..254 + BREAK_EXPR@241..253 + BREAK_KW@241..246 "break" + WHITESPACE@246..247 " " + LIFETIME@247..253 "\'block" + SEMICOLON@253..254 ";" + WHITESPACE@254..263 "\n " + R_CURLY@263..264 "}" + WHITESPACE@264..273 "\n " + EXPR_STMT@273..289 + CALL_EXPR@273..288 + PATH_EXPR@273..286 + PATH@273..286 + PATH_SEGMENT@273..286 + NAME_REF@273..286 + IDENT@273..286 "do_last_thing" + ARG_LIST@286..288 + L_PAREN@286..287 "(" + R_PAREN@287..288 ")" + SEMICOLON@288..289 ";" + WHITESPACE@289..294 "\n " + R_CURLY@294..295 "}" + WHITESPACE@295..301 "\n\n " + LET_STMT@301..503 + LET_KW@301..304 "let" + WHITESPACE@304..305 " " + IDENT_PAT@305..311 + NAME@305..311 + IDENT@305..311 "result" + WHITESPACE@311..312 " " + EQ@312..313 "=" + WHITESPACE@313..314 " " + EFFECT_EXPR@314..502 + LABEL@314..321 + LIFETIME@314..320 "\'block" + COLON@320..321 ":" + WHITESPACE@321..322 " " + BLOCK_EXPR@322..502 + L_CURLY@322..323 "{" + WHITESPACE@323..332 "\n " + EXPR_STMT@332..403 + IF_EXPR@332..403 + IF_KW@332..334 "if" + WHITESPACE@334..335 " " + CONDITION@335..340 + CALL_EXPR@335..340 + PATH_EXPR@335..338 + PATH@335..338 + PATH_SEGMENT@335..338 + NAME_REF@335..338 + IDENT@335..338 "foo" + ARG_LIST@338..340 + L_PAREN@338..339 "(" + R_PAREN@339..340 ")" + WHITESPACE@340..341 " " + BLOCK_EXPR@341..403 + L_CURLY@341..342 "{" + WHITESPACE@342..355 "\n " + COMMENT@355..365 "// comment" + WHITESPACE@365..378 "\n " + EXPR_STMT@378..393 + BREAK_EXPR@378..392 + BREAK_KW@378..383 "break" + WHITESPACE@383..384 " " + LIFETIME@384..390 "\'block" + WHITESPACE@390..391 " " + LITERAL@391..392 + INT_NUMBER@391..392 "1" + SEMICOLON@392..393 ";" + WHITESPACE@393..402 "\n " + R_CURLY@402..403 "}" + WHITESPACE@403..412 "\n " + EXPR_STMT@412..486 + IF_EXPR@412..486 + IF_KW@412..414 "if" + WHITESPACE@414..415 " " + CONDITION@415..420 + CALL_EXPR@415..420 + PATH_EXPR@415..418 + PATH@415..418 + PATH_SEGMENT@415..418 + NAME_REF@415..418 + IDENT@415..418 "bar" + ARG_LIST@418..420 + L_PAREN@418..419 "(" + R_PAREN@419..420 ")" + WHITESPACE@420..421 " " + BLOCK_EXPR@421..486 + L_CURLY@421..422 "{" + WHITESPACE@422..435 "\n " + COMMENT@435..448 "/* comment */" + WHITESPACE@448..461 "\n " + EXPR_STMT@461..476 + BREAK_EXPR@461..475 + BREAK_KW@461..466 "break" + WHITESPACE@466..467 " " + LIFETIME@467..473 "\'block" + WHITESPACE@473..474 " " + LITERAL@474..475 + INT_NUMBER@474..475 "2" + SEMICOLON@475..476 ";" + WHITESPACE@476..485 "\n " + R_CURLY@485..486 "}" + WHITESPACE@486..495 "\n " + LITERAL@495..496 + INT_NUMBER@495..496 "3" + WHITESPACE@496..501 "\n " + R_CURLY@501..502 "}" + SEMICOLON@502..503 ";" + WHITESPACE@503..504 "\n" + R_CURLY@504..505 "}" + WHITESPACE@505..506 "\n" diff --git a/crates/syntax/test_data/parser/ok/0033_label_break.rs b/crates/syntax/test_data/parser/ok/0033_label_break.rs new file mode 100644 index 00000000000..728d78137c9 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0033_label_break.rs @@ -0,0 +1,28 @@ +// format with label break value. +fn main() { + 'empty_block: {} + + 'block: { + do_thing(); + if condition_not_met() { + break 'block; + } + do_next_thing(); + if condition_not_met() { + break 'block; + } + do_last_thing(); + } + + let result = 'block: { + if foo() { + // comment + break 'block 1; + } + if bar() { + /* comment */ + break 'block 2; + } + 3 + }; +} diff --git a/crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rast b/crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rast new file mode 100644 index 00000000000..5ad8c570d26 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rast @@ -0,0 +1,41 @@ +SOURCE_FILE@0..62 + FN@0..61 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..61 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + EXPR_STMT@16..59 + CALL_EXPR@16..58 + PATH_EXPR@16..26 + PATH@16..26 + PATH_SEGMENT@16..26 + NAME_REF@16..26 + IDENT@16..26 "make_query" + ARG_LIST@26..58 + L_PAREN@26..27 "(" + PATH_EXPR@27..57 + PATH@27..57 + PATH@27..44 + PATH@27..32 + PATH_SEGMENT@27..32 + CRATE_KW@27..32 "crate" + COLON2@32..34 "::" + PATH_SEGMENT@34..44 + NAME_REF@34..44 + IDENT@34..44 "module_map" + COLON2@44..46 "::" + PATH_SEGMENT@46..57 + NAME_REF@46..57 + IDENT@46..57 "module_tree" + R_PAREN@57..58 ")" + SEMICOLON@58..59 ";" + WHITESPACE@59..60 "\n" + R_CURLY@60..61 "}" + WHITESPACE@61..62 "\n" diff --git a/crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rs b/crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rs new file mode 100644 index 00000000000..f1ed30220ae --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0034_crate_path_in_call.rs @@ -0,0 +1,3 @@ +fn main() { + make_query(crate::module_map::module_tree); +} diff --git a/crates/syntax/test_data/parser/ok/0035_weird_exprs.rast b/crates/syntax/test_data/parser/ok/0035_weird_exprs.rast new file mode 100644 index 00000000000..7c61b5006de --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0035_weird_exprs.rast @@ -0,0 +1,2291 @@ +SOURCE_FILE@0..3813 + COMMENT@0..55 "//! Adapted from a `r ..." + WHITESPACE@55..56 "\n" + COMMENT@56..173 "//! https://github.co ..." + WHITESPACE@173..174 "\n" + COMMENT@174..178 "//! " + WHITESPACE@178..179 "\n" + COMMENT@179..269 "//! Reported to rust- ..." + WHITESPACE@269..271 "\n\n" + ATTR@271..302 + POUND@271..272 "#" + BANG@272..273 "!" + L_BRACK@273..274 "[" + PATH@274..279 + PATH_SEGMENT@274..279 + NAME_REF@274..279 + IDENT@274..279 "allow" + TOKEN_TREE@279..301 + L_PAREN@279..280 "(" + IDENT@280..300 "non_camel_case_types" + R_PAREN@300..301 ")" + R_BRACK@301..302 "]" + WHITESPACE@302..303 "\n" + ATTR@303..323 + POUND@303..304 "#" + BANG@304..305 "!" + L_BRACK@305..306 "[" + PATH@306..311 + PATH_SEGMENT@306..311 + NAME_REF@306..311 + IDENT@306..311 "allow" + TOKEN_TREE@311..322 + L_PAREN@311..312 "(" + IDENT@312..321 "dead_code" + R_PAREN@321..322 ")" + R_BRACK@322..323 "]" + WHITESPACE@323..324 "\n" + ATTR@324..351 + POUND@324..325 "#" + BANG@325..326 "!" + L_BRACK@326..327 "[" + PATH@327..332 + PATH_SEGMENT@327..332 + NAME_REF@327..332 + IDENT@327..332 "allow" + TOKEN_TREE@332..350 + L_PAREN@332..333 "(" + IDENT@333..349 "unreachable_code" + R_PAREN@349..350 ")" + R_BRACK@350..351 "]" + WHITESPACE@351..352 "\n" + ATTR@352..376 + POUND@352..353 "#" + BANG@353..354 "!" + L_BRACK@354..355 "[" + PATH@355..360 + PATH_SEGMENT@355..360 + NAME_REF@355..360 + IDENT@355..360 "allow" + TOKEN_TREE@360..375 + L_PAREN@360..361 "(" + IDENT@361..374 "unused_parens" + R_PAREN@374..375 ")" + R_BRACK@375..376 "]" + WHITESPACE@376..378 "\n\n" + ATTR@378..405 + POUND@378..379 "#" + BANG@379..380 "!" + L_BRACK@380..381 "[" + PATH@381..396 + PATH_SEGMENT@381..396 + NAME_REF@381..396 + IDENT@381..396 "recursion_limit" + WHITESPACE@396..397 " " + EQ@397..398 "=" + WHITESPACE@398..399 " " + LITERAL@399..404 + STRING@399..404 "\"128\"" + R_BRACK@404..405 "]" + WHITESPACE@405..407 "\n\n" + USE@407..427 + USE_KW@407..410 "use" + WHITESPACE@410..411 " " + USE_TREE@411..426 + PATH@411..426 + PATH@411..420 + PATH@411..414 + PATH_SEGMENT@411..414 + NAME_REF@411..414 + IDENT@411..414 "std" + COLON2@414..416 "::" + PATH_SEGMENT@416..420 + NAME_REF@416..420 + IDENT@416..420 "cell" + COLON2@420..422 "::" + PATH_SEGMENT@422..426 + NAME_REF@422..426 + IDENT@422..426 "Cell" + SEMICOLON@426..427 ";" + WHITESPACE@427..428 "\n" + USE@428..447 + USE_KW@428..431 "use" + WHITESPACE@431..432 " " + USE_TREE@432..446 + PATH@432..446 + PATH@432..440 + PATH@432..435 + PATH_SEGMENT@432..435 + NAME_REF@432..435 + IDENT@432..435 "std" + COLON2@435..437 "::" + PATH_SEGMENT@437..440 + NAME_REF@437..440 + IDENT@437..440 "mem" + COLON2@440..442 "::" + PATH_SEGMENT@442..446 + NAME_REF@442..446 + IDENT@442..446 "swap" + SEMICOLON@446..447 ";" + WHITESPACE@447..449 "\n\n" + COMMENT@449..518 "// Just a grab bag of ..." + WHITESPACE@518..520 "\n\n" + FN@520..572 + FN_KW@520..522 "fn" + WHITESPACE@522..523 " " + NAME@523..530 + IDENT@523..530 "strange" + PARAM_LIST@530..532 + L_PAREN@530..531 "(" + R_PAREN@531..532 ")" + WHITESPACE@532..533 " " + RET_TYPE@533..540 + THIN_ARROW@533..535 "->" + WHITESPACE@535..536 " " + PATH_TYPE@536..540 + PATH@536..540 + PATH_SEGMENT@536..540 + NAME_REF@536..540 + IDENT@536..540 "bool" + WHITESPACE@540..541 " " + BLOCK_EXPR@541..572 + L_CURLY@541..542 "{" + WHITESPACE@542..543 " " + LET_STMT@543..570 + LET_KW@543..546 "let" + WHITESPACE@546..547 " " + IDENT_PAT@547..549 + NAME@547..549 + IDENT@547..549 "_x" + COLON@549..550 ":" + WHITESPACE@550..551 " " + PATH_TYPE@551..555 + PATH@551..555 + PATH_SEGMENT@551..555 + NAME_REF@551..555 + IDENT@551..555 "bool" + WHITESPACE@555..556 " " + EQ@556..557 "=" + WHITESPACE@557..558 " " + RETURN_EXPR@558..569 + RETURN_KW@558..564 "return" + WHITESPACE@564..565 " " + LITERAL@565..569 + TRUE_KW@565..569 "true" + SEMICOLON@569..570 ";" + WHITESPACE@570..571 " " + R_CURLY@571..572 "}" + WHITESPACE@572..574 "\n\n" + FN@574..624 + FN_KW@574..576 "fn" + WHITESPACE@576..577 " " + NAME@577..582 + IDENT@577..582 "funny" + PARAM_LIST@582..584 + L_PAREN@582..583 "(" + R_PAREN@583..584 ")" + WHITESPACE@584..585 " " + BLOCK_EXPR@585..624 + L_CURLY@585..586 "{" + WHITESPACE@586..591 "\n " + FN@591..607 + FN_KW@591..593 "fn" + WHITESPACE@593..594 " " + NAME@594..595 + IDENT@594..595 "f" + PARAM_LIST@595..603 + L_PAREN@595..596 "(" + PARAM@596..602 + IDENT_PAT@596..598 + NAME@596..598 + IDENT@596..598 "_x" + COLON@598..599 ":" + WHITESPACE@599..600 " " + TUPLE_TYPE@600..602 + L_PAREN@600..601 "(" + R_PAREN@601..602 ")" + R_PAREN@602..603 ")" + WHITESPACE@603..604 " " + BLOCK_EXPR@604..607 + L_CURLY@604..605 "{" + WHITESPACE@605..606 " " + R_CURLY@606..607 "}" + WHITESPACE@607..612 "\n " + EXPR_STMT@612..622 + CALL_EXPR@612..621 + PATH_EXPR@612..613 + PATH@612..613 + PATH_SEGMENT@612..613 + NAME_REF@612..613 + IDENT@612..613 "f" + ARG_LIST@613..621 + L_PAREN@613..614 "(" + RETURN_EXPR@614..620 + RETURN_KW@614..620 "return" + R_PAREN@620..621 ")" + SEMICOLON@621..622 ";" + WHITESPACE@622..623 "\n" + R_CURLY@623..624 "}" + WHITESPACE@624..626 "\n\n" + FN@626..816 + FN_KW@626..628 "fn" + WHITESPACE@628..629 " " + NAME@629..633 + IDENT@629..633 "what" + PARAM_LIST@633..635 + L_PAREN@633..634 "(" + R_PAREN@634..635 ")" + WHITESPACE@635..636 " " + BLOCK_EXPR@636..816 + L_CURLY@636..637 "{" + WHITESPACE@637..642 "\n " + FN@642..720 + FN_KW@642..644 "fn" + WHITESPACE@644..645 " " + NAME@645..648 + IDENT@645..648 "the" + PARAM_LIST@648..664 + L_PAREN@648..649 "(" + PARAM@649..663 + IDENT_PAT@649..650 + NAME@649..650 + IDENT@649..650 "x" + COLON@650..651 ":" + WHITESPACE@651..652 " " + REF_TYPE@652..663 + AMP@652..653 "&" + PATH_TYPE@653..663 + PATH@653..663 + PATH_SEGMENT@653..663 + NAME_REF@653..657 + IDENT@653..657 "Cell" + GENERIC_ARG_LIST@657..663 + L_ANGLE@657..658 "<" + TYPE_ARG@658..662 + PATH_TYPE@658..662 + PATH@658..662 + PATH_SEGMENT@658..662 + NAME_REF@658..662 + IDENT@658..662 "bool" + R_ANGLE@662..663 ">" + R_PAREN@663..664 ")" + WHITESPACE@664..665 " " + BLOCK_EXPR@665..720 + L_CURLY@665..666 "{" + WHITESPACE@666..675 "\n " + EXPR_STMT@675..714 + RETURN_EXPR@675..713 + RETURN_KW@675..681 "return" + WHITESPACE@681..682 " " + WHILE_EXPR@682..713 + WHILE_KW@682..687 "while" + WHITESPACE@687..688 " " + CONDITION@688..696 + PREFIX_EXPR@688..696 + BANG@688..689 "!" + METHOD_CALL_EXPR@689..696 + PATH_EXPR@689..690 + PATH@689..690 + PATH_SEGMENT@689..690 + NAME_REF@689..690 + IDENT@689..690 "x" + DOT@690..691 "." + NAME_REF@691..694 + IDENT@691..694 "get" + ARG_LIST@694..696 + L_PAREN@694..695 "(" + R_PAREN@695..696 ")" + WHITESPACE@696..697 " " + BLOCK_EXPR@697..713 + L_CURLY@697..698 "{" + WHITESPACE@698..699 " " + EXPR_STMT@699..711 + METHOD_CALL_EXPR@699..710 + PATH_EXPR@699..700 + PATH@699..700 + PATH_SEGMENT@699..700 + NAME_REF@699..700 + IDENT@699..700 "x" + DOT@700..701 "." + NAME_REF@701..704 + IDENT@701..704 "set" + ARG_LIST@704..710 + L_PAREN@704..705 "(" + LITERAL@705..709 + TRUE_KW@705..709 "true" + R_PAREN@709..710 ")" + SEMICOLON@710..711 ";" + WHITESPACE@711..712 " " + R_CURLY@712..713 "}" + SEMICOLON@713..714 ";" + WHITESPACE@714..719 "\n " + R_CURLY@719..720 "}" + WHITESPACE@720..725 "\n " + LET_STMT@725..751 + LET_KW@725..728 "let" + WHITESPACE@728..729 " " + IDENT_PAT@729..730 + NAME@729..730 + IDENT@729..730 "i" + WHITESPACE@730..731 " " + EQ@731..732 "=" + WHITESPACE@732..733 " " + REF_EXPR@733..750 + AMP@733..734 "&" + CALL_EXPR@734..750 + PATH_EXPR@734..743 + PATH@734..743 + PATH@734..738 + PATH_SEGMENT@734..738 + NAME_REF@734..738 + IDENT@734..738 "Cell" + COLON2@738..740 "::" + PATH_SEGMENT@740..743 + NAME_REF@740..743 + IDENT@740..743 "new" + ARG_LIST@743..750 + L_PAREN@743..744 "(" + LITERAL@744..749 + FALSE_KW@744..749 "false" + R_PAREN@749..750 ")" + SEMICOLON@750..751 ";" + WHITESPACE@751..756 "\n " + LET_STMT@756..778 + LET_KW@756..759 "let" + WHITESPACE@759..760 " " + IDENT_PAT@760..764 + NAME@760..764 + IDENT@760..764 "dont" + WHITESPACE@764..765 " " + EQ@765..766 "=" + WHITESPACE@766..767 " " + BLOCK_EXPR@767..777 + L_CURLY@767..768 "{" + CLOSURE_EXPR@768..776 + PARAM_LIST@768..770 + PIPE@768..769 "|" + PIPE@769..770 "|" + CALL_EXPR@770..776 + PATH_EXPR@770..773 + PATH@770..773 + PATH_SEGMENT@770..773 + NAME_REF@770..773 + IDENT@770..773 "the" + ARG_LIST@773..776 + L_PAREN@773..774 "(" + PATH_EXPR@774..775 + PATH@774..775 + PATH_SEGMENT@774..775 + NAME_REF@774..775 + IDENT@774..775 "i" + R_PAREN@775..776 ")" + R_CURLY@776..777 "}" + SEMICOLON@777..778 ";" + WHITESPACE@778..783 "\n " + EXPR_STMT@783..790 + CALL_EXPR@783..789 + PATH_EXPR@783..787 + PATH@783..787 + PATH_SEGMENT@783..787 + NAME_REF@783..787 + IDENT@783..787 "dont" + ARG_LIST@787..789 + L_PAREN@787..788 "(" + R_PAREN@788..789 ")" + SEMICOLON@789..790 ";" + WHITESPACE@790..795 "\n " + EXPR_STMT@795..814 + MACRO_CALL@795..813 + PATH@795..801 + PATH_SEGMENT@795..801 + NAME_REF@795..801 + IDENT@795..801 "assert" + BANG@801..802 "!" + TOKEN_TREE@802..813 + L_PAREN@802..803 "(" + TOKEN_TREE@803..812 + L_PAREN@803..804 "(" + IDENT@804..805 "i" + DOT@805..806 "." + IDENT@806..809 "get" + TOKEN_TREE@809..811 + L_PAREN@809..810 "(" + R_PAREN@810..811 ")" + R_PAREN@811..812 ")" + R_PAREN@812..813 ")" + SEMICOLON@813..814 ";" + WHITESPACE@814..815 "\n" + R_CURLY@815..816 "}" + WHITESPACE@816..818 "\n\n" + FN@818..1322 + FN_KW@818..820 "fn" + WHITESPACE@820..821 " " + NAME@821..832 + IDENT@821..832 "zombiejesus" + PARAM_LIST@832..834 + L_PAREN@832..833 "(" + R_PAREN@833..834 ")" + WHITESPACE@834..835 " " + BLOCK_EXPR@835..1322 + L_CURLY@835..836 "{" + WHITESPACE@836..841 "\n " + LOOP_EXPR@841..1320 + LOOP_KW@841..845 "loop" + WHITESPACE@845..846 " " + BLOCK_EXPR@846..1320 + L_CURLY@846..847 "{" + WHITESPACE@847..856 "\n " + EXPR_STMT@856..1283 + WHILE_EXPR@856..1283 + WHILE_KW@856..861 "while" + WHITESPACE@861..862 " " + CONDITION@862..870 + PAREN_EXPR@862..870 + L_PAREN@862..863 "(" + RETURN_EXPR@863..869 + RETURN_KW@863..869 "return" + R_PAREN@869..870 ")" + WHITESPACE@870..871 " " + BLOCK_EXPR@871..1283 + L_CURLY@871..872 "{" + WHITESPACE@872..885 "\n " + IF_EXPR@885..1273 + IF_KW@885..887 "if" + WHITESPACE@887..888 " " + CONDITION@888..896 + PAREN_EXPR@888..896 + L_PAREN@888..889 "(" + RETURN_EXPR@889..895 + RETURN_KW@889..895 "return" + R_PAREN@895..896 ")" + WHITESPACE@896..897 " " + BLOCK_EXPR@897..1216 + L_CURLY@897..898 "{" + WHITESPACE@898..915 "\n " + EXPR_STMT@915..1202 + MATCH_EXPR@915..1201 + MATCH_KW@915..920 "match" + WHITESPACE@920..921 " " + PAREN_EXPR@921..929 + L_PAREN@921..922 "(" + RETURN_EXPR@922..928 + RETURN_KW@922..928 "return" + R_PAREN@928..929 ")" + WHITESPACE@929..930 " " + MATCH_ARM_LIST@930..1201 + L_CURLY@930..931 "{" + WHITESPACE@931..952 "\n " + MATCH_ARM@952..1147 + LITERAL_PAT@952..953 + LITERAL@952..953 + INT_NUMBER@952..953 "1" + WHITESPACE@953..954 " " + FAT_ARROW@954..956 "=>" + WHITESPACE@956..957 " " + BLOCK_EXPR@957..1147 + L_CURLY@957..958 "{" + WHITESPACE@958..983 "\n ..." + IF_EXPR@983..1125 + IF_KW@983..985 "if" + WHITESPACE@985..986 " " + CONDITION@986..994 + PAREN_EXPR@986..994 + L_PAREN@986..987 "(" + RETURN_EXPR@987..993 + RETURN_KW@987..993 "return" + R_PAREN@993..994 ")" + WHITESPACE@994..995 " " + BLOCK_EXPR@995..1057 + L_CURLY@995..996 "{" + WHITESPACE@996..1025 "\n ..." + RETURN_EXPR@1025..1031 + RETURN_KW@1025..1031 "return" + WHITESPACE@1031..1056 "\n ..." + R_CURLY@1056..1057 "}" + WHITESPACE@1057..1058 " " + ELSE_KW@1058..1062 "else" + WHITESPACE@1062..1063 " " + BLOCK_EXPR@1063..1125 + L_CURLY@1063..1064 "{" + WHITESPACE@1064..1093 "\n ..." + RETURN_EXPR@1093..1099 + RETURN_KW@1093..1099 "return" + WHITESPACE@1099..1124 "\n ..." + R_CURLY@1124..1125 "}" + WHITESPACE@1125..1146 "\n " + R_CURLY@1146..1147 "}" + WHITESPACE@1147..1168 "\n " + MATCH_ARM@1168..1183 + WILDCARD_PAT@1168..1169 + UNDERSCORE@1168..1169 "_" + WHITESPACE@1169..1170 " " + FAT_ARROW@1170..1172 "=>" + WHITESPACE@1172..1173 " " + BLOCK_EXPR@1173..1183 + L_CURLY@1173..1174 "{" + WHITESPACE@1174..1175 " " + RETURN_EXPR@1175..1181 + RETURN_KW@1175..1181 "return" + WHITESPACE@1181..1182 " " + R_CURLY@1182..1183 "}" + WHITESPACE@1183..1200 "\n " + R_CURLY@1200..1201 "}" + SEMICOLON@1201..1202 ";" + WHITESPACE@1202..1215 "\n " + R_CURLY@1215..1216 "}" + WHITESPACE@1216..1217 " " + ELSE_KW@1217..1221 "else" + WHITESPACE@1221..1222 " " + IF_EXPR@1222..1273 + IF_KW@1222..1224 "if" + WHITESPACE@1224..1225 " " + CONDITION@1225..1233 + PAREN_EXPR@1225..1233 + L_PAREN@1225..1226 "(" + RETURN_EXPR@1226..1232 + RETURN_KW@1226..1232 "return" + R_PAREN@1232..1233 ")" + WHITESPACE@1233..1234 " " + BLOCK_EXPR@1234..1273 + L_CURLY@1234..1235 "{" + WHITESPACE@1235..1252 "\n " + EXPR_STMT@1252..1259 + RETURN_EXPR@1252..1258 + RETURN_KW@1252..1258 "return" + SEMICOLON@1258..1259 ";" + WHITESPACE@1259..1272 "\n " + R_CURLY@1272..1273 "}" + WHITESPACE@1273..1282 "\n " + R_CURLY@1282..1283 "}" + WHITESPACE@1283..1292 "\n " + IF_EXPR@1292..1314 + IF_KW@1292..1294 "if" + WHITESPACE@1294..1295 " " + CONDITION@1295..1303 + PAREN_EXPR@1295..1303 + L_PAREN@1295..1296 "(" + RETURN_EXPR@1296..1302 + RETURN_KW@1296..1302 "return" + R_PAREN@1302..1303 ")" + WHITESPACE@1303..1304 " " + BLOCK_EXPR@1304..1314 + L_CURLY@1304..1305 "{" + WHITESPACE@1305..1306 " " + EXPR_STMT@1306..1312 + BREAK_EXPR@1306..1311 + BREAK_KW@1306..1311 "break" + SEMICOLON@1311..1312 ";" + WHITESPACE@1312..1313 " " + R_CURLY@1313..1314 "}" + WHITESPACE@1314..1319 "\n " + R_CURLY@1319..1320 "}" + WHITESPACE@1320..1321 "\n" + R_CURLY@1321..1322 "}" + WHITESPACE@1322..1324 "\n\n" + FN@1324..1539 + FN_KW@1324..1326 "fn" + WHITESPACE@1326..1327 " " + NAME@1327..1334 + IDENT@1327..1334 "notsure" + PARAM_LIST@1334..1336 + L_PAREN@1334..1335 "(" + R_PAREN@1335..1336 ")" + WHITESPACE@1336..1337 " " + BLOCK_EXPR@1337..1539 + L_CURLY@1337..1338 "{" + WHITESPACE@1338..1343 "\n " + LET_STMT@1343..1361 + LET_KW@1343..1346 "let" + WHITESPACE@1346..1347 " " + IDENT_PAT@1347..1353 + MUT_KW@1347..1350 "mut" + WHITESPACE@1350..1351 " " + NAME@1351..1353 + IDENT@1351..1353 "_x" + COLON@1353..1354 ":" + WHITESPACE@1354..1355 " " + PATH_TYPE@1355..1360 + PATH@1355..1360 + PATH_SEGMENT@1355..1360 + NAME_REF@1355..1360 + IDENT@1355..1360 "isize" + SEMICOLON@1360..1361 ";" + WHITESPACE@1361..1366 "\n " + LET_STMT@1366..1400 + LET_KW@1366..1369 "let" + WHITESPACE@1369..1370 " " + IDENT_PAT@1370..1376 + MUT_KW@1370..1373 "mut" + WHITESPACE@1373..1374 " " + NAME@1374..1376 + IDENT@1374..1376 "_y" + WHITESPACE@1376..1377 " " + EQ@1377..1378 "=" + WHITESPACE@1378..1379 " " + BIN_EXPR@1379..1399 + PAREN_EXPR@1379..1387 + L_PAREN@1379..1380 "(" + BIN_EXPR@1380..1386 + PATH_EXPR@1380..1382 + PATH@1380..1382 + PATH_SEGMENT@1380..1382 + NAME_REF@1380..1382 + IDENT@1380..1382 "_x" + WHITESPACE@1382..1383 " " + EQ@1383..1384 "=" + WHITESPACE@1384..1385 " " + LITERAL@1385..1386 + INT_NUMBER@1385..1386 "0" + R_PAREN@1386..1387 ")" + WHITESPACE@1387..1388 " " + EQ2@1388..1390 "==" + WHITESPACE@1390..1391 " " + PAREN_EXPR@1391..1399 + L_PAREN@1391..1392 "(" + BIN_EXPR@1392..1398 + PATH_EXPR@1392..1394 + PATH@1392..1394 + PATH_SEGMENT@1392..1394 + NAME_REF@1392..1394 + IDENT@1392..1394 "_x" + WHITESPACE@1394..1395 " " + EQ@1395..1396 "=" + WHITESPACE@1396..1397 " " + LITERAL@1397..1398 + INT_NUMBER@1397..1398 "0" + R_PAREN@1398..1399 ")" + SEMICOLON@1399..1400 ";" + WHITESPACE@1400..1405 "\n " + LET_STMT@1405..1438 + LET_KW@1405..1408 "let" + WHITESPACE@1408..1409 " " + IDENT_PAT@1409..1415 + MUT_KW@1409..1412 "mut" + WHITESPACE@1412..1413 " " + NAME@1413..1415 + IDENT@1413..1415 "_z" + WHITESPACE@1415..1416 " " + EQ@1416..1417 "=" + WHITESPACE@1417..1418 " " + BIN_EXPR@1418..1437 + PAREN_EXPR@1418..1426 + L_PAREN@1418..1419 "(" + BIN_EXPR@1419..1425 + PATH_EXPR@1419..1421 + PATH@1419..1421 + PATH_SEGMENT@1419..1421 + NAME_REF@1419..1421 + IDENT@1419..1421 "_x" + WHITESPACE@1421..1422 " " + EQ@1422..1423 "=" + WHITESPACE@1423..1424 " " + LITERAL@1424..1425 + INT_NUMBER@1424..1425 "0" + R_PAREN@1425..1426 ")" + WHITESPACE@1426..1427 " " + L_ANGLE@1427..1428 "<" + WHITESPACE@1428..1429 " " + PAREN_EXPR@1429..1437 + L_PAREN@1429..1430 "(" + BIN_EXPR@1430..1436 + PATH_EXPR@1430..1432 + PATH@1430..1432 + PATH_SEGMENT@1430..1432 + NAME_REF@1430..1432 + IDENT@1430..1432 "_x" + WHITESPACE@1432..1433 " " + EQ@1433..1434 "=" + WHITESPACE@1434..1435 " " + LITERAL@1435..1436 + INT_NUMBER@1435..1436 "0" + R_PAREN@1436..1437 ")" + SEMICOLON@1437..1438 ";" + WHITESPACE@1438..1443 "\n " + LET_STMT@1443..1474 + LET_KW@1443..1446 "let" + WHITESPACE@1446..1447 " " + IDENT_PAT@1447..1449 + NAME@1447..1449 + IDENT@1447..1449 "_a" + WHITESPACE@1449..1450 " " + EQ@1450..1451 "=" + WHITESPACE@1451..1452 " " + BIN_EXPR@1452..1473 + PAREN_EXPR@1452..1461 + L_PAREN@1452..1453 "(" + BIN_EXPR@1453..1460 + PATH_EXPR@1453..1455 + PATH@1453..1455 + PATH_SEGMENT@1453..1455 + NAME_REF@1453..1455 + IDENT@1453..1455 "_x" + WHITESPACE@1455..1456 " " + PLUSEQ@1456..1458 "+=" + WHITESPACE@1458..1459 " " + LITERAL@1459..1460 + INT_NUMBER@1459..1460 "0" + R_PAREN@1460..1461 ")" + WHITESPACE@1461..1462 " " + EQ2@1462..1464 "==" + WHITESPACE@1464..1465 " " + PAREN_EXPR@1465..1473 + L_PAREN@1465..1466 "(" + BIN_EXPR@1466..1472 + PATH_EXPR@1466..1468 + PATH@1466..1468 + PATH_SEGMENT@1466..1468 + NAME_REF@1466..1468 + IDENT@1466..1468 "_x" + WHITESPACE@1468..1469 " " + EQ@1469..1470 "=" + WHITESPACE@1470..1471 " " + LITERAL@1471..1472 + INT_NUMBER@1471..1472 "0" + R_PAREN@1472..1473 ")" + SEMICOLON@1473..1474 ";" + WHITESPACE@1474..1479 "\n " + LET_STMT@1479..1537 + LET_KW@1479..1482 "let" + WHITESPACE@1482..1483 " " + IDENT_PAT@1483..1485 + NAME@1483..1485 + IDENT@1483..1485 "_b" + WHITESPACE@1485..1486 " " + EQ@1486..1487 "=" + WHITESPACE@1487..1488 " " + BIN_EXPR@1488..1536 + CALL_EXPR@1488..1510 + PATH_EXPR@1488..1492 + PATH@1488..1492 + PATH_SEGMENT@1488..1492 + NAME_REF@1488..1492 + IDENT@1488..1492 "swap" + ARG_LIST@1492..1510 + L_PAREN@1492..1493 "(" + REF_EXPR@1493..1500 + AMP@1493..1494 "&" + MUT_KW@1494..1497 "mut" + WHITESPACE@1497..1498 " " + PATH_EXPR@1498..1500 + PATH@1498..1500 + PATH_SEGMENT@1498..1500 + NAME_REF@1498..1500 + IDENT@1498..1500 "_y" + COMMA@1500..1501 "," + WHITESPACE@1501..1502 " " + REF_EXPR@1502..1509 + AMP@1502..1503 "&" + MUT_KW@1503..1506 "mut" + WHITESPACE@1506..1507 " " + PATH_EXPR@1507..1509 + PATH@1507..1509 + PATH_SEGMENT@1507..1509 + NAME_REF@1507..1509 + IDENT@1507..1509 "_z" + R_PAREN@1509..1510 ")" + WHITESPACE@1510..1511 " " + EQ2@1511..1513 "==" + WHITESPACE@1513..1514 " " + CALL_EXPR@1514..1536 + PATH_EXPR@1514..1518 + PATH@1514..1518 + PATH_SEGMENT@1514..1518 + NAME_REF@1514..1518 + IDENT@1514..1518 "swap" + ARG_LIST@1518..1536 + L_PAREN@1518..1519 "(" + REF_EXPR@1519..1526 + AMP@1519..1520 "&" + MUT_KW@1520..1523 "mut" + WHITESPACE@1523..1524 " " + PATH_EXPR@1524..1526 + PATH@1524..1526 + PATH_SEGMENT@1524..1526 + NAME_REF@1524..1526 + IDENT@1524..1526 "_y" + COMMA@1526..1527 "," + WHITESPACE@1527..1528 " " + REF_EXPR@1528..1535 + AMP@1528..1529 "&" + MUT_KW@1529..1532 "mut" + WHITESPACE@1532..1533 " " + PATH_EXPR@1533..1535 + PATH@1533..1535 + PATH_SEGMENT@1533..1535 + NAME_REF@1533..1535 + IDENT@1533..1535 "_z" + R_PAREN@1535..1536 ")" + SEMICOLON@1536..1537 ";" + WHITESPACE@1537..1538 "\n" + R_CURLY@1538..1539 "}" + WHITESPACE@1539..1541 "\n\n" + FN@1541..1741 + FN_KW@1541..1543 "fn" + WHITESPACE@1543..1544 " " + NAME@1544..1557 + IDENT@1544..1557 "canttouchthis" + PARAM_LIST@1557..1559 + L_PAREN@1557..1558 "(" + R_PAREN@1558..1559 ")" + WHITESPACE@1559..1560 " " + RET_TYPE@1560..1568 + THIN_ARROW@1560..1562 "->" + WHITESPACE@1562..1563 " " + PATH_TYPE@1563..1568 + PATH@1563..1568 + PATH_SEGMENT@1563..1568 + NAME_REF@1563..1568 + IDENT@1563..1568 "usize" + WHITESPACE@1568..1569 " " + BLOCK_EXPR@1569..1741 + L_CURLY@1569..1570 "{" + WHITESPACE@1570..1575 "\n " + FN@1575..1598 + FN_KW@1575..1577 "fn" + WHITESPACE@1577..1578 " " + NAME@1578..1579 + IDENT@1578..1579 "p" + PARAM_LIST@1579..1581 + L_PAREN@1579..1580 "(" + R_PAREN@1580..1581 ")" + WHITESPACE@1581..1582 " " + RET_TYPE@1582..1589 + THIN_ARROW@1582..1584 "->" + WHITESPACE@1584..1585 " " + PATH_TYPE@1585..1589 + PATH@1585..1589 + PATH_SEGMENT@1585..1589 + NAME_REF@1585..1589 + IDENT@1585..1589 "bool" + WHITESPACE@1589..1590 " " + BLOCK_EXPR@1590..1598 + L_CURLY@1590..1591 "{" + WHITESPACE@1591..1592 " " + LITERAL@1592..1596 + TRUE_KW@1592..1596 "true" + WHITESPACE@1596..1597 " " + R_CURLY@1597..1598 "}" + WHITESPACE@1598..1603 "\n " + LET_STMT@1603..1648 + LET_KW@1603..1606 "let" + WHITESPACE@1606..1607 " " + IDENT_PAT@1607..1609 + NAME@1607..1609 + IDENT@1607..1609 "_a" + WHITESPACE@1609..1610 " " + EQ@1610..1611 "=" + WHITESPACE@1611..1612 " " + PAREN_EXPR@1612..1647 + L_PAREN@1612..1613 "(" + BIN_EXPR@1613..1646 + MACRO_CALL@1613..1628 + PATH@1613..1619 + PATH_SEGMENT@1613..1619 + NAME_REF@1613..1619 + IDENT@1613..1619 "assert" + BANG@1619..1620 "!" + TOKEN_TREE@1620..1628 + L_PAREN@1620..1621 "(" + TOKEN_TREE@1621..1627 + L_PAREN@1621..1622 "(" + TRUE_KW@1622..1626 "true" + R_PAREN@1626..1627 ")" + R_PAREN@1627..1628 ")" + WHITESPACE@1628..1629 " " + EQ2@1629..1631 "==" + WHITESPACE@1631..1632 " " + PAREN_EXPR@1632..1646 + L_PAREN@1632..1633 "(" + MACRO_CALL@1633..1645 + PATH@1633..1639 + PATH_SEGMENT@1633..1639 + NAME_REF@1633..1639 + IDENT@1633..1639 "assert" + BANG@1639..1640 "!" + TOKEN_TREE@1640..1645 + L_PAREN@1640..1641 "(" + IDENT@1641..1642 "p" + TOKEN_TREE@1642..1644 + L_PAREN@1642..1643 "(" + R_PAREN@1643..1644 ")" + R_PAREN@1644..1645 ")" + R_PAREN@1645..1646 ")" + R_PAREN@1646..1647 ")" + SEMICOLON@1647..1648 ";" + WHITESPACE@1648..1653 "\n " + LET_STMT@1653..1685 + LET_KW@1653..1656 "let" + WHITESPACE@1656..1657 " " + IDENT_PAT@1657..1659 + NAME@1657..1659 + IDENT@1657..1659 "_c" + WHITESPACE@1659..1660 " " + EQ@1660..1661 "=" + WHITESPACE@1661..1662 " " + PAREN_EXPR@1662..1684 + L_PAREN@1662..1663 "(" + BIN_EXPR@1663..1683 + MACRO_CALL@1663..1677 + PATH@1663..1669 + PATH_SEGMENT@1663..1669 + NAME_REF@1663..1669 + IDENT@1663..1669 "assert" + BANG@1669..1670 "!" + TOKEN_TREE@1670..1677 + L_PAREN@1670..1671 "(" + TOKEN_TREE@1671..1676 + L_PAREN@1671..1672 "(" + IDENT@1672..1673 "p" + TOKEN_TREE@1673..1675 + L_PAREN@1673..1674 "(" + R_PAREN@1674..1675 ")" + R_PAREN@1675..1676 ")" + R_PAREN@1676..1677 ")" + WHITESPACE@1677..1678 " " + EQ2@1678..1680 "==" + WHITESPACE@1680..1681 " " + TUPLE_EXPR@1681..1683 + L_PAREN@1681..1682 "(" + R_PAREN@1682..1683 ")" + R_PAREN@1683..1684 ")" + SEMICOLON@1684..1685 ";" + WHITESPACE@1685..1690 "\n " + LET_STMT@1690..1739 + LET_KW@1690..1693 "let" + WHITESPACE@1693..1694 " " + IDENT_PAT@1694..1696 + NAME@1694..1696 + IDENT@1694..1696 "_b" + COLON@1696..1697 ":" + WHITESPACE@1697..1698 " " + PATH_TYPE@1698..1702 + PATH@1698..1702 + PATH_SEGMENT@1698..1702 + NAME_REF@1698..1702 + IDENT@1698..1702 "bool" + WHITESPACE@1702..1703 " " + EQ@1703..1704 "=" + WHITESPACE@1704..1705 " " + PAREN_EXPR@1705..1738 + L_PAREN@1705..1706 "(" + BIN_EXPR@1706..1737 + MACRO_CALL@1706..1723 + PATH@1706..1713 + PATH_SEGMENT@1706..1713 + NAME_REF@1706..1713 + IDENT@1706..1713 "println" + BANG@1713..1714 "!" + TOKEN_TREE@1714..1723 + L_PAREN@1714..1715 "(" + STRING@1715..1719 "\"{}\"" + COMMA@1719..1720 "," + WHITESPACE@1720..1721 " " + INT_NUMBER@1721..1722 "0" + R_PAREN@1722..1723 ")" + WHITESPACE@1723..1724 " " + EQ2@1724..1726 "==" + WHITESPACE@1726..1727 " " + PAREN_EXPR@1727..1737 + L_PAREN@1727..1728 "(" + RETURN_EXPR@1728..1736 + RETURN_KW@1728..1734 "return" + WHITESPACE@1734..1735 " " + LITERAL@1735..1736 + INT_NUMBER@1735..1736 "0" + R_PAREN@1736..1737 ")" + R_PAREN@1737..1738 ")" + SEMICOLON@1738..1739 ";" + WHITESPACE@1739..1740 "\n" + R_CURLY@1740..1741 "}" + WHITESPACE@1741..1743 "\n\n" + FN@1743..1904 + FN_KW@1743..1745 "fn" + WHITESPACE@1745..1746 " " + NAME@1746..1755 + IDENT@1746..1755 "angrydome" + PARAM_LIST@1755..1757 + L_PAREN@1755..1756 "(" + R_PAREN@1756..1757 ")" + WHITESPACE@1757..1758 " " + BLOCK_EXPR@1758..1904 + L_CURLY@1758..1759 "{" + WHITESPACE@1759..1764 "\n " + EXPR_STMT@1764..1785 + LOOP_EXPR@1764..1785 + LOOP_KW@1764..1768 "loop" + WHITESPACE@1768..1769 " " + BLOCK_EXPR@1769..1785 + L_CURLY@1769..1770 "{" + WHITESPACE@1770..1771 " " + IF_EXPR@1771..1783 + IF_KW@1771..1773 "if" + WHITESPACE@1773..1774 " " + CONDITION@1774..1779 + BREAK_EXPR@1774..1779 + BREAK_KW@1774..1779 "break" + WHITESPACE@1779..1780 " " + BLOCK_EXPR@1780..1783 + L_CURLY@1780..1781 "{" + WHITESPACE@1781..1782 " " + R_CURLY@1782..1783 "}" + WHITESPACE@1783..1784 " " + R_CURLY@1784..1785 "}" + WHITESPACE@1785..1790 "\n " + LET_STMT@1790..1804 + LET_KW@1790..1793 "let" + WHITESPACE@1793..1794 " " + IDENT_PAT@1794..1799 + MUT_KW@1794..1797 "mut" + WHITESPACE@1797..1798 " " + NAME@1798..1799 + IDENT@1798..1799 "i" + WHITESPACE@1799..1800 " " + EQ@1800..1801 "=" + WHITESPACE@1801..1802 " " + LITERAL@1802..1803 + INT_NUMBER@1802..1803 "0" + SEMICOLON@1803..1804 ";" + WHITESPACE@1804..1809 "\n " + LOOP_EXPR@1809..1902 + LOOP_KW@1809..1813 "loop" + WHITESPACE@1813..1814 " " + BLOCK_EXPR@1814..1902 + L_CURLY@1814..1815 "{" + WHITESPACE@1815..1816 " " + EXPR_STMT@1816..1823 + BIN_EXPR@1816..1822 + PATH_EXPR@1816..1817 + PATH@1816..1817 + PATH_SEGMENT@1816..1817 + NAME_REF@1816..1817 + IDENT@1816..1817 "i" + WHITESPACE@1817..1818 " " + PLUSEQ@1818..1820 "+=" + WHITESPACE@1820..1821 " " + LITERAL@1821..1822 + INT_NUMBER@1821..1822 "1" + SEMICOLON@1822..1823 ";" + WHITESPACE@1823..1824 " " + EXPR_STMT@1824..1887 + IF_EXPR@1824..1887 + IF_KW@1824..1826 "if" + WHITESPACE@1826..1827 " " + CONDITION@1827..1833 + BIN_EXPR@1827..1833 + PATH_EXPR@1827..1828 + PATH@1827..1828 + PATH_SEGMENT@1827..1828 + NAME_REF@1827..1828 + IDENT@1827..1828 "i" + WHITESPACE@1828..1829 " " + EQ2@1829..1831 "==" + WHITESPACE@1831..1832 " " + LITERAL@1832..1833 + INT_NUMBER@1832..1833 "1" + WHITESPACE@1833..1834 " " + BLOCK_EXPR@1834..1887 + L_CURLY@1834..1835 "{" + WHITESPACE@1835..1836 " " + MATCH_EXPR@1836..1885 + MATCH_KW@1836..1841 "match" + WHITESPACE@1841..1842 " " + PAREN_EXPR@1842..1852 + L_PAREN@1842..1843 "(" + CONTINUE_EXPR@1843..1851 + CONTINUE_KW@1843..1851 "continue" + R_PAREN@1851..1852 ")" + WHITESPACE@1852..1853 " " + MATCH_ARM_LIST@1853..1885 + L_CURLY@1853..1854 "{" + WHITESPACE@1854..1855 " " + MATCH_ARM@1855..1863 + LITERAL_PAT@1855..1856 + LITERAL@1855..1856 + INT_NUMBER@1855..1856 "1" + WHITESPACE@1856..1857 " " + FAT_ARROW@1857..1859 "=>" + WHITESPACE@1859..1860 " " + BLOCK_EXPR@1860..1863 + L_CURLY@1860..1861 "{" + WHITESPACE@1861..1862 " " + R_CURLY@1862..1863 "}" + COMMA@1863..1864 "," + WHITESPACE@1864..1865 " " + MATCH_ARM@1865..1883 + WILDCARD_PAT@1865..1866 + UNDERSCORE@1865..1866 "_" + WHITESPACE@1866..1867 " " + FAT_ARROW@1867..1869 "=>" + WHITESPACE@1869..1870 " " + MACRO_CALL@1870..1883 + PATH@1870..1875 + PATH_SEGMENT@1870..1875 + NAME_REF@1870..1875 + IDENT@1870..1875 "panic" + BANG@1875..1876 "!" + TOKEN_TREE@1876..1883 + L_PAREN@1876..1877 "(" + STRING@1877..1882 "\"wat\"" + R_PAREN@1882..1883 ")" + WHITESPACE@1883..1884 " " + R_CURLY@1884..1885 "}" + WHITESPACE@1885..1886 " " + R_CURLY@1886..1887 "}" + WHITESPACE@1887..1894 "\n " + EXPR_STMT@1894..1900 + BREAK_EXPR@1894..1899 + BREAK_KW@1894..1899 "break" + SEMICOLON@1899..1900 ";" + WHITESPACE@1900..1901 " " + R_CURLY@1901..1902 "}" + WHITESPACE@1902..1903 "\n" + R_CURLY@1903..1904 "}" + WHITESPACE@1904..1906 "\n\n" + FN@1906..1960 + FN_KW@1906..1908 "fn" + WHITESPACE@1908..1909 " " + NAME@1909..1921 + IDENT@1909..1921 "evil_lincoln" + PARAM_LIST@1921..1923 + L_PAREN@1921..1922 "(" + R_PAREN@1922..1923 ")" + WHITESPACE@1923..1924 " " + BLOCK_EXPR@1924..1960 + L_CURLY@1924..1925 "{" + WHITESPACE@1925..1926 " " + LET_STMT@1926..1958 + LET_KW@1926..1929 "let" + WHITESPACE@1929..1930 " " + IDENT_PAT@1930..1935 + NAME@1930..1935 + IDENT@1930..1935 "_evil" + WHITESPACE@1935..1936 " " + EQ@1936..1937 "=" + WHITESPACE@1937..1938 " " + MACRO_CALL@1938..1957 + PATH@1938..1945 + PATH_SEGMENT@1938..1945 + NAME_REF@1938..1945 + IDENT@1938..1945 "println" + BANG@1945..1946 "!" + TOKEN_TREE@1946..1957 + L_PAREN@1946..1947 "(" + STRING@1947..1956 "\"lincoln\"" + R_PAREN@1956..1957 ")" + SEMICOLON@1957..1958 ";" + WHITESPACE@1958..1959 " " + R_CURLY@1959..1960 "}" + WHITESPACE@1960..1962 "\n\n" + FN@1962..2198 + FN_KW@1962..1964 "fn" + WHITESPACE@1964..1965 " " + NAME@1965..1969 + IDENT@1965..1969 "dots" + PARAM_LIST@1969..1971 + L_PAREN@1969..1970 "(" + R_PAREN@1970..1971 ")" + WHITESPACE@1971..1972 " " + BLOCK_EXPR@1972..2198 + L_CURLY@1972..1973 "{" + WHITESPACE@1973..1978 "\n " + EXPR_STMT@1978..2196 + MACRO_CALL@1978..2195 + PATH@1978..1987 + PATH_SEGMENT@1978..1987 + NAME_REF@1978..1987 + IDENT@1978..1987 "assert_eq" + BANG@1987..1988 "!" + TOKEN_TREE@1988..2195 + L_PAREN@1988..1989 "(" + IDENT@1989..1995 "String" + COLON@1995..1996 ":" + COLON@1996..1997 ":" + IDENT@1997..2001 "from" + TOKEN_TREE@2001..2055 + L_PAREN@2001..2002 "(" + STRING@2002..2054 "\".................... ..." + R_PAREN@2054..2055 ")" + COMMA@2055..2056 "," + WHITESPACE@2056..2072 "\n " + IDENT@2072..2078 "format" + BANG@2078..2079 "!" + TOKEN_TREE@2079..2194 + L_PAREN@2079..2080 "(" + STRING@2080..2086 "\"{:?}\"" + COMMA@2086..2087 "," + WHITESPACE@2087..2088 " " + DOT@2088..2089 "." + DOT@2089..2090 "." + WHITESPACE@2090..2091 " " + DOT@2091..2092 "." + DOT@2092..2093 "." + WHITESPACE@2093..2094 " " + DOT@2094..2095 "." + DOT@2095..2096 "." + WHITESPACE@2096..2097 " " + DOT@2097..2098 "." + DOT@2098..2099 "." + WHITESPACE@2099..2100 " " + DOT@2100..2101 "." + DOT@2101..2102 "." + WHITESPACE@2102..2103 " " + DOT@2103..2104 "." + DOT@2104..2105 "." + WHITESPACE@2105..2106 " " + DOT@2106..2107 "." + DOT@2107..2108 "." + WHITESPACE@2108..2109 " " + DOT@2109..2110 "." + DOT@2110..2111 "." + WHITESPACE@2111..2112 " " + DOT@2112..2113 "." + DOT@2113..2114 "." + WHITESPACE@2114..2115 " " + DOT@2115..2116 "." + DOT@2116..2117 "." + WHITESPACE@2117..2118 " " + DOT@2118..2119 "." + DOT@2119..2120 "." + WHITESPACE@2120..2121 " " + DOT@2121..2122 "." + DOT@2122..2123 "." + WHITESPACE@2123..2124 " " + DOT@2124..2125 "." + DOT@2125..2126 "." + WHITESPACE@2126..2158 "\n ..." + DOT@2158..2159 "." + DOT@2159..2160 "." + WHITESPACE@2160..2161 " " + DOT@2161..2162 "." + DOT@2162..2163 "." + WHITESPACE@2163..2164 " " + DOT@2164..2165 "." + DOT@2165..2166 "." + WHITESPACE@2166..2167 " " + DOT@2167..2168 "." + DOT@2168..2169 "." + WHITESPACE@2169..2170 " " + DOT@2170..2171 "." + DOT@2171..2172 "." + WHITESPACE@2172..2173 " " + DOT@2173..2174 "." + DOT@2174..2175 "." + WHITESPACE@2175..2176 " " + DOT@2176..2177 "." + DOT@2177..2178 "." + WHITESPACE@2178..2179 " " + DOT@2179..2180 "." + DOT@2180..2181 "." + WHITESPACE@2181..2182 " " + DOT@2182..2183 "." + DOT@2183..2184 "." + WHITESPACE@2184..2185 " " + DOT@2185..2186 "." + DOT@2186..2187 "." + WHITESPACE@2187..2188 " " + DOT@2188..2189 "." + DOT@2189..2190 "." + WHITESPACE@2190..2191 " " + DOT@2191..2192 "." + DOT@2192..2193 "." + R_PAREN@2193..2194 ")" + R_PAREN@2194..2195 ")" + SEMICOLON@2195..2196 ";" + WHITESPACE@2196..2197 "\n" + R_CURLY@2197..2198 "}" + WHITESPACE@2198..2200 "\n\n" + FN@2200..2693 + FN_KW@2200..2202 "fn" + WHITESPACE@2202..2203 " " + NAME@2203..2205 + IDENT@2203..2205 "u8" + PARAM_LIST@2205..2213 + L_PAREN@2205..2206 "(" + PARAM@2206..2212 + IDENT_PAT@2206..2208 + NAME@2206..2208 + IDENT@2206..2208 "u8" + COLON@2208..2209 ":" + WHITESPACE@2209..2210 " " + PATH_TYPE@2210..2212 + PATH@2210..2212 + PATH_SEGMENT@2210..2212 + NAME_REF@2210..2212 + IDENT@2210..2212 "u8" + R_PAREN@2212..2213 ")" + WHITESPACE@2213..2214 " " + BLOCK_EXPR@2214..2693 + L_CURLY@2214..2215 "{" + WHITESPACE@2215..2220 "\n " + IF_EXPR@2220..2691 + IF_KW@2220..2222 "if" + WHITESPACE@2222..2223 " " + CONDITION@2223..2232 + BIN_EXPR@2223..2232 + PATH_EXPR@2223..2225 + PATH@2223..2225 + PATH_SEGMENT@2223..2225 + NAME_REF@2223..2225 + IDENT@2223..2225 "u8" + WHITESPACE@2225..2226 " " + NEQ@2226..2228 "!=" + WHITESPACE@2228..2229 " " + LITERAL@2229..2232 + INT_NUMBER@2229..2232 "0u8" + WHITESPACE@2232..2233 " " + BLOCK_EXPR@2233..2691 + L_CURLY@2233..2234 "{" + WHITESPACE@2234..2243 "\n " + EXPR_STMT@2243..2685 + MACRO_CALL@2243..2684 + PATH@2243..2252 + PATH_SEGMENT@2243..2252 + NAME_REF@2243..2252 + IDENT@2243..2252 "assert_eq" + BANG@2252..2253 "!" + TOKEN_TREE@2253..2684 + L_PAREN@2253..2254 "(" + INT_NUMBER@2254..2257 "8u8" + COMMA@2257..2258 "," + WHITESPACE@2258..2259 " " + TOKEN_TREE@2259..2683 + L_CURLY@2259..2260 "{" + WHITESPACE@2260..2273 "\n " + IDENT@2273..2284 "macro_rules" + BANG@2284..2285 "!" + WHITESPACE@2285..2286 " " + IDENT@2286..2288 "u8" + WHITESPACE@2288..2289 " " + TOKEN_TREE@2289..2567 + L_CURLY@2289..2290 "{" + WHITESPACE@2290..2307 "\n " + TOKEN_TREE@2307..2311 + L_PAREN@2307..2308 "(" + IDENT@2308..2310 "u8" + R_PAREN@2310..2311 ")" + WHITESPACE@2311..2312 " " + EQ@2312..2313 "=" + R_ANGLE@2313..2314 ">" + WHITESPACE@2314..2315 " " + TOKEN_TREE@2315..2552 + L_CURLY@2315..2316 "{" + WHITESPACE@2316..2337 "\n " + MOD_KW@2337..2340 "mod" + WHITESPACE@2340..2341 " " + IDENT@2341..2343 "u8" + WHITESPACE@2343..2344 " " + TOKEN_TREE@2344..2534 + L_CURLY@2344..2345 "{" + WHITESPACE@2345..2370 "\n ..." + PUB_KW@2370..2373 "pub" + WHITESPACE@2373..2374 " " + FN_KW@2374..2376 "fn" + WHITESPACE@2376..2377 " " + IDENT@2377..2379 "u8" + L_ANGLE@2379..2380 "<" + LIFETIME@2380..2383 "\'u8" + COLON@2383..2384 ":" + WHITESPACE@2384..2385 " " + LIFETIME@2385..2388 "\'u8" + WHITESPACE@2388..2389 " " + PLUS@2389..2390 "+" + WHITESPACE@2390..2391 " " + LIFETIME@2391..2394 "\'u8" + R_ANGLE@2394..2395 ">" + TOKEN_TREE@2395..2408 + L_PAREN@2395..2396 "(" + IDENT@2396..2398 "u8" + COLON@2398..2399 ":" + WHITESPACE@2399..2400 " " + AMP@2400..2401 "&" + LIFETIME@2401..2404 "\'u8" + WHITESPACE@2404..2405 " " + IDENT@2405..2407 "u8" + R_PAREN@2407..2408 ")" + WHITESPACE@2408..2409 " " + MINUS@2409..2410 "-" + R_ANGLE@2410..2411 ">" + WHITESPACE@2411..2412 " " + AMP@2412..2413 "&" + LIFETIME@2413..2416 "\'u8" + WHITESPACE@2416..2417 " " + IDENT@2417..2419 "u8" + WHITESPACE@2419..2420 " " + TOKEN_TREE@2420..2512 + L_CURLY@2420..2421 "{" + WHITESPACE@2421..2450 "\n ..." + STRING@2450..2454 "\"u8\"" + SEMICOLON@2454..2455 ";" + WHITESPACE@2455..2484 "\n ..." + IDENT@2484..2486 "u8" + WHITESPACE@2486..2511 "\n ..." + R_CURLY@2511..2512 "}" + WHITESPACE@2512..2533 "\n " + R_CURLY@2533..2534 "}" + WHITESPACE@2534..2551 "\n " + R_CURLY@2551..2552 "}" + SEMICOLON@2552..2553 ";" + WHITESPACE@2553..2566 "\n " + R_CURLY@2566..2567 "}" + WHITESPACE@2567..2581 "\n\n " + IDENT@2581..2583 "u8" + BANG@2583..2584 "!" + TOKEN_TREE@2584..2588 + L_PAREN@2584..2585 "(" + IDENT@2585..2587 "u8" + R_PAREN@2587..2588 ")" + SEMICOLON@2588..2589 ";" + WHITESPACE@2589..2602 "\n " + LET_KW@2602..2605 "let" + WHITESPACE@2605..2606 " " + AMP@2606..2607 "&" + IDENT@2607..2609 "u8" + COLON@2609..2610 ":" + WHITESPACE@2610..2611 " " + AMP@2611..2612 "&" + IDENT@2612..2614 "u8" + WHITESPACE@2614..2615 " " + EQ@2615..2616 "=" + WHITESPACE@2616..2617 " " + IDENT@2617..2619 "u8" + COLON@2619..2620 ":" + COLON@2620..2621 ":" + IDENT@2621..2623 "u8" + TOKEN_TREE@2623..2629 + L_PAREN@2623..2624 "(" + AMP@2624..2625 "&" + INT_NUMBER@2625..2628 "8u8" + R_PAREN@2628..2629 ")" + SEMICOLON@2629..2630 ";" + WHITESPACE@2630..2643 "\n " + CRATE_KW@2643..2648 "crate" + COLON@2648..2649 ":" + COLON@2649..2650 ":" + IDENT@2650..2652 "u8" + TOKEN_TREE@2652..2657 + L_PAREN@2652..2653 "(" + INT_NUMBER@2653..2656 "0u8" + R_PAREN@2656..2657 ")" + SEMICOLON@2657..2658 ";" + WHITESPACE@2658..2671 "\n " + IDENT@2671..2673 "u8" + WHITESPACE@2673..2682 "\n " + R_CURLY@2682..2683 "}" + R_PAREN@2683..2684 ")" + SEMICOLON@2684..2685 ";" + WHITESPACE@2685..2690 "\n " + R_CURLY@2690..2691 "}" + WHITESPACE@2691..2692 "\n" + R_CURLY@2692..2693 "}" + WHITESPACE@2693..2695 "\n\n" + FN@2695..2832 + FN_KW@2695..2697 "fn" + WHITESPACE@2697..2698 " " + NAME@2698..2703 + IDENT@2698..2703 "fishy" + PARAM_LIST@2703..2705 + L_PAREN@2703..2704 "(" + R_PAREN@2704..2705 ")" + WHITESPACE@2705..2706 " " + BLOCK_EXPR@2706..2832 + L_CURLY@2706..2707 "{" + WHITESPACE@2707..2712 "\n " + EXPR_STMT@2712..2830 + MACRO_CALL@2712..2829 + PATH@2712..2721 + PATH_SEGMENT@2712..2721 + NAME_REF@2712..2721 + IDENT@2712..2721 "assert_eq" + BANG@2721..2722 "!" + TOKEN_TREE@2722..2829 + L_PAREN@2722..2723 "(" + IDENT@2723..2729 "String" + COLON@2729..2730 ":" + COLON@2730..2731 ":" + IDENT@2731..2735 "from" + TOKEN_TREE@2735..2742 + L_PAREN@2735..2736 "(" + STRING@2736..2741 "\"><>\"" + R_PAREN@2741..2742 ")" + COMMA@2742..2743 "," + WHITESPACE@2743..2759 "\n " + IDENT@2759..2765 "String" + COLON@2765..2766 ":" + COLON@2766..2767 ":" + L_ANGLE@2767..2768 "<" + R_ANGLE@2768..2769 ">" + COLON@2769..2770 ":" + COLON@2770..2771 ":" + IDENT@2771..2775 "from" + COLON@2775..2776 ":" + COLON@2776..2777 ":" + L_ANGLE@2777..2778 "<" + R_ANGLE@2778..2779 ">" + TOKEN_TREE@2779..2786 + L_PAREN@2779..2780 "(" + STRING@2780..2785 "\"><>\"" + R_PAREN@2785..2786 ")" + DOT@2786..2787 "." + IDENT@2787..2792 "chars" + COLON@2792..2793 ":" + COLON@2793..2794 ":" + L_ANGLE@2794..2795 "<" + R_ANGLE@2795..2796 ">" + TOKEN_TREE@2796..2798 + L_PAREN@2796..2797 "(" + R_PAREN@2797..2798 ")" + DOT@2798..2799 "." + IDENT@2799..2802 "rev" + COLON@2802..2803 ":" + COLON@2803..2804 ":" + L_ANGLE@2804..2805 "<" + R_ANGLE@2805..2806 ">" + TOKEN_TREE@2806..2808 + L_PAREN@2806..2807 "(" + R_PAREN@2807..2808 ")" + DOT@2808..2809 "." + IDENT@2809..2816 "collect" + COLON@2816..2817 ":" + COLON@2817..2818 ":" + L_ANGLE@2818..2819 "<" + IDENT@2819..2825 "String" + R_ANGLE@2825..2826 ">" + TOKEN_TREE@2826..2828 + L_PAREN@2826..2827 "(" + R_PAREN@2827..2828 ")" + R_PAREN@2828..2829 ")" + SEMICOLON@2829..2830 ";" + WHITESPACE@2830..2831 "\n" + R_CURLY@2831..2832 "}" + WHITESPACE@2832..2834 "\n\n" + FN@2834..2906 + FN_KW@2834..2836 "fn" + WHITESPACE@2836..2837 " " + NAME@2837..2842 + IDENT@2837..2842 "union" + PARAM_LIST@2842..2844 + L_PAREN@2842..2843 "(" + R_PAREN@2843..2844 ")" + WHITESPACE@2844..2845 " " + BLOCK_EXPR@2845..2906 + L_CURLY@2845..2846 "{" + WHITESPACE@2846..2851 "\n " + UNION@2851..2904 + UNION_KW@2851..2856 "union" + WHITESPACE@2856..2857 " " + NAME@2857..2862 + IDENT@2857..2862 "union" + GENERIC_PARAM_LIST@2862..2870 + L_ANGLE@2862..2863 "<" + LIFETIME_PARAM@2863..2869 + LIFETIME@2863..2869 "\'union" + R_ANGLE@2869..2870 ">" + WHITESPACE@2870..2871 " " + RECORD_FIELD_LIST@2871..2904 + L_CURLY@2871..2872 "{" + WHITESPACE@2872..2873 " " + RECORD_FIELD@2873..2901 + NAME@2873..2878 + IDENT@2873..2878 "union" + COLON@2878..2879 ":" + WHITESPACE@2879..2880 " " + REF_TYPE@2880..2901 + AMP@2880..2881 "&" + LIFETIME@2881..2887 "\'union" + WHITESPACE@2887..2888 " " + PATH_TYPE@2888..2901 + PATH@2888..2901 + PATH_SEGMENT@2888..2901 + NAME_REF@2888..2893 + IDENT@2888..2893 "union" + GENERIC_ARG_LIST@2893..2901 + L_ANGLE@2893..2894 "<" + LIFETIME_ARG@2894..2900 + LIFETIME@2894..2900 "\'union" + R_ANGLE@2900..2901 ">" + COMMA@2901..2902 "," + WHITESPACE@2902..2903 " " + R_CURLY@2903..2904 "}" + WHITESPACE@2904..2905 "\n" + R_CURLY@2905..2906 "}" + WHITESPACE@2906..2908 "\n\n" + FN@2908..3042 + FN_KW@2908..2910 "fn" + WHITESPACE@2910..2911 " " + NAME@2911..2929 + IDENT@2911..2929 "special_characters" + PARAM_LIST@2929..2931 + L_PAREN@2929..2930 "(" + R_PAREN@2930..2931 ")" + WHITESPACE@2931..2932 " " + BLOCK_EXPR@2932..3042 + L_CURLY@2932..2933 "{" + WHITESPACE@2933..2938 "\n " + LET_STMT@2938..3021 + LET_KW@2938..2941 "let" + WHITESPACE@2941..2942 " " + IDENT_PAT@2942..2945 + NAME@2942..2945 + IDENT@2942..2945 "val" + WHITESPACE@2945..2946 " " + EQ@2946..2947 "=" + WHITESPACE@2947..2948 " " + PREFIX_EXPR@2948..3013 + BANG@2948..2949 "!" + PAREN_EXPR@2949..3013 + L_PAREN@2949..2950 "(" + BIN_EXPR@2950..3012 + CALL_EXPR@2950..2995 + PAREN_EXPR@2950..2971 + L_PAREN@2950..2951 "(" + CLOSURE_EXPR@2951..2970 + PARAM_LIST@2951..2968 + PIPE@2951..2952 "|" + PARAM@2952..2962 + TUPLE_PAT@2952..2956 + L_PAREN@2952..2953 "(" + REST_PAT@2953..2955 + DOT2@2953..2955 ".." + R_PAREN@2955..2956 ")" + COLON@2956..2957 ":" + TUPLE_TYPE@2957..2962 + L_PAREN@2957..2958 "(" + INFER_TYPE@2958..2959 + UNDERSCORE@2958..2959 "_" + COMMA@2959..2960 "," + INFER_TYPE@2960..2961 + UNDERSCORE@2960..2961 "_" + R_PAREN@2961..2962 ")" + COMMA@2962..2963 "," + PARAM@2963..2967 + IDENT_PAT@2963..2967 + NAME@2963..2965 + IDENT@2963..2965 "__" + AT@2965..2966 "@" + WILDCARD_PAT@2966..2967 + UNDERSCORE@2966..2967 "_" + PIPE@2967..2968 "|" + PATH_EXPR@2968..2970 + PATH@2968..2970 + PATH_SEGMENT@2968..2970 + NAME_REF@2968..2970 + IDENT@2968..2970 "__" + R_PAREN@2970..2971 ")" + ARG_LIST@2971..2995 + L_PAREN@2971..2972 "(" + TUPLE_EXPR@2972..2987 + L_PAREN@2972..2973 "(" + REF_EXPR@2973..2979 + AMP@2973..2974 "&" + PREFIX_EXPR@2974..2979 + STAR@2974..2975 "*" + LITERAL@2975..2979 + STRING@2975..2979 "\"\\\\\"" + COMMA@2979..2980 "," + LITERAL@2980..2986 + CHAR@2980..2986 "\'🤔\'" + R_PAREN@2986..2987 ")" + COMMENT@2987..2991 "/**/" + COMMA@2991..2992 "," + BLOCK_EXPR@2992..2994 + L_CURLY@2992..2993 "{" + R_CURLY@2993..2994 "}" + R_PAREN@2994..2995 ")" + EQ2@2995..2997 "==" + BLOCK_EXPR@2997..3012 + L_CURLY@2997..2998 "{" + EXPR_STMT@2998..3011 + REF_EXPR@2998..3010 + AMP@2998..2999 "&" + INDEX_EXPR@2999..3010 + ARRAY_EXPR@2999..3006 + L_BRACK@2999..3000 "[" + RANGE_EXPR@3000..3005 + DOT2EQ@3000..3003 "..=" + RANGE_EXPR@3003..3005 + DOT2@3003..3005 ".." + R_BRACK@3005..3006 "]" + L_BRACK@3006..3007 "[" + RANGE_EXPR@3007..3009 + DOT2@3007..3009 ".." + R_BRACK@3009..3010 "]" + SEMICOLON@3010..3011 ";" + R_CURLY@3011..3012 "}" + R_PAREN@3012..3013 ")" + COMMENT@3013..3015 "//" + WHITESPACE@3015..3020 "\n " + SEMICOLON@3020..3021 ";" + WHITESPACE@3021..3026 "\n " + EXPR_STMT@3026..3040 + MACRO_CALL@3026..3039 + PATH@3026..3032 + PATH_SEGMENT@3026..3032 + NAME_REF@3026..3032 + IDENT@3026..3032 "assert" + BANG@3032..3033 "!" + TOKEN_TREE@3033..3039 + L_PAREN@3033..3034 "(" + BANG@3034..3035 "!" + IDENT@3035..3038 "val" + R_PAREN@3038..3039 ")" + SEMICOLON@3039..3040 ";" + WHITESPACE@3040..3041 "\n" + R_CURLY@3041..3042 "}" + WHITESPACE@3042..3044 "\n\n" + FN@3044..3514 + FN_KW@3044..3046 "fn" + WHITESPACE@3046..3047 " " + NAME@3047..3057 + IDENT@3047..3057 "punch_card" + PARAM_LIST@3057..3059 + L_PAREN@3057..3058 "(" + R_PAREN@3058..3059 ")" + WHITESPACE@3059..3060 " " + RET_TYPE@3060..3083 + THIN_ARROW@3060..3062 "->" + WHITESPACE@3062..3063 " " + IMPL_TRAIT_TYPE@3063..3083 + IMPL_KW@3063..3067 "impl" + WHITESPACE@3067..3068 " " + TYPE_BOUND_LIST@3068..3083 + TYPE_BOUND@3068..3083 + PATH_TYPE@3068..3083 + PATH@3068..3083 + PATH@3068..3076 + PATH@3068..3071 + PATH_SEGMENT@3068..3071 + NAME_REF@3068..3071 + IDENT@3068..3071 "std" + COLON2@3071..3073 "::" + PATH_SEGMENT@3073..3076 + NAME_REF@3073..3076 + IDENT@3073..3076 "fmt" + COLON2@3076..3078 "::" + PATH_SEGMENT@3078..3083 + NAME_REF@3078..3083 + IDENT@3078..3083 "Debug" + WHITESPACE@3083..3084 " " + BLOCK_EXPR@3084..3514 + L_CURLY@3084..3085 "{" + WHITESPACE@3085..3090 "\n " + RANGE_EXPR@3090..3512 + DOT2EQ@3090..3093 "..=" + RANGE_EXPR@3093..3512 + DOT2EQ@3093..3096 "..=" + RANGE_EXPR@3096..3512 + DOT2@3096..3098 ".." + WHITESPACE@3098..3099 " " + RANGE_EXPR@3099..3512 + DOT2@3099..3101 ".." + WHITESPACE@3101..3105 " " + RANGE_EXPR@3105..3512 + DOT2@3105..3107 ".." + WHITESPACE@3107..3108 " " + RANGE_EXPR@3108..3512 + DOT2@3108..3110 ".." + WHITESPACE@3110..3111 " " + RANGE_EXPR@3111..3512 + DOT2@3111..3113 ".." + WHITESPACE@3113..3114 " " + RANGE_EXPR@3114..3512 + DOT2@3114..3116 ".." + WHITESPACE@3116..3120 " " + RANGE_EXPR@3120..3512 + DOT2@3120..3122 ".." + WHITESPACE@3122..3123 " " + RANGE_EXPR@3123..3512 + DOT2@3123..3125 ".." + WHITESPACE@3125..3126 " " + RANGE_EXPR@3126..3512 + DOT2@3126..3128 ".." + WHITESPACE@3128..3129 " " + RANGE_EXPR@3129..3512 + DOT2@3129..3131 ".." + WHITESPACE@3131..3135 " " + RANGE_EXPR@3135..3512 + DOT2@3135..3137 ".." + WHITESPACE@3137..3138 " " + RANGE_EXPR@3138..3512 + DOT2EQ@3138..3141 "..=" + RANGE_EXPR@3141..3512 + DOT2@3141..3143 ".." + WHITESPACE@3143..3144 " " + RANGE_EXPR@3144..3512 + DOT2@3144..3146 ".." + WHITESPACE@3146..3151 "\n " + RANGE_EXPR@3151..3512 + DOT2EQ@3151..3154 "..=" + RANGE_EXPR@3154..3512 + DOT2@3154..3156 ".." + WHITESPACE@3156..3157 " " + RANGE_EXPR@3157..3512 + DOT2EQ@3157..3160 "..=" + RANGE_EXPR@3160..3512 + DOT2@3160..3162 ".." + WHITESPACE@3162..3166 " " + RANGE_EXPR@3166..3512 + DOT2@3166..3168 ".." + WHITESPACE@3168..3169 " " + RANGE_EXPR@3169..3512 + DOT2@3169..3171 ".." + WHITESPACE@3171..3172 " " + RANGE_EXPR@3172..3512 + DOT2@3172..3174 ".." + WHITESPACE@3174..3175 " " + RANGE_EXPR@3175..3512 + DOT2@3175..3177 ".." + WHITESPACE@3177..3181 " " + RANGE_EXPR@3181..3512 + DOT2@3181..3183 ".." + WHITESPACE@3183..3184 " " + RANGE_EXPR@3184..3512 + DOT2@3184..3186 ".." + WHITESPACE@3186..3187 " " + RANGE_EXPR@3187..3512 + DOT2@3187..3189 ".." + WHITESPACE@3189..3190 " " + RANGE_EXPR@3190..3512 + DOT2@3190..3192 ".." + WHITESPACE@3192..3196 " " + RANGE_EXPR@3196..3512 + DOT2EQ@3196..3199 "..=" + RANGE_EXPR@3199..3512 + DOT2EQ@3199..3202 "..=" + RANGE_EXPR@3202..3512 + DOT2EQ@3202..3205 "..=" + RANGE_EXPR@3205..3512 + DOT2@3205..3207 ".." + WHITESPACE@3207..3212 "\n " + RANGE_EXPR@3212..3512 + DOT2EQ@3212..3215 "..=" + RANGE_EXPR@3215..3512 + DOT2@3215..3217 ".." + WHITESPACE@3217..3218 " " + RANGE_EXPR@3218..3512 + DOT2EQ@3218..3221 "..=" + RANGE_EXPR@3221..3512 + DOT2@3221..3223 ".." + WHITESPACE@3223..3227 " " + RANGE_EXPR@3227..3512 + DOT2EQ@3227..3230 "..=" + RANGE_EXPR@3230..3512 + DOT2@3230..3232 ".." + WHITESPACE@3232..3233 " " + RANGE_EXPR@3233..3512 + DOT2EQ@3233..3236 "..=" + RANGE_EXPR@3236..3512 + DOT2@3236..3238 ".." + WHITESPACE@3238..3242 " " + RANGE_EXPR@3242..3512 + DOT2@3242..3244 ".." + WHITESPACE@3244..3245 " " + RANGE_EXPR@3245..3512 + DOT2EQ@3245..3248 "..=" + RANGE_EXPR@3248..3512 + DOT2EQ@3248..3251 "..=" + RANGE_EXPR@3251..3512 + DOT2@3251..3253 ".." + WHITESPACE@3253..3257 " " + RANGE_EXPR@3257..3512 + DOT2@3257..3259 ".." + WHITESPACE@3259..3260 " " + RANGE_EXPR@3260..3512 + DOT2EQ@3260..3263 "..=" + RANGE_EXPR@3263..3512 + DOT2@3263..3265 ".." + WHITESPACE@3265..3266 " " + RANGE_EXPR@3266..3512 + DOT2@3266..3268 ".." + WHITESPACE@3268..3273 "\n " + RANGE_EXPR@3273..3512 + DOT2EQ@3273..3276 "..=" + RANGE_EXPR@3276..3512 + DOT2EQ@3276..3279 "..=" + RANGE_EXPR@3279..3512 + DOT2@3279..3281 ".." + WHITESPACE@3281..3282 " " + RANGE_EXPR@3282..3512 + DOT2@3282..3284 ".." + WHITESPACE@3284..3288 " " + RANGE_EXPR@3288..3512 + DOT2EQ@3288..3291 "..=" + RANGE_EXPR@3291..3512 + DOT2@3291..3293 ".." + WHITESPACE@3293..3294 " " + RANGE_EXPR@3294..3512 + DOT2EQ@3294..3297 "..=" + RANGE_EXPR@3297..3512 + DOT2@3297..3299 ".." + WHITESPACE@3299..3303 " " + RANGE_EXPR@3303..3512 + DOT2EQ@3303..3306 "..=" + RANGE_EXPR@3306..3512 + DOT2@3306..3308 ".." + WHITESPACE@3308..3309 " " + RANGE_EXPR@3309..3512 + DOT2@3309..3311 ".." + WHITESPACE@3311..3312 " " + RANGE_EXPR@3312..3512 + DOT2@3312..3314 ".." + WHITESPACE@3314..3318 " " + RANGE_EXPR@3318..3512 + DOT2@3318..3320 ".." + WHITESPACE@3320..3321 " " + RANGE_EXPR@3321..3512 + DOT2EQ@3321..3324 "..=" + RANGE_EXPR@3324..3512 + DOT2@3324..3326 ".." + WHITESPACE@3326..3327 " " + RANGE_EXPR@3327..3512 + DOT2@3327..3329 ".." + WHITESPACE@3329..3334 "\n " + RANGE_EXPR@3334..3512 + DOT2EQ@3334..3337 "..=" + RANGE_EXPR@3337..3512 + DOT2@3337..3339 ".." + WHITESPACE@3339..3340 " " + RANGE_EXPR@3340..3512 + DOT2EQ@3340..3343 "..=" + RANGE_EXPR@3343..3512 + DOT2@3343..3345 ".." + WHITESPACE@3345..3349 " " + RANGE_EXPR@3349..3512 + DOT2EQ@3349..3352 "..=" + RANGE_EXPR@3352..3512 + DOT2@3352..3354 ".." + WHITESPACE@3354..3355 " " + RANGE_EXPR@3355..3512 + DOT2EQ@3355..3358 "..=" + RANGE_EXPR@3358..3512 + DOT2@3358..3360 ".." + WHITESPACE@3360..3364 " " + RANGE_EXPR@3364..3512 + DOT2@3364..3366 ".." + WHITESPACE@3366..3367 " " + RANGE_EXPR@3367..3512 + DOT2EQ@3367..3370 "..=" + RANGE_EXPR@3370..3512 + DOT2@3370..3372 ".." + WHITESPACE@3372..3373 " " + RANGE_EXPR@3373..3512 + DOT2@3373..3375 ".." + WHITESPACE@3375..3379 " " + RANGE_EXPR@3379..3512 + DOT2@3379..3381 ".." + WHITESPACE@3381..3382 " " + RANGE_EXPR@3382..3512 + DOT2EQ@3382..3385 "..=" + RANGE_EXPR@3385..3512 + DOT2@3385..3387 ".." + WHITESPACE@3387..3388 " " + RANGE_EXPR@3388..3512 + DOT2@3388..3390 ".." + WHITESPACE@3390..3395 "\n " + RANGE_EXPR@3395..3512 + DOT2EQ@3395..3398 "..=" + RANGE_EXPR@3398..3512 + DOT2@3398..3400 ".." + WHITESPACE@3400..3401 " " + RANGE_EXPR@3401..3512 + DOT2EQ@3401..3404 "..=" + RANGE_EXPR@3404..3512 + DOT2@3404..3406 ".." + WHITESPACE@3406..3410 " " + RANGE_EXPR@3410..3512 + DOT2EQ@3410..3413 "..=" + RANGE_EXPR@3413..3512 + DOT2@3413..3415 ".." + WHITESPACE@3415..3416 " " + RANGE_EXPR@3416..3512 + DOT2EQ@3416..3419 "..=" + RANGE_EXPR@3419..3512 + DOT2@3419..3421 ".." + WHITESPACE@3421..3425 " " + RANGE_EXPR@3425..3512 + DOT2@3425..3427 ".." + WHITESPACE@3427..3428 " " + RANGE_EXPR@3428..3512 + DOT2@3428..3430 ".." + WHITESPACE@3430..3431 " " + RANGE_EXPR@3431..3512 + DOT2EQ@3431..3434 "..=" + RANGE_EXPR@3434..3512 + DOT2@3434..3436 ".." + WHITESPACE@3436..3440 " " + RANGE_EXPR@3440..3512 + DOT2@3440..3442 ".." + WHITESPACE@3442..3443 " " + RANGE_EXPR@3443..3512 + DOT2EQ@3443..3446 "..=" + RANGE_EXPR@3446..3512 + DOT2@3446..3448 ".." + WHITESPACE@3448..3449 " " + RANGE_EXPR@3449..3512 + DOT2@3449..3451 ".." + WHITESPACE@3451..3456 "\n " + RANGE_EXPR@3456..3512 + DOT2EQ@3456..3459 "..=" + RANGE_EXPR@3459..3512 + DOT2@3459..3461 ".." + WHITESPACE@3461..3462 " " + RANGE_EXPR@3462..3512 + DOT2EQ@3462..3465 "..=" + RANGE_EXPR@3465..3512 + DOT2@3465..3467 ".." + WHITESPACE@3467..3471 " " + RANGE_EXPR@3471..3512 + DOT2@3471..3473 ".." + WHITESPACE@3473..3474 " " + RANGE_EXPR@3474..3512 + DOT2EQ@3474..3477 "..=" + RANGE_EXPR@3477..3512 + DOT2EQ@3477..3480 "..=" + RANGE_EXPR@3480..3512 + DOT2@3480..3482 ".." + WHITESPACE@3482..3486 " " + RANGE_EXPR@3486..3512 + DOT2EQ@3486..3489 "..=" + RANGE_EXPR@3489..3512 + DOT2EQ@3489..3492 "..=" + RANGE_EXPR@3492..3512 + DOT2@3492..3494 ".." + WHITESPACE@3494..3495 " " + RANGE_EXPR@3495..3512 + DOT2@3495..3497 ".." + WHITESPACE@3497..3501 " " + RANGE_EXPR@3501..3512 + DOT2@3501..3503 ".." + WHITESPACE@3503..3504 " " + RANGE_EXPR@3504..3512 + DOT2EQ@3504..3507 "..=" + RANGE_EXPR@3507..3512 + DOT2@3507..3509 ".." + WHITESPACE@3509..3510 " " + RANGE_EXPR@3510..3512 + DOT2@3510..3512 ".." + WHITESPACE@3512..3513 "\n" + R_CURLY@3513..3514 "}" + WHITESPACE@3514..3516 "\n\n" + FN@3516..3552 + FN_KW@3516..3518 "fn" + WHITESPACE@3518..3519 " " + NAME@3519..3525 + IDENT@3519..3525 "ktulhu" + PARAM_LIST@3525..3527 + L_PAREN@3525..3526 "(" + R_PAREN@3526..3527 ")" + WHITESPACE@3527..3528 " " + BLOCK_EXPR@3528..3552 + L_CURLY@3528..3529 "{" + WHITESPACE@3529..3534 "\n " + SEMICOLON@3534..3535 ";" + SEMICOLON@3535..3536 ";" + SEMICOLON@3536..3537 ";" + EXPR_STMT@3537..3540 + TUPLE_EXPR@3537..3539 + L_PAREN@3537..3538 "(" + R_PAREN@3538..3539 ")" + SEMICOLON@3539..3540 ";" + SEMICOLON@3540..3541 ";" + SEMICOLON@3541..3542 ";" + SEMICOLON@3542..3543 ";" + SEMICOLON@3543..3544 ";" + SEMICOLON@3544..3545 ";" + SEMICOLON@3545..3546 ";" + SEMICOLON@3546..3547 ";" + SEMICOLON@3547..3548 ";" + TUPLE_EXPR@3548..3550 + L_PAREN@3548..3549 "(" + R_PAREN@3549..3550 ")" + WHITESPACE@3550..3551 "\n" + R_CURLY@3551..3552 "}" + WHITESPACE@3552..3554 "\n\n" + FN@3554..3812 + VISIBILITY@3554..3557 + PUB_KW@3554..3557 "pub" + WHITESPACE@3557..3558 " " + FN_KW@3558..3560 "fn" + WHITESPACE@3560..3561 " " + NAME@3561..3565 + IDENT@3561..3565 "main" + PARAM_LIST@3565..3567 + L_PAREN@3565..3566 "(" + R_PAREN@3566..3567 ")" + WHITESPACE@3567..3568 " " + BLOCK_EXPR@3568..3812 + L_CURLY@3568..3569 "{" + WHITESPACE@3569..3574 "\n " + EXPR_STMT@3574..3584 + CALL_EXPR@3574..3583 + PATH_EXPR@3574..3581 + PATH@3574..3581 + PATH_SEGMENT@3574..3581 + NAME_REF@3574..3581 + IDENT@3574..3581 "strange" + ARG_LIST@3581..3583 + L_PAREN@3581..3582 "(" + R_PAREN@3582..3583 ")" + SEMICOLON@3583..3584 ";" + WHITESPACE@3584..3589 "\n " + EXPR_STMT@3589..3597 + CALL_EXPR@3589..3596 + PATH_EXPR@3589..3594 + PATH@3589..3594 + PATH_SEGMENT@3589..3594 + NAME_REF@3589..3594 + IDENT@3589..3594 "funny" + ARG_LIST@3594..3596 + L_PAREN@3594..3595 "(" + R_PAREN@3595..3596 ")" + SEMICOLON@3596..3597 ";" + WHITESPACE@3597..3602 "\n " + EXPR_STMT@3602..3609 + CALL_EXPR@3602..3608 + PATH_EXPR@3602..3606 + PATH@3602..3606 + PATH_SEGMENT@3602..3606 + NAME_REF@3602..3606 + IDENT@3602..3606 "what" + ARG_LIST@3606..3608 + L_PAREN@3606..3607 "(" + R_PAREN@3607..3608 ")" + SEMICOLON@3608..3609 ";" + WHITESPACE@3609..3614 "\n " + EXPR_STMT@3614..3628 + CALL_EXPR@3614..3627 + PATH_EXPR@3614..3625 + PATH@3614..3625 + PATH_SEGMENT@3614..3625 + NAME_REF@3614..3625 + IDENT@3614..3625 "zombiejesus" + ARG_LIST@3625..3627 + L_PAREN@3625..3626 "(" + R_PAREN@3626..3627 ")" + SEMICOLON@3627..3628 ";" + WHITESPACE@3628..3633 "\n " + EXPR_STMT@3633..3643 + CALL_EXPR@3633..3642 + PATH_EXPR@3633..3640 + PATH@3633..3640 + PATH_SEGMENT@3633..3640 + NAME_REF@3633..3640 + IDENT@3633..3640 "notsure" + ARG_LIST@3640..3642 + L_PAREN@3640..3641 "(" + R_PAREN@3641..3642 ")" + SEMICOLON@3642..3643 ";" + WHITESPACE@3643..3648 "\n " + EXPR_STMT@3648..3664 + CALL_EXPR@3648..3663 + PATH_EXPR@3648..3661 + PATH@3648..3661 + PATH_SEGMENT@3648..3661 + NAME_REF@3648..3661 + IDENT@3648..3661 "canttouchthis" + ARG_LIST@3661..3663 + L_PAREN@3661..3662 "(" + R_PAREN@3662..3663 ")" + SEMICOLON@3663..3664 ";" + WHITESPACE@3664..3669 "\n " + EXPR_STMT@3669..3681 + CALL_EXPR@3669..3680 + PATH_EXPR@3669..3678 + PATH@3669..3678 + PATH_SEGMENT@3669..3678 + NAME_REF@3669..3678 + IDENT@3669..3678 "angrydome" + ARG_LIST@3678..3680 + L_PAREN@3678..3679 "(" + R_PAREN@3679..3680 ")" + SEMICOLON@3680..3681 ";" + WHITESPACE@3681..3686 "\n " + EXPR_STMT@3686..3701 + CALL_EXPR@3686..3700 + PATH_EXPR@3686..3698 + PATH@3686..3698 + PATH_SEGMENT@3686..3698 + NAME_REF@3686..3698 + IDENT@3686..3698 "evil_lincoln" + ARG_LIST@3698..3700 + L_PAREN@3698..3699 "(" + R_PAREN@3699..3700 ")" + SEMICOLON@3700..3701 ";" + WHITESPACE@3701..3706 "\n " + EXPR_STMT@3706..3713 + CALL_EXPR@3706..3712 + PATH_EXPR@3706..3710 + PATH@3706..3710 + PATH_SEGMENT@3706..3710 + NAME_REF@3706..3710 + IDENT@3706..3710 "dots" + ARG_LIST@3710..3712 + L_PAREN@3710..3711 "(" + R_PAREN@3711..3712 ")" + SEMICOLON@3712..3713 ";" + WHITESPACE@3713..3718 "\n " + EXPR_STMT@3718..3726 + CALL_EXPR@3718..3725 + PATH_EXPR@3718..3720 + PATH@3718..3720 + PATH_SEGMENT@3718..3720 + NAME_REF@3718..3720 + IDENT@3718..3720 "u8" + ARG_LIST@3720..3725 + L_PAREN@3720..3721 "(" + LITERAL@3721..3724 + INT_NUMBER@3721..3724 "8u8" + R_PAREN@3724..3725 ")" + SEMICOLON@3725..3726 ";" + WHITESPACE@3726..3731 "\n " + EXPR_STMT@3731..3739 + CALL_EXPR@3731..3738 + PATH_EXPR@3731..3736 + PATH@3731..3736 + PATH_SEGMENT@3731..3736 + NAME_REF@3731..3736 + IDENT@3731..3736 "fishy" + ARG_LIST@3736..3738 + L_PAREN@3736..3737 "(" + R_PAREN@3737..3738 ")" + SEMICOLON@3738..3739 ";" + WHITESPACE@3739..3744 "\n " + EXPR_STMT@3744..3752 + CALL_EXPR@3744..3751 + PATH_EXPR@3744..3749 + PATH@3744..3749 + PATH_SEGMENT@3744..3749 + NAME_REF@3744..3749 + IDENT@3744..3749 "union" + ARG_LIST@3749..3751 + L_PAREN@3749..3750 "(" + R_PAREN@3750..3751 ")" + SEMICOLON@3751..3752 ";" + WHITESPACE@3752..3757 "\n " + EXPR_STMT@3757..3778 + CALL_EXPR@3757..3777 + PATH_EXPR@3757..3775 + PATH@3757..3775 + PATH_SEGMENT@3757..3775 + NAME_REF@3757..3775 + IDENT@3757..3775 "special_characters" + ARG_LIST@3775..3777 + L_PAREN@3775..3776 "(" + R_PAREN@3776..3777 ")" + SEMICOLON@3777..3778 ";" + WHITESPACE@3778..3783 "\n " + EXPR_STMT@3783..3796 + CALL_EXPR@3783..3795 + PATH_EXPR@3783..3793 + PATH@3783..3793 + PATH_SEGMENT@3783..3793 + NAME_REF@3783..3793 + IDENT@3783..3793 "punch_card" + ARG_LIST@3793..3795 + L_PAREN@3793..3794 "(" + R_PAREN@3794..3795 ")" + SEMICOLON@3795..3796 ";" + WHITESPACE@3796..3801 "\n " + EXPR_STMT@3801..3810 + CALL_EXPR@3801..3809 + PATH_EXPR@3801..3807 + PATH@3801..3807 + PATH_SEGMENT@3801..3807 + NAME_REF@3801..3807 + IDENT@3801..3807 "ktulhu" + ARG_LIST@3807..3809 + L_PAREN@3807..3808 "(" + R_PAREN@3808..3809 ")" + SEMICOLON@3809..3810 ";" + WHITESPACE@3810..3811 "\n" + R_CURLY@3811..3812 "}" + WHITESPACE@3812..3813 "\n" diff --git a/crates/syntax/test_data/parser/ok/0035_weird_exprs.rs b/crates/syntax/test_data/parser/ok/0035_weird_exprs.rs new file mode 100644 index 00000000000..8c13231631c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0035_weird_exprs.rs @@ -0,0 +1,154 @@ +//! Adapted from a `rustc` test, which can be found at +//! https://github.com/rust-lang/rust/blob/6d34ec18c7d7e574553f6347ecf08e1e1c45c13d/src/test/run-pass/weird-exprs.rs. +//! +//! Reported to rust-analyzer in https://github.com/rust-analyzer/rust-analyzer/issues/290 + +#![allow(non_camel_case_types)] +#![allow(dead_code)] +#![allow(unreachable_code)] +#![allow(unused_parens)] + +#![recursion_limit = "128"] + +use std::cell::Cell; +use std::mem::swap; + +// Just a grab bag of stuff that you wouldn't want to actually write. + +fn strange() -> bool { let _x: bool = return true; } + +fn funny() { + fn f(_x: ()) { } + f(return); +} + +fn what() { + fn the(x: &Cell) { + return while !x.get() { x.set(true); }; + } + let i = &Cell::new(false); + let dont = {||the(i)}; + dont(); + assert!((i.get())); +} + +fn zombiejesus() { + loop { + while (return) { + if (return) { + match (return) { + 1 => { + if (return) { + return + } else { + return + } + } + _ => { return } + }; + } else if (return) { + return; + } + } + if (return) { break; } + } +} + +fn notsure() { + let mut _x: isize; + let mut _y = (_x = 0) == (_x = 0); + let mut _z = (_x = 0) < (_x = 0); + let _a = (_x += 0) == (_x = 0); + let _b = swap(&mut _y, &mut _z) == swap(&mut _y, &mut _z); +} + +fn canttouchthis() -> usize { + fn p() -> bool { true } + let _a = (assert!((true)) == (assert!(p()))); + let _c = (assert!((p())) == ()); + let _b: bool = (println!("{}", 0) == (return 0)); +} + +fn angrydome() { + loop { if break { } } + let mut i = 0; + loop { i += 1; if i == 1 { match (continue) { 1 => { }, _ => panic!("wat") } } + break; } +} + +fn evil_lincoln() { let _evil = println!("lincoln"); } + +fn dots() { + assert_eq!(String::from(".................................................."), + format!("{:?}", .. .. .. .. .. .. .. .. .. .. .. .. .. + .. .. .. .. .. .. .. .. .. .. .. ..)); +} + +fn u8(u8: u8) { + if u8 != 0u8 { + assert_eq!(8u8, { + macro_rules! u8 { + (u8) => { + mod u8 { + pub fn u8<'u8: 'u8 + 'u8>(u8: &'u8 u8) -> &'u8 u8 { + "u8"; + u8 + } + } + }; + } + + u8!(u8); + let &u8: &u8 = u8::u8(&8u8); + crate::u8(0u8); + u8 + }); + } +} + +fn fishy() { + assert_eq!(String::from("><>"), + String::<>::from::<>("><>").chars::<>().rev::<>().collect::()); +} + +fn union() { + union union<'union> { union: &'union union<'union>, } +} + +fn special_characters() { + let val = !((|(..):(_,_),__@_|__)((&*"\\",'🤔')/**/,{})=={&[..=..][..];})// + ; + assert!(!val); +} + +fn punch_card() -> impl std::fmt::Debug { + ..=..=.. .. .. .. .. .. .. .. .. .. .. ..=.. .. + ..=.. ..=.. .. .. .. .. .. .. .. .. ..=..=..=.. + ..=.. ..=.. ..=.. ..=.. .. ..=..=.. .. ..=.. .. + ..=..=.. .. ..=.. ..=.. ..=.. .. .. .. ..=.. .. + ..=.. ..=.. ..=.. ..=.. .. ..=.. .. .. ..=.. .. + ..=.. ..=.. ..=.. ..=.. .. .. ..=.. .. ..=.. .. + ..=.. ..=.. .. ..=..=.. ..=..=.. .. .. ..=.. .. +} + +fn ktulhu() { + ;;;();;;;;;;;;() +} + +pub fn main() { + strange(); + funny(); + what(); + zombiejesus(); + notsure(); + canttouchthis(); + angrydome(); + evil_lincoln(); + dots(); + u8(8u8); + fishy(); + union(); + special_characters(); + punch_card(); + ktulhu(); +} diff --git a/crates/syntax/test_data/parser/ok/0036_fully_qualified.rast b/crates/syntax/test_data/parser/ok/0036_fully_qualified.rast new file mode 100644 index 00000000000..c4da317b9f9 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0036_fully_qualified.rast @@ -0,0 +1,92 @@ +SOURCE_FILE@0..157 + COMMENT@0..60 "// https://github.com ..." + WHITESPACE@60..62 "\n\n" + FN@62..156 + VISIBILITY@62..65 + PUB_KW@62..65 "pub" + WHITESPACE@65..66 " " + FN_KW@66..68 "fn" + WHITESPACE@68..69 " " + NAME@69..72 + IDENT@69..72 "foo" + GENERIC_PARAM_LIST@72..85 + L_ANGLE@72..73 "<" + TYPE_PARAM@73..84 + NAME@73..74 + IDENT@73..74 "S" + COLON@74..75 ":" + WHITESPACE@75..76 " " + TYPE_BOUND_LIST@76..84 + TYPE_BOUND@76..84 + PATH_TYPE@76..84 + PATH@76..84 + PATH_SEGMENT@76..84 + NAME_REF@76..84 + IDENT@76..84 "Iterator" + R_ANGLE@84..85 ">" + PARAM_LIST@85..87 + L_PAREN@85..86 "(" + R_PAREN@86..87 ")" + WHITESPACE@87..88 " " + RET_TYPE@88..97 + THIN_ARROW@88..90 "->" + WHITESPACE@90..91 " " + PATH_TYPE@91..97 + PATH@91..97 + PATH_SEGMENT@91..97 + NAME_REF@91..97 + IDENT@91..97 "String" + WHITESPACE@97..98 "\n" + WHERE_CLAUSE@98..134 + WHERE_KW@98..103 "where" + WHITESPACE@103..108 "\n " + WHERE_PRED@108..133 + PATH_TYPE@108..129 + PATH@108..129 + PATH@108..123 + PATH_SEGMENT@108..123 + L_ANGLE@108..109 "<" + PATH_TYPE@109..110 + PATH@109..110 + PATH_SEGMENT@109..110 + NAME_REF@109..110 + IDENT@109..110 "S" + WHITESPACE@110..111 " " + AS_KW@111..113 "as" + WHITESPACE@113..114 " " + PATH_TYPE@114..122 + PATH@114..122 + PATH_SEGMENT@114..122 + NAME_REF@114..122 + IDENT@114..122 "Iterator" + R_ANGLE@122..123 ">" + COLON2@123..125 "::" + PATH_SEGMENT@125..129 + NAME_REF@125..129 + IDENT@125..129 "Item" + COLON@129..130 ":" + WHITESPACE@130..131 " " + TYPE_BOUND_LIST@131..133 + TYPE_BOUND@131..133 + PATH_TYPE@131..133 + PATH@131..133 + PATH_SEGMENT@131..133 + NAME_REF@131..133 + IDENT@131..133 "Eq" + COMMA@133..134 "," + WHITESPACE@134..135 "\n" + BLOCK_EXPR@135..156 + L_CURLY@135..136 "{" + WHITESPACE@136..141 "\n " + METHOD_CALL_EXPR@141..154 + LITERAL@141..143 + STRING@141..143 "\"\"" + DOT@143..144 "." + NAME_REF@144..152 + IDENT@144..152 "to_owned" + ARG_LIST@152..154 + L_PAREN@152..153 "(" + R_PAREN@153..154 ")" + WHITESPACE@154..155 "\n" + R_CURLY@155..156 "}" + WHITESPACE@156..157 "\n" diff --git a/crates/syntax/test_data/parser/ok/0036_fully_qualified.rs b/crates/syntax/test_data/parser/ok/0036_fully_qualified.rs new file mode 100644 index 00000000000..6da27933ece --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0036_fully_qualified.rs @@ -0,0 +1,8 @@ +// https://github.com/rust-analyzer/rust-analyzer/issues/311 + +pub fn foo() -> String +where + ::Item: Eq, +{ + "".to_owned() +} diff --git a/crates/syntax/test_data/parser/ok/0037_mod.rast b/crates/syntax/test_data/parser/ok/0037_mod.rast new file mode 100644 index 00000000000..1d5d94bdea8 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0037_mod.rast @@ -0,0 +1,16 @@ +SOURCE_FILE@0..93 + COMMENT@0..60 "// https://github.com ..." + WHITESPACE@60..62 "\n\n" + MODULE@62..93 + COMMENT@62..70 "//! docs" + WHITESPACE@70..71 "\n" + COMMENT@71..82 "// non-docs" + WHITESPACE@82..83 "\n" + MOD_KW@83..86 "mod" + WHITESPACE@86..87 " " + NAME@87..90 + IDENT@87..90 "foo" + WHITESPACE@90..91 " " + ITEM_LIST@91..93 + L_CURLY@91..92 "{" + R_CURLY@92..93 "}" diff --git a/crates/syntax/test_data/parser/ok/0037_mod.rs b/crates/syntax/test_data/parser/ok/0037_mod.rs new file mode 100644 index 00000000000..7e5a1b8358c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0037_mod.rs @@ -0,0 +1,5 @@ +// https://github.com/rust-analyzer/rust-analyzer/issues/357 + +//! docs +// non-docs +mod foo {} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0038_where_pred_type.rast b/crates/syntax/test_data/parser/ok/0038_where_pred_type.rast new file mode 100644 index 00000000000..22168eaf1ac --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0038_where_pred_type.rast @@ -0,0 +1,42 @@ +SOURCE_FILE@0..34 + FN@0..34 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "test" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + WHERE_CLAUSE@10..31 + WHERE_KW@10..15 "where" + WHITESPACE@15..16 " " + WHERE_PRED@16..31 + TUPLE_TYPE@16..26 + L_PAREN@16..17 "(" + PATH_TYPE@17..20 + PATH@17..20 + PATH_SEGMENT@17..20 + NAME_REF@17..20 + IDENT@17..20 "u64" + COMMA@20..21 "," + WHITESPACE@21..22 " " + PATH_TYPE@22..25 + PATH@22..25 + PATH_SEGMENT@22..25 + NAME_REF@22..25 + IDENT@22..25 "u64" + R_PAREN@25..26 ")" + COLON@26..27 ":" + WHITESPACE@27..28 " " + TYPE_BOUND_LIST@28..31 + TYPE_BOUND@28..31 + PATH_TYPE@28..31 + PATH@28..31 + PATH_SEGMENT@28..31 + NAME_REF@28..31 + IDENT@28..31 "Foo" + WHITESPACE@31..32 " " + BLOCK_EXPR@32..34 + L_CURLY@32..33 "{" + R_CURLY@33..34 "}" diff --git a/crates/syntax/test_data/parser/ok/0038_where_pred_type.rs b/crates/syntax/test_data/parser/ok/0038_where_pred_type.rs new file mode 100644 index 00000000000..8bfc341a50a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0038_where_pred_type.rs @@ -0,0 +1 @@ +fn test() where (u64, u64): Foo {} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0039_raw_fn_item.rast b/crates/syntax/test_data/parser/ok/0039_raw_fn_item.rast new file mode 100644 index 00000000000..68a366354e6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0039_raw_fn_item.rast @@ -0,0 +1,15 @@ +SOURCE_FILE@0..15 + FN@0..14 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..8 + IDENT@3..8 "r#foo" + PARAM_LIST@8..10 + L_PAREN@8..9 "(" + R_PAREN@9..10 ")" + WHITESPACE@10..11 " " + BLOCK_EXPR@11..14 + L_CURLY@11..12 "{" + WHITESPACE@12..13 "\n" + R_CURLY@13..14 "}" + WHITESPACE@14..15 "\n" diff --git a/crates/syntax/test_data/parser/ok/0039_raw_fn_item.rs b/crates/syntax/test_data/parser/ok/0039_raw_fn_item.rs new file mode 100644 index 00000000000..8380d1e79bc --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0039_raw_fn_item.rs @@ -0,0 +1,2 @@ +fn r#foo() { +} diff --git a/crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rast b/crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rast new file mode 100644 index 00000000000..8cfc14f491c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rast @@ -0,0 +1,22 @@ +SOURCE_FILE@0..27 + STRUCT@0..27 + STRUCT_KW@0..6 "struct" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "S" + WHITESPACE@8..9 " " + RECORD_FIELD_LIST@9..27 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + RECORD_FIELD@15..25 + NAME@15..20 + IDENT@15..20 "r#foo" + COLON@20..21 ":" + WHITESPACE@21..22 " " + PATH_TYPE@22..25 + PATH@22..25 + PATH_SEGMENT@22..25 + NAME_REF@22..25 + IDENT@22..25 "u32" + WHITESPACE@25..26 "\n" + R_CURLY@26..27 "}" diff --git a/crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rs b/crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rs new file mode 100644 index 00000000000..098a60a72bf --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0040_raw_struct_item_field.rs @@ -0,0 +1,3 @@ +struct S { + r#foo: u32 +} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0041_raw_keywords.rast b/crates/syntax/test_data/parser/ok/0041_raw_keywords.rast new file mode 100644 index 00000000000..4035aef6f23 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0041_raw_keywords.rast @@ -0,0 +1,49 @@ +SOURCE_FILE@0..59 + FN@0..59 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..59 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + LET_STMT@11..29 + LET_KW@11..14 "let" + WHITESPACE@14..15 " " + IDENT_PAT@15..23 + NAME@15..23 + IDENT@15..23 "r#struct" + WHITESPACE@23..24 " " + EQ@24..25 "=" + WHITESPACE@25..26 " " + LITERAL@26..28 + INT_NUMBER@26..28 "92" + SEMICOLON@28..29 ";" + WHITESPACE@29..30 " " + LET_STMT@30..57 + LET_KW@30..33 "let" + WHITESPACE@33..34 " " + IDENT_PAT@34..41 + NAME@34..41 + IDENT@34..41 "r#trait" + WHITESPACE@41..42 " " + EQ@42..43 "=" + WHITESPACE@43..44 " " + BIN_EXPR@44..56 + PATH_EXPR@44..52 + PATH@44..52 + PATH_SEGMENT@44..52 + NAME_REF@44..52 + IDENT@44..52 "r#struct" + WHITESPACE@52..53 " " + STAR@53..54 "*" + WHITESPACE@54..55 " " + LITERAL@55..56 + INT_NUMBER@55..56 "2" + SEMICOLON@56..57 ";" + WHITESPACE@57..58 " " + R_CURLY@58..59 "}" diff --git a/crates/syntax/test_data/parser/ok/0041_raw_keywords.rs b/crates/syntax/test_data/parser/ok/0041_raw_keywords.rs new file mode 100644 index 00000000000..d59a6d3476b --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0041_raw_keywords.rs @@ -0,0 +1 @@ +fn foo() { let r#struct = 92; let r#trait = r#struct * 2; } \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rast b/crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rast new file mode 100644 index 00000000000..e71e069f1f4 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rast @@ -0,0 +1,123 @@ +SOURCE_FILE@0..199 + COMMENT@0..60 "// https://github.com ..." + WHITESPACE@60..62 "\n\n" + STRUCT@62..73 + STRUCT_KW@62..68 "struct" + WHITESPACE@68..69 " " + NAME@69..72 + IDENT@69..72 "Foo" + SEMICOLON@72..73 ";" + WHITESPACE@73..75 "\n\n" + IMPL@75..141 + IMPL_KW@75..79 "impl" + WHITESPACE@79..80 " " + PATH_TYPE@80..83 + PATH@80..83 + PATH_SEGMENT@80..83 + NAME_REF@80..83 + IDENT@80..83 "Foo" + WHITESPACE@83..84 " " + ASSOC_ITEM_LIST@84..141 + L_CURLY@84..85 "{" + WHITESPACE@85..90 "\n " + FN@90..139 + FN_KW@90..92 "fn" + WHITESPACE@92..93 " " + NAME@93..96 + IDENT@93..96 "bar" + PARAM_LIST@96..98 + L_PAREN@96..97 "(" + R_PAREN@97..98 ")" + WHITESPACE@98..99 " " + RET_TYPE@99..106 + THIN_ARROW@99..101 "->" + WHITESPACE@101..102 " " + PATH_TYPE@102..106 + PATH@102..106 + PATH_SEGMENT@102..106 + NAME_REF@102..106 + IDENT@102..106 "bool" + WHITESPACE@106..107 " " + BLOCK_EXPR@107..139 + L_CURLY@107..108 "{" + WHITESPACE@108..117 "\n " + MACRO_CALL@117..133 + PATH@117..130 + PATH_SEGMENT@117..130 + NAME_REF@117..130 + IDENT@117..130 "unimplemented" + BANG@130..131 "!" + TOKEN_TREE@131..133 + L_PAREN@131..132 "(" + R_PAREN@132..133 ")" + WHITESPACE@133..138 "\n " + R_CURLY@138..139 "}" + WHITESPACE@139..140 "\n" + R_CURLY@140..141 "}" + WHITESPACE@141..143 "\n\n" + FN@143..161 + FN_KW@143..145 "fn" + WHITESPACE@145..146 " " + NAME@146..149 + IDENT@146..149 "baz" + PARAM_LIST@149..158 + L_PAREN@149..150 "(" + PARAM@150..157 + WILDCARD_PAT@150..151 + UNDERSCORE@150..151 "_" + COLON@151..152 ":" + WHITESPACE@152..153 " " + PATH_TYPE@153..157 + PATH@153..157 + PATH_SEGMENT@153..157 + NAME_REF@153..157 + IDENT@153..157 "bool" + R_PAREN@157..158 ")" + WHITESPACE@158..159 " " + BLOCK_EXPR@159..161 + L_CURLY@159..160 "{" + R_CURLY@160..161 "}" + WHITESPACE@161..163 "\n\n" + FN@163..198 + FN_KW@163..165 "fn" + WHITESPACE@165..166 " " + NAME@166..170 + IDENT@166..170 "main" + PARAM_LIST@170..172 + L_PAREN@170..171 "(" + R_PAREN@171..172 ")" + WHITESPACE@172..173 " " + BLOCK_EXPR@173..198 + L_CURLY@173..174 "{" + WHITESPACE@174..179 "\n " + CALL_EXPR@179..196 + PATH_EXPR@179..182 + PATH@179..182 + PATH_SEGMENT@179..182 + NAME_REF@179..182 + IDENT@179..182 "baz" + ARG_LIST@182..196 + L_PAREN@182..183 "(" + CALL_EXPR@183..195 + PATH_EXPR@183..193 + PATH@183..193 + PATH@183..188 + PATH_SEGMENT@183..188 + L_ANGLE@183..184 "<" + PATH_TYPE@184..187 + PATH@184..187 + PATH_SEGMENT@184..187 + NAME_REF@184..187 + IDENT@184..187 "Foo" + R_ANGLE@187..188 ">" + COLON2@188..190 "::" + PATH_SEGMENT@190..193 + NAME_REF@190..193 + IDENT@190..193 "bar" + ARG_LIST@193..195 + L_PAREN@193..194 "(" + R_PAREN@194..195 ")" + R_PAREN@195..196 ")" + WHITESPACE@196..197 "\n" + R_CURLY@197..198 "}" + WHITESPACE@198..199 "\n" diff --git a/crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rs b/crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rs new file mode 100644 index 00000000000..6c02e65ed7d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0042_ufcs_call_list.rs @@ -0,0 +1,15 @@ +// https://github.com/rust-analyzer/rust-analyzer/issues/596 + +struct Foo; + +impl Foo { + fn bar() -> bool { + unimplemented!() + } +} + +fn baz(_: bool) {} + +fn main() { + baz(::bar()) +} diff --git a/crates/syntax/test_data/parser/ok/0043_complex_assignment.rast b/crates/syntax/test_data/parser/ok/0043_complex_assignment.rast new file mode 100644 index 00000000000..adc4a22e969 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0043_complex_assignment.rast @@ -0,0 +1,109 @@ +SOURCE_FILE@0..160 + COMMENT@0..60 "// https://github.com ..." + WHITESPACE@60..62 "\n\n" + STRUCT@62..90 + STRUCT_KW@62..68 "struct" + WHITESPACE@68..69 " " + NAME@69..73 + IDENT@69..73 "Repr" + WHITESPACE@73..74 " " + RECORD_FIELD_LIST@74..90 + L_CURLY@74..75 "{" + WHITESPACE@75..76 " " + RECORD_FIELD@76..88 + NAME@76..79 + IDENT@76..79 "raw" + COLON@79..80 ":" + WHITESPACE@80..81 " " + ARRAY_TYPE@81..88 + L_BRACK@81..82 "[" + PATH_TYPE@82..84 + PATH@82..84 + PATH_SEGMENT@82..84 + NAME_REF@82..84 + IDENT@82..84 "u8" + SEMICOLON@84..85 ";" + WHITESPACE@85..86 " " + LITERAL@86..87 + INT_NUMBER@86..87 "1" + R_BRACK@87..88 "]" + WHITESPACE@88..89 " " + R_CURLY@89..90 "}" + WHITESPACE@90..92 "\n\n" + FN@92..159 + FN_KW@92..94 "fn" + WHITESPACE@94..95 " " + NAME@95..98 + IDENT@95..98 "abc" + PARAM_LIST@98..100 + L_PAREN@98..99 "(" + R_PAREN@99..100 ")" + WHITESPACE@100..101 " " + BLOCK_EXPR@101..159 + L_CURLY@101..102 "{" + WHITESPACE@102..107 "\n " + EXPR_STMT@107..136 + BIN_EXPR@107..135 + INDEX_EXPR@107..131 + FIELD_EXPR@107..128 + RECORD_EXPR@107..124 + PATH@107..111 + PATH_SEGMENT@107..111 + NAME_REF@107..111 + IDENT@107..111 "Repr" + WHITESPACE@111..112 " " + RECORD_EXPR_FIELD_LIST@112..124 + L_CURLY@112..113 "{" + WHITESPACE@113..114 " " + RECORD_EXPR_FIELD@114..122 + NAME_REF@114..117 + IDENT@114..117 "raw" + COLON@117..118 ":" + WHITESPACE@118..119 " " + ARRAY_EXPR@119..122 + L_BRACK@119..120 "[" + LITERAL@120..121 + INT_NUMBER@120..121 "0" + R_BRACK@121..122 "]" + WHITESPACE@122..123 " " + R_CURLY@123..124 "}" + DOT@124..125 "." + NAME_REF@125..128 + IDENT@125..128 "raw" + L_BRACK@128..129 "[" + LITERAL@129..130 + INT_NUMBER@129..130 "0" + R_BRACK@130..131 "]" + WHITESPACE@131..132 " " + EQ@132..133 "=" + WHITESPACE@133..134 " " + LITERAL@134..135 + INT_NUMBER@134..135 "0" + SEMICOLON@135..136 ";" + WHITESPACE@136..141 "\n " + EXPR_STMT@141..157 + CALL_EXPR@141..156 + RECORD_EXPR@141..154 + PATH@141..145 + PATH_SEGMENT@141..145 + NAME_REF@141..145 + IDENT@141..145 "Repr" + RECORD_EXPR_FIELD_LIST@145..154 + L_CURLY@145..146 "{" + RECORD_EXPR_FIELD@146..153 + NAME_REF@146..149 + IDENT@146..149 "raw" + COLON@149..150 ":" + ARRAY_EXPR@150..153 + L_BRACK@150..151 "[" + LITERAL@151..152 + INT_NUMBER@151..152 "0" + R_BRACK@152..153 "]" + R_CURLY@153..154 "}" + ARG_LIST@154..156 + L_PAREN@154..155 "(" + R_PAREN@155..156 ")" + SEMICOLON@156..157 ";" + WHITESPACE@157..158 "\n" + R_CURLY@158..159 "}" + WHITESPACE@159..160 "\n" diff --git a/crates/syntax/test_data/parser/ok/0043_complex_assignment.rs b/crates/syntax/test_data/parser/ok/0043_complex_assignment.rs new file mode 100644 index 00000000000..7e4a28bf74c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0043_complex_assignment.rs @@ -0,0 +1,8 @@ +// https://github.com/rust-analyzer/rust-analyzer/issues/674 + +struct Repr { raw: [u8; 1] } + +fn abc() { + Repr { raw: [0] }.raw[0] = 0; + Repr{raw:[0]}(); +} diff --git a/crates/syntax/test_data/parser/ok/0044_let_attrs.rast b/crates/syntax/test_data/parser/ok/0044_let_attrs.rast new file mode 100644 index 00000000000..af44a4dbe2e --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0044_let_attrs.rast @@ -0,0 +1,75 @@ +SOURCE_FILE@0..166 + FN@0..165 + COMMENT@0..60 "// https://github.com ..." + WHITESPACE@60..61 "\n" + FN_KW@61..63 "fn" + WHITESPACE@63..64 " " + NAME@64..68 + IDENT@64..68 "main" + PARAM_LIST@68..70 + L_PAREN@68..69 "(" + R_PAREN@69..70 ")" + WHITESPACE@70..71 " " + BLOCK_EXPR@71..165 + L_CURLY@71..72 "{" + WHITESPACE@72..77 "\n " + LET_STMT@77..163 + ATTR@77..106 + POUND@77..78 "#" + L_BRACK@78..79 "[" + PATH@79..82 + PATH_SEGMENT@79..82 + NAME_REF@79..82 + IDENT@79..82 "cfg" + TOKEN_TREE@82..105 + L_PAREN@82..83 "(" + IDENT@83..90 "feature" + WHITESPACE@90..91 " " + EQ@91..92 "=" + WHITESPACE@92..93 " " + STRING@93..104 "\"backtrace\"" + R_PAREN@104..105 ")" + R_BRACK@105..106 "]" + WHITESPACE@106..111 "\n " + LET_KW@111..114 "let" + WHITESPACE@114..115 " " + IDENT_PAT@115..124 + NAME@115..124 + IDENT@115..124 "exit_code" + WHITESPACE@124..125 " " + EQ@125..126 "=" + WHITESPACE@126..127 " " + CALL_EXPR@127..162 + PATH_EXPR@127..146 + PATH@127..146 + PATH@127..132 + PATH_SEGMENT@127..132 + NAME_REF@127..132 + IDENT@127..132 "panic" + COLON2@132..134 "::" + PATH_SEGMENT@134..146 + NAME_REF@134..146 + IDENT@134..146 "catch_unwind" + ARG_LIST@146..162 + L_PAREN@146..147 "(" + CLOSURE_EXPR@147..161 + MOVE_KW@147..151 "move" + WHITESPACE@151..152 " " + PARAM_LIST@152..154 + PIPE@152..153 "|" + PIPE@153..154 "|" + WHITESPACE@154..155 " " + CALL_EXPR@155..161 + PATH_EXPR@155..159 + PATH@155..159 + PATH_SEGMENT@155..159 + NAME_REF@155..159 + IDENT@155..159 "main" + ARG_LIST@159..161 + L_PAREN@159..160 "(" + R_PAREN@160..161 ")" + R_PAREN@161..162 ")" + SEMICOLON@162..163 ";" + WHITESPACE@163..164 "\n" + R_CURLY@164..165 "}" + WHITESPACE@165..166 "\n" diff --git a/crates/syntax/test_data/parser/ok/0044_let_attrs.rs b/crates/syntax/test_data/parser/ok/0044_let_attrs.rs new file mode 100644 index 00000000000..325a97aebdc --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0044_let_attrs.rs @@ -0,0 +1,5 @@ +// https://github.com/rust-analyzer/rust-analyzer/issues/677 +fn main() { + #[cfg(feature = "backtrace")] + let exit_code = panic::catch_unwind(move || main()); +} diff --git a/crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rast b/crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rast new file mode 100644 index 00000000000..0ac56df6d0f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rast @@ -0,0 +1,177 @@ +SOURCE_FILE@0..686 + FN@0..461 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..8 + IDENT@3..8 "block" + PARAM_LIST@8..10 + L_PAREN@8..9 "(" + R_PAREN@9..10 ")" + WHITESPACE@10..11 " " + BLOCK_EXPR@11..461 + L_CURLY@11..12 "{" + WHITESPACE@12..17 "\n " + ATTR@17..57 + POUND@17..18 "#" + BANG@18..19 "!" + L_BRACK@19..20 "[" + PATH@20..23 + PATH_SEGMENT@20..23 + NAME_REF@20..23 + IDENT@20..23 "doc" + TOKEN_TREE@23..56 + L_PAREN@23..24 "(" + STRING@24..55 "\"Inner attributes all ..." + R_PAREN@55..56 ")" + R_BRACK@56..57 "]" + WHITESPACE@57..62 "\n " + COMMENT@62..97 "//! As are ModuleDoc ..." + WHITESPACE@97..102 "\n " + EXPR_STMT@102..295 + BLOCK_EXPR@102..294 + L_CURLY@102..103 "{" + WHITESPACE@103..112 "\n " + ATTR@112..180 + POUND@112..113 "#" + BANG@113..114 "!" + L_BRACK@114..115 "[" + PATH@115..118 + PATH_SEGMENT@115..118 + NAME_REF@115..118 + IDENT@115..118 "doc" + TOKEN_TREE@118..179 + L_PAREN@118..119 "(" + STRING@119..178 "\"Inner attributes are ..." + R_PAREN@178..179 ")" + R_BRACK@179..180 "]" + WHITESPACE@180..189 "\n " + ATTR@189..244 + POUND@189..190 "#" + BANG@190..191 "!" + L_BRACK@191..192 "[" + PATH@192..195 + PATH_SEGMENT@192..195 + NAME_REF@192..195 + IDENT@192..195 "doc" + TOKEN_TREE@195..243 + L_PAREN@195..196 "(" + STRING@196..242 "\"Being validated is n ..." + R_PAREN@242..243 ")" + R_BRACK@243..244 "]" + WHITESPACE@244..253 "\n " + COMMENT@253..288 "//! As are ModuleDoc ..." + WHITESPACE@288..293 "\n " + R_CURLY@293..294 "}" + SEMICOLON@294..295 ";" + WHITESPACE@295..300 "\n " + BLOCK_EXPR@300..459 + L_CURLY@300..301 "{" + WHITESPACE@301..310 "\n " + ATTR@310..409 + POUND@310..311 "#" + BANG@311..312 "!" + L_BRACK@312..313 "[" + PATH@313..316 + PATH_SEGMENT@313..316 + NAME_REF@313..316 + IDENT@313..316 "doc" + TOKEN_TREE@316..408 + L_PAREN@316..317 "(" + STRING@317..407 "\"Inner attributes are ..." + R_PAREN@407..408 ")" + R_BRACK@408..409 "]" + WHITESPACE@409..418 "\n " + COMMENT@418..453 "//! As are ModuleDoc ..." + WHITESPACE@453..458 "\n " + R_CURLY@458..459 "}" + WHITESPACE@459..460 "\n" + R_CURLY@460..461 "}" + WHITESPACE@461..463 "\n\n" + COMMENT@463..523 "// https://github.com ..." + WHITESPACE@523..524 "\n" + IMPL@524..685 + IMPL_KW@524..528 "impl" + WHITESPACE@528..529 " " + PATH_TYPE@529..537 + PATH@529..537 + PATH_SEGMENT@529..537 + NAME_REF@529..537 + IDENT@529..537 "Whatever" + WHITESPACE@537..538 " " + ASSOC_ITEM_LIST@538..685 + L_CURLY@538..539 "{" + WHITESPACE@539..544 "\n " + FN@544..683 + FN_KW@544..546 "fn" + WHITESPACE@546..547 " " + NAME@547..558 + IDENT@547..558 "salsa_event" + PARAM_LIST@558..601 + L_PAREN@558..559 "(" + SELF_PARAM@559..564 + AMP@559..560 "&" + SELF_KW@560..564 "self" + COMMA@564..565 "," + WHITESPACE@565..566 " " + PARAM@566..600 + IDENT_PAT@566..574 + NAME@566..574 + IDENT@566..574 "event_fn" + COLON@574..575 ":" + WHITESPACE@575..576 " " + IMPL_TRAIT_TYPE@576..600 + IMPL_KW@576..580 "impl" + WHITESPACE@580..581 " " + TYPE_BOUND_LIST@581..600 + TYPE_BOUND@581..600 + PATH_TYPE@581..600 + PATH@581..600 + PATH_SEGMENT@581..600 + NAME_REF@581..583 + IDENT@581..583 "Fn" + PARAM_LIST@583..585 + L_PAREN@583..584 "(" + R_PAREN@584..585 ")" + WHITESPACE@585..586 " " + RET_TYPE@586..600 + THIN_ARROW@586..588 "->" + WHITESPACE@588..589 " " + PATH_TYPE@589..600 + PATH@589..600 + PATH_SEGMENT@589..600 + NAME_REF@589..594 + IDENT@589..594 "Event" + GENERIC_ARG_LIST@594..600 + L_ANGLE@594..595 "<" + TYPE_ARG@595..599 + PATH_TYPE@595..599 + PATH@595..599 + PATH_SEGMENT@595..599 + NAME_REF@595..599 + IDENT@595..599 "Self" + R_ANGLE@599..600 ">" + R_PAREN@600..601 ")" + WHITESPACE@601..602 " " + BLOCK_EXPR@602..683 + L_CURLY@602..603 "{" + WHITESPACE@603..612 "\n " + ATTR@612..639 + POUND@612..613 "#" + BANG@613..614 "!" + L_BRACK@614..615 "[" + PATH@615..620 + PATH_SEGMENT@615..620 + NAME_REF@615..620 + IDENT@615..620 "allow" + TOKEN_TREE@620..638 + L_PAREN@620..621 "(" + IDENT@621..637 "unused_variables" + R_PAREN@637..638 ")" + R_BRACK@638..639 "]" + WHITESPACE@639..640 " " + COMMENT@640..677 "// this is `inner_at ..." + WHITESPACE@677..682 "\n " + R_CURLY@682..683 "}" + WHITESPACE@683..684 "\n" + R_CURLY@684..685 "}" + WHITESPACE@685..686 "\n" diff --git a/crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rs b/crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rs new file mode 100644 index 00000000000..88df8138edc --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0045_block_inner_attrs.rs @@ -0,0 +1,20 @@ +fn block() { + #![doc("Inner attributes allowed here")] + //! As are ModuleDoc style comments + { + #![doc("Inner attributes are allowed in blocks used as statements")] + #![doc("Being validated is not affected by duplcates")] + //! As are ModuleDoc style comments + }; + { + #![doc("Inner attributes are allowed in blocks when they are the last statement of another block")] + //! As are ModuleDoc style comments + } +} + +// https://github.com/rust-analyzer/rust-analyzer/issues/689 +impl Whatever { + fn salsa_event(&self, event_fn: impl Fn() -> Event) { + #![allow(unused_variables)] // this is `inner_attr` of the block + } +} diff --git a/crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rast b/crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rast new file mode 100644 index 00000000000..37594769aaa --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rast @@ -0,0 +1,28 @@ +SOURCE_FILE@0..87 + EXTERN_BLOCK@0..86 + ABI@0..10 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + STRING@7..10 "\"C\"" + WHITESPACE@10..11 " " + EXTERN_ITEM_LIST@11..86 + L_CURLY@11..12 "{" + WHITESPACE@12..17 "\n " + COMMENT@17..42 "//! This is a doc com ..." + WHITESPACE@42..47 "\n " + ATTR@47..84 + POUND@47..48 "#" + BANG@48..49 "!" + L_BRACK@49..50 "[" + PATH@50..53 + PATH_SEGMENT@50..53 + NAME_REF@50..53 + IDENT@50..53 "doc" + TOKEN_TREE@53..83 + L_PAREN@53..54 "(" + STRING@54..82 "\"This is also a doc c ..." + R_PAREN@82..83 ")" + R_BRACK@83..84 "]" + WHITESPACE@84..85 "\n" + R_CURLY@85..86 "}" + WHITESPACE@86..87 "\n" diff --git a/crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rs b/crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rs new file mode 100644 index 00000000000..fe67e2df43c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0046_extern_inner_attributes.rs @@ -0,0 +1,4 @@ +extern "C" { + //! This is a doc comment + #![doc("This is also a doc comment")] +} diff --git a/crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast b/crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast new file mode 100644 index 00000000000..4f8dff90948 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast @@ -0,0 +1,320 @@ +SOURCE_FILE@0..395 + COMMENT@0..60 "// https://github.com ..." + WHITESPACE@60..62 "\n\n" + FN@62..341 + FN_KW@62..64 "fn" + WHITESPACE@64..65 " " + NAME@65..69 + IDENT@65..69 "main" + PARAM_LIST@69..71 + L_PAREN@69..70 "(" + R_PAREN@70..71 ")" + WHITESPACE@71..72 " " + BLOCK_EXPR@72..341 + L_CURLY@72..73 "{" + WHITESPACE@73..78 "\n " + EXPR_STMT@78..141 + MATCH_EXPR@78..141 + MATCH_KW@78..83 "match" + WHITESPACE@83..84 " " + CALL_EXPR@84..92 + PATH_EXPR@84..88 + PATH@84..88 + PATH_SEGMENT@84..88 + NAME_REF@84..88 + IDENT@84..88 "Some" + ARG_LIST@88..92 + L_PAREN@88..89 "(" + PREFIX_EXPR@89..91 + MINUS@89..90 "-" + LITERAL@90..91 + INT_NUMBER@90..91 "1" + R_PAREN@91..92 ")" + WHITESPACE@92..93 " " + MATCH_ARM_LIST@93..141 + L_CURLY@93..94 "{" + WHITESPACE@94..103 "\n " + MATCH_ARM@103..117 + TUPLE_STRUCT_PAT@103..111 + PATH@103..107 + PATH_SEGMENT@103..107 + NAME_REF@103..107 + IDENT@103..107 "Some" + L_PAREN@107..108 "(" + LITERAL_PAT@108..110 + MINUS@108..109 "-" + LITERAL@109..110 + INT_NUMBER@109..110 "1" + R_PAREN@110..111 ")" + WHITESPACE@111..112 " " + FAT_ARROW@112..114 "=>" + WHITESPACE@114..115 " " + TUPLE_EXPR@115..117 + L_PAREN@115..116 "(" + R_PAREN@116..117 ")" + COMMA@117..118 "," + WHITESPACE@118..127 "\n " + MATCH_ARM@127..134 + WILDCARD_PAT@127..128 + UNDERSCORE@127..128 "_" + WHITESPACE@128..129 " " + FAT_ARROW@129..131 "=>" + WHITESPACE@131..132 " " + TUPLE_EXPR@132..134 + L_PAREN@132..133 "(" + R_PAREN@133..134 ")" + COMMA@134..135 "," + WHITESPACE@135..140 "\n " + R_CURLY@140..141 "}" + WHITESPACE@141..147 "\n\n " + EXPR_STMT@147..222 + MATCH_EXPR@147..222 + MATCH_KW@147..152 "match" + WHITESPACE@152..153 " " + CALL_EXPR@153..167 + PATH_EXPR@153..157 + PATH@153..157 + PATH_SEGMENT@153..157 + NAME_REF@153..157 + IDENT@153..157 "Some" + ARG_LIST@157..167 + L_PAREN@157..158 "(" + TUPLE_EXPR@158..166 + L_PAREN@158..159 "(" + PREFIX_EXPR@159..161 + MINUS@159..160 "-" + LITERAL@160..161 + INT_NUMBER@160..161 "1" + COMMA@161..162 "," + WHITESPACE@162..163 " " + PREFIX_EXPR@163..165 + MINUS@163..164 "-" + LITERAL@164..165 + INT_NUMBER@164..165 "1" + R_PAREN@165..166 ")" + R_PAREN@166..167 ")" + WHITESPACE@167..168 " " + MATCH_ARM_LIST@168..222 + L_CURLY@168..169 "{" + WHITESPACE@169..178 "\n " + MATCH_ARM@178..198 + TUPLE_STRUCT_PAT@178..192 + PATH@178..182 + PATH_SEGMENT@178..182 + NAME_REF@178..182 + IDENT@178..182 "Some" + L_PAREN@182..183 "(" + TUPLE_PAT@183..191 + L_PAREN@183..184 "(" + LITERAL_PAT@184..186 + MINUS@184..185 "-" + LITERAL@185..186 + INT_NUMBER@185..186 "1" + COMMA@186..187 "," + WHITESPACE@187..188 " " + LITERAL_PAT@188..190 + MINUS@188..189 "-" + LITERAL@189..190 + INT_NUMBER@189..190 "1" + R_PAREN@190..191 ")" + R_PAREN@191..192 ")" + WHITESPACE@192..193 " " + FAT_ARROW@193..195 "=>" + WHITESPACE@195..196 " " + TUPLE_EXPR@196..198 + L_PAREN@196..197 "(" + R_PAREN@197..198 ")" + COMMA@198..199 "," + WHITESPACE@199..208 "\n " + MATCH_ARM@208..215 + WILDCARD_PAT@208..209 + UNDERSCORE@208..209 "_" + WHITESPACE@209..210 " " + FAT_ARROW@210..212 "=>" + WHITESPACE@212..213 " " + TUPLE_EXPR@213..215 + L_PAREN@213..214 "(" + R_PAREN@214..215 ")" + COMMA@215..216 "," + WHITESPACE@216..221 "\n " + R_CURLY@221..222 "}" + WHITESPACE@222..228 "\n\n " + EXPR_STMT@228..299 + MATCH_EXPR@228..299 + MATCH_KW@228..233 "match" + WHITESPACE@233..234 " " + CALL_EXPR@234..246 + PATH_EXPR@234..238 + PATH@234..238 + PATH@234..235 + PATH_SEGMENT@234..235 + NAME_REF@234..235 + IDENT@234..235 "A" + COLON2@235..237 "::" + PATH_SEGMENT@237..238 + NAME_REF@237..238 + IDENT@237..238 "B" + ARG_LIST@238..246 + L_PAREN@238..239 "(" + PREFIX_EXPR@239..241 + MINUS@239..240 "-" + LITERAL@240..241 + INT_NUMBER@240..241 "1" + COMMA@241..242 "," + WHITESPACE@242..243 " " + PREFIX_EXPR@243..245 + MINUS@243..244 "-" + LITERAL@244..245 + INT_NUMBER@244..245 "1" + R_PAREN@245..246 ")" + WHITESPACE@246..247 " " + MATCH_ARM_LIST@247..299 + L_CURLY@247..248 "{" + WHITESPACE@248..257 "\n " + MATCH_ARM@257..275 + TUPLE_STRUCT_PAT@257..269 + PATH@257..261 + PATH@257..258 + PATH_SEGMENT@257..258 + NAME_REF@257..258 + IDENT@257..258 "A" + COLON2@258..260 "::" + PATH_SEGMENT@260..261 + NAME_REF@260..261 + IDENT@260..261 "B" + L_PAREN@261..262 "(" + LITERAL_PAT@262..264 + MINUS@262..263 "-" + LITERAL@263..264 + INT_NUMBER@263..264 "1" + COMMA@264..265 "," + WHITESPACE@265..266 " " + LITERAL_PAT@266..268 + MINUS@266..267 "-" + LITERAL@267..268 + INT_NUMBER@267..268 "1" + R_PAREN@268..269 ")" + WHITESPACE@269..270 " " + FAT_ARROW@270..272 "=>" + WHITESPACE@272..273 " " + TUPLE_EXPR@273..275 + L_PAREN@273..274 "(" + R_PAREN@274..275 ")" + COMMA@275..276 "," + WHITESPACE@276..285 "\n " + MATCH_ARM@285..292 + WILDCARD_PAT@285..286 + UNDERSCORE@285..286 "_" + WHITESPACE@286..287 " " + FAT_ARROW@287..289 "=>" + WHITESPACE@289..290 " " + TUPLE_EXPR@290..292 + L_PAREN@290..291 "(" + R_PAREN@291..292 ")" + COMMA@292..293 "," + WHITESPACE@293..298 "\n " + R_CURLY@298..299 "}" + WHITESPACE@299..305 "\n\n " + IF_EXPR@305..339 + IF_KW@305..307 "if" + WHITESPACE@307..308 " " + CONDITION@308..331 + LET_KW@308..311 "let" + WHITESPACE@311..312 " " + TUPLE_STRUCT_PAT@312..320 + PATH@312..316 + PATH_SEGMENT@312..316 + NAME_REF@312..316 + IDENT@312..316 "Some" + L_PAREN@316..317 "(" + LITERAL_PAT@317..319 + MINUS@317..318 "-" + LITERAL@318..319 + INT_NUMBER@318..319 "1" + R_PAREN@319..320 ")" + WHITESPACE@320..321 " " + EQ@321..322 "=" + WHITESPACE@322..323 " " + CALL_EXPR@323..331 + PATH_EXPR@323..327 + PATH@323..327 + PATH_SEGMENT@323..327 + NAME_REF@323..327 + IDENT@323..327 "Some" + ARG_LIST@327..331 + L_PAREN@327..328 "(" + PREFIX_EXPR@328..330 + MINUS@328..329 "-" + LITERAL@329..330 + INT_NUMBER@329..330 "1" + R_PAREN@330..331 ")" + WHITESPACE@331..332 " " + BLOCK_EXPR@332..339 + L_CURLY@332..333 "{" + WHITESPACE@333..338 "\n " + R_CURLY@338..339 "}" + WHITESPACE@339..340 "\n" + R_CURLY@340..341 "}" + WHITESPACE@341..343 "\n\n" + ENUM@343..367 + ENUM_KW@343..347 "enum" + WHITESPACE@347..348 " " + NAME@348..349 + IDENT@348..349 "A" + WHITESPACE@349..350 " " + VARIANT_LIST@350..367 + L_CURLY@350..351 "{" + WHITESPACE@351..356 "\n " + VARIANT@356..365 + NAME@356..357 + IDENT@356..357 "B" + TUPLE_FIELD_LIST@357..365 + L_PAREN@357..358 "(" + TUPLE_FIELD@358..360 + PATH_TYPE@358..360 + PATH@358..360 + PATH_SEGMENT@358..360 + NAME_REF@358..360 + IDENT@358..360 "i8" + COMMA@360..361 "," + WHITESPACE@361..362 " " + TUPLE_FIELD@362..364 + PATH_TYPE@362..364 + PATH@362..364 + PATH_SEGMENT@362..364 + NAME_REF@362..364 + IDENT@362..364 "i8" + R_PAREN@364..365 ")" + WHITESPACE@365..366 "\n" + R_CURLY@366..367 "}" + WHITESPACE@367..369 "\n\n" + FN@369..394 + FN_KW@369..371 "fn" + WHITESPACE@371..372 " " + NAME@372..375 + IDENT@372..375 "foo" + PARAM_LIST@375..391 + L_PAREN@375..376 "(" + PARAM@376..390 + RANGE_PAT@376..386 + LITERAL_PAT@376..380 + MINUS@376..377 "-" + LITERAL@377..380 + INT_NUMBER@377..380 "128" + DOT2EQ@380..383 "..=" + LITERAL_PAT@383..386 + LITERAL@383..386 + INT_NUMBER@383..386 "127" + COLON@386..387 ":" + WHITESPACE@387..388 " " + PATH_TYPE@388..390 + PATH@388..390 + PATH_SEGMENT@388..390 + NAME_REF@388..390 + IDENT@388..390 "i8" + R_PAREN@390..391 ")" + WHITESPACE@391..392 " " + BLOCK_EXPR@392..394 + L_CURLY@392..393 "{" + R_CURLY@393..394 "}" + WHITESPACE@394..395 "\n" diff --git a/crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rs b/crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rs new file mode 100644 index 00000000000..bbd6b0f6e7c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rs @@ -0,0 +1,27 @@ +// https://github.com/rust-analyzer/rust-analyzer/issues/972 + +fn main() { + match Some(-1) { + Some(-1) => (), + _ => (), + } + + match Some((-1, -1)) { + Some((-1, -1)) => (), + _ => (), + } + + match A::B(-1, -1) { + A::B(-1, -1) => (), + _ => (), + } + + if let Some(-1) = Some(-1) { + } +} + +enum A { + B(i8, i8) +} + +fn foo(-128..=127: i8) {} diff --git a/crates/syntax/test_data/parser/ok/0048_compound_assignment.rast b/crates/syntax/test_data/parser/ok/0048_compound_assignment.rast new file mode 100644 index 00000000000..eaab478433f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0048_compound_assignment.rast @@ -0,0 +1,200 @@ +SOURCE_FILE@0..257 + COMMENT@0..58 "// https://github.com ..." + WHITESPACE@58..60 "\n\n" + FN@60..256 + FN_KW@60..62 "fn" + WHITESPACE@62..63 " " + NAME@63..82 + IDENT@63..82 "compound_assignment" + PARAM_LIST@82..84 + L_PAREN@82..83 "(" + R_PAREN@83..84 ")" + WHITESPACE@84..85 " " + BLOCK_EXPR@85..256 + L_CURLY@85..86 "{" + WHITESPACE@86..91 "\n " + LET_STMT@91..105 + LET_KW@91..94 "let" + WHITESPACE@94..95 " " + IDENT_PAT@95..100 + MUT_KW@95..98 "mut" + WHITESPACE@98..99 " " + NAME@99..100 + IDENT@99..100 "a" + WHITESPACE@100..101 " " + EQ@101..102 "=" + WHITESPACE@102..103 " " + LITERAL@103..104 + INT_NUMBER@103..104 "0" + SEMICOLON@104..105 ";" + WHITESPACE@105..110 "\n " + EXPR_STMT@110..117 + BIN_EXPR@110..116 + PATH_EXPR@110..111 + PATH@110..111 + PATH_SEGMENT@110..111 + NAME_REF@110..111 + IDENT@110..111 "a" + WHITESPACE@111..112 " " + PLUSEQ@112..114 "+=" + WHITESPACE@114..115 " " + LITERAL@115..116 + INT_NUMBER@115..116 "1" + SEMICOLON@116..117 ";" + WHITESPACE@117..122 "\n " + EXPR_STMT@122..129 + BIN_EXPR@122..128 + PATH_EXPR@122..123 + PATH@122..123 + PATH_SEGMENT@122..123 + NAME_REF@122..123 + IDENT@122..123 "a" + WHITESPACE@123..124 " " + MINUSEQ@124..126 "-=" + WHITESPACE@126..127 " " + LITERAL@127..128 + INT_NUMBER@127..128 "2" + SEMICOLON@128..129 ";" + WHITESPACE@129..134 "\n " + EXPR_STMT@134..141 + BIN_EXPR@134..140 + PATH_EXPR@134..135 + PATH@134..135 + PATH_SEGMENT@134..135 + NAME_REF@134..135 + IDENT@134..135 "a" + WHITESPACE@135..136 " " + STAREQ@136..138 "*=" + WHITESPACE@138..139 " " + LITERAL@139..140 + INT_NUMBER@139..140 "3" + SEMICOLON@140..141 ";" + WHITESPACE@141..146 "\n " + EXPR_STMT@146..153 + BIN_EXPR@146..152 + PATH_EXPR@146..147 + PATH@146..147 + PATH_SEGMENT@146..147 + NAME_REF@146..147 + IDENT@146..147 "a" + WHITESPACE@147..148 " " + PERCENTEQ@148..150 "%=" + WHITESPACE@150..151 " " + LITERAL@151..152 + INT_NUMBER@151..152 "4" + SEMICOLON@152..153 ";" + WHITESPACE@153..158 "\n " + EXPR_STMT@158..165 + BIN_EXPR@158..164 + PATH_EXPR@158..159 + PATH@158..159 + PATH_SEGMENT@158..159 + NAME_REF@158..159 + IDENT@158..159 "a" + WHITESPACE@159..160 " " + SLASHEQ@160..162 "/=" + WHITESPACE@162..163 " " + LITERAL@163..164 + INT_NUMBER@163..164 "5" + SEMICOLON@164..165 ";" + WHITESPACE@165..170 "\n " + EXPR_STMT@170..177 + BIN_EXPR@170..176 + PATH_EXPR@170..171 + PATH@170..171 + PATH_SEGMENT@170..171 + NAME_REF@170..171 + IDENT@170..171 "a" + WHITESPACE@171..172 " " + PIPEEQ@172..174 "|=" + WHITESPACE@174..175 " " + LITERAL@175..176 + INT_NUMBER@175..176 "6" + SEMICOLON@176..177 ";" + WHITESPACE@177..182 "\n " + EXPR_STMT@182..189 + BIN_EXPR@182..188 + PATH_EXPR@182..183 + PATH@182..183 + PATH_SEGMENT@182..183 + NAME_REF@182..183 + IDENT@182..183 "a" + WHITESPACE@183..184 " " + AMPEQ@184..186 "&=" + WHITESPACE@186..187 " " + LITERAL@187..188 + INT_NUMBER@187..188 "7" + SEMICOLON@188..189 ";" + WHITESPACE@189..194 "\n " + EXPR_STMT@194..201 + BIN_EXPR@194..200 + PATH_EXPR@194..195 + PATH@194..195 + PATH_SEGMENT@194..195 + NAME_REF@194..195 + IDENT@194..195 "a" + WHITESPACE@195..196 " " + CARETEQ@196..198 "^=" + WHITESPACE@198..199 " " + LITERAL@199..200 + INT_NUMBER@199..200 "8" + SEMICOLON@200..201 ";" + WHITESPACE@201..206 "\n " + EXPR_STMT@206..213 + BIN_EXPR@206..212 + PATH_EXPR@206..207 + PATH@206..207 + PATH_SEGMENT@206..207 + NAME_REF@206..207 + IDENT@206..207 "a" + WHITESPACE@207..208 " " + LTEQ@208..210 "<=" + WHITESPACE@210..211 " " + LITERAL@211..212 + INT_NUMBER@211..212 "9" + SEMICOLON@212..213 ";" + WHITESPACE@213..218 "\n " + EXPR_STMT@218..226 + BIN_EXPR@218..225 + PATH_EXPR@218..219 + PATH@218..219 + PATH_SEGMENT@218..219 + NAME_REF@218..219 + IDENT@218..219 "a" + WHITESPACE@219..220 " " + GTEQ@220..222 ">=" + WHITESPACE@222..223 " " + LITERAL@223..225 + INT_NUMBER@223..225 "10" + SEMICOLON@225..226 ";" + WHITESPACE@226..231 "\n " + EXPR_STMT@231..240 + BIN_EXPR@231..239 + PATH_EXPR@231..232 + PATH@231..232 + PATH_SEGMENT@231..232 + NAME_REF@231..232 + IDENT@231..232 "a" + WHITESPACE@232..233 " " + SHREQ@233..236 ">>=" + WHITESPACE@236..237 " " + LITERAL@237..239 + INT_NUMBER@237..239 "11" + SEMICOLON@239..240 ";" + WHITESPACE@240..245 "\n " + EXPR_STMT@245..254 + BIN_EXPR@245..253 + PATH_EXPR@245..246 + PATH@245..246 + PATH_SEGMENT@245..246 + NAME_REF@245..246 + IDENT@245..246 "a" + WHITESPACE@246..247 " " + SHLEQ@247..250 "<<=" + WHITESPACE@250..251 " " + LITERAL@251..253 + INT_NUMBER@251..253 "12" + SEMICOLON@253..254 ";" + WHITESPACE@254..255 "\n" + R_CURLY@255..256 "}" + WHITESPACE@256..257 "\n" diff --git a/crates/syntax/test_data/parser/ok/0048_compound_assignment.rs b/crates/syntax/test_data/parser/ok/0048_compound_assignment.rs new file mode 100644 index 00000000000..871720a49a6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0048_compound_assignment.rs @@ -0,0 +1,17 @@ +// https://github.com/rust-analyzer/rust-analyzer/pull/983 + +fn compound_assignment() { + let mut a = 0; + a += 1; + a -= 2; + a *= 3; + a %= 4; + a /= 5; + a |= 6; + a &= 7; + a ^= 8; + a <= 9; + a >= 10; + a >>= 11; + a <<= 12; +} diff --git a/crates/syntax/test_data/parser/ok/0049_async_block.rast b/crates/syntax/test_data/parser/ok/0049_async_block.rast new file mode 100644 index 00000000000..57ecad3cfa5 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0049_async_block.rast @@ -0,0 +1,35 @@ +SOURCE_FILE@0..47 + FN@0..45 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..45 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..24 + EFFECT_EXPR@15..23 + ASYNC_KW@15..20 "async" + WHITESPACE@20..21 " " + BLOCK_EXPR@21..23 + L_CURLY@21..22 "{" + R_CURLY@22..23 "}" + SEMICOLON@23..24 ";" + WHITESPACE@24..29 "\n " + EXPR_STMT@29..43 + EFFECT_EXPR@29..42 + ASYNC_KW@29..34 "async" + WHITESPACE@34..35 " " + MOVE_KW@35..39 "move" + WHITESPACE@39..40 " " + BLOCK_EXPR@40..42 + L_CURLY@40..41 "{" + R_CURLY@41..42 "}" + SEMICOLON@42..43 ";" + WHITESPACE@43..44 "\n" + R_CURLY@44..45 "}" + WHITESPACE@45..47 "\n\n" diff --git a/crates/syntax/test_data/parser/ok/0049_async_block.rs b/crates/syntax/test_data/parser/ok/0049_async_block.rs new file mode 100644 index 00000000000..4781b322549 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0049_async_block.rs @@ -0,0 +1,5 @@ +fn foo() { + async {}; + async move {}; +} + diff --git a/crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rast b/crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rast new file mode 100644 index 00000000000..c7ce12e93a0 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rast @@ -0,0 +1,90 @@ +SOURCE_FILE@0..95 + FN@0..52 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..49 + L_PAREN@6..7 "(" + PARAM@7..48 + IDENT_PAT@7..8 + NAME@7..8 + IDENT@7..8 "x" + COLON@8..9 ":" + WHITESPACE@9..10 " " + IMPL_TRAIT_TYPE@10..48 + IMPL_KW@10..14 "impl" + WHITESPACE@14..15 " " + TYPE_BOUND_LIST@15..48 + TYPE_BOUND@15..48 + PATH_TYPE@15..48 + PATH@15..48 + PATH@15..26 + PATH@15..18 + PATH_SEGMENT@15..18 + NAME_REF@15..18 + IDENT@15..18 "std" + COLON2@18..20 "::" + PATH_SEGMENT@20..26 + NAME_REF@20..26 + IDENT@20..26 "future" + COLON2@26..28 "::" + PATH_SEGMENT@28..48 + NAME_REF@28..34 + IDENT@28..34 "Future" + GENERIC_ARG_LIST@34..48 + L_ANGLE@34..35 "<" + ASSOC_TYPE_ARG@35..47 + NAME_REF@35..41 + IDENT@35..41 "Output" + WHITESPACE@41..42 " " + EQ@42..43 "=" + WHITESPACE@43..44 " " + PATH_TYPE@44..47 + PATH@44..47 + PATH_SEGMENT@44..47 + NAME_REF@44..47 + IDENT@44..47 "i32" + R_ANGLE@47..48 ">" + R_PAREN@48..49 ")" + WHITESPACE@49..50 " " + BLOCK_EXPR@50..52 + L_CURLY@50..51 "{" + R_CURLY@51..52 "}" + WHITESPACE@52..54 "\n\n" + FN@54..94 + FN_KW@54..56 "fn" + WHITESPACE@56..57 " " + NAME@57..61 + IDENT@57..61 "main" + PARAM_LIST@61..63 + L_PAREN@61..62 "(" + R_PAREN@62..63 ")" + WHITESPACE@63..64 " " + BLOCK_EXPR@64..94 + L_CURLY@64..65 "{" + WHITESPACE@65..70 "\n " + CALL_EXPR@70..92 + PATH_EXPR@70..73 + PATH@70..73 + PATH_SEGMENT@70..73 + NAME_REF@70..73 + IDENT@70..73 "foo" + ARG_LIST@73..92 + L_PAREN@73..74 "(" + EFFECT_EXPR@74..91 + ASYNC_KW@74..79 "async" + WHITESPACE@79..80 " " + MOVE_KW@80..84 "move" + WHITESPACE@84..85 " " + BLOCK_EXPR@85..91 + L_CURLY@85..86 "{" + WHITESPACE@86..87 " " + LITERAL@87..89 + INT_NUMBER@87..89 "12" + WHITESPACE@89..90 " " + R_CURLY@90..91 "}" + R_PAREN@91..92 ")" + WHITESPACE@92..93 "\n" + R_CURLY@93..94 "}" + WHITESPACE@94..95 "\n" diff --git a/crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rs b/crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rs new file mode 100644 index 00000000000..ec4612cff27 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0050_async_block_as_argument.rs @@ -0,0 +1,5 @@ +fn foo(x: impl std::future::Future) {} + +fn main() { + foo(async move { 12 }) +} diff --git a/crates/syntax/test_data/parser/ok/0051_parameter_attrs.rast b/crates/syntax/test_data/parser/ok/0051_parameter_attrs.rast new file mode 100644 index 00000000000..d4f05f27924 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0051_parameter_attrs.rast @@ -0,0 +1,508 @@ +SOURCE_FILE@0..519 + FN@0..37 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..5 + IDENT@3..5 "g1" + PARAM_LIST@5..34 + L_PAREN@5..6 "(" + ATTR@6..14 + POUND@6..7 "#" + L_BRACK@7..8 "[" + PATH@8..13 + PATH_SEGMENT@8..13 + NAME_REF@8..13 + IDENT@8..13 "attr1" + R_BRACK@13..14 "]" + WHITESPACE@14..15 " " + ATTR@15..23 + POUND@15..16 "#" + L_BRACK@16..17 "[" + PATH@17..22 + PATH_SEGMENT@17..22 + NAME_REF@17..22 + IDENT@17..22 "attr2" + R_BRACK@22..23 "]" + WHITESPACE@23..24 " " + PARAM@24..33 + IDENT_PAT@24..27 + NAME@24..27 + IDENT@24..27 "pat" + COLON@27..28 ":" + WHITESPACE@28..29 " " + PATH_TYPE@29..33 + PATH@29..33 + PATH_SEGMENT@29..33 + NAME_REF@29..33 + IDENT@29..33 "Type" + R_PAREN@33..34 ")" + WHITESPACE@34..35 " " + BLOCK_EXPR@35..37 + L_CURLY@35..36 "{" + R_CURLY@36..37 "}" + WHITESPACE@37..38 "\n" + FN@38..62 + FN_KW@38..40 "fn" + WHITESPACE@40..41 " " + NAME@41..43 + IDENT@41..43 "g2" + PARAM_LIST@43..59 + L_PAREN@43..44 "(" + ATTR@44..52 + POUND@44..45 "#" + L_BRACK@45..46 "[" + PATH@46..51 + PATH_SEGMENT@46..51 + NAME_REF@46..51 + IDENT@46..51 "attr1" + R_BRACK@51..52 "]" + WHITESPACE@52..53 " " + PARAM@53..58 + IDENT_PAT@53..54 + NAME@53..54 + IDENT@53..54 "x" + COLON@54..55 ":" + WHITESPACE@55..56 " " + PATH_TYPE@56..58 + PATH@56..58 + PATH_SEGMENT@56..58 + NAME_REF@56..58 + IDENT@56..58 "u8" + R_PAREN@58..59 ")" + WHITESPACE@59..60 " " + BLOCK_EXPR@60..62 + L_CURLY@60..61 "{" + R_CURLY@61..62 "}" + WHITESPACE@62..64 "\n\n" + EXTERN_BLOCK@64..128 + ABI@64..74 + EXTERN_KW@64..70 "extern" + WHITESPACE@70..71 " " + STRING@71..74 "\"C\"" + WHITESPACE@74..75 " " + EXTERN_ITEM_LIST@75..128 + L_CURLY@75..76 "{" + WHITESPACE@76..77 " " + FN@77..126 + FN_KW@77..79 "fn" + WHITESPACE@79..80 " " + NAME@80..86 + IDENT@80..86 "printf" + PARAM_LIST@86..118 + L_PAREN@86..87 "(" + PARAM@87..104 + IDENT_PAT@87..93 + NAME@87..93 + IDENT@87..93 "format" + COLON@93..94 ":" + WHITESPACE@94..95 " " + PTR_TYPE@95..104 + STAR@95..96 "*" + CONST_KW@96..101 "const" + WHITESPACE@101..102 " " + PATH_TYPE@102..104 + PATH@102..104 + PATH_SEGMENT@102..104 + NAME_REF@102..104 + IDENT@102..104 "i8" + COMMA@104..105 "," + WHITESPACE@105..106 " " + ATTR@106..113 + POUND@106..107 "#" + L_BRACK@107..108 "[" + PATH@108..112 + PATH_SEGMENT@108..112 + NAME_REF@108..112 + IDENT@108..112 "attr" + R_BRACK@112..113 "]" + WHITESPACE@113..114 " " + PARAM@114..117 + DOT3@114..117 "..." + R_PAREN@117..118 ")" + WHITESPACE@118..119 " " + RET_TYPE@119..125 + THIN_ARROW@119..121 "->" + WHITESPACE@121..122 " " + PATH_TYPE@122..125 + PATH@122..125 + PATH_SEGMENT@122..125 + NAME_REF@122..125 + IDENT@122..125 "i32" + SEMICOLON@125..126 ";" + WHITESPACE@126..127 " " + R_CURLY@127..128 "}" + WHITESPACE@128..130 "\n\n" + FN@130..172 + FN_KW@130..132 "fn" + WHITESPACE@132..133 " " + NAME@133..136 + IDENT@133..136 "foo" + GENERIC_PARAM_LIST@136..168 + L_ANGLE@136..137 "<" + TYPE_PARAM@137..167 + NAME@137..138 + IDENT@137..138 "F" + COLON@138..139 ":" + WHITESPACE@139..140 " " + TYPE_BOUND_LIST@140..167 + TYPE_BOUND@140..167 + PATH_TYPE@140..167 + PATH@140..167 + PATH_SEGMENT@140..167 + NAME_REF@140..145 + IDENT@140..145 "FnMut" + PARAM_LIST@145..167 + L_PAREN@145..146 "(" + ATTR@146..153 + POUND@146..147 "#" + L_BRACK@147..148 "[" + PATH@148..152 + PATH_SEGMENT@148..152 + NAME_REF@148..152 + IDENT@148..152 "attr" + R_BRACK@152..153 "]" + WHITESPACE@153..154 " " + PARAM@154..166 + REF_TYPE@154..166 + AMP@154..155 "&" + MUT_KW@155..158 "mut" + WHITESPACE@158..159 " " + PATH_TYPE@159..166 + PATH@159..166 + PATH_SEGMENT@159..166 + NAME_REF@159..162 + IDENT@159..162 "Foo" + GENERIC_ARG_LIST@162..166 + L_ANGLE@162..163 "<" + LIFETIME_ARG@163..165 + LIFETIME@163..165 "\'a" + R_ANGLE@165..166 ">" + R_PAREN@166..167 ")" + R_ANGLE@167..168 ">" + PARAM_LIST@168..170 + L_PAREN@168..169 "(" + R_PAREN@169..170 ")" + BLOCK_EXPR@170..172 + L_CURLY@170..171 "{" + R_CURLY@171..172 "}" + WHITESPACE@172..174 "\n\n" + TRAIT@174..236 + TRAIT_KW@174..179 "trait" + WHITESPACE@179..180 " " + NAME@180..183 + IDENT@180..183 "Foo" + WHITESPACE@183..184 " " + ASSOC_ITEM_LIST@184..236 + L_CURLY@184..185 "{" + WHITESPACE@185..190 "\n " + FN@190..234 + FN_KW@190..192 "fn" + WHITESPACE@192..193 " " + NAME@193..196 + IDENT@193..196 "bar" + PARAM_LIST@196..233 + L_PAREN@196..197 "(" + ATTR@197..204 + POUND@197..198 "#" + L_BRACK@198..199 "[" + PATH@199..203 + PATH_SEGMENT@199..203 + NAME_REF@199..203 + IDENT@199..203 "attr" + R_BRACK@203..204 "]" + WHITESPACE@204..205 " " + PARAM@205..211 + WILDCARD_PAT@205..206 + UNDERSCORE@205..206 "_" + COLON@206..207 ":" + WHITESPACE@207..208 " " + PATH_TYPE@208..211 + PATH@208..211 + PATH_SEGMENT@208..211 + NAME_REF@208..211 + IDENT@208..211 "u64" + COMMA@211..212 "," + WHITESPACE@212..213 " " + ATTR@213..221 + POUND@213..214 "#" + WHITESPACE@214..215 " " + L_BRACK@215..216 "[" + PATH@216..220 + PATH_SEGMENT@216..220 + NAME_REF@216..220 + IDENT@216..220 "attr" + R_BRACK@220..221 "]" + WHITESPACE@221..222 " " + PARAM@222..232 + IDENT_PAT@222..227 + MUT_KW@222..225 "mut" + WHITESPACE@225..226 " " + NAME@226..227 + IDENT@226..227 "x" + COLON@227..228 ":" + WHITESPACE@228..229 " " + PATH_TYPE@229..232 + PATH@229..232 + PATH_SEGMENT@229..232 + NAME_REF@229..232 + IDENT@229..232 "i32" + R_PAREN@232..233 ")" + SEMICOLON@233..234 ";" + WHITESPACE@234..235 "\n" + R_CURLY@235..236 "}" + WHITESPACE@236..238 "\n\n" + IMPL@238..519 + IMPL_KW@238..242 "impl" + WHITESPACE@242..243 " " + PATH_TYPE@243..244 + PATH@243..244 + PATH_SEGMENT@243..244 + NAME_REF@243..244 + IDENT@243..244 "S" + WHITESPACE@244..245 " " + ASSOC_ITEM_LIST@245..519 + L_CURLY@245..246 "{" + WHITESPACE@246..252 "\n " + FN@252..277 + FN_KW@252..254 "fn" + WHITESPACE@254..255 " " + NAME@255..256 + IDENT@255..256 "f" + PARAM_LIST@256..274 + L_PAREN@256..257 "(" + ATTR@257..268 + POUND@257..258 "#" + L_BRACK@258..259 "[" + PATH@259..267 + PATH_SEGMENT@259..267 + NAME_REF@259..267 + IDENT@259..267 "must_use" + R_BRACK@267..268 "]" + WHITESPACE@268..269 " " + SELF_PARAM@269..273 + SELF_KW@269..273 "self" + R_PAREN@273..274 ")" + WHITESPACE@274..275 " " + BLOCK_EXPR@275..277 + L_CURLY@275..276 "{" + R_CURLY@276..277 "}" + WHITESPACE@277..283 "\n " + FN@283..305 + FN_KW@283..285 "fn" + WHITESPACE@285..286 " " + NAME@286..288 + IDENT@286..288 "g1" + PARAM_LIST@288..302 + L_PAREN@288..289 "(" + ATTR@289..296 + POUND@289..290 "#" + L_BRACK@290..291 "[" + PATH@291..295 + PATH_SEGMENT@291..295 + NAME_REF@291..295 + IDENT@291..295 "attr" + R_BRACK@295..296 "]" + WHITESPACE@296..297 " " + SELF_PARAM@297..301 + SELF_KW@297..301 "self" + R_PAREN@301..302 ")" + WHITESPACE@302..303 " " + BLOCK_EXPR@303..305 + L_CURLY@303..304 "{" + R_CURLY@304..305 "}" + WHITESPACE@305..311 "\n " + FN@311..334 + FN_KW@311..313 "fn" + WHITESPACE@313..314 " " + NAME@314..316 + IDENT@314..316 "g2" + PARAM_LIST@316..331 + L_PAREN@316..317 "(" + ATTR@317..324 + POUND@317..318 "#" + L_BRACK@318..319 "[" + PATH@319..323 + PATH_SEGMENT@319..323 + NAME_REF@319..323 + IDENT@319..323 "attr" + R_BRACK@323..324 "]" + WHITESPACE@324..325 " " + SELF_PARAM@325..330 + AMP@325..326 "&" + SELF_KW@326..330 "self" + R_PAREN@330..331 ")" + WHITESPACE@331..332 " " + BLOCK_EXPR@332..334 + L_CURLY@332..333 "{" + R_CURLY@333..334 "}" + WHITESPACE@334..340 "\n " + FN@340..371 + FN_KW@340..342 "fn" + WHITESPACE@342..343 " " + NAME@343..345 + IDENT@343..345 "g3" + GENERIC_PARAM_LIST@345..349 + L_ANGLE@345..346 "<" + LIFETIME_PARAM@346..348 + LIFETIME@346..348 "\'a" + R_ANGLE@348..349 ">" + PARAM_LIST@349..368 + L_PAREN@349..350 "(" + ATTR@350..357 + POUND@350..351 "#" + L_BRACK@351..352 "[" + PATH@352..356 + PATH_SEGMENT@352..356 + NAME_REF@352..356 + IDENT@352..356 "attr" + R_BRACK@356..357 "]" + WHITESPACE@357..358 " " + SELF_PARAM@358..367 + AMP@358..359 "&" + MUT_KW@359..362 "mut" + WHITESPACE@362..363 " " + SELF_KW@363..367 "self" + R_PAREN@367..368 ")" + WHITESPACE@368..369 " " + BLOCK_EXPR@369..371 + L_CURLY@369..370 "{" + R_CURLY@370..371 "}" + WHITESPACE@371..377 "\n " + FN@377..407 + FN_KW@377..379 "fn" + WHITESPACE@379..380 " " + NAME@380..382 + IDENT@380..382 "g4" + GENERIC_PARAM_LIST@382..386 + L_ANGLE@382..383 "<" + LIFETIME_PARAM@383..385 + LIFETIME@383..385 "\'a" + R_ANGLE@385..386 ">" + PARAM_LIST@386..404 + L_PAREN@386..387 "(" + ATTR@387..394 + POUND@387..388 "#" + L_BRACK@388..389 "[" + PATH@389..393 + PATH_SEGMENT@389..393 + NAME_REF@389..393 + IDENT@389..393 "attr" + R_BRACK@393..394 "]" + WHITESPACE@394..395 " " + SELF_PARAM@395..403 + AMP@395..396 "&" + LIFETIME@396..398 "\'a" + WHITESPACE@398..399 " " + SELF_KW@399..403 "self" + R_PAREN@403..404 ")" + WHITESPACE@404..405 " " + BLOCK_EXPR@405..407 + L_CURLY@405..406 "{" + R_CURLY@406..407 "}" + WHITESPACE@407..413 "\n " + FN@413..447 + FN_KW@413..415 "fn" + WHITESPACE@415..416 " " + NAME@416..418 + IDENT@416..418 "g5" + GENERIC_PARAM_LIST@418..422 + L_ANGLE@418..419 "<" + LIFETIME_PARAM@419..421 + LIFETIME@419..421 "\'a" + R_ANGLE@421..422 ">" + PARAM_LIST@422..444 + L_PAREN@422..423 "(" + ATTR@423..430 + POUND@423..424 "#" + L_BRACK@424..425 "[" + PATH@425..429 + PATH_SEGMENT@425..429 + NAME_REF@425..429 + IDENT@425..429 "attr" + R_BRACK@429..430 "]" + WHITESPACE@430..431 " " + SELF_PARAM@431..443 + AMP@431..432 "&" + LIFETIME@432..434 "\'a" + WHITESPACE@434..435 " " + MUT_KW@435..438 "mut" + WHITESPACE@438..439 " " + SELF_KW@439..443 "self" + R_PAREN@443..444 ")" + WHITESPACE@444..445 " " + BLOCK_EXPR@445..447 + L_CURLY@445..446 "{" + R_CURLY@446..447 "}" + WHITESPACE@447..453 "\n " + FN@453..480 + FN_KW@453..455 "fn" + WHITESPACE@455..456 " " + NAME@456..457 + IDENT@456..457 "c" + PARAM_LIST@457..477 + L_PAREN@457..458 "(" + ATTR@458..465 + POUND@458..459 "#" + L_BRACK@459..460 "[" + PATH@460..464 + PATH_SEGMENT@460..464 + NAME_REF@460..464 + IDENT@460..464 "attr" + R_BRACK@464..465 "]" + WHITESPACE@465..466 " " + SELF_PARAM@466..476 + SELF_KW@466..470 "self" + COLON@470..471 ":" + WHITESPACE@471..472 " " + PATH_TYPE@472..476 + PATH@472..476 + PATH_SEGMENT@472..476 + NAME_REF@472..476 + IDENT@472..476 "Self" + R_PAREN@476..477 ")" + WHITESPACE@477..478 " " + BLOCK_EXPR@478..480 + L_CURLY@478..479 "{" + R_CURLY@479..480 "}" + WHITESPACE@480..486 "\n " + FN@486..517 + FN_KW@486..488 "fn" + WHITESPACE@488..489 " " + NAME@489..490 + IDENT@489..490 "d" + PARAM_LIST@490..514 + L_PAREN@490..491 "(" + ATTR@491..498 + POUND@491..492 "#" + L_BRACK@492..493 "[" + PATH@493..497 + PATH_SEGMENT@493..497 + NAME_REF@493..497 + IDENT@493..497 "attr" + R_BRACK@497..498 "]" + WHITESPACE@498..499 " " + SELF_PARAM@499..513 + SELF_KW@499..503 "self" + COLON@503..504 ":" + WHITESPACE@504..505 " " + PATH_TYPE@505..513 + PATH@505..513 + PATH_SEGMENT@505..513 + NAME_REF@505..507 + IDENT@505..507 "Rc" + GENERIC_ARG_LIST@507..513 + L_ANGLE@507..508 "<" + TYPE_ARG@508..512 + PATH_TYPE@508..512 + PATH@508..512 + PATH_SEGMENT@508..512 + NAME_REF@508..512 + IDENT@508..512 "Self" + R_ANGLE@512..513 ">" + R_PAREN@513..514 ")" + WHITESPACE@514..515 " " + BLOCK_EXPR@515..517 + L_CURLY@515..516 "{" + R_CURLY@516..517 "}" + WHITESPACE@517..518 "\n" + R_CURLY@518..519 "}" diff --git a/crates/syntax/test_data/parser/ok/0051_parameter_attrs.rs b/crates/syntax/test_data/parser/ok/0051_parameter_attrs.rs new file mode 100644 index 00000000000..de350d8587a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0051_parameter_attrs.rs @@ -0,0 +1,21 @@ +fn g1(#[attr1] #[attr2] pat: Type) {} +fn g2(#[attr1] x: u8) {} + +extern "C" { fn printf(format: *const i8, #[attr] ...) -> i32; } + +fn foo)>(){} + +trait Foo { + fn bar(#[attr] _: u64, # [attr] mut x: i32); +} + +impl S { + fn f(#[must_use] self) {} + fn g1(#[attr] self) {} + fn g2(#[attr] &self) {} + fn g3<'a>(#[attr] &mut self) {} + fn g4<'a>(#[attr] &'a self) {} + fn g5<'a>(#[attr] &'a mut self) {} + fn c(#[attr] self: Self) {} + fn d(#[attr] self: Rc) {} +} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0052_for_range_block.rast b/crates/syntax/test_data/parser/ok/0052_for_range_block.rast new file mode 100644 index 00000000000..350823ba36c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0052_for_range_block.rast @@ -0,0 +1,78 @@ +SOURCE_FILE@0..80 + FN@0..79 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..79 + L_CURLY@9..10 "{" + WHITESPACE@10..14 "\n " + FOR_EXPR@14..77 + FOR_KW@14..17 "for" + WHITESPACE@17..18 " " + IDENT_PAT@18..20 + NAME@18..20 + IDENT@18..20 "_x" + WHITESPACE@20..21 " " + IN_KW@21..23 "in" + WHITESPACE@23..24 " " + RANGE_EXPR@24..56 + LITERAL@24..25 + INT_NUMBER@24..25 "0" + WHITESPACE@25..26 " " + DOT2@26..28 ".." + WHITESPACE@28..29 " " + METHOD_CALL_EXPR@29..56 + PAREN_EXPR@29..43 + L_PAREN@29..30 "(" + RANGE_EXPR@30..42 + LITERAL@30..31 + INT_NUMBER@30..31 "0" + WHITESPACE@31..32 " " + DOT2@32..34 ".." + WHITESPACE@34..35 " " + BLOCK_EXPR@35..42 + L_CURLY@35..36 "{" + BIN_EXPR@36..41 + LITERAL@36..37 + INT_NUMBER@36..37 "1" + WHITESPACE@37..38 " " + PLUS@38..39 "+" + WHITESPACE@39..40 " " + LITERAL@40..41 + INT_NUMBER@40..41 "2" + R_CURLY@41..42 "}" + R_PAREN@42..43 ")" + DOT@43..44 "." + NAME_REF@44..47 + IDENT@44..47 "sum" + GENERIC_ARG_LIST@47..54 + COLON2@47..49 "::" + L_ANGLE@49..50 "<" + TYPE_ARG@50..53 + PATH_TYPE@50..53 + PATH@50..53 + PATH_SEGMENT@50..53 + NAME_REF@50..53 + IDENT@50..53 "u32" + R_ANGLE@53..54 ">" + ARG_LIST@54..56 + L_PAREN@54..55 "(" + R_PAREN@55..56 ")" + WHITESPACE@56..57 " " + BLOCK_EXPR@57..77 + L_CURLY@57..58 "{" + WHITESPACE@58..66 "\n " + EXPR_STMT@66..72 + BREAK_EXPR@66..71 + BREAK_KW@66..71 "break" + SEMICOLON@71..72 ";" + WHITESPACE@72..76 "\n " + R_CURLY@76..77 "}" + WHITESPACE@77..78 "\n" + R_CURLY@78..79 "}" + WHITESPACE@79..80 "\n" diff --git a/crates/syntax/test_data/parser/ok/0052_for_range_block.rs b/crates/syntax/test_data/parser/ok/0052_for_range_block.rs new file mode 100644 index 00000000000..b51b1963008 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0052_for_range_block.rs @@ -0,0 +1,5 @@ +fn foo() { + for _x in 0 .. (0 .. {1 + 2}).sum::() { + break; + } +} diff --git a/crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast b/crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast new file mode 100644 index 00000000000..be60f7a8ed8 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast @@ -0,0 +1,39 @@ +SOURCE_FILE@0..65 + MACRO_CALL@0..64 + COMMENT@0..13 "/// Some docs" + WHITESPACE@13..14 "\n" + ATTR@14..29 + POUND@14..15 "#" + L_BRACK@15..16 "[" + PATH@16..28 + PATH_SEGMENT@16..28 + NAME_REF@16..28 + IDENT@16..28 "macro_export" + R_BRACK@28..29 "]" + WHITESPACE@29..30 "\n" + PATH@30..41 + PATH_SEGMENT@30..41 + NAME_REF@30..41 + IDENT@30..41 "macro_rules" + BANG@41..42 "!" + WHITESPACE@42..43 " " + NAME@43..46 + IDENT@43..46 "foo" + WHITESPACE@46..47 " " + TOKEN_TREE@47..64 + L_CURLY@47..48 "{" + WHITESPACE@48..53 "\n " + TOKEN_TREE@53..55 + L_PAREN@53..54 "(" + R_PAREN@54..55 ")" + WHITESPACE@55..56 " " + EQ@56..57 "=" + R_ANGLE@57..58 ">" + WHITESPACE@58..59 " " + TOKEN_TREE@59..61 + L_CURLY@59..60 "{" + R_CURLY@60..61 "}" + SEMICOLON@61..62 ";" + WHITESPACE@62..63 "\n" + R_CURLY@63..64 "}" + WHITESPACE@64..65 "\n" diff --git a/crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rs b/crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rs new file mode 100644 index 00000000000..b59c23c56a9 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rs @@ -0,0 +1,5 @@ +/// Some docs +#[macro_export] +macro_rules! foo { + () => {}; +} diff --git a/crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast b/crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast new file mode 100644 index 00000000000..f25c9ac36ff --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast @@ -0,0 +1,123 @@ +SOURCE_FILE@0..88 + FN@0..26 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "a" + PARAM_LIST@4..6 + L_PAREN@4..5 "(" + R_PAREN@5..6 ")" + WHITESPACE@6..7 " " + RET_TYPE@7..23 + THIN_ARROW@7..9 "->" + WHITESPACE@9..10 " " + PATH_TYPE@10..23 + PATH@10..23 + PATH_SEGMENT@10..23 + NAME_REF@10..13 + IDENT@10..13 "Foo" + GENERIC_ARG_LIST@13..23 + L_ANGLE@13..14 "<" + TYPE_ARG@14..22 + PATH_TYPE@14..22 + PATH@14..22 + PATH@14..17 + PATH_SEGMENT@14..17 + NAME_REF@14..17 + IDENT@14..17 "bar" + COLON2@17..19 "::" + PATH_SEGMENT@19..22 + NAME_REF@19..22 + IDENT@19..22 "Baz" + R_ANGLE@22..23 ">" + WHITESPACE@23..24 " " + BLOCK_EXPR@24..26 + L_CURLY@24..25 "{" + R_CURLY@25..26 "}" + WHITESPACE@26..28 "\n\n" + FN@28..56 + FN_KW@28..30 "fn" + WHITESPACE@30..31 " " + NAME@31..32 + IDENT@31..32 "b" + PARAM_LIST@32..53 + L_PAREN@32..33 "(" + PARAM@33..52 + WILDCARD_PAT@33..34 + UNDERSCORE@33..34 "_" + COLON@34..35 ":" + WHITESPACE@35..36 " " + IMPL_TRAIT_TYPE@36..52 + IMPL_KW@36..40 "impl" + WHITESPACE@40..41 " " + TYPE_BOUND_LIST@41..52 + TYPE_BOUND@41..52 + PATH_TYPE@41..52 + PATH@41..52 + PATH_SEGMENT@41..52 + NAME_REF@41..46 + IDENT@41..46 "FnMut" + PARAM_LIST@46..52 + L_PAREN@46..47 "(" + PARAM@47..51 + PATH_TYPE@47..51 + PATH@47..51 + PATH@47..48 + PATH_SEGMENT@47..48 + NAME_REF@47..48 + IDENT@47..48 "x" + COLON2@48..50 "::" + PATH_SEGMENT@50..51 + NAME_REF@50..51 + IDENT@50..51 "Y" + R_PAREN@51..52 ")" + R_PAREN@52..53 ")" + WHITESPACE@53..54 " " + BLOCK_EXPR@54..56 + L_CURLY@54..55 "{" + R_CURLY@55..56 "}" + WHITESPACE@56..58 "\n\n" + FN@58..87 + FN_KW@58..60 "fn" + WHITESPACE@60..61 " " + NAME@61..62 + IDENT@61..62 "c" + PARAM_LIST@62..84 + L_PAREN@62..63 "(" + PARAM@63..83 + WILDCARD_PAT@63..64 + UNDERSCORE@63..64 "_" + COLON@64..65 ":" + WHITESPACE@65..66 " " + IMPL_TRAIT_TYPE@66..83 + IMPL_KW@66..70 "impl" + WHITESPACE@70..71 " " + TYPE_BOUND_LIST@71..83 + TYPE_BOUND@71..83 + PATH_TYPE@71..83 + PATH@71..83 + PATH_SEGMENT@71..83 + NAME_REF@71..76 + IDENT@71..76 "FnMut" + PARAM_LIST@76..83 + L_PAREN@76..77 "(" + PARAM@77..82 + REF_TYPE@77..82 + AMP@77..78 "&" + PATH_TYPE@78..82 + PATH@78..82 + PATH@78..79 + PATH_SEGMENT@78..79 + NAME_REF@78..79 + IDENT@78..79 "x" + COLON2@79..81 "::" + PATH_SEGMENT@81..82 + NAME_REF@81..82 + IDENT@81..82 "Y" + R_PAREN@82..83 ")" + R_PAREN@83..84 ")" + WHITESPACE@84..85 " " + BLOCK_EXPR@85..87 + L_CURLY@85..86 "{" + R_CURLY@86..87 "}" + WHITESPACE@87..88 "\n" diff --git a/crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rs b/crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rs new file mode 100644 index 00000000000..0d3f5722a5a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rs @@ -0,0 +1,5 @@ +fn a() -> Foo {} + +fn b(_: impl FnMut(x::Y)) {} + +fn c(_: impl FnMut(&x::Y)) {} diff --git a/crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rast b/crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rast new file mode 100644 index 00000000000..7447d516ed1 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rast @@ -0,0 +1,49 @@ +SOURCE_FILE@0..49 + TYPE_ALIAS@0..12 + TYPE_KW@0..4 "type" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "X" + WHITESPACE@6..7 " " + EQ@7..8 "=" + WHITESPACE@8..9 " " + TUPLE_TYPE@9..11 + L_PAREN@9..10 "(" + R_PAREN@10..11 ")" + SEMICOLON@11..12 ";" + WHITESPACE@12..14 "\n\n" + FN@14..48 + FN_KW@14..16 "fn" + WHITESPACE@16..17 " " + NAME@17..21 + IDENT@17..21 "main" + PARAM_LIST@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + BLOCK_EXPR@24..48 + L_CURLY@24..25 "{" + WHITESPACE@25..30 "\n " + LET_STMT@30..46 + LET_KW@30..33 "let" + WHITESPACE@33..34 " " + TUPLE_PAT@34..36 + L_PAREN@34..35 "(" + R_PAREN@35..36 ")" + COLON@36..37 ":" + PATH_TYPE@37..40 + PATH@37..40 + PATH_SEGMENT@37..40 + COLON2@37..39 "::" + NAME_REF@39..40 + IDENT@39..40 "X" + WHITESPACE@40..41 " " + EQ@41..42 "=" + WHITESPACE@42..43 " " + TUPLE_EXPR@43..45 + L_PAREN@43..44 "(" + R_PAREN@44..45 ")" + SEMICOLON@45..46 ";" + WHITESPACE@46..47 "\n" + R_CURLY@47..48 "}" + WHITESPACE@48..49 "\n" diff --git a/crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rs b/crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rs new file mode 100644 index 00000000000..cd204f65ed9 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0055_dot_dot_dot.rs @@ -0,0 +1,5 @@ +type X = (); + +fn main() { + let ():::X = (); +} diff --git a/crates/syntax/test_data/parser/ok/0056_neq_in_type.rast b/crates/syntax/test_data/parser/ok/0056_neq_in_type.rast new file mode 100644 index 00000000000..3ef916e5565 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0056_neq_in_type.rast @@ -0,0 +1,64 @@ +SOURCE_FILE@0..71 + FN@0..70 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..70 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + IF_EXPR@16..68 + IF_KW@16..18 "if" + WHITESPACE@18..19 " " + CONDITION@19..65 + BIN_EXPR@19..65 + CAST_EXPR@19..40 + METHOD_CALL_EXPR@19..33 + LITERAL@19..25 + FLOAT_NUMBER@19..25 "1.0f32" + DOT@25..26 "." + NAME_REF@26..31 + IDENT@26..31 "floor" + ARG_LIST@31..33 + L_PAREN@31..32 "(" + R_PAREN@32..33 ")" + WHITESPACE@33..34 " " + AS_KW@34..36 "as" + WHITESPACE@36..37 " " + PATH_TYPE@37..40 + PATH@37..40 + PATH_SEGMENT@37..40 + NAME_REF@37..40 + IDENT@37..40 "i64" + WHITESPACE@40..41 " " + NEQ@41..43 "!=" + WHITESPACE@43..44 " " + CAST_EXPR@44..65 + METHOD_CALL_EXPR@44..58 + LITERAL@44..50 + FLOAT_NUMBER@44..50 "1.0f32" + DOT@50..51 "." + NAME_REF@51..56 + IDENT@51..56 "floor" + ARG_LIST@56..58 + L_PAREN@56..57 "(" + R_PAREN@57..58 ")" + WHITESPACE@58..59 " " + AS_KW@59..61 "as" + WHITESPACE@61..62 " " + PATH_TYPE@62..65 + PATH@62..65 + PATH_SEGMENT@62..65 + NAME_REF@62..65 + IDENT@62..65 "i64" + WHITESPACE@65..66 " " + BLOCK_EXPR@66..68 + L_CURLY@66..67 "{" + R_CURLY@67..68 "}" + WHITESPACE@68..69 "\n" + R_CURLY@69..70 "}" + WHITESPACE@70..71 "\n" diff --git a/crates/syntax/test_data/parser/ok/0056_neq_in_type.rs b/crates/syntax/test_data/parser/ok/0056_neq_in_type.rs new file mode 100644 index 00000000000..6210683cea3 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0056_neq_in_type.rs @@ -0,0 +1,3 @@ +fn main() { + if 1.0f32.floor() as i64 != 1.0f32.floor() as i64 {} +} diff --git a/crates/syntax/test_data/parser/ok/0057_loop_in_call.rast b/crates/syntax/test_data/parser/ok/0057_loop_in_call.rast new file mode 100644 index 00000000000..76301004a5d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0057_loop_in_call.rast @@ -0,0 +1,56 @@ +SOURCE_FILE@0..50 + FN@0..17 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..14 + L_PAREN@6..7 "(" + PARAM@7..13 + IDENT_PAT@7..8 + NAME@7..8 + IDENT@7..8 "x" + COLON@8..9 ":" + WHITESPACE@9..10 " " + PATH_TYPE@10..13 + PATH@10..13 + PATH_SEGMENT@10..13 + NAME_REF@10..13 + IDENT@10..13 "i32" + R_PAREN@13..14 ")" + WHITESPACE@14..15 " " + BLOCK_EXPR@15..17 + L_CURLY@15..16 "{" + R_CURLY@16..17 "}" + WHITESPACE@17..19 "\n\n" + FN@19..50 + FN_KW@19..21 "fn" + WHITESPACE@21..22 " " + NAME@22..26 + IDENT@22..26 "main" + PARAM_LIST@26..28 + L_PAREN@26..27 "(" + R_PAREN@27..28 ")" + WHITESPACE@28..29 " " + BLOCK_EXPR@29..50 + L_CURLY@29..30 "{" + WHITESPACE@30..35 "\n " + EXPR_STMT@35..48 + CALL_EXPR@35..47 + PATH_EXPR@35..38 + PATH@35..38 + PATH_SEGMENT@35..38 + NAME_REF@35..38 + IDENT@35..38 "foo" + ARG_LIST@38..47 + L_PAREN@38..39 "(" + LOOP_EXPR@39..46 + LOOP_KW@39..43 "loop" + WHITESPACE@43..44 " " + BLOCK_EXPR@44..46 + L_CURLY@44..45 "{" + R_CURLY@45..46 "}" + R_PAREN@46..47 ")" + SEMICOLON@47..48 ";" + WHITESPACE@48..49 "\n" + R_CURLY@49..50 "}" diff --git a/crates/syntax/test_data/parser/ok/0057_loop_in_call.rs b/crates/syntax/test_data/parser/ok/0057_loop_in_call.rs new file mode 100644 index 00000000000..31c12522ffc --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0057_loop_in_call.rs @@ -0,0 +1,5 @@ +fn foo(x: i32) {} + +fn main() { + foo(loop {}); +} \ No newline at end of file diff --git a/crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rast b/crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rast new file mode 100644 index 00000000000..a1dfd58f26b --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rast @@ -0,0 +1,96 @@ +SOURCE_FILE@0..79 + FN@0..78 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..78 + L_CURLY@9..10 "{" + WHITESPACE@10..15 "\n " + EXPR_STMT@15..27 + BIN_EXPR@15..26 + BIN_EXPR@15..22 + LITERAL@15..16 + INT_NUMBER@15..16 "1" + WHITESPACE@16..17 " " + PLUS@17..18 "+" + WHITESPACE@18..19 " " + PREFIX_EXPR@19..22 + STAR@19..20 "*" + REF_EXPR@20..22 + AMP@20..21 "&" + LITERAL@21..22 + INT_NUMBER@21..22 "2" + WHITESPACE@22..23 " " + PLUS@23..24 "+" + WHITESPACE@24..25 " " + LITERAL@25..26 + INT_NUMBER@25..26 "3" + SEMICOLON@26..27 ";" + WHITESPACE@27..32 "\n " + EXPR_STMT@32..43 + CAST_EXPR@32..42 + PREFIX_EXPR@32..35 + STAR@32..33 "*" + REF_EXPR@33..35 + AMP@33..34 "&" + LITERAL@34..35 + INT_NUMBER@34..35 "1" + WHITESPACE@35..36 " " + AS_KW@36..38 "as" + WHITESPACE@38..39 " " + PATH_TYPE@39..42 + PATH@39..42 + PATH_SEGMENT@39..42 + NAME_REF@39..42 + IDENT@39..42 "u64" + SEMICOLON@42..43 ";" + WHITESPACE@43..48 "\n " + EXPR_STMT@48..54 + PREFIX_EXPR@48..53 + STAR@48..49 "*" + CALL_EXPR@49..53 + PATH_EXPR@49..50 + PATH@49..50 + PATH_SEGMENT@49..50 + NAME_REF@49..50 + IDENT@49..50 "x" + ARG_LIST@50..53 + L_PAREN@50..51 "(" + LITERAL@51..52 + INT_NUMBER@51..52 "1" + R_PAREN@52..53 ")" + SEMICOLON@53..54 ";" + WHITESPACE@54..59 "\n " + EXPR_STMT@59..65 + REF_EXPR@59..64 + AMP@59..60 "&" + INDEX_EXPR@60..64 + PATH_EXPR@60..61 + PATH@60..61 + PATH_SEGMENT@60..61 + NAME_REF@60..61 + IDENT@60..61 "x" + L_BRACK@61..62 "[" + LITERAL@62..63 + INT_NUMBER@62..63 "1" + R_BRACK@63..64 "]" + SEMICOLON@64..65 ";" + WHITESPACE@65..70 "\n " + EXPR_STMT@70..76 + RANGE_EXPR@70..75 + PREFIX_EXPR@70..72 + MINUS@70..71 "-" + LITERAL@71..72 + INT_NUMBER@71..72 "1" + DOT2@72..74 ".." + LITERAL@74..75 + INT_NUMBER@74..75 "2" + SEMICOLON@75..76 ";" + WHITESPACE@76..77 "\n" + R_CURLY@77..78 "}" + WHITESPACE@78..79 "\n" diff --git a/crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rs b/crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rs new file mode 100644 index 00000000000..100fccc641c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0058_unary_expr_precedence.rs @@ -0,0 +1,7 @@ +fn foo() { + 1 + *&2 + 3; + *&1 as u64; + *x(1); + &x[1]; + -1..2; +} diff --git a/crates/syntax/test_data/parser/ok/0059_loops_in_parens.rast b/crates/syntax/test_data/parser/ok/0059_loops_in_parens.rast new file mode 100644 index 00000000000..213f7b3815a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0059_loops_in_parens.rast @@ -0,0 +1,97 @@ +SOURCE_FILE@0..105 + FN@0..104 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..104 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + EXPR_STMT@16..50 + CALL_EXPR@16..49 + PATH_EXPR@16..20 + PATH@16..20 + PATH_SEGMENT@16..20 + NAME_REF@16..20 + IDENT@16..20 "Some" + ARG_LIST@20..49 + L_PAREN@20..21 "(" + FOR_EXPR@21..48 + FOR_KW@21..24 "for" + WHITESPACE@24..25 " " + WILDCARD_PAT@25..26 + UNDERSCORE@25..26 "_" + WHITESPACE@26..27 " " + IN_KW@27..29 "in" + WHITESPACE@29..30 " " + METHOD_CALL_EXPR@30..45 + ARRAY_EXPR@30..33 + L_BRACK@30..31 "[" + LITERAL@31..32 + INT_NUMBER@31..32 "1" + R_BRACK@32..33 "]" + DOT@33..34 "." + NAME_REF@34..43 + IDENT@34..43 "into_iter" + ARG_LIST@43..45 + L_PAREN@43..44 "(" + R_PAREN@44..45 ")" + WHITESPACE@45..46 " " + BLOCK_EXPR@46..48 + L_CURLY@46..47 "{" + R_CURLY@47..48 "}" + R_PAREN@48..49 ")" + SEMICOLON@49..50 ";" + WHITESPACE@50..55 "\n " + EXPR_STMT@55..77 + CALL_EXPR@55..76 + PATH_EXPR@55..59 + PATH@55..59 + PATH_SEGMENT@55..59 + NAME_REF@55..59 + IDENT@55..59 "Some" + ARG_LIST@59..76 + L_PAREN@59..60 "(" + LOOP_EXPR@60..75 + LOOP_KW@60..64 "loop" + WHITESPACE@64..65 " " + BLOCK_EXPR@65..75 + L_CURLY@65..66 "{" + WHITESPACE@66..67 " " + EXPR_STMT@67..73 + BREAK_EXPR@67..72 + BREAK_KW@67..72 "break" + SEMICOLON@72..73 ";" + WHITESPACE@73..74 " " + R_CURLY@74..75 "}" + R_PAREN@75..76 ")" + SEMICOLON@76..77 ";" + WHITESPACE@77..82 "\n " + EXPR_STMT@82..102 + CALL_EXPR@82..101 + PATH_EXPR@82..86 + PATH@82..86 + PATH_SEGMENT@82..86 + NAME_REF@82..86 + IDENT@82..86 "Some" + ARG_LIST@86..101 + L_PAREN@86..87 "(" + WHILE_EXPR@87..100 + WHILE_KW@87..92 "while" + WHITESPACE@92..93 " " + CONDITION@93..97 + LITERAL@93..97 + TRUE_KW@93..97 "true" + WHITESPACE@97..98 " " + BLOCK_EXPR@98..100 + L_CURLY@98..99 "{" + R_CURLY@99..100 "}" + R_PAREN@100..101 ")" + SEMICOLON@101..102 ";" + WHITESPACE@102..103 "\n" + R_CURLY@103..104 "}" + WHITESPACE@104..105 "\n" diff --git a/crates/syntax/test_data/parser/ok/0059_loops_in_parens.rs b/crates/syntax/test_data/parser/ok/0059_loops_in_parens.rs new file mode 100644 index 00000000000..6e8b718aaf9 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0059_loops_in_parens.rs @@ -0,0 +1,5 @@ +fn main() { + Some(for _ in [1].into_iter() {}); + Some(loop { break; }); + Some(while true {}); +} diff --git a/crates/syntax/test_data/parser/ok/0060_as_range.rast b/crates/syntax/test_data/parser/ok/0060_as_range.rast new file mode 100644 index 00000000000..1fd1a288845 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0060_as_range.rast @@ -0,0 +1,55 @@ +SOURCE_FILE@0..56 + FN@0..55 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..55 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + EXPR_STMT@16..30 + RANGE_EXPR@16..29 + CAST_EXPR@16..26 + LITERAL@16..17 + INT_NUMBER@16..17 "0" + WHITESPACE@17..18 " " + AS_KW@18..20 "as" + WHITESPACE@20..21 " " + PATH_TYPE@21..26 + PATH@21..26 + PATH_SEGMENT@21..26 + NAME_REF@21..26 + IDENT@21..26 "usize" + WHITESPACE@26..27 " " + DOT2@27..29 ".." + SEMICOLON@29..30 ";" + WHITESPACE@30..35 "\n " + EXPR_STMT@35..53 + RANGE_EXPR@35..52 + BIN_EXPR@35..49 + LITERAL@35..36 + INT_NUMBER@35..36 "1" + WHITESPACE@36..37 " " + PLUS@37..38 "+" + WHITESPACE@38..39 " " + CAST_EXPR@39..49 + LITERAL@39..40 + INT_NUMBER@39..40 "2" + WHITESPACE@40..41 " " + AS_KW@41..43 "as" + WHITESPACE@43..44 " " + PATH_TYPE@44..49 + PATH@44..49 + PATH_SEGMENT@44..49 + NAME_REF@44..49 + IDENT@44..49 "usize" + WHITESPACE@49..50 " " + DOT2@50..52 ".." + SEMICOLON@52..53 ";" + WHITESPACE@53..54 "\n" + R_CURLY@54..55 "}" + WHITESPACE@55..56 "\n" diff --git a/crates/syntax/test_data/parser/ok/0060_as_range.rs b/crates/syntax/test_data/parser/ok/0060_as_range.rs new file mode 100644 index 00000000000..f063ffadb3d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0060_as_range.rs @@ -0,0 +1,4 @@ +fn main() { + 0 as usize ..; + 1 + 2 as usize ..; +} diff --git a/crates/syntax/test_data/parser/ok/0061_match_full_range.rast b/crates/syntax/test_data/parser/ok/0061_match_full_range.rast new file mode 100644 index 00000000000..ba49c115b5a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0061_match_full_range.rast @@ -0,0 +1,26 @@ +SOURCE_FILE@0..35 + FN@0..34 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..7 + IDENT@3..7 "main" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + BLOCK_EXPR@10..34 + L_CURLY@10..11 "{" + WHITESPACE@11..16 "\n " + MATCH_EXPR@16..32 + MATCH_KW@16..21 "match" + WHITESPACE@21..22 " " + RANGE_EXPR@22..24 + DOT2@22..24 ".." + WHITESPACE@24..25 " " + MATCH_ARM_LIST@25..32 + L_CURLY@25..26 "{" + WHITESPACE@26..31 "\n " + R_CURLY@31..32 "}" + WHITESPACE@32..33 "\n" + R_CURLY@33..34 "}" + WHITESPACE@34..35 "\n" diff --git a/crates/syntax/test_data/parser/ok/0061_match_full_range.rs b/crates/syntax/test_data/parser/ok/0061_match_full_range.rs new file mode 100644 index 00000000000..2c4ed11e1e5 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0061_match_full_range.rs @@ -0,0 +1,4 @@ +fn main() { + match .. { + } +} diff --git a/crates/syntax/test_data/parser/ok/0062_macro_2.0.rast b/crates/syntax/test_data/parser/ok/0062_macro_2.0.rast new file mode 100644 index 00000000000..0c22c31a4f6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0062_macro_2.0.rast @@ -0,0 +1,175 @@ +SOURCE_FILE@0..349 + MACRO_DEF@0..93 + MACRO_KW@0..5 "macro" + WHITESPACE@5..6 " " + NAME@6..21 + IDENT@6..21 "parse_use_trees" + TOKEN_TREE@21..93 + TOKEN_TREE@21..41 + L_PAREN@21..22 "(" + DOLLAR@22..23 "$" + TOKEN_TREE@23..32 + L_PAREN@23..24 "(" + DOLLAR@24..25 "$" + IDENT@25..26 "s" + COLON@26..27 ":" + IDENT@27..31 "expr" + R_PAREN@31..32 ")" + COMMA@32..33 "," + STAR@33..34 "*" + WHITESPACE@34..35 " " + DOLLAR@35..36 "$" + TOKEN_TREE@36..39 + L_PAREN@36..37 "(" + COMMA@37..38 "," + R_PAREN@38..39 ")" + STAR@39..40 "*" + R_PAREN@40..41 ")" + WHITESPACE@41..42 " " + TOKEN_TREE@42..93 + L_CURLY@42..43 "{" + WHITESPACE@43..48 "\n " + IDENT@48..51 "vec" + BANG@51..52 "!" + TOKEN_TREE@52..91 + L_BRACK@52..53 "[" + WHITESPACE@53..62 "\n " + DOLLAR@62..63 "$" + TOKEN_TREE@63..84 + L_PAREN@63..64 "(" + IDENT@64..78 "parse_use_tree" + TOKEN_TREE@78..82 + L_PAREN@78..79 "(" + DOLLAR@79..80 "$" + IDENT@80..81 "s" + R_PAREN@81..82 ")" + COMMA@82..83 "," + R_PAREN@83..84 ")" + STAR@84..85 "*" + WHITESPACE@85..90 "\n " + R_BRACK@90..91 "]" + WHITESPACE@91..92 "\n" + R_CURLY@92..93 "}" + WHITESPACE@93..95 "\n\n" + FN@95..348 + ATTR@95..102 + POUND@95..96 "#" + L_BRACK@96..97 "[" + PATH@97..101 + PATH_SEGMENT@97..101 + NAME_REF@97..101 + IDENT@97..101 "test" + R_BRACK@101..102 "]" + WHITESPACE@102..103 "\n" + FN_KW@103..105 "fn" + WHITESPACE@105..106 " " + NAME@106..125 + IDENT@106..125 "test_use_tree_merge" + PARAM_LIST@125..127 + L_PAREN@125..126 "(" + R_PAREN@126..127 ")" + WHITESPACE@127..128 " " + BLOCK_EXPR@128..348 + L_CURLY@128..129 "{" + WHITESPACE@129..134 "\n " + MACRO_DEF@134..346 + MACRO_KW@134..139 "macro" + WHITESPACE@139..140 " " + NAME@140..150 + IDENT@140..150 "test_merge" + TOKEN_TREE@150..346 + TOKEN_TREE@150..203 + L_PAREN@150..151 "(" + TOKEN_TREE@151..175 + L_BRACK@151..152 "[" + DOLLAR@152..153 "$" + TOKEN_TREE@153..166 + L_PAREN@153..154 "(" + DOLLAR@154..155 "$" + IDENT@155..160 "input" + COLON@160..161 ":" + IDENT@161..165 "expr" + R_PAREN@165..166 ")" + COMMA@166..167 "," + STAR@167..168 "*" + WHITESPACE@168..169 " " + DOLLAR@169..170 "$" + TOKEN_TREE@170..173 + L_PAREN@170..171 "(" + COMMA@171..172 "," + R_PAREN@172..173 ")" + STAR@173..174 "*" + R_BRACK@174..175 "]" + COMMA@175..176 "," + WHITESPACE@176..177 " " + TOKEN_TREE@177..202 + L_BRACK@177..178 "[" + DOLLAR@178..179 "$" + TOKEN_TREE@179..193 + L_PAREN@179..180 "(" + DOLLAR@180..181 "$" + IDENT@181..187 "output" + COLON@187..188 ":" + IDENT@188..192 "expr" + R_PAREN@192..193 ")" + COMMA@193..194 "," + STAR@194..195 "*" + WHITESPACE@195..196 " " + DOLLAR@196..197 "$" + TOKEN_TREE@197..200 + L_PAREN@197..198 "(" + COMMA@198..199 "," + R_PAREN@199..200 ")" + STAR@200..201 "*" + R_BRACK@201..202 "]" + R_PAREN@202..203 ")" + WHITESPACE@203..204 " " + TOKEN_TREE@204..346 + L_CURLY@204..205 "{" + WHITESPACE@205..214 "\n " + IDENT@214..223 "assert_eq" + BANG@223..224 "!" + TOKEN_TREE@224..339 + L_PAREN@224..225 "(" + WHITESPACE@225..238 "\n " + IDENT@238..253 "merge_use_trees" + TOKEN_TREE@253..284 + L_PAREN@253..254 "(" + IDENT@254..269 "parse_use_trees" + BANG@269..270 "!" + TOKEN_TREE@270..283 + L_PAREN@270..271 "(" + DOLLAR@271..272 "$" + TOKEN_TREE@272..281 + L_PAREN@272..273 "(" + DOLLAR@273..274 "$" + IDENT@274..279 "input" + COMMA@279..280 "," + R_PAREN@280..281 ")" + STAR@281..282 "*" + R_PAREN@282..283 ")" + R_PAREN@283..284 ")" + COMMA@284..285 "," + WHITESPACE@285..298 "\n " + IDENT@298..313 "parse_use_trees" + BANG@313..314 "!" + TOKEN_TREE@314..328 + L_PAREN@314..315 "(" + DOLLAR@315..316 "$" + TOKEN_TREE@316..326 + L_PAREN@316..317 "(" + DOLLAR@317..318 "$" + IDENT@318..324 "output" + COMMA@324..325 "," + R_PAREN@325..326 ")" + STAR@326..327 "*" + R_PAREN@327..328 ")" + COMMA@328..329 "," + WHITESPACE@329..338 "\n " + R_PAREN@338..339 ")" + SEMICOLON@339..340 ";" + WHITESPACE@340..345 "\n " + R_CURLY@345..346 "}" + WHITESPACE@346..347 "\n" + R_CURLY@347..348 "}" + WHITESPACE@348..349 "\n" diff --git a/crates/syntax/test_data/parser/ok/0062_macro_2.0.rs b/crates/syntax/test_data/parser/ok/0062_macro_2.0.rs new file mode 100644 index 00000000000..781047ba19a --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0062_macro_2.0.rs @@ -0,0 +1,15 @@ +macro parse_use_trees($($s:expr),* $(,)*) { + vec![ + $(parse_use_tree($s),)* + ] +} + +#[test] +fn test_use_tree_merge() { + macro test_merge([$($input:expr),* $(,)*], [$($output:expr),* $(,)*]) { + assert_eq!( + merge_use_trees(parse_use_trees!($($input,)*)), + parse_use_trees!($($output,)*), + ); + } +} diff --git a/crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rast b/crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rast new file mode 100644 index 00000000000..8eda5997627 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rast @@ -0,0 +1,194 @@ +SOURCE_FILE@0..170 + TRAIT@0..169 + TRAIT_KW@0..5 "trait" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "T" + WHITESPACE@7..8 " " + ASSOC_ITEM_LIST@8..169 + L_CURLY@8..9 "{" + WHITESPACE@9..14 "\n " + FN@14..46 + FN_KW@14..16 "fn" + WHITESPACE@16..17 " " + NAME@17..19 + IDENT@17..19 "f1" + PARAM_LIST@19..43 + L_PAREN@19..20 "(" + PARAM@20..42 + TUPLE_PAT@20..26 + L_PAREN@20..21 "(" + IDENT_PAT@21..22 + NAME@21..22 + IDENT@21..22 "a" + COMMA@22..23 "," + WHITESPACE@23..24 " " + IDENT_PAT@24..25 + NAME@24..25 + IDENT@24..25 "b" + R_PAREN@25..26 ")" + COLON@26..27 ":" + WHITESPACE@27..28 " " + TUPLE_TYPE@28..42 + L_PAREN@28..29 "(" + PATH_TYPE@29..34 + PATH@29..34 + PATH_SEGMENT@29..34 + NAME_REF@29..34 + IDENT@29..34 "usize" + COMMA@34..35 "," + WHITESPACE@35..36 " " + PATH_TYPE@36..41 + PATH@36..41 + PATH_SEGMENT@36..41 + NAME_REF@36..41 + IDENT@36..41 "usize" + R_PAREN@41..42 ")" + R_PAREN@42..43 ")" + WHITESPACE@43..44 " " + BLOCK_EXPR@44..46 + L_CURLY@44..45 "{" + R_CURLY@45..46 "}" + WHITESPACE@46..51 "\n " + FN@51..74 + FN_KW@51..53 "fn" + WHITESPACE@53..54 " " + NAME@54..56 + IDENT@54..56 "f2" + PARAM_LIST@56..71 + L_PAREN@56..57 "(" + PARAM@57..70 + RECORD_PAT@57..67 + PATH@57..58 + PATH_SEGMENT@57..58 + NAME_REF@57..58 + IDENT@57..58 "S" + WHITESPACE@58..59 " " + RECORD_PAT_FIELD_LIST@59..67 + L_CURLY@59..60 "{" + WHITESPACE@60..61 " " + RECORD_PAT_FIELD@61..62 + IDENT_PAT@61..62 + NAME@61..62 + IDENT@61..62 "a" + COMMA@62..63 "," + WHITESPACE@63..64 " " + RECORD_PAT_FIELD@64..65 + IDENT_PAT@64..65 + NAME@64..65 + IDENT@64..65 "b" + WHITESPACE@65..66 " " + R_CURLY@66..67 "}" + COLON@67..68 ":" + WHITESPACE@68..69 " " + PATH_TYPE@69..70 + PATH@69..70 + PATH_SEGMENT@69..70 + NAME_REF@69..70 + IDENT@69..70 "S" + R_PAREN@70..71 ")" + WHITESPACE@71..72 " " + BLOCK_EXPR@72..74 + L_CURLY@72..73 "{" + R_CURLY@73..74 "}" + WHITESPACE@74..79 "\n " + FN@79..108 + FN_KW@79..81 "fn" + WHITESPACE@81..82 " " + NAME@82..84 + IDENT@82..84 "f3" + PARAM_LIST@84..105 + L_PAREN@84..85 "(" + PARAM@85..104 + TUPLE_STRUCT_PAT@85..95 + PATH@85..92 + PATH_SEGMENT@85..92 + NAME_REF@85..92 + IDENT@85..92 "NewType" + L_PAREN@92..93 "(" + IDENT_PAT@93..94 + NAME@93..94 + IDENT@93..94 "a" + R_PAREN@94..95 ")" + COLON@95..96 ":" + WHITESPACE@96..97 " " + PATH_TYPE@97..104 + PATH@97..104 + PATH_SEGMENT@97..104 + NAME_REF@97..104 + IDENT@97..104 "NewType" + R_PAREN@104..105 ")" + WHITESPACE@105..106 " " + BLOCK_EXPR@106..108 + L_CURLY@106..107 "{" + R_CURLY@107..108 "}" + WHITESPACE@108..113 "\n " + FN@113..135 + FN_KW@113..115 "fn" + WHITESPACE@115..116 " " + NAME@116..118 + IDENT@116..118 "f4" + PARAM_LIST@118..132 + L_PAREN@118..119 "(" + PARAM@119..131 + REF_PAT@119..122 + AMP@119..120 "&" + REF_PAT@120..122 + AMP@120..121 "&" + IDENT_PAT@121..122 + NAME@121..122 + IDENT@121..122 "a" + COLON@122..123 ":" + WHITESPACE@123..124 " " + REF_TYPE@124..131 + AMP@124..125 "&" + REF_TYPE@125..131 + AMP@125..126 "&" + PATH_TYPE@126..131 + PATH@126..131 + PATH_SEGMENT@126..131 + NAME_REF@126..131 + IDENT@126..131 "usize" + R_PAREN@131..132 ")" + WHITESPACE@132..133 " " + BLOCK_EXPR@133..135 + L_CURLY@133..134 "{" + R_CURLY@134..135 "}" + WHITESPACE@135..140 "\n " + FN@140..167 + FN_KW@140..142 "fn" + WHITESPACE@142..143 " " + NAME@143..146 + IDENT@143..146 "bar" + PARAM_LIST@146..166 + L_PAREN@146..147 "(" + PARAM@147..153 + WILDCARD_PAT@147..148 + UNDERSCORE@147..148 "_" + COLON@148..149 ":" + WHITESPACE@149..150 " " + PATH_TYPE@150..153 + PATH@150..153 + PATH_SEGMENT@150..153 + NAME_REF@150..153 + IDENT@150..153 "u64" + COMMA@153..154 "," + WHITESPACE@154..155 " " + PARAM@155..165 + IDENT_PAT@155..160 + MUT_KW@155..158 "mut" + WHITESPACE@158..159 " " + NAME@159..160 + IDENT@159..160 "x" + COLON@160..161 ":" + WHITESPACE@161..162 " " + PATH_TYPE@162..165 + PATH@162..165 + PATH_SEGMENT@162..165 + NAME_REF@162..165 + IDENT@162..165 "i32" + R_PAREN@165..166 ")" + SEMICOLON@166..167 ";" + WHITESPACE@167..168 "\n" + R_CURLY@168..169 "}" + WHITESPACE@169..170 "\n" diff --git a/crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rs b/crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rs new file mode 100644 index 00000000000..3b666af8eed --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0063_trait_fn_patterns.rs @@ -0,0 +1,7 @@ +trait T { + fn f1((a, b): (usize, usize)) {} + fn f2(S { a, b }: S) {} + fn f3(NewType(a): NewType) {} + fn f4(&&a: &&usize) {} + fn bar(_: u64, mut x: i32); +} diff --git a/crates/syntax/test_data/parser/ok/0063_variadic_fun.rast b/crates/syntax/test_data/parser/ok/0063_variadic_fun.rast new file mode 100644 index 00000000000..4009b3ff8d2 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0063_variadic_fun.rast @@ -0,0 +1,133 @@ +SOURCE_FILE@0..126 + EXTERN_BLOCK@0..125 + ABI@0..10 + EXTERN_KW@0..6 "extern" + WHITESPACE@6..7 " " + STRING@7..10 "\"C\"" + WHITESPACE@10..11 " " + EXTERN_ITEM_LIST@11..125 + L_CURLY@11..12 "{" + WHITESPACE@12..17 "\n " + FN@17..40 + FN_KW@17..19 "fn" + WHITESPACE@19..20 " " + NAME@20..21 + IDENT@20..21 "a" + PARAM_LIST@21..39 + L_PAREN@21..22 "(" + PARAM@22..32 + WILDCARD_PAT@22..23 + UNDERSCORE@22..23 "_" + COLON@23..24 ":" + WHITESPACE@24..25 " " + PTR_TYPE@25..32 + STAR@25..26 "*" + MUT_KW@26..29 "mut" + WHITESPACE@29..30 " " + PATH_TYPE@30..32 + PATH@30..32 + PATH_SEGMENT@30..32 + NAME_REF@30..32 + IDENT@30..32 "u8" + COMMA@32..33 "," + WHITESPACE@33..34 " " + PARAM@34..37 + DOT3@34..37 "..." + COMMA@37..38 "," + R_PAREN@38..39 ")" + SEMICOLON@39..40 ";" + WHITESPACE@40..45 "\n " + FN@45..70 + FN_KW@45..47 "fn" + WHITESPACE@47..48 " " + NAME@48..49 + IDENT@48..49 "b" + PARAM_LIST@49..69 + L_PAREN@49..50 "(" + PARAM@50..60 + WILDCARD_PAT@50..51 + UNDERSCORE@50..51 "_" + COLON@51..52 ":" + WHITESPACE@52..53 " " + PTR_TYPE@53..60 + STAR@53..54 "*" + MUT_KW@54..57 "mut" + WHITESPACE@57..58 " " + PATH_TYPE@58..60 + PATH@58..60 + PATH_SEGMENT@58..60 + NAME_REF@58..60 + IDENT@58..60 "u8" + COMMA@60..61 "," + WHITESPACE@61..62 " " + PARAM@62..68 + WILDCARD_PAT@62..63 + UNDERSCORE@62..63 "_" + COLON@63..64 ":" + WHITESPACE@64..65 " " + DOT3@65..68 "..." + R_PAREN@68..69 ")" + SEMICOLON@69..70 ";" + WHITESPACE@70..75 "\n " + FN@75..123 + FN_KW@75..77 "fn" + WHITESPACE@77..78 " " + NAME@78..79 + IDENT@78..79 "c" + PARAM_LIST@79..122 + L_PAREN@79..80 "(" + PARAM@80..90 + WILDCARD_PAT@80..81 + UNDERSCORE@80..81 "_" + COLON@81..82 ":" + WHITESPACE@82..83 " " + PTR_TYPE@83..90 + STAR@83..84 "*" + MUT_KW@84..87 "mut" + WHITESPACE@87..88 " " + PATH_TYPE@88..90 + PATH@88..90 + PATH_SEGMENT@88..90 + NAME_REF@88..90 + IDENT@88..90 "u8" + COMMA@90..91 "," + WHITESPACE@91..92 " " + ATTR@92..105 + POUND@92..93 "#" + L_BRACK@93..94 "[" + PATH@94..97 + PATH_SEGMENT@94..97 + NAME_REF@94..97 + IDENT@94..97 "cfg" + TOKEN_TREE@97..104 + L_PAREN@97..98 "(" + IDENT@98..103 "never" + R_PAREN@103..104 ")" + R_BRACK@104..105 "]" + WHITESPACE@105..106 " " + PARAM@106..120 + SLICE_PAT@106..115 + L_BRACK@106..107 "[" + IDENT_PAT@107..108 + NAME@107..108 + IDENT@107..108 "w" + COMMA@108..109 "," + WHITESPACE@109..110 " " + IDENT_PAT@110..111 + NAME@110..111 + IDENT@110..111 "t" + COMMA@111..112 "," + WHITESPACE@112..113 " " + IDENT_PAT@113..114 + NAME@113..114 + IDENT@113..114 "f" + R_BRACK@114..115 "]" + COLON@115..116 ":" + WHITESPACE@116..117 " " + DOT3@117..120 "..." + COMMA@120..121 "," + R_PAREN@121..122 ")" + SEMICOLON@122..123 ";" + WHITESPACE@123..124 "\n" + R_CURLY@124..125 "}" + WHITESPACE@125..126 "\n" diff --git a/crates/syntax/test_data/parser/ok/0063_variadic_fun.rs b/crates/syntax/test_data/parser/ok/0063_variadic_fun.rs new file mode 100644 index 00000000000..a16afbaf386 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0063_variadic_fun.rs @@ -0,0 +1,5 @@ +extern "C" { + fn a(_: *mut u8, ...,); + fn b(_: *mut u8, _: ...); + fn c(_: *mut u8, #[cfg(never)] [w, t, f]: ...,); +} diff --git a/crates/syntax/test_data/parser/ok/0064_impl_fn_params.rast b/crates/syntax/test_data/parser/ok/0064_impl_fn_params.rast new file mode 100644 index 00000000000..a3c6ed82e15 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0064_impl_fn_params.rast @@ -0,0 +1,162 @@ +SOURCE_FILE@0..137 + IMPL@0..136 + IMPL_KW@0..4 "impl" + WHITESPACE@4..5 " " + PATH_TYPE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "U" + WHITESPACE@6..7 " " + ASSOC_ITEM_LIST@7..136 + L_CURLY@7..8 "{" + WHITESPACE@8..13 "\n " + FN@13..45 + FN_KW@13..15 "fn" + WHITESPACE@15..16 " " + NAME@16..18 + IDENT@16..18 "f1" + PARAM_LIST@18..42 + L_PAREN@18..19 "(" + PARAM@19..41 + TUPLE_PAT@19..25 + L_PAREN@19..20 "(" + IDENT_PAT@20..21 + NAME@20..21 + IDENT@20..21 "a" + COMMA@21..22 "," + WHITESPACE@22..23 " " + IDENT_PAT@23..24 + NAME@23..24 + IDENT@23..24 "b" + R_PAREN@24..25 ")" + COLON@25..26 ":" + WHITESPACE@26..27 " " + TUPLE_TYPE@27..41 + L_PAREN@27..28 "(" + PATH_TYPE@28..33 + PATH@28..33 + PATH_SEGMENT@28..33 + NAME_REF@28..33 + IDENT@28..33 "usize" + COMMA@33..34 "," + WHITESPACE@34..35 " " + PATH_TYPE@35..40 + PATH@35..40 + PATH_SEGMENT@35..40 + NAME_REF@35..40 + IDENT@35..40 "usize" + R_PAREN@40..41 ")" + R_PAREN@41..42 ")" + WHITESPACE@42..43 " " + BLOCK_EXPR@43..45 + L_CURLY@43..44 "{" + R_CURLY@44..45 "}" + WHITESPACE@45..50 "\n " + FN@50..73 + FN_KW@50..52 "fn" + WHITESPACE@52..53 " " + NAME@53..55 + IDENT@53..55 "f2" + PARAM_LIST@55..70 + L_PAREN@55..56 "(" + PARAM@56..69 + RECORD_PAT@56..66 + PATH@56..57 + PATH_SEGMENT@56..57 + NAME_REF@56..57 + IDENT@56..57 "S" + WHITESPACE@57..58 " " + RECORD_PAT_FIELD_LIST@58..66 + L_CURLY@58..59 "{" + WHITESPACE@59..60 " " + RECORD_PAT_FIELD@60..61 + IDENT_PAT@60..61 + NAME@60..61 + IDENT@60..61 "a" + COMMA@61..62 "," + WHITESPACE@62..63 " " + RECORD_PAT_FIELD@63..64 + IDENT_PAT@63..64 + NAME@63..64 + IDENT@63..64 "b" + WHITESPACE@64..65 " " + R_CURLY@65..66 "}" + COLON@66..67 ":" + WHITESPACE@67..68 " " + PATH_TYPE@68..69 + PATH@68..69 + PATH_SEGMENT@68..69 + NAME_REF@68..69 + IDENT@68..69 "S" + R_PAREN@69..70 ")" + WHITESPACE@70..71 " " + BLOCK_EXPR@71..73 + L_CURLY@71..72 "{" + R_CURLY@72..73 "}" + WHITESPACE@73..78 "\n " + FN@78..107 + FN_KW@78..80 "fn" + WHITESPACE@80..81 " " + NAME@81..83 + IDENT@81..83 "f3" + PARAM_LIST@83..104 + L_PAREN@83..84 "(" + PARAM@84..103 + TUPLE_STRUCT_PAT@84..94 + PATH@84..91 + PATH_SEGMENT@84..91 + NAME_REF@84..91 + IDENT@84..91 "NewType" + L_PAREN@91..92 "(" + IDENT_PAT@92..93 + NAME@92..93 + IDENT@92..93 "a" + R_PAREN@93..94 ")" + COLON@94..95 ":" + WHITESPACE@95..96 " " + PATH_TYPE@96..103 + PATH@96..103 + PATH_SEGMENT@96..103 + NAME_REF@96..103 + IDENT@96..103 "NewType" + R_PAREN@103..104 ")" + WHITESPACE@104..105 " " + BLOCK_EXPR@105..107 + L_CURLY@105..106 "{" + R_CURLY@106..107 "}" + WHITESPACE@107..112 "\n " + FN@112..134 + FN_KW@112..114 "fn" + WHITESPACE@114..115 " " + NAME@115..117 + IDENT@115..117 "f4" + PARAM_LIST@117..131 + L_PAREN@117..118 "(" + PARAM@118..130 + REF_PAT@118..121 + AMP@118..119 "&" + REF_PAT@119..121 + AMP@119..120 "&" + IDENT_PAT@120..121 + NAME@120..121 + IDENT@120..121 "a" + COLON@121..122 ":" + WHITESPACE@122..123 " " + REF_TYPE@123..130 + AMP@123..124 "&" + REF_TYPE@124..130 + AMP@124..125 "&" + PATH_TYPE@125..130 + PATH@125..130 + PATH_SEGMENT@125..130 + NAME_REF@125..130 + IDENT@125..130 "usize" + R_PAREN@130..131 ")" + WHITESPACE@131..132 " " + BLOCK_EXPR@132..134 + L_CURLY@132..133 "{" + R_CURLY@133..134 "}" + WHITESPACE@134..135 "\n" + R_CURLY@135..136 "}" + WHITESPACE@136..137 "\n" diff --git a/crates/syntax/test_data/parser/ok/0064_impl_fn_params.rs b/crates/syntax/test_data/parser/ok/0064_impl_fn_params.rs new file mode 100644 index 00000000000..b49e872d79d --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0064_impl_fn_params.rs @@ -0,0 +1,6 @@ +impl U { + fn f1((a, b): (usize, usize)) {} + fn f2(S { a, b }: S) {} + fn f3(NewType(a): NewType) {} + fn f4(&&a: &&usize) {} +} diff --git a/crates/syntax/test_data/parser/ok/0065_comment_newline.rast b/crates/syntax/test_data/parser/ok/0065_comment_newline.rast new file mode 100644 index 00000000000..29bd38c051f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0065_comment_newline.rast @@ -0,0 +1,16 @@ +SOURCE_FILE@0..26 + FN@0..25 + COMMENT@0..11 "/// Example" + WHITESPACE@11..13 "\n\n" + FN_KW@13..15 "fn" + WHITESPACE@15..16 " " + NAME@16..20 + IDENT@16..20 "test" + PARAM_LIST@20..22 + L_PAREN@20..21 "(" + R_PAREN@21..22 ")" + WHITESPACE@22..23 " " + BLOCK_EXPR@23..25 + L_CURLY@23..24 "{" + R_CURLY@24..25 "}" + WHITESPACE@25..26 "\n" diff --git a/crates/syntax/test_data/parser/ok/0065_comment_newline.rs b/crates/syntax/test_data/parser/ok/0065_comment_newline.rs new file mode 100644 index 00000000000..1fafe216b6e --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0065_comment_newline.rs @@ -0,0 +1,3 @@ +/// Example + +fn test() {} diff --git a/crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast b/crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast new file mode 100644 index 00000000000..2c699ffcb6f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast @@ -0,0 +1,60 @@ +SOURCE_FILE@0..40 + FN@0..39 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..4 + IDENT@3..4 "f" + GENERIC_PARAM_LIST@4..7 + L_ANGLE@4..5 "<" + TYPE_PARAM@5..6 + NAME@5..6 + IDENT@5..6 "T" + R_ANGLE@6..7 ">" + PARAM_LIST@7..9 + L_PAREN@7..8 "(" + R_PAREN@8..9 ")" + WHITESPACE@9..10 " " + WHERE_CLAUSE@10..36 + WHERE_KW@10..15 "where" + WHITESPACE@15..16 " " + WHERE_PRED@16..36 + PATH_TYPE@16..17 + PATH@16..17 + PATH_SEGMENT@16..17 + NAME_REF@16..17 + IDENT@16..17 "T" + COLON@17..18 ":" + WHITESPACE@18..19 " " + TYPE_BOUND_LIST@19..36 + TYPE_BOUND@19..29 + PATH_TYPE@19..29 + PATH@19..29 + PATH_SEGMENT@19..29 + NAME_REF@19..21 + IDENT@19..21 "Fn" + PARAM_LIST@21..23 + L_PAREN@21..22 "(" + R_PAREN@22..23 ")" + WHITESPACE@23..24 " " + RET_TYPE@24..29 + THIN_ARROW@24..26 "->" + WHITESPACE@26..27 " " + PATH_TYPE@27..29 + PATH@27..29 + PATH_SEGMENT@27..29 + NAME_REF@27..29 + IDENT@27..29 "u8" + WHITESPACE@29..30 " " + PLUS@30..31 "+" + WHITESPACE@31..32 " " + TYPE_BOUND@32..36 + PATH_TYPE@32..36 + PATH@32..36 + PATH_SEGMENT@32..36 + NAME_REF@32..36 + IDENT@32..36 "Send" + WHITESPACE@36..37 " " + BLOCK_EXPR@37..39 + L_CURLY@37..38 "{" + R_CURLY@38..39 "}" + WHITESPACE@39..40 "\n" diff --git a/crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rs b/crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rs new file mode 100644 index 00000000000..29f3655e013 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rs @@ -0,0 +1 @@ +fn f() where T: Fn() -> u8 + Send {} diff --git a/crates/syntax/test_data/parser/ok/0066_default_modifier.rast b/crates/syntax/test_data/parser/ok/0066_default_modifier.rast new file mode 100644 index 00000000000..e9b57ec3b3f --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0066_default_modifier.rast @@ -0,0 +1,218 @@ +SOURCE_FILE@0..294 + TRAIT@0..113 + TRAIT_KW@0..5 "trait" + WHITESPACE@5..6 " " + NAME@6..7 + IDENT@6..7 "T" + WHITESPACE@7..8 " " + ASSOC_ITEM_LIST@8..113 + L_CURLY@8..9 "{" + WHITESPACE@9..12 "\n " + TYPE_ALIAS@12..33 + DEFAULT_KW@12..19 "default" + WHITESPACE@19..20 " " + TYPE_KW@20..24 "type" + WHITESPACE@24..25 " " + NAME@25..26 + IDENT@25..26 "T" + WHITESPACE@26..27 " " + EQ@27..28 "=" + WHITESPACE@28..29 " " + PATH_TYPE@29..32 + PATH@29..32 + PATH_SEGMENT@29..32 + NAME_REF@29..32 + IDENT@29..32 "Bar" + SEMICOLON@32..33 ";" + WHITESPACE@33..36 "\n " + CONST@36..60 + DEFAULT_KW@36..43 "default" + WHITESPACE@43..44 " " + CONST_KW@44..49 "const" + WHITESPACE@49..50 " " + NAME@50..51 + IDENT@50..51 "f" + COLON@51..52 ":" + WHITESPACE@52..53 " " + PATH_TYPE@53..55 + PATH@53..55 + PATH_SEGMENT@53..55 + NAME_REF@53..55 + IDENT@53..55 "u8" + WHITESPACE@55..56 " " + EQ@56..57 "=" + WHITESPACE@57..58 " " + LITERAL@58..59 + INT_NUMBER@58..59 "0" + SEMICOLON@59..60 ";" + WHITESPACE@60..63 "\n " + FN@63..82 + DEFAULT_KW@63..70 "default" + WHITESPACE@70..71 " " + FN_KW@71..73 "fn" + WHITESPACE@73..74 " " + NAME@74..77 + IDENT@74..77 "foo" + PARAM_LIST@77..79 + L_PAREN@77..78 "(" + R_PAREN@78..79 ")" + WHITESPACE@79..80 " " + BLOCK_EXPR@80..82 + L_CURLY@80..81 "{" + R_CURLY@81..82 "}" + WHITESPACE@82..85 "\n " + FN@85..111 + DEFAULT_KW@85..92 "default" + WHITESPACE@92..93 " " + UNSAFE_KW@93..99 "unsafe" + WHITESPACE@99..100 " " + FN_KW@100..102 "fn" + WHITESPACE@102..103 " " + NAME@103..106 + IDENT@103..106 "bar" + PARAM_LIST@106..108 + L_PAREN@106..107 "(" + R_PAREN@107..108 ")" + WHITESPACE@108..109 " " + BLOCK_EXPR@109..111 + L_CURLY@109..110 "{" + R_CURLY@110..111 "}" + WHITESPACE@111..112 "\n" + R_CURLY@112..113 "}" + WHITESPACE@113..115 "\n\n" + IMPL@115..235 + IMPL_KW@115..119 "impl" + WHITESPACE@119..120 " " + PATH_TYPE@120..121 + PATH@120..121 + PATH_SEGMENT@120..121 + NAME_REF@120..121 + IDENT@120..121 "T" + WHITESPACE@121..122 " " + FOR_KW@122..125 "for" + WHITESPACE@125..126 " " + PATH_TYPE@126..129 + PATH@126..129 + PATH_SEGMENT@126..129 + NAME_REF@126..129 + IDENT@126..129 "Foo" + WHITESPACE@129..130 " " + ASSOC_ITEM_LIST@130..235 + L_CURLY@130..131 "{" + WHITESPACE@131..134 "\n " + TYPE_ALIAS@134..155 + DEFAULT_KW@134..141 "default" + WHITESPACE@141..142 " " + TYPE_KW@142..146 "type" + WHITESPACE@146..147 " " + NAME@147..148 + IDENT@147..148 "T" + WHITESPACE@148..149 " " + EQ@149..150 "=" + WHITESPACE@150..151 " " + PATH_TYPE@151..154 + PATH@151..154 + PATH_SEGMENT@151..154 + NAME_REF@151..154 + IDENT@151..154 "Bar" + SEMICOLON@154..155 ";" + WHITESPACE@155..158 "\n " + CONST@158..182 + DEFAULT_KW@158..165 "default" + WHITESPACE@165..166 " " + CONST_KW@166..171 "const" + WHITESPACE@171..172 " " + NAME@172..173 + IDENT@172..173 "f" + COLON@173..174 ":" + WHITESPACE@174..175 " " + PATH_TYPE@175..177 + PATH@175..177 + PATH_SEGMENT@175..177 + NAME_REF@175..177 + IDENT@175..177 "u8" + WHITESPACE@177..178 " " + EQ@178..179 "=" + WHITESPACE@179..180 " " + LITERAL@180..181 + INT_NUMBER@180..181 "0" + SEMICOLON@181..182 ";" + WHITESPACE@182..185 "\n " + FN@185..204 + DEFAULT_KW@185..192 "default" + WHITESPACE@192..193 " " + FN_KW@193..195 "fn" + WHITESPACE@195..196 " " + NAME@196..199 + IDENT@196..199 "foo" + PARAM_LIST@199..201 + L_PAREN@199..200 "(" + R_PAREN@200..201 ")" + WHITESPACE@201..202 " " + BLOCK_EXPR@202..204 + L_CURLY@202..203 "{" + R_CURLY@203..204 "}" + WHITESPACE@204..207 "\n " + FN@207..233 + DEFAULT_KW@207..214 "default" + WHITESPACE@214..215 " " + UNSAFE_KW@215..221 "unsafe" + WHITESPACE@221..222 " " + FN_KW@222..224 "fn" + WHITESPACE@224..225 " " + NAME@225..228 + IDENT@225..228 "bar" + PARAM_LIST@228..230 + L_PAREN@228..229 "(" + R_PAREN@229..230 ")" + WHITESPACE@230..231 " " + BLOCK_EXPR@231..233 + L_CURLY@231..232 "{" + R_CURLY@232..233 "}" + WHITESPACE@233..234 "\n" + R_CURLY@234..235 "}" + WHITESPACE@235..237 "\n\n" + IMPL@237..261 + DEFAULT_KW@237..244 "default" + WHITESPACE@244..245 " " + IMPL_KW@245..249 "impl" + WHITESPACE@249..250 " " + PATH_TYPE@250..251 + PATH@250..251 + PATH_SEGMENT@250..251 + NAME_REF@250..251 + IDENT@250..251 "T" + WHITESPACE@251..252 " " + FOR_KW@252..255 "for" + WHITESPACE@255..256 " " + TUPLE_TYPE@256..258 + L_PAREN@256..257 "(" + R_PAREN@257..258 ")" + WHITESPACE@258..259 " " + ASSOC_ITEM_LIST@259..261 + L_CURLY@259..260 "{" + R_CURLY@260..261 "}" + WHITESPACE@261..262 "\n" + IMPL@262..293 + DEFAULT_KW@262..269 "default" + WHITESPACE@269..270 " " + UNSAFE_KW@270..276 "unsafe" + WHITESPACE@276..277 " " + IMPL_KW@277..281 "impl" + WHITESPACE@281..282 " " + PATH_TYPE@282..283 + PATH@282..283 + PATH_SEGMENT@282..283 + NAME_REF@282..283 + IDENT@282..283 "T" + WHITESPACE@283..284 " " + FOR_KW@284..287 "for" + WHITESPACE@287..288 " " + TUPLE_TYPE@288..290 + L_PAREN@288..289 "(" + R_PAREN@289..290 ")" + WHITESPACE@290..291 " " + ASSOC_ITEM_LIST@291..293 + L_CURLY@291..292 "{" + R_CURLY@292..293 "}" + WHITESPACE@293..294 "\n" diff --git a/crates/syntax/test_data/parser/ok/0066_default_modifier.rs b/crates/syntax/test_data/parser/ok/0066_default_modifier.rs new file mode 100644 index 00000000000..e443e3495e3 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0066_default_modifier.rs @@ -0,0 +1,16 @@ +trait T { + default type T = Bar; + default const f: u8 = 0; + default fn foo() {} + default unsafe fn bar() {} +} + +impl T for Foo { + default type T = Bar; + default const f: u8 = 0; + default fn foo() {} + default unsafe fn bar() {} +} + +default impl T for () {} +default unsafe impl T for () {} diff --git a/crates/syntax/test_data/parser/ok/0067_where_for_pred.rast b/crates/syntax/test_data/parser/ok/0067_where_for_pred.rast new file mode 100644 index 00000000000..8f8639a375b --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0067_where_for_pred.rast @@ -0,0 +1,392 @@ +SOURCE_FILE@0..374 + FN@0..55 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..12 + IDENT@3..12 "for_trait" + GENERIC_PARAM_LIST@12..15 + L_ANGLE@12..13 "<" + TYPE_PARAM@13..14 + NAME@13..14 + IDENT@13..14 "F" + R_ANGLE@14..15 ">" + PARAM_LIST@15..17 + L_PAREN@15..16 "(" + R_PAREN@16..17 ")" + WHITESPACE@17..18 "\n" + WHERE_CLAUSE@18..51 + WHERE_KW@18..23 "where" + WHITESPACE@23..28 "\n " + WHERE_PRED@28..50 + FOR_KW@28..31 "for" + GENERIC_PARAM_LIST@31..35 + L_ANGLE@31..32 "<" + LIFETIME_PARAM@32..34 + LIFETIME@32..34 "\'a" + R_ANGLE@34..35 ">" + WHITESPACE@35..36 " " + PATH_TYPE@36..37 + PATH@36..37 + PATH_SEGMENT@36..37 + NAME_REF@36..37 + IDENT@36..37 "F" + COLON@37..38 ":" + WHITESPACE@38..39 " " + TYPE_BOUND_LIST@39..50 + TYPE_BOUND@39..50 + PATH_TYPE@39..50 + PATH@39..50 + PATH_SEGMENT@39..50 + NAME_REF@39..41 + IDENT@39..41 "Fn" + PARAM_LIST@41..50 + L_PAREN@41..42 "(" + PARAM@42..49 + REF_TYPE@42..49 + AMP@42..43 "&" + LIFETIME@43..45 "\'a" + WHITESPACE@45..46 " " + PATH_TYPE@46..49 + PATH@46..49 + PATH_SEGMENT@46..49 + NAME_REF@46..49 + IDENT@46..49 "str" + R_PAREN@49..50 ")" + COMMA@50..51 "," + WHITESPACE@51..52 "\n" + BLOCK_EXPR@52..55 + L_CURLY@52..53 "{" + WHITESPACE@53..54 "\n" + R_CURLY@54..55 "}" + WHITESPACE@55..56 "\n" + FN@56..107 + FN_KW@56..58 "fn" + WHITESPACE@58..59 " " + NAME@59..66 + IDENT@59..66 "for_ref" + GENERIC_PARAM_LIST@66..69 + L_ANGLE@66..67 "<" + TYPE_PARAM@67..68 + NAME@67..68 + IDENT@67..68 "F" + R_ANGLE@68..69 ">" + PARAM_LIST@69..71 + L_PAREN@69..70 "(" + R_PAREN@70..71 ")" + WHITESPACE@71..72 "\n" + WHERE_CLAUSE@72..103 + WHERE_KW@72..77 "where" + WHITESPACE@77..82 "\n " + WHERE_PRED@82..102 + FOR_KW@82..85 "for" + GENERIC_PARAM_LIST@85..89 + L_ANGLE@85..86 "<" + LIFETIME_PARAM@86..88 + LIFETIME@86..88 "\'a" + R_ANGLE@88..89 ">" + WHITESPACE@89..90 " " + REF_TYPE@90..95 + AMP@90..91 "&" + LIFETIME@91..93 "\'a" + WHITESPACE@93..94 " " + PATH_TYPE@94..95 + PATH@94..95 + PATH_SEGMENT@94..95 + NAME_REF@94..95 + IDENT@94..95 "F" + COLON@95..96 ":" + WHITESPACE@96..97 " " + TYPE_BOUND_LIST@97..102 + TYPE_BOUND@97..102 + PATH_TYPE@97..102 + PATH@97..102 + PATH_SEGMENT@97..102 + NAME_REF@97..102 + IDENT@97..102 "Debug" + COMMA@102..103 "," + WHITESPACE@103..104 "\n" + BLOCK_EXPR@104..107 + L_CURLY@104..105 "{" + WHITESPACE@105..106 "\n" + R_CURLY@106..107 "}" + WHITESPACE@107..108 "\n" + FN@108..170 + FN_KW@108..110 "fn" + WHITESPACE@110..111 " " + NAME@111..121 + IDENT@111..121 "for_parens" + GENERIC_PARAM_LIST@121..124 + L_ANGLE@121..122 "<" + TYPE_PARAM@122..123 + NAME@122..123 + IDENT@122..123 "F" + R_ANGLE@123..124 ">" + PARAM_LIST@124..126 + L_PAREN@124..125 "(" + R_PAREN@125..126 ")" + WHITESPACE@126..127 "\n" + WHERE_CLAUSE@127..166 + WHERE_KW@127..132 "where" + WHITESPACE@132..137 "\n " + WHERE_PRED@137..165 + FOR_KW@137..140 "for" + GENERIC_PARAM_LIST@140..144 + L_ANGLE@140..141 "<" + LIFETIME_PARAM@141..143 + LIFETIME@141..143 "\'a" + R_ANGLE@143..144 ">" + WHITESPACE@144..145 " " + PAREN_TYPE@145..152 + L_PAREN@145..146 "(" + REF_TYPE@146..151 + AMP@146..147 "&" + LIFETIME@147..149 "\'a" + WHITESPACE@149..150 " " + PATH_TYPE@150..151 + PATH@150..151 + PATH_SEGMENT@150..151 + NAME_REF@150..151 + IDENT@150..151 "F" + R_PAREN@151..152 ")" + COLON@152..153 ":" + WHITESPACE@153..154 " " + TYPE_BOUND_LIST@154..165 + TYPE_BOUND@154..165 + PATH_TYPE@154..165 + PATH@154..165 + PATH_SEGMENT@154..165 + NAME_REF@154..156 + IDENT@154..156 "Fn" + PARAM_LIST@156..165 + L_PAREN@156..157 "(" + PARAM@157..164 + REF_TYPE@157..164 + AMP@157..158 "&" + LIFETIME@158..160 "\'a" + WHITESPACE@160..161 " " + PATH_TYPE@161..164 + PATH@161..164 + PATH_SEGMENT@161..164 + NAME_REF@161..164 + IDENT@161..164 "str" + R_PAREN@164..165 ")" + COMMA@165..166 "," + WHITESPACE@166..167 "\n" + BLOCK_EXPR@167..170 + L_CURLY@167..168 "{" + WHITESPACE@168..169 "\n" + R_CURLY@169..170 "}" + WHITESPACE@170..171 "\n" + FN@171..223 + FN_KW@171..173 "fn" + WHITESPACE@173..174 " " + NAME@174..183 + IDENT@174..183 "for_slice" + GENERIC_PARAM_LIST@183..186 + L_ANGLE@183..184 "<" + TYPE_PARAM@184..185 + NAME@184..185 + IDENT@184..185 "F" + R_ANGLE@185..186 ">" + PARAM_LIST@186..188 + L_PAREN@186..187 "(" + R_PAREN@187..188 ")" + WHITESPACE@188..189 "\n" + WHERE_CLAUSE@189..219 + WHERE_KW@189..194 "where" + WHITESPACE@194..199 "\n " + WHERE_PRED@199..218 + FOR_KW@199..202 "for" + GENERIC_PARAM_LIST@202..206 + L_ANGLE@202..203 "<" + LIFETIME_PARAM@203..205 + LIFETIME@203..205 "\'a" + R_ANGLE@205..206 ">" + WHITESPACE@206..207 " " + SLICE_TYPE@207..214 + L_BRACK@207..208 "[" + REF_TYPE@208..213 + AMP@208..209 "&" + LIFETIME@209..211 "\'a" + WHITESPACE@211..212 " " + PATH_TYPE@212..213 + PATH@212..213 + PATH_SEGMENT@212..213 + NAME_REF@212..213 + IDENT@212..213 "F" + R_BRACK@213..214 "]" + COLON@214..215 ":" + WHITESPACE@215..216 " " + TYPE_BOUND_LIST@216..218 + TYPE_BOUND@216..218 + PATH_TYPE@216..218 + PATH@216..218 + PATH_SEGMENT@216..218 + NAME_REF@216..218 + IDENT@216..218 "Eq" + COMMA@218..219 "," + WHITESPACE@219..220 "\n" + BLOCK_EXPR@220..223 + L_CURLY@220..221 "{" + WHITESPACE@221..222 "\n" + R_CURLY@222..223 "}" + WHITESPACE@223..224 "\n" + FN@224..300 + FN_KW@224..226 "fn" + WHITESPACE@226..227 " " + NAME@227..236 + IDENT@227..236 "for_qpath" + GENERIC_PARAM_LIST@236..239 + L_ANGLE@236..237 "<" + TYPE_PARAM@237..238 + NAME@237..238 + IDENT@237..238 "T" + R_ANGLE@238..239 ">" + PARAM_LIST@239..247 + L_PAREN@239..240 "(" + PARAM@240..246 + IDENT_PAT@240..242 + NAME@240..242 + IDENT@240..242 "_t" + COLON@242..243 ":" + WHITESPACE@243..244 " " + REF_TYPE@244..246 + AMP@244..245 "&" + PATH_TYPE@245..246 + PATH@245..246 + PATH_SEGMENT@245..246 + NAME_REF@245..246 + IDENT@245..246 "T" + R_PAREN@246..247 ")" + WHITESPACE@247..248 "\n" + WHERE_CLAUSE@248..296 + WHERE_KW@248..253 "where" + WHITESPACE@253..258 "\n " + WHERE_PRED@258..295 + FOR_KW@258..261 "for" + GENERIC_PARAM_LIST@261..265 + L_ANGLE@261..262 "<" + LIFETIME_PARAM@262..264 + LIFETIME@262..264 "\'a" + R_ANGLE@264..265 ">" + WHITESPACE@265..266 " " + PATH_TYPE@266..285 + PATH@266..285 + PATH@266..280 + PATH_SEGMENT@266..280 + L_ANGLE@266..267 "<" + REF_TYPE@267..272 + AMP@267..268 "&" + LIFETIME@268..270 "\'a" + WHITESPACE@270..271 " " + PATH_TYPE@271..272 + PATH@271..272 + PATH_SEGMENT@271..272 + NAME_REF@271..272 + IDENT@271..272 "T" + WHITESPACE@272..273 " " + AS_KW@273..275 "as" + WHITESPACE@275..276 " " + PATH_TYPE@276..279 + PATH@276..279 + PATH_SEGMENT@276..279 + NAME_REF@276..279 + IDENT@276..279 "Baz" + R_ANGLE@279..280 ">" + COLON2@280..282 "::" + PATH_SEGMENT@282..285 + NAME_REF@282..285 + IDENT@282..285 "Foo" + COLON@285..286 ":" + WHITESPACE@286..287 " " + TYPE_BOUND_LIST@287..295 + TYPE_BOUND@287..295 + PATH_TYPE@287..295 + PATH@287..295 + PATH_SEGMENT@287..295 + NAME_REF@287..295 + IDENT@287..295 "Iterator" + COMMA@295..296 "," + WHITESPACE@296..297 "\n" + BLOCK_EXPR@297..300 + L_CURLY@297..298 "{" + WHITESPACE@298..299 "\n" + R_CURLY@299..300 "}" + WHITESPACE@300..301 "\n" + FN@301..373 + FN_KW@301..303 "fn" + WHITESPACE@303..304 " " + NAME@304..314 + IDENT@304..314 "for_for_fn" + GENERIC_PARAM_LIST@314..317 + L_ANGLE@314..315 "<" + TYPE_PARAM@315..316 + NAME@315..316 + IDENT@315..316 "T" + R_ANGLE@316..317 ">" + PARAM_LIST@317..319 + L_PAREN@317..318 "(" + R_PAREN@318..319 ")" + WHITESPACE@319..320 "\n" + WHERE_CLAUSE@320..369 + WHERE_KW@320..325 "where" + WHITESPACE@325..330 "\n " + WHERE_PRED@330..368 + FOR_KW@330..333 "for" + GENERIC_PARAM_LIST@333..337 + L_ANGLE@333..334 "<" + LIFETIME_PARAM@334..336 + LIFETIME@334..336 "\'a" + R_ANGLE@336..337 ">" + WHITESPACE@337..338 " " + FOR_TYPE@338..362 + FOR_KW@338..341 "for" + GENERIC_PARAM_LIST@341..345 + L_ANGLE@341..342 "<" + LIFETIME_PARAM@342..344 + LIFETIME@342..344 "\'b" + R_ANGLE@344..345 ">" + WHITESPACE@345..346 " " + FN_PTR_TYPE@346..362 + FN_KW@346..348 "fn" + PARAM_LIST@348..362 + L_PAREN@348..349 "(" + PARAM@349..354 + REF_TYPE@349..354 + AMP@349..350 "&" + LIFETIME@350..352 "\'a" + WHITESPACE@352..353 " " + PATH_TYPE@353..354 + PATH@353..354 + PATH_SEGMENT@353..354 + NAME_REF@353..354 + IDENT@353..354 "T" + COMMA@354..355 "," + WHITESPACE@355..356 " " + PARAM@356..361 + REF_TYPE@356..361 + AMP@356..357 "&" + LIFETIME@357..359 "\'b" + WHITESPACE@359..360 " " + PATH_TYPE@360..361 + PATH@360..361 + PATH_SEGMENT@360..361 + NAME_REF@360..361 + IDENT@360..361 "T" + R_PAREN@361..362 ")" + COLON@362..363 ":" + WHITESPACE@363..364 " " + TYPE_BOUND_LIST@364..368 + TYPE_BOUND@364..368 + PATH_TYPE@364..368 + PATH@364..368 + PATH_SEGMENT@364..368 + NAME_REF@364..368 + IDENT@364..368 "Copy" + COMMA@368..369 "," + WHITESPACE@369..370 "\n" + BLOCK_EXPR@370..373 + L_CURLY@370..371 "{" + WHITESPACE@371..372 "\n" + R_CURLY@372..373 "}" + WHITESPACE@373..374 "\n" diff --git a/crates/syntax/test_data/parser/ok/0067_where_for_pred.rs b/crates/syntax/test_data/parser/ok/0067_where_for_pred.rs new file mode 100644 index 00000000000..9058c46190c --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0067_where_for_pred.rs @@ -0,0 +1,30 @@ +fn for_trait() +where + for<'a> F: Fn(&'a str), +{ +} +fn for_ref() +where + for<'a> &'a F: Debug, +{ +} +fn for_parens() +where + for<'a> (&'a F): Fn(&'a str), +{ +} +fn for_slice() +where + for<'a> [&'a F]: Eq, +{ +} +fn for_qpath(_t: &T) +where + for<'a> <&'a T as Baz>::Foo: Iterator, +{ +} +fn for_for_fn() +where + for<'a> for<'b> fn(&'a T, &'b T): Copy, +{ +} diff --git a/crates/syntax/test_data/parser/ok/0068_item_modifiers.rast b/crates/syntax/test_data/parser/ok/0068_item_modifiers.rast new file mode 100644 index 00000000000..50a6d8ee9a6 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0068_item_modifiers.rast @@ -0,0 +1,218 @@ +SOURCE_FILE@0..304 + FN@0..17 + ASYNC_KW@0..5 "async" + WHITESPACE@5..6 " " + FN_KW@6..8 "fn" + WHITESPACE@8..9 " " + NAME@9..12 + IDENT@9..12 "foo" + PARAM_LIST@12..14 + L_PAREN@12..13 "(" + R_PAREN@13..14 ")" + WHITESPACE@14..15 " " + BLOCK_EXPR@15..17 + L_CURLY@15..16 "{" + R_CURLY@16..17 "}" + WHITESPACE@17..18 "\n" + FN@18..36 + ABI@18..24 + EXTERN_KW@18..24 "extern" + WHITESPACE@24..25 " " + FN_KW@25..27 "fn" + WHITESPACE@27..28 " " + NAME@28..31 + IDENT@28..31 "foo" + PARAM_LIST@31..33 + L_PAREN@31..32 "(" + R_PAREN@32..33 ")" + WHITESPACE@33..34 " " + BLOCK_EXPR@34..36 + L_CURLY@34..35 "{" + R_CURLY@35..36 "}" + WHITESPACE@36..37 "\n" + FN@37..54 + CONST_KW@37..42 "const" + WHITESPACE@42..43 " " + FN_KW@43..45 "fn" + WHITESPACE@45..46 " " + NAME@46..49 + IDENT@46..49 "foo" + PARAM_LIST@49..51 + L_PAREN@49..50 "(" + R_PAREN@50..51 ")" + WHITESPACE@51..52 " " + BLOCK_EXPR@52..54 + L_CURLY@52..53 "{" + R_CURLY@53..54 "}" + WHITESPACE@54..55 "\n" + FN@55..79 + CONST_KW@55..60 "const" + WHITESPACE@60..61 " " + UNSAFE_KW@61..67 "unsafe" + WHITESPACE@67..68 " " + FN_KW@68..70 "fn" + WHITESPACE@70..71 " " + NAME@71..74 + IDENT@71..74 "foo" + PARAM_LIST@74..76 + L_PAREN@74..75 "(" + R_PAREN@75..76 ")" + WHITESPACE@76..77 " " + BLOCK_EXPR@77..79 + L_CURLY@77..78 "{" + R_CURLY@78..79 "}" + WHITESPACE@79..80 "\n" + FN@80..109 + UNSAFE_KW@80..86 "unsafe" + WHITESPACE@86..87 " " + ABI@87..97 + EXTERN_KW@87..93 "extern" + WHITESPACE@93..94 " " + STRING@94..97 "\"C\"" + WHITESPACE@97..98 " " + FN_KW@98..100 "fn" + WHITESPACE@100..101 " " + NAME@101..104 + IDENT@101..104 "foo" + PARAM_LIST@104..106 + L_PAREN@104..105 "(" + R_PAREN@105..106 ")" + WHITESPACE@106..107 " " + BLOCK_EXPR@107..109 + L_CURLY@107..108 "{" + R_CURLY@108..109 "}" + WHITESPACE@109..110 "\n" + FN@110..128 + UNSAFE_KW@110..116 "unsafe" + WHITESPACE@116..117 " " + FN_KW@117..119 "fn" + WHITESPACE@119..120 " " + NAME@120..123 + IDENT@120..123 "foo" + PARAM_LIST@123..125 + L_PAREN@123..124 "(" + R_PAREN@124..125 ")" + WHITESPACE@125..126 " " + BLOCK_EXPR@126..128 + L_CURLY@126..127 "{" + R_CURLY@127..128 "}" + WHITESPACE@128..129 "\n" + FN@129..153 + ASYNC_KW@129..134 "async" + WHITESPACE@134..135 " " + UNSAFE_KW@135..141 "unsafe" + WHITESPACE@141..142 " " + FN_KW@142..144 "fn" + WHITESPACE@144..145 " " + NAME@145..148 + IDENT@145..148 "foo" + PARAM_LIST@148..150 + L_PAREN@148..149 "(" + R_PAREN@149..150 ")" + WHITESPACE@150..151 " " + BLOCK_EXPR@151..153 + L_CURLY@151..152 "{" + R_CURLY@152..153 "}" + WHITESPACE@153..154 "\n" + FN@154..178 + CONST_KW@154..159 "const" + WHITESPACE@159..160 " " + UNSAFE_KW@160..166 "unsafe" + WHITESPACE@166..167 " " + FN_KW@167..169 "fn" + WHITESPACE@169..170 " " + NAME@170..173 + IDENT@170..173 "bar" + PARAM_LIST@173..175 + L_PAREN@173..174 "(" + R_PAREN@174..175 ")" + WHITESPACE@175..176 " " + BLOCK_EXPR@176..178 + L_CURLY@176..177 "{" + R_CURLY@177..178 "}" + WHITESPACE@178..180 "\n\n" + TRAIT@180..197 + UNSAFE_KW@180..186 "unsafe" + WHITESPACE@186..187 " " + TRAIT_KW@187..192 "trait" + WHITESPACE@192..193 " " + NAME@193..194 + IDENT@193..194 "T" + WHITESPACE@194..195 " " + ASSOC_ITEM_LIST@195..197 + L_CURLY@195..196 "{" + R_CURLY@196..197 "}" + WHITESPACE@197..198 "\n" + TRAIT@198..213 + AUTO_KW@198..202 "auto" + WHITESPACE@202..203 " " + TRAIT_KW@203..208 "trait" + WHITESPACE@208..209 " " + NAME@209..210 + IDENT@209..210 "T" + WHITESPACE@210..211 " " + ASSOC_ITEM_LIST@211..213 + L_CURLY@211..212 "{" + R_CURLY@212..213 "}" + WHITESPACE@213..214 "\n" + TRAIT@214..236 + UNSAFE_KW@214..220 "unsafe" + WHITESPACE@220..221 " " + AUTO_KW@221..225 "auto" + WHITESPACE@225..226 " " + TRAIT_KW@226..231 "trait" + WHITESPACE@231..232 " " + NAME@232..233 + IDENT@232..233 "T" + WHITESPACE@233..234 " " + ASSOC_ITEM_LIST@234..236 + L_CURLY@234..235 "{" + R_CURLY@235..236 "}" + WHITESPACE@236..238 "\n\n" + IMPL@238..256 + UNSAFE_KW@238..244 "unsafe" + WHITESPACE@244..245 " " + IMPL_KW@245..249 "impl" + WHITESPACE@249..250 " " + PATH_TYPE@250..253 + PATH@250..253 + PATH_SEGMENT@250..253 + NAME_REF@250..253 + IDENT@250..253 "Foo" + WHITESPACE@253..254 " " + ASSOC_ITEM_LIST@254..256 + L_CURLY@254..255 "{" + R_CURLY@255..256 "}" + WHITESPACE@256..257 "\n" + IMPL@257..276 + DEFAULT_KW@257..264 "default" + WHITESPACE@264..265 " " + IMPL_KW@265..269 "impl" + WHITESPACE@269..270 " " + PATH_TYPE@270..273 + PATH@270..273 + PATH_SEGMENT@270..273 + NAME_REF@270..273 + IDENT@270..273 "Foo" + WHITESPACE@273..274 " " + ASSOC_ITEM_LIST@274..276 + L_CURLY@274..275 "{" + R_CURLY@275..276 "}" + WHITESPACE@276..277 "\n" + IMPL@277..303 + UNSAFE_KW@277..283 "unsafe" + WHITESPACE@283..284 " " + DEFAULT_KW@284..291 "default" + WHITESPACE@291..292 " " + IMPL_KW@292..296 "impl" + WHITESPACE@296..297 " " + PATH_TYPE@297..300 + PATH@297..300 + PATH_SEGMENT@297..300 + NAME_REF@297..300 + IDENT@297..300 "Foo" + WHITESPACE@300..301 " " + ASSOC_ITEM_LIST@301..303 + L_CURLY@301..302 "{" + R_CURLY@302..303 "}" + WHITESPACE@303..304 "\n" diff --git a/crates/syntax/test_data/parser/ok/0068_item_modifiers.rs b/crates/syntax/test_data/parser/ok/0068_item_modifiers.rs new file mode 100644 index 00000000000..8d697c04b95 --- /dev/null +++ b/crates/syntax/test_data/parser/ok/0068_item_modifiers.rs @@ -0,0 +1,16 @@ +async fn foo() {} +extern fn foo() {} +const fn foo() {} +const unsafe fn foo() {} +unsafe extern "C" fn foo() {} +unsafe fn foo() {} +async unsafe fn foo() {} +const unsafe fn bar() {} + +unsafe trait T {} +auto trait T {} +unsafe auto trait T {} + +unsafe impl Foo {} +default impl Foo {} +unsafe default impl Foo {} diff --git a/crates/syntax/test_data/reparse/fuzz-failures/0000.rs b/crates/syntax/test_data/reparse/fuzz-failures/0000.rs new file mode 100644 index 00000000000..388eb74eda1 --- /dev/null +++ b/crates/syntax/test_data/reparse/fuzz-failures/0000.rs @@ -0,0 +1,6 @@ +0 +1 + + + +0 \ No newline at end of file diff --git a/crates/syntax/test_data/reparse/fuzz-failures/0001.rs b/crates/syntax/test_data/reparse/fuzz-failures/0001.rs new file mode 100644 index 00000000000..d2d42c6f941 --- /dev/null +++ b/crates/syntax/test_data/reparse/fuzz-failures/0001.rs @@ -0,0 +1,4 @@ +0 +1 + +bb" \ No newline at end of file diff --git a/crates/syntax/test_data/reparse/fuzz-failures/0002.rs b/crates/syntax/test_data/reparse/fuzz-failures/0002.rs new file mode 100644 index 00000000000..3fbee154810 --- /dev/null +++ b/crates/syntax/test_data/reparse/fuzz-failures/0002.rs @@ -0,0 +1,4 @@ +1 +1 + +""! \ No newline at end of file diff --git a/crates/syntax/test_data/reparse/fuzz-failures/0003.rs b/crates/syntax/test_data/reparse/fuzz-failures/0003.rs new file mode 100644 index 00000000000..d2757cd08df Binary files /dev/null and b/crates/syntax/test_data/reparse/fuzz-failures/0003.rs differ diff --git a/crates/syntax/test_data/reparse/fuzz-failures/0004.rs b/crates/syntax/test_data/reparse/fuzz-failures/0004.rs new file mode 100644 index 00000000000..481617a701d --- /dev/null +++ b/crates/syntax/test_data/reparse/fuzz-failures/0004.rs @@ -0,0 +1,4 @@ +0 +0 +} +{; \ No newline at end of file diff --git a/crates/syntax/test_data/reparse/fuzz-failures/0005.rs b/crates/syntax/test_data/reparse/fuzz-failures/0005.rs new file mode 100644 index 00000000000..074d761c7b5 --- /dev/null +++ b/crates/syntax/test_data/reparse/fuzz-failures/0005.rs @@ -0,0 +1,7 @@ +05 +1 + + + +b' + \ No newline at end of file -- cgit 1.4.1-3-g733a5