From b5021411a84822cb3f1e3aeffad9550dd15bdeb6 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 16 Sep 2018 12:54:24 +0300 Subject: rename all things --- .../tests/data/lexer/00012_block_comment.rs | 4 + .../tests/data/lexer/00012_block_comment.txt | 7 + crates/ra_syntax/tests/data/lexer/0001_hello.rs | 1 + crates/ra_syntax/tests/data/lexer/0001_hello.txt | 3 + .../ra_syntax/tests/data/lexer/0002_whitespace.rs | 4 + .../ra_syntax/tests/data/lexer/0002_whitespace.txt | 12 + crates/ra_syntax/tests/data/lexer/0003_ident.rs | 1 + crates/ra_syntax/tests/data/lexer/0003_ident.txt | 14 + crates/ra_syntax/tests/data/lexer/0004_numbers.rs | 9 + crates/ra_syntax/tests/data/lexer/0004_numbers.txt | 67 ++ crates/ra_syntax/tests/data/lexer/0005_symbols.rs | 6 + crates/ra_syntax/tests/data/lexer/0005_symbols.txt | 68 ++ crates/ra_syntax/tests/data/lexer/0006_chars.rs | 1 + crates/ra_syntax/tests/data/lexer/0006_chars.txt | 16 + .../ra_syntax/tests/data/lexer/0007_lifetimes.rs | 1 + .../ra_syntax/tests/data/lexer/0007_lifetimes.txt | 8 + .../tests/data/lexer/0008_byte_strings.rs | 3 + .../tests/data/lexer/0008_byte_strings.txt | 22 + crates/ra_syntax/tests/data/lexer/0009_strings.rs | 2 + crates/ra_syntax/tests/data/lexer/0009_strings.txt | 8 + crates/ra_syntax/tests/data/lexer/0010_comments.rs | 3 + .../ra_syntax/tests/data/lexer/0010_comments.txt | 6 + crates/ra_syntax/tests/data/lexer/0011_keywords.rs | 3 + .../ra_syntax/tests/data/lexer/0011_keywords.txt | 62 ++ .../ra_syntax/tests/data/lexer/0013_raw_strings.rs | 1 + .../tests/data/lexer/0013_raw_strings.txt | 2 + .../tests/data/lexer/0014_unclosed_char.rs | 1 + .../tests/data/lexer/0014_unclosed_char.txt | 1 + .../tests/data/lexer/0015_unclosed_string.rs | 1 + .../tests/data/lexer/0015_unclosed_string.txt | 1 + .../parser/err/0000_struct_field_missing_comma.rs | 4 + .../parser/err/0000_struct_field_missing_comma.txt | 34 + .../data/parser/err/0001_item_recovery_in_file.rs | 3 + .../data/parser/err/0001_item_recovery_in_file.txt | 18 + .../data/parser/err/0002_duplicate_shebang.rs | 2 + .../data/parser/err/0002_duplicate_shebang.txt | 7 + .../tests/data/parser/err/0003_C++_semicolon.rs | 4 + .../tests/data/parser/err/0003_C++_semicolon.txt | 39 + .../data/parser/err/0004_use_path_bad_segment.rs | 1 + .../data/parser/err/0004_use_path_bad_segment.txt | 16 + .../data/parser/err/0005_attribute_recover.rs | 8 + .../data/parser/err/0005_attribute_recover.txt | 55 ++ .../data/parser/err/0006_named_field_recovery.rs | 7 + .../data/parser/err/0006_named_field_recovery.txt | 74 ++ .../data/parser/err/0007_stray_curly_in_file.rs | 9 + .../data/parser/err/0007_stray_curly_in_file.txt | 32 + .../data/parser/err/0008_item_block_recovery.rs | 13 + .../data/parser/err/0008_item_block_recovery.txt | 70 ++ .../err/0009_broken_struct_type_parameter.rs | 5 + .../err/0009_broken_struct_type_parameter.txt | 44 + .../data/parser/err/0010_unsafe_lambda_block.rs | 3 + .../data/parser/err/0010_unsafe_lambda_block.txt | 42 + .../tests/data/parser/err/0011_extern_struct.rs | 1 + .../tests/data/parser/err/0011_extern_struct.txt | 13 + .../tests/data/parser/err/0012_broken_lambda.txt | 387 ++++++++ .../tests/data/parser/err/0013_invalid_type.rs | 7 + .../tests/data/parser/err/0013_invalid_type.txt | 89 ++ .../tests/data/parser/err/0014_where_no_bounds.rs | 1 + .../tests/data/parser/err/0014_where_no_bounds.txt | 31 + .../tests/data/parser/err/0015_curly_in_params.rs | 2 + .../tests/data/parser/err/0015_curly_in_params.txt | 24 + .../tests/data/parser/err/0016_missing_semi.rs | 6 + .../tests/data/parser/err/0016_missing_semi.txt | 43 + .../data/parser/err/0017_incomplete_binexpr.rs | 4 + .../data/parser/err/0017_incomplete_binexpr.txt | 46 + .../tests/data/parser/err/0018_incomplete_fn.rs | 8 + .../tests/data/parser/err/0018_incomplete_fn.txt | 131 +++ .../tests/data/parser/err/0019_let_recover.rs | 12 + .../tests/data/parser/err/0019_let_recover.txt | 103 +++ .../tests/data/parser/err/0020_fn_recover.rs | 3 + .../tests/data/parser/err/0020_fn_recover.txt | 20 + .../tests/data/parser/err/0021_incomplete_param.rs | 2 + .../data/parser/err/0021_incomplete_param.txt | 34 + .../tests/data/parser/err/0022_bad_exprs.rs | 3 + .../tests/data/parser/err/0022_bad_exprs.txt | 189 ++++ .../tests/data/parser/err/0023_mismatched_paren.rs | 5 + .../data/parser/err/0023_mismatched_paren.txt | 43 + .../tests/data/parser/err/0024_many_type_parens.rs | 7 + .../data/parser/err/0024_many_type_parens.txt | 310 +++++++ .../ra_syntax/tests/data/parser/err/0025_nope.rs | 31 + .../ra_syntax/tests/data/parser/err/0025_nope.txt | 203 +++++ .../tests/data/parser/fuzz-failures/0000.rs | 199 +++++ .../tests/data/parser/fuzz-failures/0001.rs | 106 +++ .../data/parser/inline/0001_const_unsafe_fn.rs | 1 + .../data/parser/inline/0001_const_unsafe_fn.txt | 18 + .../tests/data/parser/inline/0002_const_fn.rs | 1 + .../tests/data/parser/inline/0002_const_fn.txt | 16 + .../tests/data/parser/inline/0003_extern_block.rs | 1 + .../tests/data/parser/inline/0003_extern_block.txt | 9 + .../tests/data/parser/inline/0004_extern_fn.rs | 1 + .../tests/data/parser/inline/0004_extern_fn.txt | 17 + .../tests/data/parser/inline/0005_extern_crate.rs | 1 + .../tests/data/parser/inline/0005_extern_crate.txt | 10 + .../tests/data/parser/inline/0007_unsafe_trait.rs | 1 + .../tests/data/parser/inline/0007_unsafe_trait.txt | 13 + .../tests/data/parser/inline/0008_unsafe_impl.rs | 1 + .../tests/data/parser/inline/0008_unsafe_impl.txt | 16 + .../data/parser/inline/0009_unsafe_auto_trait.rs | 1 + .../data/parser/inline/0009_unsafe_auto_trait.txt | 15 + .../data/parser/inline/0010_unsafe_default_impl.rs | 1 + .../parser/inline/0010_unsafe_default_impl.txt | 18 + .../tests/data/parser/inline/0011_unsafe_fn.rs | 1 + .../tests/data/parser/inline/0011_unsafe_fn.txt | 16 + .../data/parser/inline/0012_unsafe_extern_fn.rs | 1 + .../data/parser/inline/0012_unsafe_extern_fn.txt | 21 + .../data/parser/inline/0013_unsafe_block_in_mod.rs | 1 + .../parser/inline/0013_unsafe_block_in_mod.txt | 35 + .../parser/inline/0014_type_item_type_params.rs | 1 + .../parser/inline/0014_type_item_type_params.txt | 20 + .../tests/data/parser/inline/0015_type_item.rs | 1 + .../tests/data/parser/inline/0015_type_item.txt | 16 + .../parser/inline/0016_type_item_where_clause.rs | 1 + .../parser/inline/0016_type_item_where_clause.txt | 32 + .../tests/data/parser/inline/0017_paren_type.rs | 1 + .../tests/data/parser/inline/0017_paren_type.txt | 19 + .../tests/data/parser/inline/0018_unit_type.rs | 1 + .../tests/data/parser/inline/0018_unit_type.txt | 14 + .../parser/inline/0019_singleton_tuple_type.rs | 1 + .../parser/inline/0019_singleton_tuple_type.txt | 20 + .../tests/data/parser/inline/0020_never_type.rs | 1 + .../tests/data/parser/inline/0020_never_type.txt | 13 + .../inline/0021_pointer_type_no_mutability.rs | 1 + .../inline/0021_pointer_type_no_mutability.txt | 17 + .../data/parser/inline/0022_pointer_type_mut.rs | 2 + .../data/parser/inline/0022_pointer_type_mut.txt | 35 + .../parser/inline/0023_array_type_missing_semi.rs | 1 + .../parser/inline/0023_array_type_missing_semi.txt | 27 + .../tests/data/parser/inline/0024_array_type.rs | 1 + .../tests/data/parser/inline/0024_array_type.txt | 21 + .../tests/data/parser/inline/0025_slice_type.rs | 1 + .../tests/data/parser/inline/0025_slice_type.txt | 17 + .../data/parser/inline/0026_reference_type;.rs | 3 + .../data/parser/inline/0026_reference_type;.txt | 50 ++ .../data/parser/inline/0027_placeholder_type.rs | 1 + .../data/parser/inline/0027_placeholder_type.txt | 13 + .../data/parser/inline/0028_fn_pointer_type.rs | 3 + .../data/parser/inline/0028_fn_pointer_type.txt | 55 ++ .../inline/0029_fn_pointer_type_missing_fn.rs | 1 + .../inline/0029_fn_pointer_type_missing_fn.txt | 23 + .../parser/inline/0030_fn_pointer_type_with_ret.rs | 1 + .../inline/0030_fn_pointer_type_with_ret.txt | 23 + .../tests/data/parser/inline/0031_for_type.rs | 1 + .../tests/data/parser/inline/0031_for_type.txt | 31 + .../tests/data/parser/inline/0032_path_type.rs | 4 + .../tests/data/parser/inline/0032_path_type.txt | 70 ++ .../tests/data/parser/inline/0034_bind_pat.rs | 8 + .../tests/data/parser/inline/0034_bind_pat.txt | 127 +++ .../tests/data/parser/inline/0035_ref_pat.rs | 4 + .../tests/data/parser/inline/0035_ref_pat.txt | 49 ++ .../data/parser/inline/0036_placeholder_pat.rs | 1 + .../data/parser/inline/0036_placeholder_pat.txt | 28 + .../data/parser/inline/0037_crate_visibility.rs | 4 + .../data/parser/inline/0037_crate_visibility.txt | 53 ++ .../data/parser/inline/0038_function_ret_type.rs | 2 + .../data/parser/inline/0038_function_ret_type.txt | 34 + .../tests/data/parser/inline/0039_path_expr.rs | 6 + .../tests/data/parser/inline/0039_path_expr.txt | 95 ++ .../tests/data/parser/inline/0040_expr_literals.rs | 12 + .../data/parser/inline/0040_expr_literals.txt | 135 +++ .../data/parser/inline/0041_type_param_bounds.rs | 1 + .../data/parser/inline/0041_type_param_bounds.txt | 36 + .../data/parser/inline/0042_type_param_default.rs | 1 + .../data/parser/inline/0042_type_param_default.txt | 22 + .../tests/data/parser/inline/0043_call_expr.rs | 4 + .../tests/data/parser/inline/0043_call_expr.txt | 70 ++ .../tests/data/parser/inline/0044_ref_expr.rs | 4 + .../tests/data/parser/inline/0044_ref_expr.txt | 54 ++ .../tests/data/parser/inline/0045_block.rs | 4 + .../tests/data/parser/inline/0045_block.txt | 86 ++ .../tests/data/parser/inline/0046_default_impl.rs | 1 + .../tests/data/parser/inline/0046_default_impl.txt | 16 + .../tests/data/parser/inline/0047_impl_item.rs | 1 + .../tests/data/parser/inline/0047_impl_item.txt | 14 + .../tests/data/parser/inline/0048_impl_item_neg.rs | 1 + .../data/parser/inline/0048_impl_item_neg.txt | 23 + .../data/parser/inline/0049_trait_item_list.rs | 6 + .../data/parser/inline/0049_trait_item_list.txt | 69 ++ .../tests/data/parser/inline/0050_let_stmt;.rs | 6 + .../tests/data/parser/inline/0050_let_stmt;.txt | 71 ++ .../data/parser/inline/0051_method_call_expr.rs | 4 + .../data/parser/inline/0051_method_call_expr.txt | 62 ++ .../tests/data/parser/inline/0052_field_expr.rs | 4 + .../tests/data/parser/inline/0052_field_expr.txt | 42 + .../tests/data/parser/inline/0053_block_items.rs | 1 + .../tests/data/parser/inline/0053_block_items.txt | 28 + .../data/parser/inline/0054_field_pat_list.rs | 6 + .../data/parser/inline/0054_field_pat_list.txt | 126 +++ .../tests/data/parser/inline/0055_self_param.rs | 7 + .../tests/data/parser/inline/0055_self_param.txt | 116 +++ .../tests/data/parser/inline/0056_trait_item.rs | 1 + .../tests/data/parser/inline/0056_trait_item.txt | 49 ++ .../tests/data/parser/inline/0057_auto_trait.rs | 1 + .../tests/data/parser/inline/0057_auto_trait.txt | 13 + .../tests/data/parser/inline/0058_type_arg.rs | 1 + .../tests/data/parser/inline/0058_type_arg.txt | 40 + .../parser/inline/0059_function_where_clause.rs | 1 + .../parser/inline/0059_function_where_clause.txt | 37 + .../parser/inline/0060_function_type_params.rs | 1 + .../parser/inline/0060_function_type_params.txt | 34 + .../tests/data/parser/inline/0061_struct_lit.rs | 5 + .../tests/data/parser/inline/0061_struct_lit.txt | 97 ++ .../data/parser/inline/0063_impl_trait_type.rs | 1 + .../data/parser/inline/0063_impl_trait_type.txt | 40 + .../tests/data/parser/inline/0063_lambda_expr.txt | 91 ++ .../tests/data/parser/inline/0064_param_list.rs | 4 + .../tests/data/parser/inline/0064_param_list.txt | 99 +++ .../tests/data/parser/inline/0065_if_expr.rs | 6 + .../tests/data/parser/inline/0065_if_expr.txt | 95 ++ .../tests/data/parser/inline/0066_lambda_expr.rs | 6 + .../tests/data/parser/inline/0066_lambda_expr.txt | 95 ++ .../tests/data/parser/inline/0067_block_expr.rs | 5 + .../tests/data/parser/inline/0067_block_expr.txt | 42 + .../tests/data/parser/inline/0068_pub_expr.rs | 1 + .../tests/data/parser/inline/0068_pub_expr.txt | 25 + .../tests/data/parser/inline/0068_return_expr.rs | 4 + .../tests/data/parser/inline/0068_return_expr.txt | 28 + .../tests/data/parser/inline/0069_match_arm.rs | 6 + .../tests/data/parser/inline/0069_match_arm.txt | 66 ++ .../tests/data/parser/inline/0070_match_expr.rs | 4 + .../tests/data/parser/inline/0070_match_expr.txt | 44 + .../data/parser/inline/0071_tuple_pat_fields.rs | 6 + .../data/parser/inline/0071_tuple_pat_fields.txt | 103 +++ .../tests/data/parser/inline/0072_path_part.rs | 6 + .../tests/data/parser/inline/0072_path_part.txt | 95 ++ .../data/parser/inline/0073_impl_item_list.rs | 6 + .../data/parser/inline/0073_impl_item_list.txt | 78 ++ .../tests/data/parser/inline/0074_unary_expr.rs | 5 + .../tests/data/parser/inline/0074_unary_expr.txt | 44 + .../tests/data/parser/inline/0075_try_expr.rs | 3 + .../tests/data/parser/inline/0075_try_expr.txt | 25 + .../tests/data/parser/inline/0076_cond.rs | 1 + .../tests/data/parser/inline/0076_cond.txt | 43 + .../tests/data/parser/inline/0077_while_expr.rs | 4 + .../tests/data/parser/inline/0077_while_expr.txt | 66 ++ .../tests/data/parser/inline/0078_mod_contents.rs | 5 + .../tests/data/parser/inline/0078_mod_contents.txt | 65 ++ .../tests/data/parser/inline/0079_cast_expr.rs | 3 + .../tests/data/parser/inline/0079_cast_expr.txt | 29 + .../tests/data/parser/inline/0080_tuple_expr.rs | 5 + .../tests/data/parser/inline/0080_tuple_expr.txt | 38 + .../tests/data/parser/inline/0081_index_expr.rs | 3 + .../tests/data/parser/inline/0081_index_expr.txt | 33 + .../tests/data/parser/inline/0082_tuple_pat.rs | 3 + .../tests/data/parser/inline/0082_tuple_pat.txt | 40 + .../tests/data/parser/inline/0083_postfix_range.rs | 1 + .../data/parser/inline/0083_postfix_range.txt | 30 + .../tests/data/parser/inline/0084_loop_expr.rs | 3 + .../tests/data/parser/inline/0084_loop_expr.txt | 24 + .../tests/data/parser/inline/0085_for_expr.rs | 3 + .../tests/data/parser/inline/0085_for_expr.txt | 34 + .../data/parser/inline/0085_match_arms_commas.rs | 7 + .../data/parser/inline/0085_match_arms_commas.txt | 59 ++ .../tests/data/parser/inline/0086_array_expr.rs | 6 + .../tests/data/parser/inline/0086_array_expr.txt | 54 ++ .../data/parser/inline/0086_no_semi_after_block.rs | 9 + .../parser/inline/0086_no_semi_after_block.txt | 87 ++ .../inline/0087_stmt_postfix_expr_ambiguity.rs | 7 + .../inline/0087_stmt_postfix_expr_ambiguity.txt | 62 ++ .../parser/inline/0088_stmt_bin_expr_ambiguity.rs | 4 + .../parser/inline/0088_stmt_bin_expr_ambiguity.txt | 52 ++ .../tests/data/parser/inline/0089_slice_pat.rs | 3 + .../tests/data/parser/inline/0089_slice_pat.txt | 40 + .../tests/data/parser/inline/0091_fn_decl.rs | 1 + .../tests/data/parser/inline/0091_fn_decl.txt | 22 + .../data/parser/inline/0092_literal_pattern.rs | 7 + .../data/parser/inline/0092_literal_pattern.txt | 60 ++ .../data/parser/inline/0093_path_fn_trait_args.rs | 1 + .../data/parser/inline/0093_path_fn_trait_args.txt | 46 + .../tests/data/parser/inline/0094_range_pat.rs | 3 + .../tests/data/parser/inline/0094_range_pat.txt | 42 + .../parser/inline/0095_path_type_with_bounds.rs | 1 + .../parser/inline/0095_path_type_with_bounds.txt | 36 + .../inline/0096_value_parameters_no_patterns.rs | 1 + .../inline/0096_value_parameters_no_patterns.txt | 81 ++ .../parser/inline/0097_param_list_opt_patterns.rs | 1 + .../parser/inline/0097_param_list_opt_patterns.txt | 44 + .../tests/data/parser/inline/0098_where_clause.rs | 6 + .../tests/data/parser/inline/0098_where_clause.txt | 71 ++ .../data/parser/inline/0099_crate_keyword_vis.rs | 1 + .../data/parser/inline/0099_crate_keyword_vis.txt | 18 + .../data/parser/inline/0100_dyn_trait_type.rs | 1 + .../data/parser/inline/0100_dyn_trait_type.txt | 40 + .../tests/data/parser/inline/0101_qual_paths.rs | 2 + .../tests/data/parser/inline/0101_qual_paths.txt | 78 ++ .../data/parser/inline/0102_full_range_expr.rs | 1 + .../data/parser/inline/0102_full_range_expr.txt | 28 + .../tests/data/parser/inline/0103_field_attrs.rs | 4 + .../tests/data/parser/inline/0103_field_attrs.txt | 42 + .../data/parser/inline/0104_arb_self_types.rs | 4 + .../data/parser/inline/0104_arb_self_types.txt | 72 ++ .../tests/data/parser/inline/0105_continue_expr.rs | 6 + .../data/parser/inline/0105_continue_expr.txt | 35 + .../tests/data/parser/inline/0106_break_expr.rs | 8 + .../tests/data/parser/inline/0106_break_expr.txt | 53 ++ .../tests/data/parser/inline/0107_label.rs | 5 + .../tests/data/parser/inline/0107_label.txt | 64 ++ .../data/parser/inline/0108_misplaced_label_err.rs | 3 + .../parser/inline/0108_misplaced_label_err.txt | 28 + .../tests/data/parser/inline/0109_struct_items.rs | 8 + .../tests/data/parser/inline/0109_struct_items.txt | 87 ++ .../tests/data/parser/inline/0110_union_items.rs | 5 + .../tests/data/parser/inline/0110_union_items.txt | 46 + .../ra_syntax/tests/data/parser/ok/0000_empty.rs | 0 .../ra_syntax/tests/data/parser/ok/0000_empty.txt | 1 + .../tests/data/parser/ok/0001_struct_item.rs | 3 + .../tests/data/parser/ok/0001_struct_item.txt | 37 + .../tests/data/parser/ok/0002_struct_item_field.rs | 3 + .../data/parser/ok/0002_struct_item_field.txt | 22 + .../tests/data/parser/ok/0004_file_shebang.rs | 1 + .../tests/data/parser/ok/0004_file_shebang.txt | 2 + .../ra_syntax/tests/data/parser/ok/0005_fn_item.rs | 2 + .../tests/data/parser/ok/0005_fn_item.txt | 15 + .../tests/data/parser/ok/0006_inner_attributes.rs | 10 + .../tests/data/parser/ok/0006_inner_attributes.txt | 164 ++++ .../tests/data/parser/ok/0007_extern_crate.rs | 2 + .../tests/data/parser/ok/0007_extern_crate.txt | 25 + .../tests/data/parser/ok/0008_mod_item.rs | 17 + .../tests/data/parser/ok/0008_mod_item.txt | 90 ++ .../tests/data/parser/ok/0009_use_item.rs | 2 + .../tests/data/parser/ok/0009_use_item.txt | 21 + .../tests/data/parser/ok/0010_use_path_segments.rs | 2 + .../data/parser/ok/0010_use_path_segments.txt | 42 + .../tests/data/parser/ok/0011_outer_attribute.rs | 3 + .../tests/data/parser/ok/0011_outer_attribute.txt | 32 + .../tests/data/parser/ok/0012_visibility.rs | 5 + .../tests/data/parser/ok/0012_visibility.txt | 102 +++ .../data/parser/ok/0013_use_path_self_super.rs | 3 + .../data/parser/ok/0013_use_path_self_super.txt | 57 ++ .../tests/data/parser/ok/0014_use_tree.rs | 7 + .../tests/data/parser/ok/0014_use_tree.txt | 95 ++ .../tests/data/parser/ok/0015_use_tree.rs | 2 + .../tests/data/parser/ok/0015_use_tree.txt | 65 ++ .../tests/data/parser/ok/0016_struct_flavors.rs | 10 + .../tests/data/parser/ok/0016_struct_flavors.txt | 93 ++ .../data/parser/ok/0017_attr_trailing_comma.rs | 2 + .../data/parser/ok/0017_attr_trailing_comma.txt | 26 + .../data/parser/ok/0018_struct_type_params.rs | 17 + .../data/parser/ok/0018_struct_type_params.txt | 257 ++++++ .../ra_syntax/tests/data/parser/ok/0019_enums.rs | 25 + .../ra_syntax/tests/data/parser/ok/0019_enums.txt | 155 ++++ .../tests/data/parser/ok/0020_type_param_bounds.rs | 9 + .../data/parser/ok/0020_type_param_bounds.txt | 198 +++++ .../tests/data/parser/ok/0021_extern_fn.rs | 8 + .../tests/data/parser/ok/0021_extern_fn.txt | 56 ++ .../data/parser/ok/0022_empty_extern_block.rs | 5 + .../data/parser/ok/0022_empty_extern_block.txt | 21 + .../tests/data/parser/ok/0023_static_items.rs | 2 + .../tests/data/parser/ok/0023_static_items.txt | 41 + .../tests/data/parser/ok/0024_const_item.rs | 2 + .../tests/data/parser/ok/0024_const_item.txt | 41 + .../data/parser/ok/0025_extern_fn_in_block.rs | 3 + .../data/parser/ok/0025_extern_fn_in_block.txt | 31 + .../tests/data/parser/ok/0026_const_fn_in_block.rs | 3 + .../data/parser/ok/0026_const_fn_in_block.txt | 30 + .../data/parser/ok/0027_unsafe_fn_in_block.rs | 4 + .../data/parser/ok/0027_unsafe_fn_in_block.txt | 41 + .../data/parser/ok/0028_operator_binding_power.rs | 14 + .../data/parser/ok/0028_operator_binding_power.txt | 185 ++++ .../tests/data/parser/ok/0029_range_forms.rs | 6 + .../tests/data/parser/ok/0029_range_forms.txt | 83 ++ .../ra_syntax/tests/data/parser/ok/0030_traits.rs | 11 + .../ra_syntax/tests/data/parser/ok/0030_traits.txt | 93 ++ .../ra_syntax/tests/data/parser/ok/0031_extern.rs | 29 + .../ra_syntax/tests/data/parser/ok/0031_extern.txt | 973 +++++++++++++++++++++ .../tests/data/parser/ok/0032_where_for.rs | 4 + .../tests/data/parser/ok/0032_where_for.txt | 85 ++ .../tests/data/parser/ok/0033_label_break.rs | 28 + .../tests/data/parser/ok/0033_label_break.txt | 215 +++++ .../tests/data/parser/ok/0034_macro_2.0.rs | 16 + .../tests/data/parser/ok/0034_macro_2.0.txt | 317 +++++++ .../tests/data/parser/ok/0034_macro_stuck.txt | 250 ++++++ 371 files changed, 12513 insertions(+) create mode 100644 crates/ra_syntax/tests/data/lexer/00012_block_comment.rs create mode 100644 crates/ra_syntax/tests/data/lexer/00012_block_comment.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0001_hello.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0001_hello.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0002_whitespace.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0002_whitespace.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0003_ident.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0003_ident.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0004_numbers.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0004_numbers.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0005_symbols.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0005_symbols.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0006_chars.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0006_chars.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0007_lifetimes.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0007_lifetimes.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0008_byte_strings.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0008_byte_strings.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0009_strings.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0009_strings.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0010_comments.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0010_comments.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0011_keywords.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0011_keywords.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0013_raw_strings.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0013_raw_strings.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0014_unclosed_char.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt create mode 100644 crates/ra_syntax/tests/data/lexer/0015_unclosed_string.rs create mode 100644 crates/ra_syntax/tests/data/lexer/0015_unclosed_string.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0011_extern_struct.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0013_invalid_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0016_missing_semi.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0019_let_recover.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0020_fn_recover.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt create mode 100644 crates/ra_syntax/tests/data/parser/err/0025_nope.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0025_nope.txt create mode 100644 crates/ra_syntax/tests/data/parser/fuzz-failures/0000.rs create mode 100644 crates/ra_syntax/tests/data/parser/fuzz-failures/0001.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0002_const_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0003_extern_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0015_type_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0017_paren_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0018_unit_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0020_never_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0024_array_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0025_slice_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0031_for_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0032_path_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0039_path_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0043_call_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0045_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0045_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0046_default_impl.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0047_impl_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0052_field_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0053_block_items.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0055_self_param.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0056_trait_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0058_type_arg.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0064_param_list.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0065_if_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0067_block_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0068_return_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0069_match_arm.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0070_match_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0072_path_part.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0075_try_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0076_cond.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0076_cond.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0077_while_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0081_index_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0085_for_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0086_array_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0094_range_pat.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0098_where_clause.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0106_break_expr.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0107_label.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0107_label.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0109_struct_items.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt create mode 100644 crates/ra_syntax/tests/data/parser/inline/0110_union_items.rs create mode 100644 crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0000_empty.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0000_empty.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0001_struct_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0005_fn_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0008_mod_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0009_use_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0012_visibility.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0014_use_tree.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0015_use_tree.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0019_enums.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0019_enums.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0023_static_items.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0024_const_item.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0029_range_forms.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0030_traits.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0030_traits.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0031_extern.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0031_extern.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0032_where_for.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0033_label_break.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.rs create mode 100644 crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt create mode 100644 crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt (limited to 'crates/ra_syntax/tests/data') diff --git a/crates/ra_syntax/tests/data/lexer/00012_block_comment.rs b/crates/ra_syntax/tests/data/lexer/00012_block_comment.rs new file mode 100644 index 000000000..708aac197 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/00012_block_comment.rs @@ -0,0 +1,4 @@ +/* */ +/**/ +/* /* */ */ +/* diff --git a/crates/ra_syntax/tests/data/lexer/00012_block_comment.txt b/crates/ra_syntax/tests/data/lexer/00012_block_comment.txt new file mode 100644 index 000000000..9958b2518 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/00012_block_comment.txt @@ -0,0 +1,7 @@ +COMMENT 5 "/* */" +WHITESPACE 1 "\n" +COMMENT 4 "/**/" +WHITESPACE 1 "\n" +COMMENT 11 "/* /* */ */" +WHITESPACE 1 "\n" +COMMENT 3 "/*\n" diff --git a/crates/ra_syntax/tests/data/lexer/0001_hello.rs b/crates/ra_syntax/tests/data/lexer/0001_hello.rs new file mode 100644 index 000000000..95d09f2b1 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0001_hello.rs @@ -0,0 +1 @@ +hello world \ No newline at end of file diff --git a/crates/ra_syntax/tests/data/lexer/0001_hello.txt b/crates/ra_syntax/tests/data/lexer/0001_hello.txt new file mode 100644 index 000000000..27a5940a9 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0001_hello.txt @@ -0,0 +1,3 @@ +IDENT 5 "hello" +WHITESPACE 1 " " +IDENT 5 "world" diff --git a/crates/ra_syntax/tests/data/lexer/0002_whitespace.rs b/crates/ra_syntax/tests/data/lexer/0002_whitespace.rs new file mode 100644 index 000000000..08fce1418 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0002_whitespace.rs @@ -0,0 +1,4 @@ +a b c +d + +e f diff --git a/crates/ra_syntax/tests/data/lexer/0002_whitespace.txt b/crates/ra_syntax/tests/data/lexer/0002_whitespace.txt new file mode 100644 index 000000000..01d260918 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0003_ident.rs b/crates/ra_syntax/tests/data/lexer/0003_ident.rs new file mode 100644 index 000000000..c05c9c009 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0003_ident.rs @@ -0,0 +1 @@ +foo foo_ _foo _ __ x привет diff --git a/crates/ra_syntax/tests/data/lexer/0003_ident.txt b/crates/ra_syntax/tests/data/lexer/0003_ident.txt new file mode 100644 index 000000000..4a0d5c053 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0004_numbers.rs b/crates/ra_syntax/tests/data/lexer/0004_numbers.rs new file mode 100644 index 000000000..dc974b553 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0004_numbers.rs @@ -0,0 +1,9 @@ +0 0b 0o 0x 00 0_ 0. 0e 0E 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 \ No newline at end of file diff --git a/crates/ra_syntax/tests/data/lexer/0004_numbers.txt b/crates/ra_syntax/tests/data/lexer/0004_numbers.txt new file mode 100644 index 000000000..4b5fd9f71 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0004_numbers.txt @@ -0,0 +1,67 @@ +INT_NUMBER 1 "0" +WHITESPACE 1 " " +INT_NUMBER 2 "0b" +WHITESPACE 1 " " +INT_NUMBER 2 "0o" +WHITESPACE 1 " " +INT_NUMBER 2 "0x" +WHITESPACE 1 " " +INT_NUMBER 2 "00" +WHITESPACE 1 " " +INT_NUMBER 2 "0_" +WHITESPACE 1 " " +FLOAT_NUMBER 2 "0." +WHITESPACE 1 " " +INT_NUMBER 2 "0e" +WHITESPACE 1 " " +INT_NUMBER 2 "0E" +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 " " +INT_NUMBER 6 "0e1279" +WHITESPACE 1 " " +INT_NUMBER 6 "0E1279" +WHITESPACE 1 "\n" +INT_NUMBER 1 "0" +DOTDOT 2 ".." +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" +INT_NUMBER 2 "0e" +PLUS 1 "+" +INT_NUMBER 1 "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" diff --git a/crates/ra_syntax/tests/data/lexer/0005_symbols.rs b/crates/ra_syntax/tests/data/lexer/0005_symbols.rs new file mode 100644 index 000000000..487569b5a --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0005_symbols.rs @@ -0,0 +1,6 @@ +; , ( ) { } [ ] < > @ # ~ ? $ & | + * / ^ % +. .. ... ..= +: :: += => +! != +- -> diff --git a/crates/ra_syntax/tests/data/lexer/0005_symbols.txt b/crates/ra_syntax/tests/data/lexer/0005_symbols.txt new file mode 100644 index 000000000..a6bc83a6f --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0005_symbols.txt @@ -0,0 +1,68 @@ +SEMI 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 " " +DOTDOT 2 ".." +WHITESPACE 1 " " +DOTDOTDOT 3 "..." +WHITESPACE 1 " " +DOTDOTEQ 3 "..=" +WHITESPACE 1 "\n" +COLON 1 ":" +WHITESPACE 1 " " +COLONCOLON 2 "::" +WHITESPACE 1 "\n" +EQ 1 "=" +WHITESPACE 1 " " +FAT_ARROW 2 "=>" +WHITESPACE 1 "\n" +EXCL 1 "!" +WHITESPACE 1 " " +NEQ 2 "!=" +WHITESPACE 1 "\n" +MINUS 1 "-" +WHITESPACE 1 " " +THIN_ARROW 2 "->" +WHITESPACE 1 "\n" diff --git a/crates/ra_syntax/tests/data/lexer/0006_chars.rs b/crates/ra_syntax/tests/data/lexer/0006_chars.rs new file mode 100644 index 000000000..454ee0a5f --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0006_chars.rs @@ -0,0 +1 @@ +'x' ' ' '0' 'hello' '\x7f' '\n' '\\' '\'' diff --git a/crates/ra_syntax/tests/data/lexer/0006_chars.txt b/crates/ra_syntax/tests/data/lexer/0006_chars.txt new file mode 100644 index 000000000..950954fbc --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0007_lifetimes.rs b/crates/ra_syntax/tests/data/lexer/0007_lifetimes.rs new file mode 100644 index 000000000..b764f1dce --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0007_lifetimes.rs @@ -0,0 +1 @@ +'a 'foo 'foo_bar_baz '_ diff --git a/crates/ra_syntax/tests/data/lexer/0007_lifetimes.txt b/crates/ra_syntax/tests/data/lexer/0007_lifetimes.txt new file mode 100644 index 000000000..005c29100 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0008_byte_strings.rs b/crates/ra_syntax/tests/data/lexer/0008_byte_strings.rs new file mode 100644 index 000000000..b54930f5e --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0008_byte_strings.txt b/crates/ra_syntax/tests/data/lexer/0008_byte_strings.txt new file mode 100644 index 000000000..bc03b51a8 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0009_strings.rs b/crates/ra_syntax/tests/data/lexer/0009_strings.rs new file mode 100644 index 000000000..4ddb5bffc --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0009_strings.rs @@ -0,0 +1,2 @@ +"hello" r"world" "\n\"\\no escape" "multi +line" diff --git a/crates/ra_syntax/tests/data/lexer/0009_strings.txt b/crates/ra_syntax/tests/data/lexer/0009_strings.txt new file mode 100644 index 000000000..4cb4d711d --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0010_comments.rs b/crates/ra_syntax/tests/data/lexer/0010_comments.rs new file mode 100644 index 000000000..71bdd1f9c --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0010_comments.rs @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +// hello +//! World diff --git a/crates/ra_syntax/tests/data/lexer/0010_comments.txt b/crates/ra_syntax/tests/data/lexer/0010_comments.txt new file mode 100644 index 000000000..3c997de3f --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0010_comments.txt @@ -0,0 +1,6 @@ +SHEBANG 19 "#!/usr/bin/env bash" +WHITESPACE 1 "\n" +COMMENT 8 "// hello" +WHITESPACE 1 "\n" +COMMENT 9 "//! World" +WHITESPACE 1 "\n" diff --git a/crates/ra_syntax/tests/data/lexer/0011_keywords.rs b/crates/ra_syntax/tests/data/lexer/0011_keywords.rs new file mode 100644 index 000000000..e6bf64d4d --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0011_keywords.rs @@ -0,0 +1,3 @@ +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/ra_syntax/tests/data/lexer/0011_keywords.txt b/crates/ra_syntax/tests/data/lexer/0011_keywords.txt new file mode 100644 index 000000000..d6a1abe8a --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0011_keywords.txt @@ -0,0 +1,62 @@ +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/ra_syntax/tests/data/lexer/0013_raw_strings.rs b/crates/ra_syntax/tests/data/lexer/0013_raw_strings.rs new file mode 100644 index 000000000..e5ed0b693 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0013_raw_strings.rs @@ -0,0 +1 @@ +r###"this is a r##"raw"## string"### diff --git a/crates/ra_syntax/tests/data/lexer/0013_raw_strings.txt b/crates/ra_syntax/tests/data/lexer/0013_raw_strings.txt new file mode 100644 index 000000000..9cf0957d1 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/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/ra_syntax/tests/data/lexer/0014_unclosed_char.rs b/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.rs new file mode 100644 index 000000000..9c0007077 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.rs @@ -0,0 +1 @@ +'1 \ No newline at end of file diff --git a/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt b/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt new file mode 100644 index 000000000..812dfbc18 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt @@ -0,0 +1 @@ +CHAR 2 "\'1" diff --git a/crates/ra_syntax/tests/data/lexer/0015_unclosed_string.rs b/crates/ra_syntax/tests/data/lexer/0015_unclosed_string.rs new file mode 100644 index 000000000..d771a26d4 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0015_unclosed_string.rs @@ -0,0 +1 @@ +"hello diff --git a/crates/ra_syntax/tests/data/lexer/0015_unclosed_string.txt b/crates/ra_syntax/tests/data/lexer/0015_unclosed_string.txt new file mode 100644 index 000000000..728c40b66 --- /dev/null +++ b/crates/ra_syntax/tests/data/lexer/0015_unclosed_string.txt @@ -0,0 +1 @@ +STRING 7 "\"hello\n" diff --git a/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.rs b/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.rs new file mode 100644 index 000000000..fe5030d89 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt b/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt new file mode 100644 index 000000000..aa375fe8a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt @@ -0,0 +1,34 @@ +ROOT@[0; 34) + STRUCT_DEF@[0; 34) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + WHITESPACE@[8; 9) + NAMED_FIELD_DEF_LIST@[9; 34) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + NAMED_FIELD_DEF@[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" + err: `expected COMMA` + WHITESPACE@[21; 26) + NAMED_FIELD_DEF@[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) + R_CURLY@[33; 34) diff --git a/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.rs b/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.rs new file mode 100644 index 000000000..98f23de1f --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt b/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt new file mode 100644 index 000000000..771d6e1ef --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt @@ -0,0 +1,18 @@ +ROOT@[0; 21) + ERROR@[0; 2) + IF_KW@[0; 2) + err: `expected an item` + WHITESPACE@[2; 3) + err: `expected an item` + ERROR@[3; 8) + MATCH_KW@[3; 8) + WHITESPACE@[8; 10) + STRUCT_DEF@[10; 21) + STRUCT_KW@[10; 16) + WHITESPACE@[16; 17) + NAME@[17; 18) + IDENT@[17; 18) "S" + WHITESPACE@[18; 19) + NAMED_FIELD_DEF_LIST@[19; 21) + L_CURLY@[19; 20) + R_CURLY@[20; 21) diff --git a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.rs b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.rs new file mode 100644 index 000000000..48a3a3980 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.rs @@ -0,0 +1,2 @@ +#!/use/bin/env rusti +#!/use/bin/env rusti diff --git a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt new file mode 100644 index 000000000..57fb48420 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt @@ -0,0 +1,7 @@ +ROOT@[0; 42) + SHEBANG@[0; 20) + WHITESPACE@[20; 21) + err: `expected an item` + ERROR@[21; 41) + SHEBANG@[21; 41) + WHITESPACE@[41; 42) diff --git a/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.rs b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.rs new file mode 100644 index 000000000..009312270 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt new file mode 100644 index 000000000..b51c0573a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt @@ -0,0 +1,39 @@ +ROOT@[0; 40) + STRUCT_DEF@[0; 40) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + WHITESPACE@[8; 9) + NAMED_FIELD_DEF_LIST@[9; 39) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + NAMED_FIELD_DEF@[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) + NAMED_FIELD_DEF@[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) + R_CURLY@[38; 39) + err: `expected item, found `;` +consider removing this semicolon` + ERROR@[39; 40) + SEMI@[39; 40) diff --git a/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.rs b/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.rs new file mode 100644 index 000000000..060e65d06 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt b/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt new file mode 100644 index 000000000..646c84534 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt @@ -0,0 +1,16 @@ +ROOT@[0; 12) + USE_ITEM@[0; 12) + USE_KW@[0; 3) + 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" + COLONCOLON@[7; 9) + err: `expected identifier` + PATH_SEGMENT@[9; 11) + ERROR@[9; 11) + INT_NUMBER@[9; 11) "92" + SEMI@[11; 12) diff --git a/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.rs b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.rs new file mode 100644 index 000000000..de7f81628 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.rs @@ -0,0 +1,8 @@ +#[foo(foo, +, 92)] +fn foo() { +} + + +#[foo( +fn foo() { +} diff --git a/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt new file mode 100644 index 000000000..b3cf9b889 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt @@ -0,0 +1,55 @@ +ROOT@[0; 54) + FN_DEF@[0; 31) + ATTR@[0; 18) + POUND@[0; 1) + TOKEN_TREE@[1; 18) + L_BRACK@[1; 2) + 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) + FN_KW@[19; 21) + 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@[28; 31) + L_CURLY@[28; 29) + WHITESPACE@[29; 30) + R_CURLY@[30; 31) + WHITESPACE@[31; 34) + ATTR@[34; 53) + POUND@[34; 35) + TOKEN_TREE@[35; 53) + L_BRACK@[35; 36) + IDENT@[36; 39) "foo" + TOKEN_TREE@[39; 53) + L_PAREN@[39; 40) + WHITESPACE@[40; 41) + FN_KW@[41; 43) + 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) + R_CURLY@[52; 53) + err: `expected R_PAREN` + err: `expected R_BRACK` + err: `expected an item` + WHITESPACE@[53; 54) diff --git a/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.rs b/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.rs new file mode 100644 index 000000000..8069c111b --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt new file mode 100644 index 000000000..9abda7099 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt @@ -0,0 +1,74 @@ +ROOT@[0; 74) + STRUCT_DEF@[0; 73) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + WHITESPACE@[8; 9) + NAMED_FIELD_DEF_LIST@[9; 73) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + NAMED_FIELD_DEF@[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) + VISIBILITY@[27; 30) + PUB_KW@[27; 30) + WHITESPACE@[30; 31) + err: `expected field declaration` + ERROR@[31; 33) + INT_NUMBER@[31; 33) "92" + err: `expected COMMA` + WHITESPACE@[33; 38) + err: `expected field declaration` + ERROR@[38; 39) + PLUS@[38; 39) + err: `expected COMMA` + WHITESPACE@[39; 40) + err: `expected field declaration` + ERROR@[40; 41) + MINUS@[40; 41) + err: `expected COMMA` + WHITESPACE@[41; 42) + err: `expected field declaration` + ERROR@[42; 43) + STAR@[42; 43) + err: `expected COMMA` + WHITESPACE@[43; 48) + NAMED_FIELD_DEF@[48; 58) + VISIBILITY@[48; 51) + PUB_KW@[48; 51) + 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) + NAMED_FIELD_DEF@[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) + R_CURLY@[72; 73) + WHITESPACE@[73; 74) diff --git a/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.rs b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.rs new file mode 100644 index 000000000..dc869fb78 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.rs @@ -0,0 +1,9 @@ +} + +struct S; + +} + +fn foo(){} + +} diff --git a/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt new file mode 100644 index 000000000..802c69b31 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt @@ -0,0 +1,32 @@ +ROOT@[0; 31) + ERROR@[0; 1) + R_CURLY@[0; 1) + err: `unmatched `}`` + WHITESPACE@[1; 3) + STRUCT_DEF@[3; 12) + STRUCT_KW@[3; 9) + WHITESPACE@[9; 10) + NAME@[10; 11) + IDENT@[10; 11) "S" + SEMI@[11; 12) + WHITESPACE@[12; 14) + err: `unmatched `}`` + ERROR@[14; 15) + R_CURLY@[14; 15) + WHITESPACE@[15; 17) + FN_DEF@[17; 27) + FN_KW@[17; 19) + WHITESPACE@[19; 20) + NAME@[20; 23) + IDENT@[20; 23) "foo" + PARAM_LIST@[23; 25) + L_PAREN@[23; 24) + R_PAREN@[24; 25) + BLOCK@[25; 27) + L_CURLY@[25; 26) + R_CURLY@[26; 27) + WHITESPACE@[27; 29) + err: `unmatched `}`` + ERROR@[29; 30) + R_CURLY@[29; 30) + WHITESPACE@[30; 31) diff --git a/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.rs b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.rs new file mode 100644 index 000000000..9fcac19b5 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt new file mode 100644 index 000000000..95a34333b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt @@ -0,0 +1,70 @@ +ROOT@[0; 95) + FN_DEF@[0; 12) + FN_KW@[0; 2) + 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@[9; 12) + L_CURLY@[9; 10) + WHITESPACE@[10; 11) + R_CURLY@[11; 12) + WHITESPACE@[12; 14) + MACRO_CALL@[14; 19) + PATH@[14; 17) + PATH_SEGMENT@[14; 17) + NAME_REF@[14; 17) + IDENT@[14; 17) "bar" + err: `expected EXCL` + TOKEN_TREE@[17; 19) + L_PAREN@[17; 18) + R_PAREN@[18; 19) + err: `expected SEMI` + WHITESPACE@[19; 20) + err: `expected an item` + ERROR@[20; 80) + L_CURLY@[20; 21) + WHITESPACE@[21; 26) + IF_KW@[26; 28) + WHITESPACE@[28; 29) + TRUE_KW@[29; 33) + WHITESPACE@[33; 34) + ERROR@[34; 51) + L_CURLY@[34; 35) + WHITESPACE@[35; 44) + INT_NUMBER@[44; 45) "1" + WHITESPACE@[45; 50) + R_CURLY@[50; 51) + WHITESPACE@[51; 52) + ELSE_KW@[52; 56) + WHITESPACE@[56; 57) + ERROR@[57; 78) + L_CURLY@[57; 58) + WHITESPACE@[58; 67) + INT_NUMBER@[67; 68) "2" + WHITESPACE@[68; 69) + PLUS@[69; 70) + WHITESPACE@[70; 71) + INT_NUMBER@[71; 72) "3" + WHITESPACE@[72; 77) + R_CURLY@[77; 78) + WHITESPACE@[78; 79) + R_CURLY@[79; 80) + WHITESPACE@[80; 82) + FN_DEF@[82; 94) + FN_KW@[82; 84) + 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@[91; 94) + L_CURLY@[91; 92) + WHITESPACE@[92; 93) + R_CURLY@[93; 94) + WHITESPACE@[94; 95) diff --git a/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.rs b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.rs new file mode 100644 index 000000000..0dd30d0bd --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt new file mode 100644 index 000000000..fa8adf881 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt @@ -0,0 +1,44 @@ +ROOT@[0; 43) + STRUCT_DEF@[0; 11) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + TYPE_PARAM_LIST@[8; 11) + L_ANGLE@[8; 9) + err: `expected type parameter` + ERROR@[9; 11) + INT_NUMBER@[9; 11) "90" + err: `expected COMMA` + err: `expected R_ANGLE` + err: `expected `;`, `{`, or `(`` + WHITESPACE@[11; 12) + err: `expected an item` + ERROR@[12; 13) + PLUS@[12; 13) + WHITESPACE@[13; 14) + err: `expected an item` + ERROR@[14; 15) + INT_NUMBER@[14; 15) "2" + err: `expected an item` + ERROR@[15; 16) + R_ANGLE@[15; 16) + WHITESPACE@[16; 17) + err: `expected an item` + ERROR@[17; 31) + L_CURLY@[17; 18) + WHITESPACE@[18; 23) + IDENT@[23; 24) "f" + COLON@[24; 25) + WHITESPACE@[25; 26) + IDENT@[26; 29) "u32" + WHITESPACE@[29; 30) + R_CURLY@[30; 31) + WHITESPACE@[31; 33) + STRUCT_DEF@[33; 42) + STRUCT_KW@[33; 39) + WHITESPACE@[39; 40) + NAME@[40; 41) + IDENT@[40; 41) "T" + SEMI@[41; 42) + WHITESPACE@[42; 43) diff --git a/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.rs b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.rs new file mode 100644 index 000000000..985775282 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.rs @@ -0,0 +1,3 @@ +fn main() { + || -> () unsafe { () }; +} diff --git a/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt new file mode 100644 index 000000000..38667e030 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt @@ -0,0 +1,42 @@ +ROOT@[0; 42) + FN_DEF@[0; 41) + FN_KW@[0; 2) + 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@[10; 41) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + EXPR_STMT@[16; 39) + LAMBDA_EXPR@[16; 38) + 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) + err: `expected `{`` + WHITESPACE@[24; 25) + BLOCK_EXPR@[25; 38) + UNSAFE_KW@[25; 31) + WHITESPACE@[31; 32) + BLOCK@[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) + SEMI@[38; 39) + WHITESPACE@[39; 40) + R_CURLY@[40; 41) + WHITESPACE@[41; 42) diff --git a/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.rs b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.rs new file mode 100644 index 000000000..c1bd0a2d1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.rs @@ -0,0 +1 @@ +extern struct Foo; diff --git a/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt new file mode 100644 index 000000000..0cb7447c4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt @@ -0,0 +1,13 @@ +ROOT@[0; 19) + ERROR@[0; 6) + ABI@[0; 6) + EXTERN_KW@[0; 6) + err: `expected fn, trait or impl` + WHITESPACE@[6; 7) + STRUCT_DEF@[7; 18) + STRUCT_KW@[7; 13) + WHITESPACE@[13; 14) + NAME@[14; 17) + IDENT@[14; 17) "Foo" + SEMI@[17; 18) + WHITESPACE@[18; 19) diff --git a/crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt b/crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt new file mode 100644 index 000000000..a03aa05e3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt @@ -0,0 +1,387 @@ +ROOT@[0; 389) + FN_DEF@[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" + TYPE_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" + TYPE_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) + BIND_PAT@[39; 46) + NAME@[39; 46) + IDENT@[39; 46) "builder" + COLON@[46; 47) + WHITESPACE@[47; 48) + REFERENCE_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) + BIND_PAT@[56; 62) + NAME@[56; 62) + IDENT@[56; 62) "tokens" + COLON@[62; 63) + WHITESPACE@[63; 64) + REFERENCE_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) + BIND_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" + TYPE_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) + BIND_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" + SEMI@[124; 125) + WHITESPACE@[125; 130) + LET_STMT@[130; 389) + LET_KW@[130; 133) + WHITESPACE@[133; 134) + BIND_PAT@[134; 140) + NAME@[134; 140) + IDENT@[134; 140) "eat_ws" + WHITESPACE@[140; 141) + EQ@[141; 142) + WHITESPACE@[142; 143) + LAMBDA_EXPR@[143; 389) + PARAM_LIST@[143; 388) + PIPE@[143; 144) + PARAM@[144; 159) + BIND_PAT@[144; 147) + NAME@[144; 147) + IDENT@[144; 147) "idx" + COLON@[147; 148) + WHITESPACE@[148; 149) + REFERENCE_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) + BIND_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) + BIND_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` + BIND_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) + EXCL@[236; 237) + err: `expected COMMA` + PARAM@[237; 242) + BIND_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) + BIND_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) + BIND_PAT@[278; 283) + NAME@[278; 283) + IDENT@[278; 283) "break" + err: `expected COMMA` + err: `expected pattern` + PARAM@[283; 284) + ERROR@[283; 284) + SEMI@[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) + BIND_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) + BIND_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` + BIND_PAT@[330; 334) + NAME@[330; 334) + IDENT@[330; 334) "kind" + COMMA@[334; 335) + WHITESPACE@[335; 336) + BIND_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` + BIND_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) + SEMI@[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) + BIND_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) + SEMI@[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/ra_syntax/tests/data/parser/err/0013_invalid_type.rs b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.rs new file mode 100644 index 000000000..20dde3bc3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.rs @@ -0,0 +1,7 @@ +pub struct Cache( + RefCell, + >> +); + diff --git a/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt new file mode 100644 index 000000000..e1a6b6432 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt @@ -0,0 +1,89 @@ +ROOT@[0; 86) + STRUCT_DEF@[0; 72) + VISIBILITY@[0; 3) + PUB_KW@[0; 3) + WHITESPACE@[3; 4) + STRUCT_KW@[4; 10) + WHITESPACE@[10; 11) + NAME@[11; 16) + IDENT@[11; 16) "Cache" + POS_FIELD_LIST@[16; 72) + L_PAREN@[16; 17) + WHITESPACE@[17; 22) + POS_FIELD@[22; 68) + PATH_TYPE@[22; 68) + PATH@[22; 68) + PATH_SEGMENT@[22; 68) + NAME_REF@[22; 29) + IDENT@[22; 29) "RefCell" + TYPE_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" + TYPE_ARG_LIST@[37; 68) + L_ANGLE@[37; 38) + WHITESPACE@[38; 47) + 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) + TYPE_ARG@[63; 68) + PATH_TYPE@[63; 68) + PATH@[63; 68) + PATH_SEGMENT@[63; 68) + NAME_REF@[63; 66) + IDENT@[63; 66) "Box" + TYPE_ARG_LIST@[66; 68) + L_ANGLE@[66; 67) + err: `expected type` + TYPE_ARG@[67; 68) + ERROR@[67; 68) + AT@[67; 68) + err: `expected COMMA` + err: `expected R_ANGLE` + err: `expected COMMA` + err: `expected R_ANGLE` + err: `expected COMMA` + err: `expected R_ANGLE` + err: `expected COMMA` + WHITESPACE@[68; 69) + POS_FIELD@[69; 72) + PATH_TYPE@[69; 72) + PATH@[69; 72) + PATH_SEGMENT@[69; 72) + NAME_REF@[69; 72) + IDENT@[69; 72) "Any" + err: `expected COMMA` + err: `expected a type` + err: `expected R_PAREN` + err: `expected SEMI` + err: `expected an item` + ERROR@[72; 72) + ERROR@[72; 73) + R_ANGLE@[72; 73) + err: `expected an item` + ERROR@[73; 74) + COMMA@[73; 74) + WHITESPACE@[74; 79) + err: `expected an item` + ERROR@[79; 80) + R_ANGLE@[79; 80) + err: `expected an item` + ERROR@[80; 81) + R_ANGLE@[80; 81) + WHITESPACE@[81; 82) + err: `expected an item` + ERROR@[82; 83) + R_PAREN@[82; 83) + err: `expected an item` + ERROR@[83; 84) + SEMI@[83; 84) + WHITESPACE@[84; 86) diff --git a/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.rs b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.rs new file mode 100644 index 000000000..75c1d2f98 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.rs @@ -0,0 +1 @@ +fn foo() where T {} diff --git a/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt new file mode 100644 index 000000000..37826ce86 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt @@ -0,0 +1,31 @@ +ROOT@[0; 23) + FN_DEF@[0; 22) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + TYPE_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) + 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" + err: `expected colon` + WHITESPACE@[19; 20) + BLOCK@[20; 22) + L_CURLY@[20; 21) + R_CURLY@[21; 22) + WHITESPACE@[22; 23) diff --git a/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.rs b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.rs new file mode 100644 index 000000000..156e70251 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.rs @@ -0,0 +1,2 @@ +fn foo(}) { +} diff --git a/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt new file mode 100644 index 000000000..5f736a978 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt @@ -0,0 +1,24 @@ +ROOT@[0; 14) + FN_DEF@[0; 7) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 7) + L_PAREN@[6; 7) + err: `expected value parameter` + err: `expected R_PAREN` + err: `expected a block` + err: `unmatched `}`` + ERROR@[7; 8) + R_CURLY@[7; 8) + err: `expected an item` + ERROR@[8; 9) + R_PAREN@[8; 9) + WHITESPACE@[9; 10) + err: `expected an item` + ERROR@[10; 13) + L_CURLY@[10; 11) + WHITESPACE@[11; 12) + R_CURLY@[12; 13) + WHITESPACE@[13; 14) diff --git a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.rs b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.rs new file mode 100644 index 000000000..9ae857686 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.rs @@ -0,0 +1,6 @@ +fn foo() { + foo( + 1, 2 + ) + return 92; +} diff --git a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt new file mode 100644 index 000000000..a3163adcb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt @@ -0,0 +1,43 @@ +ROOT@[0; 56) + FN_DEF@[0; 55) + FN_KW@[0; 2) + 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@[9; 55) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + 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) + 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) + R_PAREN@[37; 38) + err: `expected SEMI` + WHITESPACE@[38; 43) + EXPR_STMT@[43; 53) + RETURN_EXPR@[43; 52) + RETURN_KW@[43; 49) + WHITESPACE@[49; 50) + LITERAL@[50; 52) + INT_NUMBER@[50; 52) "92" + SEMI@[52; 53) + WHITESPACE@[53; 54) + R_CURLY@[54; 55) + WHITESPACE@[55; 56) diff --git a/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.rs b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.rs new file mode 100644 index 000000000..17bd49777 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.rs @@ -0,0 +1,4 @@ +fn foo(foo: i32) { + let bar = 92; + 1 + +} diff --git a/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt new file mode 100644 index 000000000..f0be287ad --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt @@ -0,0 +1,46 @@ +ROOT@[0; 47) + FN_DEF@[0; 46) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 16) + L_PAREN@[6; 7) + PARAM@[7; 15) + BIND_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@[17; 46) + L_CURLY@[17; 18) + WHITESPACE@[18; 23) + LET_STMT@[23; 36) + LET_KW@[23; 26) + WHITESPACE@[26; 27) + BIND_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" + SEMI@[35; 36) + WHITESPACE@[36; 41) + BIN_EXPR@[41; 44) + LITERAL@[41; 42) + INT_NUMBER@[41; 42) "1" + WHITESPACE@[42; 43) + PLUS@[43; 44) + err: `expected expression` + WHITESPACE@[44; 45) + R_CURLY@[45; 46) + WHITESPACE@[46; 47) diff --git a/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.rs b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.rs new file mode 100644 index 000000000..fe604006c --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt new file mode 100644 index 000000000..c4d9f5e7e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt @@ -0,0 +1,131 @@ +ROOT@[0; 183) + IMPL_ITEM@[0; 182) + IMPL_KW@[0; 4) + 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) + ITEM_LIST@[14; 182) + L_CURLY@[14; 15) + WHITESPACE@[15; 20) + FN_DEF@[20; 161) + FN_KW@[20; 22) + 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) + err: `expected pattern` + err: `expected COLON` + err: `expected type` + 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@[47; 161) + L_CURLY@[47; 48) + WHITESPACE@[48; 57) + LET_STMT@[57; 85) + LET_KW@[57; 60) + WHITESPACE@[60; 61) + BIND_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) + 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) + SEMI@[84; 85) + WHITESPACE@[85; 94) + METHOD_CALL_EXPR@[94; 155) + FIELD_EXPR@[94; 105) + PATH_EXPR@[94; 98) + PATH@[94; 98) + PATH_SEGMENT@[94; 98) + SELF_KW@[94; 98) + 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) + STRUCT_LIT@[111; 154) + PATH@[111; 120) + PATH_SEGMENT@[111; 120) + NAME_REF@[111; 120) + IDENT@[111; 120) "ScopeData" + WHITESPACE@[120; 121) + NAMED_FIELD_LIST@[121; 154) + L_CURLY@[121; 122) + WHITESPACE@[122; 123) + NAMED_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) + NAMED_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" + EXCL@[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) + R_CURLY@[160; 161) + WHITESPACE@[161; 167) + FN_DEF@[167; 180) + FN_KW@[167; 169) + WHITESPACE@[169; 170) + NAME@[170; 180) + IDENT@[170; 180) "set_parent" + err: `expected function arguments` + err: `expected a block` + WHITESPACE@[180; 181) + R_CURLY@[181; 182) + WHITESPACE@[182; 183) diff --git a/crates/ra_syntax/tests/data/parser/err/0019_let_recover.rs b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.rs new file mode 100644 index 000000000..48bf3d68b --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0019_let_recover.txt b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt new file mode 100644 index 000000000..6e74771f1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt @@ -0,0 +1,103 @@ +ROOT@[0; 139) + FN_DEF@[0; 138) + FN_KW@[0; 2) + 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@[9; 138) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 24) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + BIND_PAT@[19; 22) + NAME@[19; 22) + IDENT@[19; 22) "foo" + WHITESPACE@[22; 23) + EQ@[23; 24) + err: `expected expression` + err: `expected SEMI` + WHITESPACE@[24; 29) + LET_STMT@[29; 41) + LET_KW@[29; 32) + WHITESPACE@[32; 33) + BIND_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" + SEMI@[40; 41) + WHITESPACE@[41; 46) + LET_STMT@[46; 49) + LET_KW@[46; 49) + err: `expected pattern` + err: `expected SEMI` + WHITESPACE@[49; 54) + LET_STMT@[54; 67) + LET_KW@[54; 57) + WHITESPACE@[57; 58) + BIND_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" + SEMI@[66; 67) + WHITESPACE@[67; 72) + LET_STMT@[72; 75) + LET_KW@[72; 75) + err: `expected pattern` + err: `expected SEMI` + WHITESPACE@[75; 80) + EXPR_STMT@[80; 90) + IF_EXPR@[80; 90) + IF_KW@[80; 82) + WHITESPACE@[82; 83) + CONDITION@[83; 87) + LITERAL@[83; 87) + TRUE_KW@[83; 87) + WHITESPACE@[87; 88) + BLOCK@[88; 90) + L_CURLY@[88; 89) + R_CURLY@[89; 90) + WHITESPACE@[90; 95) + LET_STMT@[95; 98) + LET_KW@[95; 98) + err: `expected pattern` + err: `expected SEMI` + WHITESPACE@[98; 103) + EXPR_STMT@[103; 116) + WHILE_EXPR@[103; 116) + WHILE_KW@[103; 108) + WHITESPACE@[108; 109) + CONDITION@[109; 113) + LITERAL@[109; 113) + TRUE_KW@[109; 113) + WHITESPACE@[113; 114) + BLOCK@[114; 116) + L_CURLY@[114; 115) + R_CURLY@[115; 116) + WHITESPACE@[116; 121) + LET_STMT@[121; 124) + LET_KW@[121; 124) + err: `expected pattern` + err: `expected SEMI` + WHITESPACE@[124; 129) + LOOP_EXPR@[129; 136) + LOOP_KW@[129; 133) + WHITESPACE@[133; 134) + BLOCK@[134; 136) + L_CURLY@[134; 135) + R_CURLY@[135; 136) + WHITESPACE@[136; 137) + R_CURLY@[137; 138) + WHITESPACE@[138; 139) diff --git a/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.rs b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.rs new file mode 100644 index 000000000..3393b668b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.rs @@ -0,0 +1,3 @@ +fn + +fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt new file mode 100644 index 000000000..b5218b0fa --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt @@ -0,0 +1,20 @@ +ROOT@[0; 16) + FN_DEF@[0; 2) + FN_KW@[0; 2) + err: `expected a name` + err: `expected function arguments` + err: `expected a block` + WHITESPACE@[2; 4) + FN_DEF@[4; 15) + FN_KW@[4; 6) + 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@[13; 15) + L_CURLY@[13; 14) + R_CURLY@[14; 15) + WHITESPACE@[15; 16) diff --git a/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.rs b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.rs new file mode 100644 index 000000000..7a6c264f6 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.rs @@ -0,0 +1,2 @@ +fn foo(x: i32, y) { +} diff --git a/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt new file mode 100644 index 000000000..8dcb58ae2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt @@ -0,0 +1,34 @@ +ROOT@[0; 22) + FN_DEF@[0; 21) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 17) + L_PAREN@[6; 7) + PARAM@[7; 13) + BIND_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) + BIND_PAT@[15; 16) + NAME@[15; 16) + IDENT@[15; 16) "y" + err: `expected COLON` + err: `expected type` + R_PAREN@[16; 17) + WHITESPACE@[17; 18) + BLOCK@[18; 21) + L_CURLY@[18; 19) + WHITESPACE@[19; 20) + R_CURLY@[20; 21) + WHITESPACE@[21; 22) diff --git a/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.rs b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.rs new file mode 100644 index 000000000..cd2d493a1 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt new file mode 100644 index 000000000..287e56ac4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt @@ -0,0 +1,189 @@ +ROOT@[0; 112) + FN_DEF@[0; 33) + FN_KW@[0; 2) + 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@[7; 33) + L_CURLY@[7; 8) + WHITESPACE@[8; 9) + EXPR_STMT@[9; 15) + ARRAY_EXPR@[9; 15) + 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) + err: `expected expression` + err: `expected R_BRACK` + err: `expected SEMI` + WHITESPACE@[15; 16) + err: `expected expression` + EXPR_STMT@[16; 17) + ERROR@[16; 17) + AT@[16; 17) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[17; 18) + ERROR@[17; 18) + COMMA@[17; 18) + err: `expected SEMI` + WHITESPACE@[18; 19) + STRUCT_DEF@[19; 26) + STRUCT_KW@[19; 25) + err: `expected a name` + ERROR@[25; 26) + COMMA@[25; 26) + err: `expected `;`, `{`, or `(`` + WHITESPACE@[26; 27) + LET_STMT@[27; 31) + LET_KW@[27; 30) + err: `expected pattern` + ERROR@[30; 31) + R_BRACK@[30; 31) + err: `expected SEMI` + WHITESPACE@[31; 32) + R_CURLY@[32; 33) + WHITESPACE@[33; 34) + FN_DEF@[34; 68) + FN_KW@[34; 36) + 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@[41; 68) + L_CURLY@[41; 42) + WHITESPACE@[42; 43) + EXPR_STMT@[43; 52) + CALL_EXPR@[43; 52) + PATH_EXPR@[43; 46) + PATH@[43; 46) + PATH_SEGMENT@[43; 46) + NAME_REF@[43; 46) + IDENT@[43; 46) "foo" + ARG_LIST@[46; 52) + 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) + err: `expected expression` + err: `expected SEMI` + WHITESPACE@[52; 53) + err: `expected expression` + EXPR_STMT@[53; 54) + ERROR@[53; 54) + AT@[53; 54) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[54; 55) + ERROR@[54; 55) + COMMA@[54; 55) + err: `expected SEMI` + WHITESPACE@[55; 56) + IMPL_ITEM@[56; 60) + IMPL_KW@[56; 60) + err: `expected type` + err: `expected `{`` + err: `expected expression` + EXPR_STMT@[60; 61) + ERROR@[60; 61) + COMMA@[60; 61) + err: `expected SEMI` + WHITESPACE@[61; 62) + LET_STMT@[62; 65) + LET_KW@[62; 65) + err: `expected pattern` + err: `expected SEMI` + err: `expected expression` + ERROR@[65; 66) + R_PAREN@[65; 66) + WHITESPACE@[66; 67) + R_CURLY@[67; 68) + WHITESPACE@[68; 69) + FN_DEF@[69; 111) + FN_KW@[69; 71) + 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@[76; 111) + L_CURLY@[76; 77) + WHITESPACE@[77; 78) + EXPR_STMT@[78; 91) + METHOD_CALL_EXPR@[78; 91) + 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; 91) + 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) + err: `expected expression` + err: `expected SEMI` + WHITESPACE@[91; 92) + err: `expected expression` + EXPR_STMT@[92; 93) + ERROR@[92; 93) + AT@[92; 93) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[93; 94) + ERROR@[93; 94) + COMMA@[93; 94) + err: `expected SEMI` + WHITESPACE@[94; 95) + err: `expected expression` + EXPR_STMT@[95; 96) + ERROR@[95; 96) + R_BRACK@[95; 96) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[96; 97) + ERROR@[96; 97) + COMMA@[96; 97) + err: `expected SEMI` + WHITESPACE@[97; 98) + TRAIT_DEF@[98; 104) + TRAIT_KW@[98; 103) + err: `expected a name` + ERROR@[103; 104) + COMMA@[103; 104) + err: `expected `{`` + WHITESPACE@[104; 105) + LET_STMT@[105; 108) + LET_KW@[105; 108) + err: `expected pattern` + err: `expected SEMI` + err: `expected expression` + ERROR@[108; 109) + R_PAREN@[108; 109) + WHITESPACE@[109; 110) + R_CURLY@[110; 111) + WHITESPACE@[111; 112) diff --git a/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.rs b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.rs new file mode 100644 index 000000000..0206d563e --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt new file mode 100644 index 000000000..2df81b12b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt @@ -0,0 +1,43 @@ +ROOT@[0; 94) + FN_DEF@[0; 55) + FN_KW@[0; 2) + 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@[10; 55) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + MACRO_CALL@[16; 49) + PATH@[16; 19) + PATH_SEGMENT@[16; 19) + NAME_REF@[16; 19) + IDENT@[16; 19) "foo" + EXCL@[19; 20) + WHITESPACE@[20; 21) + TOKEN_TREE@[21; 49) + L_PAREN@[21; 22) + WHITESPACE@[22; 31) + IDENT@[31; 34) "bar" + COMMA@[34; 35) + WHITESPACE@[35; 36) + STRING@[36; 41) + COMMA@[41; 42) + WHITESPACE@[42; 43) + INT_NUMBER@[43; 44) "1" + COMMA@[44; 45) + WHITESPACE@[45; 46) + FLOAT_NUMBER@[46; 49) "2.0" + err: `unmatched `}`` + WHITESPACE@[49; 54) + R_CURLY@[54; 55) + WHITESPACE@[55; 56) + COMMENT@[56; 91) + WHITESPACE@[91; 92) + err: `unmatched `}`` + ERROR@[92; 93) + R_CURLY@[92; 93) + WHITESPACE@[93; 94) diff --git a/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.rs b/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.rs new file mode 100644 index 000000000..6c2e95c02 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt b/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt new file mode 100644 index 000000000..195c12e08 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt @@ -0,0 +1,310 @@ +ROOT@[0; 240) + FN_DEF@[0; 53) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 4) + IDENT@[3; 4) "f" + TYPE_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) + 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) + 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) + L_PAREN@[28; 29) + FOR_TYPE@[29; 46) + FOR_KW@[29; 32) + TYPE_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" + TYPE_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@[51; 53) + L_CURLY@[51; 52) + R_CURLY@[52; 53) + WHITESPACE@[53; 55) + FN_DEF@[55; 239) + FN_KW@[55; 57) + 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@[65; 239) + L_CURLY@[65; 66) + WHITESPACE@[66; 71) + LET_STMT@[71; 121) + LET_KW@[71; 74) + WHITESPACE@[74; 75) + PLACEHOLDER_PAT@[75; 76) + UNDERSCORE@[75; 76) + COLON@[76; 77) + WHITESPACE@[77; 78) + PATH_TYPE@[78; 121) + PATH@[78; 88) + PATH_SEGMENT@[78; 88) + NAME_REF@[78; 81) + IDENT@[78; 81) "Box" + TYPE_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) + err: `expected COMMA` + err: `expected R_ANGLE` + WHITESPACE@[88; 89) + PLUS@[89; 90) + WHITESPACE@[90; 91) + 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) + L_PAREN@[102; 103) + FOR_TYPE@[103; 120) + FOR_KW@[103; 106) + TYPE_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" + TYPE_ARG_LIST@[116; 120) + L_ANGLE@[116; 117) + LIFETIME_ARG@[117; 119) + LIFETIME@[117; 119) "'a" + R_ANGLE@[119; 120) + R_PAREN@[120; 121) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[121; 123) + ERROR@[121; 122) + R_ANGLE@[121; 122) + SEMI@[122; 123) + WHITESPACE@[123; 128) + LET_STMT@[128; 141) + LET_KW@[128; 131) + WHITESPACE@[131; 132) + PLACEHOLDER_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" + TYPE_ARG_LIST@[138; 141) + L_ANGLE@[138; 139) + TYPE_ARG@[139; 141) + PAREN_TYPE@[139; 141) + L_PAREN@[139; 140) + err: `expected type` + ERROR@[140; 141) + QUESTION@[140; 141) + err: `expected R_PAREN` + err: `expected COMMA` + err: `expected R_ANGLE` + err: `expected SEMI` + EXPR_STMT@[141; 146) + PATH_EXPR@[141; 146) + PATH@[141; 146) + PATH_SEGMENT@[141; 146) + NAME_REF@[141; 146) + IDENT@[141; 146) "Sized" + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[146; 147) + ERROR@[146; 147) + R_PAREN@[146; 147) + err: `expected SEMI` + WHITESPACE@[147; 148) + err: `expected expression` + EXPR_STMT@[148; 149) + ERROR@[148; 149) + PLUS@[148; 149) + err: `expected SEMI` + WHITESPACE@[149; 150) + EXPR_STMT@[150; 151) + PAREN_EXPR@[150; 151) + L_PAREN@[150; 151) + err: `expected expression` + err: `expected R_PAREN` + err: `expected SEMI` + EXPR_STMT@[151; 157) + FOR_EXPR@[151; 157) + FOR_KW@[151; 154) + err: `expected pattern` + ERROR@[154; 155) + L_ANGLE@[154; 155) + err: `expected IN_KW` + err: `expected expression` + ERROR@[155; 157) + LIFETIME@[155; 157) "'a" + err: `expected a block` + err: `expected expression` + EXPR_STMT@[157; 158) + ERROR@[157; 158) + R_ANGLE@[157; 158) + err: `expected SEMI` + WHITESPACE@[158; 159) + EXPR_STMT@[159; 180) + 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) + err: `expected expression` + ERROR@[165; 167) + LIFETIME@[165; 167) "'a" + R_ANGLE@[167; 168) + err: `expected expression` + 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) + err: `expected expression` + ERROR@[179; 180) + SEMI@[179; 180) + err: `expected SEMI` + WHITESPACE@[180; 185) + LET_STMT@[185; 235) + LET_KW@[185; 188) + WHITESPACE@[188; 189) + PLACEHOLDER_PAT@[189; 190) + UNDERSCORE@[189; 190) + COLON@[190; 191) + WHITESPACE@[191; 192) + PATH_TYPE@[192; 235) + PATH@[192; 215) + PATH_SEGMENT@[192; 215) + NAME_REF@[192; 195) + IDENT@[192; 195) "Box" + TYPE_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) + TYPE_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" + TYPE_ARG_LIST@[210; 214) + L_ANGLE@[210; 211) + LIFETIME_ARG@[211; 213) + LIFETIME@[211; 213) "'a" + R_ANGLE@[213; 214) + R_PAREN@[214; 215) + err: `expected COMMA` + err: `expected R_ANGLE` + WHITESPACE@[215; 216) + PLUS@[216; 217) + WHITESPACE@[217; 218) + 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) + 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) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[235; 237) + ERROR@[235; 236) + R_ANGLE@[235; 236) + SEMI@[236; 237) + WHITESPACE@[237; 238) + R_CURLY@[238; 239) + WHITESPACE@[239; 240) diff --git a/crates/ra_syntax/tests/data/parser/err/0025_nope.rs b/crates/ra_syntax/tests/data/parser/err/0025_nope.rs new file mode 100644 index 000000000..28726ed51 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/err/0025_nope.txt b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt new file mode 100644 index 000000000..c30b8585f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt @@ -0,0 +1,203 @@ +ROOT@[0; 575) + FN_DEF@[0; 574) + FN_KW@[0; 2) + 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@[10; 574) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + ENUM_DEF@[16; 152) + ENUM_KW@[16; 20) + WHITESPACE@[20; 21) + NAME@[21; 25) + IDENT@[21; 25) "Test" + WHITESPACE@[25; 26) + ENUM_VARIANT_LIST@[26; 152) + L_CURLY@[26; 27) + WHITESPACE@[27; 36) + ENUM_VARIANT@[36; 40) + NAME@[36; 40) + IDENT@[36; 40) "Var1" + COMMA@[40; 41) + WHITESPACE@[41; 50) + ENUM_VARIANT@[50; 62) + NAME@[50; 54) + IDENT@[50; 54) "Var2" + POS_FIELD_LIST@[54; 62) + L_PAREN@[54; 55) + POS_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) + ENUM_VARIANT@[72; 145) + NAME@[72; 76) + IDENT@[72; 76) "Var3" + WHITESPACE@[76; 77) + NAMED_FIELD_DEF_LIST@[77; 145) + L_CURLY@[77; 78) + WHITESPACE@[78; 91) + NAMED_FIELD_DEF@[91; 95) + NAME@[91; 94) + IDENT@[91; 94) "abc" + COLON@[94; 95) + err: `expected type` + err: `expected COMMA` + WHITESPACE@[95; 96) + err: `expected field` + ERROR@[96; 98) + L_CURLY@[96; 97) + R_CURLY@[97; 98) + err: `expected field declaration` + ERROR@[98; 99) + COMMA@[98; 99) + WHITESPACE@[99; 100) + COMMENT@[100; 135) + WHITESPACE@[135; 144) + R_CURLY@[144; 145) + COMMA@[145; 146) + WHITESPACE@[146; 151) + R_CURLY@[151; 152) + WHITESPACE@[152; 158) + COMMENT@[158; 171) + WHITESPACE@[171; 176) + LET_STMT@[176; 186) + LET_KW@[176; 179) + WHITESPACE@[179; 180) + BIND_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" + SEMI@[185; 186) + WHITESPACE@[186; 191) + ENUM_DEF@[191; 223) + ENUM_KW@[191; 195) + WHITESPACE@[195; 196) + NAME@[196; 201) + IDENT@[196; 201) "Test2" + WHITESPACE@[201; 202) + ENUM_VARIANT_LIST@[202; 223) + L_CURLY@[202; 203) + WHITESPACE@[203; 212) + ENUM_VARIANT@[212; 216) + NAME@[212; 216) + IDENT@[212; 216) "Fine" + COMMA@[216; 217) + WHITESPACE@[217; 222) + R_CURLY@[222; 223) + WHITESPACE@[223; 229) + ENUM_DEF@[229; 300) + ENUM_KW@[229; 233) + WHITESPACE@[233; 234) + NAME@[234; 239) + IDENT@[234; 239) "Test3" + WHITESPACE@[239; 240) + ENUM_VARIANT_LIST@[240; 300) + L_CURLY@[240; 241) + WHITESPACE@[241; 250) + ENUM_VARIANT@[250; 293) + NAME@[250; 259) + IDENT@[250; 259) "StillFine" + WHITESPACE@[259; 260) + NAMED_FIELD_DEF_LIST@[260; 293) + L_CURLY@[260; 261) + WHITESPACE@[261; 274) + NAMED_FIELD_DEF@[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) + R_CURLY@[292; 293) + COMMA@[293; 294) + WHITESPACE@[294; 299) + R_CURLY@[299; 300) + WHITESPACE@[300; 306) + EXPR_STMT@[306; 459) + BLOCK_EXPR@[306; 459) + BLOCK@[306; 459) + L_CURLY@[306; 307) + WHITESPACE@[307; 316) + COMMENT@[316; 329) + WHITESPACE@[329; 338) + ENUM_DEF@[338; 453) + ENUM_KW@[338; 342) + WHITESPACE@[342; 343) + NAME@[343; 348) + IDENT@[343; 348) "Test4" + WHITESPACE@[348; 349) + ENUM_VARIANT_LIST@[349; 453) + L_CURLY@[349; 350) + WHITESPACE@[350; 363) + ENUM_VARIANT@[363; 372) + NAME@[363; 367) + IDENT@[363; 367) "Nope" + POS_FIELD_LIST@[367; 372) + L_PAREN@[367; 368) + POS_FIELD@[368; 371) + PATH_TYPE@[368; 371) + PATH@[368; 371) + PATH_SEGMENT@[368; 371) + NAME_REF@[368; 371) + IDENT@[368; 371) "i32" + err: `expected COMMA` + WHITESPACE@[371; 372) + err: `expected a type` + err: `expected R_PAREN` + err: `expected COMMA` + err: `expected enum variant` + ERROR@[372; 372) + ERROR@[372; 374) + L_CURLY@[372; 373) + R_CURLY@[373; 374) + err: `expected enum variant` + ERROR@[374; 375) + R_PAREN@[374; 375) + WHITESPACE@[375; 376) + COMMENT@[376; 396) + WHITESPACE@[396; 422) + COMMENT@[422; 443) + WHITESPACE@[443; 452) + R_CURLY@[452; 453) + WHITESPACE@[453; 458) + R_CURLY@[458; 459) + WHITESPACE@[459; 464) + COMMENT@[464; 486) + WHITESPACE@[486; 491) + LET_STMT@[491; 510) + LET_KW@[491; 494) + WHITESPACE@[494; 495) + BIND_PAT@[495; 505) + NAME@[495; 505) + IDENT@[495; 505) "bad_syntax" + WHITESPACE@[505; 506) + EQ@[506; 507) + WHITESPACE@[507; 508) + err: `expected expression` + ERROR@[508; 509) + UNDERSCORE@[508; 509) + SEMI@[509; 510) + WHITESPACE@[510; 511) + COMMENT@[511; 572) + WHITESPACE@[572; 573) + R_CURLY@[573; 574) + WHITESPACE@[574; 575) diff --git a/crates/ra_syntax/tests/data/parser/fuzz-failures/0000.rs b/crates/ra_syntax/tests/data/parser/fuzz-failures/0000.rs new file mode 100644 index 000000000..53c93d9e9 --- /dev/null +++ b/crates/ra_syntax/tests/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: &AtomEdit) -> File { + self.incremental_reparse(edit).unwrap_or_else(|| self.full_reparse(edit)) + } + pub fn incremental_reparse(&self, edit: &AtomEdit) -> 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: &AtomEdit) -> 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 AtomEdit { + pub delete: TextRange, + pub insert: String, +} + +impl AtomEdit { + pub fn replace(range: TextRange, replace_with: String) -> AtomEdit { + AtomEdit { delete: range, insert: replace_with } + } + + pub fn delete(range: TextRange) -> AtomEdit { + AtomEdit::replace(range, String::new()) + } + + pub fn insert(offset: TextUnit, text: String) -> AtomEdit { + AtomEdit::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, + NAMED_FIELD_DEF_LIST => grammar::named_field_def_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 AtomEdit { + pub fn replace(range: TextRange, replace_with: String) -> AtomEdit { + AtomEdit { delete: range, insert: replace_with } + } + + pub fn delete(range: TextRange) -> AtomEdit { + AtomEdit::replace(range, String::new()) + } + + pub fn insert(offset: TextUnit, text: String) -> AtomEdit { + AtomEdit::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::named_field_def_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: &AtomEdit, +) -> 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/ra_syntax/tests/data/parser/fuzz-failures/0001.rs b/crates/ra_syntax/tests/data/parser/fuzz-failures/0001.rs new file mode 100644 index 000000000..099cc5f84 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/fuzz-failures/0001.rs @@ -0,0 +1,106 @@ +use ra_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/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.rs b/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.rs new file mode 100644 index 000000000..31a1e435f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.rs @@ -0,0 +1 @@ +const unsafe fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt new file mode 100644 index 000000000..956532981 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt @@ -0,0 +1,18 @@ +ROOT@[0; 25) + FN_DEF@[0; 24) + CONST_KW@[0; 5) + WHITESPACE@[5; 6) + UNSAFE_KW@[6; 12) + WHITESPACE@[12; 13) + FN_KW@[13; 15) + 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@[22; 24) + L_CURLY@[22; 23) + R_CURLY@[23; 24) + WHITESPACE@[24; 25) diff --git a/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.rs b/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.rs new file mode 100644 index 000000000..8c84d9cd7 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.rs @@ -0,0 +1 @@ +const fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt new file mode 100644 index 000000000..bda875fc5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt @@ -0,0 +1,16 @@ +ROOT@[0; 18) + FN_DEF@[0; 17) + CONST_KW@[0; 5) + WHITESPACE@[5; 6) + FN_KW@[6; 8) + 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@[15; 17) + L_CURLY@[15; 16) + R_CURLY@[16; 17) + WHITESPACE@[17; 18) diff --git a/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.rs b/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.rs new file mode 100644 index 000000000..26a9ccd1e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.rs @@ -0,0 +1 @@ +extern {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt b/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt new file mode 100644 index 000000000..2c2bbd035 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt @@ -0,0 +1,9 @@ +ROOT@[0; 10) + EXTERN_BLOCK@[0; 9) + ABI@[0; 6) + EXTERN_KW@[0; 6) + WHITESPACE@[6; 7) + EXTERN_ITEM_LIST@[7; 9) + L_CURLY@[7; 8) + R_CURLY@[8; 9) + WHITESPACE@[9; 10) diff --git a/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.rs b/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.rs new file mode 100644 index 000000000..394a049f0 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.rs @@ -0,0 +1 @@ +extern fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt new file mode 100644 index 000000000..f6e769475 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt @@ -0,0 +1,17 @@ +ROOT@[0; 19) + FN_DEF@[0; 18) + ABI@[0; 6) + EXTERN_KW@[0; 6) + WHITESPACE@[6; 7) + FN_KW@[7; 9) + WHITESPACE@[9; 10) + NAME@[10; 13) + IDENT@[10; 13) "foo" + PARAM_LIST@[13; 15) + L_PAREN@[13; 14) + R_PAREN@[14; 15) + WHITESPACE@[15; 16) + BLOCK@[16; 18) + L_CURLY@[16; 17) + R_CURLY@[17; 18) + WHITESPACE@[18; 19) diff --git a/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.rs b/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.rs new file mode 100644 index 000000000..49af74e1b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.rs @@ -0,0 +1 @@ +extern crate foo; diff --git a/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt b/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt new file mode 100644 index 000000000..fc025b0f3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt @@ -0,0 +1,10 @@ +ROOT@[0; 18) + EXTERN_CRATE_ITEM@[0; 17) + EXTERN_KW@[0; 6) + WHITESPACE@[6; 7) + CRATE_KW@[7; 12) + WHITESPACE@[12; 13) + NAME@[13; 16) + IDENT@[13; 16) "foo" + SEMI@[16; 17) + WHITESPACE@[17; 18) diff --git a/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.rs b/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.rs new file mode 100644 index 000000000..04e021550 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.rs @@ -0,0 +1 @@ +unsafe trait T {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt b/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt new file mode 100644 index 000000000..fb97cc042 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt @@ -0,0 +1,13 @@ +ROOT@[0; 18) + TRAIT_DEF@[0; 17) + UNSAFE_KW@[0; 6) + WHITESPACE@[6; 7) + TRAIT_KW@[7; 12) + WHITESPACE@[12; 13) + NAME@[13; 14) + IDENT@[13; 14) "T" + WHITESPACE@[14; 15) + ITEM_LIST@[15; 17) + L_CURLY@[15; 16) + R_CURLY@[16; 17) + WHITESPACE@[17; 18) diff --git a/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.rs b/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.rs new file mode 100644 index 000000000..41055f41d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.rs @@ -0,0 +1 @@ +unsafe impl Foo {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt b/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt new file mode 100644 index 000000000..fa596394f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt @@ -0,0 +1,16 @@ +ROOT@[0; 19) + IMPL_ITEM@[0; 18) + UNSAFE_KW@[0; 6) + WHITESPACE@[6; 7) + IMPL_KW@[7; 11) + WHITESPACE@[11; 12) + PATH_TYPE@[12; 15) + PATH@[12; 15) + PATH_SEGMENT@[12; 15) + NAME_REF@[12; 15) + IDENT@[12; 15) "Foo" + WHITESPACE@[15; 16) + ITEM_LIST@[16; 18) + L_CURLY@[16; 17) + R_CURLY@[17; 18) + WHITESPACE@[18; 19) diff --git a/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.rs b/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.rs new file mode 100644 index 000000000..03d29f324 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.rs @@ -0,0 +1 @@ +unsafe auto trait T {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt new file mode 100644 index 000000000..e642bbf80 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt @@ -0,0 +1,15 @@ +ROOT@[0; 23) + TRAIT_DEF@[0; 22) + UNSAFE_KW@[0; 6) + WHITESPACE@[6; 7) + AUTO_KW@[7; 11) + WHITESPACE@[11; 12) + TRAIT_KW@[12; 17) + WHITESPACE@[17; 18) + NAME@[18; 19) + IDENT@[18; 19) "T" + WHITESPACE@[19; 20) + ITEM_LIST@[20; 22) + L_CURLY@[20; 21) + R_CURLY@[21; 22) + WHITESPACE@[22; 23) diff --git a/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.rs b/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.rs new file mode 100644 index 000000000..9cd6c57bd --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.rs @@ -0,0 +1 @@ +unsafe default impl Foo {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt new file mode 100644 index 000000000..99d33a902 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt @@ -0,0 +1,18 @@ +ROOT@[0; 27) + IMPL_ITEM@[0; 26) + UNSAFE_KW@[0; 6) + WHITESPACE@[6; 7) + DEFAULT_KW@[7; 14) + WHITESPACE@[14; 15) + IMPL_KW@[15; 19) + WHITESPACE@[19; 20) + PATH_TYPE@[20; 23) + PATH@[20; 23) + PATH_SEGMENT@[20; 23) + NAME_REF@[20; 23) + IDENT@[20; 23) "Foo" + WHITESPACE@[23; 24) + ITEM_LIST@[24; 26) + L_CURLY@[24; 25) + R_CURLY@[25; 26) + WHITESPACE@[26; 27) diff --git a/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.rs b/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.rs new file mode 100644 index 000000000..33cfc4cd7 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.rs @@ -0,0 +1 @@ +unsafe fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt new file mode 100644 index 000000000..39ec53b26 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt @@ -0,0 +1,16 @@ +ROOT@[0; 19) + FN_DEF@[0; 18) + UNSAFE_KW@[0; 6) + WHITESPACE@[6; 7) + FN_KW@[7; 9) + WHITESPACE@[9; 10) + NAME@[10; 13) + IDENT@[10; 13) "foo" + PARAM_LIST@[13; 15) + L_PAREN@[13; 14) + R_PAREN@[14; 15) + WHITESPACE@[15; 16) + BLOCK@[16; 18) + L_CURLY@[16; 17) + R_CURLY@[17; 18) + WHITESPACE@[18; 19) diff --git a/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.rs b/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.rs new file mode 100644 index 000000000..1295c2cd2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.rs @@ -0,0 +1 @@ +unsafe extern "C" fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt new file mode 100644 index 000000000..54e296ed6 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt @@ -0,0 +1,21 @@ +ROOT@[0; 30) + FN_DEF@[0; 29) + UNSAFE_KW@[0; 6) + WHITESPACE@[6; 7) + ABI@[7; 17) + EXTERN_KW@[7; 13) + WHITESPACE@[13; 14) + STRING@[14; 17) + WHITESPACE@[17; 18) + FN_KW@[18; 20) + WHITESPACE@[20; 21) + NAME@[21; 24) + IDENT@[21; 24) "foo" + PARAM_LIST@[24; 26) + L_PAREN@[24; 25) + R_PAREN@[25; 26) + WHITESPACE@[26; 27) + BLOCK@[27; 29) + L_CURLY@[27; 28) + R_CURLY@[28; 29) + WHITESPACE@[29; 30) diff --git a/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.rs b/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.rs new file mode 100644 index 000000000..26141e904 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.rs @@ -0,0 +1 @@ +fn foo(){} unsafe { } fn bar(){} diff --git a/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt b/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt new file mode 100644 index 000000000..9825e5ace --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt @@ -0,0 +1,35 @@ +ROOT@[0; 33) + FN_DEF@[0; 10) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 8) + L_PAREN@[6; 7) + R_PAREN@[7; 8) + BLOCK@[8; 10) + L_CURLY@[8; 9) + R_CURLY@[9; 10) + WHITESPACE@[10; 11) + err: `expected an item` + ERROR@[11; 17) + UNSAFE_KW@[11; 17) + WHITESPACE@[17; 18) + err: `expected an item` + ERROR@[18; 21) + L_CURLY@[18; 19) + WHITESPACE@[19; 20) + R_CURLY@[20; 21) + WHITESPACE@[21; 22) + FN_DEF@[22; 32) + FN_KW@[22; 24) + WHITESPACE@[24; 25) + NAME@[25; 28) + IDENT@[25; 28) "bar" + PARAM_LIST@[28; 30) + L_PAREN@[28; 29) + R_PAREN@[29; 30) + BLOCK@[30; 32) + L_CURLY@[30; 31) + R_CURLY@[31; 32) + WHITESPACE@[32; 33) diff --git a/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.rs b/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.rs new file mode 100644 index 000000000..defd110c4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.rs @@ -0,0 +1 @@ +type Result = (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt new file mode 100644 index 000000000..bf65e8a37 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt @@ -0,0 +1,20 @@ +ROOT@[0; 21) + TYPE_DEF@[0; 20) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 11) + IDENT@[5; 11) "Result" + TYPE_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) + SEMI@[19; 20) + WHITESPACE@[20; 21) diff --git a/crates/ra_syntax/tests/data/parser/inline/0015_type_item.rs b/crates/ra_syntax/tests/data/parser/inline/0015_type_item.rs new file mode 100644 index 000000000..04c0344fa --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0015_type_item.rs @@ -0,0 +1 @@ +type Foo = Bar; diff --git a/crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt b/crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt new file mode 100644 index 000000000..71048bcc5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt @@ -0,0 +1,16 @@ +ROOT@[0; 16) + TYPE_DEF@[0; 15) + TYPE_KW@[0; 4) + 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" + SEMI@[14; 15) + WHITESPACE@[15; 16) diff --git a/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.rs b/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.rs new file mode 100644 index 000000000..a602d07f0 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.rs @@ -0,0 +1 @@ +type Foo where Foo: Copy = (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt new file mode 100644 index 000000000..c3fca013e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt @@ -0,0 +1,32 @@ +ROOT@[0; 31) + TYPE_DEF@[0; 30) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 8) + IDENT@[5; 8) "Foo" + WHITESPACE@[8; 9) + WHERE_CLAUSE@[9; 24) + WHERE_KW@[9; 14) + 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) + PATH_TYPE@[20; 24) + PATH@[20; 24) + PATH_SEGMENT@[20; 24) + NAME_REF@[20; 24) + IDENT@[20; 24) "Copy" + err: `expected COMMA` + WHITESPACE@[24; 25) + EQ@[25; 26) + WHITESPACE@[26; 27) + TUPLE_TYPE@[27; 29) + L_PAREN@[27; 28) + R_PAREN@[28; 29) + SEMI@[29; 30) + WHITESPACE@[30; 31) diff --git a/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.rs b/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.rs new file mode 100644 index 000000000..6e1b25101 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.rs @@ -0,0 +1 @@ +type T = (i32); diff --git a/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt b/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt new file mode 100644 index 000000000..97e73fea1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt @@ -0,0 +1,19 @@ +ROOT@[0; 16) + TYPE_DEF@[0; 15) + TYPE_KW@[0; 4) + 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) + SEMI@[14; 15) + WHITESPACE@[15; 16) diff --git a/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.rs b/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.rs new file mode 100644 index 000000000..c039cf7d3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.rs @@ -0,0 +1 @@ +type T = (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt b/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt new file mode 100644 index 000000000..5d04d42fc --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt @@ -0,0 +1,14 @@ +ROOT@[0; 13) + TYPE_DEF@[0; 12) + TYPE_KW@[0; 4) + 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) + SEMI@[11; 12) + WHITESPACE@[12; 13) diff --git a/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.rs b/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.rs new file mode 100644 index 000000000..cb66bad24 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.rs @@ -0,0 +1 @@ +type T = (i32,); diff --git a/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt b/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt new file mode 100644 index 000000000..2cd8be9ab --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt @@ -0,0 +1,20 @@ +ROOT@[0; 17) + TYPE_DEF@[0; 16) + TYPE_KW@[0; 4) + 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) + SEMI@[15; 16) + WHITESPACE@[16; 17) diff --git a/crates/ra_syntax/tests/data/parser/inline/0020_never_type.rs b/crates/ra_syntax/tests/data/parser/inline/0020_never_type.rs new file mode 100644 index 000000000..de399fcf4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0020_never_type.rs @@ -0,0 +1 @@ +type Never = !; diff --git a/crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt b/crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt new file mode 100644 index 000000000..6205d9669 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt @@ -0,0 +1,13 @@ +ROOT@[0; 16) + TYPE_DEF@[0; 15) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 10) + IDENT@[5; 10) "Never" + WHITESPACE@[10; 11) + EQ@[11; 12) + WHITESPACE@[12; 13) + NEVER_TYPE@[13; 14) + EXCL@[13; 14) + SEMI@[14; 15) + WHITESPACE@[15; 16) diff --git a/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.rs b/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.rs new file mode 100644 index 000000000..fae705131 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.rs @@ -0,0 +1 @@ +type T = *(); diff --git a/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt b/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt new file mode 100644 index 000000000..23e68557a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt @@ -0,0 +1,17 @@ +ROOT@[0; 14) + TYPE_DEF@[0; 13) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "T" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + POINTER_TYPE@[9; 12) + STAR@[9; 10) + err: `expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)` + TUPLE_TYPE@[10; 12) + L_PAREN@[10; 11) + R_PAREN@[11; 12) + SEMI@[12; 13) + WHITESPACE@[13; 14) diff --git a/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.rs b/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.rs new file mode 100644 index 000000000..04b2bb9ba --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.rs @@ -0,0 +1,2 @@ +type M = *mut (); +type C = *mut (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt b/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt new file mode 100644 index 000000000..33f5ad8b4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt @@ -0,0 +1,35 @@ +ROOT@[0; 36) + TYPE_DEF@[0; 17) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "M" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + POINTER_TYPE@[9; 16) + STAR@[9; 10) + MUT_KW@[10; 13) + WHITESPACE@[13; 14) + TUPLE_TYPE@[14; 16) + L_PAREN@[14; 15) + R_PAREN@[15; 16) + SEMI@[16; 17) + WHITESPACE@[17; 18) + TYPE_DEF@[18; 35) + TYPE_KW@[18; 22) + WHITESPACE@[22; 23) + NAME@[23; 24) + IDENT@[23; 24) "C" + WHITESPACE@[24; 25) + EQ@[25; 26) + WHITESPACE@[26; 27) + POINTER_TYPE@[27; 34) + STAR@[27; 28) + MUT_KW@[28; 31) + WHITESPACE@[31; 32) + TUPLE_TYPE@[32; 34) + L_PAREN@[32; 33) + R_PAREN@[33; 34) + SEMI@[34; 35) + WHITESPACE@[35; 36) diff --git a/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.rs b/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.rs new file mode 100644 index 000000000..a94851443 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.rs @@ -0,0 +1 @@ +type T = [() 92]; diff --git a/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt b/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt new file mode 100644 index 000000000..90bdc5d2e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt @@ -0,0 +1,27 @@ +ROOT@[0; 18) + TYPE_DEF@[0; 12) + TYPE_KW@[0; 4) + 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) + err: `expected `;` or `]`` + err: `expected SEMI` + WHITESPACE@[12; 13) + err: `expected an item` + ERROR@[13; 15) + INT_NUMBER@[13; 15) "92" + err: `expected an item` + ERROR@[15; 16) + R_BRACK@[15; 16) + err: `expected an item` + ERROR@[16; 17) + SEMI@[16; 17) + WHITESPACE@[17; 18) diff --git a/crates/ra_syntax/tests/data/parser/inline/0024_array_type.rs b/crates/ra_syntax/tests/data/parser/inline/0024_array_type.rs new file mode 100644 index 000000000..27eb22f22 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0024_array_type.rs @@ -0,0 +1 @@ +type T = [(); 92]; diff --git a/crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt b/crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt new file mode 100644 index 000000000..809c86974 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt @@ -0,0 +1,21 @@ +ROOT@[0; 19) + TYPE_DEF@[0; 18) + TYPE_KW@[0; 4) + 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) + SEMI@[12; 13) + WHITESPACE@[13; 14) + LITERAL@[14; 16) + INT_NUMBER@[14; 16) "92" + R_BRACK@[16; 17) + SEMI@[17; 18) + WHITESPACE@[18; 19) diff --git a/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.rs b/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.rs new file mode 100644 index 000000000..4da1af827 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.rs @@ -0,0 +1 @@ +type T = [()]; diff --git a/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt b/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt new file mode 100644 index 000000000..978530a6a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt @@ -0,0 +1,17 @@ +ROOT@[0; 15) + TYPE_DEF@[0; 14) + TYPE_KW@[0; 4) + 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) + SEMI@[13; 14) + WHITESPACE@[14; 15) diff --git a/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.rs b/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.rs new file mode 100644 index 000000000..3ac0badab --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.rs @@ -0,0 +1,3 @@ +type A = &(); +type B = &'static (); +type C = &mut (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt b/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt new file mode 100644 index 000000000..ff27ce5dd --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt @@ -0,0 +1,50 @@ +ROOT@[0; 54) + TYPE_DEF@[0; 13) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "A" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + REFERENCE_TYPE@[9; 12) + AMP@[9; 10) + TUPLE_TYPE@[10; 12) + L_PAREN@[10; 11) + R_PAREN@[11; 12) + SEMI@[12; 13) + WHITESPACE@[13; 14) + TYPE_DEF@[14; 35) + TYPE_KW@[14; 18) + WHITESPACE@[18; 19) + NAME@[19; 20) + IDENT@[19; 20) "B" + WHITESPACE@[20; 21) + EQ@[21; 22) + WHITESPACE@[22; 23) + REFERENCE_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) + SEMI@[34; 35) + WHITESPACE@[35; 36) + TYPE_DEF@[36; 53) + TYPE_KW@[36; 40) + WHITESPACE@[40; 41) + NAME@[41; 42) + IDENT@[41; 42) "C" + WHITESPACE@[42; 43) + EQ@[43; 44) + WHITESPACE@[44; 45) + REFERENCE_TYPE@[45; 52) + AMP@[45; 46) + MUT_KW@[46; 49) + WHITESPACE@[49; 50) + TUPLE_TYPE@[50; 52) + L_PAREN@[50; 51) + R_PAREN@[51; 52) + SEMI@[52; 53) + WHITESPACE@[53; 54) diff --git a/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.rs b/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.rs new file mode 100644 index 000000000..7952dbd57 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.rs @@ -0,0 +1 @@ +type Placeholder = _; diff --git a/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt b/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt new file mode 100644 index 000000000..538e4e69c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt @@ -0,0 +1,13 @@ +ROOT@[0; 22) + TYPE_DEF@[0; 21) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 16) + IDENT@[5; 16) "Placeholder" + WHITESPACE@[16; 17) + EQ@[17; 18) + WHITESPACE@[18; 19) + PLACEHOLDER_TYPE@[19; 20) + UNDERSCORE@[19; 20) + SEMI@[20; 21) + WHITESPACE@[21; 22) diff --git a/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.rs b/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.rs new file mode 100644 index 000000000..c9bf3bdb4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.rs @@ -0,0 +1,3 @@ +type A = fn(); +type B = unsafe fn(); +type C = unsafe extern "C" fn(); diff --git a/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt b/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt new file mode 100644 index 000000000..4dba83eb5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt @@ -0,0 +1,55 @@ +ROOT@[0; 70) + TYPE_DEF@[0; 14) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "A" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + FN_POINTER_TYPE@[9; 13) + FN_KW@[9; 11) + PARAM_LIST@[11; 13) + L_PAREN@[11; 12) + R_PAREN@[12; 13) + SEMI@[13; 14) + WHITESPACE@[14; 15) + TYPE_DEF@[15; 36) + TYPE_KW@[15; 19) + WHITESPACE@[19; 20) + NAME@[20; 21) + IDENT@[20; 21) "B" + WHITESPACE@[21; 22) + EQ@[22; 23) + WHITESPACE@[23; 24) + FN_POINTER_TYPE@[24; 35) + UNSAFE_KW@[24; 30) + WHITESPACE@[30; 31) + FN_KW@[31; 33) + PARAM_LIST@[33; 35) + L_PAREN@[33; 34) + R_PAREN@[34; 35) + SEMI@[35; 36) + WHITESPACE@[36; 37) + TYPE_DEF@[37; 69) + TYPE_KW@[37; 41) + WHITESPACE@[41; 42) + NAME@[42; 43) + IDENT@[42; 43) "C" + WHITESPACE@[43; 44) + EQ@[44; 45) + WHITESPACE@[45; 46) + FN_POINTER_TYPE@[46; 68) + UNSAFE_KW@[46; 52) + WHITESPACE@[52; 53) + ABI@[53; 63) + EXTERN_KW@[53; 59) + WHITESPACE@[59; 60) + STRING@[60; 63) + WHITESPACE@[63; 64) + FN_KW@[64; 66) + PARAM_LIST@[66; 68) + L_PAREN@[66; 67) + R_PAREN@[67; 68) + SEMI@[68; 69) + WHITESPACE@[69; 70) diff --git a/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.rs b/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.rs new file mode 100644 index 000000000..f014914ff --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.rs @@ -0,0 +1 @@ +type F = unsafe (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt new file mode 100644 index 000000000..fa0771ab1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt @@ -0,0 +1,23 @@ +ROOT@[0; 20) + TYPE_DEF@[0; 15) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "F" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + UNSAFE_KW@[9; 15) + err: `expected `fn`` + err: `expected SEMI` + WHITESPACE@[15; 16) + err: `expected an item` + ERROR@[16; 17) + L_PAREN@[16; 17) + err: `expected an item` + ERROR@[17; 18) + R_PAREN@[17; 18) + err: `expected an item` + ERROR@[18; 19) + SEMI@[18; 19) + WHITESPACE@[19; 20) diff --git a/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.rs b/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.rs new file mode 100644 index 000000000..e3ba5e87f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.rs @@ -0,0 +1 @@ +type F = fn() -> (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt b/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt new file mode 100644 index 000000000..203839636 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt @@ -0,0 +1,23 @@ +ROOT@[0; 21) + TYPE_DEF@[0; 20) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "F" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + FN_POINTER_TYPE@[9; 19) + FN_KW@[9; 11) + 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) + SEMI@[19; 20) + WHITESPACE@[20; 21) diff --git a/crates/ra_syntax/tests/data/parser/inline/0031_for_type.rs b/crates/ra_syntax/tests/data/parser/inline/0031_for_type.rs new file mode 100644 index 000000000..4d6a18c6b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0031_for_type.rs @@ -0,0 +1 @@ +type A = for<'a> fn() -> (); diff --git a/crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt b/crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt new file mode 100644 index 000000000..f6b962b2c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt @@ -0,0 +1,31 @@ +ROOT@[0; 29) + TYPE_DEF@[0; 28) + TYPE_KW@[0; 4) + 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) + TYPE_PARAM_LIST@[12; 16) + L_ANGLE@[12; 13) + LIFETIME_PARAM@[13; 15) + LIFETIME@[13; 15) "'a" + R_ANGLE@[15; 16) + WHITESPACE@[16; 17) + FN_POINTER_TYPE@[17; 27) + FN_KW@[17; 19) + 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) + SEMI@[27; 28) + WHITESPACE@[28; 29) diff --git a/crates/ra_syntax/tests/data/parser/inline/0032_path_type.rs b/crates/ra_syntax/tests/data/parser/inline/0032_path_type.rs new file mode 100644 index 000000000..bf94f32e1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0032_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/ra_syntax/tests/data/parser/inline/0032_path_type.txt b/crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt new file mode 100644 index 000000000..b0a110a2c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt @@ -0,0 +1,70 @@ +ROOT@[0; 71) + TYPE_DEF@[0; 13) + TYPE_KW@[0; 4) + 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" + SEMI@[12; 13) + WHITESPACE@[13; 14) + TYPE_DEF@[14; 29) + TYPE_KW@[14; 18) + 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) + COLONCOLON@[23; 25) + NAME_REF@[25; 28) + IDENT@[25; 28) "Foo" + SEMI@[28; 29) + WHITESPACE@[29; 30) + TYPE_DEF@[30; 49) + TYPE_KW@[30; 34) + 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) + COLONCOLON@[43; 45) + PATH_SEGMENT@[45; 48) + NAME_REF@[45; 48) + IDENT@[45; 48) "Foo" + SEMI@[48; 49) + WHITESPACE@[49; 50) + TYPE_DEF@[50; 70) + TYPE_KW@[50; 54) + 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) + COLONCOLON@[64; 66) + PATH_SEGMENT@[66; 69) + NAME_REF@[66; 69) + IDENT@[66; 69) "Foo" + SEMI@[69; 70) + WHITESPACE@[70; 71) diff --git a/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.rs b/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.rs new file mode 100644 index 000000000..820a9e72c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0034_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/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt new file mode 100644 index 000000000..9adc89b7c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt @@ -0,0 +1,127 @@ +ROOT@[0; 146) + FN_DEF@[0; 145) + FN_KW@[0; 2) + 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@[10; 145) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + LET_STMT@[16; 27) + LET_KW@[16; 19) + WHITESPACE@[19; 20) + BIND_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) + SEMI@[26; 27) + WHITESPACE@[27; 32) + LET_STMT@[32; 47) + LET_KW@[32; 35) + WHITESPACE@[35; 36) + BIND_PAT@[36; 41) + MUT_KW@[36; 39) + 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) + SEMI@[46; 47) + WHITESPACE@[47; 52) + LET_STMT@[52; 67) + LET_KW@[52; 55) + WHITESPACE@[55; 56) + BIND_PAT@[56; 61) + REF_KW@[56; 59) + 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) + SEMI@[66; 67) + WHITESPACE@[67; 72) + LET_STMT@[72; 91) + LET_KW@[72; 75) + WHITESPACE@[75; 76) + BIND_PAT@[76; 85) + REF_KW@[76; 79) + WHITESPACE@[79; 80) + MUT_KW@[80; 83) + 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) + SEMI@[90; 91) + WHITESPACE@[91; 96) + LET_STMT@[96; 111) + LET_KW@[96; 99) + WHITESPACE@[99; 100) + BIND_PAT@[100; 105) + NAME@[100; 101) + IDENT@[100; 101) "e" + WHITESPACE@[101; 102) + AT@[102; 103) + WHITESPACE@[103; 104) + PLACEHOLDER_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) + SEMI@[110; 111) + WHITESPACE@[111; 116) + LET_STMT@[116; 143) + LET_KW@[116; 119) + WHITESPACE@[119; 120) + BIND_PAT@[120; 137) + REF_KW@[120; 123) + WHITESPACE@[123; 124) + MUT_KW@[124; 127) + WHITESPACE@[127; 128) + NAME@[128; 129) + IDENT@[128; 129) "f" + WHITESPACE@[129; 130) + AT@[130; 131) + WHITESPACE@[131; 132) + BIND_PAT@[132; 137) + NAME@[132; 133) + IDENT@[132; 133) "g" + WHITESPACE@[133; 134) + AT@[134; 135) + WHITESPACE@[135; 136) + PLACEHOLDER_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) + SEMI@[142; 143) + WHITESPACE@[143; 144) + R_CURLY@[144; 145) + WHITESPACE@[145; 146) diff --git a/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.rs b/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.rs new file mode 100644 index 000000000..de41f5cae --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.rs @@ -0,0 +1,4 @@ +fn main() { + let &a = (); + let &mut b = (); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt new file mode 100644 index 000000000..a625637cd --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt @@ -0,0 +1,49 @@ +ROOT@[0; 52) + FN_DEF@[0; 51) + FN_KW@[0; 2) + 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@[10; 51) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + LET_STMT@[16; 28) + LET_KW@[16; 19) + WHITESPACE@[19; 20) + REF_PAT@[20; 22) + AMP@[20; 21) + BIND_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) + SEMI@[27; 28) + WHITESPACE@[28; 33) + LET_STMT@[33; 49) + LET_KW@[33; 36) + WHITESPACE@[36; 37) + REF_PAT@[37; 43) + AMP@[37; 38) + MUT_KW@[38; 41) + WHITESPACE@[41; 42) + BIND_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) + SEMI@[48; 49) + WHITESPACE@[49; 50) + R_CURLY@[50; 51) + WHITESPACE@[51; 52) diff --git a/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.rs b/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.rs new file mode 100644 index 000000000..4d719c433 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.rs @@ -0,0 +1 @@ +fn main() { let _ = (); } diff --git a/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt new file mode 100644 index 000000000..e89ff4e7c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt @@ -0,0 +1,28 @@ +ROOT@[0; 26) + FN_DEF@[0; 25) + FN_KW@[0; 2) + 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@[10; 25) + L_CURLY@[10; 11) + WHITESPACE@[11; 12) + LET_STMT@[12; 23) + LET_KW@[12; 15) + WHITESPACE@[15; 16) + PLACEHOLDER_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) + SEMI@[22; 23) + WHITESPACE@[23; 24) + R_CURLY@[24; 25) + WHITESPACE@[25; 26) diff --git a/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.rs b/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.rs new file mode 100644 index 000000000..faeefde94 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0037_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/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt b/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt new file mode 100644 index 000000000..3b5fbf95d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt @@ -0,0 +1,53 @@ +ROOT@[0; 81) + STRUCT_DEF@[0; 20) + VISIBILITY@[0; 10) + PUB_KW@[0; 3) + L_PAREN@[3; 4) + CRATE_KW@[4; 9) + R_PAREN@[9; 10) + WHITESPACE@[10; 11) + STRUCT_KW@[11; 17) + WHITESPACE@[17; 18) + NAME@[18; 19) + IDENT@[18; 19) "S" + SEMI@[19; 20) + WHITESPACE@[20; 21) + STRUCT_DEF@[21; 40) + VISIBILITY@[21; 30) + PUB_KW@[21; 24) + L_PAREN@[24; 25) + SELF_KW@[25; 29) + R_PAREN@[29; 30) + WHITESPACE@[30; 31) + STRUCT_KW@[31; 37) + WHITESPACE@[37; 38) + NAME@[38; 39) + IDENT@[38; 39) "S" + SEMI@[39; 40) + WHITESPACE@[40; 41) + STRUCT_DEF@[41; 60) + VISIBILITY@[41; 50) + PUB_KW@[41; 44) + L_PAREN@[44; 45) + SELF_KW@[45; 49) + R_PAREN@[49; 50) + WHITESPACE@[50; 51) + STRUCT_KW@[51; 57) + WHITESPACE@[57; 58) + NAME@[58; 59) + IDENT@[58; 59) "S" + SEMI@[59; 60) + WHITESPACE@[60; 61) + STRUCT_DEF@[61; 80) + VISIBILITY@[61; 70) + PUB_KW@[61; 64) + L_PAREN@[64; 65) + SELF_KW@[65; 69) + R_PAREN@[69; 70) + WHITESPACE@[70; 71) + STRUCT_KW@[71; 77) + WHITESPACE@[77; 78) + NAME@[78; 79) + IDENT@[78; 79) "S" + SEMI@[79; 80) + WHITESPACE@[80; 81) diff --git a/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.rs b/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.rs new file mode 100644 index 000000000..d22d8cada --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.rs @@ -0,0 +1,2 @@ +fn foo() {} +fn bar() -> () {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt b/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt new file mode 100644 index 000000000..a3d235ce1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt @@ -0,0 +1,34 @@ +ROOT@[0; 30) + FN_DEF@[0; 11) + FN_KW@[0; 2) + 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@[9; 11) + L_CURLY@[9; 10) + R_CURLY@[10; 11) + WHITESPACE@[11; 12) + FN_DEF@[12; 29) + FN_KW@[12; 14) + 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@[27; 29) + L_CURLY@[27; 28) + R_CURLY@[28; 29) + WHITESPACE@[29; 30) diff --git a/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.rs new file mode 100644 index 000000000..333ebabef --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + let _ = a; + let _ = a::b; + let _ = ::a::; + let _ = format!(); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt new file mode 100644 index 000000000..618afc0a9 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt @@ -0,0 +1,95 @@ +ROOT@[0; 91) + FN_DEF@[0; 90) + FN_KW@[0; 2) + 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@[9; 90) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 25) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + PLACEHOLDER_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" + SEMI@[24; 25) + WHITESPACE@[25; 30) + LET_STMT@[30; 43) + LET_KW@[30; 33) + WHITESPACE@[33; 34) + PLACEHOLDER_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" + COLONCOLON@[39; 41) + PATH_SEGMENT@[41; 42) + NAME_REF@[41; 42) + IDENT@[41; 42) "b" + SEMI@[42; 43) + WHITESPACE@[43; 48) + LET_STMT@[48; 65) + LET_KW@[48; 51) + WHITESPACE@[51; 52) + PLACEHOLDER_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) + COLONCOLON@[56; 58) + NAME_REF@[58; 59) + IDENT@[58; 59) "a" + TYPE_ARG_LIST@[59; 64) + COLONCOLON@[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) + SEMI@[64; 65) + WHITESPACE@[65; 70) + LET_STMT@[70; 88) + LET_KW@[70; 73) + WHITESPACE@[73; 74) + PLACEHOLDER_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" + EXCL@[84; 85) + TOKEN_TREE@[85; 87) + L_PAREN@[85; 86) + R_PAREN@[86; 87) + SEMI@[87; 88) + WHITESPACE@[88; 89) + R_CURLY@[89; 90) + WHITESPACE@[90; 91) diff --git a/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.rs b/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.rs new file mode 100644 index 000000000..2e11a5a6e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0040_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/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt b/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt new file mode 100644 index 000000000..8105ee25a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt @@ -0,0 +1,135 @@ +ROOT@[0; 189) + FN_DEF@[0; 188) + FN_KW@[0; 2) + 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@[9; 188) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 28) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + PLACEHOLDER_PAT@[19; 20) + UNDERSCORE@[19; 20) + WHITESPACE@[20; 21) + EQ@[21; 22) + WHITESPACE@[22; 23) + LITERAL@[23; 27) + TRUE_KW@[23; 27) + SEMI@[27; 28) + WHITESPACE@[28; 33) + LET_STMT@[33; 47) + LET_KW@[33; 36) + WHITESPACE@[36; 37) + PLACEHOLDER_PAT@[37; 38) + UNDERSCORE@[37; 38) + WHITESPACE@[38; 39) + EQ@[39; 40) + WHITESPACE@[40; 41) + LITERAL@[41; 46) + FALSE_KW@[41; 46) + SEMI@[46; 47) + WHITESPACE@[47; 52) + LET_STMT@[52; 62) + LET_KW@[52; 55) + WHITESPACE@[55; 56) + PLACEHOLDER_PAT@[56; 57) + UNDERSCORE@[56; 57) + WHITESPACE@[57; 58) + EQ@[58; 59) + WHITESPACE@[59; 60) + LITERAL@[60; 61) + INT_NUMBER@[60; 61) "1" + SEMI@[61; 62) + WHITESPACE@[62; 67) + LET_STMT@[67; 79) + LET_KW@[67; 70) + WHITESPACE@[70; 71) + PLACEHOLDER_PAT@[71; 72) + UNDERSCORE@[71; 72) + WHITESPACE@[72; 73) + EQ@[73; 74) + WHITESPACE@[74; 75) + LITERAL@[75; 78) + FLOAT_NUMBER@[75; 78) "2.0" + SEMI@[78; 79) + WHITESPACE@[79; 84) + LET_STMT@[84; 97) + LET_KW@[84; 87) + WHITESPACE@[87; 88) + PLACEHOLDER_PAT@[88; 89) + UNDERSCORE@[88; 89) + WHITESPACE@[89; 90) + EQ@[90; 91) + WHITESPACE@[91; 92) + LITERAL@[92; 96) + BYTE@[92; 96) + SEMI@[96; 97) + WHITESPACE@[97; 102) + LET_STMT@[102; 114) + LET_KW@[102; 105) + WHITESPACE@[105; 106) + PLACEHOLDER_PAT@[106; 107) + UNDERSCORE@[106; 107) + WHITESPACE@[107; 108) + EQ@[108; 109) + WHITESPACE@[109; 110) + LITERAL@[110; 113) + CHAR@[110; 113) + SEMI@[113; 114) + WHITESPACE@[114; 119) + LET_STMT@[119; 131) + LET_KW@[119; 122) + WHITESPACE@[122; 123) + PLACEHOLDER_PAT@[123; 124) + UNDERSCORE@[123; 124) + WHITESPACE@[124; 125) + EQ@[125; 126) + WHITESPACE@[126; 127) + LITERAL@[127; 130) + STRING@[127; 130) + SEMI@[130; 131) + WHITESPACE@[131; 136) + LET_STMT@[136; 149) + LET_KW@[136; 139) + WHITESPACE@[139; 140) + PLACEHOLDER_PAT@[140; 141) + UNDERSCORE@[140; 141) + WHITESPACE@[141; 142) + EQ@[142; 143) + WHITESPACE@[143; 144) + LITERAL@[144; 148) + RAW_STRING@[144; 148) + SEMI@[148; 149) + WHITESPACE@[149; 154) + LET_STMT@[154; 167) + LET_KW@[154; 157) + WHITESPACE@[157; 158) + PLACEHOLDER_PAT@[158; 159) + UNDERSCORE@[158; 159) + WHITESPACE@[159; 160) + EQ@[160; 161) + WHITESPACE@[161; 162) + LITERAL@[162; 166) + BYTE_STRING@[162; 166) + SEMI@[166; 167) + WHITESPACE@[167; 172) + LET_STMT@[172; 186) + LET_KW@[172; 175) + WHITESPACE@[175; 176) + PLACEHOLDER_PAT@[176; 177) + UNDERSCORE@[176; 177) + WHITESPACE@[177; 178) + EQ@[178; 179) + WHITESPACE@[179; 180) + LITERAL@[180; 185) + RAW_BYTE_STRING@[180; 185) + SEMI@[185; 186) + WHITESPACE@[186; 187) + R_CURLY@[187; 188) + WHITESPACE@[188; 189) diff --git a/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.rs b/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.rs new file mode 100644 index 000000000..919bde0ee --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.rs @@ -0,0 +1 @@ +struct S; diff --git a/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt new file mode 100644 index 000000000..549b571c2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt @@ -0,0 +1,36 @@ +ROOT@[0; 35) + STRUCT_DEF@[0; 34) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + TYPE_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) + LIFETIME@[12; 14) "'a" + WHITESPACE@[14; 15) + PLUS@[15; 16) + WHITESPACE@[16; 17) + QUESTION@[17; 18) + PATH_TYPE@[18; 32) + PATH@[18; 23) + PATH_SEGMENT@[18; 23) + NAME_REF@[18; 23) + IDENT@[18; 23) "Sized" + WHITESPACE@[23; 24) + PLUS@[24; 25) + WHITESPACE@[25; 26) + 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) + SEMI@[33; 34) + WHITESPACE@[34; 35) diff --git a/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.rs b/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.rs new file mode 100644 index 000000000..540eacb02 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.rs @@ -0,0 +1 @@ +struct S; diff --git a/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt b/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt new file mode 100644 index 000000000..a75b7ed0a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt @@ -0,0 +1,22 @@ +ROOT@[0; 19) + STRUCT_DEF@[0; 18) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + TYPE_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) + SEMI@[17; 18) + WHITESPACE@[18; 19) diff --git a/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.rs new file mode 100644 index 000000000..0c9a20718 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + let _ = f(); + let _ = f()(1)(1, 2,); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt new file mode 100644 index 000000000..f8e31045a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt @@ -0,0 +1,70 @@ +ROOT@[0; 57) + FN_DEF@[0; 56) + FN_KW@[0; 2) + 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@[9; 56) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 27) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + PLACEHOLDER_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) + SEMI@[26; 27) + WHITESPACE@[27; 32) + LET_STMT@[32; 54) + LET_KW@[32; 35) + WHITESPACE@[35; 36) + PLACEHOLDER_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) + SEMI@[53; 54) + WHITESPACE@[54; 55) + R_CURLY@[55; 56) + WHITESPACE@[56; 57) diff --git a/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.rs new file mode 100644 index 000000000..2dac6be95 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + let _ = &1; + let _ = &mut &f(); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt new file mode 100644 index 000000000..77f2ca22c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt @@ -0,0 +1,54 @@ +ROOT@[0; 52) + FN_DEF@[0; 51) + FN_KW@[0; 2) + 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@[9; 51) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 26) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + PLACEHOLDER_PAT@[19; 20) + UNDERSCORE@[19; 20) + WHITESPACE@[20; 21) + EQ@[21; 22) + WHITESPACE@[22; 23) + REF_EXPR@[23; 25) + AMP@[23; 24) + LITERAL@[24; 25) + INT_NUMBER@[24; 25) "1" + SEMI@[25; 26) + WHITESPACE@[26; 31) + LET_STMT@[31; 49) + LET_KW@[31; 34) + WHITESPACE@[34; 35) + PLACEHOLDER_PAT@[35; 36) + UNDERSCORE@[35; 36) + WHITESPACE@[36; 37) + EQ@[37; 38) + WHITESPACE@[38; 39) + REF_EXPR@[39; 48) + AMP@[39; 40) + MUT_KW@[40; 43) + WHITESPACE@[43; 44) + REF_EXPR@[44; 48) + AMP@[44; 45) + CALL_EXPR@[45; 48) + PATH_EXPR@[45; 46) + PATH@[45; 46) + PATH_SEGMENT@[45; 46) + NAME_REF@[45; 46) + IDENT@[45; 46) "f" + ARG_LIST@[46; 48) + L_PAREN@[46; 47) + R_PAREN@[47; 48) + SEMI@[48; 49) + WHITESPACE@[49; 50) + R_CURLY@[50; 51) + WHITESPACE@[51; 52) diff --git a/crates/ra_syntax/tests/data/parser/inline/0045_block.rs b/crates/ra_syntax/tests/data/parser/inline/0045_block.rs new file mode 100644 index 000000000..81f44c533 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0045_block.rs @@ -0,0 +1,4 @@ +fn a() {} +fn b() { let _ = 1; } +fn c() { 1; 2; } +fn d() { 1; 2 } diff --git a/crates/ra_syntax/tests/data/parser/inline/0045_block.txt b/crates/ra_syntax/tests/data/parser/inline/0045_block.txt new file mode 100644 index 000000000..e6c841f21 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0045_block.txt @@ -0,0 +1,86 @@ +ROOT@[0; 65) + FN_DEF@[0; 9) + FN_KW@[0; 2) + 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@[7; 9) + L_CURLY@[7; 8) + R_CURLY@[8; 9) + WHITESPACE@[9; 10) + FN_DEF@[10; 31) + FN_KW@[10; 12) + 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@[17; 31) + L_CURLY@[17; 18) + WHITESPACE@[18; 19) + LET_STMT@[19; 29) + LET_KW@[19; 22) + WHITESPACE@[22; 23) + PLACEHOLDER_PAT@[23; 24) + UNDERSCORE@[23; 24) + WHITESPACE@[24; 25) + EQ@[25; 26) + WHITESPACE@[26; 27) + LITERAL@[27; 28) + INT_NUMBER@[27; 28) "1" + SEMI@[28; 29) + WHITESPACE@[29; 30) + R_CURLY@[30; 31) + WHITESPACE@[31; 32) + FN_DEF@[32; 48) + FN_KW@[32; 34) + 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@[39; 48) + L_CURLY@[39; 40) + WHITESPACE@[40; 41) + EXPR_STMT@[41; 43) + LITERAL@[41; 42) + INT_NUMBER@[41; 42) "1" + SEMI@[42; 43) + WHITESPACE@[43; 44) + EXPR_STMT@[44; 46) + LITERAL@[44; 45) + INT_NUMBER@[44; 45) "2" + SEMI@[45; 46) + WHITESPACE@[46; 47) + R_CURLY@[47; 48) + WHITESPACE@[48; 49) + FN_DEF@[49; 64) + FN_KW@[49; 51) + 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@[56; 64) + L_CURLY@[56; 57) + WHITESPACE@[57; 58) + EXPR_STMT@[58; 60) + LITERAL@[58; 59) + INT_NUMBER@[58; 59) "1" + SEMI@[59; 60) + WHITESPACE@[60; 61) + LITERAL@[61; 62) + INT_NUMBER@[61; 62) "2" + WHITESPACE@[62; 63) + R_CURLY@[63; 64) + WHITESPACE@[64; 65) diff --git a/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.rs b/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.rs new file mode 100644 index 000000000..ef6aa84a2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.rs @@ -0,0 +1 @@ +default impl Foo {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt new file mode 100644 index 000000000..19fe5ca85 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt @@ -0,0 +1,16 @@ +ROOT@[0; 20) + IMPL_ITEM@[0; 19) + DEFAULT_KW@[0; 7) + WHITESPACE@[7; 8) + IMPL_KW@[8; 12) + WHITESPACE@[12; 13) + PATH_TYPE@[13; 16) + PATH@[13; 16) + PATH_SEGMENT@[13; 16) + NAME_REF@[13; 16) + IDENT@[13; 16) "Foo" + WHITESPACE@[16; 17) + ITEM_LIST@[17; 19) + L_CURLY@[17; 18) + R_CURLY@[18; 19) + WHITESPACE@[19; 20) diff --git a/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.rs b/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.rs new file mode 100644 index 000000000..d6337f6b3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.rs @@ -0,0 +1 @@ +impl Foo {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt b/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt new file mode 100644 index 000000000..6419243e2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt @@ -0,0 +1,14 @@ +ROOT@[0; 12) + IMPL_ITEM@[0; 11) + IMPL_KW@[0; 4) + 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) + ITEM_LIST@[9; 11) + L_CURLY@[9; 10) + R_CURLY@[10; 11) + WHITESPACE@[11; 12) diff --git a/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.rs b/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.rs new file mode 100644 index 000000000..b7527c870 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.rs @@ -0,0 +1 @@ +impl !Send for X {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt b/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt new file mode 100644 index 000000000..6739f9c55 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt @@ -0,0 +1,23 @@ +ROOT@[0; 20) + IMPL_ITEM@[0; 19) + IMPL_KW@[0; 4) + WHITESPACE@[4; 5) + EXCL@[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) + 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) + ITEM_LIST@[17; 19) + L_CURLY@[17; 18) + R_CURLY@[18; 19) + WHITESPACE@[19; 20) diff --git a/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.rs b/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.rs new file mode 100644 index 000000000..a5ec3239f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0049_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/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt new file mode 100644 index 000000000..72d9220e8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt @@ -0,0 +1,69 @@ +ROOT@[0; 83) + IMPL_ITEM@[0; 82) + IMPL_KW@[0; 4) + 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) + ITEM_LIST@[7; 82) + L_CURLY@[7; 8) + WHITESPACE@[8; 13) + TYPE_DEF@[13; 27) + TYPE_KW@[13; 17) + WHITESPACE@[17; 18) + NAME@[18; 19) + IDENT@[18; 19) "A" + COLON@[19; 20) + WHITESPACE@[20; 21) + PATH_TYPE@[21; 26) + PATH@[21; 26) + PATH_SEGMENT@[21; 26) + NAME_REF@[21; 26) + IDENT@[21; 26) "Clone" + SEMI@[26; 27) + WHITESPACE@[27; 32) + CONST_DEF@[32; 45) + CONST_KW@[32; 37) + 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" + SEMI@[44; 45) + WHITESPACE@[45; 50) + FN_DEF@[50; 61) + FN_KW@[50; 52) + 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@[59; 61) + L_CURLY@[59; 60) + R_CURLY@[60; 61) + WHITESPACE@[61; 66) + FN_DEF@[66; 80) + FN_KW@[66; 68) + 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) + R_PAREN@[78; 79) + SEMI@[79; 80) + WHITESPACE@[80; 81) + R_CURLY@[81; 82) + WHITESPACE@[82; 83) diff --git a/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.rs b/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.rs new file mode 100644 index 000000000..0a9af907f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.rs @@ -0,0 +1,6 @@ +fn foo() { + let a; + let b: i32; + let c = 92; + let d: i32 = 92; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt b/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt new file mode 100644 index 000000000..30dc83454 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt @@ -0,0 +1,71 @@ +ROOT@[0; 77) + FN_DEF@[0; 76) + FN_KW@[0; 2) + 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@[9; 76) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 21) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "a" + SEMI@[20; 21) + WHITESPACE@[21; 26) + LET_STMT@[26; 37) + LET_KW@[26; 29) + WHITESPACE@[29; 30) + BIND_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" + SEMI@[36; 37) + WHITESPACE@[37; 42) + LET_STMT@[42; 53) + LET_KW@[42; 45) + WHITESPACE@[45; 46) + BIND_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" + SEMI@[52; 53) + WHITESPACE@[53; 58) + LET_STMT@[58; 74) + LET_KW@[58; 61) + WHITESPACE@[61; 62) + BIND_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" + SEMI@[73; 74) + WHITESPACE@[74; 75) + R_CURLY@[75; 76) + WHITESPACE@[76; 77) diff --git a/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.rs new file mode 100644 index 000000000..1a3aa35ae --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + x.foo(); + y.bar::(1, 2,); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt new file mode 100644 index 000000000..530c80fa8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt @@ -0,0 +1,62 @@ +ROOT@[0; 49) + FN_DEF@[0; 48) + FN_KW@[0; 2) + 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@[9; 48) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + 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) + SEMI@[22; 23) + WHITESPACE@[23; 28) + 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" + TYPE_ARG_LIST@[33; 38) + COLONCOLON@[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) + SEMI@[45; 46) + WHITESPACE@[46; 47) + R_CURLY@[47; 48) + WHITESPACE@[48; 49) diff --git a/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.rs new file mode 100644 index 000000000..3e69538e5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + x.foo; + x.0.bar; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt new file mode 100644 index 000000000..9086219ca --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt @@ -0,0 +1,42 @@ +ROOT@[0; 37) + FN_DEF@[0; 36) + FN_KW@[0; 2) + 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@[9; 36) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + 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" + SEMI@[20; 21) + WHITESPACE@[21; 26) + 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) + INT_NUMBER@[28; 29) "0" + DOT@[29; 30) + NAME_REF@[30; 33) + IDENT@[30; 33) "bar" + SEMI@[33; 34) + WHITESPACE@[34; 35) + R_CURLY@[35; 36) + WHITESPACE@[36; 37) diff --git a/crates/ra_syntax/tests/data/parser/inline/0053_block_items.rs b/crates/ra_syntax/tests/data/parser/inline/0053_block_items.rs new file mode 100644 index 000000000..d9868718c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0053_block_items.rs @@ -0,0 +1 @@ +fn a() { fn b() {} } diff --git a/crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt b/crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt new file mode 100644 index 000000000..20122d763 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt @@ -0,0 +1,28 @@ +ROOT@[0; 21) + FN_DEF@[0; 20) + FN_KW@[0; 2) + 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@[7; 20) + L_CURLY@[7; 8) + WHITESPACE@[8; 9) + FN_DEF@[9; 18) + FN_KW@[9; 11) + 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@[16; 18) + L_CURLY@[16; 17) + R_CURLY@[17; 18) + WHITESPACE@[18; 19) + R_CURLY@[19; 20) + WHITESPACE@[20; 21) diff --git a/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.rs b/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.rs new file mode 100644 index 000000000..da3412fa8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0054_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/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt b/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt new file mode 100644 index 000000000..4df4ca35b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt @@ -0,0 +1,126 @@ +ROOT@[0; 119) + FN_DEF@[0; 118) + FN_KW@[0; 2) + 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@[9; 118) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 29) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + STRUCT_PAT@[19; 23) + PATH@[19; 20) + PATH_SEGMENT@[19; 20) + NAME_REF@[19; 20) + IDENT@[19; 20) "S" + WHITESPACE@[20; 21) + FIELD_PAT_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) + SEMI@[28; 29) + WHITESPACE@[29; 34) + LET_STMT@[34; 62) + LET_KW@[34; 37) + WHITESPACE@[37; 38) + STRUCT_PAT@[38; 56) + PATH@[38; 39) + PATH_SEGMENT@[38; 39) + NAME_REF@[38; 39) + IDENT@[38; 39) "S" + WHITESPACE@[39; 40) + FIELD_PAT_LIST@[40; 56) + L_CURLY@[40; 41) + WHITESPACE@[41; 42) + BIND_PAT@[42; 43) + NAME@[42; 43) + IDENT@[42; 43) "f" + COMMA@[43; 44) + WHITESPACE@[44; 45) + BIND_PAT@[45; 54) + REF_KW@[45; 48) + WHITESPACE@[48; 49) + MUT_KW@[49; 52) + 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) + SEMI@[61; 62) + WHITESPACE@[62; 67) + LET_STMT@[67; 90) + LET_KW@[67; 70) + WHITESPACE@[70; 71) + STRUCT_PAT@[71; 84) + PATH@[71; 72) + PATH_SEGMENT@[71; 72) + NAME_REF@[71; 72) + IDENT@[71; 72) "S" + WHITESPACE@[72; 73) + FIELD_PAT_LIST@[73; 84) + L_CURLY@[73; 74) + WHITESPACE@[74; 75) + IDENT@[75; 76) "h" + COLON@[76; 77) + WHITESPACE@[77; 78) + PLACEHOLDER_PAT@[78; 79) + UNDERSCORE@[78; 79) + COMMA@[79; 80) + WHITESPACE@[80; 81) + DOTDOT@[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) + SEMI@[89; 90) + WHITESPACE@[90; 95) + LET_STMT@[95; 116) + LET_KW@[95; 98) + WHITESPACE@[98; 99) + STRUCT_PAT@[99; 110) + PATH@[99; 100) + PATH_SEGMENT@[99; 100) + NAME_REF@[99; 100) + IDENT@[99; 100) "S" + WHITESPACE@[100; 101) + FIELD_PAT_LIST@[101; 110) + L_CURLY@[101; 102) + WHITESPACE@[102; 103) + IDENT@[103; 104) "h" + COLON@[104; 105) + WHITESPACE@[105; 106) + PLACEHOLDER_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) + SEMI@[115; 116) + WHITESPACE@[116; 117) + R_CURLY@[117; 118) + WHITESPACE@[118; 119) diff --git a/crates/ra_syntax/tests/data/parser/inline/0055_self_param.rs b/crates/ra_syntax/tests/data/parser/inline/0055_self_param.rs new file mode 100644 index 000000000..80c0a43f5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0055_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/ra_syntax/tests/data/parser/inline/0055_self_param.txt b/crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt new file mode 100644 index 000000000..f0e47c2dc --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt @@ -0,0 +1,116 @@ +ROOT@[0; 128) + IMPL_ITEM@[0; 127) + IMPL_KW@[0; 4) + 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) + ITEM_LIST@[7; 127) + L_CURLY@[7; 8) + WHITESPACE@[8; 13) + FN_DEF@[13; 26) + FN_KW@[13; 15) + 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) + R_PAREN@[22; 23) + WHITESPACE@[23; 24) + BLOCK@[24; 26) + L_CURLY@[24; 25) + R_CURLY@[25; 26) + WHITESPACE@[26; 31) + FN_DEF@[31; 46) + FN_KW@[31; 33) + 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) + COMMA@[41; 42) + R_PAREN@[42; 43) + WHITESPACE@[43; 44) + BLOCK@[44; 46) + L_CURLY@[44; 45) + R_CURLY@[45; 46) + WHITESPACE@[46; 51) + FN_DEF@[51; 69) + FN_KW@[51; 53) + 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) + COMMA@[64; 65) + R_PAREN@[65; 66) + WHITESPACE@[66; 67) + BLOCK@[67; 69) + L_CURLY@[67; 68) + R_CURLY@[68; 69) + WHITESPACE@[69; 74) + FN_DEF@[74; 103) + FN_KW@[74; 76) + 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) + WHITESPACE@[86; 87) + SELF_KW@[87; 91) + COMMA@[91; 92) + WHITESPACE@[92; 93) + PARAM@[93; 99) + BIND_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@[101; 103) + L_CURLY@[101; 102) + R_CURLY@[102; 103) + WHITESPACE@[103; 108) + FN_DEF@[108; 125) + FN_KW@[108; 110) + 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) + WHITESPACE@[116; 117) + SELF_KW@[117; 121) + R_PAREN@[121; 122) + WHITESPACE@[122; 123) + BLOCK@[123; 125) + L_CURLY@[123; 124) + R_CURLY@[124; 125) + WHITESPACE@[125; 126) + R_CURLY@[126; 127) + WHITESPACE@[127; 128) diff --git a/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.rs b/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.rs new file mode 100644 index 000000000..4385afca9 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.rs @@ -0,0 +1 @@ +trait T: Hash + Clone where U: Copy {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt b/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt new file mode 100644 index 000000000..40c77db4b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt @@ -0,0 +1,49 @@ +ROOT@[0; 42) + TRAIT_DEF@[0; 41) + TRAIT_KW@[0; 5) + WHITESPACE@[5; 6) + NAME@[6; 7) + IDENT@[6; 7) "T" + TYPE_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) + PATH_TYPE@[12; 24) + PATH@[12; 16) + PATH_SEGMENT@[12; 16) + NAME_REF@[12; 16) + IDENT@[12; 16) "Hash" + WHITESPACE@[16; 17) + PLUS@[17; 18) + WHITESPACE@[18; 19) + 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) + 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) + PATH_TYPE@[34; 38) + PATH@[34; 38) + PATH_SEGMENT@[34; 38) + NAME_REF@[34; 38) + IDENT@[34; 38) "Copy" + WHITESPACE@[38; 39) + ITEM_LIST@[39; 41) + L_CURLY@[39; 40) + R_CURLY@[40; 41) + WHITESPACE@[41; 42) diff --git a/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.rs b/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.rs new file mode 100644 index 000000000..72adf6035 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.rs @@ -0,0 +1 @@ +auto trait T {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt new file mode 100644 index 000000000..0303d76bd --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt @@ -0,0 +1,13 @@ +ROOT@[0; 16) + TRAIT_DEF@[0; 15) + AUTO_KW@[0; 4) + WHITESPACE@[4; 5) + TRAIT_KW@[5; 10) + WHITESPACE@[10; 11) + NAME@[11; 12) + IDENT@[11; 12) "T" + WHITESPACE@[12; 13) + ITEM_LIST@[13; 15) + L_CURLY@[13; 14) + R_CURLY@[14; 15) + WHITESPACE@[15; 16) diff --git a/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.rs b/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.rs new file mode 100644 index 000000000..f0c8cc3a8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.rs @@ -0,0 +1 @@ +type A = B<'static, i32, Item=u64> diff --git a/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt b/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt new file mode 100644 index 000000000..aaf2924ba --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt @@ -0,0 +1,40 @@ +ROOT@[0; 35) + TYPE_DEF@[0; 34) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "A" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + PATH_TYPE@[9; 34) + PATH@[9; 34) + PATH_SEGMENT@[9; 34) + NAME_REF@[9; 10) + IDENT@[9; 10) "B" + TYPE_ARG_LIST@[10; 34) + 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) + ASSOC_TYPE_ARG@[25; 33) + NAME_REF@[25; 29) + IDENT@[25; 29) "Item" + EQ@[29; 30) + PATH_TYPE@[30; 33) + PATH@[30; 33) + PATH_SEGMENT@[30; 33) + NAME_REF@[30; 33) + IDENT@[30; 33) "u64" + R_ANGLE@[33; 34) + err: `expected SEMI` + WHITESPACE@[34; 35) diff --git a/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.rs b/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.rs new file mode 100644 index 000000000..f0920b2a8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.rs @@ -0,0 +1 @@ +fn foo() where T: Copy {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt new file mode 100644 index 000000000..281e79deb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt @@ -0,0 +1,37 @@ +ROOT@[0; 29) + FN_DEF@[0; 28) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + TYPE_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) + 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) + PATH_TYPE@[21; 25) + PATH@[21; 25) + PATH_SEGMENT@[21; 25) + NAME_REF@[21; 25) + IDENT@[21; 25) "Copy" + WHITESPACE@[25; 26) + BLOCK@[26; 28) + L_CURLY@[26; 27) + R_CURLY@[27; 28) + WHITESPACE@[28; 29) diff --git a/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.rs b/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.rs new file mode 100644 index 000000000..9df40ed39 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.rs @@ -0,0 +1 @@ +fn foo(){} diff --git a/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt new file mode 100644 index 000000000..b6fea5ab2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt @@ -0,0 +1,34 @@ +ROOT@[0; 28) + FN_DEF@[0; 27) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + TYPE_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) + PATH_TYPE@[10; 22) + PATH@[10; 15) + PATH_SEGMENT@[10; 15) + NAME_REF@[10; 15) + IDENT@[10; 15) "Clone" + WHITESPACE@[15; 16) + PLUS@[16; 17) + WHITESPACE@[17; 18) + 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@[25; 27) + L_CURLY@[25; 26) + R_CURLY@[26; 27) + WHITESPACE@[27; 28) diff --git a/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.rs b/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.rs new file mode 100644 index 000000000..eb711f68a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.rs @@ -0,0 +1,5 @@ +fn foo() { + S {}; + S { x, y: 32, }; + S { x, y: 32, ..Default::default() }; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt b/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt new file mode 100644 index 000000000..cf6e881b2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt @@ -0,0 +1,97 @@ +ROOT@[0; 86) + FN_DEF@[0; 85) + FN_KW@[0; 2) + 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@[9; 85) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 20) + STRUCT_LIT@[15; 19) + PATH@[15; 16) + PATH_SEGMENT@[15; 16) + NAME_REF@[15; 16) + IDENT@[15; 16) "S" + WHITESPACE@[16; 17) + NAMED_FIELD_LIST@[17; 19) + L_CURLY@[17; 18) + R_CURLY@[18; 19) + SEMI@[19; 20) + WHITESPACE@[20; 25) + EXPR_STMT@[25; 41) + STRUCT_LIT@[25; 40) + PATH@[25; 26) + PATH_SEGMENT@[25; 26) + NAME_REF@[25; 26) + IDENT@[25; 26) "S" + WHITESPACE@[26; 27) + NAMED_FIELD_LIST@[27; 40) + L_CURLY@[27; 28) + WHITESPACE@[28; 29) + NAMED_FIELD@[29; 30) + NAME_REF@[29; 30) + IDENT@[29; 30) "x" + COMMA@[30; 31) + WHITESPACE@[31; 32) + NAMED_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) + SEMI@[40; 41) + WHITESPACE@[41; 46) + EXPR_STMT@[46; 83) + STRUCT_LIT@[46; 82) + PATH@[46; 47) + PATH_SEGMENT@[46; 47) + NAME_REF@[46; 47) + IDENT@[46; 47) "S" + WHITESPACE@[47; 48) + NAMED_FIELD_LIST@[48; 82) + L_CURLY@[48; 49) + WHITESPACE@[49; 50) + NAMED_FIELD@[50; 51) + NAME_REF@[50; 51) + IDENT@[50; 51) "x" + COMMA@[51; 52) + WHITESPACE@[52; 53) + NAMED_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) + DOTDOT@[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" + COLONCOLON@[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) + SEMI@[82; 83) + WHITESPACE@[83; 84) + R_CURLY@[84; 85) + WHITESPACE@[85; 86) diff --git a/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.rs b/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.rs new file mode 100644 index 000000000..54c5a7c46 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.rs @@ -0,0 +1 @@ +type A = impl Iterator> + 'a; diff --git a/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt new file mode 100644 index 000000000..68fce58ee --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt @@ -0,0 +1,40 @@ +ROOT@[0; 43) + TYPE_DEF@[0; 42) + TYPE_KW@[0; 4) + 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) + WHITESPACE@[13; 14) + PATH_TYPE@[14; 41) + PATH@[14; 36) + PATH_SEGMENT@[14; 36) + NAME_REF@[14; 22) + IDENT@[14; 22) "Iterator" + TYPE_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" + TYPE_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) + LIFETIME@[39; 41) "'a" + SEMI@[41; 42) + WHITESPACE@[42; 43) diff --git a/crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt new file mode 100644 index 000000000..93f6285ac --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt @@ -0,0 +1,91 @@ +ROOT@[0; 74) + FN_DEF@[0; 74) + FN_KW@[0; 2) + NAME@[2; 6) + WHITESPACE@[2; 3) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 9) + L_PAREN@[6; 7) + R_PAREN@[7; 8) + WHITESPACE@[8; 9) + BLOCK_EXPR@[9; 74) + L_CURLY@[9; 10) + EXPR_STMT@[10; 26) + LAMBDA_EXPR@[10; 20) + PARAM_LIST@[10; 18) + WHITESPACE@[10; 15) + PIPE@[15; 16) + PIPE@[16; 17) + WHITESPACE@[17; 18) + TUPLE_EXPR@[18; 20) + L_PAREN@[18; 19) + R_PAREN@[19; 20) + SEMI@[20; 21) + WHITESPACE@[21; 26) + EXPR_STMT@[26; 48) + LAMBDA_EXPR@[26; 42) + PARAM_LIST@[26; 29) + PIPE@[26; 27) + PIPE@[27; 28) + WHITESPACE@[28; 29) + THIN_ARROW@[29; 31) + PATH_TYPE@[31; 36) + PATH@[31; 36) + PATH_SEGMENT@[31; 36) + NAME_REF@[31; 36) + WHITESPACE@[31; 32) + IDENT@[32; 35) "i32" + WHITESPACE@[35; 36) + BLOCK_EXPR@[36; 42) + L_CURLY@[36; 37) + LITERAL@[37; 41) + WHITESPACE@[37; 38) + INT_NUMBER@[38; 40) "92" + WHITESPACE@[40; 41) + R_CURLY@[41; 42) + SEMI@[42; 43) + WHITESPACE@[43; 48) + EXPR_STMT@[48; 59) + LAMBDA_EXPR@[48; 53) + PARAM_LIST@[48; 52) + PIPE@[48; 49) + PARAM@[49; 50) + BIND_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" + SEMI@[53; 54) + WHITESPACE@[54; 59) + EXPR_STMT@[59; 72) + LAMBDA_EXPR@[59; 70) + PARAM_LIST@[59; 69) + PIPE@[59; 60) + PARAM@[60; 66) + BIND_PAT@[60; 61) + NAME@[60; 61) + IDENT@[60; 61) "x" + COLON@[61; 62) + PATH_TYPE@[62; 66) + PATH@[62; 66) + PATH_SEGMENT@[62; 66) + NAME_REF@[62; 66) + WHITESPACE@[62; 63) + IDENT@[63; 66) "i32" + COMMA@[66; 67) + PIPE@[67; 68) + WHITESPACE@[68; 69) + PATH_EXPR@[69; 70) + PATH@[69; 70) + PATH_SEGMENT@[69; 70) + NAME_REF@[69; 70) + IDENT@[69; 70) "x" + SEMI@[70; 71) + WHITESPACE@[71; 72) + R_CURLY@[72; 73) + WHITESPACE@[73; 74) diff --git a/crates/ra_syntax/tests/data/parser/inline/0064_param_list.rs b/crates/ra_syntax/tests/data/parser/inline/0064_param_list.rs new file mode 100644 index 000000000..9d55bedbb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0064_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/ra_syntax/tests/data/parser/inline/0064_param_list.txt b/crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt new file mode 100644 index 000000000..de547d699 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt @@ -0,0 +1,99 @@ +ROOT@[0; 67) + FN_DEF@[0; 9) + FN_KW@[0; 2) + 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@[7; 9) + L_CURLY@[7; 8) + R_CURLY@[8; 9) + WHITESPACE@[9; 10) + FN_DEF@[10; 25) + FN_KW@[10; 12) + WHITESPACE@[12; 13) + NAME@[13; 14) + IDENT@[13; 14) "b" + PARAM_LIST@[14; 22) + L_PAREN@[14; 15) + PARAM@[15; 21) + BIND_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@[23; 25) + L_CURLY@[23; 24) + R_CURLY@[24; 25) + WHITESPACE@[25; 26) + FN_DEF@[26; 43) + FN_KW@[26; 28) + WHITESPACE@[28; 29) + NAME@[29; 30) + IDENT@[29; 30) "c" + PARAM_LIST@[30; 40) + L_PAREN@[30; 31) + PARAM@[31; 37) + BIND_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@[41; 43) + L_CURLY@[41; 42) + R_CURLY@[42; 43) + WHITESPACE@[43; 44) + FN_DEF@[44; 66) + FN_KW@[44; 46) + WHITESPACE@[46; 47) + NAME@[47; 48) + IDENT@[47; 48) "d" + PARAM_LIST@[48; 63) + L_PAREN@[48; 49) + PARAM@[49; 55) + BIND_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) + BIND_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@[64; 66) + L_CURLY@[64; 65) + R_CURLY@[65; 66) + WHITESPACE@[66; 67) diff --git a/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.rs new file mode 100644 index 000000000..4b0d9af89 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + if true {}; + if true {} else {}; + if true {} else if false {} else {}; + if S {}; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt new file mode 100644 index 000000000..ae1a8101e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt @@ -0,0 +1,95 @@ +ROOT@[0; 107) + FN_DEF@[0; 106) + FN_KW@[0; 2) + 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@[9; 106) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 26) + IF_EXPR@[15; 25) + IF_KW@[15; 17) + WHITESPACE@[17; 18) + CONDITION@[18; 22) + LITERAL@[18; 22) + TRUE_KW@[18; 22) + WHITESPACE@[22; 23) + BLOCK@[23; 25) + L_CURLY@[23; 24) + R_CURLY@[24; 25) + SEMI@[25; 26) + WHITESPACE@[26; 31) + EXPR_STMT@[31; 50) + IF_EXPR@[31; 49) + IF_KW@[31; 33) + WHITESPACE@[33; 34) + CONDITION@[34; 38) + LITERAL@[34; 38) + TRUE_KW@[34; 38) + WHITESPACE@[38; 39) + BLOCK@[39; 41) + L_CURLY@[39; 40) + R_CURLY@[40; 41) + WHITESPACE@[41; 42) + ELSE_KW@[42; 46) + WHITESPACE@[46; 47) + BLOCK@[47; 49) + L_CURLY@[47; 48) + R_CURLY@[48; 49) + SEMI@[49; 50) + WHITESPACE@[50; 55) + EXPR_STMT@[55; 91) + IF_EXPR@[55; 90) + IF_KW@[55; 57) + WHITESPACE@[57; 58) + CONDITION@[58; 62) + LITERAL@[58; 62) + TRUE_KW@[58; 62) + WHITESPACE@[62; 63) + BLOCK@[63; 65) + L_CURLY@[63; 64) + R_CURLY@[64; 65) + WHITESPACE@[65; 66) + ELSE_KW@[66; 70) + WHITESPACE@[70; 71) + IF_EXPR@[71; 90) + IF_KW@[71; 73) + WHITESPACE@[73; 74) + CONDITION@[74; 79) + LITERAL@[74; 79) + FALSE_KW@[74; 79) + WHITESPACE@[79; 80) + BLOCK@[80; 82) + L_CURLY@[80; 81) + R_CURLY@[81; 82) + WHITESPACE@[82; 83) + ELSE_KW@[83; 87) + WHITESPACE@[87; 88) + BLOCK@[88; 90) + L_CURLY@[88; 89) + R_CURLY@[89; 90) + SEMI@[90; 91) + WHITESPACE@[91; 96) + EXPR_STMT@[96; 104) + IF_EXPR@[96; 103) + IF_KW@[96; 98) + 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@[101; 103) + L_CURLY@[101; 102) + R_CURLY@[102; 103) + SEMI@[103; 104) + WHITESPACE@[104; 105) + R_CURLY@[105; 106) + WHITESPACE@[106; 107) diff --git a/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.rs new file mode 100644 index 000000000..c20d29751 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + || (); + || -> i32 { 92 }; + |x| x; + move |x: i32,| x; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt new file mode 100644 index 000000000..82aaf3897 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt @@ -0,0 +1,95 @@ +ROOT@[0; 79) + FN_DEF@[0; 78) + FN_KW@[0; 2) + 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@[9; 78) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 21) + LAMBDA_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) + SEMI@[20; 21) + WHITESPACE@[21; 26) + EXPR_STMT@[26; 43) + LAMBDA_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) + BLOCK@[36; 42) + L_CURLY@[36; 37) + WHITESPACE@[37; 38) + LITERAL@[38; 40) + INT_NUMBER@[38; 40) "92" + WHITESPACE@[40; 41) + R_CURLY@[41; 42) + SEMI@[42; 43) + WHITESPACE@[43; 48) + EXPR_STMT@[48; 54) + LAMBDA_EXPR@[48; 53) + PARAM_LIST@[48; 51) + PIPE@[48; 49) + PARAM@[49; 50) + BIND_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" + SEMI@[53; 54) + WHITESPACE@[54; 59) + EXPR_STMT@[59; 76) + LAMBDA_EXPR@[59; 75) + MOVE_KW@[59; 63) + WHITESPACE@[63; 64) + PARAM_LIST@[64; 73) + PIPE@[64; 65) + PARAM@[65; 71) + BIND_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" + SEMI@[75; 76) + WHITESPACE@[76; 77) + R_CURLY@[77; 78) + WHITESPACE@[78; 79) diff --git a/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.rs new file mode 100644 index 000000000..2fed74c5e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + {}; + unsafe {}; + 'label: {}; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt new file mode 100644 index 000000000..12a1ff49a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt @@ -0,0 +1,42 @@ +ROOT@[0; 52) + FN_DEF@[0; 51) + FN_KW@[0; 2) + 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@[9; 51) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 18) + BLOCK_EXPR@[15; 17) + BLOCK@[15; 17) + L_CURLY@[15; 16) + R_CURLY@[16; 17) + SEMI@[17; 18) + WHITESPACE@[18; 23) + EXPR_STMT@[23; 33) + BLOCK_EXPR@[23; 32) + UNSAFE_KW@[23; 29) + WHITESPACE@[29; 30) + BLOCK@[30; 32) + L_CURLY@[30; 31) + R_CURLY@[31; 32) + SEMI@[32; 33) + WHITESPACE@[33; 38) + EXPR_STMT@[38; 49) + BLOCK_EXPR@[38; 48) + LABEL@[38; 45) + LIFETIME@[38; 44) "'label" + COLON@[44; 45) + WHITESPACE@[45; 46) + BLOCK@[46; 48) + L_CURLY@[46; 47) + R_CURLY@[47; 48) + SEMI@[48; 49) + WHITESPACE@[49; 50) + R_CURLY@[50; 51) + WHITESPACE@[51; 52) diff --git a/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.rs new file mode 100644 index 000000000..d9d99d2d3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.rs @@ -0,0 +1 @@ +fn foo() { pub 92; } //FIXME diff --git a/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt new file mode 100644 index 000000000..5f179c3ca --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt @@ -0,0 +1,25 @@ +ROOT@[0; 29) + FN_DEF@[0; 20) + FN_KW@[0; 2) + 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@[9; 20) + L_CURLY@[9; 10) + WHITESPACE@[10; 11) + EXPR_STMT@[11; 18) + VISIBILITY@[11; 14) + PUB_KW@[11; 14) + WHITESPACE@[14; 15) + LITERAL@[15; 17) + INT_NUMBER@[15; 17) "92" + SEMI@[17; 18) + WHITESPACE@[18; 19) + R_CURLY@[19; 20) + WHITESPACE@[20; 21) + COMMENT@[21; 28) + WHITESPACE@[28; 29) diff --git a/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.rs new file mode 100644 index 000000000..5733666b6 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + return; + return 92; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt new file mode 100644 index 000000000..ead1ada96 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt @@ -0,0 +1,28 @@ +ROOT@[0; 40) + FN_DEF@[0; 39) + FN_KW@[0; 2) + 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@[9; 39) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 22) + RETURN_EXPR@[15; 21) + RETURN_KW@[15; 21) + SEMI@[21; 22) + WHITESPACE@[22; 27) + EXPR_STMT@[27; 37) + RETURN_EXPR@[27; 36) + RETURN_KW@[27; 33) + WHITESPACE@[33; 34) + LITERAL@[34; 36) + INT_NUMBER@[34; 36) "92" + SEMI@[36; 37) + WHITESPACE@[37; 38) + R_CURLY@[38; 39) + WHITESPACE@[39; 40) diff --git a/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.rs b/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.rs new file mode 100644 index 000000000..2c0e88414 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.rs @@ -0,0 +1,6 @@ +fn foo() { + match () { + _ => (), + X | Y if Z => (), + }; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt b/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt new file mode 100644 index 000000000..013d1716a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt @@ -0,0 +1,66 @@ +ROOT@[0; 78) + FN_DEF@[0; 77) + FN_KW@[0; 2) + 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@[9; 77) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 75) + MATCH_EXPR@[15; 74) + MATCH_KW@[15; 20) + WHITESPACE@[20; 21) + TUPLE_EXPR@[21; 23) + L_PAREN@[21; 22) + R_PAREN@[22; 23) + WHITESPACE@[23; 24) + MATCH_ARM_LIST@[24; 74) + L_CURLY@[24; 25) + WHITESPACE@[25; 34) + MATCH_ARM@[34; 41) + PLACEHOLDER_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) + MATCH_ARM@[51; 67) + BIND_PAT@[51; 52) + NAME@[51; 52) + IDENT@[51; 52) "X" + WHITESPACE@[52; 53) + PIPE@[53; 54) + WHITESPACE@[54; 55) + BIND_PAT@[55; 56) + NAME@[55; 56) + IDENT@[55; 56) "Y" + WHITESPACE@[56; 57) + IF_KW@[57; 59) + WHITESPACE@[59; 60) + PATH_EXPR@[60; 61) + PATH@[60; 61) + PATH_SEGMENT@[60; 61) + NAME_REF@[60; 61) + IDENT@[60; 61) "Z" + WHITESPACE@[61; 62) + FAT_ARROW@[62; 64) + WHITESPACE@[64; 65) + TUPLE_EXPR@[65; 67) + L_PAREN@[65; 66) + R_PAREN@[66; 67) + COMMA@[67; 68) + WHITESPACE@[68; 73) + R_CURLY@[73; 74) + SEMI@[74; 75) + WHITESPACE@[75; 76) + R_CURLY@[76; 77) + WHITESPACE@[77; 78) diff --git a/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.rs new file mode 100644 index 000000000..c9205dfa3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + match () { }; + match S {}; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt new file mode 100644 index 000000000..d7740e3cc --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt @@ -0,0 +1,44 @@ +ROOT@[0; 47) + FN_DEF@[0; 46) + FN_KW@[0; 2) + 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@[9; 46) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 28) + MATCH_EXPR@[15; 27) + MATCH_KW@[15; 20) + 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) + SEMI@[27; 28) + WHITESPACE@[28; 33) + EXPR_STMT@[33; 44) + MATCH_EXPR@[33; 43) + MATCH_KW@[33; 38) + 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) + SEMI@[43; 44) + WHITESPACE@[44; 45) + R_CURLY@[45; 46) + WHITESPACE@[46; 47) diff --git a/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.rs b/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.rs new file mode 100644 index 000000000..0dfe63629 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.rs @@ -0,0 +1,6 @@ +fn foo() { + let S() = (); + let S(_) = (); + let S(_,) = (); + let S(_, .. , x) = (); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt b/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt new file mode 100644 index 000000000..734e0726c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt @@ -0,0 +1,103 @@ +ROOT@[0; 97) + FN_DEF@[0; 96) + FN_KW@[0; 2) + 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@[9; 96) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 28) + LET_KW@[15; 18) + 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) + SEMI@[27; 28) + WHITESPACE@[28; 33) + LET_STMT@[33; 47) + LET_KW@[33; 36) + 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) + PLACEHOLDER_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) + SEMI@[46; 47) + WHITESPACE@[47; 52) + LET_STMT@[52; 67) + LET_KW@[52; 55) + 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) + PLACEHOLDER_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) + SEMI@[66; 67) + WHITESPACE@[67; 72) + LET_STMT@[72; 94) + LET_KW@[72; 75) + 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) + PLACEHOLDER_PAT@[78; 79) + UNDERSCORE@[78; 79) + COMMA@[79; 80) + WHITESPACE@[80; 81) + DOTDOT@[81; 83) + WHITESPACE@[83; 84) + COMMA@[84; 85) + WHITESPACE@[85; 86) + BIND_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) + SEMI@[93; 94) + WHITESPACE@[94; 95) + R_CURLY@[95; 96) + WHITESPACE@[96; 97) diff --git a/crates/ra_syntax/tests/data/parser/inline/0072_path_part.rs b/crates/ra_syntax/tests/data/parser/inline/0072_path_part.rs new file mode 100644 index 000000000..f6e32c7c1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0072_path_part.rs @@ -0,0 +1,6 @@ +fn foo() { + let foo::Bar = (); + let ::Bar = (); + let Bar { .. } = (); + let Bar(..) = (); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt b/crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt new file mode 100644 index 000000000..1a8d1546d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt @@ -0,0 +1,95 @@ +ROOT@[0; 103) + FN_DEF@[0; 102) + FN_KW@[0; 2) + 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@[9; 102) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 33) + LET_KW@[15; 18) + 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" + COLONCOLON@[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) + SEMI@[32; 33) + WHITESPACE@[33; 38) + LET_STMT@[38; 53) + LET_KW@[38; 41) + WHITESPACE@[41; 42) + PATH_PAT@[42; 47) + PATH@[42; 47) + PATH_SEGMENT@[42; 47) + COLONCOLON@[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) + SEMI@[52; 53) + WHITESPACE@[53; 58) + LET_STMT@[58; 78) + LET_KW@[58; 61) + WHITESPACE@[61; 62) + STRUCT_PAT@[62; 72) + PATH@[62; 65) + PATH_SEGMENT@[62; 65) + NAME_REF@[62; 65) + IDENT@[62; 65) "Bar" + WHITESPACE@[65; 66) + FIELD_PAT_LIST@[66; 72) + L_CURLY@[66; 67) + WHITESPACE@[67; 68) + DOTDOT@[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) + SEMI@[77; 78) + WHITESPACE@[78; 83) + LET_STMT@[83; 100) + LET_KW@[83; 86) + 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) + DOTDOT@[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) + SEMI@[99; 100) + WHITESPACE@[100; 101) + R_CURLY@[101; 102) + WHITESPACE@[102; 103) diff --git a/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.rs b/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.rs new file mode 100644 index 000000000..f10851487 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0073_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/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt new file mode 100644 index 000000000..1f524f34a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt @@ -0,0 +1,78 @@ +ROOT@[0; 89) + IMPL_ITEM@[0; 88) + IMPL_KW@[0; 4) + 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) + ITEM_LIST@[7; 88) + L_CURLY@[7; 8) + WHITESPACE@[8; 13) + TYPE_DEF@[13; 26) + TYPE_KW@[13; 17) + 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" + SEMI@[25; 26) + WHITESPACE@[26; 31) + CONST_DEF@[31; 49) + CONST_KW@[31; 36) + 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" + SEMI@[48; 49) + WHITESPACE@[49; 54) + FN_DEF@[54; 65) + FN_KW@[54; 56) + 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@[63; 65) + L_CURLY@[63; 64) + R_CURLY@[64; 65) + WHITESPACE@[65; 70) + FN_DEF@[70; 86) + FN_KW@[70; 72) + 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) + R_PAREN@[82; 83) + WHITESPACE@[83; 84) + BLOCK@[84; 86) + L_CURLY@[84; 85) + R_CURLY@[85; 86) + WHITESPACE@[86; 87) + R_CURLY@[87; 88) + WHITESPACE@[88; 89) diff --git a/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.rs new file mode 100644 index 000000000..f1c3f7118 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + **&1; + !!true; + --1; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt new file mode 100644 index 000000000..4d77c8c11 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt @@ -0,0 +1,44 @@ +ROOT@[0; 44) + FN_DEF@[0; 43) + FN_KW@[0; 2) + 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@[9; 43) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + 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" + SEMI@[19; 20) + WHITESPACE@[20; 25) + EXPR_STMT@[25; 32) + PREFIX_EXPR@[25; 31) + EXCL@[25; 26) + PREFIX_EXPR@[26; 31) + EXCL@[26; 27) + LITERAL@[27; 31) + TRUE_KW@[27; 31) + SEMI@[31; 32) + WHITESPACE@[32; 37) + 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" + SEMI@[40; 41) + WHITESPACE@[41; 42) + R_CURLY@[42; 43) + WHITESPACE@[43; 44) diff --git a/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.rs new file mode 100644 index 000000000..8b74f7bc8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + x?; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt new file mode 100644 index 000000000..b80235146 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt @@ -0,0 +1,25 @@ +ROOT@[0; 21) + FN_DEF@[0; 20) + FN_KW@[0; 2) + 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@[9; 20) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + 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) + SEMI@[17; 18) + WHITESPACE@[18; 19) + R_CURLY@[19; 20) + WHITESPACE@[20; 21) diff --git a/crates/ra_syntax/tests/data/parser/inline/0076_cond.rs b/crates/ra_syntax/tests/data/parser/inline/0076_cond.rs new file mode 100644 index 000000000..fdb37ee6f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0076_cond.rs @@ -0,0 +1 @@ +fn foo() { if let Some(_) = None {} } diff --git a/crates/ra_syntax/tests/data/parser/inline/0076_cond.txt b/crates/ra_syntax/tests/data/parser/inline/0076_cond.txt new file mode 100644 index 000000000..1808f10fb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0076_cond.txt @@ -0,0 +1,43 @@ +ROOT@[0; 38) + FN_DEF@[0; 37) + FN_KW@[0; 2) + 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@[9; 37) + L_CURLY@[9; 10) + WHITESPACE@[10; 11) + IF_EXPR@[11; 35) + IF_KW@[11; 13) + WHITESPACE@[13; 14) + CONDITION@[14; 32) + LET_KW@[14; 17) + 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) + PLACEHOLDER_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@[33; 35) + L_CURLY@[33; 34) + R_CURLY@[34; 35) + WHITESPACE@[35; 36) + R_CURLY@[36; 37) + WHITESPACE@[37; 38) diff --git a/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.rs new file mode 100644 index 000000000..293046a04 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + while true {}; + while let Some(x) = it.next() {}; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt new file mode 100644 index 000000000..c73157c04 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt @@ -0,0 +1,66 @@ +ROOT@[0; 70) + FN_DEF@[0; 69) + FN_KW@[0; 2) + 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@[9; 69) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 29) + WHILE_EXPR@[15; 28) + WHILE_KW@[15; 20) + WHITESPACE@[20; 21) + CONDITION@[21; 25) + LITERAL@[21; 25) + TRUE_KW@[21; 25) + WHITESPACE@[25; 26) + BLOCK@[26; 28) + L_CURLY@[26; 27) + R_CURLY@[27; 28) + SEMI@[28; 29) + WHITESPACE@[29; 34) + EXPR_STMT@[34; 67) + WHILE_EXPR@[34; 66) + WHILE_KW@[34; 39) + WHITESPACE@[39; 40) + CONDITION@[40; 63) + LET_KW@[40; 43) + 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) + BIND_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@[64; 66) + L_CURLY@[64; 65) + R_CURLY@[65; 66) + SEMI@[66; 67) + WHITESPACE@[67; 68) + R_CURLY@[68; 69) + WHITESPACE@[69; 70) diff --git a/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.rs b/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.rs new file mode 100644 index 000000000..24a15c5c5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.rs @@ -0,0 +1,5 @@ +fn foo() {} +macro_rules! foo {} +foo::bar!(); +super::baz! {} +struct S; diff --git a/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt b/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt new file mode 100644 index 000000000..57b2b9372 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt @@ -0,0 +1,65 @@ +ROOT@[0; 70) + FN_DEF@[0; 11) + FN_KW@[0; 2) + 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@[9; 11) + L_CURLY@[9; 10) + R_CURLY@[10; 11) + WHITESPACE@[11; 12) + MACRO_CALL@[12; 31) + PATH@[12; 23) + PATH_SEGMENT@[12; 23) + NAME_REF@[12; 23) + IDENT@[12; 23) "macro_rules" + EXCL@[23; 24) + WHITESPACE@[24; 25) + IDENT@[25; 28) "foo" + WHITESPACE@[28; 29) + TOKEN_TREE@[29; 31) + L_CURLY@[29; 30) + R_CURLY@[30; 31) + WHITESPACE@[31; 32) + MACRO_CALL@[32; 44) + PATH@[32; 40) + PATH@[32; 35) + PATH_SEGMENT@[32; 35) + NAME_REF@[32; 35) + IDENT@[32; 35) "foo" + COLONCOLON@[35; 37) + PATH_SEGMENT@[37; 40) + NAME_REF@[37; 40) + IDENT@[37; 40) "bar" + EXCL@[40; 41) + TOKEN_TREE@[41; 43) + L_PAREN@[41; 42) + R_PAREN@[42; 43) + SEMI@[43; 44) + WHITESPACE@[44; 45) + MACRO_CALL@[45; 59) + PATH@[45; 55) + PATH@[45; 50) + PATH_SEGMENT@[45; 50) + SUPER_KW@[45; 50) + COLONCOLON@[50; 52) + PATH_SEGMENT@[52; 55) + NAME_REF@[52; 55) + IDENT@[52; 55) "baz" + EXCL@[55; 56) + WHITESPACE@[56; 57) + TOKEN_TREE@[57; 59) + L_CURLY@[57; 58) + R_CURLY@[58; 59) + WHITESPACE@[59; 60) + STRUCT_DEF@[60; 69) + STRUCT_KW@[60; 66) + WHITESPACE@[66; 67) + NAME@[67; 68) + IDENT@[67; 68) "S" + SEMI@[68; 69) + WHITESPACE@[69; 70) diff --git a/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.rs new file mode 100644 index 000000000..3e53d56d6 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + 82 as i32; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt new file mode 100644 index 000000000..6d57078b3 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt @@ -0,0 +1,29 @@ +ROOT@[0; 28) + FN_DEF@[0; 27) + FN_KW@[0; 2) + 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@[9; 27) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 25) + CAST_EXPR@[15; 24) + LITERAL@[15; 17) + INT_NUMBER@[15; 17) "82" + WHITESPACE@[17; 18) + AS_KW@[18; 20) + WHITESPACE@[20; 21) + PATH_TYPE@[21; 24) + PATH@[21; 24) + PATH_SEGMENT@[21; 24) + NAME_REF@[21; 24) + IDENT@[21; 24) "i32" + SEMI@[24; 25) + WHITESPACE@[25; 26) + R_CURLY@[26; 27) + WHITESPACE@[27; 28) diff --git a/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.rs new file mode 100644 index 000000000..e4f774280 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.rs @@ -0,0 +1,5 @@ +fn foo() { + (); + (1); + (1,); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt new file mode 100644 index 000000000..cf541411f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt @@ -0,0 +1,38 @@ +ROOT@[0; 40) + FN_DEF@[0; 39) + FN_KW@[0; 2) + 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@[9; 39) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 18) + TUPLE_EXPR@[15; 17) + L_PAREN@[15; 16) + R_PAREN@[16; 17) + SEMI@[17; 18) + WHITESPACE@[18; 23) + EXPR_STMT@[23; 27) + PAREN_EXPR@[23; 26) + L_PAREN@[23; 24) + LITERAL@[24; 25) + INT_NUMBER@[24; 25) "1" + R_PAREN@[25; 26) + SEMI@[26; 27) + WHITESPACE@[27; 32) + 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) + SEMI@[36; 37) + WHITESPACE@[37; 38) + R_CURLY@[38; 39) + WHITESPACE@[39; 40) diff --git a/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.rs new file mode 100644 index 000000000..b9ba78a6c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + x[1][2]; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt new file mode 100644 index 000000000..4624aab23 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt @@ -0,0 +1,33 @@ +ROOT@[0; 26) + FN_DEF@[0; 25) + FN_KW@[0; 2) + 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@[9; 25) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + 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) + SEMI@[22; 23) + WHITESPACE@[23; 24) + R_CURLY@[24; 25) + WHITESPACE@[25; 26) diff --git a/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.rs b/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.rs new file mode 100644 index 000000000..f785acd36 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.rs @@ -0,0 +1,3 @@ +fn main() { + let (a, b, ..) = (); +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt new file mode 100644 index 000000000..2d68a5ff2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt @@ -0,0 +1,40 @@ +ROOT@[0; 39) + FN_DEF@[0; 38) + FN_KW@[0; 2) + 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@[10; 38) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + LET_STMT@[16; 36) + LET_KW@[16; 19) + WHITESPACE@[19; 20) + TUPLE_PAT@[20; 30) + L_PAREN@[20; 21) + BIND_PAT@[21; 22) + NAME@[21; 22) + IDENT@[21; 22) "a" + COMMA@[22; 23) + WHITESPACE@[23; 24) + BIND_PAT@[24; 25) + NAME@[24; 25) + IDENT@[24; 25) "b" + COMMA@[25; 26) + WHITESPACE@[26; 27) + DOTDOT@[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) + SEMI@[35; 36) + WHITESPACE@[36; 37) + R_CURLY@[37; 38) + WHITESPACE@[38; 39) diff --git a/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.rs b/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.rs new file mode 100644 index 000000000..c39fe8e68 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.rs @@ -0,0 +1 @@ +fn foo() { let x = 1..; } diff --git a/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt b/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt new file mode 100644 index 000000000..475251ea7 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt @@ -0,0 +1,30 @@ +ROOT@[0; 26) + FN_DEF@[0; 25) + FN_KW@[0; 2) + 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@[9; 25) + L_CURLY@[9; 10) + WHITESPACE@[10; 11) + LET_STMT@[11; 23) + LET_KW@[11; 14) + WHITESPACE@[14; 15) + BIND_PAT@[15; 16) + NAME@[15; 16) + IDENT@[15; 16) "x" + WHITESPACE@[16; 17) + EQ@[17; 18) + WHITESPACE@[18; 19) + RANGE_EXPR@[19; 22) + LITERAL@[19; 20) + INT_NUMBER@[19; 20) "1" + DOTDOT@[20; 22) + SEMI@[22; 23) + WHITESPACE@[23; 24) + R_CURLY@[24; 25) + WHITESPACE@[25; 26) diff --git a/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.rs new file mode 100644 index 000000000..9f078fa48 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + loop {}; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt new file mode 100644 index 000000000..5321fade9 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt @@ -0,0 +1,24 @@ +ROOT@[0; 26) + FN_DEF@[0; 25) + FN_KW@[0; 2) + 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@[9; 25) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 23) + LOOP_EXPR@[15; 22) + LOOP_KW@[15; 19) + WHITESPACE@[19; 20) + BLOCK@[20; 22) + L_CURLY@[20; 21) + R_CURLY@[21; 22) + SEMI@[22; 23) + WHITESPACE@[23; 24) + R_CURLY@[24; 25) + WHITESPACE@[25; 26) diff --git a/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.rs new file mode 100644 index 000000000..972197d2a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.rs @@ -0,0 +1,3 @@ +fn foo() { + for x in [] {}; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt new file mode 100644 index 000000000..7ddf8122f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt @@ -0,0 +1,34 @@ +ROOT@[0; 33) + FN_DEF@[0; 32) + FN_KW@[0; 2) + 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@[9; 32) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 30) + FOR_EXPR@[15; 29) + FOR_KW@[15; 18) + WHITESPACE@[18; 19) + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "x" + WHITESPACE@[20; 21) + IN_KW@[21; 23) + WHITESPACE@[23; 24) + ARRAY_EXPR@[24; 26) + L_BRACK@[24; 25) + R_BRACK@[25; 26) + WHITESPACE@[26; 27) + BLOCK@[27; 29) + L_CURLY@[27; 28) + R_CURLY@[28; 29) + SEMI@[29; 30) + WHITESPACE@[30; 31) + R_CURLY@[31; 32) + WHITESPACE@[32; 33) diff --git a/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.rs b/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.rs new file mode 100644 index 000000000..1f25d577a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.rs @@ -0,0 +1,7 @@ +fn foo() { + match () { + _ => (), + _ => {} + _ => () + } +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt b/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt new file mode 100644 index 000000000..560931645 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt @@ -0,0 +1,59 @@ +ROOT@[0; 83) + FN_DEF@[0; 82) + FN_KW@[0; 2) + 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@[9; 82) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + MATCH_EXPR@[15; 80) + MATCH_KW@[15; 20) + 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) + MATCH_ARM@[34; 41) + PLACEHOLDER_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) + MATCH_ARM@[51; 58) + PLACEHOLDER_PAT@[51; 52) + UNDERSCORE@[51; 52) + WHITESPACE@[52; 53) + FAT_ARROW@[53; 55) + WHITESPACE@[55; 56) + BLOCK_EXPR@[56; 58) + BLOCK@[56; 58) + L_CURLY@[56; 57) + R_CURLY@[57; 58) + WHITESPACE@[58; 67) + MATCH_ARM@[67; 74) + PLACEHOLDER_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) + R_CURLY@[79; 80) + WHITESPACE@[80; 81) + R_CURLY@[81; 82) + WHITESPACE@[82; 83) diff --git a/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.rs new file mode 100644 index 000000000..4dc1999d1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + []; + [1]; + [1, 2,]; + [1; 2]; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt new file mode 100644 index 000000000..dcdeff609 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt @@ -0,0 +1,54 @@ +ROOT@[0; 55) + FN_DEF@[0; 54) + FN_KW@[0; 2) + 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@[9; 54) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 18) + ARRAY_EXPR@[15; 17) + L_BRACK@[15; 16) + R_BRACK@[16; 17) + SEMI@[17; 18) + WHITESPACE@[18; 23) + EXPR_STMT@[23; 27) + ARRAY_EXPR@[23; 26) + L_BRACK@[23; 24) + LITERAL@[24; 25) + INT_NUMBER@[24; 25) "1" + R_BRACK@[25; 26) + SEMI@[26; 27) + WHITESPACE@[27; 32) + 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) + SEMI@[39; 40) + WHITESPACE@[40; 45) + EXPR_STMT@[45; 52) + ARRAY_EXPR@[45; 51) + L_BRACK@[45; 46) + LITERAL@[46; 47) + INT_NUMBER@[46; 47) "1" + SEMI@[47; 48) + WHITESPACE@[48; 49) + LITERAL@[49; 50) + INT_NUMBER@[49; 50) "2" + R_BRACK@[50; 51) + SEMI@[51; 52) + WHITESPACE@[52; 53) + R_CURLY@[53; 54) + WHITESPACE@[54; 55) diff --git a/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.rs b/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.rs new file mode 100644 index 000000000..d769da43d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.rs @@ -0,0 +1,9 @@ +fn foo() { + if true {} + loop {} + match () {} + while true {} + for _ in () {} + {} + {} +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt b/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt new file mode 100644 index 000000000..f1b0e2787 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt @@ -0,0 +1,87 @@ +ROOT@[0; 107) + FN_DEF@[0; 106) + FN_KW@[0; 2) + 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@[9; 106) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 25) + IF_EXPR@[15; 25) + IF_KW@[15; 17) + WHITESPACE@[17; 18) + CONDITION@[18; 22) + LITERAL@[18; 22) + TRUE_KW@[18; 22) + WHITESPACE@[22; 23) + BLOCK@[23; 25) + L_CURLY@[23; 24) + R_CURLY@[24; 25) + WHITESPACE@[25; 30) + EXPR_STMT@[30; 37) + LOOP_EXPR@[30; 37) + LOOP_KW@[30; 34) + WHITESPACE@[34; 35) + BLOCK@[35; 37) + L_CURLY@[35; 36) + R_CURLY@[36; 37) + WHITESPACE@[37; 42) + EXPR_STMT@[42; 53) + MATCH_EXPR@[42; 53) + MATCH_KW@[42; 47) + 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) + EXPR_STMT@[58; 71) + WHILE_EXPR@[58; 71) + WHILE_KW@[58; 63) + WHITESPACE@[63; 64) + CONDITION@[64; 68) + LITERAL@[64; 68) + TRUE_KW@[64; 68) + WHITESPACE@[68; 69) + BLOCK@[69; 71) + L_CURLY@[69; 70) + R_CURLY@[70; 71) + WHITESPACE@[71; 76) + EXPR_STMT@[76; 90) + FOR_EXPR@[76; 90) + FOR_KW@[76; 79) + WHITESPACE@[79; 80) + PLACEHOLDER_PAT@[80; 81) + UNDERSCORE@[80; 81) + WHITESPACE@[81; 82) + IN_KW@[82; 84) + WHITESPACE@[84; 85) + TUPLE_EXPR@[85; 87) + L_PAREN@[85; 86) + R_PAREN@[86; 87) + WHITESPACE@[87; 88) + BLOCK@[88; 90) + L_CURLY@[88; 89) + R_CURLY@[89; 90) + WHITESPACE@[90; 95) + EXPR_STMT@[95; 97) + BLOCK_EXPR@[95; 97) + BLOCK@[95; 97) + L_CURLY@[95; 96) + R_CURLY@[96; 97) + WHITESPACE@[97; 102) + BLOCK_EXPR@[102; 104) + BLOCK@[102; 104) + L_CURLY@[102; 103) + R_CURLY@[103; 104) + WHITESPACE@[104; 105) + R_CURLY@[105; 106) + WHITESPACE@[106; 107) diff --git a/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.rs b/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.rs new file mode 100644 index 000000000..2edd578f9 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.rs @@ -0,0 +1,7 @@ +fn foo() { + match () { + _ => {} + () => {} + [] => {} + } +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt new file mode 100644 index 000000000..91edf3f84 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt @@ -0,0 +1,62 @@ +ROOT@[0; 84) + FN_DEF@[0; 83) + FN_KW@[0; 2) + 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@[9; 83) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + MATCH_EXPR@[15; 81) + MATCH_KW@[15; 20) + 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) + MATCH_ARM@[34; 41) + PLACEHOLDER_PAT@[34; 35) + UNDERSCORE@[34; 35) + WHITESPACE@[35; 36) + FAT_ARROW@[36; 38) + WHITESPACE@[38; 39) + BLOCK_EXPR@[39; 41) + BLOCK@[39; 41) + L_CURLY@[39; 40) + R_CURLY@[40; 41) + WHITESPACE@[41; 50) + 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) + BLOCK@[56; 58) + L_CURLY@[56; 57) + R_CURLY@[57; 58) + WHITESPACE@[58; 67) + 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) + BLOCK@[73; 75) + L_CURLY@[73; 74) + R_CURLY@[74; 75) + WHITESPACE@[75; 80) + R_CURLY@[80; 81) + WHITESPACE@[81; 82) + R_CURLY@[82; 83) + WHITESPACE@[83; 84) diff --git a/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.rs b/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.rs new file mode 100644 index 000000000..37b843742 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.rs @@ -0,0 +1,4 @@ +fn foo() { + let _ = {1} & 2; + {1} &2; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt new file mode 100644 index 000000000..ff1298acb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt @@ -0,0 +1,52 @@ +ROOT@[0; 46) + FN_DEF@[0; 45) + FN_KW@[0; 2) + 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@[9; 45) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LET_STMT@[15; 31) + LET_KW@[15; 18) + WHITESPACE@[18; 19) + PLACEHOLDER_PAT@[19; 20) + UNDERSCORE@[19; 20) + WHITESPACE@[20; 21) + EQ@[21; 22) + WHITESPACE@[22; 23) + BIN_EXPR@[23; 30) + BLOCK_EXPR@[23; 26) + BLOCK@[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" + SEMI@[30; 31) + WHITESPACE@[31; 36) + EXPR_STMT@[36; 39) + BLOCK_EXPR@[36; 39) + BLOCK@[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" + SEMI@[42; 43) + WHITESPACE@[43; 44) + R_CURLY@[44; 45) + WHITESPACE@[45; 46) diff --git a/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.rs b/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.rs new file mode 100644 index 000000000..7955973b9 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.rs @@ -0,0 +1,3 @@ +fn main() { + let [a, b, ..] = []; +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt new file mode 100644 index 000000000..99e8dd427 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt @@ -0,0 +1,40 @@ +ROOT@[0; 39) + FN_DEF@[0; 38) + FN_KW@[0; 2) + 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@[10; 38) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + LET_STMT@[16; 36) + LET_KW@[16; 19) + WHITESPACE@[19; 20) + SLICE_PAT@[20; 30) + L_BRACK@[20; 21) + BIND_PAT@[21; 22) + NAME@[21; 22) + IDENT@[21; 22) "a" + COMMA@[22; 23) + WHITESPACE@[23; 24) + BIND_PAT@[24; 25) + NAME@[24; 25) + IDENT@[24; 25) "b" + COMMA@[25; 26) + WHITESPACE@[26; 27) + DOTDOT@[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) + SEMI@[35; 36) + WHITESPACE@[36; 37) + R_CURLY@[37; 38) + WHITESPACE@[38; 39) diff --git a/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.rs b/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.rs new file mode 100644 index 000000000..c9f74f7f5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.rs @@ -0,0 +1 @@ +trait T { fn foo(); } diff --git a/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt b/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt new file mode 100644 index 000000000..c35bc8428 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt @@ -0,0 +1,22 @@ +ROOT@[0; 22) + TRAIT_DEF@[0; 21) + TRAIT_KW@[0; 5) + WHITESPACE@[5; 6) + NAME@[6; 7) + IDENT@[6; 7) "T" + WHITESPACE@[7; 8) + ITEM_LIST@[8; 21) + L_CURLY@[8; 9) + WHITESPACE@[9; 10) + FN_DEF@[10; 19) + FN_KW@[10; 12) + WHITESPACE@[12; 13) + NAME@[13; 16) + IDENT@[13; 16) "foo" + PARAM_LIST@[16; 18) + L_PAREN@[16; 17) + R_PAREN@[17; 18) + SEMI@[18; 19) + WHITESPACE@[19; 20) + R_CURLY@[20; 21) + WHITESPACE@[21; 22) diff --git a/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.rs b/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.rs new file mode 100644 index 000000000..16f674d9d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.rs @@ -0,0 +1,7 @@ +fn main() { + match () { + 92 => (), + 'c' => (), + "hello" => (), + } +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt b/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt new file mode 100644 index 000000000..3128bfd7d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt @@ -0,0 +1,60 @@ +ROOT@[0; 95) + FN_DEF@[0; 94) + FN_KW@[0; 2) + 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@[10; 94) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + MATCH_EXPR@[16; 92) + MATCH_KW@[16; 21) + WHITESPACE@[21; 22) + TUPLE_EXPR@[22; 24) + L_PAREN@[22; 23) + R_PAREN@[23; 24) + WHITESPACE@[24; 25) + MATCH_ARM_LIST@[25; 92) + L_CURLY@[25; 26) + WHITESPACE@[26; 35) + MATCH_ARM@[35; 43) + LITERAL@[35; 37) + INT_NUMBER@[35; 37) "92" + 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) + MATCH_ARM@[53; 62) + LITERAL@[53; 56) + CHAR@[53; 56) + WHITESPACE@[56; 57) + FAT_ARROW@[57; 59) + WHITESPACE@[59; 60) + TUPLE_EXPR@[60; 62) + L_PAREN@[60; 61) + R_PAREN@[61; 62) + COMMA@[62; 63) + WHITESPACE@[63; 72) + MATCH_ARM@[72; 85) + LITERAL@[72; 79) + STRING@[72; 79) + WHITESPACE@[79; 80) + FAT_ARROW@[80; 82) + WHITESPACE@[82; 83) + TUPLE_EXPR@[83; 85) + L_PAREN@[83; 84) + R_PAREN@[84; 85) + COMMA@[85; 86) + WHITESPACE@[86; 91) + R_CURLY@[91; 92) + WHITESPACE@[92; 93) + R_CURLY@[93; 94) + WHITESPACE@[94; 95) diff --git a/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.rs b/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.rs new file mode 100644 index 000000000..aef45e561 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.rs @@ -0,0 +1 @@ +type F = Box ()>; diff --git a/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt b/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt new file mode 100644 index 000000000..26a690d3a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt @@ -0,0 +1,46 @@ +ROOT@[0; 32) + TYPE_DEF@[0; 31) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "F" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + PATH_TYPE@[9; 30) + PATH@[9; 30) + PATH_SEGMENT@[9; 30) + NAME_REF@[9; 12) + IDENT@[9; 12) "Box" + TYPE_ARG_LIST@[12; 30) + L_ANGLE@[12; 13) + TYPE_ARG@[13; 29) + PATH_TYPE@[13; 29) + PATH@[13; 29) + PATH_SEGMENT@[13; 29) + NAME_REF@[13; 15) + IDENT@[13; 15) "Fn" + PARAM_LIST@[15; 23) + L_PAREN@[15; 16) + PARAM@[16; 22) + BIND_PAT@[16; 17) + NAME@[16; 17) + IDENT@[16; 17) "x" + COLON@[17; 18) + WHITESPACE@[18; 19) + PATH_TYPE@[19; 22) + PATH@[19; 22) + PATH_SEGMENT@[19; 22) + NAME_REF@[19; 22) + IDENT@[19; 22) "i32" + R_PAREN@[22; 23) + WHITESPACE@[23; 24) + RET_TYPE@[24; 29) + THIN_ARROW@[24; 26) + WHITESPACE@[26; 27) + TUPLE_TYPE@[27; 29) + L_PAREN@[27; 28) + R_PAREN@[28; 29) + R_ANGLE@[29; 30) + SEMI@[30; 31) + WHITESPACE@[31; 32) diff --git a/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.rs b/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.rs new file mode 100644 index 000000000..657467e75 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.rs @@ -0,0 +1,3 @@ +fn main() { + match 92 { 0 ... 100 => () } +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt new file mode 100644 index 000000000..4f14d5431 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt @@ -0,0 +1,42 @@ +ROOT@[0; 47) + FN_DEF@[0; 46) + FN_KW@[0; 2) + 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@[10; 46) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + MATCH_EXPR@[16; 44) + MATCH_KW@[16; 21) + WHITESPACE@[21; 22) + LITERAL@[22; 24) + INT_NUMBER@[22; 24) "92" + WHITESPACE@[24; 25) + MATCH_ARM_LIST@[25; 44) + L_CURLY@[25; 26) + WHITESPACE@[26; 27) + MATCH_ARM@[27; 42) + RANGE_PAT@[27; 36) + LITERAL@[27; 28) + INT_NUMBER@[27; 28) "0" + WHITESPACE@[28; 29) + DOTDOTDOT@[29; 32) + WHITESPACE@[32; 33) + LITERAL@[33; 36) + INT_NUMBER@[33; 36) "100" + WHITESPACE@[36; 37) + FAT_ARROW@[37; 39) + WHITESPACE@[39; 40) + TUPLE_EXPR@[40; 42) + L_PAREN@[40; 41) + R_PAREN@[41; 42) + WHITESPACE@[42; 43) + R_CURLY@[43; 44) + WHITESPACE@[44; 45) + R_CURLY@[45; 46) + WHITESPACE@[46; 47) diff --git a/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.rs b/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.rs new file mode 100644 index 000000000..215210e27 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.rs @@ -0,0 +1 @@ +fn foo() -> Box {} diff --git a/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt new file mode 100644 index 000000000..4b864f741 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt @@ -0,0 +1,36 @@ +ROOT@[0; 27) + FN_DEF@[0; 26) + FN_KW@[0; 2) + 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" + TYPE_ARG_LIST@[15; 23) + L_ANGLE@[15; 16) + TYPE_ARG@[16; 22) + PATH_TYPE@[16; 22) + PATH@[16; 17) + PATH_SEGMENT@[16; 17) + NAME_REF@[16; 17) + IDENT@[16; 17) "T" + WHITESPACE@[17; 18) + PLUS@[18; 19) + WHITESPACE@[19; 20) + LIFETIME@[20; 22) "'f" + R_ANGLE@[22; 23) + WHITESPACE@[23; 24) + BLOCK@[24; 26) + L_CURLY@[24; 25) + R_CURLY@[25; 26) + WHITESPACE@[26; 27) diff --git a/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.rs b/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.rs new file mode 100644 index 000000000..d8c23c76a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.rs @@ -0,0 +1 @@ +type F = Box; diff --git a/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt new file mode 100644 index 000000000..3c8352067 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt @@ -0,0 +1,81 @@ +ROOT@[0; 54) + TYPE_DEF@[0; 53) + TYPE_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 6) + IDENT@[5; 6) "F" + WHITESPACE@[6; 7) + EQ@[7; 8) + WHITESPACE@[8; 9) + PATH_TYPE@[9; 52) + PATH@[9; 52) + PATH_SEGMENT@[9; 52) + NAME_REF@[9; 12) + IDENT@[9; 12) "Box" + TYPE_ARG_LIST@[12; 52) + L_ANGLE@[12; 13) + TYPE_ARG@[13; 51) + PATH_TYPE@[13; 51) + PATH@[13; 51) + PATH_SEGMENT@[13; 51) + NAME_REF@[13; 15) + IDENT@[13; 15) "Fn" + PARAM_LIST@[15; 51) + L_PAREN@[15; 16) + PARAM@[16; 22) + BIND_PAT@[16; 17) + NAME@[16; 17) + IDENT@[16; 17) "a" + COLON@[17; 18) + WHITESPACE@[18; 19) + PATH_TYPE@[19; 22) + PATH@[19; 22) + PATH_SEGMENT@[19; 22) + NAME_REF@[19; 22) + IDENT@[19; 22) "i32" + COMMA@[22; 23) + WHITESPACE@[23; 24) + PARAM@[24; 32) + REF_PAT@[24; 26) + AMP@[24; 25) + BIND_PAT@[25; 26) + NAME@[25; 26) + IDENT@[25; 26) "b" + COLON@[26; 27) + WHITESPACE@[27; 28) + REFERENCE_TYPE@[28; 32) + AMP@[28; 29) + PATH_TYPE@[29; 32) + PATH@[29; 32) + PATH_SEGMENT@[29; 32) + NAME_REF@[29; 32) + IDENT@[29; 32) "i32" + COMMA@[32; 33) + WHITESPACE@[33; 34) + PARAM@[34; 46) + REF_PAT@[34; 40) + AMP@[34; 35) + MUT_KW@[35; 38) + WHITESPACE@[38; 39) + BIND_PAT@[39; 40) + NAME@[39; 40) + IDENT@[39; 40) "c" + COLON@[40; 41) + WHITESPACE@[41; 42) + REFERENCE_TYPE@[42; 46) + AMP@[42; 43) + PATH_TYPE@[43; 46) + PATH@[43; 46) + PATH_SEGMENT@[43; 46) + NAME_REF@[43; 46) + IDENT@[43; 46) "i32" + COMMA@[46; 47) + WHITESPACE@[47; 48) + PARAM@[48; 50) + TUPLE_TYPE@[48; 50) + L_PAREN@[48; 49) + R_PAREN@[49; 50) + R_PAREN@[50; 51) + R_ANGLE@[51; 52) + SEMI@[52; 53) + WHITESPACE@[53; 54) diff --git a/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.rs b/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.rs new file mode 100644 index 000000000..9b93442c0 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.rs @@ -0,0 +1 @@ +fn foo)>(){} diff --git a/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt new file mode 100644 index 000000000..39bab8dd2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt @@ -0,0 +1,44 @@ +ROOT@[0; 35) + FN_DEF@[0; 34) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 6) + IDENT@[3; 6) "foo" + TYPE_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) + 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) + REFERENCE_TYPE@[16; 28) + AMP@[16; 17) + MUT_KW@[17; 20) + WHITESPACE@[20; 21) + PATH_TYPE@[21; 28) + PATH@[21; 28) + PATH_SEGMENT@[21; 28) + NAME_REF@[21; 24) + IDENT@[21; 24) "Foo" + TYPE_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@[32; 34) + L_CURLY@[32; 33) + R_CURLY@[33; 34) + WHITESPACE@[34; 35) diff --git a/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.rs b/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.rs new file mode 100644 index 000000000..592a005f9 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.rs @@ -0,0 +1,6 @@ +fn foo() +where + 'a: 'b + 'c, + T: Clone + Copy + 'static, + Iterator::Item: 'a, +{} diff --git a/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt new file mode 100644 index 000000000..9fe803554 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt @@ -0,0 +1,71 @@ +ROOT@[0; 87) + FN_DEF@[0; 86) + FN_KW@[0; 2) + 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) + WHERE_CLAUSE@[9; 83) + WHERE_KW@[9; 14) + WHITESPACE@[14; 18) + WHERE_PRED@[18; 29) + LIFETIME@[18; 20) "'a" + COLON@[20; 21) + WHITESPACE@[21; 22) + LIFETIME@[22; 24) "'b" + WHITESPACE@[24; 25) + PLUS@[25; 26) + WHITESPACE@[26; 27) + LIFETIME@[27; 29) "'c" + COMMA@[29; 30) + WHITESPACE@[30; 34) + 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) + PATH_TYPE@[37; 59) + PATH@[37; 42) + PATH_SEGMENT@[37; 42) + NAME_REF@[37; 42) + IDENT@[37; 42) "Clone" + WHITESPACE@[42; 43) + PLUS@[43; 44) + WHITESPACE@[44; 45) + PATH_TYPE@[45; 59) + PATH@[45; 49) + PATH_SEGMENT@[45; 49) + NAME_REF@[45; 49) + IDENT@[45; 49) "Copy" + WHITESPACE@[49; 50) + PLUS@[50; 51) + WHITESPACE@[51; 52) + LIFETIME@[52; 59) "'static" + COMMA@[59; 60) + WHITESPACE@[60; 64) + 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" + COLONCOLON@[72; 74) + PATH_SEGMENT@[74; 78) + NAME_REF@[74; 78) + IDENT@[74; 78) "Item" + COLON@[78; 79) + WHITESPACE@[79; 80) + LIFETIME@[80; 82) "'a" + COMMA@[82; 83) + WHITESPACE@[83; 84) + BLOCK@[84; 86) + L_CURLY@[84; 85) + R_CURLY@[85; 86) + WHITESPACE@[86; 87) diff --git a/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.rs b/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.rs new file mode 100644 index 000000000..660d927cf --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.rs @@ -0,0 +1 @@ +crate fn main() { } diff --git a/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt b/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt new file mode 100644 index 000000000..96a4e9162 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt @@ -0,0 +1,18 @@ +ROOT@[0; 20) + FN_DEF@[0; 19) + VISIBILITY@[0; 5) + CRATE_KW@[0; 5) + WHITESPACE@[5; 6) + FN_KW@[6; 8) + 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@[16; 19) + L_CURLY@[16; 17) + WHITESPACE@[17; 18) + R_CURLY@[18; 19) + WHITESPACE@[19; 20) diff --git a/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.rs b/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.rs new file mode 100644 index 000000000..c3ecabb99 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.rs @@ -0,0 +1 @@ +type A = dyn Iterator> + 'a; diff --git a/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt new file mode 100644 index 000000000..c81ae5545 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt @@ -0,0 +1,40 @@ +ROOT@[0; 42) + TYPE_DEF@[0; 41) + TYPE_KW@[0; 4) + 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) + WHITESPACE@[12; 13) + PATH_TYPE@[13; 40) + PATH@[13; 35) + PATH_SEGMENT@[13; 35) + NAME_REF@[13; 21) + IDENT@[13; 21) "Iterator" + TYPE_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" + TYPE_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) + LIFETIME@[38; 40) "'a" + SEMI@[40; 41) + WHITESPACE@[41; 42) diff --git a/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.rs b/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.rs new file mode 100644 index 000000000..d140692e2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.rs @@ -0,0 +1,2 @@ +type X = ::Output; +fn foo() { ::default(); } diff --git a/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt b/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt new file mode 100644 index 000000000..99516bf15 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt @@ -0,0 +1,78 @@ +ROOT@[0; 71) + TYPE_DEF@[0; 26) + TYPE_KW@[0; 4) + 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) + 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) + COLONCOLON@[17; 19) + PATH_SEGMENT@[19; 25) + NAME_REF@[19; 25) + IDENT@[19; 25) "Output" + SEMI@[25; 26) + WHITESPACE@[26; 27) + FN_DEF@[27; 70) + FN_KW@[27; 29) + 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@[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) + 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) + COLONCOLON@[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) + SEMI@[67; 68) + WHITESPACE@[68; 69) + R_CURLY@[69; 70) + WHITESPACE@[70; 71) diff --git a/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.rs new file mode 100644 index 000000000..ae21ad94c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.rs @@ -0,0 +1 @@ +fn foo() { xs[..]; } diff --git a/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt new file mode 100644 index 000000000..19f77fb73 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt @@ -0,0 +1,28 @@ +ROOT@[0; 21) + FN_DEF@[0; 20) + FN_KW@[0; 2) + 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@[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) + DOTDOT@[14; 16) + R_BRACK@[16; 17) + SEMI@[17; 18) + WHITESPACE@[18; 19) + R_CURLY@[19; 20) + WHITESPACE@[20; 21) diff --git a/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.rs b/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.rs new file mode 100644 index 000000000..4744d8ac0 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.rs @@ -0,0 +1,4 @@ +struct S { + #[serde(with = "url_serde")] + pub uri: Uri, +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt b/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt new file mode 100644 index 000000000..420712e89 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt @@ -0,0 +1,42 @@ +ROOT@[0; 64) + STRUCT_DEF@[0; 63) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + WHITESPACE@[8; 9) + NAMED_FIELD_DEF_LIST@[9; 63) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + NAMED_FIELD_DEF@[15; 60) + ATTR@[15; 43) + POUND@[15; 16) + TOKEN_TREE@[16; 43) + L_BRACK@[16; 17) + 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) + R_PAREN@[41; 42) + R_BRACK@[42; 43) + WHITESPACE@[43; 48) + VISIBILITY@[48; 51) + PUB_KW@[48; 51) + 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) + R_CURLY@[62; 63) + WHITESPACE@[63; 64) diff --git a/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.rs b/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.rs new file mode 100644 index 000000000..6a170d5ac --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.rs @@ -0,0 +1,4 @@ +impl S { + fn a(self: &Self) {} + fn b(mut self: Box) {} +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt b/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt new file mode 100644 index 000000000..9a306921e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt @@ -0,0 +1,72 @@ +ROOT@[0; 69) + IMPL_ITEM@[0; 68) + IMPL_KW@[0; 4) + 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) + ITEM_LIST@[7; 68) + L_CURLY@[7; 8) + WHITESPACE@[8; 13) + FN_DEF@[13; 33) + FN_KW@[13; 15) + 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) + COLON@[22; 23) + WHITESPACE@[23; 24) + REFERENCE_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@[31; 33) + L_CURLY@[31; 32) + R_CURLY@[32; 33) + WHITESPACE@[33; 38) + FN_DEF@[38; 66) + FN_KW@[38; 40) + 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) + WHITESPACE@[46; 47) + SELF_KW@[47; 51) + 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" + TYPE_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@[64; 66) + L_CURLY@[64; 65) + R_CURLY@[65; 66) + WHITESPACE@[66; 67) + R_CURLY@[67; 68) + WHITESPACE@[68; 69) diff --git a/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.rs new file mode 100644 index 000000000..474cc3f0e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.rs @@ -0,0 +1,6 @@ +fn foo() { + loop { + continue; + continue 'l; + } +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt new file mode 100644 index 000000000..1c78704fa --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt @@ -0,0 +1,35 @@ +ROOT@[0; 69) + FN_DEF@[0; 68) + FN_KW@[0; 2) + 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@[9; 68) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LOOP_EXPR@[15; 66) + LOOP_KW@[15; 19) + WHITESPACE@[19; 20) + BLOCK@[20; 66) + L_CURLY@[20; 21) + WHITESPACE@[21; 30) + EXPR_STMT@[30; 39) + CONTINUE_EXPR@[30; 38) + CONTINUE_KW@[30; 38) + SEMI@[38; 39) + WHITESPACE@[39; 48) + EXPR_STMT@[48; 60) + CONTINUE_EXPR@[48; 59) + CONTINUE_KW@[48; 56) + WHITESPACE@[56; 57) + LIFETIME@[57; 59) "'l" + SEMI@[59; 60) + WHITESPACE@[60; 65) + R_CURLY@[65; 66) + WHITESPACE@[66; 67) + R_CURLY@[67; 68) + WHITESPACE@[68; 69) diff --git a/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.rs b/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.rs new file mode 100644 index 000000000..1b4094636 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.rs @@ -0,0 +1,8 @@ +fn foo() { + loop { + break; + break 'l; + break 92; + break 'l 92; + } +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt new file mode 100644 index 000000000..92b6b8bea --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt @@ -0,0 +1,53 @@ +ROOT@[0; 102) + FN_DEF@[0; 101) + FN_KW@[0; 2) + 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@[9; 101) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + LOOP_EXPR@[15; 99) + LOOP_KW@[15; 19) + WHITESPACE@[19; 20) + BLOCK@[20; 99) + L_CURLY@[20; 21) + WHITESPACE@[21; 30) + EXPR_STMT@[30; 36) + BREAK_EXPR@[30; 35) + BREAK_KW@[30; 35) + SEMI@[35; 36) + WHITESPACE@[36; 45) + EXPR_STMT@[45; 54) + BREAK_EXPR@[45; 53) + BREAK_KW@[45; 50) + WHITESPACE@[50; 51) + LIFETIME@[51; 53) "'l" + SEMI@[53; 54) + WHITESPACE@[54; 63) + EXPR_STMT@[63; 72) + BREAK_EXPR@[63; 71) + BREAK_KW@[63; 68) + WHITESPACE@[68; 69) + LITERAL@[69; 71) + INT_NUMBER@[69; 71) "92" + SEMI@[71; 72) + WHITESPACE@[72; 81) + EXPR_STMT@[81; 93) + BREAK_EXPR@[81; 92) + BREAK_KW@[81; 86) + WHITESPACE@[86; 87) + LIFETIME@[87; 89) "'l" + WHITESPACE@[89; 90) + LITERAL@[90; 92) + INT_NUMBER@[90; 92) "92" + SEMI@[92; 93) + WHITESPACE@[93; 98) + R_CURLY@[98; 99) + WHITESPACE@[99; 100) + R_CURLY@[100; 101) + WHITESPACE@[101; 102) diff --git a/crates/ra_syntax/tests/data/parser/inline/0107_label.rs b/crates/ra_syntax/tests/data/parser/inline/0107_label.rs new file mode 100644 index 000000000..48e83f263 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0107_label.rs @@ -0,0 +1,5 @@ +fn foo() { + 'a: loop {} + 'b: while true {} + 'c: for x in () {} +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0107_label.txt b/crates/ra_syntax/tests/data/parser/inline/0107_label.txt new file mode 100644 index 000000000..768515595 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0107_label.txt @@ -0,0 +1,64 @@ +ROOT@[0; 74) + FN_DEF@[0; 73) + FN_KW@[0; 2) + 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@[9; 73) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + 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) + WHITESPACE@[23; 24) + BLOCK@[24; 26) + L_CURLY@[24; 25) + R_CURLY@[25; 26) + WHITESPACE@[26; 31) + 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) + WHITESPACE@[40; 41) + CONDITION@[41; 45) + LITERAL@[41; 45) + TRUE_KW@[41; 45) + WHITESPACE@[45; 46) + BLOCK@[46; 48) + L_CURLY@[46; 47) + R_CURLY@[47; 48) + WHITESPACE@[48; 53) + FOR_EXPR@[53; 71) + LABEL@[53; 56) + LIFETIME@[53; 55) "'c" + COLON@[55; 56) + WHITESPACE@[56; 57) + FOR_KW@[57; 60) + WHITESPACE@[60; 61) + BIND_PAT@[61; 62) + NAME@[61; 62) + IDENT@[61; 62) "x" + WHITESPACE@[62; 63) + IN_KW@[63; 65) + WHITESPACE@[65; 66) + TUPLE_EXPR@[66; 68) + L_PAREN@[66; 67) + R_PAREN@[67; 68) + WHITESPACE@[68; 69) + BLOCK@[69; 71) + L_CURLY@[69; 70) + R_CURLY@[70; 71) + WHITESPACE@[71; 72) + R_CURLY@[72; 73) + WHITESPACE@[73; 74) diff --git a/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.rs b/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.rs new file mode 100644 index 000000000..a2164c510 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.rs @@ -0,0 +1,3 @@ +fn main() { + 'loop: impl +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt b/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt new file mode 100644 index 000000000..d00305b97 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt @@ -0,0 +1,28 @@ +ROOT@[0; 30) + FN_DEF@[0; 29) + FN_KW@[0; 2) + 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@[10; 29) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + EXPR_STMT@[16; 22) + ERROR@[16; 22) + LABEL@[16; 22) + LIFETIME@[16; 21) "'loop" + COLON@[21; 22) + err: `expected a loop` + err: `expected SEMI` + WHITESPACE@[22; 23) + IMPL_ITEM@[23; 27) + IMPL_KW@[23; 27) + err: `expected type` + err: `expected `{`` + WHITESPACE@[27; 28) + R_CURLY@[28; 29) + WHITESPACE@[29; 30) diff --git a/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.rs b/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.rs new file mode 100644 index 000000000..693e3f3ee --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0109_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/ra_syntax/tests/data/parser/inline/0109_struct_items.txt b/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt new file mode 100644 index 000000000..f9b34cc5e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt @@ -0,0 +1,87 @@ +ROOT@[0; 106) + STRUCT_DEF@[0; 11) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 10) + IDENT@[7; 10) "Foo" + SEMI@[10; 11) + WHITESPACE@[11; 12) + STRUCT_DEF@[12; 25) + STRUCT_KW@[12; 18) + WHITESPACE@[18; 19) + NAME@[19; 22) + IDENT@[19; 22) "Foo" + WHITESPACE@[22; 23) + NAMED_FIELD_DEF_LIST@[23; 25) + L_CURLY@[23; 24) + R_CURLY@[24; 25) + WHITESPACE@[25; 26) + STRUCT_DEF@[26; 39) + STRUCT_KW@[26; 32) + WHITESPACE@[32; 33) + NAME@[33; 36) + IDENT@[33; 36) "Foo" + POS_FIELD_LIST@[36; 38) + L_PAREN@[36; 37) + R_PAREN@[37; 38) + SEMI@[38; 39) + WHITESPACE@[39; 40) + STRUCT_DEF@[40; 66) + STRUCT_KW@[40; 46) + WHITESPACE@[46; 47) + NAME@[47; 50) + IDENT@[47; 50) "Foo" + POS_FIELD_LIST@[50; 65) + L_PAREN@[50; 51) + POS_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) + POS_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) + SEMI@[65; 66) + WHITESPACE@[66; 67) + STRUCT_DEF@[67; 105) + STRUCT_KW@[67; 73) + WHITESPACE@[73; 74) + NAME@[74; 77) + IDENT@[74; 77) "Foo" + WHITESPACE@[77; 78) + NAMED_FIELD_DEF_LIST@[78; 105) + L_CURLY@[78; 79) + WHITESPACE@[79; 84) + NAMED_FIELD_DEF@[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) + NAMED_FIELD_DEF@[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) + R_CURLY@[104; 105) + WHITESPACE@[105; 106) diff --git a/crates/ra_syntax/tests/data/parser/inline/0110_union_items.rs b/crates/ra_syntax/tests/data/parser/inline/0110_union_items.rs new file mode 100644 index 000000000..b7dd610d8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0110_union_items.rs @@ -0,0 +1,5 @@ +union Foo {} +union Foo { + a: i32, + b: f32, +} diff --git a/crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt b/crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt new file mode 100644 index 000000000..e2e755414 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt @@ -0,0 +1,46 @@ +ROOT@[0; 51) + STRUCT_DEF@[0; 12) + UNION_KW@[0; 5) + WHITESPACE@[5; 6) + NAME@[6; 9) + IDENT@[6; 9) "Foo" + WHITESPACE@[9; 10) + NAMED_FIELD_DEF_LIST@[10; 12) + L_CURLY@[10; 11) + R_CURLY@[11; 12) + WHITESPACE@[12; 13) + STRUCT_DEF@[13; 50) + UNION_KW@[13; 18) + WHITESPACE@[18; 19) + NAME@[19; 22) + IDENT@[19; 22) "Foo" + WHITESPACE@[22; 23) + NAMED_FIELD_DEF_LIST@[23; 50) + L_CURLY@[23; 24) + WHITESPACE@[24; 29) + NAMED_FIELD_DEF@[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) + NAMED_FIELD_DEF@[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) + R_CURLY@[49; 50) + WHITESPACE@[50; 51) diff --git a/crates/ra_syntax/tests/data/parser/ok/0000_empty.rs b/crates/ra_syntax/tests/data/parser/ok/0000_empty.rs new file mode 100644 index 000000000..e69de29bb diff --git a/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt b/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt new file mode 100644 index 000000000..9f505ee96 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt @@ -0,0 +1 @@ +ROOT@[0; 0) diff --git a/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.rs b/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.rs new file mode 100644 index 000000000..512aeb3e7 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.rs @@ -0,0 +1,3 @@ +struct S { + f: T, +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt b/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt new file mode 100644 index 000000000..aa2f1b712 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt @@ -0,0 +1,37 @@ +ROOT@[0; 32) + STRUCT_DEF@[0; 31) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + TYPE_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) + 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) + NAMED_FIELD_DEF_LIST@[18; 31) + L_CURLY@[18; 19) + WHITESPACE@[19; 24) + NAMED_FIELD_DEF@[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) + R_CURLY@[30; 31) + WHITESPACE@[31; 32) diff --git a/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.rs b/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.rs new file mode 100644 index 000000000..cc3866d25 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt b/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt new file mode 100644 index 000000000..0b65387ef --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt @@ -0,0 +1,22 @@ +ROOT@[0; 25) + STRUCT_DEF@[0; 25) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "S" + WHITESPACE@[8; 9) + NAMED_FIELD_DEF_LIST@[9; 25) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + NAMED_FIELD_DEF@[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) + R_CURLY@[24; 25) diff --git a/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.rs b/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.rs new file mode 100644 index 000000000..53dc9e617 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.rs @@ -0,0 +1 @@ +#!/use/bin/env rusti \ No newline at end of file diff --git a/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt b/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt new file mode 100644 index 000000000..bb8874ead --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt @@ -0,0 +1,2 @@ +ROOT@[0; 20) + SHEBANG@[0; 20) diff --git a/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.rs b/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.rs new file mode 100644 index 000000000..03210551c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.rs @@ -0,0 +1,2 @@ +fn foo() { +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt b/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt new file mode 100644 index 000000000..8ed92f2a4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt @@ -0,0 +1,15 @@ +ROOT@[0; 13) + FN_DEF@[0; 12) + FN_KW@[0; 2) + 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@[9; 12) + L_CURLY@[9; 10) + WHITESPACE@[10; 11) + R_CURLY@[11; 12) + WHITESPACE@[12; 13) diff --git a/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.rs b/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.rs new file mode 100644 index 000000000..e81f8b1e8 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt b/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt new file mode 100644 index 000000000..2b64c497f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt @@ -0,0 +1,164 @@ +ROOT@[0; 236) + ATTR@[0; 8) + POUND@[0; 1) + EXCL@[1; 2) + TOKEN_TREE@[2; 8) + L_BRACK@[2; 3) + IDENT@[3; 7) "attr" + R_BRACK@[7; 8) + WHITESPACE@[8; 9) + ATTR@[9; 23) + POUND@[9; 10) + EXCL@[10; 11) + TOKEN_TREE@[11; 23) + L_BRACK@[11; 12) + IDENT@[12; 16) "attr" + TOKEN_TREE@[16; 22) + L_PAREN@[16; 17) + TRUE_KW@[17; 21) + R_PAREN@[21; 22) + R_BRACK@[22; 23) + WHITESPACE@[23; 24) + ATTR@[24; 39) + POUND@[24; 25) + EXCL@[25; 26) + TOKEN_TREE@[26; 39) + L_BRACK@[26; 27) + 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) + ATTR@[40; 116) + POUND@[40; 41) + EXCL@[41; 42) + TOKEN_TREE@[42; 116) + L_BRACK@[42; 43) + 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) + COMMA@[64; 65) + WHITESPACE@[65; 66) + STRING@[66; 72) + 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) + 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) + ATTR@[117; 130) + POUND@[117; 118) + EXCL@[118; 119) + TOKEN_TREE@[119; 130) + L_BRACK@[119; 120) + 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) + ATTR@[131; 155) + POUND@[131; 132) + EXCL@[132; 133) + TOKEN_TREE@[133; 155) + L_BRACK@[133; 134) + 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) + R_PAREN@[153; 154) + R_BRACK@[154; 155) + WHITESPACE@[155; 156) + ATTR@[156; 173) + POUND@[156; 157) + EXCL@[157; 158) + TOKEN_TREE@[158; 173) + L_BRACK@[158; 159) + IDENT@[159; 166) "enabled" + TOKEN_TREE@[166; 172) + L_PAREN@[166; 167) + TRUE_KW@[167; 171) + R_PAREN@[171; 172) + R_BRACK@[172; 173) + WHITESPACE@[173; 174) + ATTR@[174; 191) + POUND@[174; 175) + EXCL@[175; 176) + TOKEN_TREE@[176; 191) + L_BRACK@[176; 177) + IDENT@[177; 181) "attr" + TOKEN_TREE@[181; 190) + L_PAREN@[181; 182) + STRING@[182; 189) + R_PAREN@[189; 190) + R_BRACK@[190; 191) + WHITESPACE@[191; 192) + ATTR@[192; 214) + POUND@[192; 193) + EXCL@[193; 194) + TOKEN_TREE@[194; 214) + L_BRACK@[194; 195) + 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) + ATTR@[215; 236) + POUND@[215; 216) + EXCL@[216; 217) + TOKEN_TREE@[217; 236) + L_BRACK@[217; 218) + 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/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs new file mode 100644 index 000000000..3ce336676 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs @@ -0,0 +1,2 @@ +extern crate foo; +extern crate foo as bar; diff --git a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt new file mode 100644 index 000000000..12193397e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt @@ -0,0 +1,25 @@ +ROOT@[0; 43) + EXTERN_CRATE_ITEM@[0; 17) + EXTERN_KW@[0; 6) + WHITESPACE@[6; 7) + CRATE_KW@[7; 12) + WHITESPACE@[12; 13) + NAME@[13; 16) + IDENT@[13; 16) "foo" + SEMI@[16; 17) + WHITESPACE@[17; 18) + EXTERN_CRATE_ITEM@[18; 42) + EXTERN_KW@[18; 24) + WHITESPACE@[24; 25) + CRATE_KW@[25; 30) + WHITESPACE@[30; 31) + NAME@[31; 34) + IDENT@[31; 34) "foo" + WHITESPACE@[34; 35) + ALIAS@[35; 41) + AS_KW@[35; 37) + WHITESPACE@[37; 38) + NAME@[38; 41) + IDENT@[38; 41) "bar" + SEMI@[41; 42) + WHITESPACE@[42; 43) diff --git a/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.rs b/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.rs new file mode 100644 index 000000000..d22993bc1 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0008_mod_item.txt b/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt new file mode 100644 index 000000000..c790f8431 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt @@ -0,0 +1,90 @@ +ROOT@[0; 118) + MODULE@[0; 6) + MOD_KW@[0; 3) + WHITESPACE@[3; 4) + NAME@[4; 5) + IDENT@[4; 5) "a" + SEMI@[5; 6) + WHITESPACE@[6; 8) + MODULE@[8; 17) + MOD_KW@[8; 11) + WHITESPACE@[11; 12) + NAME@[12; 13) + IDENT@[12; 13) "b" + WHITESPACE@[13; 14) + ITEM_LIST@[14; 17) + L_CURLY@[14; 15) + WHITESPACE@[15; 16) + R_CURLY@[16; 17) + WHITESPACE@[17; 19) + MODULE@[19; 65) + MOD_KW@[19; 22) + WHITESPACE@[22; 23) + NAME@[23; 24) + IDENT@[23; 24) "c" + WHITESPACE@[24; 25) + ITEM_LIST@[25; 65) + L_CURLY@[25; 26) + WHITESPACE@[26; 31) + FN_DEF@[31; 47) + FN_KW@[31; 33) + 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@[40; 47) + L_CURLY@[40; 41) + WHITESPACE@[41; 46) + R_CURLY@[46; 47) + WHITESPACE@[47; 52) + STRUCT_DEF@[52; 63) + STRUCT_KW@[52; 58) + WHITESPACE@[58; 59) + NAME@[59; 60) + IDENT@[59; 60) "S" + WHITESPACE@[60; 61) + NAMED_FIELD_DEF_LIST@[61; 63) + L_CURLY@[61; 62) + R_CURLY@[62; 63) + WHITESPACE@[63; 64) + R_CURLY@[64; 65) + WHITESPACE@[65; 67) + MODULE@[67; 118) + MOD_KW@[67; 70) + WHITESPACE@[70; 71) + NAME@[71; 72) + IDENT@[71; 72) "d" + WHITESPACE@[72; 73) + ITEM_LIST@[73; 118) + L_CURLY@[73; 74) + WHITESPACE@[74; 79) + ATTR@[79; 87) + POUND@[79; 80) + EXCL@[80; 81) + TOKEN_TREE@[81; 87) + L_BRACK@[81; 82) + IDENT@[82; 86) "attr" + R_BRACK@[86; 87) + WHITESPACE@[87; 92) + MODULE@[92; 98) + MOD_KW@[92; 95) + WHITESPACE@[95; 96) + NAME@[96; 97) + IDENT@[96; 97) "e" + SEMI@[97; 98) + WHITESPACE@[98; 103) + MODULE@[103; 116) + MOD_KW@[103; 106) + WHITESPACE@[106; 107) + NAME@[107; 108) + IDENT@[107; 108) "f" + WHITESPACE@[108; 109) + ITEM_LIST@[109; 116) + L_CURLY@[109; 110) + WHITESPACE@[110; 115) + R_CURLY@[115; 116) + WHITESPACE@[116; 117) + R_CURLY@[117; 118) diff --git a/crates/ra_syntax/tests/data/parser/ok/0009_use_item.rs b/crates/ra_syntax/tests/data/parser/ok/0009_use_item.rs new file mode 100644 index 000000000..05a6aff83 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0009_use_item.txt b/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt new file mode 100644 index 000000000..4bcd15357 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt @@ -0,0 +1,21 @@ +ROOT@[0; 19) + USE_ITEM@[0; 8) + USE_KW@[0; 3) + WHITESPACE@[3; 4) + USE_TREE@[4; 7) + PATH@[4; 7) + PATH_SEGMENT@[4; 7) + NAME_REF@[4; 7) + IDENT@[4; 7) "foo" + SEMI@[7; 8) + WHITESPACE@[8; 9) + USE_ITEM@[9; 19) + USE_KW@[9; 12) + WHITESPACE@[12; 13) + USE_TREE@[13; 18) + PATH@[13; 18) + PATH_SEGMENT@[13; 18) + COLONCOLON@[13; 15) + NAME_REF@[15; 18) + IDENT@[15; 18) "bar" + SEMI@[18; 19) diff --git a/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.rs b/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.rs new file mode 100644 index 000000000..1e71b7a6c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.rs @@ -0,0 +1,2 @@ +use ::foo::bar::baz; +use foo::bar::baz; diff --git a/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt b/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt new file mode 100644 index 000000000..f76ea1a35 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt @@ -0,0 +1,42 @@ +ROOT@[0; 40) + USE_ITEM@[0; 20) + USE_KW@[0; 3) + WHITESPACE@[3; 4) + USE_TREE@[4; 19) + PATH@[4; 19) + PATH@[4; 14) + PATH@[4; 9) + PATH_SEGMENT@[4; 9) + COLONCOLON@[4; 6) + NAME_REF@[6; 9) + IDENT@[6; 9) "foo" + COLONCOLON@[9; 11) + PATH_SEGMENT@[11; 14) + NAME_REF@[11; 14) + IDENT@[11; 14) "bar" + COLONCOLON@[14; 16) + PATH_SEGMENT@[16; 19) + NAME_REF@[16; 19) + IDENT@[16; 19) "baz" + SEMI@[19; 20) + WHITESPACE@[20; 21) + USE_ITEM@[21; 39) + USE_KW@[21; 24) + 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" + COLONCOLON@[28; 30) + PATH_SEGMENT@[30; 33) + NAME_REF@[30; 33) + IDENT@[30; 33) "bar" + COLONCOLON@[33; 35) + PATH_SEGMENT@[35; 38) + NAME_REF@[35; 38) + IDENT@[35; 38) "baz" + SEMI@[38; 39) + WHITESPACE@[39; 40) diff --git a/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.rs b/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.rs new file mode 100644 index 000000000..8b80c0d90 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.rs @@ -0,0 +1,3 @@ +#[cfg(test)] +#[ignore] +fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt b/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt new file mode 100644 index 000000000..203a07193 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt @@ -0,0 +1,32 @@ +ROOT@[0; 35) + FN_DEF@[0; 34) + ATTR@[0; 12) + POUND@[0; 1) + TOKEN_TREE@[1; 12) + L_BRACK@[1; 2) + 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) + ATTR@[13; 22) + POUND@[13; 14) + TOKEN_TREE@[14; 22) + L_BRACK@[14; 15) + IDENT@[15; 21) "ignore" + R_BRACK@[21; 22) + WHITESPACE@[22; 23) + FN_KW@[23; 25) + 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@[32; 34) + L_CURLY@[32; 33) + R_CURLY@[33; 34) + WHITESPACE@[34; 35) diff --git a/crates/ra_syntax/tests/data/parser/ok/0012_visibility.rs b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.rs new file mode 100644 index 000000000..75b1db121 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0012_visibility.txt b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt new file mode 100644 index 000000000..66901af54 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt @@ -0,0 +1,102 @@ +ROOT@[0; 98) + FN_DEF@[0; 9) + FN_KW@[0; 2) + 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@[7; 9) + L_CURLY@[7; 8) + R_CURLY@[8; 9) + WHITESPACE@[9; 10) + FN_DEF@[10; 23) + VISIBILITY@[10; 13) + PUB_KW@[10; 13) + WHITESPACE@[13; 14) + FN_KW@[14; 16) + 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@[21; 23) + L_CURLY@[21; 22) + R_CURLY@[22; 23) + WHITESPACE@[23; 24) + FN_DEF@[24; 44) + VISIBILITY@[24; 34) + PUB_KW@[24; 27) + L_PAREN@[27; 28) + CRATE_KW@[28; 33) + R_PAREN@[33; 34) + WHITESPACE@[34; 35) + FN_KW@[35; 37) + 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@[42; 44) + L_CURLY@[42; 43) + R_CURLY@[43; 44) + WHITESPACE@[44; 45) + FN_DEF@[45; 65) + VISIBILITY@[45; 55) + PUB_KW@[45; 48) + L_PAREN@[48; 49) + SUPER_KW@[49; 54) + R_PAREN@[54; 55) + WHITESPACE@[55; 56) + FN_KW@[56; 58) + 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@[63; 65) + L_CURLY@[63; 64) + R_CURLY@[64; 65) + WHITESPACE@[65; 66) + FN_DEF@[66; 97) + VISIBILITY@[66; 87) + PUB_KW@[66; 69) + L_PAREN@[69; 70) + IN_KW@[70; 72) + WHITESPACE@[72; 73) + PATH@[73; 86) + PATH@[73; 81) + PATH@[73; 76) + PATH_SEGMENT@[73; 76) + NAME_REF@[73; 76) + IDENT@[73; 76) "foo" + COLONCOLON@[76; 78) + PATH_SEGMENT@[78; 81) + NAME_REF@[78; 81) + IDENT@[78; 81) "bar" + COLONCOLON@[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) + 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@[95; 97) + L_CURLY@[95; 96) + R_CURLY@[96; 97) + WHITESPACE@[97; 98) diff --git a/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.rs b/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.rs new file mode 100644 index 000000000..faf6a42c7 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.rs @@ -0,0 +1,3 @@ +use self::foo; +use super::super::bar; +use ::self::a::super::bar; diff --git a/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt b/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt new file mode 100644 index 000000000..95be4f75d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt @@ -0,0 +1,57 @@ +ROOT@[0; 65) + USE_ITEM@[0; 14) + USE_KW@[0; 3) + WHITESPACE@[3; 4) + USE_TREE@[4; 13) + PATH@[4; 13) + PATH@[4; 8) + PATH_SEGMENT@[4; 8) + SELF_KW@[4; 8) + COLONCOLON@[8; 10) + PATH_SEGMENT@[10; 13) + NAME_REF@[10; 13) + IDENT@[10; 13) "foo" + SEMI@[13; 14) + WHITESPACE@[14; 15) + USE_ITEM@[15; 37) + USE_KW@[15; 18) + WHITESPACE@[18; 19) + USE_TREE@[19; 36) + PATH@[19; 36) + PATH@[19; 31) + PATH@[19; 24) + PATH_SEGMENT@[19; 24) + SUPER_KW@[19; 24) + COLONCOLON@[24; 26) + PATH_SEGMENT@[26; 31) + SUPER_KW@[26; 31) + COLONCOLON@[31; 33) + PATH_SEGMENT@[33; 36) + NAME_REF@[33; 36) + IDENT@[33; 36) "bar" + SEMI@[36; 37) + WHITESPACE@[37; 38) + USE_ITEM@[38; 64) + USE_KW@[38; 41) + WHITESPACE@[41; 42) + USE_TREE@[42; 63) + PATH@[42; 63) + PATH@[42; 58) + PATH@[42; 51) + PATH@[42; 48) + PATH_SEGMENT@[42; 48) + COLONCOLON@[42; 44) + SELF_KW@[44; 48) + COLONCOLON@[48; 50) + PATH_SEGMENT@[50; 51) + NAME_REF@[50; 51) + IDENT@[50; 51) "a" + COLONCOLON@[51; 53) + PATH_SEGMENT@[53; 58) + SUPER_KW@[53; 58) + COLONCOLON@[58; 60) + PATH_SEGMENT@[60; 63) + NAME_REF@[60; 63) + IDENT@[60; 63) "bar" + SEMI@[63; 64) + WHITESPACE@[64; 65) diff --git a/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.rs b/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.rs new file mode 100644 index 000000000..5e4aa3a33 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0014_use_tree.txt b/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt new file mode 100644 index 000000000..4aa539159 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt @@ -0,0 +1,95 @@ +ROOT@[0; 81) + USE_ITEM@[0; 6) + USE_KW@[0; 3) + WHITESPACE@[3; 4) + USE_TREE@[4; 5) + STAR@[4; 5) + SEMI@[5; 6) + WHITESPACE@[6; 7) + USE_ITEM@[7; 15) + USE_KW@[7; 10) + WHITESPACE@[10; 11) + USE_TREE@[11; 14) + COLONCOLON@[11; 13) + STAR@[13; 14) + SEMI@[14; 15) + WHITESPACE@[15; 16) + USE_ITEM@[16; 25) + USE_KW@[16; 19) + WHITESPACE@[19; 20) + USE_TREE@[20; 24) + COLONCOLON@[20; 22) + USE_TREE_LIST@[22; 24) + L_CURLY@[22; 23) + R_CURLY@[23; 24) + SEMI@[24; 25) + WHITESPACE@[25; 26) + USE_ITEM@[26; 33) + USE_KW@[26; 29) + WHITESPACE@[29; 30) + USE_TREE@[30; 32) + USE_TREE_LIST@[30; 32) + L_CURLY@[30; 31) + R_CURLY@[31; 32) + SEMI@[32; 33) + WHITESPACE@[33; 34) + USE_ITEM@[34; 45) + USE_KW@[34; 37) + WHITESPACE@[37; 38) + USE_TREE@[38; 44) + PATH@[38; 41) + PATH_SEGMENT@[38; 41) + NAME_REF@[38; 41) + IDENT@[38; 41) "foo" + COLONCOLON@[41; 43) + STAR@[43; 44) + SEMI@[44; 45) + WHITESPACE@[45; 46) + USE_ITEM@[46; 58) + USE_KW@[46; 49) + WHITESPACE@[49; 50) + USE_TREE@[50; 57) + PATH@[50; 53) + PATH_SEGMENT@[50; 53) + NAME_REF@[50; 53) + IDENT@[50; 53) "foo" + COLONCOLON@[53; 55) + USE_TREE_LIST@[55; 57) + L_CURLY@[55; 56) + R_CURLY@[56; 57) + SEMI@[57; 58) + WHITESPACE@[58; 59) + USE_ITEM@[59; 80) + USE_KW@[59; 62) + WHITESPACE@[62; 63) + USE_TREE@[63; 79) + PATH@[63; 68) + PATH_SEGMENT@[63; 68) + COLONCOLON@[63; 65) + NAME_REF@[65; 68) + IDENT@[65; 68) "foo" + COLONCOLON@[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) + SEMI@[79; 80) + WHITESPACE@[80; 81) diff --git a/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.rs b/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.rs new file mode 100644 index 000000000..46a0783a2 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0015_use_tree.txt b/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt new file mode 100644 index 000000000..aa4ef3715 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt @@ -0,0 +1,65 @@ +ROOT@[0; 55) + USE_ITEM@[0; 15) + USE_KW@[0; 3) + 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) + ALIAS@[8; 14) + AS_KW@[8; 10) + WHITESPACE@[10; 11) + NAME@[11; 14) + IDENT@[11; 14) "bar" + SEMI@[14; 15) + WHITESPACE@[15; 16) + USE_ITEM@[16; 54) + USE_KW@[16; 19) + WHITESPACE@[19; 20) + USE_TREE@[20; 53) + PATH@[20; 23) + PATH_SEGMENT@[20; 23) + NAME_REF@[20; 23) + IDENT@[20; 23) "foo" + COLONCOLON@[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) + ALIAS@[28; 32) + AS_KW@[28; 30) + 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) + COLONCOLON@[37; 39) + STAR@[39; 40) + COMMA@[40; 41) + WHITESPACE@[41; 42) + USE_TREE@[42; 52) + PATH@[42; 47) + PATH_SEGMENT@[42; 47) + COLONCOLON@[42; 44) + NAME_REF@[44; 47) + IDENT@[44; 47) "foo" + WHITESPACE@[47; 48) + ALIAS@[48; 52) + AS_KW@[48; 50) + WHITESPACE@[50; 51) + NAME@[51; 52) + IDENT@[51; 52) "x" + R_CURLY@[52; 53) + SEMI@[53; 54) + WHITESPACE@[54; 55) diff --git a/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.rs b/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.rs new file mode 100644 index 000000000..69638350c --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt b/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt new file mode 100644 index 000000000..349481157 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt @@ -0,0 +1,93 @@ +ROOT@[0; 97) + STRUCT_DEF@[0; 9) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "A" + SEMI@[8; 9) + WHITESPACE@[9; 10) + STRUCT_DEF@[10; 21) + STRUCT_KW@[10; 16) + WHITESPACE@[16; 17) + NAME@[17; 18) + IDENT@[17; 18) "B" + WHITESPACE@[18; 19) + NAMED_FIELD_DEF_LIST@[19; 21) + L_CURLY@[19; 20) + R_CURLY@[20; 21) + WHITESPACE@[21; 22) + STRUCT_DEF@[22; 33) + STRUCT_KW@[22; 28) + WHITESPACE@[28; 29) + NAME@[29; 30) + IDENT@[29; 30) "C" + POS_FIELD_LIST@[30; 32) + L_PAREN@[30; 31) + R_PAREN@[31; 32) + SEMI@[32; 33) + WHITESPACE@[33; 35) + STRUCT_DEF@[35; 74) + STRUCT_KW@[35; 41) + WHITESPACE@[41; 42) + NAME@[42; 43) + IDENT@[42; 43) "D" + WHITESPACE@[43; 44) + NAMED_FIELD_DEF_LIST@[44; 74) + L_CURLY@[44; 45) + WHITESPACE@[45; 50) + NAMED_FIELD_DEF@[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) + NAMED_FIELD_DEF@[62; 72) + VISIBILITY@[62; 65) + PUB_KW@[62; 65) + 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) + R_CURLY@[73; 74) + WHITESPACE@[74; 76) + STRUCT_DEF@[76; 96) + STRUCT_KW@[76; 82) + WHITESPACE@[82; 83) + NAME@[83; 84) + IDENT@[83; 84) "E" + POS_FIELD_LIST@[84; 95) + L_PAREN@[84; 85) + POS_FIELD@[85; 90) + VISIBILITY@[85; 88) + PUB_KW@[85; 88) + 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) + POS_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) + SEMI@[95; 96) + WHITESPACE@[96; 97) diff --git a/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.rs b/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.rs new file mode 100644 index 000000000..fe0a7bb97 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.rs @@ -0,0 +1,2 @@ +#[foo(a,)] +fn foo() {} diff --git a/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt b/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt new file mode 100644 index 000000000..8cfd77256 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt @@ -0,0 +1,26 @@ +ROOT@[0; 23) + FN_DEF@[0; 22) + ATTR@[0; 10) + POUND@[0; 1) + TOKEN_TREE@[1; 10) + L_BRACK@[1; 2) + 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) + FN_KW@[11; 13) + 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@[20; 22) + L_CURLY@[20; 21) + R_CURLY@[21; 22) + WHITESPACE@[22; 23) diff --git a/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.rs b/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.rs new file mode 100644 index 000000000..88c544923 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt b/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt new file mode 100644 index 000000000..a98e823f6 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt @@ -0,0 +1,257 @@ +ROOT@[0; 290) + STRUCT_DEF@[0; 13) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 9) + IDENT@[7; 9) "S1" + TYPE_PARAM_LIST@[9; 12) + L_ANGLE@[9; 10) + TYPE_PARAM@[10; 11) + NAME@[10; 11) + IDENT@[10; 11) "T" + R_ANGLE@[11; 12) + SEMI@[12; 13) + WHITESPACE@[13; 14) + STRUCT_DEF@[14; 32) + STRUCT_KW@[14; 20) + WHITESPACE@[20; 21) + NAME@[21; 23) + IDENT@[21; 23) "S2" + TYPE_PARAM_LIST@[23; 26) + L_ANGLE@[23; 24) + TYPE_PARAM@[24; 25) + NAME@[24; 25) + IDENT@[24; 25) "T" + R_ANGLE@[25; 26) + POS_FIELD_LIST@[26; 31) + L_PAREN@[26; 27) + POS_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) + SEMI@[31; 32) + WHITESPACE@[32; 33) + STRUCT_DEF@[33; 56) + STRUCT_KW@[33; 39) + WHITESPACE@[39; 40) + NAME@[40; 42) + IDENT@[40; 42) "S3" + TYPE_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) + NAMED_FIELD_DEF_LIST@[46; 56) + L_CURLY@[46; 47) + WHITESPACE@[47; 48) + NAMED_FIELD_DEF@[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) + STRUCT_DEF@[58; 70) + STRUCT_KW@[58; 64) + WHITESPACE@[64; 65) + NAME@[65; 67) + IDENT@[65; 67) "S4" + TYPE_PARAM_LIST@[67; 69) + L_ANGLE@[67; 68) + R_ANGLE@[68; 69) + SEMI@[69; 70) + WHITESPACE@[70; 71) + STRUCT_DEF@[71; 85) + STRUCT_KW@[71; 77) + WHITESPACE@[77; 78) + NAME@[78; 80) + IDENT@[78; 80) "S5" + TYPE_PARAM_LIST@[80; 84) + L_ANGLE@[80; 81) + LIFETIME_PARAM@[81; 83) + LIFETIME@[81; 83) "'a" + R_ANGLE@[83; 84) + SEMI@[84; 85) + WHITESPACE@[85; 86) + STRUCT_DEF@[86; 101) + STRUCT_KW@[86; 92) + WHITESPACE@[92; 93) + NAME@[93; 95) + IDENT@[93; 95) "S6" + TYPE_PARAM_LIST@[95; 100) + L_ANGLE@[95; 96) + LIFETIME_PARAM@[96; 99) + LIFETIME@[96; 98) "'a" + COLON@[98; 99) + R_ANGLE@[99; 100) + SEMI@[100; 101) + WHITESPACE@[101; 102) + STRUCT_DEF@[102; 120) + STRUCT_KW@[102; 108) + WHITESPACE@[108; 109) + NAME@[109; 111) + IDENT@[109; 111) "S7" + TYPE_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) + SEMI@[119; 120) + WHITESPACE@[120; 121) + STRUCT_DEF@[121; 142) + STRUCT_KW@[121; 127) + WHITESPACE@[127; 128) + NAME@[128; 130) + IDENT@[128; 130) "S8" + TYPE_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) + SEMI@[141; 142) + WHITESPACE@[142; 143) + STRUCT_DEF@[143; 166) + STRUCT_KW@[143; 149) + WHITESPACE@[149; 150) + NAME@[150; 152) + IDENT@[150; 152) "S9" + TYPE_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) + SEMI@[165; 166) + WHITESPACE@[166; 167) + STRUCT_DEF@[167; 183) + STRUCT_KW@[167; 173) + WHITESPACE@[173; 174) + NAME@[174; 177) + IDENT@[174; 177) "S10" + TYPE_PARAM_LIST@[177; 182) + L_ANGLE@[177; 178) + LIFETIME_PARAM@[178; 180) + LIFETIME@[178; 180) "'a" + COMMA@[180; 181) + R_ANGLE@[181; 182) + SEMI@[182; 183) + WHITESPACE@[183; 184) + STRUCT_DEF@[184; 203) + STRUCT_KW@[184; 190) + WHITESPACE@[190; 191) + NAME@[191; 194) + IDENT@[191; 194) "S11" + TYPE_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) + SEMI@[202; 203) + WHITESPACE@[203; 204) + STRUCT_DEF@[204; 233) + STRUCT_KW@[204; 210) + WHITESPACE@[210; 211) + NAME@[211; 214) + IDENT@[211; 214) "S12" + TYPE_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) + SEMI@[232; 233) + WHITESPACE@[233; 235) + STRUCT_DEF@[235; 249) + STRUCT_KW@[235; 241) + WHITESPACE@[241; 242) + NAME@[242; 245) + IDENT@[242; 245) "S13" + TYPE_PARAM_LIST@[245; 248) + L_ANGLE@[245; 246) + TYPE_PARAM@[246; 247) + NAME@[246; 247) + IDENT@[246; 247) "T" + R_ANGLE@[247; 248) + SEMI@[248; 249) + WHITESPACE@[249; 250) + STRUCT_DEF@[250; 267) + STRUCT_KW@[250; 256) + WHITESPACE@[256; 257) + NAME@[257; 260) + IDENT@[257; 260) "S14" + TYPE_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) + SEMI@[266; 267) + WHITESPACE@[267; 268) + STRUCT_DEF@[268; 289) + STRUCT_KW@[268; 274) + WHITESPACE@[274; 275) + NAME@[275; 278) + IDENT@[275; 278) "S15" + TYPE_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) + SEMI@[288; 289) + WHITESPACE@[289; 290) diff --git a/crates/ra_syntax/tests/data/parser/ok/0019_enums.rs b/crates/ra_syntax/tests/data/parser/ok/0019_enums.rs new file mode 100644 index 000000000..7a1afa0e6 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0019_enums.txt b/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt new file mode 100644 index 000000000..6333e47c5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt @@ -0,0 +1,155 @@ +ROOT@[0; 182) + ENUM_DEF@[0; 11) + ENUM_KW@[0; 4) + WHITESPACE@[4; 5) + NAME@[5; 7) + IDENT@[5; 7) "E1" + WHITESPACE@[7; 8) + ENUM_VARIANT_LIST@[8; 11) + L_CURLY@[8; 9) + WHITESPACE@[9; 10) + R_CURLY@[10; 11) + WHITESPACE@[11; 13) + ENUM_DEF@[13; 27) + ENUM_KW@[13; 17) + WHITESPACE@[17; 18) + NAME@[18; 20) + IDENT@[18; 20) "E2" + TYPE_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) + ENUM_VARIANT_LIST@[24; 27) + L_CURLY@[24; 25) + WHITESPACE@[25; 26) + R_CURLY@[26; 27) + WHITESPACE@[27; 29) + ENUM_DEF@[29; 46) + ENUM_KW@[29; 33) + WHITESPACE@[33; 34) + NAME@[34; 36) + IDENT@[34; 36) "E3" + WHITESPACE@[36; 37) + ENUM_VARIANT_LIST@[37; 46) + L_CURLY@[37; 38) + WHITESPACE@[38; 43) + ENUM_VARIANT@[43; 44) + NAME@[43; 44) + IDENT@[43; 44) "X" + WHITESPACE@[44; 45) + R_CURLY@[45; 46) + WHITESPACE@[46; 48) + ENUM_DEF@[48; 66) + ENUM_KW@[48; 52) + WHITESPACE@[52; 53) + NAME@[53; 55) + IDENT@[53; 55) "E4" + WHITESPACE@[55; 56) + ENUM_VARIANT_LIST@[56; 66) + L_CURLY@[56; 57) + WHITESPACE@[57; 62) + ENUM_VARIANT@[62; 63) + NAME@[62; 63) + IDENT@[62; 63) "X" + COMMA@[63; 64) + WHITESPACE@[64; 65) + R_CURLY@[65; 66) + WHITESPACE@[66; 68) + ENUM_DEF@[68; 181) + ENUM_KW@[68; 72) + WHITESPACE@[72; 73) + NAME@[73; 75) + IDENT@[73; 75) "E5" + WHITESPACE@[75; 76) + ENUM_VARIANT_LIST@[76; 181) + L_CURLY@[76; 77) + WHITESPACE@[77; 82) + ENUM_VARIANT@[82; 83) + NAME@[82; 83) + IDENT@[82; 83) "A" + COMMA@[83; 84) + WHITESPACE@[84; 89) + ENUM_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) + ENUM_VARIANT@[101; 146) + NAME@[101; 102) + IDENT@[101; 102) "C" + WHITESPACE@[102; 103) + NAMED_FIELD_DEF_LIST@[103; 146) + L_CURLY@[103; 104) + WHITESPACE@[104; 113) + NAMED_FIELD_DEF@[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) + NAMED_FIELD_DEF@[129; 139) + VISIBILITY@[129; 132) + PUB_KW@[129; 132) + 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) + R_CURLY@[145; 146) + COMMA@[146; 147) + WHITESPACE@[147; 152) + ENUM_VARIANT@[152; 156) + NAME@[152; 153) + IDENT@[152; 153) "F" + WHITESPACE@[153; 154) + NAMED_FIELD_DEF_LIST@[154; 156) + L_CURLY@[154; 155) + R_CURLY@[155; 156) + COMMA@[156; 157) + WHITESPACE@[157; 162) + ENUM_VARIANT@[162; 169) + NAME@[162; 163) + IDENT@[162; 163) "D" + POS_FIELD_LIST@[163; 169) + L_PAREN@[163; 164) + POS_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) + ENUM_VARIANT@[175; 178) + NAME@[175; 176) + IDENT@[175; 176) "E" + POS_FIELD_LIST@[176; 178) + L_PAREN@[176; 177) + R_PAREN@[177; 178) + COMMA@[178; 179) + WHITESPACE@[179; 180) + R_CURLY@[180; 181) + WHITESPACE@[181; 182) diff --git a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs new file mode 100644 index 000000000..a1b9f00a4 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs @@ -0,0 +1,9 @@ +struct A; +struct B; +struct C; +struct D; +struct E; +struct F; +struct G; +struct H; +struct I; diff --git a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt new file mode 100644 index 000000000..ac1a58e9a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt @@ -0,0 +1,198 @@ +ROOT@[0; 200) + STRUCT_DEF@[0; 12) + STRUCT_KW@[0; 6) + WHITESPACE@[6; 7) + NAME@[7; 8) + IDENT@[7; 8) "A" + TYPE_PARAM_LIST@[8; 11) + L_ANGLE@[8; 9) + TYPE_PARAM@[9; 10) + NAME@[9; 10) + IDENT@[9; 10) "T" + R_ANGLE@[10; 11) + SEMI@[11; 12) + WHITESPACE@[12; 13) + STRUCT_DEF@[13; 26) + STRUCT_KW@[13; 19) + WHITESPACE@[19; 20) + NAME@[20; 21) + IDENT@[20; 21) "B" + TYPE_PARAM_LIST@[21; 25) + L_ANGLE@[21; 22) + TYPE_PARAM@[22; 24) + NAME@[22; 23) + IDENT@[22; 23) "T" + COLON@[23; 24) + R_ANGLE@[24; 25) + SEMI@[25; 26) + WHITESPACE@[26; 27) + STRUCT_DEF@[27; 43) + STRUCT_KW@[27; 33) + WHITESPACE@[33; 34) + NAME@[34; 35) + IDENT@[34; 35) "C" + TYPE_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) + LIFETIME@[39; 41) "'a" + R_ANGLE@[41; 42) + SEMI@[42; 43) + WHITESPACE@[43; 44) + STRUCT_DEF@[44; 63) + STRUCT_KW@[44; 50) + WHITESPACE@[50; 51) + NAME@[51; 52) + IDENT@[51; 52) "D" + TYPE_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) + LIFETIME@[56; 58) "'a" + WHITESPACE@[58; 59) + PLUS@[59; 60) + WHITESPACE@[60; 61) + R_ANGLE@[61; 62) + SEMI@[62; 63) + WHITESPACE@[63; 64) + STRUCT_DEF@[64; 86) + STRUCT_KW@[64; 70) + WHITESPACE@[70; 71) + NAME@[71; 72) + IDENT@[71; 72) "E" + TYPE_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) + LIFETIME@[76; 78) "'a" + WHITESPACE@[78; 79) + PLUS@[79; 80) + WHITESPACE@[80; 81) + LIFETIME@[81; 83) "'d" + WHITESPACE@[83; 84) + R_ANGLE@[84; 85) + SEMI@[85; 86) + WHITESPACE@[86; 87) + STRUCT_DEF@[87; 116) + STRUCT_KW@[87; 93) + WHITESPACE@[93; 94) + NAME@[94; 95) + IDENT@[94; 95) "F" + TYPE_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) + LIFETIME@[99; 101) "'a" + WHITESPACE@[101; 102) + PLUS@[102; 103) + WHITESPACE@[103; 104) + LIFETIME@[104; 106) "'d" + WHITESPACE@[106; 107) + PLUS@[107; 108) + WHITESPACE@[108; 109) + PATH_TYPE@[109; 114) + PATH@[109; 114) + PATH_SEGMENT@[109; 114) + NAME_REF@[109; 114) + IDENT@[109; 114) "Clone" + R_ANGLE@[114; 115) + SEMI@[115; 116) + WHITESPACE@[116; 117) + STRUCT_DEF@[117; 143) + STRUCT_KW@[117; 123) + WHITESPACE@[123; 124) + NAME@[124; 125) + IDENT@[124; 125) "G" + TYPE_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) + PATH_TYPE@[129; 141) + PATH@[129; 134) + PATH_SEGMENT@[129; 134) + NAME_REF@[129; 134) + IDENT@[129; 134) "Clone" + WHITESPACE@[134; 135) + PLUS@[135; 136) + WHITESPACE@[136; 137) + PATH_TYPE@[137; 141) + PATH@[137; 141) + PATH_SEGMENT@[137; 141) + NAME_REF@[137; 141) + IDENT@[137; 141) "Copy" + R_ANGLE@[141; 142) + SEMI@[142; 143) + WHITESPACE@[143; 144) + STRUCT_DEF@[144; 180) + STRUCT_KW@[144; 150) + WHITESPACE@[150; 151) + NAME@[151; 152) + IDENT@[151; 152) "H" + TYPE_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) + PATH_TYPE@[156; 178) + PATH@[156; 161) + PATH_SEGMENT@[156; 161) + COLONCOLON@[156; 158) + NAME_REF@[158; 161) + IDENT@[158; 161) "Foo" + WHITESPACE@[161; 162) + PLUS@[162; 163) + WHITESPACE@[163; 164) + PATH_TYPE@[164; 178) + PATH@[164; 173) + PATH@[164; 168) + PATH_SEGMENT@[164; 168) + SELF_KW@[164; 168) + COLONCOLON@[168; 170) + PATH_SEGMENT@[170; 173) + NAME_REF@[170; 173) + IDENT@[170; 173) "Bar" + WHITESPACE@[173; 174) + PLUS@[174; 175) + WHITESPACE@[175; 176) + LIFETIME@[176; 178) "'a" + R_ANGLE@[178; 179) + SEMI@[179; 180) + WHITESPACE@[180; 181) + STRUCT_DEF@[181; 199) + STRUCT_KW@[181; 187) + WHITESPACE@[187; 188) + NAME@[188; 189) + IDENT@[188; 189) "I" + TYPE_PARAM_LIST@[189; 198) + L_ANGLE@[189; 190) + TYPE_PARAM@[190; 192) + NAME@[190; 191) + IDENT@[190; 191) "T" + COLON@[191; 192) + COMMA@[192; 193) + WHITESPACE@[193; 194) + TYPE_PARAM@[194; 196) + NAME@[194; 195) + IDENT@[194; 195) "U" + COLON@[195; 196) + COMMA@[196; 197) + R_ANGLE@[197; 198) + SEMI@[198; 199) + WHITESPACE@[199; 200) diff --git a/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.rs b/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.rs new file mode 100644 index 000000000..e929eef74 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.rs @@ -0,0 +1,8 @@ +extern fn foo() { +} + +extern "C" fn bar() { +} + +extern r"D" fn baz() { +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt b/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt new file mode 100644 index 000000000..5ceef46e0 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt @@ -0,0 +1,56 @@ +ROOT@[0; 71) + FN_DEF@[0; 19) + ABI@[0; 6) + EXTERN_KW@[0; 6) + WHITESPACE@[6; 7) + FN_KW@[7; 9) + WHITESPACE@[9; 10) + NAME@[10; 13) + IDENT@[10; 13) "foo" + PARAM_LIST@[13; 15) + L_PAREN@[13; 14) + R_PAREN@[14; 15) + WHITESPACE@[15; 16) + BLOCK@[16; 19) + L_CURLY@[16; 17) + WHITESPACE@[17; 18) + R_CURLY@[18; 19) + WHITESPACE@[19; 21) + FN_DEF@[21; 44) + ABI@[21; 31) + EXTERN_KW@[21; 27) + WHITESPACE@[27; 28) + STRING@[28; 31) + WHITESPACE@[31; 32) + FN_KW@[32; 34) + WHITESPACE@[34; 35) + NAME@[35; 38) + IDENT@[35; 38) "bar" + PARAM_LIST@[38; 40) + L_PAREN@[38; 39) + R_PAREN@[39; 40) + WHITESPACE@[40; 41) + BLOCK@[41; 44) + L_CURLY@[41; 42) + WHITESPACE@[42; 43) + R_CURLY@[43; 44) + WHITESPACE@[44; 46) + FN_DEF@[46; 70) + ABI@[46; 57) + EXTERN_KW@[46; 52) + WHITESPACE@[52; 53) + RAW_STRING@[53; 57) + WHITESPACE@[57; 58) + FN_KW@[58; 60) + WHITESPACE@[60; 61) + NAME@[61; 64) + IDENT@[61; 64) "baz" + PARAM_LIST@[64; 66) + L_PAREN@[64; 65) + R_PAREN@[65; 66) + WHITESPACE@[66; 67) + BLOCK@[67; 70) + L_CURLY@[67; 68) + WHITESPACE@[68; 69) + R_CURLY@[69; 70) + WHITESPACE@[70; 71) diff --git a/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.rs b/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.rs new file mode 100644 index 000000000..f5fe0e6ef --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.rs @@ -0,0 +1,5 @@ +extern { +} + +extern "C" { +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt b/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt new file mode 100644 index 000000000..2099e2433 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt @@ -0,0 +1,21 @@ +ROOT@[0; 27) + EXTERN_BLOCK@[0; 10) + ABI@[0; 6) + EXTERN_KW@[0; 6) + WHITESPACE@[6; 7) + EXTERN_ITEM_LIST@[7; 10) + L_CURLY@[7; 8) + WHITESPACE@[8; 9) + R_CURLY@[9; 10) + WHITESPACE@[10; 12) + EXTERN_BLOCK@[12; 26) + ABI@[12; 22) + EXTERN_KW@[12; 18) + WHITESPACE@[18; 19) + STRING@[19; 22) + WHITESPACE@[22; 23) + EXTERN_ITEM_LIST@[23; 26) + L_CURLY@[23; 24) + WHITESPACE@[24; 25) + R_CURLY@[25; 26) + WHITESPACE@[26; 27) diff --git a/crates/ra_syntax/tests/data/parser/ok/0023_static_items.rs b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.rs new file mode 100644 index 000000000..5fb92ce33 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.rs @@ -0,0 +1,2 @@ +static FOO: u32 = 1; +static mut BAR: i32 = 92; diff --git a/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt new file mode 100644 index 000000000..5c1a3a7a5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt @@ -0,0 +1,41 @@ +ROOT@[0; 47) + STATIC_DEF@[0; 20) + STATIC_KW@[0; 6) + 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" + SEMI@[19; 20) + WHITESPACE@[20; 21) + STATIC_DEF@[21; 46) + STATIC_KW@[21; 27) + WHITESPACE@[27; 28) + MUT_KW@[28; 31) + 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" + SEMI@[45; 46) + WHITESPACE@[46; 47) diff --git a/crates/ra_syntax/tests/data/parser/ok/0024_const_item.rs b/crates/ra_syntax/tests/data/parser/ok/0024_const_item.rs new file mode 100644 index 000000000..7446859b5 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0024_const_item.rs @@ -0,0 +1,2 @@ +const FOO: u32 = 92; +const mut BAR: u32 = 62; diff --git a/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt b/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt new file mode 100644 index 000000000..d0e5842da --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt @@ -0,0 +1,41 @@ +ROOT@[0; 46) + CONST_DEF@[0; 20) + CONST_KW@[0; 5) + WHITESPACE@[5; 6) + NAME@[6; 9) + IDENT@[6; 9) "FOO" + COLON@[9; 10) + WHITESPACE@[10; 11) + PATH_TYPE@[11; 14) + PATH@[11; 14) + PATH_SEGMENT@[11; 14) + NAME_REF@[11; 14) + IDENT@[11; 14) "u32" + WHITESPACE@[14; 15) + EQ@[15; 16) + WHITESPACE@[16; 17) + LITERAL@[17; 19) + INT_NUMBER@[17; 19) "92" + SEMI@[19; 20) + WHITESPACE@[20; 21) + CONST_DEF@[21; 45) + CONST_KW@[21; 26) + WHITESPACE@[26; 27) + MUT_KW@[27; 30) + WHITESPACE@[30; 31) + NAME@[31; 34) + IDENT@[31; 34) "BAR" + COLON@[34; 35) + WHITESPACE@[35; 36) + PATH_TYPE@[36; 39) + PATH@[36; 39) + PATH_SEGMENT@[36; 39) + NAME_REF@[36; 39) + IDENT@[36; 39) "u32" + WHITESPACE@[39; 40) + EQ@[40; 41) + WHITESPACE@[41; 42) + LITERAL@[42; 44) + INT_NUMBER@[42; 44) "62" + SEMI@[44; 45) + WHITESPACE@[45; 46) diff --git a/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.rs b/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.rs new file mode 100644 index 000000000..289809809 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.rs @@ -0,0 +1,3 @@ +fn main() { + extern fn f() {} +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt b/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt new file mode 100644 index 000000000..363b3576e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt @@ -0,0 +1,31 @@ +ROOT@[0; 35) + FN_DEF@[0; 34) + FN_KW@[0; 2) + 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@[10; 34) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + FN_DEF@[16; 32) + ABI@[16; 22) + EXTERN_KW@[16; 22) + WHITESPACE@[22; 23) + FN_KW@[23; 25) + 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@[30; 32) + L_CURLY@[30; 31) + R_CURLY@[31; 32) + WHITESPACE@[32; 33) + R_CURLY@[33; 34) + WHITESPACE@[34; 35) diff --git a/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.rs b/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.rs new file mode 100644 index 000000000..7641a3d28 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.rs @@ -0,0 +1,3 @@ +fn main() { + const fn f() {} +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt b/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt new file mode 100644 index 000000000..d45fc2559 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt @@ -0,0 +1,30 @@ +ROOT@[0; 34) + FN_DEF@[0; 33) + FN_KW@[0; 2) + 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@[10; 33) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + FN_DEF@[16; 31) + CONST_KW@[16; 21) + WHITESPACE@[21; 22) + FN_KW@[22; 24) + 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@[29; 31) + L_CURLY@[29; 30) + R_CURLY@[30; 31) + WHITESPACE@[31; 32) + R_CURLY@[32; 33) + WHITESPACE@[33; 34) diff --git a/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.rs b/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.rs new file mode 100644 index 000000000..f3c5ff938 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.rs @@ -0,0 +1,4 @@ +fn main() { + unsafe fn f() {} + unsafe { 92 } +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt b/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt new file mode 100644 index 000000000..5a39fa98c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt @@ -0,0 +1,41 @@ +ROOT@[0; 53) + FN_DEF@[0; 52) + FN_KW@[0; 2) + 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@[10; 52) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + FN_DEF@[16; 32) + UNSAFE_KW@[16; 22) + WHITESPACE@[22; 23) + FN_KW@[23; 25) + 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@[30; 32) + L_CURLY@[30; 31) + R_CURLY@[31; 32) + WHITESPACE@[32; 37) + BLOCK_EXPR@[37; 50) + UNSAFE_KW@[37; 43) + WHITESPACE@[43; 44) + BLOCK@[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) + R_CURLY@[51; 52) + WHITESPACE@[52; 53) diff --git a/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.rs b/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.rs new file mode 100644 index 000000000..cc9598470 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt b/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt new file mode 100644 index 000000000..27efd180f --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt @@ -0,0 +1,185 @@ +ROOT@[0; 248) + FN_DEF@[0; 247) + FN_KW@[0; 2) + 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@[19; 247) + L_CURLY@[19; 20) + WHITESPACE@[20; 25) + LET_STMT@[25; 55) + LET_KW@[25; 28) + WHITESPACE@[28; 29) + BIND_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" + SEMI@[54; 55) + WHITESPACE@[55; 60) + 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" + SEMI@[69; 70) + WHITESPACE@[70; 75) + 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" + SEMI@[85; 86) + WHITESPACE@[86; 91) + 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" + SEMI@[101; 102) + WHITESPACE@[102; 107) + 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" + SEMI@[116; 117) + WHITESPACE@[117; 122) + 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" + SEMI@[131; 132) + WHITESPACE@[132; 137) + EXPR_STMT@[137; 148) + BIN_EXPR@[137; 147) + LITERAL@[137; 138) + INT_NUMBER@[137; 138) "1" + WHITESPACE@[138; 139) + EQEQ@[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" + SEMI@[147; 148) + WHITESPACE@[148; 153) + EXPR_STMT@[153; 165) + BIN_EXPR@[153; 164) + LITERAL@[153; 154) + INT_NUMBER@[153; 154) "1" + WHITESPACE@[154; 155) + AMPAMP@[155; 157) + WHITESPACE@[157; 158) + BIN_EXPR@[158; 164) + LITERAL@[158; 159) + INT_NUMBER@[158; 159) "2" + WHITESPACE@[159; 160) + EQEQ@[160; 162) + WHITESPACE@[162; 163) + LITERAL@[163; 164) + INT_NUMBER@[163; 164) "3" + SEMI@[164; 165) + WHITESPACE@[165; 170) + COMMENT@[170; 184) + WHITESPACE@[184; 189) + COMMENT@[189; 203) + WHITESPACE@[203; 208) + COMMENT@[208; 221) + WHITESPACE@[221; 226) + COMMENT@[226; 245) + WHITESPACE@[245; 246) + R_CURLY@[246; 247) + WHITESPACE@[247; 248) diff --git a/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.rs b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.rs new file mode 100644 index 000000000..03f4ae7b2 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.rs @@ -0,0 +1,6 @@ +fn foo() { + ..1 + 1; + ..z = 2; + x = false..1 == 1; + let x = 1..; +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt new file mode 100644 index 000000000..6d6d2f4d0 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt @@ -0,0 +1,83 @@ +ROOT@[0; 79) + FN_DEF@[0; 78) + FN_KW@[0; 2) + 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@[9; 78) + L_CURLY@[9; 10) + WHITESPACE@[10; 15) + EXPR_STMT@[15; 23) + RANGE_EXPR@[15; 22) + DOTDOT@[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" + SEMI@[22; 23) + WHITESPACE@[23; 28) + EXPR_STMT@[28; 36) + BIN_EXPR@[28; 35) + RANGE_EXPR@[28; 31) + DOTDOT@[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" + SEMI@[35; 36) + WHITESPACE@[36; 41) + 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) + DOTDOT@[50; 52) + BIN_EXPR@[52; 58) + LITERAL@[52; 53) + INT_NUMBER@[52; 53) "1" + WHITESPACE@[53; 54) + EQEQ@[54; 56) + WHITESPACE@[56; 57) + LITERAL@[57; 58) + INT_NUMBER@[57; 58) "1" + SEMI@[58; 59) + WHITESPACE@[59; 64) + LET_STMT@[64; 76) + LET_KW@[64; 67) + WHITESPACE@[67; 68) + BIND_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" + DOTDOT@[73; 75) + SEMI@[75; 76) + WHITESPACE@[76; 77) + R_CURLY@[77; 78) + WHITESPACE@[78; 79) diff --git a/crates/ra_syntax/tests/data/parser/ok/0030_traits.rs b/crates/ra_syntax/tests/data/parser/ok/0030_traits.rs new file mode 100644 index 000000000..23c4be0e1 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0030_traits.rs @@ -0,0 +1,11 @@ +pub trait WriteMessage { + fn write_message(&FrontendMessage); +} + +trait Runnable { + fn handler(); +} + +trait TraitWithExpr { + fn fn_with_expr(x: [i32; 1]); +} diff --git a/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt b/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt new file mode 100644 index 000000000..ddd666407 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt @@ -0,0 +1,93 @@ +ROOT@[0; 164) + TRAIT_DEF@[0; 66) + VISIBILITY@[0; 3) + PUB_KW@[0; 3) + WHITESPACE@[3; 4) + TRAIT_KW@[4; 9) + WHITESPACE@[9; 10) + NAME@[10; 22) + IDENT@[10; 22) "WriteMessage" + WHITESPACE@[22; 23) + ITEM_LIST@[23; 66) + L_CURLY@[23; 24) + WHITESPACE@[24; 29) + FN_DEF@[29; 64) + FN_KW@[29; 31) + WHITESPACE@[31; 32) + NAME@[32; 45) + IDENT@[32; 45) "write_message" + PARAM_LIST@[45; 63) + L_PAREN@[45; 46) + PARAM@[46; 62) + REFERENCE_TYPE@[46; 62) + AMP@[46; 47) + PATH_TYPE@[47; 62) + PATH@[47; 62) + PATH_SEGMENT@[47; 62) + NAME_REF@[47; 62) + IDENT@[47; 62) "FrontendMessage" + R_PAREN@[62; 63) + SEMI@[63; 64) + WHITESPACE@[64; 65) + R_CURLY@[65; 66) + WHITESPACE@[66; 68) + TRAIT_DEF@[68; 104) + TRAIT_KW@[68; 73) + WHITESPACE@[73; 74) + NAME@[74; 82) + IDENT@[74; 82) "Runnable" + WHITESPACE@[82; 83) + ITEM_LIST@[83; 104) + L_CURLY@[83; 84) + WHITESPACE@[84; 89) + FN_DEF@[89; 102) + FN_KW@[89; 91) + WHITESPACE@[91; 92) + NAME@[92; 99) + IDENT@[92; 99) "handler" + PARAM_LIST@[99; 101) + L_PAREN@[99; 100) + R_PAREN@[100; 101) + SEMI@[101; 102) + WHITESPACE@[102; 103) + R_CURLY@[103; 104) + WHITESPACE@[104; 106) + TRAIT_DEF@[106; 163) + TRAIT_KW@[106; 111) + WHITESPACE@[111; 112) + NAME@[112; 125) + IDENT@[112; 125) "TraitWithExpr" + WHITESPACE@[125; 126) + ITEM_LIST@[126; 163) + L_CURLY@[126; 127) + WHITESPACE@[127; 132) + FN_DEF@[132; 161) + FN_KW@[132; 134) + WHITESPACE@[134; 135) + NAME@[135; 147) + IDENT@[135; 147) "fn_with_expr" + PARAM_LIST@[147; 160) + L_PAREN@[147; 148) + PARAM@[148; 159) + BIND_PAT@[148; 149) + NAME@[148; 149) + IDENT@[148; 149) "x" + COLON@[149; 150) + WHITESPACE@[150; 151) + ARRAY_TYPE@[151; 159) + L_BRACK@[151; 152) + PATH_TYPE@[152; 155) + PATH@[152; 155) + PATH_SEGMENT@[152; 155) + NAME_REF@[152; 155) + IDENT@[152; 155) "i32" + SEMI@[155; 156) + WHITESPACE@[156; 157) + LITERAL@[157; 158) + INT_NUMBER@[157; 158) "1" + R_BRACK@[158; 159) + R_PAREN@[159; 160) + SEMI@[160; 161) + WHITESPACE@[161; 162) + R_CURLY@[162; 163) + WHITESPACE@[163; 164) diff --git a/crates/ra_syntax/tests/data/parser/ok/0031_extern.rs b/crates/ra_syntax/tests/data/parser/ok/0031_extern.rs new file mode 100644 index 000000000..b33ac273c --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0031_extern.txt b/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt new file mode 100644 index 000000000..f3f1c25a9 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt @@ -0,0 +1,973 @@ +ROOT@[0; 1598) + EXTERN_BLOCK@[0; 1597) + ABI@[0; 6) + EXTERN_KW@[0; 6) + WHITESPACE@[6; 7) + EXTERN_ITEM_LIST@[7; 1597) + L_CURLY@[7; 8) + WHITESPACE@[8; 13) + FN_DEF@[13; 87) + VISIBILITY@[13; 16) + PUB_KW@[13; 16) + WHITESPACE@[16; 17) + FN_KW@[17; 19) + WHITESPACE@[19; 20) + NAME@[20; 26) + IDENT@[20; 26) "socket" + PARAM_LIST@[26; 75) + L_PAREN@[26; 27) + PARAM@[27; 42) + BIND_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) + COLONCOLON@[35; 37) + NAME_REF@[37; 42) + IDENT@[37; 42) "c_int" + COMMA@[42; 43) + WHITESPACE@[43; 44) + PARAM@[44; 55) + BIND_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) + COLONCOLON@[48; 50) + NAME_REF@[50; 55) + IDENT@[50; 55) "c_int" + COMMA@[55; 56) + WHITESPACE@[56; 57) + PARAM@[57; 74) + BIND_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) + COLONCOLON@[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) + COLONCOLON@[79; 81) + NAME_REF@[81; 86) + IDENT@[81; 86) "c_int" + SEMI@[86; 87) + WHITESPACE@[87; 92) + FN_DEF@[92; 167) + VISIBILITY@[92; 95) + PUB_KW@[92; 95) + WHITESPACE@[95; 96) + FN_KW@[96; 98) + WHITESPACE@[98; 99) + NAME@[99; 103) + IDENT@[99; 103) "bind" + PARAM_LIST@[103; 155) + L_PAREN@[103; 104) + PARAM@[104; 115) + BIND_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) + COLONCOLON@[108; 110) + NAME_REF@[110; 115) + IDENT@[110; 115) "c_int" + COMMA@[115; 116) + WHITESPACE@[116; 117) + PARAM@[117; 138) + BIND_PAT@[117; 121) + NAME@[117; 121) + IDENT@[117; 121) "addr" + COLON@[121; 122) + WHITESPACE@[122; 123) + POINTER_TYPE@[123; 138) + STAR@[123; 124) + CONST_KW@[124; 129) + 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) + BIND_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) + COLONCOLON@[159; 161) + NAME_REF@[161; 166) + IDENT@[161; 166) "c_int" + SEMI@[166; 167) + WHITESPACE@[167; 172) + FN_DEF@[172; 276) + VISIBILITY@[172; 175) + PUB_KW@[172; 175) + WHITESPACE@[175; 176) + FN_KW@[176; 178) + WHITESPACE@[178; 179) + NAME@[179; 186) + IDENT@[179; 186) "connect" + PARAM_LIST@[186; 264) + L_PAREN@[186; 187) + PARAM@[187; 202) + BIND_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) + COLONCOLON@[195; 197) + NAME_REF@[197; 202) + IDENT@[197; 202) "c_int" + COMMA@[202; 203) + WHITESPACE@[203; 204) + PARAM@[204; 228) + BIND_PAT@[204; 211) + NAME@[204; 211) + IDENT@[204; 211) "address" + COLON@[211; 212) + WHITESPACE@[212; 213) + POINTER_TYPE@[213; 228) + STAR@[213; 214) + CONST_KW@[214; 219) + 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) + PARAM@[249; 263) + BIND_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) + COLONCOLON@[268; 270) + NAME_REF@[270; 275) + IDENT@[270; 275) "c_int" + SEMI@[275; 276) + WHITESPACE@[276; 281) + FN_DEF@[281; 341) + VISIBILITY@[281; 284) + PUB_KW@[281; 284) + WHITESPACE@[284; 285) + FN_KW@[285; 287) + WHITESPACE@[287; 288) + NAME@[288; 294) + IDENT@[288; 294) "listen" + PARAM_LIST@[294; 329) + L_PAREN@[294; 295) + PARAM@[295; 310) + BIND_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) + COLONCOLON@[303; 305) + NAME_REF@[305; 310) + IDENT@[305; 310) "c_int" + COMMA@[310; 311) + WHITESPACE@[311; 312) + PARAM@[312; 328) + BIND_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) + COLONCOLON@[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) + COLONCOLON@[333; 335) + NAME_REF@[335; 340) + IDENT@[335; 340) "c_int" + SEMI@[340; 341) + WHITESPACE@[341; 346) + FN_DEF@[346; 469) + VISIBILITY@[346; 349) + PUB_KW@[346; 349) + WHITESPACE@[349; 350) + FN_KW@[350; 352) + WHITESPACE@[352; 353) + NAME@[353; 364) + IDENT@[353; 364) "getsockname" + PARAM_LIST@[364; 457) + L_PAREN@[364; 365) + PARAM@[365; 380) + BIND_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) + COLONCOLON@[373; 375) + NAME_REF@[375; 380) + IDENT@[375; 380) "c_int" + COMMA@[380; 381) + WHITESPACE@[381; 382) + PARAM@[382; 404) + BIND_PAT@[382; 389) + NAME@[382; 389) + IDENT@[382; 389) "address" + COLON@[389; 390) + WHITESPACE@[390; 391) + POINTER_TYPE@[391; 404) + STAR@[391; 392) + MUT_KW@[392; 395) + 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) + PARAM@[429; 456) + BIND_PAT@[429; 440) + NAME@[429; 440) + IDENT@[429; 440) "address_len" + COLON@[440; 441) + WHITESPACE@[441; 442) + POINTER_TYPE@[442; 456) + STAR@[442; 443) + MUT_KW@[443; 446) + 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) + COLONCOLON@[461; 463) + NAME_REF@[463; 468) + IDENT@[463; 468) "c_int" + SEMI@[468; 469) + WHITESPACE@[469; 474) + FN_DEF@[474; 691) + VISIBILITY@[474; 477) + PUB_KW@[474; 477) + WHITESPACE@[477; 478) + FN_KW@[478; 480) + WHITESPACE@[480; 481) + NAME@[481; 491) + IDENT@[481; 491) "getsockopt" + PARAM_LIST@[491; 679) + L_PAREN@[491; 492) + PARAM@[492; 507) + BIND_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) + COLONCOLON@[500; 502) + NAME_REF@[502; 507) + IDENT@[502; 507) "c_int" + COMMA@[507; 508) + WHITESPACE@[508; 531) + PARAM@[531; 545) + BIND_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) + COLONCOLON@[538; 540) + NAME_REF@[540; 545) + IDENT@[540; 545) "c_int" + COMMA@[545; 546) + WHITESPACE@[546; 569) + PARAM@[569; 585) + BIND_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) + COLONCOLON@[578; 580) + NAME_REF@[580; 585) + IDENT@[580; 585) "c_int" + COMMA@[585; 586) + WHITESPACE@[586; 609) + PARAM@[609; 630) + BIND_PAT@[609; 615) + NAME@[609; 615) + IDENT@[609; 615) "optval" + COLON@[615; 616) + WHITESPACE@[616; 617) + POINTER_TYPE@[617; 630) + STAR@[617; 618) + MUT_KW@[618; 621) + WHITESPACE@[621; 622) + PATH_TYPE@[622; 630) + PATH@[622; 630) + PATH_SEGMENT@[622; 630) + COLONCOLON@[622; 624) + NAME_REF@[624; 630) + IDENT@[624; 630) "c_void" + COMMA@[630; 631) + WHITESPACE@[631; 654) + PARAM@[654; 678) + BIND_PAT@[654; 660) + NAME@[654; 660) + IDENT@[654; 660) "optlen" + COLON@[660; 661) + WHITESPACE@[661; 662) + POINTER_TYPE@[662; 678) + STAR@[662; 663) + MUT_KW@[663; 666) + WHITESPACE@[666; 667) + PATH_TYPE@[667; 678) + PATH@[667; 678) + PATH_SEGMENT@[667; 678) + COLONCOLON@[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) + COLONCOLON@[683; 685) + NAME_REF@[685; 690) + IDENT@[685; 690) "c_int" + SEMI@[690; 691) + WHITESPACE@[691; 696) + FN_DEF@[696; 864) + VISIBILITY@[696; 699) + PUB_KW@[696; 699) + WHITESPACE@[699; 700) + FN_KW@[700; 702) + WHITESPACE@[702; 703) + NAME@[703; 713) + IDENT@[703; 713) "setsockopt" + PARAM_LIST@[713; 852) + L_PAREN@[713; 714) + PARAM@[714; 729) + BIND_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) + COLONCOLON@[722; 724) + NAME_REF@[724; 729) + IDENT@[724; 729) "c_int" + COMMA@[729; 730) + WHITESPACE@[730; 731) + PARAM@[731; 745) + BIND_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) + COLONCOLON@[738; 740) + NAME_REF@[740; 745) + IDENT@[740; 745) "c_int" + COMMA@[745; 746) + WHITESPACE@[746; 747) + PARAM@[747; 760) + BIND_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) + COLONCOLON@[753; 755) + NAME_REF@[755; 760) + IDENT@[755; 760) "c_int" + COMMA@[760; 761) + WHITESPACE@[761; 784) + PARAM@[784; 806) + BIND_PAT@[784; 789) + NAME@[784; 789) + IDENT@[784; 789) "value" + COLON@[789; 790) + WHITESPACE@[790; 791) + POINTER_TYPE@[791; 806) + STAR@[791; 792) + CONST_KW@[792; 797) + WHITESPACE@[797; 798) + PATH_TYPE@[798; 806) + PATH@[798; 806) + PATH_SEGMENT@[798; 806) + COLONCOLON@[798; 800) + NAME_REF@[800; 806) + IDENT@[800; 806) "c_void" + COMMA@[806; 807) + WHITESPACE@[807; 830) + PARAM@[830; 851) + BIND_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) + COLONCOLON@[856; 858) + NAME_REF@[858; 863) + IDENT@[858; 863) "c_int" + SEMI@[863; 864) + WHITESPACE@[864; 869) + FN_DEF@[869; 992) + VISIBILITY@[869; 872) + PUB_KW@[869; 872) + WHITESPACE@[872; 873) + FN_KW@[873; 875) + WHITESPACE@[875; 876) + NAME@[876; 887) + IDENT@[876; 887) "getpeername" + PARAM_LIST@[887; 980) + L_PAREN@[887; 888) + PARAM@[888; 903) + BIND_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) + COLONCOLON@[896; 898) + NAME_REF@[898; 903) + IDENT@[898; 903) "c_int" + COMMA@[903; 904) + WHITESPACE@[904; 905) + PARAM@[905; 927) + BIND_PAT@[905; 912) + NAME@[905; 912) + IDENT@[905; 912) "address" + COLON@[912; 913) + WHITESPACE@[913; 914) + POINTER_TYPE@[914; 927) + STAR@[914; 915) + MUT_KW@[915; 918) + 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) + PARAM@[952; 979) + BIND_PAT@[952; 963) + NAME@[952; 963) + IDENT@[952; 963) "address_len" + COLON@[963; 964) + WHITESPACE@[964; 965) + POINTER_TYPE@[965; 979) + STAR@[965; 966) + MUT_KW@[966; 969) + 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) + COLONCOLON@[984; 986) + NAME_REF@[986; 991) + IDENT@[986; 991) "c_int" + SEMI@[991; 992) + WHITESPACE@[992; 997) + FN_DEF@[997; 1173) + VISIBILITY@[997; 1000) + PUB_KW@[997; 1000) + WHITESPACE@[1000; 1001) + FN_KW@[1001; 1003) + WHITESPACE@[1003; 1004) + NAME@[1004; 1010) + IDENT@[1004; 1010) "sendto" + PARAM_LIST@[1010; 1159) + L_PAREN@[1010; 1011) + PARAM@[1011; 1026) + BIND_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) + COLONCOLON@[1019; 1021) + NAME_REF@[1021; 1026) + IDENT@[1021; 1026) "c_int" + COMMA@[1026; 1027) + WHITESPACE@[1027; 1028) + PARAM@[1028; 1048) + BIND_PAT@[1028; 1031) + NAME@[1028; 1031) + IDENT@[1028; 1031) "buf" + COLON@[1031; 1032) + WHITESPACE@[1032; 1033) + POINTER_TYPE@[1033; 1048) + STAR@[1033; 1034) + CONST_KW@[1034; 1039) + WHITESPACE@[1039; 1040) + PATH_TYPE@[1040; 1048) + PATH@[1040; 1048) + PATH_SEGMENT@[1040; 1048) + COLONCOLON@[1040; 1042) + NAME_REF@[1042; 1048) + IDENT@[1042; 1048) "c_void" + COMMA@[1048; 1049) + WHITESPACE@[1049; 1050) + PARAM@[1050; 1063) + BIND_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) + COLONCOLON@[1055; 1057) + NAME_REF@[1057; 1063) + IDENT@[1057; 1063) "size_t" + COMMA@[1063; 1064) + WHITESPACE@[1064; 1083) + PARAM@[1083; 1097) + BIND_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) + COLONCOLON@[1090; 1092) + NAME_REF@[1092; 1097) + IDENT@[1092; 1097) "c_int" + COMMA@[1097; 1098) + WHITESPACE@[1098; 1099) + PARAM@[1099; 1120) + BIND_PAT@[1099; 1103) + NAME@[1099; 1103) + IDENT@[1099; 1103) "addr" + COLON@[1103; 1104) + WHITESPACE@[1104; 1105) + POINTER_TYPE@[1105; 1120) + STAR@[1105; 1106) + CONST_KW@[1106; 1111) + 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) + PARAM@[1140; 1158) + BIND_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) + COLONCOLON@[1163; 1165) + NAME_REF@[1165; 1172) + IDENT@[1165; 1172) "ssize_t" + SEMI@[1172; 1173) + WHITESPACE@[1173; 1178) + FN_DEF@[1178; 1289) + VISIBILITY@[1178; 1181) + PUB_KW@[1178; 1181) + WHITESPACE@[1181; 1182) + FN_KW@[1182; 1184) + WHITESPACE@[1184; 1185) + NAME@[1185; 1189) + IDENT@[1185; 1189) "send" + PARAM_LIST@[1189; 1275) + L_PAREN@[1189; 1190) + PARAM@[1190; 1205) + BIND_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) + COLONCOLON@[1198; 1200) + NAME_REF@[1200; 1205) + IDENT@[1200; 1205) "c_int" + COMMA@[1205; 1206) + WHITESPACE@[1206; 1207) + PARAM@[1207; 1227) + BIND_PAT@[1207; 1210) + NAME@[1207; 1210) + IDENT@[1207; 1210) "buf" + COLON@[1210; 1211) + WHITESPACE@[1211; 1212) + POINTER_TYPE@[1212; 1227) + STAR@[1212; 1213) + CONST_KW@[1213; 1218) + WHITESPACE@[1218; 1219) + PATH_TYPE@[1219; 1227) + PATH@[1219; 1227) + PATH_SEGMENT@[1219; 1227) + COLONCOLON@[1219; 1221) + NAME_REF@[1221; 1227) + IDENT@[1221; 1227) "c_void" + COMMA@[1227; 1228) + WHITESPACE@[1228; 1229) + PARAM@[1229; 1242) + BIND_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) + COLONCOLON@[1234; 1236) + NAME_REF@[1236; 1242) + IDENT@[1236; 1242) "size_t" + COMMA@[1242; 1243) + WHITESPACE@[1243; 1260) + PARAM@[1260; 1274) + BIND_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) + COLONCOLON@[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) + COLONCOLON@[1279; 1281) + NAME_REF@[1281; 1288) + IDENT@[1281; 1288) "ssize_t" + SEMI@[1288; 1289) + WHITESPACE@[1289; 1294) + FN_DEF@[1294; 1481) + VISIBILITY@[1294; 1297) + PUB_KW@[1294; 1297) + WHITESPACE@[1297; 1298) + FN_KW@[1298; 1300) + WHITESPACE@[1300; 1301) + NAME@[1301; 1309) + IDENT@[1301; 1309) "recvfrom" + PARAM_LIST@[1309; 1467) + L_PAREN@[1309; 1310) + PARAM@[1310; 1325) + BIND_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) + COLONCOLON@[1318; 1320) + NAME_REF@[1320; 1325) + IDENT@[1320; 1325) "c_int" + COMMA@[1325; 1326) + WHITESPACE@[1326; 1327) + PARAM@[1327; 1345) + BIND_PAT@[1327; 1330) + NAME@[1327; 1330) + IDENT@[1327; 1330) "buf" + COLON@[1330; 1331) + WHITESPACE@[1331; 1332) + POINTER_TYPE@[1332; 1345) + STAR@[1332; 1333) + MUT_KW@[1333; 1336) + WHITESPACE@[1336; 1337) + PATH_TYPE@[1337; 1345) + PATH@[1337; 1345) + PATH_SEGMENT@[1337; 1345) + COLONCOLON@[1337; 1339) + NAME_REF@[1339; 1345) + IDENT@[1339; 1345) "c_void" + COMMA@[1345; 1346) + WHITESPACE@[1346; 1347) + PARAM@[1347; 1360) + BIND_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) + COLONCOLON@[1352; 1354) + NAME_REF@[1354; 1360) + IDENT@[1354; 1360) "size_t" + COMMA@[1360; 1361) + WHITESPACE@[1361; 1382) + PARAM@[1382; 1396) + BIND_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) + COLONCOLON@[1389; 1391) + NAME_REF@[1391; 1396) + IDENT@[1391; 1396) "c_int" + COMMA@[1396; 1397) + WHITESPACE@[1397; 1398) + PARAM@[1398; 1419) + BIND_PAT@[1398; 1402) + NAME@[1398; 1402) + IDENT@[1398; 1402) "addr" + COLON@[1402; 1403) + WHITESPACE@[1403; 1404) + POINTER_TYPE@[1404; 1419) + STAR@[1404; 1405) + MUT_KW@[1405; 1408) + WHITESPACE@[1408; 1409) + PATH_TYPE@[1409; 1419) + PATH@[1409; 1419) + PATH_SEGMENT@[1409; 1419) + COLONCOLON@[1409; 1411) + NAME_REF@[1411; 1419) + IDENT@[1411; 1419) "sockaddr" + COMMA@[1419; 1420) + WHITESPACE@[1420; 1441) + PARAM@[1441; 1466) + BIND_PAT@[1441; 1448) + NAME@[1441; 1448) + IDENT@[1441; 1448) "addrlen" + COLON@[1448; 1449) + WHITESPACE@[1449; 1450) + POINTER_TYPE@[1450; 1466) + STAR@[1450; 1451) + MUT_KW@[1451; 1454) + WHITESPACE@[1454; 1455) + PATH_TYPE@[1455; 1466) + PATH@[1455; 1466) + PATH_SEGMENT@[1455; 1466) + COLONCOLON@[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) + COLONCOLON@[1471; 1473) + NAME_REF@[1473; 1480) + IDENT@[1473; 1480) "ssize_t" + SEMI@[1480; 1481) + WHITESPACE@[1481; 1486) + FN_DEF@[1486; 1595) + VISIBILITY@[1486; 1489) + PUB_KW@[1486; 1489) + WHITESPACE@[1489; 1490) + FN_KW@[1490; 1492) + WHITESPACE@[1492; 1493) + NAME@[1493; 1497) + IDENT@[1493; 1497) "recv" + PARAM_LIST@[1497; 1581) + L_PAREN@[1497; 1498) + PARAM@[1498; 1513) + BIND_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) + COLONCOLON@[1506; 1508) + NAME_REF@[1508; 1513) + IDENT@[1508; 1513) "c_int" + COMMA@[1513; 1514) + WHITESPACE@[1514; 1515) + PARAM@[1515; 1533) + BIND_PAT@[1515; 1518) + NAME@[1515; 1518) + IDENT@[1515; 1518) "buf" + COLON@[1518; 1519) + WHITESPACE@[1519; 1520) + POINTER_TYPE@[1520; 1533) + STAR@[1520; 1521) + MUT_KW@[1521; 1524) + WHITESPACE@[1524; 1525) + PATH_TYPE@[1525; 1533) + PATH@[1525; 1533) + PATH_SEGMENT@[1525; 1533) + COLONCOLON@[1525; 1527) + NAME_REF@[1527; 1533) + IDENT@[1527; 1533) "c_void" + COMMA@[1533; 1534) + WHITESPACE@[1534; 1535) + PARAM@[1535; 1548) + BIND_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) + COLONCOLON@[1540; 1542) + NAME_REF@[1542; 1548) + IDENT@[1542; 1548) "size_t" + COMMA@[1548; 1549) + WHITESPACE@[1549; 1566) + PARAM@[1566; 1580) + BIND_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) + COLONCOLON@[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) + COLONCOLON@[1585; 1587) + NAME_REF@[1587; 1594) + IDENT@[1587; 1594) "ssize_t" + SEMI@[1594; 1595) + WHITESPACE@[1595; 1596) + R_CURLY@[1596; 1597) + WHITESPACE@[1597; 1598) diff --git a/crates/ra_syntax/tests/data/parser/ok/0032_where_for.rs b/crates/ra_syntax/tests/data/parser/ok/0032_where_for.rs new file mode 100644 index 000000000..588170fbe --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0032_where_for.txt b/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt new file mode 100644 index 000000000..e3b9386a8 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt @@ -0,0 +1,85 @@ +ROOT@[0; 116) + FN_DEF@[0; 115) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 21) + IDENT@[3; 21) "test_serialization" + TYPE_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) + WHERE_CLAUSE@[29; 112) + WHERE_KW@[29; 34) + WHITESPACE@[34; 39) + 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) + PATH_TYPE@[44; 111) + PATH@[44; 53) + PATH_SEGMENT@[44; 53) + NAME_REF@[44; 53) + IDENT@[44; 53) "Serialize" + WHITESPACE@[53; 54) + PLUS@[54; 55) + WHITESPACE@[55; 56) + FOR_TYPE@[56; 81) + FOR_KW@[56; 59) + TYPE_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" + TYPE_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) + PATH_TYPE@[84; 111) + PATH@[84; 93) + PATH_SEGMENT@[84; 93) + NAME_REF@[84; 93) + IDENT@[84; 93) "PartialEq" + WHITESPACE@[93; 94) + PLUS@[94; 95) + WHITESPACE@[95; 96) + 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" + COLONCOLON@[99; 101) + PATH_SEGMENT@[101; 104) + NAME_REF@[101; 104) + IDENT@[101; 104) "fmt" + COLONCOLON@[104; 106) + PATH_SEGMENT@[106; 111) + NAME_REF@[106; 111) + IDENT@[106; 111) "Debug" + COMMA@[111; 112) + WHITESPACE@[112; 113) + BLOCK@[113; 115) + L_CURLY@[113; 114) + R_CURLY@[114; 115) + WHITESPACE@[115; 116) diff --git a/crates/ra_syntax/tests/data/parser/ok/0033_label_break.rs b/crates/ra_syntax/tests/data/parser/ok/0033_label_break.rs new file mode 100644 index 000000000..728d78137 --- /dev/null +++ b/crates/ra_syntax/tests/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/ra_syntax/tests/data/parser/ok/0033_label_break.txt b/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt new file mode 100644 index 000000000..6abb9234c --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt @@ -0,0 +1,215 @@ +ROOT@[0; 506) + COMMENT@[0; 33) + WHITESPACE@[33; 34) + FN_DEF@[34; 505) + FN_KW@[34; 36) + 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@[44; 505) + L_CURLY@[44; 45) + WHITESPACE@[45; 50) + EXPR_STMT@[50; 66) + BLOCK_EXPR@[50; 66) + LABEL@[50; 63) + LIFETIME@[50; 62) "'empty_block" + COLON@[62; 63) + WHITESPACE@[63; 64) + BLOCK@[64; 66) + L_CURLY@[64; 65) + R_CURLY@[65; 66) + WHITESPACE@[66; 72) + EXPR_STMT@[72; 295) + BLOCK_EXPR@[72; 295) + LABEL@[72; 79) + LIFETIME@[72; 78) "'block" + COLON@[78; 79) + WHITESPACE@[79; 80) + BLOCK@[80; 295) + L_CURLY@[80; 81) + WHITESPACE@[81; 90) + 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) + SEMI@[100; 101) + WHITESPACE@[101; 110) + EXPR_STMT@[110; 170) + IF_EXPR@[110; 170) + IF_KW@[110; 112) + 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@[133; 170) + L_CURLY@[133; 134) + WHITESPACE@[134; 147) + EXPR_STMT@[147; 160) + BREAK_EXPR@[147; 159) + BREAK_KW@[147; 152) + WHITESPACE@[152; 153) + LIFETIME@[153; 159) "'block" + SEMI@[159; 160) + WHITESPACE@[160; 169) + R_CURLY@[169; 170) + WHITESPACE@[170; 179) + 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) + SEMI@[194; 195) + WHITESPACE@[195; 204) + EXPR_STMT@[204; 264) + IF_EXPR@[204; 264) + IF_KW@[204; 206) + 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@[227; 264) + L_CURLY@[227; 228) + WHITESPACE@[228; 241) + EXPR_STMT@[241; 254) + BREAK_EXPR@[241; 253) + BREAK_KW@[241; 246) + WHITESPACE@[246; 247) + LIFETIME@[247; 253) "'block" + SEMI@[253; 254) + WHITESPACE@[254; 263) + R_CURLY@[263; 264) + WHITESPACE@[264; 273) + 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) + SEMI@[288; 289) + WHITESPACE@[289; 294) + R_CURLY@[294; 295) + WHITESPACE@[295; 301) + LET_STMT@[301; 503) + LET_KW@[301; 304) + WHITESPACE@[304; 305) + BIND_PAT@[305; 311) + NAME@[305; 311) + IDENT@[305; 311) "result" + WHITESPACE@[311; 312) + EQ@[312; 313) + WHITESPACE@[313; 314) + BLOCK_EXPR@[314; 502) + LABEL@[314; 321) + LIFETIME@[314; 320) "'block" + COLON@[320; 321) + WHITESPACE@[321; 322) + BLOCK@[322; 502) + L_CURLY@[322; 323) + WHITESPACE@[323; 332) + EXPR_STMT@[332; 403) + IF_EXPR@[332; 403) + IF_KW@[332; 334) + 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@[341; 403) + L_CURLY@[341; 342) + WHITESPACE@[342; 355) + COMMENT@[355; 365) + WHITESPACE@[365; 378) + EXPR_STMT@[378; 393) + BREAK_EXPR@[378; 392) + BREAK_KW@[378; 383) + WHITESPACE@[383; 384) + LIFETIME@[384; 390) "'block" + WHITESPACE@[390; 391) + LITERAL@[391; 392) + INT_NUMBER@[391; 392) "1" + SEMI@[392; 393) + WHITESPACE@[393; 402) + R_CURLY@[402; 403) + WHITESPACE@[403; 412) + EXPR_STMT@[412; 486) + IF_EXPR@[412; 486) + IF_KW@[412; 414) + 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@[421; 486) + L_CURLY@[421; 422) + WHITESPACE@[422; 435) + COMMENT@[435; 448) + WHITESPACE@[448; 461) + EXPR_STMT@[461; 476) + BREAK_EXPR@[461; 475) + BREAK_KW@[461; 466) + WHITESPACE@[466; 467) + LIFETIME@[467; 473) "'block" + WHITESPACE@[473; 474) + LITERAL@[474; 475) + INT_NUMBER@[474; 475) "2" + SEMI@[475; 476) + WHITESPACE@[476; 485) + R_CURLY@[485; 486) + WHITESPACE@[486; 495) + LITERAL@[495; 496) + INT_NUMBER@[495; 496) "3" + WHITESPACE@[496; 501) + R_CURLY@[501; 502) + SEMI@[502; 503) + WHITESPACE@[503; 504) + R_CURLY@[504; 505) + WHITESPACE@[505; 506) diff --git a/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.rs b/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.rs new file mode 100644 index 000000000..2a70ee83a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.rs @@ -0,0 +1,16 @@ +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/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt b/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt new file mode 100644 index 000000000..74af9d71b --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt @@ -0,0 +1,317 @@ +ROOT@[0; 350) + MACRO_CALL@[0; 41) + PATH@[0; 5) + PATH_SEGMENT@[0; 5) + NAME_REF@[0; 5) + IDENT@[0; 5) "macro" + err: `expected EXCL` + WHITESPACE@[5; 6) + IDENT@[6; 21) "parse_use_trees" + 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) + err: `expected SEMI` + WHITESPACE@[41; 42) + err: `expected an item` + ERROR@[42; 93) + L_CURLY@[42; 43) + WHITESPACE@[43; 48) + IDENT@[48; 51) "vec" + EXCL@[51; 52) + L_BRACK@[52; 53) + WHITESPACE@[53; 62) + DOLLAR@[62; 63) + L_PAREN@[63; 64) + IDENT@[64; 78) "parse_use_tree" + 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) + R_BRACK@[90; 91) + WHITESPACE@[91; 92) + R_CURLY@[92; 93) + WHITESPACE@[93; 95) + FN_DEF@[95; 348) + ATTR@[95; 102) + POUND@[95; 96) + TOKEN_TREE@[96; 102) + L_BRACK@[96; 97) + IDENT@[97; 101) "test" + R_BRACK@[101; 102) + WHITESPACE@[102; 103) + FN_KW@[103; 105) + 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@[128; 348) + L_CURLY@[128; 129) + WHITESPACE@[129; 134) + EXPR_STMT@[134; 139) + PATH_EXPR@[134; 139) + PATH@[134; 139) + PATH_SEGMENT@[134; 139) + NAME_REF@[134; 139) + IDENT@[134; 139) "macro" + err: `expected SEMI` + WHITESPACE@[139; 140) + EXPR_STMT@[140; 154) + CALL_EXPR@[140; 154) + PATH_EXPR@[140; 150) + PATH@[140; 150) + PATH_SEGMENT@[140; 150) + NAME_REF@[140; 150) + IDENT@[140; 150) "test_merge" + ARG_LIST@[150; 154) + L_PAREN@[150; 151) + ARRAY_EXPR@[151; 154) + L_BRACK@[151; 152) + err: `expected expression` + ERROR@[152; 153) + DOLLAR@[152; 153) + err: `expected COMMA` + PAREN_EXPR@[153; 154) + L_PAREN@[153; 154) + err: `expected expression` + err: `expected R_PAREN` + err: `expected COMMA` + err: `expected expression` + err: `expected R_BRACK` + err: `expected COMMA` + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[154; 155) + ERROR@[154; 155) + DOLLAR@[154; 155) + err: `expected SEMI` + EXPR_STMT@[155; 160) + PATH_EXPR@[155; 160) + PATH@[155; 160) + PATH_SEGMENT@[155; 160) + NAME_REF@[155; 160) + IDENT@[155; 160) "input" + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[160; 161) + ERROR@[160; 161) + COLON@[160; 161) + err: `expected SEMI` + EXPR_STMT@[161; 165) + PATH_EXPR@[161; 165) + PATH@[161; 165) + PATH_SEGMENT@[161; 165) + NAME_REF@[161; 165) + IDENT@[161; 165) "expr" + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[165; 166) + ERROR@[165; 166) + R_PAREN@[165; 166) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[166; 167) + ERROR@[166; 167) + COMMA@[166; 167) + err: `expected SEMI` + EXPR_STMT@[167; 170) + PREFIX_EXPR@[167; 170) + STAR@[167; 168) + WHITESPACE@[168; 169) + err: `expected expression` + ERROR@[169; 170) + DOLLAR@[169; 170) + err: `expected SEMI` + EXPR_STMT@[170; 171) + PAREN_EXPR@[170; 171) + L_PAREN@[170; 171) + err: `expected expression` + err: `expected R_PAREN` + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[171; 172) + ERROR@[171; 172) + COMMA@[171; 172) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[172; 173) + ERROR@[172; 173) + R_PAREN@[172; 173) + err: `expected SEMI` + EXPR_STMT@[173; 175) + PREFIX_EXPR@[173; 175) + STAR@[173; 174) + err: `expected expression` + ERROR@[174; 175) + R_BRACK@[174; 175) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[175; 176) + ERROR@[175; 176) + COMMA@[175; 176) + err: `expected SEMI` + WHITESPACE@[176; 177) + EXPR_STMT@[177; 180) + ARRAY_EXPR@[177; 180) + L_BRACK@[177; 178) + err: `expected expression` + ERROR@[178; 179) + DOLLAR@[178; 179) + err: `expected COMMA` + PAREN_EXPR@[179; 180) + L_PAREN@[179; 180) + err: `expected expression` + err: `expected R_PAREN` + err: `expected COMMA` + err: `expected expression` + err: `expected R_BRACK` + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[180; 181) + ERROR@[180; 181) + DOLLAR@[180; 181) + err: `expected SEMI` + EXPR_STMT@[181; 187) + PATH_EXPR@[181; 187) + PATH@[181; 187) + PATH_SEGMENT@[181; 187) + NAME_REF@[181; 187) + IDENT@[181; 187) "output" + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[187; 188) + ERROR@[187; 188) + COLON@[187; 188) + err: `expected SEMI` + EXPR_STMT@[188; 192) + PATH_EXPR@[188; 192) + PATH@[188; 192) + PATH_SEGMENT@[188; 192) + NAME_REF@[188; 192) + IDENT@[188; 192) "expr" + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[192; 193) + ERROR@[192; 193) + R_PAREN@[192; 193) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[193; 194) + ERROR@[193; 194) + COMMA@[193; 194) + err: `expected SEMI` + EXPR_STMT@[194; 197) + PREFIX_EXPR@[194; 197) + STAR@[194; 195) + WHITESPACE@[195; 196) + err: `expected expression` + ERROR@[196; 197) + DOLLAR@[196; 197) + err: `expected SEMI` + EXPR_STMT@[197; 198) + PAREN_EXPR@[197; 198) + L_PAREN@[197; 198) + err: `expected expression` + err: `expected R_PAREN` + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[198; 199) + ERROR@[198; 199) + COMMA@[198; 199) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[199; 200) + ERROR@[199; 200) + R_PAREN@[199; 200) + err: `expected SEMI` + EXPR_STMT@[200; 202) + PREFIX_EXPR@[200; 202) + STAR@[200; 201) + err: `expected expression` + ERROR@[201; 202) + R_BRACK@[201; 202) + err: `expected SEMI` + err: `expected expression` + EXPR_STMT@[202; 203) + ERROR@[202; 203) + R_PAREN@[202; 203) + err: `expected SEMI` + WHITESPACE@[203; 204) + BLOCK_EXPR@[204; 346) + BLOCK@[204; 346) + L_CURLY@[204; 205) + WHITESPACE@[205; 214) + EXPR_STMT@[214; 340) + MACRO_CALL@[214; 339) + PATH@[214; 223) + PATH_SEGMENT@[214; 223) + NAME_REF@[214; 223) + IDENT@[214; 223) "assert_eq" + EXCL@[223; 224) + TOKEN_TREE@[224; 339) + L_PAREN@[224; 225) + WHITESPACE@[225; 238) + IDENT@[238; 253) "merge_use_trees" + TOKEN_TREE@[253; 284) + L_PAREN@[253; 254) + IDENT@[254; 269) "parse_use_trees" + EXCL@[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) + IDENT@[298; 313) "parse_use_trees" + EXCL@[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) + R_PAREN@[338; 339) + SEMI@[339; 340) + WHITESPACE@[340; 345) + R_CURLY@[345; 346) + WHITESPACE@[346; 347) + R_CURLY@[347; 348) + WHITESPACE@[348; 350) diff --git a/crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt b/crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt new file mode 100644 index 000000000..1a8ca761d --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt @@ -0,0 +1,250 @@ +ROOT@[0; 350) + MACRO_CALL@[0; 41) + PATH@[0; 5) + PATH_SEGMENT@[0; 5) + NAME_REF@[0; 5) + IDENT@[0; 5) "macro" + err: `expected EXCL` + WHITESPACE@[5; 6) + IDENT@[6; 21) "parse_use_trees" + 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) + err: `expected SEMI` + WHITESPACE@[41; 42) + err: `expected an item` + ERROR@[42; 93) + L_CURLY@[42; 43) + WHITESPACE@[43; 48) + IDENT@[48; 51) "vec" + EXCL@[51; 52) + L_BRACK@[52; 53) + WHITESPACE@[53; 62) + DOLLAR@[62; 63) + L_PAREN@[63; 64) + IDENT@[64; 78) "parse_use_tree" + 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) + R_BRACK@[90; 91) + WHITESPACE@[91; 92) + R_CURLY@[92; 93) + WHITESPACE@[93; 95) + FN_DEF@[95; 348) + ATTR@[95; 102) + POUND@[95; 96) + TOKEN_TREE@[96; 102) + L_BRACK@[96; 97) + IDENT@[97; 101) "test" + R_BRACK@[101; 102) + WHITESPACE@[102; 103) + FN_KW@[103; 105) + 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@[128; 348) + L_CURLY@[128; 129) + WHITESPACE@[129; 134) + EXPR_STMT@[134; 139) + PATH_EXPR@[134; 139) + PATH@[134; 139) + PATH_SEGMENT@[134; 139) + NAME_REF@[134; 139) + IDENT@[134; 139) "macro" + err: `expected SEMI` + WHITESPACE@[139; 140) + EXPR_STMT@[140; 203) + CALL_EXPR@[140; 203) + PATH_EXPR@[140; 150) + PATH@[140; 150) + PATH_SEGMENT@[140; 150) + NAME_REF@[140; 150) + IDENT@[140; 150) "test_merge" + ARG_LIST@[150; 203) + L_PAREN@[150; 151) + ARRAY_EXPR@[151; 202) + L_BRACK@[151; 152) + err: `expected expression` + ERROR@[152; 153) + DOLLAR@[152; 153) + err: `expected COMMA` + TUPLE_EXPR@[153; 166) + L_PAREN@[153; 154) + err: `expected expression` + ERROR@[154; 155) + DOLLAR@[154; 155) + err: `expected COMMA` + PATH_EXPR@[155; 160) + PATH@[155; 160) + PATH_SEGMENT@[155; 160) + NAME_REF@[155; 160) + IDENT@[155; 160) "input" + err: `expected COMMA` + err: `expected expression` + ERROR@[160; 161) + COLON@[160; 161) + err: `expected COMMA` + PATH_EXPR@[161; 165) + PATH@[161; 165) + PATH_SEGMENT@[161; 165) + NAME_REF@[161; 165) + IDENT@[161; 165) "expr" + R_PAREN@[165; 166) + COMMA@[166; 167) + PREFIX_EXPR@[167; 170) + STAR@[167; 168) + WHITESPACE@[168; 169) + err: `expected expression` + ERROR@[169; 170) + DOLLAR@[169; 170) + err: `expected COMMA` + BIN_EXPR@[170; 175) + PAREN_EXPR@[170; 173) + L_PAREN@[170; 171) + err: `expected expression` + ERROR@[171; 172) + COMMA@[171; 172) + R_PAREN@[172; 173) + STAR@[173; 174) + err: `expected expression` + ERROR@[174; 175) + R_BRACK@[174; 175) + COMMA@[175; 176) + WHITESPACE@[176; 177) + ARRAY_EXPR@[177; 202) + L_BRACK@[177; 178) + err: `expected expression` + ERROR@[178; 179) + DOLLAR@[178; 179) + err: `expected COMMA` + TUPLE_EXPR@[179; 193) + L_PAREN@[179; 180) + err: `expected expression` + ERROR@[180; 181) + DOLLAR@[180; 181) + err: `expected COMMA` + PATH_EXPR@[181; 187) + PATH@[181; 187) + PATH_SEGMENT@[181; 187) + NAME_REF@[181; 187) + IDENT@[181; 187) "output" + err: `expected COMMA` + err: `expected expression` + ERROR@[187; 188) + COLON@[187; 188) + err: `expected COMMA` + PATH_EXPR@[188; 192) + PATH@[188; 192) + PATH_SEGMENT@[188; 192) + NAME_REF@[188; 192) + IDENT@[188; 192) "expr" + R_PAREN@[192; 193) + COMMA@[193; 194) + PREFIX_EXPR@[194; 197) + STAR@[194; 195) + WHITESPACE@[195; 196) + err: `expected expression` + ERROR@[196; 197) + DOLLAR@[196; 197) + err: `expected COMMA` + BIN_EXPR@[197; 202) + PAREN_EXPR@[197; 200) + L_PAREN@[197; 198) + err: `expected expression` + ERROR@[198; 199) + COMMA@[198; 199) + R_PAREN@[199; 200) + STAR@[200; 201) + err: `expected expression` + ERROR@[201; 202) + R_BRACK@[201; 202) + err: `expected COMMA` + err: `expected expression` + err: `expected R_BRACK` + err: `expected COMMA` + err: `expected expression` + err: `expected R_BRACK` + R_PAREN@[202; 203) + err: `expected SEMI` + WHITESPACE@[203; 204) + BLOCK_EXPR@[204; 346) + BLOCK@[204; 346) + L_CURLY@[204; 205) + WHITESPACE@[205; 214) + EXPR_STMT@[214; 340) + MACRO_CALL@[214; 339) + PATH@[214; 223) + PATH_SEGMENT@[214; 223) + NAME_REF@[214; 223) + IDENT@[214; 223) "assert_eq" + EXCL@[223; 224) + TOKEN_TREE@[224; 339) + L_PAREN@[224; 225) + WHITESPACE@[225; 238) + IDENT@[238; 253) "merge_use_trees" + TOKEN_TREE@[253; 284) + L_PAREN@[253; 254) + IDENT@[254; 269) "parse_use_trees" + EXCL@[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) + IDENT@[298; 313) "parse_use_trees" + EXCL@[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) + R_PAREN@[338; 339) + SEMI@[339; 340) + WHITESPACE@[340; 345) + R_CURLY@[345; 346) + WHITESPACE@[346; 347) + R_CURLY@[347; 348) + WHITESPACE@[348; 350) -- cgit v1.2.3