]> git.lizzy.rs Git - rust.git/commitdiff
move syntax tests to unit tests
authorAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 24 Jul 2019 09:38:21 +0000 (12:38 +0300)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 24 Jul 2019 09:49:19 +0000 (12:49 +0300)
1021 files changed:
.travis.yml
crates/ra_syntax/src/lib.rs
crates/ra_syntax/src/tests.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/00012_block_comment.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/00012_block_comment.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0001_hello.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0001_hello.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0002_whitespace.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0002_whitespace.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0003_ident.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0003_ident.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0004_numbers.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0004_numbers.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0005_symbols.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0005_symbols.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0006_chars.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0006_chars.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0007_lifetimes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0007_lifetimes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0008_byte_strings.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0008_byte_strings.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0009_strings.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0009_strings.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0010_comments.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0010_comments.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0011_keywords.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0011_keywords.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0013_raw_strings.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0013_raw_strings.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0014_unclosed_char.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0014_unclosed_char.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0015_unclosed_string.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0015_unclosed_string.txt [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0016_raw_ident.rs [new file with mode: 0644]
crates/ra_syntax/test_data/lexer/0016_raw_ident.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0011_extern_struct.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0011_extern_struct.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0012_broken_lambda.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0013_invalid_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0013_invalid_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0015_curly_in_params.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0016_missing_semi.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0019_let_recover.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0019_let_recover.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0020_fn_recover.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0024_many_type_parens.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0025_nope.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0025_nope.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0026_imp_recovery.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0028_macro_2.0.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0029_field_completion.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0029_field_completion.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/fuzz-failures/0000.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/fuzz-failures/0001.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/fuzz-failures/0002.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/fuzz-failures/0003.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/fuzz-failures/0004.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0054_field_attrs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0054_field_attrs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0063_impl_block_neg.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0063_impl_block_neg.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0075_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0075_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0079_impl_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0079_impl_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0102_field_pat_list.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0102_field_pat_list.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0109_label.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0109_label.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0115_pos_field_attrs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0115_pos_field_attrs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0125_struct_literal_field_with_attr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0125_struct_literal_field_with_attr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0000_empty.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0000_empty.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0001_struct_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0001_struct_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0004_file_shebang.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0005_fn_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0005_fn_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0007_extern_crate.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0008_mod_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0008_mod_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0009_use_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0009_use_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0012_visibility.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0012_visibility.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0014_use_tree.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0014_use_tree.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0015_use_tree.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0015_use_tree.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0019_enums.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0019_enums.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0021_extern_fn.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0023_static_items.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0023_static_items.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0024_const_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0024_const_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0029_range_forms.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0029_range_forms.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0030_traits.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0030_traits.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0031_extern.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0031_extern.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0032_where_for.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0032_where_for.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0033_label_break.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0033_label_break.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0037_mod.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0037_mod.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0044_let_attrs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0049_async_block.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0049_async_block.txt [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rs [new file with mode: 0644]
crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.txt [new file with mode: 0644]
crates/ra_syntax/test_data/reparse/fuzz-failures/0000.rs [new file with mode: 0644]
crates/ra_syntax/test_data/reparse/fuzz-failures/0001.rs [new file with mode: 0644]
crates/ra_syntax/test_data/reparse/fuzz-failures/0002.rs [new file with mode: 0644]
crates/ra_syntax/test_data/reparse/fuzz-failures/0003.rs [new file with mode: 0644]
crates/ra_syntax/test_data/reparse/fuzz-failures/0004.rs [new file with mode: 0644]
crates/ra_syntax/test_data/reparse/fuzz-failures/0005.rs [new file with mode: 0644]
crates/ra_syntax/tests/data/lexer/00012_block_comment.rs [deleted file]
crates/ra_syntax/tests/data/lexer/00012_block_comment.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0001_hello.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0001_hello.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0002_whitespace.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0002_whitespace.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0003_ident.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0003_ident.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0004_numbers.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0004_numbers.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0005_symbols.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0005_symbols.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0006_chars.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0006_chars.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0007_lifetimes.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0007_lifetimes.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0008_byte_strings.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0008_byte_strings.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0009_strings.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0009_strings.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0010_comments.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0010_comments.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0011_keywords.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0011_keywords.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0013_raw_strings.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0013_raw_strings.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0014_unclosed_char.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0014_unclosed_char.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0015_unclosed_string.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0015_unclosed_string.txt [deleted file]
crates/ra_syntax/tests/data/lexer/0016_raw_ident.rs [deleted file]
crates/ra_syntax/tests/data/lexer/0016_raw_ident.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0011_extern_struct.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0013_invalid_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0016_missing_semi.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0019_let_recover.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0020_fn_recover.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0025_nope.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0025_nope.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0029_field_completion.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt [deleted file]
crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.rs [deleted file]
crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt [deleted file]
crates/ra_syntax/tests/data/parser/fuzz-failures/0000.rs [deleted file]
crates/ra_syntax/tests/data/parser/fuzz-failures/0001.rs [deleted file]
crates/ra_syntax/tests/data/parser/fuzz-failures/0002.rs [deleted file]
crates/ra_syntax/tests/data/parser/fuzz-failures/0003.rs [deleted file]
crates/ra_syntax/tests/data/parser/fuzz-failures/0004.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0010_bad_tuple_index_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0010_bad_tuple_index_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0010_wrong_order_fns.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0010_wrong_order_fns.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0014_default_fn_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/err/0014_default_fn_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0075_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0109_label.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0128_combined_fns.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0128_combined_fns.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0129_marco_pat.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0129_marco_pat.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0130_let_stmt.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0130_let_stmt.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0130_try_block_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0130_try_block_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0131_existential_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0131_existential_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0132_box_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0132_box_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0132_default_fn_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0132_default_fn_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0134_nocontentexpr_after_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0134_nocontentexpr_after_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0135_first_array_member_attributes.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0135_first_array_member_attributes.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0136_subsequent_array_member_attributes.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0136_subsequent_array_member_attributes.txt [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0137_await_expr.rs [deleted file]
crates/ra_syntax/tests/data/parser/inline/ok/0137_await_expr.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0000_empty.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0000_empty.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0001_struct_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0005_fn_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0008_mod_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0009_use_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0012_visibility.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0014_use_tree.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0015_use_tree.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0019_enums.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0019_enums.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0023_static_items.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0024_const_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0029_range_forms.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0030_traits.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0030_traits.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0031_extern.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0031_extern.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0032_where_for.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0033_label_break.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0037_mod.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0037_mod.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0049_async_block.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0049_async_block.txt [deleted file]
crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.rs [deleted file]
crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.txt [deleted file]
crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs [deleted file]
crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs [deleted file]
crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs [deleted file]
crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs [deleted file]
crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs [deleted file]
crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs [deleted file]
crates/ra_syntax/tests/test.rs [deleted file]
crates/ra_tools/src/lib.rs

index 4829a34c779376a6a0956d87e315e518be6812dd..d0d8311fed6f2d1daba417c6eb19020008d7051b 100644 (file)
@@ -1,7 +1,7 @@
 cache: cargo
 before_cache:
     - find ./target/debug -maxdepth 1 -type f -delete
-    - rm -fr ./target/debug/{deps,.fingerprint}/{*ra_*,*test*,*gen_lsp*,*thread_worker*}
+    - rm -fr ./target/debug/{deps,.fingerprint}/{*ra_*,*heavy_test*,*gen_lsp*,*thread_worker*}
     - rm -f  ./target/.rustc_info.json
 
 matrix:
index 7f69b86e15ab0ee90d7fcfdce6e59ccaee7c070b..4c4e0580a5b34ff0963bb9301e24e65827e23903 100644 (file)
@@ -24,6 +24,8 @@
 mod parsing;
 mod validation;
 mod ptr;
+#[cfg(test)]
+mod tests;
 
 pub mod algo;
 pub mod ast;
diff --git a/crates/ra_syntax/src/tests.rs b/crates/ra_syntax/src/tests.rs
new file mode 100644 (file)
index 0000000..fa5d2d5
--- /dev/null
@@ -0,0 +1,101 @@
+use std::{
+    fmt::Write,
+    path::{Component, PathBuf},
+};
+
+use test_utils::{collect_tests, dir_tests, project_dir, read_text};
+
+use crate::{fuzz, SourceFile};
+
+#[test]
+fn lexer_tests() {
+    dir_tests(&test_data_dir(), &["lexer"], |text, _| {
+        let tokens = crate::tokenize(text);
+        dump_tokens(&tokens, text)
+    })
+}
+
+#[test]
+fn parser_tests() {
+    dir_tests(&test_data_dir(), &["parser/inline/ok", "parser/ok"], |text, path| {
+        let parse = SourceFile::parse(text);
+        let errors = parse.errors();
+        assert_eq!(
+            errors,
+            &[] as &[crate::SyntaxError],
+            "There should be no errors in the file {:?}",
+            path.display(),
+        );
+        parse.debug_dump()
+    });
+    dir_tests(&test_data_dir(), &["parser/err", "parser/inline/err"], |text, path| {
+        let parse = SourceFile::parse(text);
+        let errors = parse.errors();
+        assert!(!errors.is_empty(), "There should be errors in the file {:?}", path.display());
+        parse.debug_dump()
+    });
+}
+
+#[test]
+fn parser_fuzz_tests() {
+    for (_, text) in collect_tests(&test_data_dir(), &["parser/fuzz-failures"]) {
+        fuzz::check_parser(&text)
+    }
+}
+
+#[test]
+fn reparse_fuzz_tests() {
+    for (_, text) in collect_tests(&test_data_dir(), &["reparse/fuzz-failures"]) {
+        let check = fuzz::CheckReparse::from_data(text.as_bytes()).unwrap();
+        println!("{:?}", check);
+        check.run();
+    }
+}
+
+/// Test that Rust-analyzer can parse and validate the rust-analyzer
+/// FIXME: Use this as a benchmark
+#[test]
+fn self_hosting_parsing() {
+    use std::ffi::OsStr;
+    let dir = project_dir().join("crates");
+    let mut count = 0;
+    for entry in walkdir::WalkDir::new(dir)
+        .into_iter()
+        .filter_entry(|entry| {
+            !entry.path().components().any(|component| {
+                // Get all files which are not in the crates/ra_syntax/tests/data folder
+                component == Component::Normal(OsStr::new("test_data"))
+            })
+        })
+        .map(|e| e.unwrap())
+        .filter(|entry| {
+            // Get all `.rs ` files
+            !entry.path().is_dir() && (entry.path().extension() == Some(OsStr::new("rs")))
+        })
+    {
+        count += 1;
+        let text = read_text(entry.path());
+        SourceFile::parse(&text).ok().expect("There should be no errors in the file");
+    }
+    assert!(
+        count > 30,
+        "self_hosting_parsing found too few files - is it running in the right directory?"
+    )
+}
+
+fn test_data_dir() -> PathBuf {
+    project_dir().join("crates/ra_syntax/test_data")
+}
+
+fn dump_tokens(tokens: &[crate::Token], text: &str) -> String {
+    let mut acc = String::new();
+    let mut offset = 0;
+    for token in tokens {
+        let len: u32 = token.len.into();
+        let len = len as usize;
+        let token_text = &text[offset..offset + len];
+        offset += len;
+        write!(acc, "{:?} {} {:?}\n", token.kind, token.len, token_text).unwrap()
+    }
+    acc
+}
diff --git a/crates/ra_syntax/test_data/lexer/00012_block_comment.rs b/crates/ra_syntax/test_data/lexer/00012_block_comment.rs
new file mode 100644 (file)
index 0000000..708aac1
--- /dev/null
@@ -0,0 +1,4 @@
+/* */
+/**/
+/* /* */ */
+/*
diff --git a/crates/ra_syntax/test_data/lexer/00012_block_comment.txt b/crates/ra_syntax/test_data/lexer/00012_block_comment.txt
new file mode 100644 (file)
index 0000000..9958b25
--- /dev/null
@@ -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/test_data/lexer/0001_hello.rs b/crates/ra_syntax/test_data/lexer/0001_hello.rs
new file mode 100644 (file)
index 0000000..95d09f2
--- /dev/null
@@ -0,0 +1 @@
+hello world
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/lexer/0001_hello.txt b/crates/ra_syntax/test_data/lexer/0001_hello.txt
new file mode 100644 (file)
index 0000000..27a5940
--- /dev/null
@@ -0,0 +1,3 @@
+IDENT 5 "hello"
+WHITESPACE 1 " "
+IDENT 5 "world"
diff --git a/crates/ra_syntax/test_data/lexer/0002_whitespace.rs b/crates/ra_syntax/test_data/lexer/0002_whitespace.rs
new file mode 100644 (file)
index 0000000..08fce14
--- /dev/null
@@ -0,0 +1,4 @@
+a b  c
+d
+
+e      f
diff --git a/crates/ra_syntax/test_data/lexer/0002_whitespace.txt b/crates/ra_syntax/test_data/lexer/0002_whitespace.txt
new file mode 100644 (file)
index 0000000..01d2609
--- /dev/null
@@ -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/test_data/lexer/0003_ident.rs b/crates/ra_syntax/test_data/lexer/0003_ident.rs
new file mode 100644 (file)
index 0000000..c05c9c0
--- /dev/null
@@ -0,0 +1 @@
+foo foo_ _foo _ __ x Ð¿Ñ€Ð¸Ð²ÐµÑ‚
diff --git a/crates/ra_syntax/test_data/lexer/0003_ident.txt b/crates/ra_syntax/test_data/lexer/0003_ident.txt
new file mode 100644 (file)
index 0000000..4a0d5c0
--- /dev/null
@@ -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/test_data/lexer/0004_numbers.rs b/crates/ra_syntax/test_data/lexer/0004_numbers.rs
new file mode 100644 (file)
index 0000000..dc974b5
--- /dev/null
@@ -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/test_data/lexer/0004_numbers.txt b/crates/ra_syntax/test_data/lexer/0004_numbers.txt
new file mode 100644 (file)
index 0000000..7bb89b8
--- /dev/null
@@ -0,0 +1,66 @@
+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 " "
+FLOAT_NUMBER 2 "0e"
+WHITESPACE 1 " "
+FLOAT_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 " "
+FLOAT_NUMBER 6 "0e1279"
+WHITESPACE 1 " "
+FLOAT_NUMBER 6 "0E1279"
+WHITESPACE 1 "\n"
+INT_NUMBER 1 "0"
+DOT 1 "."
+DOT 1 "."
+INT_NUMBER 1 "2"
+WHITESPACE 1 "\n"
+INT_NUMBER 1 "0"
+DOT 1 "."
+IDENT 3 "foo"
+L_PAREN 1 "("
+R_PAREN 1 ")"
+WHITESPACE 1 "\n"
+FLOAT_NUMBER 4 "0e+1"
+WHITESPACE 1 "\n"
+INT_NUMBER 1 "0"
+DOT 1 "."
+IDENT 1 "e"
+PLUS 1 "+"
+INT_NUMBER 1 "1"
+WHITESPACE 1 "\n"
+FLOAT_NUMBER 6 "0.0E-2"
+WHITESPACE 1 "\n"
+FLOAT_NUMBER 26 "0___0.10000____0000e+111__"
+WHITESPACE 1 "\n"
+INT_NUMBER 4 "1i64"
+WHITESPACE 1 " "
+FLOAT_NUMBER 7 "92.0f32"
+WHITESPACE 1 " "
+INT_NUMBER 5 "11__s"
diff --git a/crates/ra_syntax/test_data/lexer/0005_symbols.rs b/crates/ra_syntax/test_data/lexer/0005_symbols.rs
new file mode 100644 (file)
index 0000000..487569b
--- /dev/null
@@ -0,0 +1,6 @@
+; , ( ) { } [ ] < > @ # ~ ? $ & | + * / ^ %
+. .. ... ..=
+: ::
+= =>
+! !=
+- ->
diff --git a/crates/ra_syntax/test_data/lexer/0005_symbols.txt b/crates/ra_syntax/test_data/lexer/0005_symbols.txt
new file mode 100644 (file)
index 0000000..469a90e
--- /dev/null
@@ -0,0 +1,77 @@
+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 " "
+DOT 1 "."
+DOT 1 "."
+WHITESPACE 1 " "
+DOT 1 "."
+DOT 1 "."
+DOT 1 "."
+WHITESPACE 1 " "
+DOT 1 "."
+DOT 1 "."
+EQ 1 "="
+WHITESPACE 1 "\n"
+COLON 1 ":"
+WHITESPACE 1 " "
+COLON 1 ":"
+COLON 1 ":"
+WHITESPACE 1 "\n"
+EQ 1 "="
+WHITESPACE 1 " "
+EQ 1 "="
+R_ANGLE 1 ">"
+WHITESPACE 1 "\n"
+EXCL 1 "!"
+WHITESPACE 1 " "
+EXCL 1 "!"
+EQ 1 "="
+WHITESPACE 1 "\n"
+MINUS 1 "-"
+WHITESPACE 1 " "
+MINUS 1 "-"
+R_ANGLE 1 ">"
+WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/0006_chars.rs b/crates/ra_syntax/test_data/lexer/0006_chars.rs
new file mode 100644 (file)
index 0000000..454ee0a
--- /dev/null
@@ -0,0 +1 @@
+'x' ' ' '0' 'hello' '\x7f' '\n' '\\' '\''
diff --git a/crates/ra_syntax/test_data/lexer/0006_chars.txt b/crates/ra_syntax/test_data/lexer/0006_chars.txt
new file mode 100644 (file)
index 0000000..950954f
--- /dev/null
@@ -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/test_data/lexer/0007_lifetimes.rs b/crates/ra_syntax/test_data/lexer/0007_lifetimes.rs
new file mode 100644 (file)
index 0000000..b764f1d
--- /dev/null
@@ -0,0 +1 @@
+'a 'foo 'foo_bar_baz '_
diff --git a/crates/ra_syntax/test_data/lexer/0007_lifetimes.txt b/crates/ra_syntax/test_data/lexer/0007_lifetimes.txt
new file mode 100644 (file)
index 0000000..005c291
--- /dev/null
@@ -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/test_data/lexer/0008_byte_strings.rs b/crates/ra_syntax/test_data/lexer/0008_byte_strings.rs
new file mode 100644 (file)
index 0000000..b54930f
--- /dev/null
@@ -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/test_data/lexer/0008_byte_strings.txt b/crates/ra_syntax/test_data/lexer/0008_byte_strings.txt
new file mode 100644 (file)
index 0000000..bc03b51
--- /dev/null
@@ -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/test_data/lexer/0009_strings.rs b/crates/ra_syntax/test_data/lexer/0009_strings.rs
new file mode 100644 (file)
index 0000000..4ddb5bf
--- /dev/null
@@ -0,0 +1,2 @@
+"hello" r"world" "\n\"\\no escape" "multi
+line"
diff --git a/crates/ra_syntax/test_data/lexer/0009_strings.txt b/crates/ra_syntax/test_data/lexer/0009_strings.txt
new file mode 100644 (file)
index 0000000..4cb4d71
--- /dev/null
@@ -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/test_data/lexer/0010_comments.rs b/crates/ra_syntax/test_data/lexer/0010_comments.rs
new file mode 100644 (file)
index 0000000..71bdd1f
--- /dev/null
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+// hello
+//! World
diff --git a/crates/ra_syntax/test_data/lexer/0010_comments.txt b/crates/ra_syntax/test_data/lexer/0010_comments.txt
new file mode 100644 (file)
index 0000000..3c997de
--- /dev/null
@@ -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/test_data/lexer/0011_keywords.rs b/crates/ra_syntax/test_data/lexer/0011_keywords.rs
new file mode 100644 (file)
index 0000000..1e91bff
--- /dev/null
@@ -0,0 +1,3 @@
+async fn use struct trait enum impl true false as extern crate
+mod pub self super in where for loop while if match const
+static mut type ref let else move return
diff --git a/crates/ra_syntax/test_data/lexer/0011_keywords.txt b/crates/ra_syntax/test_data/lexer/0011_keywords.txt
new file mode 100644 (file)
index 0000000..22c00ee
--- /dev/null
@@ -0,0 +1,64 @@
+ASYNC_KW 5 "async"
+WHITESPACE 1 " "
+FN_KW 2 "fn"
+WHITESPACE 1 " "
+USE_KW 3 "use"
+WHITESPACE 1 " "
+STRUCT_KW 6 "struct"
+WHITESPACE 1 " "
+TRAIT_KW 5 "trait"
+WHITESPACE 1 " "
+ENUM_KW 4 "enum"
+WHITESPACE 1 " "
+IMPL_KW 4 "impl"
+WHITESPACE 1 " "
+TRUE_KW 4 "true"
+WHITESPACE 1 " "
+FALSE_KW 5 "false"
+WHITESPACE 1 " "
+AS_KW 2 "as"
+WHITESPACE 1 " "
+EXTERN_KW 6 "extern"
+WHITESPACE 1 " "
+CRATE_KW 5 "crate"
+WHITESPACE 1 "\n"
+MOD_KW 3 "mod"
+WHITESPACE 1 " "
+PUB_KW 3 "pub"
+WHITESPACE 1 " "
+SELF_KW 4 "self"
+WHITESPACE 1 " "
+SUPER_KW 5 "super"
+WHITESPACE 1 " "
+IN_KW 2 "in"
+WHITESPACE 1 " "
+WHERE_KW 5 "where"
+WHITESPACE 1 " "
+FOR_KW 3 "for"
+WHITESPACE 1 " "
+LOOP_KW 4 "loop"
+WHITESPACE 1 " "
+WHILE_KW 5 "while"
+WHITESPACE 1 " "
+IF_KW 2 "if"
+WHITESPACE 1 " "
+MATCH_KW 5 "match"
+WHITESPACE 1 " "
+CONST_KW 5 "const"
+WHITESPACE 1 "\n"
+STATIC_KW 6 "static"
+WHITESPACE 1 " "
+MUT_KW 3 "mut"
+WHITESPACE 1 " "
+TYPE_KW 4 "type"
+WHITESPACE 1 " "
+REF_KW 3 "ref"
+WHITESPACE 1 " "
+LET_KW 3 "let"
+WHITESPACE 1 " "
+ELSE_KW 4 "else"
+WHITESPACE 1 " "
+MOVE_KW 4 "move"
+WHITESPACE 1 " "
+RETURN_KW 6 "return"
+WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/0013_raw_strings.rs b/crates/ra_syntax/test_data/lexer/0013_raw_strings.rs
new file mode 100644 (file)
index 0000000..e5ed0b6
--- /dev/null
@@ -0,0 +1 @@
+r###"this is a r##"raw"## string"###
diff --git a/crates/ra_syntax/test_data/lexer/0013_raw_strings.txt b/crates/ra_syntax/test_data/lexer/0013_raw_strings.txt
new file mode 100644 (file)
index 0000000..9cf0957
--- /dev/null
@@ -0,0 +1,2 @@
+RAW_STRING 36 "r###\"this is a r##\"raw\"## string\"###"
+WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/0014_unclosed_char.rs b/crates/ra_syntax/test_data/lexer/0014_unclosed_char.rs
new file mode 100644 (file)
index 0000000..9c00070
--- /dev/null
@@ -0,0 +1 @@
+'1
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/lexer/0014_unclosed_char.txt b/crates/ra_syntax/test_data/lexer/0014_unclosed_char.txt
new file mode 100644 (file)
index 0000000..737a300
--- /dev/null
@@ -0,0 +1 @@
+LIFETIME 2 "\'1"
diff --git a/crates/ra_syntax/test_data/lexer/0015_unclosed_string.rs b/crates/ra_syntax/test_data/lexer/0015_unclosed_string.rs
new file mode 100644 (file)
index 0000000..d771a26
--- /dev/null
@@ -0,0 +1 @@
+"hello
diff --git a/crates/ra_syntax/test_data/lexer/0015_unclosed_string.txt b/crates/ra_syntax/test_data/lexer/0015_unclosed_string.txt
new file mode 100644 (file)
index 0000000..728c40b
--- /dev/null
@@ -0,0 +1 @@
+STRING 7 "\"hello\n"
diff --git a/crates/ra_syntax/test_data/lexer/0016_raw_ident.rs b/crates/ra_syntax/test_data/lexer/0016_raw_ident.rs
new file mode 100644 (file)
index 0000000..b40a1b6
--- /dev/null
@@ -0,0 +1 @@
+r#raw_ident
diff --git a/crates/ra_syntax/test_data/lexer/0016_raw_ident.txt b/crates/ra_syntax/test_data/lexer/0016_raw_ident.txt
new file mode 100644 (file)
index 0000000..4846896
--- /dev/null
@@ -0,0 +1,2 @@
+IDENT 11 "r#raw_ident"
+WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rs b/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.rs
new file mode 100644 (file)
index 0000000..fe5030d
--- /dev/null
@@ -0,0 +1,4 @@
+struct S {
+    a: u32
+    b: u32
+}
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.txt b/crates/ra_syntax/test_data/parser/err/0000_struct_field_missing_comma.txt
new file mode 100644 (file)
index 0000000..0dbbfe8
--- /dev/null
@@ -0,0 +1,34 @@
+SOURCE_FILE@[0; 34)
+  STRUCT_DEF@[0; 34)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n    "
+      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"
+      WHITESPACE@[21; 26) "\n    "
+      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) "\n"
+      R_CURLY@[33; 34) "}"
+error 21: expected COMMA
diff --git a/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rs b/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.rs
new file mode 100644 (file)
index 0000000..98f23de
--- /dev/null
@@ -0,0 +1,3 @@
+if match
+
+struct S {}
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.txt b/crates/ra_syntax/test_data/parser/err/0001_item_recovery_in_file.txt
new file mode 100644 (file)
index 0000000..7cfb54e
--- /dev/null
@@ -0,0 +1,18 @@
+SOURCE_FILE@[0; 21)
+  ERROR@[0; 2)
+    IF_KW@[0; 2) "if"
+  WHITESPACE@[2; 3) " "
+  ERROR@[3; 8)
+    MATCH_KW@[3; 8) "match"
+  WHITESPACE@[8; 10) "\n\n"
+  STRUCT_DEF@[10; 21)
+    STRUCT_KW@[10; 16) "struct"
+    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) "}"
+error 0: expected an item
+error 3: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rs b/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.rs
new file mode 100644 (file)
index 0000000..48a3a39
--- /dev/null
@@ -0,0 +1,2 @@
+#!/use/bin/env rusti
+#!/use/bin/env rusti
diff --git a/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.txt b/crates/ra_syntax/test_data/parser/err/0002_duplicate_shebang.txt
new file mode 100644 (file)
index 0000000..8486702
--- /dev/null
@@ -0,0 +1,39 @@
+SOURCE_FILE@[0; 42)
+  SHEBANG@[0; 20) "#!/use/bin/env rusti"
+  WHITESPACE@[20; 21) "\n"
+  ATTR@[21; 23)
+    POUND@[21; 22) "#"
+    EXCL@[22; 23) "!"
+  ERROR@[23; 24)
+    SLASH@[23; 24) "/"
+  USE_ITEM@[24; 28)
+    USE_KW@[24; 27) "use"
+    ERROR@[27; 28)
+      SLASH@[27; 28) "/"
+  MACRO_CALL@[28; 31)
+    PATH@[28; 31)
+      PATH_SEGMENT@[28; 31)
+        NAME_REF@[28; 31)
+          IDENT@[28; 31) "bin"
+  ERROR@[31; 32)
+    SLASH@[31; 32) "/"
+  MACRO_CALL@[32; 41)
+    PATH@[32; 35)
+      PATH_SEGMENT@[32; 35)
+        NAME_REF@[32; 35)
+          IDENT@[32; 35) "env"
+    WHITESPACE@[35; 36) " "
+    NAME@[36; 41)
+      IDENT@[36; 41) "rusti"
+  WHITESPACE@[41; 42) "\n"
+error 23: expected `[`
+error 23: expected an item
+error 27: expected one of `*`, `::`, `{`, `self`, `super` or an indentifier
+error 28: expected SEMI
+error 31: expected EXCL
+error 31: expected `{`, `[`, `(`
+error 31: expected SEMI
+error 31: expected an item
+error 35: expected EXCL
+error 41: expected `{`, `[`, `(`
+error 41: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rs b/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.rs
new file mode 100644 (file)
index 0000000..0093122
--- /dev/null
@@ -0,0 +1,4 @@
+struct S {
+    a: i32,
+    b: String,
+};
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.txt b/crates/ra_syntax/test_data/parser/err/0003_C++_semicolon.txt
new file mode 100644 (file)
index 0000000..8578260
--- /dev/null
@@ -0,0 +1,39 @@
+SOURCE_FILE@[0; 40)
+  STRUCT_DEF@[0; 39)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n    "
+      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) "\n    "
+      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) "\n"
+      R_CURLY@[38; 39) "}"
+  ERROR@[39; 40)
+    SEMI@[39; 40) ";"
+error 39: expected item, found `;`
+consider removing this semicolon
diff --git a/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rs b/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.rs
new file mode 100644 (file)
index 0000000..060e65d
--- /dev/null
@@ -0,0 +1 @@
+use foo::92;
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.txt b/crates/ra_syntax/test_data/parser/err/0004_use_path_bad_segment.txt
new file mode 100644 (file)
index 0000000..5210a88
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 12)
+  USE_ITEM@[0; 12)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 11)
+      PATH@[4; 11)
+        PATH@[4; 7)
+          PATH_SEGMENT@[4; 7)
+            NAME_REF@[4; 7)
+              IDENT@[4; 7) "foo"
+        COLONCOLON@[7; 9) "::"
+        PATH_SEGMENT@[9; 11)
+          ERROR@[9; 11)
+            INT_NUMBER@[9; 11) "92"
+    SEMI@[11; 12) ";"
+error 9: expected identifier
diff --git a/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rs b/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.rs
new file mode 100644 (file)
index 0000000..de7f816
--- /dev/null
@@ -0,0 +1,8 @@
+#[foo(foo, +, 92)]
+fn foo() {
+}
+
+
+#[foo(
+fn foo() {
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt b/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt
new file mode 100644 (file)
index 0000000..6d5199a
--- /dev/null
@@ -0,0 +1,55 @@
+SOURCE_FILE@[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) "\n"
+    FN_KW@[19; 21) "fn"
+    WHITESPACE@[21; 22) " "
+    NAME@[22; 25)
+      IDENT@[22; 25) "foo"
+    PARAM_LIST@[25; 27)
+      L_PAREN@[25; 26) "("
+      R_PAREN@[26; 27) ")"
+    WHITESPACE@[27; 28) " "
+    BLOCK@[28; 31)
+      L_CURLY@[28; 29) "{"
+      WHITESPACE@[29; 30) "\n"
+      R_CURLY@[30; 31) "}"
+  WHITESPACE@[31; 34) "\n\n\n"
+  ATTR@[34; 53)
+    POUND@[34; 35) "#"
+    TOKEN_TREE@[35; 53)
+      L_BRACK@[35; 36) "["
+      IDENT@[36; 39) "foo"
+      TOKEN_TREE@[39; 53)
+        L_PAREN@[39; 40) "("
+        WHITESPACE@[40; 41) "\n"
+        FN_KW@[41; 43) "fn"
+        WHITESPACE@[43; 44) " "
+        IDENT@[44; 47) "foo"
+        TOKEN_TREE@[47; 49)
+          L_PAREN@[47; 48) "("
+          R_PAREN@[48; 49) ")"
+        WHITESPACE@[49; 50) " "
+        TOKEN_TREE@[50; 53)
+          L_CURLY@[50; 51) "{"
+          WHITESPACE@[51; 52) "\n"
+          R_CURLY@[52; 53) "}"
+  WHITESPACE@[53; 54) "\n"
+error 53: expected R_PAREN
+error 53: expected R_BRACK
+error 53: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rs b/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.rs
new file mode 100644 (file)
index 0000000..8069c11
--- /dev/null
@@ -0,0 +1,7 @@
+struct S {
+    f: u32,
+    pub 92
+    + - *
+    pub x: u32,
+    z: f64,
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.txt b/crates/ra_syntax/test_data/parser/err/0006_named_field_recovery.txt
new file mode 100644 (file)
index 0000000..6143e68
--- /dev/null
@@ -0,0 +1,74 @@
+SOURCE_FILE@[0; 74)
+  STRUCT_DEF@[0; 73)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n    "
+      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) "\n    "
+      VISIBILITY@[27; 30)
+        PUB_KW@[27; 30) "pub"
+      WHITESPACE@[30; 31) " "
+      ERROR@[31; 33)
+        INT_NUMBER@[31; 33) "92"
+      WHITESPACE@[33; 38) "\n    "
+      ERROR@[38; 39)
+        PLUS@[38; 39) "+"
+      WHITESPACE@[39; 40) " "
+      ERROR@[40; 41)
+        MINUS@[40; 41) "-"
+      WHITESPACE@[41; 42) " "
+      ERROR@[42; 43)
+        STAR@[42; 43) "*"
+      WHITESPACE@[43; 48) "\n    "
+      NAMED_FIELD_DEF@[48; 58)
+        VISIBILITY@[48; 51)
+          PUB_KW@[48; 51) "pub"
+        WHITESPACE@[51; 52) " "
+        NAME@[52; 53)
+          IDENT@[52; 53) "x"
+        COLON@[53; 54) ":"
+        WHITESPACE@[54; 55) " "
+        PATH_TYPE@[55; 58)
+          PATH@[55; 58)
+            PATH_SEGMENT@[55; 58)
+              NAME_REF@[55; 58)
+                IDENT@[55; 58) "u32"
+      COMMA@[58; 59) ","
+      WHITESPACE@[59; 64) "\n    "
+      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) "\n"
+      R_CURLY@[72; 73) "}"
+  WHITESPACE@[73; 74) "\n"
+error 31: expected field declaration
+error 33: expected COMMA
+error 38: expected field declaration
+error 39: expected COMMA
+error 40: expected field declaration
+error 41: expected COMMA
+error 42: expected field declaration
+error 43: expected COMMA
diff --git a/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rs b/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.rs
new file mode 100644 (file)
index 0000000..dc869fb
--- /dev/null
@@ -0,0 +1,9 @@
+}
+
+struct S;
+
+}
+
+fn foo(){}
+
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt b/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt
new file mode 100644 (file)
index 0000000..b79e012
--- /dev/null
@@ -0,0 +1,32 @@
+SOURCE_FILE@[0; 31)
+  ERROR@[0; 1)
+    R_CURLY@[0; 1) "}"
+  WHITESPACE@[1; 3) "\n\n"
+  STRUCT_DEF@[3; 12)
+    STRUCT_KW@[3; 9) "struct"
+    WHITESPACE@[9; 10) " "
+    NAME@[10; 11)
+      IDENT@[10; 11) "S"
+    SEMI@[11; 12) ";"
+  WHITESPACE@[12; 14) "\n\n"
+  ERROR@[14; 15)
+    R_CURLY@[14; 15) "}"
+  WHITESPACE@[15; 17) "\n\n"
+  FN_DEF@[17; 27)
+    FN_KW@[17; 19) "fn"
+    WHITESPACE@[19; 20) " "
+    NAME@[20; 23)
+      IDENT@[20; 23) "foo"
+    PARAM_LIST@[23; 25)
+      L_PAREN@[23; 24) "("
+      R_PAREN@[24; 25) ")"
+    BLOCK@[25; 27)
+      L_CURLY@[25; 26) "{"
+      R_CURLY@[26; 27) "}"
+  WHITESPACE@[27; 29) "\n\n"
+  ERROR@[29; 30)
+    R_CURLY@[29; 30) "}"
+  WHITESPACE@[30; 31) "\n"
+error 0: unmatched `}`
+error 14: unmatched `}`
+error 29: unmatched `}`
diff --git a/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rs b/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.rs
new file mode 100644 (file)
index 0000000..9fcac19
--- /dev/null
@@ -0,0 +1,13 @@
+fn foo() {
+}
+
+bar() {
+    if true {
+        1
+    } else {
+        2 + 3
+    }
+}
+
+fn baz() {
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt b/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt
new file mode 100644 (file)
index 0000000..9a88715
--- /dev/null
@@ -0,0 +1,77 @@
+SOURCE_FILE@[0; 95)
+  FN_DEF@[0; 12)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 12)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) "\n"
+      R_CURLY@[11; 12) "}"
+  WHITESPACE@[12; 14) "\n\n"
+  MACRO_CALL@[14; 19)
+    PATH@[14; 17)
+      PATH_SEGMENT@[14; 17)
+        NAME_REF@[14; 17)
+          IDENT@[14; 17) "bar"
+    TOKEN_TREE@[17; 19)
+      L_PAREN@[17; 18) "("
+      R_PAREN@[18; 19) ")"
+  WHITESPACE@[19; 20) " "
+  ERROR@[20; 80)
+    L_CURLY@[20; 21) "{"
+    WHITESPACE@[21; 26) "\n    "
+    IF_EXPR@[26; 78)
+      IF_KW@[26; 28) "if"
+      WHITESPACE@[28; 29) " "
+      CONDITION@[29; 33)
+        LITERAL@[29; 33)
+          TRUE_KW@[29; 33) "true"
+      WHITESPACE@[33; 34) " "
+      BLOCK@[34; 51)
+        L_CURLY@[34; 35) "{"
+        WHITESPACE@[35; 44) "\n        "
+        LITERAL@[44; 45)
+          INT_NUMBER@[44; 45) "1"
+        WHITESPACE@[45; 50) "\n    "
+        R_CURLY@[50; 51) "}"
+      WHITESPACE@[51; 52) " "
+      ELSE_KW@[52; 56) "else"
+      WHITESPACE@[56; 57) " "
+      BLOCK@[57; 78)
+        L_CURLY@[57; 58) "{"
+        WHITESPACE@[58; 67) "\n        "
+        BIN_EXPR@[67; 72)
+          LITERAL@[67; 68)
+            INT_NUMBER@[67; 68) "2"
+          WHITESPACE@[68; 69) " "
+          PLUS@[69; 70) "+"
+          WHITESPACE@[70; 71) " "
+          LITERAL@[71; 72)
+            INT_NUMBER@[71; 72) "3"
+        WHITESPACE@[72; 77) "\n    "
+        R_CURLY@[77; 78) "}"
+    WHITESPACE@[78; 79) "\n"
+    R_CURLY@[79; 80) "}"
+  WHITESPACE@[80; 82) "\n\n"
+  FN_DEF@[82; 94)
+    FN_KW@[82; 84) "fn"
+    WHITESPACE@[84; 85) " "
+    NAME@[85; 88)
+      IDENT@[85; 88) "baz"
+    PARAM_LIST@[88; 90)
+      L_PAREN@[88; 89) "("
+      R_PAREN@[89; 90) ")"
+    WHITESPACE@[90; 91) " "
+    BLOCK@[91; 94)
+      L_CURLY@[91; 92) "{"
+      WHITESPACE@[92; 93) "\n"
+      R_CURLY@[93; 94) "}"
+  WHITESPACE@[94; 95) "\n"
+error 17: expected EXCL
+error 19: expected SEMI
+error 20: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rs b/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.rs
new file mode 100644 (file)
index 0000000..0dd30d0
--- /dev/null
@@ -0,0 +1,5 @@
+struct S<90 + 2> {
+    f: u32
+}
+
+struct T;
diff --git a/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.txt b/crates/ra_syntax/test_data/parser/err/0009_broken_struct_type_parameter.txt
new file mode 100644 (file)
index 0000000..e147d64
--- /dev/null
@@ -0,0 +1,58 @@
+SOURCE_FILE@[0; 43)
+  STRUCT_DEF@[0; 11)
+    STRUCT_KW@[0; 6) "struct"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 8)
+      IDENT@[7; 8) "S"
+    TYPE_PARAM_LIST@[8; 11)
+      L_ANGLE@[8; 9) "<"
+      ERROR@[9; 11)
+        INT_NUMBER@[9; 11) "90"
+  WHITESPACE@[11; 12) " "
+  ERROR@[12; 13)
+    PLUS@[12; 13) "+"
+  WHITESPACE@[13; 14) " "
+  ERROR@[14; 15)
+    INT_NUMBER@[14; 15) "2"
+  ERROR@[15; 16)
+    R_ANGLE@[15; 16) ">"
+  WHITESPACE@[16; 17) " "
+  ERROR@[17; 31)
+    L_CURLY@[17; 18) "{"
+    WHITESPACE@[18; 23) "\n    "
+    EXPR_STMT@[23; 24)
+      PATH_EXPR@[23; 24)
+        PATH@[23; 24)
+          PATH_SEGMENT@[23; 24)
+            NAME_REF@[23; 24)
+              IDENT@[23; 24) "f"
+    EXPR_STMT@[24; 25)
+      ERROR@[24; 25)
+        COLON@[24; 25) ":"
+    WHITESPACE@[25; 26) " "
+    PATH_EXPR@[26; 29)
+      PATH@[26; 29)
+        PATH_SEGMENT@[26; 29)
+          NAME_REF@[26; 29)
+            IDENT@[26; 29) "u32"
+    WHITESPACE@[29; 30) "\n"
+    R_CURLY@[30; 31) "}"
+  WHITESPACE@[31; 33) "\n\n"
+  STRUCT_DEF@[33; 42)
+    STRUCT_KW@[33; 39) "struct"
+    WHITESPACE@[39; 40) " "
+    NAME@[40; 41)
+      IDENT@[40; 41) "T"
+    SEMI@[41; 42) ";"
+  WHITESPACE@[42; 43) "\n"
+error 9: expected type parameter
+error 11: expected COMMA
+error 11: expected R_ANGLE
+error 11: expected `;`, `{`, or `(`
+error 12: expected an item
+error 14: expected an item
+error 15: expected an item
+error 17: expected an item
+error 24: expected SEMI
+error 24: expected expression
+error 25: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rs b/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.rs
new file mode 100644 (file)
index 0000000..9857752
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    || -> () unsafe { () };
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt b/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt
new file mode 100644 (file)
index 0000000..c46809f
--- /dev/null
@@ -0,0 +1,42 @@
+SOURCE_FILE@[0; 42)
+  FN_DEF@[0; 41)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 41)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      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) ")"
+          WHITESPACE@[24; 25) " "
+          BLOCK_EXPR@[25; 38)
+            UNSAFE_KW@[25; 31) "unsafe"
+            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) "\n"
+      R_CURLY@[40; 41) "}"
+  WHITESPACE@[41; 42) "\n"
+error 24: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/err/0011_extern_struct.rs b/crates/ra_syntax/test_data/parser/err/0011_extern_struct.rs
new file mode 100644 (file)
index 0000000..c1bd0a2
--- /dev/null
@@ -0,0 +1 @@
+extern struct Foo;
diff --git a/crates/ra_syntax/test_data/parser/err/0011_extern_struct.txt b/crates/ra_syntax/test_data/parser/err/0011_extern_struct.txt
new file mode 100644 (file)
index 0000000..381147d
--- /dev/null
@@ -0,0 +1,13 @@
+SOURCE_FILE@[0; 19)
+  ERROR@[0; 6)
+    ABI@[0; 6)
+      EXTERN_KW@[0; 6) "extern"
+  WHITESPACE@[6; 7) " "
+  STRUCT_DEF@[7; 18)
+    STRUCT_KW@[7; 13) "struct"
+    WHITESPACE@[13; 14) " "
+    NAME@[14; 17)
+      IDENT@[14; 17) "Foo"
+    SEMI@[17; 18) ";"
+  WHITESPACE@[18; 19) "\n"
+error 6: expected existential, fn, trait or impl
diff --git a/crates/ra_syntax/test_data/parser/err/0012_broken_lambda.txt b/crates/ra_syntax/test_data/parser/err/0012_broken_lambda.txt
new file mode 100644 (file)
index 0000000..12ebc2a
--- /dev/null
@@ -0,0 +1,387 @@
+SOURCE_FILE@[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/test_data/parser/err/0013_invalid_type.rs b/crates/ra_syntax/test_data/parser/err/0013_invalid_type.rs
new file mode 100644 (file)
index 0000000..20dde3b
--- /dev/null
@@ -0,0 +1,7 @@
+pub struct Cache(
+    RefCell<HashMap<
+        TypeId,
+        Box<@ Any>,
+    >>
+);
+
diff --git a/crates/ra_syntax/test_data/parser/err/0013_invalid_type.txt b/crates/ra_syntax/test_data/parser/err/0013_invalid_type.txt
new file mode 100644 (file)
index 0000000..bef286b
--- /dev/null
@@ -0,0 +1,89 @@
+SOURCE_FILE@[0; 86)
+  STRUCT_DEF@[0; 72)
+    VISIBILITY@[0; 3)
+      PUB_KW@[0; 3) "pub"
+    WHITESPACE@[3; 4) " "
+    STRUCT_KW@[4; 10) "struct"
+    WHITESPACE@[10; 11) " "
+    NAME@[11; 16)
+      IDENT@[11; 16) "Cache"
+    POS_FIELD_DEF_LIST@[16; 72)
+      L_PAREN@[16; 17) "("
+      WHITESPACE@[17; 22) "\n    "
+      POS_FIELD_DEF@[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) "\n        "
+                          TYPE_ARG@[47; 53)
+                            PATH_TYPE@[47; 53)
+                              PATH@[47; 53)
+                                PATH_SEGMENT@[47; 53)
+                                  NAME_REF@[47; 53)
+                                    IDENT@[47; 53) "TypeId"
+                          COMMA@[53; 54) ","
+                          WHITESPACE@[54; 63) "\n        "
+                          TYPE_ARG@[63; 68)
+                            PATH_TYPE@[63; 68)
+                              PATH@[63; 68)
+                                PATH_SEGMENT@[63; 68)
+                                  NAME_REF@[63; 66)
+                                    IDENT@[63; 66) "Box"
+                                  TYPE_ARG_LIST@[66; 68)
+                                    L_ANGLE@[66; 67) "<"
+                                    TYPE_ARG@[67; 68)
+                                      ERROR@[67; 68)
+                                        AT@[67; 68) "@"
+      WHITESPACE@[68; 69) " "
+      POS_FIELD_DEF@[69; 72)
+        PATH_TYPE@[69; 72)
+          PATH@[69; 72)
+            PATH_SEGMENT@[69; 72)
+              NAME_REF@[69; 72)
+                IDENT@[69; 72) "Any"
+      ERROR@[72; 72)
+  ERROR@[72; 73)
+    R_ANGLE@[72; 73) ">"
+  ERROR@[73; 74)
+    COMMA@[73; 74) ","
+  WHITESPACE@[74; 79) "\n    "
+  ERROR@[79; 80)
+    R_ANGLE@[79; 80) ">"
+  ERROR@[80; 81)
+    R_ANGLE@[80; 81) ">"
+  WHITESPACE@[81; 82) "\n"
+  ERROR@[82; 83)
+    R_PAREN@[82; 83) ")"
+  ERROR@[83; 84)
+    SEMI@[83; 84) ";"
+  WHITESPACE@[84; 86) "\n\n"
+error 67: expected type
+error 68: expected COMMA
+error 68: expected R_ANGLE
+error 68: expected COMMA
+error 68: expected R_ANGLE
+error 68: expected COMMA
+error 68: expected R_ANGLE
+error 68: expected COMMA
+error 72: expected COMMA
+error 72: expected a type
+error 72: expected R_PAREN
+error 72: expected SEMI
+error 72: expected an item
+error 73: expected an item
+error 79: expected an item
+error 80: expected an item
+error 82: expected an item
+error 83: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rs b/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.rs
new file mode 100644 (file)
index 0000000..75c1d2f
--- /dev/null
@@ -0,0 +1 @@
+fn foo<T>() where T {}
diff --git a/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt b/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt
new file mode 100644 (file)
index 0000000..2f08785
--- /dev/null
@@ -0,0 +1,31 @@
+SOURCE_FILE@[0; 23)
+  FN_DEF@[0; 22)
+    FN_KW@[0; 2) "fn"
+    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) "where"
+      WHITESPACE@[17; 18) " "
+      WHERE_PRED@[18; 19)
+        PATH_TYPE@[18; 19)
+          PATH@[18; 19)
+            PATH_SEGMENT@[18; 19)
+              NAME_REF@[18; 19)
+                IDENT@[18; 19) "T"
+    WHITESPACE@[19; 20) " "
+    BLOCK@[20; 22)
+      L_CURLY@[20; 21) "{"
+      R_CURLY@[21; 22) "}"
+  WHITESPACE@[22; 23) "\n"
+error 19: expected colon
diff --git a/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rs b/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.rs
new file mode 100644 (file)
index 0000000..156e702
--- /dev/null
@@ -0,0 +1,2 @@
+fn foo(}) {
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.txt b/crates/ra_syntax/test_data/parser/err/0015_curly_in_params.txt
new file mode 100644 (file)
index 0000000..23ca0c4
--- /dev/null
@@ -0,0 +1,24 @@
+SOURCE_FILE@[0; 14)
+  FN_DEF@[0; 7)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 7)
+      L_PAREN@[6; 7) "("
+  ERROR@[7; 8)
+    R_CURLY@[7; 8) "}"
+  ERROR@[8; 9)
+    R_PAREN@[8; 9) ")"
+  WHITESPACE@[9; 10) " "
+  ERROR@[10; 13)
+    L_CURLY@[10; 11) "{"
+    WHITESPACE@[11; 12) "\n"
+    R_CURLY@[12; 13) "}"
+  WHITESPACE@[13; 14) "\n"
+error 7: expected value parameter
+error 7: expected R_PAREN
+error 7: expected a block
+error 7: unmatched `}`
+error 8: expected an item
+error 10: expected an item
diff --git a/crates/ra_syntax/test_data/parser/err/0016_missing_semi.rs b/crates/ra_syntax/test_data/parser/err/0016_missing_semi.rs
new file mode 100644 (file)
index 0000000..9ae8576
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    foo(
+        1, 2
+    )
+    return 92;
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt b/crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt
new file mode 100644 (file)
index 0000000..97e64de
--- /dev/null
@@ -0,0 +1,43 @@
+SOURCE_FILE@[0; 56)
+  FN_DEF@[0; 55)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 55)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 38)
+        CALL_EXPR@[15; 38)
+          PATH_EXPR@[15; 18)
+            PATH@[15; 18)
+              PATH_SEGMENT@[15; 18)
+                NAME_REF@[15; 18)
+                  IDENT@[15; 18) "foo"
+          ARG_LIST@[18; 38)
+            L_PAREN@[18; 19) "("
+            WHITESPACE@[19; 28) "\n        "
+            LITERAL@[28; 29)
+              INT_NUMBER@[28; 29) "1"
+            COMMA@[29; 30) ","
+            WHITESPACE@[30; 31) " "
+            LITERAL@[31; 32)
+              INT_NUMBER@[31; 32) "2"
+            WHITESPACE@[32; 37) "\n    "
+            R_PAREN@[37; 38) ")"
+      WHITESPACE@[38; 43) "\n    "
+      EXPR_STMT@[43; 53)
+        RETURN_EXPR@[43; 52)
+          RETURN_KW@[43; 49) "return"
+          WHITESPACE@[49; 50) " "
+          LITERAL@[50; 52)
+            INT_NUMBER@[50; 52) "92"
+        SEMI@[52; 53) ";"
+      WHITESPACE@[53; 54) "\n"
+      R_CURLY@[54; 55) "}"
+  WHITESPACE@[55; 56) "\n"
+error 38: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rs b/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.rs
new file mode 100644 (file)
index 0000000..17bd497
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo(foo: i32) {
+    let bar = 92;
+    1 +
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt b/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt
new file mode 100644 (file)
index 0000000..c18e209
--- /dev/null
@@ -0,0 +1,46 @@
+SOURCE_FILE@[0; 47)
+  FN_DEF@[0; 46)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 16)
+      L_PAREN@[6; 7) "("
+      PARAM@[7; 15)
+        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) "\n    "
+      LET_STMT@[23; 36)
+        LET_KW@[23; 26) "let"
+        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) "\n    "
+      BIN_EXPR@[41; 44)
+        LITERAL@[41; 42)
+          INT_NUMBER@[41; 42) "1"
+        WHITESPACE@[42; 43) " "
+        PLUS@[43; 44) "+"
+      WHITESPACE@[44; 45) "\n"
+      R_CURLY@[45; 46) "}"
+  WHITESPACE@[46; 47) "\n"
+error 44: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rs b/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.rs
new file mode 100644 (file)
index 0000000..fe60400
--- /dev/null
@@ -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/test_data/parser/err/0018_incomplete_fn.txt b/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.txt
new file mode 100644 (file)
index 0000000..51def2d
--- /dev/null
@@ -0,0 +1,131 @@
+SOURCE_FILE@[0; 183)
+  IMPL_BLOCK@[0; 182)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 13)
+      PATH@[5; 13)
+        PATH_SEGMENT@[5; 13)
+          NAME_REF@[5; 13)
+            IDENT@[5; 13) "FnScopes"
+    WHITESPACE@[13; 14) " "
+    ITEM_LIST@[14; 182)
+      L_CURLY@[14; 15) "{"
+      WHITESPACE@[15; 20) "\n    "
+      FN_DEF@[20; 161)
+        FN_KW@[20; 22) "fn"
+        WHITESPACE@[22; 23) " "
+        NAME@[23; 32)
+          IDENT@[23; 32) "new_scope"
+        PARAM_LIST@[32; 35)
+          L_PAREN@[32; 33) "("
+          PARAM@[33; 34)
+            REF_PAT@[33; 34)
+              AMP@[33; 34) "&"
+          R_PAREN@[34; 35) ")"
+        WHITESPACE@[35; 36) " "
+        RET_TYPE@[36; 46)
+          THIN_ARROW@[36; 38) "->"
+          WHITESPACE@[38; 39) " "
+          PATH_TYPE@[39; 46)
+            PATH@[39; 46)
+              PATH_SEGMENT@[39; 46)
+                NAME_REF@[39; 46)
+                  IDENT@[39; 46) "ScopeId"
+        WHITESPACE@[46; 47) " "
+        BLOCK@[47; 161)
+          L_CURLY@[47; 48) "{"
+          WHITESPACE@[48; 57) "\n        "
+          LET_STMT@[57; 85)
+            LET_KW@[57; 60) "let"
+            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) "self"
+                DOT@[71; 72) "."
+                NAME_REF@[72; 78)
+                  IDENT@[72; 78) "scopes"
+              DOT@[78; 79) "."
+              NAME_REF@[79; 82)
+                IDENT@[79; 82) "len"
+              ARG_LIST@[82; 84)
+                L_PAREN@[82; 83) "("
+                R_PAREN@[83; 84) ")"
+            SEMI@[84; 85) ";"
+          WHITESPACE@[85; 94) "\n        "
+          METHOD_CALL_EXPR@[94; 155)
+            FIELD_EXPR@[94; 105)
+              PATH_EXPR@[94; 98)
+                PATH@[94; 98)
+                  PATH_SEGMENT@[94; 98)
+                    SELF_KW@[94; 98) "self"
+              DOT@[98; 99) "."
+              NAME_REF@[99; 105)
+                IDENT@[99; 105) "scopes"
+            DOT@[105; 106) "."
+            NAME_REF@[106; 110)
+              IDENT@[106; 110) "push"
+            ARG_LIST@[110; 155)
+              L_PAREN@[110; 111) "("
+              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) "\n    "
+          R_CURLY@[160; 161) "}"
+      WHITESPACE@[161; 167) "\n\n    "
+      FN_DEF@[167; 180)
+        FN_KW@[167; 169) "fn"
+        WHITESPACE@[169; 170) " "
+        NAME@[170; 180)
+          IDENT@[170; 180) "set_parent"
+      WHITESPACE@[180; 181) "\n"
+      R_CURLY@[181; 182) "}"
+  WHITESPACE@[182; 183) "\n"
+error 34: expected pattern
+error 34: expected COLON
+error 34: expected type
+error 180: expected function arguments
+error 180: expected a block
diff --git a/crates/ra_syntax/test_data/parser/err/0019_let_recover.rs b/crates/ra_syntax/test_data/parser/err/0019_let_recover.rs
new file mode 100644 (file)
index 0000000..48bf3d6
--- /dev/null
@@ -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/test_data/parser/err/0019_let_recover.txt b/crates/ra_syntax/test_data/parser/err/0019_let_recover.txt
new file mode 100644 (file)
index 0000000..b671024
--- /dev/null
@@ -0,0 +1,103 @@
+SOURCE_FILE@[0; 139)
+  FN_DEF@[0; 138)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 138)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 24)
+        LET_KW@[15; 18) "let"
+        WHITESPACE@[18; 19) " "
+        BIND_PAT@[19; 22)
+          NAME@[19; 22)
+            IDENT@[19; 22) "foo"
+        WHITESPACE@[22; 23) " "
+        EQ@[23; 24) "="
+      WHITESPACE@[24; 29) "\n    "
+      LET_STMT@[29; 41)
+        LET_KW@[29; 32) "let"
+        WHITESPACE@[32; 33) " "
+        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) "\n    "
+      LET_STMT@[46; 49)
+        LET_KW@[46; 49) "let"
+      WHITESPACE@[49; 54) "\n    "
+      LET_STMT@[54; 67)
+        LET_KW@[54; 57) "let"
+        WHITESPACE@[57; 58) " "
+        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) "\n    "
+      LET_STMT@[72; 75)
+        LET_KW@[72; 75) "let"
+      WHITESPACE@[75; 80) "\n    "
+      EXPR_STMT@[80; 90)
+        IF_EXPR@[80; 90)
+          IF_KW@[80; 82) "if"
+          WHITESPACE@[82; 83) " "
+          CONDITION@[83; 87)
+            LITERAL@[83; 87)
+              TRUE_KW@[83; 87) "true"
+          WHITESPACE@[87; 88) " "
+          BLOCK@[88; 90)
+            L_CURLY@[88; 89) "{"
+            R_CURLY@[89; 90) "}"
+      WHITESPACE@[90; 95) "\n    "
+      LET_STMT@[95; 98)
+        LET_KW@[95; 98) "let"
+      WHITESPACE@[98; 103) "\n    "
+      EXPR_STMT@[103; 116)
+        WHILE_EXPR@[103; 116)
+          WHILE_KW@[103; 108) "while"
+          WHITESPACE@[108; 109) " "
+          CONDITION@[109; 113)
+            LITERAL@[109; 113)
+              TRUE_KW@[109; 113) "true"
+          WHITESPACE@[113; 114) " "
+          BLOCK@[114; 116)
+            L_CURLY@[114; 115) "{"
+            R_CURLY@[115; 116) "}"
+      WHITESPACE@[116; 121) "\n    "
+      LET_STMT@[121; 124)
+        LET_KW@[121; 124) "let"
+      WHITESPACE@[124; 129) "\n    "
+      LOOP_EXPR@[129; 136)
+        LOOP_KW@[129; 133) "loop"
+        WHITESPACE@[133; 134) " "
+        BLOCK@[134; 136)
+          L_CURLY@[134; 135) "{"
+          R_CURLY@[135; 136) "}"
+      WHITESPACE@[136; 137) "\n"
+      R_CURLY@[137; 138) "}"
+  WHITESPACE@[138; 139) "\n"
+error 24: expected expression
+error 24: expected SEMI
+error 49: expected pattern
+error 49: expected SEMI
+error 75: expected pattern
+error 75: expected SEMI
+error 98: expected pattern
+error 98: expected SEMI
+error 124: expected pattern
+error 124: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0020_fn_recover.rs b/crates/ra_syntax/test_data/parser/err/0020_fn_recover.rs
new file mode 100644 (file)
index 0000000..3393b66
--- /dev/null
@@ -0,0 +1,3 @@
+fn
+
+fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt b/crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt
new file mode 100644 (file)
index 0000000..71c0140
--- /dev/null
@@ -0,0 +1,20 @@
+SOURCE_FILE@[0; 16)
+  FN_DEF@[0; 2)
+    FN_KW@[0; 2) "fn"
+  WHITESPACE@[2; 4) "\n\n"
+  FN_DEF@[4; 15)
+    FN_KW@[4; 6) "fn"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 10)
+      IDENT@[7; 10) "foo"
+    PARAM_LIST@[10; 12)
+      L_PAREN@[10; 11) "("
+      R_PAREN@[11; 12) ")"
+    WHITESPACE@[12; 13) " "
+    BLOCK@[13; 15)
+      L_CURLY@[13; 14) "{"
+      R_CURLY@[14; 15) "}"
+  WHITESPACE@[15; 16) "\n"
+error 2: expected a name
+error 2: expected function arguments
+error 2: expected a block
diff --git a/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rs b/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.rs
new file mode 100644 (file)
index 0000000..7a6c264
--- /dev/null
@@ -0,0 +1,2 @@
+fn foo(x: i32, y) {
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt b/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt
new file mode 100644 (file)
index 0000000..c125a0b
--- /dev/null
@@ -0,0 +1,34 @@
+SOURCE_FILE@[0; 22)
+  FN_DEF@[0; 21)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 17)
+      L_PAREN@[6; 7) "("
+      PARAM@[7; 13)
+        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"
+      R_PAREN@[16; 17) ")"
+    WHITESPACE@[17; 18) " "
+    BLOCK@[18; 21)
+      L_CURLY@[18; 19) "{"
+      WHITESPACE@[19; 20) "\n"
+      R_CURLY@[20; 21) "}"
+  WHITESPACE@[21; 22) "\n"
+error 16: expected COLON
+error 16: expected type
diff --git a/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rs b/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.rs
new file mode 100644 (file)
index 0000000..cd2d493
--- /dev/null
@@ -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/test_data/parser/err/0022_bad_exprs.txt b/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt
new file mode 100644 (file)
index 0000000..32b53bb
--- /dev/null
@@ -0,0 +1,189 @@
+SOURCE_FILE@[0; 112)
+  FN_DEF@[0; 33)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 4)
+      IDENT@[3; 4) "a"
+    PARAM_LIST@[4; 6)
+      L_PAREN@[4; 5) "("
+      R_PAREN@[5; 6) ")"
+    WHITESPACE@[6; 7) " "
+    BLOCK@[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) ","
+      WHITESPACE@[15; 16) " "
+      EXPR_STMT@[16; 17)
+        ERROR@[16; 17)
+          AT@[16; 17) "@"
+      EXPR_STMT@[17; 18)
+        ERROR@[17; 18)
+          COMMA@[17; 18) ","
+      WHITESPACE@[18; 19) " "
+      STRUCT_DEF@[19; 26)
+        STRUCT_KW@[19; 25) "struct"
+        ERROR@[25; 26)
+          COMMA@[25; 26) ","
+      WHITESPACE@[26; 27) " "
+      LET_STMT@[27; 31)
+        LET_KW@[27; 30) "let"
+        ERROR@[30; 31)
+          R_BRACK@[30; 31) "]"
+      WHITESPACE@[31; 32) " "
+      R_CURLY@[32; 33) "}"
+  WHITESPACE@[33; 34) "\n"
+  FN_DEF@[34; 68)
+    FN_KW@[34; 36) "fn"
+    WHITESPACE@[36; 37) " "
+    NAME@[37; 38)
+      IDENT@[37; 38) "b"
+    PARAM_LIST@[38; 40)
+      L_PAREN@[38; 39) "("
+      R_PAREN@[39; 40) ")"
+    WHITESPACE@[40; 41) " "
+    BLOCK@[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) ","
+      WHITESPACE@[52; 53) " "
+      EXPR_STMT@[53; 54)
+        ERROR@[53; 54)
+          AT@[53; 54) "@"
+      EXPR_STMT@[54; 55)
+        ERROR@[54; 55)
+          COMMA@[54; 55) ","
+      WHITESPACE@[55; 56) " "
+      IMPL_BLOCK@[56; 60)
+        IMPL_KW@[56; 60) "impl"
+      EXPR_STMT@[60; 61)
+        ERROR@[60; 61)
+          COMMA@[60; 61) ","
+      WHITESPACE@[61; 62) " "
+      LET_STMT@[62; 65)
+        LET_KW@[62; 65) "let"
+      ERROR@[65; 66)
+        R_PAREN@[65; 66) ")"
+      WHITESPACE@[66; 67) " "
+      R_CURLY@[67; 68) "}"
+  WHITESPACE@[68; 69) "\n"
+  FN_DEF@[69; 111)
+    FN_KW@[69; 71) "fn"
+    WHITESPACE@[71; 72) " "
+    NAME@[72; 73)
+      IDENT@[72; 73) "c"
+    PARAM_LIST@[73; 75)
+      L_PAREN@[73; 74) "("
+      R_PAREN@[74; 75) ")"
+    WHITESPACE@[75; 76) " "
+    BLOCK@[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) ","
+      WHITESPACE@[91; 92) " "
+      EXPR_STMT@[92; 93)
+        ERROR@[92; 93)
+          AT@[92; 93) "@"
+      EXPR_STMT@[93; 94)
+        ERROR@[93; 94)
+          COMMA@[93; 94) ","
+      WHITESPACE@[94; 95) " "
+      EXPR_STMT@[95; 96)
+        ERROR@[95; 96)
+          R_BRACK@[95; 96) "]"
+      EXPR_STMT@[96; 97)
+        ERROR@[96; 97)
+          COMMA@[96; 97) ","
+      WHITESPACE@[97; 98) " "
+      TRAIT_DEF@[98; 104)
+        TRAIT_KW@[98; 103) "trait"
+        ERROR@[103; 104)
+          COMMA@[103; 104) ","
+      WHITESPACE@[104; 105) " "
+      LET_STMT@[105; 108)
+        LET_KW@[105; 108) "let"
+      ERROR@[108; 109)
+        R_PAREN@[108; 109) ")"
+      WHITESPACE@[109; 110) " "
+      R_CURLY@[110; 111) "}"
+  WHITESPACE@[111; 112) "\n"
+error 15: expected expression
+error 15: expected R_BRACK
+error 15: expected SEMI
+error 16: expected expression
+error 17: expected SEMI
+error 17: expected expression
+error 18: expected SEMI
+error 25: expected a name
+error 26: expected `;`, `{`, or `(`
+error 30: expected pattern
+error 31: expected SEMI
+error 52: expected expression
+error 52: expected SEMI
+error 53: expected expression
+error 54: expected SEMI
+error 54: expected expression
+error 55: expected SEMI
+error 60: expected type
+error 60: expected `{`
+error 60: expected expression
+error 61: expected SEMI
+error 65: expected pattern
+error 65: expected SEMI
+error 65: expected expression
+error 91: expected expression
+error 91: expected SEMI
+error 92: expected expression
+error 93: expected SEMI
+error 93: expected expression
+error 94: expected SEMI
+error 95: expected expression
+error 96: expected SEMI
+error 96: expected expression
+error 97: expected SEMI
+error 103: expected a name
+error 104: expected `{`
+error 108: expected pattern
+error 108: expected SEMI
+error 108: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rs b/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.rs
new file mode 100644 (file)
index 0000000..0206d56
--- /dev/null
@@ -0,0 +1,5 @@
+fn main() {
+    foo! (
+        bar, "baz", 1, 2.0
+    } //~ ERROR incorrect close delimiter
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt b/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt
new file mode 100644 (file)
index 0000000..f2515fa
--- /dev/null
@@ -0,0 +1,43 @@
+SOURCE_FILE@[0; 94)
+  FN_DEF@[0; 55)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 55)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      MACRO_CALL@[16; 49)
+        PATH@[16; 19)
+          PATH_SEGMENT@[16; 19)
+            NAME_REF@[16; 19)
+              IDENT@[16; 19) "foo"
+        EXCL@[19; 20) "!"
+        WHITESPACE@[20; 21) " "
+        TOKEN_TREE@[21; 49)
+          L_PAREN@[21; 22) "("
+          WHITESPACE@[22; 31) "\n        "
+          IDENT@[31; 34) "bar"
+          COMMA@[34; 35) ","
+          WHITESPACE@[35; 36) " "
+          STRING@[36; 41) "\"baz\""
+          COMMA@[41; 42) ","
+          WHITESPACE@[42; 43) " "
+          INT_NUMBER@[43; 44) "1"
+          COMMA@[44; 45) ","
+          WHITESPACE@[45; 46) " "
+          FLOAT_NUMBER@[46; 49) "2.0"
+      WHITESPACE@[49; 54) "\n    "
+      R_CURLY@[54; 55) "}"
+  WHITESPACE@[55; 56) " "
+  COMMENT@[56; 91) "//~ ERROR incorrect c ..."
+  WHITESPACE@[91; 92) "\n"
+  ERROR@[92; 93)
+    R_CURLY@[92; 93) "}"
+  WHITESPACE@[93; 94) "\n"
+error 49: unmatched `}`
+error 92: unmatched `}`
diff --git a/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rs b/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.rs
new file mode 100644 (file)
index 0000000..6c2e95c
--- /dev/null
@@ -0,0 +1,7 @@
+fn f<T: (Copy) + (?Sized) + (for<'a> 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/test_data/parser/err/0024_many_type_parens.txt b/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.txt
new file mode 100644 (file)
index 0000000..faf0fe4
--- /dev/null
@@ -0,0 +1,324 @@
+SOURCE_FILE@[0; 240)
+  FN_DEF@[0; 53)
+    FN_KW@[0; 2) "fn"
+    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) " "
+        TYPE_BOUND_LIST@[8; 47)
+          TYPE_BOUND@[8; 14)
+            L_PAREN@[8; 9) "("
+            PATH_TYPE@[9; 13)
+              PATH@[9; 13)
+                PATH_SEGMENT@[9; 13)
+                  NAME_REF@[9; 13)
+                    IDENT@[9; 13) "Copy"
+            R_PAREN@[13; 14) ")"
+          WHITESPACE@[14; 15) " "
+          PLUS@[15; 16) "+"
+          WHITESPACE@[16; 17) " "
+          TYPE_BOUND@[17; 25)
+            L_PAREN@[17; 18) "("
+            QUESTION@[18; 19) "?"
+            PATH_TYPE@[19; 24)
+              PATH@[19; 24)
+                PATH_SEGMENT@[19; 24)
+                  NAME_REF@[19; 24)
+                    IDENT@[19; 24) "Sized"
+            R_PAREN@[24; 25) ")"
+          WHITESPACE@[25; 26) " "
+          PLUS@[26; 27) "+"
+          WHITESPACE@[27; 28) " "
+          TYPE_BOUND@[28; 47)
+            L_PAREN@[28; 29) "("
+            FOR_TYPE@[29; 46)
+              FOR_KW@[29; 32) "for"
+              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) "\n\n"
+  FN_DEF@[55; 239)
+    FN_KW@[55; 57) "fn"
+    WHITESPACE@[57; 58) " "
+    NAME@[58; 62)
+      IDENT@[58; 62) "main"
+    PARAM_LIST@[62; 64)
+      L_PAREN@[62; 63) "("
+      R_PAREN@[63; 64) ")"
+    WHITESPACE@[64; 65) " "
+    BLOCK@[65; 239)
+      L_CURLY@[65; 66) "{"
+      WHITESPACE@[66; 71) "\n    "
+      LET_STMT@[71; 121)
+        LET_KW@[71; 74) "let"
+        WHITESPACE@[74; 75) " "
+        PLACEHOLDER_PAT@[75; 76)
+          UNDERSCORE@[75; 76) "_"
+        COLON@[76; 77) ":"
+        WHITESPACE@[77; 78) " "
+        DYN_TRAIT_TYPE@[78; 121)
+          TYPE_BOUND_LIST@[78; 121)
+            TYPE_BOUND@[78; 88)
+              PATH_TYPE@[78; 88)
+                PATH@[78; 88)
+                  PATH_SEGMENT@[78; 88)
+                    NAME_REF@[78; 81)
+                      IDENT@[78; 81) "Box"
+                    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) ")"
+            WHITESPACE@[88; 89) " "
+            PLUS@[89; 90) "+"
+            WHITESPACE@[90; 91) " "
+            TYPE_BOUND@[91; 99)
+              L_PAREN@[91; 92) "("
+              QUESTION@[92; 93) "?"
+              PATH_TYPE@[93; 98)
+                PATH@[93; 98)
+                  PATH_SEGMENT@[93; 98)
+                    NAME_REF@[93; 98)
+                      IDENT@[93; 98) "Sized"
+              R_PAREN@[98; 99) ")"
+            WHITESPACE@[99; 100) " "
+            PLUS@[100; 101) "+"
+            WHITESPACE@[101; 102) " "
+            TYPE_BOUND@[102; 121)
+              L_PAREN@[102; 103) "("
+              FOR_TYPE@[103; 120)
+                FOR_KW@[103; 106) "for"
+                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) ")"
+      EXPR_STMT@[121; 123)
+        ERROR@[121; 122)
+          R_ANGLE@[121; 122) ">"
+        SEMI@[122; 123) ";"
+      WHITESPACE@[123; 128) "\n    "
+      LET_STMT@[128; 141)
+        LET_KW@[128; 131) "let"
+        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) "("
+                    ERROR@[140; 141)
+                      QUESTION@[140; 141) "?"
+      EXPR_STMT@[141; 146)
+        PATH_EXPR@[141; 146)
+          PATH@[141; 146)
+            PATH_SEGMENT@[141; 146)
+              NAME_REF@[141; 146)
+                IDENT@[141; 146) "Sized"
+      EXPR_STMT@[146; 147)
+        ERROR@[146; 147)
+          R_PAREN@[146; 147) ")"
+      WHITESPACE@[147; 148) " "
+      EXPR_STMT@[148; 149)
+        ERROR@[148; 149)
+          PLUS@[148; 149) "+"
+      WHITESPACE@[149; 150) " "
+      EXPR_STMT@[150; 151)
+        PAREN_EXPR@[150; 151)
+          L_PAREN@[150; 151) "("
+      EXPR_STMT@[151; 157)
+        FOR_EXPR@[151; 157)
+          FOR_KW@[151; 154) "for"
+          ERROR@[154; 155)
+            L_ANGLE@[154; 155) "<"
+          ERROR@[155; 157)
+            LIFETIME@[155; 157) "\'a"
+      EXPR_STMT@[157; 158)
+        ERROR@[157; 158)
+          R_ANGLE@[157; 158) ">"
+      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) "<"
+                ERROR@[165; 167)
+                  LIFETIME@[165; 167) "\'a"
+              R_ANGLE@[167; 168) ">"
+              ERROR@[168; 169)
+                R_PAREN@[168; 169) ")"
+            WHITESPACE@[169; 170) " "
+            PLUS@[170; 171) "+"
+            WHITESPACE@[171; 172) " "
+            PAREN_EXPR@[172; 178)
+              L_PAREN@[172; 173) "("
+              PATH_EXPR@[173; 177)
+                PATH@[173; 177)
+                  PATH_SEGMENT@[173; 177)
+                    NAME_REF@[173; 177)
+                      IDENT@[173; 177) "Copy"
+              R_PAREN@[177; 178) ")"
+          R_ANGLE@[178; 179) ">"
+          ERROR@[179; 180)
+            SEMI@[179; 180) ";"
+      WHITESPACE@[180; 185) "\n    "
+      LET_STMT@[185; 235)
+        LET_KW@[185; 188) "let"
+        WHITESPACE@[188; 189) " "
+        PLACEHOLDER_PAT@[189; 190)
+          UNDERSCORE@[189; 190) "_"
+        COLON@[190; 191) ":"
+        WHITESPACE@[191; 192) " "
+        DYN_TRAIT_TYPE@[192; 235)
+          TYPE_BOUND_LIST@[192; 235)
+            TYPE_BOUND@[192; 215)
+              PATH_TYPE@[192; 215)
+                PATH@[192; 215)
+                  PATH_SEGMENT@[192; 215)
+                    NAME_REF@[192; 195)
+                      IDENT@[192; 195) "Box"
+                    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) "for"
+                            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) ")"
+            WHITESPACE@[215; 216) " "
+            PLUS@[216; 217) "+"
+            WHITESPACE@[217; 218) " "
+            TYPE_BOUND@[218; 224)
+              L_PAREN@[218; 219) "("
+              PATH_TYPE@[219; 223)
+                PATH@[219; 223)
+                  PATH_SEGMENT@[219; 223)
+                    NAME_REF@[219; 223)
+                      IDENT@[219; 223) "Copy"
+              R_PAREN@[223; 224) ")"
+            WHITESPACE@[224; 225) " "
+            PLUS@[225; 226) "+"
+            WHITESPACE@[226; 227) " "
+            TYPE_BOUND@[227; 235)
+              L_PAREN@[227; 228) "("
+              QUESTION@[228; 229) "?"
+              PATH_TYPE@[229; 234)
+                PATH@[229; 234)
+                  PATH_SEGMENT@[229; 234)
+                    NAME_REF@[229; 234)
+                      IDENT@[229; 234) "Sized"
+              R_PAREN@[234; 235) ")"
+      EXPR_STMT@[235; 237)
+        ERROR@[235; 236)
+          R_ANGLE@[235; 236) ">"
+        SEMI@[236; 237) ";"
+      WHITESPACE@[237; 238) "\n"
+      R_CURLY@[238; 239) "}"
+  WHITESPACE@[239; 240) "\n"
+error 88: expected COMMA
+error 88: expected R_ANGLE
+error 121: expected SEMI
+error 121: expected expression
+error 140: expected type
+error 141: expected R_PAREN
+error 141: expected COMMA
+error 141: expected R_ANGLE
+error 141: expected SEMI
+error 146: expected SEMI
+error 146: expected expression
+error 147: expected SEMI
+error 148: expected expression
+error 149: expected SEMI
+error 151: expected expression
+error 151: expected R_PAREN
+error 151: expected SEMI
+error 154: expected pattern
+error 155: expected IN_KW
+error 155: expected expression
+error 157: expected a block
+error 157: expected expression
+error 158: expected SEMI
+error 165: expected expression
+error 168: expected expression
+error 179: expected expression
+error 180: expected SEMI
+error 215: expected COMMA
+error 215: expected R_ANGLE
+error 235: expected SEMI
+error 235: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0025_nope.rs b/crates/ra_syntax/test_data/parser/err/0025_nope.rs
new file mode 100644 (file)
index 0000000..28726ed
--- /dev/null
@@ -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/test_data/parser/err/0025_nope.txt b/crates/ra_syntax/test_data/parser/err/0025_nope.txt
new file mode 100644 (file)
index 0000000..0a3952d
--- /dev/null
@@ -0,0 +1,203 @@
+SOURCE_FILE@[0; 575)
+  FN_DEF@[0; 574)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 574)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      ENUM_DEF@[16; 152)
+        ENUM_KW@[16; 20) "enum"
+        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) "\n        "
+          ENUM_VARIANT@[36; 40)
+            NAME@[36; 40)
+              IDENT@[36; 40) "Var1"
+          COMMA@[40; 41) ","
+          WHITESPACE@[41; 50) "\n        "
+          ENUM_VARIANT@[50; 62)
+            NAME@[50; 54)
+              IDENT@[50; 54) "Var2"
+            POS_FIELD_DEF_LIST@[54; 62)
+              L_PAREN@[54; 55) "("
+              POS_FIELD_DEF@[55; 61)
+                PATH_TYPE@[55; 61)
+                  PATH@[55; 61)
+                    PATH_SEGMENT@[55; 61)
+                      NAME_REF@[55; 61)
+                        IDENT@[55; 61) "String"
+              R_PAREN@[61; 62) ")"
+          COMMA@[62; 63) ","
+          WHITESPACE@[63; 72) "\n        "
+          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) "\n            "
+              NAMED_FIELD_DEF@[91; 95)
+                NAME@[91; 94)
+                  IDENT@[91; 94) "abc"
+                COLON@[94; 95) ":"
+              WHITESPACE@[95; 96) " "
+              ERROR@[96; 98)
+                L_CURLY@[96; 97) "{"
+                R_CURLY@[97; 98) "}"
+              ERROR@[98; 99)
+                COMMA@[98; 99) ","
+              WHITESPACE@[99; 100) " "
+              COMMENT@[100; 135) "//~ ERROR: expected t ..."
+              WHITESPACE@[135; 144) "\n        "
+              R_CURLY@[144; 145) "}"
+          COMMA@[145; 146) ","
+          WHITESPACE@[146; 151) "\n    "
+          R_CURLY@[151; 152) "}"
+      WHITESPACE@[152; 158) "\n\n    "
+      COMMENT@[158; 171) "// recover..."
+      WHITESPACE@[171; 176) "\n    "
+      LET_STMT@[176; 186)
+        LET_KW@[176; 179) "let"
+        WHITESPACE@[179; 180) " "
+        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) "\n    "
+      ENUM_DEF@[191; 223)
+        ENUM_KW@[191; 195) "enum"
+        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) "\n        "
+          ENUM_VARIANT@[212; 216)
+            NAME@[212; 216)
+              IDENT@[212; 216) "Fine"
+          COMMA@[216; 217) ","
+          WHITESPACE@[217; 222) "\n    "
+          R_CURLY@[222; 223) "}"
+      WHITESPACE@[223; 229) "\n\n    "
+      ENUM_DEF@[229; 300)
+        ENUM_KW@[229; 233) "enum"
+        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) "\n        "
+          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) "\n            "
+              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) "\n        "
+              R_CURLY@[292; 293) "}"
+          COMMA@[293; 294) ","
+          WHITESPACE@[294; 299) "\n    "
+          R_CURLY@[299; 300) "}"
+      WHITESPACE@[300; 306) "\n\n    "
+      EXPR_STMT@[306; 459)
+        BLOCK_EXPR@[306; 459)
+          BLOCK@[306; 459)
+            L_CURLY@[306; 307) "{"
+            WHITESPACE@[307; 316) "\n        "
+            ENUM_DEF@[316; 453)
+              COMMENT@[316; 329) "// fail again"
+              WHITESPACE@[329; 338) "\n        "
+              ENUM_KW@[338; 342) "enum"
+              WHITESPACE@[342; 343) " "
+              NAME@[343; 348)
+                IDENT@[343; 348) "Test4"
+              WHITESPACE@[348; 349) " "
+              ENUM_VARIANT_LIST@[349; 453)
+                L_CURLY@[349; 350) "{"
+                WHITESPACE@[350; 363) "\n            "
+                ENUM_VARIANT@[363; 372)
+                  NAME@[363; 367)
+                    IDENT@[363; 367) "Nope"
+                  POS_FIELD_DEF_LIST@[367; 372)
+                    L_PAREN@[367; 368) "("
+                    POS_FIELD_DEF@[368; 371)
+                      PATH_TYPE@[368; 371)
+                        PATH@[368; 371)
+                          PATH_SEGMENT@[368; 371)
+                            NAME_REF@[368; 371)
+                              IDENT@[368; 371) "i32"
+                    WHITESPACE@[371; 372) " "
+                    ERROR@[372; 372)
+                ERROR@[372; 374)
+                  L_CURLY@[372; 373) "{"
+                  R_CURLY@[373; 374) "}"
+                ERROR@[374; 375)
+                  R_PAREN@[374; 375) ")"
+                WHITESPACE@[375; 376) " "
+                COMMENT@[376; 396) "//~ ERROR: found `{`"
+                WHITESPACE@[396; 422) "\n                     ..."
+                COMMENT@[422; 443) "//~^ ERROR: found `{`"
+                WHITESPACE@[443; 452) "\n        "
+                R_CURLY@[452; 453) "}"
+            WHITESPACE@[453; 458) "\n    "
+            R_CURLY@[458; 459) "}"
+      WHITESPACE@[459; 464) "\n    "
+      COMMENT@[464; 486) "// still recover later"
+      WHITESPACE@[486; 491) "\n    "
+      LET_STMT@[491; 510)
+        LET_KW@[491; 494) "let"
+        WHITESPACE@[494; 495) " "
+        BIND_PAT@[495; 505)
+          NAME@[495; 505)
+            IDENT@[495; 505) "bad_syntax"
+        WHITESPACE@[505; 506) " "
+        EQ@[506; 507) "="
+        WHITESPACE@[507; 508) " "
+        ERROR@[508; 509)
+          UNDERSCORE@[508; 509) "_"
+        SEMI@[509; 510) ";"
+      WHITESPACE@[510; 511) " "
+      COMMENT@[511; 572) "//~ ERROR: expected e ..."
+      WHITESPACE@[572; 573) "\n"
+      R_CURLY@[573; 574) "}"
+  WHITESPACE@[574; 575) "\n"
+error 95: expected type
+error 95: expected COMMA
+error 96: expected field
+error 98: expected field declaration
+error 371: expected COMMA
+error 372: expected a type
+error 372: expected R_PAREN
+error 372: expected COMMA
+error 372: expected enum variant
+error 374: expected enum variant
+error 508: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rs b/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.rs
new file mode 100644 (file)
index 0000000..829ca1c
--- /dev/null
@@ -0,0 +1,2 @@
+impl<T: Clone>
+impl<T> OnceCell<T> {}
diff --git a/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.txt b/crates/ra_syntax/test_data/parser/err/0026_imp_recovery.txt
new file mode 100644 (file)
index 0000000..d3da2f5
--- /dev/null
@@ -0,0 +1,49 @@
+SOURCE_FILE@[0; 38)
+  IMPL_BLOCK@[0; 14)
+    IMPL_KW@[0; 4) "impl"
+    TYPE_PARAM_LIST@[4; 14)
+      L_ANGLE@[4; 5) "<"
+      TYPE_PARAM@[5; 13)
+        NAME@[5; 6)
+          IDENT@[5; 6) "T"
+        COLON@[6; 7) ":"
+        WHITESPACE@[7; 8) " "
+        TYPE_BOUND_LIST@[8; 13)
+          TYPE_BOUND@[8; 13)
+            PATH_TYPE@[8; 13)
+              PATH@[8; 13)
+                PATH_SEGMENT@[8; 13)
+                  NAME_REF@[8; 13)
+                    IDENT@[8; 13) "Clone"
+      R_ANGLE@[13; 14) ">"
+  WHITESPACE@[14; 15) "\n"
+  IMPL_BLOCK@[15; 37)
+    IMPL_KW@[15; 19) "impl"
+    TYPE_PARAM_LIST@[19; 22)
+      L_ANGLE@[19; 20) "<"
+      TYPE_PARAM@[20; 21)
+        NAME@[20; 21)
+          IDENT@[20; 21) "T"
+      R_ANGLE@[21; 22) ">"
+    WHITESPACE@[22; 23) " "
+    PATH_TYPE@[23; 34)
+      PATH@[23; 34)
+        PATH_SEGMENT@[23; 34)
+          NAME_REF@[23; 31)
+            IDENT@[23; 31) "OnceCell"
+          TYPE_ARG_LIST@[31; 34)
+            L_ANGLE@[31; 32) "<"
+            TYPE_ARG@[32; 33)
+              PATH_TYPE@[32; 33)
+                PATH@[32; 33)
+                  PATH_SEGMENT@[32; 33)
+                    NAME_REF@[32; 33)
+                      IDENT@[32; 33) "T"
+            R_ANGLE@[33; 34) ">"
+    WHITESPACE@[34; 35) " "
+    ITEM_LIST@[35; 37)
+      L_CURLY@[35; 36) "{"
+      R_CURLY@[36; 37) "}"
+  WHITESPACE@[37; 38) "\n"
+error 14: expected trait or type
+error 14: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rs b/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.rs
new file mode 100644 (file)
index 0000000..2792c20
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo()
+    where for<'a>
+{}
diff --git a/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt b/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt
new file mode 100644 (file)
index 0000000..061e6fb
--- /dev/null
@@ -0,0 +1,28 @@
+SOURCE_FILE@[0; 30)
+  FN_DEF@[0; 29)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 13) "\n    "
+    WHERE_CLAUSE@[13; 26)
+      WHERE_KW@[13; 18) "where"
+      WHITESPACE@[18; 19) " "
+      WHERE_PRED@[19; 26)
+        FOR_TYPE@[19; 26)
+          FOR_KW@[19; 22) "for"
+          TYPE_PARAM_LIST@[22; 26)
+            L_ANGLE@[22; 23) "<"
+            LIFETIME_PARAM@[23; 25)
+              LIFETIME@[23; 25) "\'a"
+            R_ANGLE@[25; 26) ">"
+    WHITESPACE@[26; 27) "\n"
+    BLOCK@[27; 29)
+      L_CURLY@[27; 28) "{"
+      R_CURLY@[28; 29) "}"
+  WHITESPACE@[29; 30) "\n"
+error 26: expected a path
+error 26: expected colon
diff --git a/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.rs b/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.rs
new file mode 100644 (file)
index 0000000..781047b
--- /dev/null
@@ -0,0 +1,15 @@
+macro parse_use_trees($($s:expr),* $(,)*) {
+    vec![
+        $(parse_use_tree($s),)*
+    ]
+}
+
+#[test]
+fn test_use_tree_merge() {
+    macro test_merge([$($input:expr),* $(,)*], [$($output:expr),* $(,)*]) {
+        assert_eq!(
+            merge_use_trees(parse_use_trees!($($input,)*)),
+            parse_use_trees!($($output,)*),
+        );
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt b/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt
new file mode 100644 (file)
index 0000000..98bc562
--- /dev/null
@@ -0,0 +1,325 @@
+SOURCE_FILE@[0; 349)
+  MACRO_CALL@[0; 41)
+    PATH@[0; 5)
+      PATH_SEGMENT@[0; 5)
+        NAME_REF@[0; 5)
+          IDENT@[0; 5) "macro"
+    WHITESPACE@[5; 6) " "
+    NAME@[6; 21)
+      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) ")"
+  WHITESPACE@[41; 42) " "
+  ERROR@[42; 93)
+    L_CURLY@[42; 43) "{"
+    WHITESPACE@[43; 48) "\n    "
+    MACRO_CALL@[48; 91)
+      PATH@[48; 51)
+        PATH_SEGMENT@[48; 51)
+          NAME_REF@[48; 51)
+            IDENT@[48; 51) "vec"
+      EXCL@[51; 52) "!"
+      TOKEN_TREE@[52; 91)
+        L_BRACK@[52; 53) "["
+        WHITESPACE@[53; 62) "\n        "
+        DOLLAR@[62; 63) "$"
+        TOKEN_TREE@[63; 84)
+          L_PAREN@[63; 64) "("
+          IDENT@[64; 78) "parse_use_tree"
+          TOKEN_TREE@[78; 82)
+            L_PAREN@[78; 79) "("
+            DOLLAR@[79; 80) "$"
+            IDENT@[80; 81) "s"
+            R_PAREN@[81; 82) ")"
+          COMMA@[82; 83) ","
+          R_PAREN@[83; 84) ")"
+        STAR@[84; 85) "*"
+        WHITESPACE@[85; 90) "\n    "
+        R_BRACK@[90; 91) "]"
+    WHITESPACE@[91; 92) "\n"
+    R_CURLY@[92; 93) "}"
+  WHITESPACE@[93; 95) "\n\n"
+  FN_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) "\n"
+    FN_KW@[103; 105) "fn"
+    WHITESPACE@[105; 106) " "
+    NAME@[106; 125)
+      IDENT@[106; 125) "test_use_tree_merge"
+    PARAM_LIST@[125; 127)
+      L_PAREN@[125; 126) "("
+      R_PAREN@[126; 127) ")"
+    WHITESPACE@[127; 128) " "
+    BLOCK@[128; 348)
+      L_CURLY@[128; 129) "{"
+      WHITESPACE@[129; 134) "\n    "
+      EXPR_STMT@[134; 139)
+        PATH_EXPR@[134; 139)
+          PATH@[134; 139)
+            PATH_SEGMENT@[134; 139)
+              NAME_REF@[134; 139)
+                IDENT@[134; 139) "macro"
+      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) "["
+              ERROR@[152; 153)
+                DOLLAR@[152; 153) "$"
+              PAREN_EXPR@[153; 154)
+                L_PAREN@[153; 154) "("
+      EXPR_STMT@[154; 155)
+        ERROR@[154; 155)
+          DOLLAR@[154; 155) "$"
+      EXPR_STMT@[155; 160)
+        PATH_EXPR@[155; 160)
+          PATH@[155; 160)
+            PATH_SEGMENT@[155; 160)
+              NAME_REF@[155; 160)
+                IDENT@[155; 160) "input"
+      EXPR_STMT@[160; 161)
+        ERROR@[160; 161)
+          COLON@[160; 161) ":"
+      EXPR_STMT@[161; 165)
+        PATH_EXPR@[161; 165)
+          PATH@[161; 165)
+            PATH_SEGMENT@[161; 165)
+              NAME_REF@[161; 165)
+                IDENT@[161; 165) "expr"
+      EXPR_STMT@[165; 166)
+        ERROR@[165; 166)
+          R_PAREN@[165; 166) ")"
+      EXPR_STMT@[166; 167)
+        ERROR@[166; 167)
+          COMMA@[166; 167) ","
+      EXPR_STMT@[167; 170)
+        PREFIX_EXPR@[167; 170)
+          STAR@[167; 168) "*"
+          WHITESPACE@[168; 169) " "
+          ERROR@[169; 170)
+            DOLLAR@[169; 170) "$"
+      EXPR_STMT@[170; 171)
+        PAREN_EXPR@[170; 171)
+          L_PAREN@[170; 171) "("
+      EXPR_STMT@[171; 172)
+        ERROR@[171; 172)
+          COMMA@[171; 172) ","
+      EXPR_STMT@[172; 173)
+        ERROR@[172; 173)
+          R_PAREN@[172; 173) ")"
+      EXPR_STMT@[173; 175)
+        PREFIX_EXPR@[173; 175)
+          STAR@[173; 174) "*"
+          ERROR@[174; 175)
+            R_BRACK@[174; 175) "]"
+      EXPR_STMT@[175; 176)
+        ERROR@[175; 176)
+          COMMA@[175; 176) ","
+      WHITESPACE@[176; 177) " "
+      EXPR_STMT@[177; 180)
+        ARRAY_EXPR@[177; 180)
+          L_BRACK@[177; 178) "["
+          ERROR@[178; 179)
+            DOLLAR@[178; 179) "$"
+          PAREN_EXPR@[179; 180)
+            L_PAREN@[179; 180) "("
+      EXPR_STMT@[180; 181)
+        ERROR@[180; 181)
+          DOLLAR@[180; 181) "$"
+      EXPR_STMT@[181; 187)
+        PATH_EXPR@[181; 187)
+          PATH@[181; 187)
+            PATH_SEGMENT@[181; 187)
+              NAME_REF@[181; 187)
+                IDENT@[181; 187) "output"
+      EXPR_STMT@[187; 188)
+        ERROR@[187; 188)
+          COLON@[187; 188) ":"
+      EXPR_STMT@[188; 192)
+        PATH_EXPR@[188; 192)
+          PATH@[188; 192)
+            PATH_SEGMENT@[188; 192)
+              NAME_REF@[188; 192)
+                IDENT@[188; 192) "expr"
+      EXPR_STMT@[192; 193)
+        ERROR@[192; 193)
+          R_PAREN@[192; 193) ")"
+      EXPR_STMT@[193; 194)
+        ERROR@[193; 194)
+          COMMA@[193; 194) ","
+      EXPR_STMT@[194; 197)
+        PREFIX_EXPR@[194; 197)
+          STAR@[194; 195) "*"
+          WHITESPACE@[195; 196) " "
+          ERROR@[196; 197)
+            DOLLAR@[196; 197) "$"
+      EXPR_STMT@[197; 198)
+        PAREN_EXPR@[197; 198)
+          L_PAREN@[197; 198) "("
+      EXPR_STMT@[198; 199)
+        ERROR@[198; 199)
+          COMMA@[198; 199) ","
+      EXPR_STMT@[199; 200)
+        ERROR@[199; 200)
+          R_PAREN@[199; 200) ")"
+      EXPR_STMT@[200; 202)
+        PREFIX_EXPR@[200; 202)
+          STAR@[200; 201) "*"
+          ERROR@[201; 202)
+            R_BRACK@[201; 202) "]"
+      EXPR_STMT@[202; 203)
+        ERROR@[202; 203)
+          R_PAREN@[202; 203) ")"
+      WHITESPACE@[203; 204) " "
+      BLOCK_EXPR@[204; 346)
+        BLOCK@[204; 346)
+          L_CURLY@[204; 205) "{"
+          WHITESPACE@[205; 214) "\n        "
+          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) "\n            "
+                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) "\n            "
+                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) "\n        "
+                R_PAREN@[338; 339) ")"
+            SEMI@[339; 340) ";"
+          WHITESPACE@[340; 345) "\n    "
+          R_CURLY@[345; 346) "}"
+      WHITESPACE@[346; 347) "\n"
+      R_CURLY@[347; 348) "}"
+  WHITESPACE@[348; 349) "\n"
+error 5: expected EXCL
+error 41: expected SEMI
+error 42: expected an item
+error 139: expected SEMI
+error 152: expected expression
+error 153: expected COMMA
+error 154: expected expression
+error 154: expected R_PAREN
+error 154: expected COMMA
+error 154: expected expression
+error 154: expected R_BRACK
+error 154: expected COMMA
+error 154: expected SEMI
+error 154: expected expression
+error 155: expected SEMI
+error 160: expected SEMI
+error 160: expected expression
+error 161: expected SEMI
+error 165: expected SEMI
+error 165: expected expression
+error 166: expected SEMI
+error 166: expected expression
+error 167: expected SEMI
+error 169: expected expression
+error 170: expected SEMI
+error 171: expected expression
+error 171: expected R_PAREN
+error 171: expected SEMI
+error 171: expected expression
+error 172: expected SEMI
+error 172: expected expression
+error 173: expected SEMI
+error 174: expected expression
+error 175: expected SEMI
+error 175: expected expression
+error 176: expected SEMI
+error 178: expected expression
+error 179: expected COMMA
+error 180: expected expression
+error 180: expected R_PAREN
+error 180: expected COMMA
+error 180: expected expression
+error 180: expected R_BRACK
+error 180: expected SEMI
+error 180: expected expression
+error 181: expected SEMI
+error 187: expected SEMI
+error 187: expected expression
+error 188: expected SEMI
+error 192: expected SEMI
+error 192: expected expression
+error 193: expected SEMI
+error 193: expected expression
+error 194: expected SEMI
+error 196: expected expression
+error 197: expected SEMI
+error 198: expected expression
+error 198: expected R_PAREN
+error 198: expected SEMI
+error 198: expected expression
+error 199: expected SEMI
+error 199: expected expression
+error 200: expected SEMI
+error 201: expected expression
+error 202: expected SEMI
+error 202: expected expression
+error 203: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0029_field_completion.rs b/crates/ra_syntax/test_data/parser/err/0029_field_completion.rs
new file mode 100644 (file)
index 0000000..a7cdc17
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo(a: A) {
+    a.
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0029_field_completion.txt b/crates/ra_syntax/test_data/parser/err/0029_field_completion.txt
new file mode 100644 (file)
index 0000000..fb50a12
--- /dev/null
@@ -0,0 +1,35 @@
+SOURCE_FILE@[0; 24)
+  FN_DEF@[0; 23)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 12)
+      L_PAREN@[6; 7) "("
+      PARAM@[7; 11)
+        BIND_PAT@[7; 8)
+          NAME@[7; 8)
+            IDENT@[7; 8) "a"
+        COLON@[8; 9) ":"
+        WHITESPACE@[9; 10) " "
+        PATH_TYPE@[10; 11)
+          PATH@[10; 11)
+            PATH_SEGMENT@[10; 11)
+              NAME_REF@[10; 11)
+                IDENT@[10; 11) "A"
+      R_PAREN@[11; 12) ")"
+    WHITESPACE@[12; 13) " "
+    BLOCK@[13; 23)
+      L_CURLY@[13; 14) "{"
+      WHITESPACE@[14; 19) "\n    "
+      FIELD_EXPR@[19; 21)
+        PATH_EXPR@[19; 20)
+          PATH@[19; 20)
+            PATH_SEGMENT@[19; 20)
+              NAME_REF@[19; 20)
+                IDENT@[19; 20) "a"
+        DOT@[20; 21) "."
+      WHITESPACE@[21; 22) "\n"
+      R_CURLY@[22; 23) "}"
+  WHITESPACE@[23; 24) "\n"
+error 21: expected field name or number
diff --git a/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rs b/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.rs
new file mode 100644 (file)
index 0000000..6a04f2d
--- /dev/null
@@ -0,0 +1,15 @@
+fn block() {
+    let inner = {
+        #![doc("Inner attributes not allowed here")]
+        //! Nor are ModuleDoc comments
+    };
+    if true {
+        #![doc("Nor here")]
+        #![doc("We error on each attr")]
+        //! Nor are ModuleDoc comments
+    }
+    while true {
+        #![doc("Nor here")]
+        //! Nor are ModuleDoc comments
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt b/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt
new file mode 100644 (file)
index 0000000..c205cf1
--- /dev/null
@@ -0,0 +1,114 @@
+SOURCE_FILE@[0; 350)
+  FN_DEF@[0; 349)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 8)
+      IDENT@[3; 8) "block"
+    PARAM_LIST@[8; 10)
+      L_PAREN@[8; 9) "("
+      R_PAREN@[9; 10) ")"
+    WHITESPACE@[10; 11) " "
+    BLOCK@[11; 349)
+      L_CURLY@[11; 12) "{"
+      WHITESPACE@[12; 17) "\n    "
+      LET_STMT@[17; 129)
+        LET_KW@[17; 20) "let"
+        WHITESPACE@[20; 21) " "
+        BIND_PAT@[21; 26)
+          NAME@[21; 26)
+            IDENT@[21; 26) "inner"
+        WHITESPACE@[26; 27) " "
+        EQ@[27; 28) "="
+        WHITESPACE@[28; 29) " "
+        BLOCK_EXPR@[29; 128)
+          BLOCK@[29; 128)
+            L_CURLY@[29; 30) "{"
+            WHITESPACE@[30; 39) "\n        "
+            ATTR@[39; 83)
+              POUND@[39; 40) "#"
+              EXCL@[40; 41) "!"
+              TOKEN_TREE@[41; 83)
+                L_BRACK@[41; 42) "["
+                IDENT@[42; 45) "doc"
+                TOKEN_TREE@[45; 82)
+                  L_PAREN@[45; 46) "("
+                  STRING@[46; 81) "\"Inner attributes not ..."
+                  R_PAREN@[81; 82) ")"
+                R_BRACK@[82; 83) "]"
+            WHITESPACE@[83; 92) "\n        "
+            COMMENT@[92; 122) "//! Nor are ModuleDoc ..."
+            WHITESPACE@[122; 127) "\n    "
+            R_CURLY@[127; 128) "}"
+        SEMI@[128; 129) ";"
+      WHITESPACE@[129; 134) "\n    "
+      EXPR_STMT@[134; 257)
+        IF_EXPR@[134; 257)
+          IF_KW@[134; 136) "if"
+          WHITESPACE@[136; 137) " "
+          CONDITION@[137; 141)
+            LITERAL@[137; 141)
+              TRUE_KW@[137; 141) "true"
+          WHITESPACE@[141; 142) " "
+          BLOCK@[142; 257)
+            L_CURLY@[142; 143) "{"
+            WHITESPACE@[143; 152) "\n        "
+            ATTR@[152; 171)
+              POUND@[152; 153) "#"
+              EXCL@[153; 154) "!"
+              TOKEN_TREE@[154; 171)
+                L_BRACK@[154; 155) "["
+                IDENT@[155; 158) "doc"
+                TOKEN_TREE@[158; 170)
+                  L_PAREN@[158; 159) "("
+                  STRING@[159; 169) "\"Nor here\""
+                  R_PAREN@[169; 170) ")"
+                R_BRACK@[170; 171) "]"
+            WHITESPACE@[171; 180) "\n        "
+            ATTR@[180; 212)
+              POUND@[180; 181) "#"
+              EXCL@[181; 182) "!"
+              TOKEN_TREE@[182; 212)
+                L_BRACK@[182; 183) "["
+                IDENT@[183; 186) "doc"
+                TOKEN_TREE@[186; 211)
+                  L_PAREN@[186; 187) "("
+                  STRING@[187; 210) "\"We error on each attr\""
+                  R_PAREN@[210; 211) ")"
+                R_BRACK@[211; 212) "]"
+            WHITESPACE@[212; 221) "\n        "
+            COMMENT@[221; 251) "//! Nor are ModuleDoc ..."
+            WHITESPACE@[251; 256) "\n    "
+            R_CURLY@[256; 257) "}"
+      WHITESPACE@[257; 262) "\n    "
+      WHILE_EXPR@[262; 347)
+        WHILE_KW@[262; 267) "while"
+        WHITESPACE@[267; 268) " "
+        CONDITION@[268; 272)
+          LITERAL@[268; 272)
+            TRUE_KW@[268; 272) "true"
+        WHITESPACE@[272; 273) " "
+        BLOCK@[273; 347)
+          L_CURLY@[273; 274) "{"
+          WHITESPACE@[274; 283) "\n        "
+          ATTR@[283; 302)
+            POUND@[283; 284) "#"
+            EXCL@[284; 285) "!"
+            TOKEN_TREE@[285; 302)
+              L_BRACK@[285; 286) "["
+              IDENT@[286; 289) "doc"
+              TOKEN_TREE@[289; 301)
+                L_PAREN@[289; 290) "("
+                STRING@[290; 300) "\"Nor here\""
+                R_PAREN@[300; 301) ")"
+              R_BRACK@[301; 302) "]"
+          WHITESPACE@[302; 311) "\n        "
+          COMMENT@[311; 341) "//! Nor are ModuleDoc ..."
+          WHITESPACE@[341; 346) "\n    "
+          R_CURLY@[346; 347) "}"
+      WHITESPACE@[347; 348) "\n"
+      R_CURLY@[348; 349) "}"
+  WHITESPACE@[349; 350) "\n"
+error [39; 83): A block in this position cannot accept inner attributes
+error [152; 171): A block in this position cannot accept inner attributes
+error [180; 212): A block in this position cannot accept inner attributes
+error [283; 302): A block in this position cannot accept inner attributes
diff --git a/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rs b/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.rs
new file mode 100644 (file)
index 0000000..06aa477
--- /dev/null
@@ -0,0 +1,20 @@
+fn foo() {
+    match () {
+        _ => (),
+        #![doc("Not allowed here")]
+        _ => (),
+    }
+
+    match () {
+        _ => (),
+        _ => (),
+        #![doc("Nor here")]
+    }
+
+    match () {
+        #[cfg(test)]
+        #![doc("Nor here")]
+        _ => (),
+        _ => (),
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt b/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt
new file mode 100644 (file)
index 0000000..4e8c414
--- /dev/null
@@ -0,0 +1,201 @@
+SOURCE_FILE@[0; 293)
+  FN_DEF@[0; 292)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 292)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 101)
+        MATCH_EXPR@[15; 101)
+          MATCH_KW@[15; 20) "match"
+          WHITESPACE@[20; 21) " "
+          TUPLE_EXPR@[21; 23)
+            L_PAREN@[21; 22) "("
+            R_PAREN@[22; 23) ")"
+          WHITESPACE@[23; 24) " "
+          MATCH_ARM_LIST@[24; 101)
+            L_CURLY@[24; 25) "{"
+            WHITESPACE@[25; 34) "\n        "
+            MATCH_ARM@[34; 41)
+              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) "\n        "
+            MATCH_ARM@[51; 78)
+              ATTR@[51; 52)
+                POUND@[51; 52) "#"
+              ERROR@[52; 53)
+                EXCL@[52; 53) "!"
+              ARRAY_EXPR@[53; 78)
+                L_BRACK@[53; 54) "["
+                CALL_EXPR@[54; 77)
+                  PATH_EXPR@[54; 57)
+                    PATH@[54; 57)
+                      PATH_SEGMENT@[54; 57)
+                        NAME_REF@[54; 57)
+                          IDENT@[54; 57) "doc"
+                  ARG_LIST@[57; 77)
+                    L_PAREN@[57; 58) "("
+                    LITERAL@[58; 76)
+                      STRING@[58; 76) "\"Not allowed here\""
+                    R_PAREN@[76; 77) ")"
+                R_BRACK@[77; 78) "]"
+            WHITESPACE@[78; 87) "\n        "
+            MATCH_ARM@[87; 94)
+              PLACEHOLDER_PAT@[87; 88)
+                UNDERSCORE@[87; 88) "_"
+              WHITESPACE@[88; 89) " "
+              FAT_ARROW@[89; 91) "=>"
+              WHITESPACE@[91; 92) " "
+              TUPLE_EXPR@[92; 94)
+                L_PAREN@[92; 93) "("
+                R_PAREN@[93; 94) ")"
+            COMMA@[94; 95) ","
+            WHITESPACE@[95; 100) "\n    "
+            R_CURLY@[100; 101) "}"
+      WHITESPACE@[101; 107) "\n\n    "
+      EXPR_STMT@[107; 185)
+        MATCH_EXPR@[107; 185)
+          MATCH_KW@[107; 112) "match"
+          WHITESPACE@[112; 113) " "
+          TUPLE_EXPR@[113; 115)
+            L_PAREN@[113; 114) "("
+            R_PAREN@[114; 115) ")"
+          WHITESPACE@[115; 116) " "
+          MATCH_ARM_LIST@[116; 185)
+            L_CURLY@[116; 117) "{"
+            WHITESPACE@[117; 126) "\n        "
+            MATCH_ARM@[126; 133)
+              PLACEHOLDER_PAT@[126; 127)
+                UNDERSCORE@[126; 127) "_"
+              WHITESPACE@[127; 128) " "
+              FAT_ARROW@[128; 130) "=>"
+              WHITESPACE@[130; 131) " "
+              TUPLE_EXPR@[131; 133)
+                L_PAREN@[131; 132) "("
+                R_PAREN@[132; 133) ")"
+            COMMA@[133; 134) ","
+            WHITESPACE@[134; 143) "\n        "
+            MATCH_ARM@[143; 150)
+              PLACEHOLDER_PAT@[143; 144)
+                UNDERSCORE@[143; 144) "_"
+              WHITESPACE@[144; 145) " "
+              FAT_ARROW@[145; 147) "=>"
+              WHITESPACE@[147; 148) " "
+              TUPLE_EXPR@[148; 150)
+                L_PAREN@[148; 149) "("
+                R_PAREN@[149; 150) ")"
+            COMMA@[150; 151) ","
+            WHITESPACE@[151; 160) "\n        "
+            MATCH_ARM@[160; 179)
+              ATTR@[160; 161)
+                POUND@[160; 161) "#"
+              ERROR@[161; 162)
+                EXCL@[161; 162) "!"
+              ARRAY_EXPR@[162; 179)
+                L_BRACK@[162; 163) "["
+                CALL_EXPR@[163; 178)
+                  PATH_EXPR@[163; 166)
+                    PATH@[163; 166)
+                      PATH_SEGMENT@[163; 166)
+                        NAME_REF@[163; 166)
+                          IDENT@[163; 166) "doc"
+                  ARG_LIST@[166; 178)
+                    L_PAREN@[166; 167) "("
+                    LITERAL@[167; 177)
+                      STRING@[167; 177) "\"Nor here\""
+                    R_PAREN@[177; 178) ")"
+                R_BRACK@[178; 179) "]"
+            WHITESPACE@[179; 184) "\n    "
+            R_CURLY@[184; 185) "}"
+      WHITESPACE@[185; 191) "\n\n    "
+      MATCH_EXPR@[191; 290)
+        MATCH_KW@[191; 196) "match"
+        WHITESPACE@[196; 197) " "
+        TUPLE_EXPR@[197; 199)
+          L_PAREN@[197; 198) "("
+          R_PAREN@[198; 199) ")"
+        WHITESPACE@[199; 200) " "
+        MATCH_ARM_LIST@[200; 290)
+          L_CURLY@[200; 201) "{"
+          WHITESPACE@[201; 210) "\n        "
+          MATCH_ARM@[210; 250)
+            ATTR@[210; 222)
+              POUND@[210; 211) "#"
+              TOKEN_TREE@[211; 222)
+                L_BRACK@[211; 212) "["
+                IDENT@[212; 215) "cfg"
+                TOKEN_TREE@[215; 221)
+                  L_PAREN@[215; 216) "("
+                  IDENT@[216; 220) "test"
+                  R_PAREN@[220; 221) ")"
+                R_BRACK@[221; 222) "]"
+            WHITESPACE@[222; 231) "\n        "
+            ATTR@[231; 232)
+              POUND@[231; 232) "#"
+            ERROR@[232; 233)
+              EXCL@[232; 233) "!"
+            ARRAY_EXPR@[233; 250)
+              L_BRACK@[233; 234) "["
+              CALL_EXPR@[234; 249)
+                PATH_EXPR@[234; 237)
+                  PATH@[234; 237)
+                    PATH_SEGMENT@[234; 237)
+                      NAME_REF@[234; 237)
+                        IDENT@[234; 237) "doc"
+                ARG_LIST@[237; 249)
+                  L_PAREN@[237; 238) "("
+                  LITERAL@[238; 248)
+                    STRING@[238; 248) "\"Nor here\""
+                  R_PAREN@[248; 249) ")"
+              R_BRACK@[249; 250) "]"
+          WHITESPACE@[250; 259) "\n        "
+          MATCH_ARM@[259; 266)
+            PLACEHOLDER_PAT@[259; 260)
+              UNDERSCORE@[259; 260) "_"
+            WHITESPACE@[260; 261) " "
+            FAT_ARROW@[261; 263) "=>"
+            WHITESPACE@[263; 264) " "
+            TUPLE_EXPR@[264; 266)
+              L_PAREN@[264; 265) "("
+              R_PAREN@[265; 266) ")"
+          COMMA@[266; 267) ","
+          WHITESPACE@[267; 276) "\n        "
+          MATCH_ARM@[276; 283)
+            PLACEHOLDER_PAT@[276; 277)
+              UNDERSCORE@[276; 277) "_"
+            WHITESPACE@[277; 278) " "
+            FAT_ARROW@[278; 280) "=>"
+            WHITESPACE@[280; 281) " "
+            TUPLE_EXPR@[281; 283)
+              L_PAREN@[281; 282) "("
+              R_PAREN@[282; 283) ")"
+          COMMA@[283; 284) ","
+          WHITESPACE@[284; 289) "\n    "
+          R_CURLY@[289; 290) "}"
+      WHITESPACE@[290; 291) "\n"
+      R_CURLY@[291; 292) "}"
+  WHITESPACE@[292; 293) "\n"
+error 52: expected `[`
+error 52: expected pattern
+error 53: expected FAT_ARROW
+error 78: expected COMMA
+error 161: expected `[`
+error 161: expected pattern
+error 162: expected FAT_ARROW
+error 232: expected `[`
+error 232: expected pattern
+error 233: expected FAT_ARROW
+error 250: expected COMMA
diff --git a/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rs b/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.rs
new file mode 100644 (file)
index 0000000..4635222
--- /dev/null
@@ -0,0 +1,7 @@
+fn foo() {
+    match () {
+        _ => (),
+        _ => (),
+        #[cfg(test)]
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt b/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt
new file mode 100644 (file)
index 0000000..e4f1f63
--- /dev/null
@@ -0,0 +1,64 @@
+SOURCE_FILE@[0; 89)
+  FN_DEF@[0; 88)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 88)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      MATCH_EXPR@[15; 86)
+        MATCH_KW@[15; 20) "match"
+        WHITESPACE@[20; 21) " "
+        TUPLE_EXPR@[21; 23)
+          L_PAREN@[21; 22) "("
+          R_PAREN@[22; 23) ")"
+        WHITESPACE@[23; 24) " "
+        MATCH_ARM_LIST@[24; 86)
+          L_CURLY@[24; 25) "{"
+          WHITESPACE@[25; 34) "\n        "
+          MATCH_ARM@[34; 41)
+            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) "\n        "
+          MATCH_ARM@[51; 58)
+            PLACEHOLDER_PAT@[51; 52)
+              UNDERSCORE@[51; 52) "_"
+            WHITESPACE@[52; 53) " "
+            FAT_ARROW@[53; 55) "=>"
+            WHITESPACE@[55; 56) " "
+            TUPLE_EXPR@[56; 58)
+              L_PAREN@[56; 57) "("
+              R_PAREN@[57; 58) ")"
+          COMMA@[58; 59) ","
+          WHITESPACE@[59; 68) "\n        "
+          MATCH_ARM@[68; 80)
+            ATTR@[68; 80)
+              POUND@[68; 69) "#"
+              TOKEN_TREE@[69; 80)
+                L_BRACK@[69; 70) "["
+                IDENT@[70; 73) "cfg"
+                TOKEN_TREE@[73; 79)
+                  L_PAREN@[73; 74) "("
+                  IDENT@[74; 78) "test"
+                  R_PAREN@[78; 79) ")"
+                R_BRACK@[79; 80) "]"
+          WHITESPACE@[80; 85) "\n    "
+          R_CURLY@[85; 86) "}"
+      WHITESPACE@[86; 87) "\n"
+      R_CURLY@[87; 88) "}"
+  WHITESPACE@[88; 89) "\n"
+error 80: expected pattern
+error 80: expected FAT_ARROW
+error 80: expected expression
diff --git a/crates/ra_syntax/test_data/parser/fuzz-failures/0000.rs b/crates/ra_syntax/test_data/parser/fuzz-failures/0000.rs
new file mode 100644 (file)
index 0000000..e0437d1
--- /dev/null
@@ -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::<syntax_node::GreenBuilder>(
+            text, &tokens, grammar::root,
+        );
+        File::new(green, errors)
+    }
+    pub fn reparse(&self, edit: &AtomTextEdit) -> File {
+        self.incremental_reparse(edit).unwrap_or_else(|| self.full_reparse(edit))
+    }
+    pub fn incremental_reparse(&self, edit: &AtomTextEdit) -> Option<File> {
+        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::<syntax_node::GreenBuilder>(
+            &te2t, &tokens, reparser,
+        );
+        let green_root = node.replace_with(green);
+        let errors = merge_errors(self.errors(), new_errors, node, edit);
+        Some(File::new(green_root, errors))
+    }
+    fn full_reparse(&self, edit: &AtomTextEdit) -> File {
+        let text = replace_range(self.syntax().text().to_string(), edit.delete, &edit.insert);
+        File::parse(&text)
+    }
+    pub fn ast(&self) -> ast::Root {
+        ast::Root::cast(self.syntax()).unwrap()
+    }
+    pub fn syntax(&self) -> SyntaxNodeRef {
+        self.root.brroowed()
+    }
+    mp_tree(root),
+                    );
+                    assert!(
+                        node.next_sibling().is_none() && pair.prev_sibling().is_none(),
+                        "\nfloating curlys at {:?}\nfile:\n{}\nerror:\n{}\n",
+                        node,
+                        root.text(),
+                        node.text(),
+                    );
+                }
+            }
+            _ => (),
+        }
+    }
+}
+
+#[derive(Debug, Clone)]
+pub struct AtomTextEdit {
+    pub delete: TextRange,
+    pub insert: String,
+}
+
+impl AtomTextEdit {
+    pub fn replace(range: TextRange, replace_with: String) -> AtomTextEdit {
+        AtomTextEdit { delete: range, insert: replace_with }
+    }
+
+    pub fn delete(range: TextRange) -> AtomTextEdit {
+        AtomTextEdit::replace(range, String::new())
+    }
+
+    pub fn insert(offset: TextUnit, text: String) -> AtomTextEdit {
+        AtomTextEdit::replace(TextRange::offset_len(offset, 0.into()), text)
+    }
+}
+
+fn find_reparsable_node(node: SyntaxNodeRef, range: TextRange) -> Option<(SyntaxNodeRef, fn(&mut Parser))> {
+    let node = algo::find_covering_node(node, range);
+    return algo::ancestors(node)
+        .filter_map(|node| reparser(node).map(|r| (node, r)))
+        .next();
+
+    fn reparser(node: SyntaxNodeRef) -> Option<fn(&mut Parser)> {
+        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 AtomTextEdit {
+    pub fn replace(range: TextRange, replace_with: String) -> AtomTextEdit {
+        AtomTextEdit { delete: range, insert: replace_with }
+    }
+
+    pub fn delete(range: TextRange) -> AtomTextEdit {
+        AtomTextEdit::replace(range, String::new())
+    }
+
+    pub fn insert(offset: TextUnit, text: String) -> AtomTextEdit {
+        AtomTextEdit::replace(TextRange::offset_len(offset, 0.into()), text)
+    }
+}
+
+fn find_reparsable_node(node: SyntaxNodeRef, range: TextRange) -> Option<(SyntaxNodeRef, fn(&mut Parser))> {
+    let node = algo::find_covering_node(node, range);
+    return algo::ancestors(node)
+        .filter_map(|node| reparser(node).map(|r| (node, r)))
+        .next();
+
+    fn reparser(node: SyntaxNodeRef) -> Option<fn(&mut Parser)> {
+        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<SyntaxError>,
+    new_errors: Vec<SyntaxError>,
+    old_node: SyntaxNodeRef,
+    edit: &AtomTextEdit,
+) -> Vec<SyntaxError> {
+    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/test_data/parser/fuzz-failures/0001.rs b/crates/ra_syntax/test_data/parser/fuzz-failures/0001.rs
new file mode 100644 (file)
index 0000000..099cc5f
--- /dev/null
@@ -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<TextRange> {
+    let syntax = file.syntax();
+    extend(syntax.borrowed(), range)
+}
+
+pub(crate) fn extend(root: SyntaxNodeRef, range: TextRange) -> Option<TextRange> {
+    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<TextRange> {
+    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/test_data/parser/fuzz-failures/0002.rs b/crates/ra_syntax/test_data/parser/fuzz-failures/0002.rs
new file mode 100644 (file)
index 0000000..f35dc72
--- /dev/null
@@ -0,0 +1 @@
+!('\
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/fuzz-failures/0003.rs b/crates/ra_syntax/test_data/parser/fuzz-failures/0003.rs
new file mode 100644 (file)
index 0000000..0f59c47
--- /dev/null
@@ -0,0 +1 @@
+if'\xɿ
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/fuzz-failures/0004.rs b/crates/ra_syntax/test_data/parser/fuzz-failures/0004.rs
new file mode 100644 (file)
index 0000000..003290f
--- /dev/null
@@ -0,0 +1 @@
+b"\xʿ
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rs b/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.rs
new file mode 100644 (file)
index 0000000..a948514
--- /dev/null
@@ -0,0 +1 @@
+type T = [() 92];
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.txt b/crates/ra_syntax/test_data/parser/inline/err/0001_array_type_missing_semi.txt
new file mode 100644 (file)
index 0000000..3f0f1b4
--- /dev/null
@@ -0,0 +1,27 @@
+SOURCE_FILE@[0; 18)
+  TYPE_ALIAS_DEF@[0; 12)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    SLICE_TYPE@[9; 12)
+      L_BRACK@[9; 10) "["
+      TUPLE_TYPE@[10; 12)
+        L_PAREN@[10; 11) "("
+        R_PAREN@[11; 12) ")"
+  WHITESPACE@[12; 13) " "
+  ERROR@[13; 15)
+    INT_NUMBER@[13; 15) "92"
+  ERROR@[15; 16)
+    R_BRACK@[15; 16) "]"
+  ERROR@[16; 17)
+    SEMI@[16; 17) ";"
+  WHITESPACE@[17; 18) "\n"
+error 12: expected `;` or `]`
+error 12: expected SEMI
+error 13: expected an item
+error 15: expected an item
+error 16: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rs b/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.rs
new file mode 100644 (file)
index 0000000..a2164c5
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    'loop: impl
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt b/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt
new file mode 100644 (file)
index 0000000..7abc49d
--- /dev/null
@@ -0,0 +1,28 @@
+SOURCE_FILE@[0; 30)
+  FN_DEF@[0; 29)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 29)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      EXPR_STMT@[16; 22)
+        ERROR@[16; 22)
+          LABEL@[16; 22)
+            LIFETIME@[16; 21) "\'loop"
+            COLON@[21; 22) ":"
+      WHITESPACE@[22; 23) " "
+      IMPL_BLOCK@[23; 27)
+        IMPL_KW@[23; 27) "impl"
+      WHITESPACE@[27; 28) "\n"
+      R_CURLY@[28; 29) "}"
+  WHITESPACE@[29; 30) "\n"
+error 22: expected a loop
+error 22: expected SEMI
+error 27: expected type
+error 27: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rs b/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.rs
new file mode 100644 (file)
index 0000000..fae7051
--- /dev/null
@@ -0,0 +1 @@
+type T = *();
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.txt b/crates/ra_syntax/test_data/parser/inline/err/0003_pointer_type_no_mutability.txt
new file mode 100644 (file)
index 0000000..b97e339
--- /dev/null
@@ -0,0 +1,17 @@
+SOURCE_FILE@[0; 14)
+  TYPE_ALIAS_DEF@[0; 13)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    POINTER_TYPE@[9; 12)
+      STAR@[9; 10) "*"
+      TUPLE_TYPE@[10; 12)
+        L_PAREN@[10; 11) "("
+        R_PAREN@[11; 12) ")"
+    SEMI@[12; 13) ";"
+  WHITESPACE@[13; 14) "\n"
+error 10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rs b/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.rs
new file mode 100644 (file)
index 0000000..b8c7b65
--- /dev/null
@@ -0,0 +1,4 @@
+impl Type {}
+impl Trait1 for T {}
+impl impl NotType {}
+impl Trait2 for impl NotType {}
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.txt b/crates/ra_syntax/test_data/parser/inline/err/0004_impl_type.txt
new file mode 100644 (file)
index 0000000..43321b1
--- /dev/null
@@ -0,0 +1,79 @@
+SOURCE_FILE@[0; 87)
+  IMPL_BLOCK@[0; 12)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 9)
+      PATH@[5; 9)
+        PATH_SEGMENT@[5; 9)
+          NAME_REF@[5; 9)
+            IDENT@[5; 9) "Type"
+    WHITESPACE@[9; 10) " "
+    ITEM_LIST@[10; 12)
+      L_CURLY@[10; 11) "{"
+      R_CURLY@[11; 12) "}"
+  WHITESPACE@[12; 13) "\n"
+  IMPL_BLOCK@[13; 33)
+    IMPL_KW@[13; 17) "impl"
+    WHITESPACE@[17; 18) " "
+    PATH_TYPE@[18; 24)
+      PATH@[18; 24)
+        PATH_SEGMENT@[18; 24)
+          NAME_REF@[18; 24)
+            IDENT@[18; 24) "Trait1"
+    WHITESPACE@[24; 25) " "
+    FOR_KW@[25; 28) "for"
+    WHITESPACE@[28; 29) " "
+    PATH_TYPE@[29; 30)
+      PATH@[29; 30)
+        PATH_SEGMENT@[29; 30)
+          NAME_REF@[29; 30)
+            IDENT@[29; 30) "T"
+    WHITESPACE@[30; 31) " "
+    ITEM_LIST@[31; 33)
+      L_CURLY@[31; 32) "{"
+      R_CURLY@[32; 33) "}"
+  WHITESPACE@[33; 34) "\n"
+  IMPL_BLOCK@[34; 38)
+    IMPL_KW@[34; 38) "impl"
+  WHITESPACE@[38; 39) " "
+  IMPL_BLOCK@[39; 54)
+    IMPL_KW@[39; 43) "impl"
+    WHITESPACE@[43; 44) " "
+    PATH_TYPE@[44; 51)
+      PATH@[44; 51)
+        PATH_SEGMENT@[44; 51)
+          NAME_REF@[44; 51)
+            IDENT@[44; 51) "NotType"
+    WHITESPACE@[51; 52) " "
+    ITEM_LIST@[52; 54)
+      L_CURLY@[52; 53) "{"
+      R_CURLY@[53; 54) "}"
+  WHITESPACE@[54; 55) "\n"
+  IMPL_BLOCK@[55; 70)
+    IMPL_KW@[55; 59) "impl"
+    WHITESPACE@[59; 60) " "
+    PATH_TYPE@[60; 66)
+      PATH@[60; 66)
+        PATH_SEGMENT@[60; 66)
+          NAME_REF@[60; 66)
+            IDENT@[60; 66) "Trait2"
+    WHITESPACE@[66; 67) " "
+    FOR_KW@[67; 70) "for"
+  WHITESPACE@[70; 71) " "
+  IMPL_BLOCK@[71; 86)
+    IMPL_KW@[71; 75) "impl"
+    WHITESPACE@[75; 76) " "
+    PATH_TYPE@[76; 83)
+      PATH@[76; 83)
+        PATH_SEGMENT@[76; 83)
+          NAME_REF@[76; 83)
+            IDENT@[76; 83) "NotType"
+    WHITESPACE@[83; 84) " "
+    ITEM_LIST@[84; 86)
+      L_CURLY@[84; 85) "{"
+      R_CURLY@[85; 86) "}"
+  WHITESPACE@[86; 87) "\n"
+error 38: expected trait or type
+error 38: expected `{`
+error 70: expected trait or type
+error 70: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs b/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs
new file mode 100644 (file)
index 0000000..f014914
--- /dev/null
@@ -0,0 +1 @@
+type F = unsafe ();
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt b/crates/ra_syntax/test_data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
new file mode 100644 (file)
index 0000000..451f29d
--- /dev/null
@@ -0,0 +1,23 @@
+SOURCE_FILE@[0; 20)
+  TYPE_ALIAS_DEF@[0; 15)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "F"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    UNSAFE_KW@[9; 15) "unsafe"
+  WHITESPACE@[15; 16) " "
+  ERROR@[16; 17)
+    L_PAREN@[16; 17) "("
+  ERROR@[17; 18)
+    R_PAREN@[17; 18) ")"
+  ERROR@[18; 19)
+    SEMI@[18; 19) ";"
+  WHITESPACE@[19; 20) "\n"
+error 15: expected `fn`
+error 15: expected SEMI
+error 16: expected an item
+error 17: expected an item
+error 18: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rs b/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.rs
new file mode 100644 (file)
index 0000000..26141e9
--- /dev/null
@@ -0,0 +1 @@
+fn foo(){} unsafe { } fn bar(){}
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt b/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt
new file mode 100644 (file)
index 0000000..a1871ec
--- /dev/null
@@ -0,0 +1,35 @@
+SOURCE_FILE@[0; 33)
+  FN_DEF@[0; 10)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    BLOCK@[8; 10)
+      L_CURLY@[8; 9) "{"
+      R_CURLY@[9; 10) "}"
+  WHITESPACE@[10; 11) " "
+  ERROR@[11; 17)
+    UNSAFE_KW@[11; 17) "unsafe"
+  WHITESPACE@[17; 18) " "
+  ERROR@[18; 21)
+    L_CURLY@[18; 19) "{"
+    WHITESPACE@[19; 20) " "
+    R_CURLY@[20; 21) "}"
+  WHITESPACE@[21; 22) " "
+  FN_DEF@[22; 32)
+    FN_KW@[22; 24) "fn"
+    WHITESPACE@[24; 25) " "
+    NAME@[25; 28)
+      IDENT@[25; 28) "bar"
+    PARAM_LIST@[28; 30)
+      L_PAREN@[28; 29) "("
+      R_PAREN@[29; 30) ")"
+    BLOCK@[30; 32)
+      L_CURLY@[30; 31) "{"
+      R_CURLY@[31; 32) "}"
+  WHITESPACE@[32; 33) "\n"
+error 11: expected an item
+error 18: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rs b/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.rs
new file mode 100644 (file)
index 0000000..9a42324
--- /dev/null
@@ -0,0 +1 @@
+fn foo() { let _ = async {} }
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt b/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt
new file mode 100644 (file)
index 0000000..f70adc2
--- /dev/null
@@ -0,0 +1,31 @@
+SOURCE_FILE@[0; 30)
+  FN_DEF@[0; 29)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 29)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) " "
+      LET_STMT@[11; 27)
+        LET_KW@[11; 14) "let"
+        WHITESPACE@[14; 15) " "
+        PLACEHOLDER_PAT@[15; 16)
+          UNDERSCORE@[15; 16) "_"
+        WHITESPACE@[16; 17) " "
+        EQ@[17; 18) "="
+        WHITESPACE@[18; 19) " "
+        BLOCK_EXPR@[19; 27)
+          ASYNC_KW@[19; 24) "async"
+          WHITESPACE@[24; 25) " "
+          BLOCK@[25; 27)
+            L_CURLY@[25; 26) "{"
+            R_CURLY@[26; 27) "}"
+      WHITESPACE@[27; 28) " "
+      R_CURLY@[28; 29) "}"
+  WHITESPACE@[29; 30) "\n"
+error 27: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rs b/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.rs
new file mode 100644 (file)
index 0000000..2976f68
--- /dev/null
@@ -0,0 +1 @@
+fn foo() { pub 92; }
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt b/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt
new file mode 100644 (file)
index 0000000..1dbfca6
--- /dev/null
@@ -0,0 +1,25 @@
+SOURCE_FILE@[0; 21)
+  FN_DEF@[0; 20)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 20)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) " "
+      ERROR@[11; 14)
+        VISIBILITY@[11; 14)
+          PUB_KW@[11; 14) "pub"
+      WHITESPACE@[14; 15) " "
+      EXPR_STMT@[15; 18)
+        LITERAL@[15; 17)
+          INT_NUMBER@[15; 17) "92"
+        SEMI@[17; 18) ";"
+      WHITESPACE@[18; 19) " "
+      R_CURLY@[19; 20) "}"
+  WHITESPACE@[20; 21) "\n"
+error 14: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rs b/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.rs
new file mode 100644 (file)
index 0000000..d725a07
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+   #[A] 1 + 2;
+   #[B] if true {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt b/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
new file mode 100644 (file)
index 0000000..338776a
--- /dev/null
@@ -0,0 +1,55 @@
+SOURCE_FILE@[0; 48)
+  FN_DEF@[0; 47)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 47)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 14) "\n   "
+      EXPR_STMT@[14; 25)
+        ATTR@[14; 18)
+          POUND@[14; 15) "#"
+          TOKEN_TREE@[15; 18)
+            L_BRACK@[15; 16) "["
+            IDENT@[16; 17) "A"
+            R_BRACK@[17; 18) "]"
+        WHITESPACE@[18; 19) " "
+        BIN_EXPR@[19; 24)
+          LITERAL@[19; 20)
+            INT_NUMBER@[19; 20) "1"
+          WHITESPACE@[20; 21) " "
+          PLUS@[21; 22) "+"
+          WHITESPACE@[22; 23) " "
+          LITERAL@[23; 24)
+            INT_NUMBER@[23; 24) "2"
+        SEMI@[24; 25) ";"
+      WHITESPACE@[25; 29) "\n   "
+      EXPR_STMT@[29; 45)
+        ATTR@[29; 33)
+          POUND@[29; 30) "#"
+          TOKEN_TREE@[30; 33)
+            L_BRACK@[30; 31) "["
+            IDENT@[31; 32) "B"
+            R_BRACK@[32; 33) "]"
+        WHITESPACE@[33; 34) " "
+        IF_EXPR@[34; 44)
+          IF_KW@[34; 36) "if"
+          WHITESPACE@[36; 37) " "
+          CONDITION@[37; 41)
+            LITERAL@[37; 41)
+              TRUE_KW@[37; 41) "true"
+          WHITESPACE@[41; 42) " "
+          BLOCK@[42; 44)
+            L_CURLY@[42; 43) "{"
+            R_CURLY@[43; 44) "}"
+        SEMI@[44; 45) ";"
+      WHITESPACE@[45; 46) "\n"
+      R_CURLY@[46; 47) "}"
+  WHITESPACE@[47; 48) "\n"
+error 24: attributes are not allowed on BIN_EXPR
+error 44: attributes are not allowed on IF_EXPR
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rs b/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.rs
new file mode 100644 (file)
index 0000000..30cc491
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    x.0.;
+    x.1i32;
+    x.0x01;
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt b/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt
new file mode 100644 (file)
index 0000000..a21b29c
--- /dev/null
@@ -0,0 +1,51 @@
+SOURCE_FILE@[0; 47)
+  FN_DEF@[0; 46)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 46)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 20)
+        FIELD_EXPR@[15; 19)
+          PATH_EXPR@[15; 16)
+            PATH@[15; 16)
+              PATH_SEGMENT@[15; 16)
+                NAME_REF@[15; 16)
+                  IDENT@[15; 16) "x"
+          DOT@[16; 17) "."
+          FLOAT_NUMBER@[17; 19) "0."
+        SEMI@[19; 20) ";"
+      WHITESPACE@[20; 25) "\n    "
+      EXPR_STMT@[25; 32)
+        FIELD_EXPR@[25; 31)
+          PATH_EXPR@[25; 26)
+            PATH@[25; 26)
+              PATH_SEGMENT@[25; 26)
+                NAME_REF@[25; 26)
+                  IDENT@[25; 26) "x"
+          DOT@[26; 27) "."
+          INT_NUMBER@[27; 31) "1i32"
+        SEMI@[31; 32) ";"
+      WHITESPACE@[32; 37) "\n    "
+      EXPR_STMT@[37; 44)
+        FIELD_EXPR@[37; 43)
+          PATH_EXPR@[37; 38)
+            PATH@[37; 38)
+              PATH_SEGMENT@[37; 38)
+                NAME_REF@[37; 38)
+                  IDENT@[37; 38) "x"
+          DOT@[38; 39) "."
+          INT_NUMBER@[39; 43) "0x01"
+        SEMI@[43; 44) ";"
+      WHITESPACE@[44; 45) "\n"
+      R_CURLY@[45; 46) "}"
+  WHITESPACE@[46; 47) "\n"
+error [17; 19): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
+error [27; 31): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
+error [39; 43): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rs b/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.rs
new file mode 100644 (file)
index 0000000..16edee9
--- /dev/null
@@ -0,0 +1,2 @@
+async unsafe fn foo() {}
+unsafe const fn bar() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt b/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt
new file mode 100644 (file)
index 0000000..b1ef210
--- /dev/null
@@ -0,0 +1,39 @@
+SOURCE_FILE@[0; 50)
+  ERROR@[0; 5)
+    ASYNC_KW@[0; 5) "async"
+  WHITESPACE@[5; 6) " "
+  FN_DEF@[6; 24)
+    UNSAFE_KW@[6; 12) "unsafe"
+    WHITESPACE@[12; 13) " "
+    FN_KW@[13; 15) "fn"
+    WHITESPACE@[15; 16) " "
+    NAME@[16; 19)
+      IDENT@[16; 19) "foo"
+    PARAM_LIST@[19; 21)
+      L_PAREN@[19; 20) "("
+      R_PAREN@[20; 21) ")"
+    WHITESPACE@[21; 22) " "
+    BLOCK@[22; 24)
+      L_CURLY@[22; 23) "{"
+      R_CURLY@[23; 24) "}"
+  WHITESPACE@[24; 25) "\n"
+  ERROR@[25; 31)
+    UNSAFE_KW@[25; 31) "unsafe"
+  WHITESPACE@[31; 32) " "
+  FN_DEF@[32; 49)
+    CONST_KW@[32; 37) "const"
+    WHITESPACE@[37; 38) " "
+    FN_KW@[38; 40) "fn"
+    WHITESPACE@[40; 41) " "
+    NAME@[41; 44)
+      IDENT@[41; 44) "bar"
+    PARAM_LIST@[44; 46)
+      L_PAREN@[44; 45) "("
+      R_PAREN@[45; 46) ")"
+    WHITESPACE@[46; 47) " "
+    BLOCK@[47; 49)
+      L_CURLY@[47; 48) "{"
+      R_CURLY@[48; 49) "}"
+  WHITESPACE@[49; 50) "\n"
+error 5: expected existential, fn, trait or impl
+error 31: expected existential, fn, trait or impl
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rs b/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.rs
new file mode 100644 (file)
index 0000000..15ba8f4
--- /dev/null
@@ -0,0 +1,4 @@
+trait T {
+    default type T = Bar;
+    default fn foo() {}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt b/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt
new file mode 100644 (file)
index 0000000..7da4e24
--- /dev/null
@@ -0,0 +1,58 @@
+SOURCE_FILE@[0; 62)
+  TRAIT_DEF@[0; 61)
+    TRAIT_KW@[0; 5) "trait"
+    WHITESPACE@[5; 6) " "
+    NAME@[6; 7)
+      IDENT@[6; 7) "T"
+    WHITESPACE@[7; 8) " "
+    ITEM_LIST@[8; 61)
+      L_CURLY@[8; 9) "{"
+      WHITESPACE@[9; 14) "\n    "
+      MACRO_CALL@[14; 21)
+        PATH@[14; 21)
+          PATH_SEGMENT@[14; 21)
+            NAME_REF@[14; 21)
+              IDENT@[14; 21) "default"
+      WHITESPACE@[21; 22) " "
+      TYPE_ALIAS_DEF@[22; 35)
+        TYPE_KW@[22; 26) "type"
+        WHITESPACE@[26; 27) " "
+        NAME@[27; 28)
+          IDENT@[27; 28) "T"
+        WHITESPACE@[28; 29) " "
+        EQ@[29; 30) "="
+        WHITESPACE@[30; 31) " "
+        PATH_TYPE@[31; 34)
+          PATH@[31; 34)
+            PATH_SEGMENT@[31; 34)
+              NAME_REF@[31; 34)
+                IDENT@[31; 34) "Bar"
+        SEMI@[34; 35) ";"
+      WHITESPACE@[35; 40) "\n    "
+      MACRO_CALL@[40; 47)
+        PATH@[40; 47)
+          PATH_SEGMENT@[40; 47)
+            NAME_REF@[40; 47)
+              IDENT@[40; 47) "default"
+      WHITESPACE@[47; 48) " "
+      FN_DEF@[48; 59)
+        FN_KW@[48; 50) "fn"
+        WHITESPACE@[50; 51) " "
+        NAME@[51; 54)
+          IDENT@[51; 54) "foo"
+        PARAM_LIST@[54; 56)
+          L_PAREN@[54; 55) "("
+          R_PAREN@[55; 56) ")"
+        WHITESPACE@[56; 57) " "
+        BLOCK@[57; 59)
+          L_CURLY@[57; 58) "{"
+          R_CURLY@[58; 59) "}"
+      WHITESPACE@[59; 60) "\n"
+      R_CURLY@[60; 61) "}"
+  WHITESPACE@[61; 62) "\n"
+error 21: expected EXCL
+error 21: expected `{`, `[`, `(`
+error 21: expected SEMI
+error 47: expected EXCL
+error 47: expected `{`, `[`, `(`
+error 47: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rs b/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.rs
new file mode 100644 (file)
index 0000000..a5ec323
--- /dev/null
@@ -0,0 +1,6 @@
+impl F {
+    type A: Clone;
+    const B: i32;
+    fn foo() {}
+    fn bar(&self);
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt
new file mode 100644 (file)
index 0000000..18f02bb
--- /dev/null
@@ -0,0 +1,71 @@
+SOURCE_FILE@[0; 83)
+  IMPL_BLOCK@[0; 82)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 6)
+      PATH@[5; 6)
+        PATH_SEGMENT@[5; 6)
+          NAME_REF@[5; 6)
+            IDENT@[5; 6) "F"
+    WHITESPACE@[6; 7) " "
+    ITEM_LIST@[7; 82)
+      L_CURLY@[7; 8) "{"
+      WHITESPACE@[8; 13) "\n    "
+      TYPE_ALIAS_DEF@[13; 27)
+        TYPE_KW@[13; 17) "type"
+        WHITESPACE@[17; 18) " "
+        NAME@[18; 19)
+          IDENT@[18; 19) "A"
+        COLON@[19; 20) ":"
+        WHITESPACE@[20; 21) " "
+        TYPE_BOUND_LIST@[21; 26)
+          TYPE_BOUND@[21; 26)
+            PATH_TYPE@[21; 26)
+              PATH@[21; 26)
+                PATH_SEGMENT@[21; 26)
+                  NAME_REF@[21; 26)
+                    IDENT@[21; 26) "Clone"
+        SEMI@[26; 27) ";"
+      WHITESPACE@[27; 32) "\n    "
+      CONST_DEF@[32; 45)
+        CONST_KW@[32; 37) "const"
+        WHITESPACE@[37; 38) " "
+        NAME@[38; 39)
+          IDENT@[38; 39) "B"
+        COLON@[39; 40) ":"
+        WHITESPACE@[40; 41) " "
+        PATH_TYPE@[41; 44)
+          PATH@[41; 44)
+            PATH_SEGMENT@[41; 44)
+              NAME_REF@[41; 44)
+                IDENT@[41; 44) "i32"
+        SEMI@[44; 45) ";"
+      WHITESPACE@[45; 50) "\n    "
+      FN_DEF@[50; 61)
+        FN_KW@[50; 52) "fn"
+        WHITESPACE@[52; 53) " "
+        NAME@[53; 56)
+          IDENT@[53; 56) "foo"
+        PARAM_LIST@[56; 58)
+          L_PAREN@[56; 57) "("
+          R_PAREN@[57; 58) ")"
+        WHITESPACE@[58; 59) " "
+        BLOCK@[59; 61)
+          L_CURLY@[59; 60) "{"
+          R_CURLY@[60; 61) "}"
+      WHITESPACE@[61; 66) "\n    "
+      FN_DEF@[66; 80)
+        FN_KW@[66; 68) "fn"
+        WHITESPACE@[68; 69) " "
+        NAME@[69; 72)
+          IDENT@[69; 72) "bar"
+        PARAM_LIST@[72; 79)
+          L_PAREN@[72; 73) "("
+          SELF_PARAM@[73; 78)
+            AMP@[73; 74) "&"
+            SELF_KW@[74; 78) "self"
+          R_PAREN@[78; 79) ")"
+        SEMI@[79; 80) ";"
+      WHITESPACE@[80; 81) "\n"
+      R_CURLY@[81; 82) "}"
+  WHITESPACE@[82; 83) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rs b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rs
new file mode 100644 (file)
index 0000000..06c387c
--- /dev/null
@@ -0,0 +1,4 @@
+use {crate::path::from::root, or::path::from::crate_name}; // Rust 2018 (with a crate named `or`)
+use {path::from::root}; // Rust 2015
+use ::{some::arbritrary::path}; // Rust 2015
+use ::{{{crate::export}}}; // Nonsensical but perfectly legal nestnig
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.txt
new file mode 100644 (file)
index 0000000..1b318df
--- /dev/null
@@ -0,0 +1,135 @@
+SOURCE_FILE@[0; 250)
+  USE_ITEM@[0; 58)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 57)
+      USE_TREE_LIST@[4; 57)
+        L_CURLY@[4; 5) "{"
+        USE_TREE@[5; 28)
+          PATH@[5; 28)
+            PATH@[5; 22)
+              PATH@[5; 16)
+                PATH@[5; 10)
+                  PATH_SEGMENT@[5; 10)
+                    CRATE_KW@[5; 10) "crate"
+                COLONCOLON@[10; 12) "::"
+                PATH_SEGMENT@[12; 16)
+                  NAME_REF@[12; 16)
+                    IDENT@[12; 16) "path"
+              COLONCOLON@[16; 18) "::"
+              PATH_SEGMENT@[18; 22)
+                NAME_REF@[18; 22)
+                  IDENT@[18; 22) "from"
+            COLONCOLON@[22; 24) "::"
+            PATH_SEGMENT@[24; 28)
+              NAME_REF@[24; 28)
+                IDENT@[24; 28) "root"
+        COMMA@[28; 29) ","
+        WHITESPACE@[29; 30) " "
+        USE_TREE@[30; 56)
+          PATH@[30; 56)
+            PATH@[30; 44)
+              PATH@[30; 38)
+                PATH@[30; 32)
+                  PATH_SEGMENT@[30; 32)
+                    NAME_REF@[30; 32)
+                      IDENT@[30; 32) "or"
+                COLONCOLON@[32; 34) "::"
+                PATH_SEGMENT@[34; 38)
+                  NAME_REF@[34; 38)
+                    IDENT@[34; 38) "path"
+              COLONCOLON@[38; 40) "::"
+              PATH_SEGMENT@[40; 44)
+                NAME_REF@[40; 44)
+                  IDENT@[40; 44) "from"
+            COLONCOLON@[44; 46) "::"
+            PATH_SEGMENT@[46; 56)
+              NAME_REF@[46; 56)
+                IDENT@[46; 56) "crate_name"
+        R_CURLY@[56; 57) "}"
+    SEMI@[57; 58) ";"
+  WHITESPACE@[58; 59) " "
+  COMMENT@[59; 97) "// Rust 2018 (with a  ..."
+  WHITESPACE@[97; 98) "\n"
+  USE_ITEM@[98; 121)
+    USE_KW@[98; 101) "use"
+    WHITESPACE@[101; 102) " "
+    USE_TREE@[102; 120)
+      USE_TREE_LIST@[102; 120)
+        L_CURLY@[102; 103) "{"
+        USE_TREE@[103; 119)
+          PATH@[103; 119)
+            PATH@[103; 113)
+              PATH@[103; 107)
+                PATH_SEGMENT@[103; 107)
+                  NAME_REF@[103; 107)
+                    IDENT@[103; 107) "path"
+              COLONCOLON@[107; 109) "::"
+              PATH_SEGMENT@[109; 113)
+                NAME_REF@[109; 113)
+                  IDENT@[109; 113) "from"
+            COLONCOLON@[113; 115) "::"
+            PATH_SEGMENT@[115; 119)
+              NAME_REF@[115; 119)
+                IDENT@[115; 119) "root"
+        R_CURLY@[119; 120) "}"
+    SEMI@[120; 121) ";"
+  WHITESPACE@[121; 122) " "
+  COMMENT@[122; 134) "// Rust 2015"
+  WHITESPACE@[134; 135) "\n"
+  USE_ITEM@[135; 166)
+    USE_KW@[135; 138) "use"
+    WHITESPACE@[138; 139) " "
+    USE_TREE@[139; 165)
+      COLONCOLON@[139; 141) "::"
+      USE_TREE_LIST@[141; 165)
+        L_CURLY@[141; 142) "{"
+        USE_TREE@[142; 164)
+          PATH@[142; 164)
+            PATH@[142; 158)
+              PATH@[142; 146)
+                PATH_SEGMENT@[142; 146)
+                  NAME_REF@[142; 146)
+                    IDENT@[142; 146) "some"
+              COLONCOLON@[146; 148) "::"
+              PATH_SEGMENT@[148; 158)
+                NAME_REF@[148; 158)
+                  IDENT@[148; 158) "arbritrary"
+            COLONCOLON@[158; 160) "::"
+            PATH_SEGMENT@[160; 164)
+              NAME_REF@[160; 164)
+                IDENT@[160; 164) "path"
+        R_CURLY@[164; 165) "}"
+    SEMI@[165; 166) ";"
+  WHITESPACE@[166; 167) " "
+  COMMENT@[167; 179) "// Rust 2015"
+  WHITESPACE@[179; 180) "\n"
+  USE_ITEM@[180; 206)
+    USE_KW@[180; 183) "use"
+    WHITESPACE@[183; 184) " "
+    USE_TREE@[184; 205)
+      COLONCOLON@[184; 186) "::"
+      USE_TREE_LIST@[186; 205)
+        L_CURLY@[186; 187) "{"
+        USE_TREE@[187; 204)
+          USE_TREE_LIST@[187; 204)
+            L_CURLY@[187; 188) "{"
+            USE_TREE@[188; 203)
+              USE_TREE_LIST@[188; 203)
+                L_CURLY@[188; 189) "{"
+                USE_TREE@[189; 202)
+                  PATH@[189; 202)
+                    PATH@[189; 194)
+                      PATH_SEGMENT@[189; 194)
+                        CRATE_KW@[189; 194) "crate"
+                    COLONCOLON@[194; 196) "::"
+                    PATH_SEGMENT@[196; 202)
+                      NAME_REF@[196; 202)
+                        IDENT@[196; 202) "export"
+                R_CURLY@[202; 203) "}"
+            R_CURLY@[203; 204) "}"
+        R_CURLY@[204; 205) "}"
+    SEMI@[205; 206) ";"
+  WHITESPACE@[206; 207) " "
+  COMMENT@[207; 249) "// Nonsensical but pe ..."
+  WHITESPACE@[249; 250) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rs b/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.rs
new file mode 100644 (file)
index 0000000..b448c61
--- /dev/null
@@ -0,0 +1,4 @@
+fn test<F>()
+where
+   for<'a> F: Fn(&'a str)
+{ }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt b/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt
new file mode 100644 (file)
index 0000000..8a21ee9
--- /dev/null
@@ -0,0 +1,61 @@
+SOURCE_FILE@[0; 49)
+  FN_DEF@[0; 48)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "test"
+    TYPE_PARAM_LIST@[7; 10)
+      L_ANGLE@[7; 8) "<"
+      TYPE_PARAM@[8; 9)
+        NAME@[8; 9)
+          IDENT@[8; 9) "F"
+      R_ANGLE@[9; 10) ">"
+    PARAM_LIST@[10; 12)
+      L_PAREN@[10; 11) "("
+      R_PAREN@[11; 12) ")"
+    WHITESPACE@[12; 13) "\n"
+    WHERE_CLAUSE@[13; 44)
+      WHERE_KW@[13; 18) "where"
+      WHITESPACE@[18; 22) "\n   "
+      WHERE_PRED@[22; 44)
+        FOR_TYPE@[22; 31)
+          FOR_KW@[22; 25) "for"
+          TYPE_PARAM_LIST@[25; 29)
+            L_ANGLE@[25; 26) "<"
+            LIFETIME_PARAM@[26; 28)
+              LIFETIME@[26; 28) "\'a"
+            R_ANGLE@[28; 29) ">"
+          WHITESPACE@[29; 30) " "
+          PATH_TYPE@[30; 31)
+            PATH@[30; 31)
+              PATH_SEGMENT@[30; 31)
+                NAME_REF@[30; 31)
+                  IDENT@[30; 31) "F"
+        COLON@[31; 32) ":"
+        WHITESPACE@[32; 33) " "
+        TYPE_BOUND_LIST@[33; 44)
+          TYPE_BOUND@[33; 44)
+            PATH_TYPE@[33; 44)
+              PATH@[33; 44)
+                PATH_SEGMENT@[33; 44)
+                  NAME_REF@[33; 35)
+                    IDENT@[33; 35) "Fn"
+                  PARAM_LIST@[35; 44)
+                    L_PAREN@[35; 36) "("
+                    PARAM@[36; 43)
+                      REFERENCE_TYPE@[36; 43)
+                        AMP@[36; 37) "&"
+                        LIFETIME@[37; 39) "\'a"
+                        WHITESPACE@[39; 40) " "
+                        PATH_TYPE@[40; 43)
+                          PATH@[40; 43)
+                            PATH_SEGMENT@[40; 43)
+                              NAME_REF@[40; 43)
+                                IDENT@[40; 43) "str"
+                    R_PAREN@[43; 44) ")"
+    WHITESPACE@[44; 45) "\n"
+    BLOCK@[45; 48)
+      L_CURLY@[45; 46) "{"
+      WHITESPACE@[46; 47) " "
+      R_CURLY@[47; 48) "}"
+  WHITESPACE@[48; 49) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rs b/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.rs
new file mode 100644 (file)
index 0000000..d8c23c7
--- /dev/null
@@ -0,0 +1 @@
+type F = Box<Fn(a: i32, &b: &i32, &mut c: &i32, ())>;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.txt b/crates/ra_syntax/test_data/parser/inline/ok/0004_value_parameters_no_patterns.txt
new file mode 100644 (file)
index 0000000..8cfba84
--- /dev/null
@@ -0,0 +1,81 @@
+SOURCE_FILE@[0; 54)
+  TYPE_ALIAS_DEF@[0; 53)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "F"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    PATH_TYPE@[9; 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) "mut"
+                          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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rs b/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.rs
new file mode 100644 (file)
index 0000000..9df40ed
--- /dev/null
@@ -0,0 +1 @@
+fn foo<T: Clone + Copy>(){}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt b/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt
new file mode 100644 (file)
index 0000000..c1a70d5
--- /dev/null
@@ -0,0 +1,37 @@
+SOURCE_FILE@[0; 28)
+  FN_DEF@[0; 27)
+    FN_KW@[0; 2) "fn"
+    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) " "
+        TYPE_BOUND_LIST@[10; 22)
+          TYPE_BOUND@[10; 15)
+            PATH_TYPE@[10; 15)
+              PATH@[10; 15)
+                PATH_SEGMENT@[10; 15)
+                  NAME_REF@[10; 15)
+                    IDENT@[10; 15) "Clone"
+          WHITESPACE@[15; 16) " "
+          PLUS@[16; 17) "+"
+          WHITESPACE@[17; 18) " "
+          TYPE_BOUND@[18; 22)
+            PATH_TYPE@[18; 22)
+              PATH@[18; 22)
+                PATH_SEGMENT@[18; 22)
+                  NAME_REF@[18; 22)
+                    IDENT@[18; 22) "Copy"
+      R_ANGLE@[22; 23) ">"
+    PARAM_LIST@[23; 25)
+      L_PAREN@[23; 24) "("
+      R_PAREN@[24; 25) ")"
+    BLOCK@[25; 27)
+      L_CURLY@[25; 26) "{"
+      R_CURLY@[26; 27) "}"
+  WHITESPACE@[27; 28) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rs b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rs
new file mode 100644 (file)
index 0000000..80c0a43
--- /dev/null
@@ -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/test_data/parser/inline/ok/0006_self_param.txt b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt
new file mode 100644 (file)
index 0000000..8e210a6
--- /dev/null
@@ -0,0 +1,116 @@
+SOURCE_FILE@[0; 128)
+  IMPL_BLOCK@[0; 127)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 6)
+      PATH@[5; 6)
+        PATH_SEGMENT@[5; 6)
+          NAME_REF@[5; 6)
+            IDENT@[5; 6) "S"
+    WHITESPACE@[6; 7) " "
+    ITEM_LIST@[7; 127)
+      L_CURLY@[7; 8) "{"
+      WHITESPACE@[8; 13) "\n    "
+      FN_DEF@[13; 26)
+        FN_KW@[13; 15) "fn"
+        WHITESPACE@[15; 16) " "
+        NAME@[16; 17)
+          IDENT@[16; 17) "a"
+        PARAM_LIST@[17; 23)
+          L_PAREN@[17; 18) "("
+          SELF_PARAM@[18; 22)
+            SELF_KW@[18; 22) "self"
+          R_PAREN@[22; 23) ")"
+        WHITESPACE@[23; 24) " "
+        BLOCK@[24; 26)
+          L_CURLY@[24; 25) "{"
+          R_CURLY@[25; 26) "}"
+      WHITESPACE@[26; 31) "\n    "
+      FN_DEF@[31; 46)
+        FN_KW@[31; 33) "fn"
+        WHITESPACE@[33; 34) " "
+        NAME@[34; 35)
+          IDENT@[34; 35) "b"
+        PARAM_LIST@[35; 43)
+          L_PAREN@[35; 36) "("
+          SELF_PARAM@[36; 41)
+            AMP@[36; 37) "&"
+            SELF_KW@[37; 41) "self"
+          COMMA@[41; 42) ","
+          R_PAREN@[42; 43) ")"
+        WHITESPACE@[43; 44) " "
+        BLOCK@[44; 46)
+          L_CURLY@[44; 45) "{"
+          R_CURLY@[45; 46) "}"
+      WHITESPACE@[46; 51) "\n    "
+      FN_DEF@[51; 69)
+        FN_KW@[51; 53) "fn"
+        WHITESPACE@[53; 54) " "
+        NAME@[54; 55)
+          IDENT@[54; 55) "c"
+        PARAM_LIST@[55; 66)
+          L_PAREN@[55; 56) "("
+          SELF_PARAM@[56; 64)
+            AMP@[56; 57) "&"
+            LIFETIME@[57; 59) "\'a"
+            WHITESPACE@[59; 60) " "
+            SELF_KW@[60; 64) "self"
+          COMMA@[64; 65) ","
+          R_PAREN@[65; 66) ")"
+        WHITESPACE@[66; 67) " "
+        BLOCK@[67; 69)
+          L_CURLY@[67; 68) "{"
+          R_CURLY@[68; 69) "}"
+      WHITESPACE@[69; 74) "\n    "
+      FN_DEF@[74; 103)
+        FN_KW@[74; 76) "fn"
+        WHITESPACE@[76; 77) " "
+        NAME@[77; 78)
+          IDENT@[77; 78) "d"
+        PARAM_LIST@[78; 100)
+          L_PAREN@[78; 79) "("
+          SELF_PARAM@[79; 91)
+            AMP@[79; 80) "&"
+            LIFETIME@[80; 82) "\'a"
+            WHITESPACE@[82; 83) " "
+            MUT_KW@[83; 86) "mut"
+            WHITESPACE@[86; 87) " "
+            SELF_KW@[87; 91) "self"
+          COMMA@[91; 92) ","
+          WHITESPACE@[92; 93) " "
+          PARAM@[93; 99)
+            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) "\n    "
+      FN_DEF@[108; 125)
+        FN_KW@[108; 110) "fn"
+        WHITESPACE@[110; 111) " "
+        NAME@[111; 112)
+          IDENT@[111; 112) "e"
+        PARAM_LIST@[112; 122)
+          L_PAREN@[112; 113) "("
+          SELF_PARAM@[113; 121)
+            MUT_KW@[113; 116) "mut"
+            WHITESPACE@[116; 117) " "
+            SELF_KW@[117; 121) "self"
+          R_PAREN@[121; 122) ")"
+        WHITESPACE@[122; 123) " "
+        BLOCK@[123; 125)
+          L_CURLY@[123; 124) "{"
+          R_CURLY@[124; 125) "}"
+      WHITESPACE@[125; 126) "\n"
+      R_CURLY@[126; 127) "}"
+  WHITESPACE@[127; 128) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rs b/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.rs
new file mode 100644 (file)
index 0000000..919bde0
--- /dev/null
@@ -0,0 +1 @@
+struct S<T: 'a + ?Sized + (Copy)>;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.txt b/crates/ra_syntax/test_data/parser/inline/ok/0007_type_param_bounds.txt
new file mode 100644 (file)
index 0000000..a7186c7
--- /dev/null
@@ -0,0 +1,40 @@
+SOURCE_FILE@[0; 35)
+  STRUCT_DEF@[0; 34)
+    STRUCT_KW@[0; 6) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[12; 32)
+          TYPE_BOUND@[12; 14)
+            LIFETIME@[12; 14) "\'a"
+          WHITESPACE@[14; 15) " "
+          PLUS@[15; 16) "+"
+          WHITESPACE@[16; 17) " "
+          TYPE_BOUND@[17; 23)
+            QUESTION@[17; 18) "?"
+            PATH_TYPE@[18; 23)
+              PATH@[18; 23)
+                PATH_SEGMENT@[18; 23)
+                  NAME_REF@[18; 23)
+                    IDENT@[18; 23) "Sized"
+          WHITESPACE@[23; 24) " "
+          PLUS@[24; 25) "+"
+          WHITESPACE@[25; 26) " "
+          TYPE_BOUND@[26; 32)
+            L_PAREN@[26; 27) "("
+            PATH_TYPE@[27; 31)
+              PATH@[27; 31)
+                PATH_SEGMENT@[27; 31)
+                  NAME_REF@[27; 31)
+                    IDENT@[27; 31) "Copy"
+            R_PAREN@[31; 32) ")"
+      R_ANGLE@[32; 33) ">"
+    SEMI@[33; 34) ";"
+  WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rs b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.rs
new file mode 100644 (file)
index 0000000..f6e32c7
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    let foo::Bar = ();
+    let ::Bar = ();
+    let Bar { .. } = ();
+    let Bar(..) = ();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt
new file mode 100644 (file)
index 0000000..0c6be48
--- /dev/null
@@ -0,0 +1,95 @@
+SOURCE_FILE@[0; 103)
+  FN_DEF@[0; 102)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 102)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 33)
+        LET_KW@[15; 18) "let"
+        WHITESPACE@[18; 19) " "
+        PATH_PAT@[19; 27)
+          PATH@[19; 27)
+            PATH@[19; 22)
+              PATH_SEGMENT@[19; 22)
+                NAME_REF@[19; 22)
+                  IDENT@[19; 22) "foo"
+            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) "\n    "
+      LET_STMT@[38; 53)
+        LET_KW@[38; 41) "let"
+        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) "\n    "
+      LET_STMT@[58; 78)
+        LET_KW@[58; 61) "let"
+        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) "\n    "
+      LET_STMT@[83; 100)
+        LET_KW@[83; 86) "let"
+        WHITESPACE@[86; 87) " "
+        TUPLE_STRUCT_PAT@[87; 94)
+          PATH@[87; 90)
+            PATH_SEGMENT@[87; 90)
+              NAME_REF@[87; 90)
+                IDENT@[87; 90) "Bar"
+          L_PAREN@[90; 91) "("
+          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) "\n"
+      R_CURLY@[101; 102) "}"
+  WHITESPACE@[102; 103) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.rs
new file mode 100644 (file)
index 0000000..9f078fa
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo() {
+    loop {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt
new file mode 100644 (file)
index 0000000..8240aba
--- /dev/null
@@ -0,0 +1,24 @@
+SOURCE_FILE@[0; 26)
+  FN_DEF@[0; 25)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 25)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 23)
+        LOOP_EXPR@[15; 22)
+          LOOP_KW@[15; 19) "loop"
+          WHITESPACE@[19; 20) " "
+          BLOCK@[20; 22)
+            L_CURLY@[20; 21) "{"
+            R_CURLY@[21; 22) "}"
+        SEMI@[22; 23) ";"
+      WHITESPACE@[23; 24) "\n"
+      R_CURLY@[24; 25) "}"
+  WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rs b/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.rs
new file mode 100644 (file)
index 0000000..26a9ccd
--- /dev/null
@@ -0,0 +1 @@
+extern {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.txt b/crates/ra_syntax/test_data/parser/inline/ok/0010_extern_block.txt
new file mode 100644 (file)
index 0000000..506f56f
--- /dev/null
@@ -0,0 +1,9 @@
+SOURCE_FILE@[0; 10)
+  EXTERN_BLOCK@[0; 9)
+    ABI@[0; 6)
+      EXTERN_KW@[0; 6) "extern"
+    WHITESPACE@[6; 7) " "
+    EXTERN_ITEM_LIST@[7; 9)
+      L_CURLY@[7; 8) "{"
+      R_CURLY@[8; 9) "}"
+  WHITESPACE@[9; 10) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.rs
new file mode 100644 (file)
index 0000000..b8da2dd
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    x.foo;
+    x.0.bar;
+    x.0();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt
new file mode 100644 (file)
index 0000000..78054ec
--- /dev/null
@@ -0,0 +1,57 @@
+SOURCE_FILE@[0; 48)
+  FN_DEF@[0; 47)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 47)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 21)
+        FIELD_EXPR@[15; 20)
+          PATH_EXPR@[15; 16)
+            PATH@[15; 16)
+              PATH_SEGMENT@[15; 16)
+                NAME_REF@[15; 16)
+                  IDENT@[15; 16) "x"
+          DOT@[16; 17) "."
+          NAME_REF@[17; 20)
+            IDENT@[17; 20) "foo"
+        SEMI@[20; 21) ";"
+      WHITESPACE@[21; 26) "\n    "
+      EXPR_STMT@[26; 34)
+        FIELD_EXPR@[26; 33)
+          FIELD_EXPR@[26; 29)
+            PATH_EXPR@[26; 27)
+              PATH@[26; 27)
+                PATH_SEGMENT@[26; 27)
+                  NAME_REF@[26; 27)
+                    IDENT@[26; 27) "x"
+            DOT@[27; 28) "."
+            INT_NUMBER@[28; 29) "0"
+          DOT@[29; 30) "."
+          NAME_REF@[30; 33)
+            IDENT@[30; 33) "bar"
+        SEMI@[33; 34) ";"
+      WHITESPACE@[34; 39) "\n    "
+      EXPR_STMT@[39; 45)
+        CALL_EXPR@[39; 44)
+          FIELD_EXPR@[39; 42)
+            PATH_EXPR@[39; 40)
+              PATH@[39; 40)
+                PATH_SEGMENT@[39; 40)
+                  NAME_REF@[39; 40)
+                    IDENT@[39; 40) "x"
+            DOT@[40; 41) "."
+            INT_NUMBER@[41; 42) "0"
+          ARG_LIST@[42; 44)
+            L_PAREN@[42; 43) "("
+            R_PAREN@[43; 44) ")"
+        SEMI@[44; 45) ";"
+      WHITESPACE@[45; 46) "\n"
+      R_CURLY@[46; 47) "}"
+  WHITESPACE@[47; 48) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rs b/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.rs
new file mode 100644 (file)
index 0000000..a602d07
--- /dev/null
@@ -0,0 +1 @@
+type Foo where Foo: Copy = ();
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.txt b/crates/ra_syntax/test_data/parser/inline/ok/0012_type_item_where_clause.txt
new file mode 100644 (file)
index 0000000..da04dac
--- /dev/null
@@ -0,0 +1,33 @@
+SOURCE_FILE@[0; 31)
+  TYPE_ALIAS_DEF@[0; 30)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 8)
+      IDENT@[5; 8) "Foo"
+    WHITESPACE@[8; 9) " "
+    WHERE_CLAUSE@[9; 24)
+      WHERE_KW@[9; 14) "where"
+      WHITESPACE@[14; 15) " "
+      WHERE_PRED@[15; 24)
+        PATH_TYPE@[15; 18)
+          PATH@[15; 18)
+            PATH_SEGMENT@[15; 18)
+              NAME_REF@[15; 18)
+                IDENT@[15; 18) "Foo"
+        COLON@[18; 19) ":"
+        WHITESPACE@[19; 20) " "
+        TYPE_BOUND_LIST@[20; 24)
+          TYPE_BOUND@[20; 24)
+            PATH_TYPE@[20; 24)
+              PATH@[20; 24)
+                PATH_SEGMENT@[20; 24)
+                  NAME_REF@[20; 24)
+                    IDENT@[20; 24) "Copy"
+    WHITESPACE@[24; 25) " "
+    EQ@[25; 26) "="
+    WHITESPACE@[26; 27) " "
+    TUPLE_TYPE@[27; 29)
+      L_PAREN@[27; 28) "("
+      R_PAREN@[28; 29) ")"
+    SEMI@[29; 30) ";"
+  WHITESPACE@[30; 31) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rs b/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.rs
new file mode 100644 (file)
index 0000000..04b2bb9
--- /dev/null
@@ -0,0 +1,2 @@
+type M = *mut ();
+type C = *mut ();
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.txt b/crates/ra_syntax/test_data/parser/inline/ok/0013_pointer_type_mut.txt
new file mode 100644 (file)
index 0000000..c05f873
--- /dev/null
@@ -0,0 +1,35 @@
+SOURCE_FILE@[0; 36)
+  TYPE_ALIAS_DEF@[0; 17)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "M"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    POINTER_TYPE@[9; 16)
+      STAR@[9; 10) "*"
+      MUT_KW@[10; 13) "mut"
+      WHITESPACE@[13; 14) " "
+      TUPLE_TYPE@[14; 16)
+        L_PAREN@[14; 15) "("
+        R_PAREN@[15; 16) ")"
+    SEMI@[16; 17) ";"
+  WHITESPACE@[17; 18) "\n"
+  TYPE_ALIAS_DEF@[18; 35)
+    TYPE_KW@[18; 22) "type"
+    WHITESPACE@[22; 23) " "
+    NAME@[23; 24)
+      IDENT@[23; 24) "C"
+    WHITESPACE@[24; 25) " "
+    EQ@[25; 26) "="
+    WHITESPACE@[26; 27) " "
+    POINTER_TYPE@[27; 34)
+      STAR@[27; 28) "*"
+      MUT_KW@[28; 31) "mut"
+      WHITESPACE@[31; 32) " "
+      TUPLE_TYPE@[32; 34)
+        L_PAREN@[32; 33) "("
+        R_PAREN@[33; 34) ")"
+    SEMI@[34; 35) ";"
+  WHITESPACE@[35; 36) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.rs
new file mode 100644 (file)
index 0000000..de399fc
--- /dev/null
@@ -0,0 +1 @@
+type Never = !;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0014_never_type.txt
new file mode 100644 (file)
index 0000000..ac53e4f
--- /dev/null
@@ -0,0 +1,13 @@
+SOURCE_FILE@[0; 16)
+  TYPE_ALIAS_DEF@[0; 15)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 10)
+      IDENT@[5; 10) "Never"
+    WHITESPACE@[10; 11) " "
+    EQ@[11; 12) "="
+    WHITESPACE@[12; 13) " "
+    NEVER_TYPE@[13; 14)
+      EXCL@[13; 14) "!"
+    SEMI@[14; 15) ";"
+  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.rs
new file mode 100644 (file)
index 0000000..474cc3f
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    loop {
+        continue;
+        continue 'l;
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt
new file mode 100644 (file)
index 0000000..e8cc32f
--- /dev/null
@@ -0,0 +1,35 @@
+SOURCE_FILE@[0; 69)
+  FN_DEF@[0; 68)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 68)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LOOP_EXPR@[15; 66)
+        LOOP_KW@[15; 19) "loop"
+        WHITESPACE@[19; 20) " "
+        BLOCK@[20; 66)
+          L_CURLY@[20; 21) "{"
+          WHITESPACE@[21; 30) "\n        "
+          EXPR_STMT@[30; 39)
+            CONTINUE_EXPR@[30; 38)
+              CONTINUE_KW@[30; 38) "continue"
+            SEMI@[38; 39) ";"
+          WHITESPACE@[39; 48) "\n        "
+          EXPR_STMT@[48; 60)
+            CONTINUE_EXPR@[48; 59)
+              CONTINUE_KW@[48; 56) "continue"
+              WHITESPACE@[56; 57) " "
+              LIFETIME@[57; 59) "\'l"
+            SEMI@[59; 60) ";"
+          WHITESPACE@[60; 65) "\n    "
+          R_CURLY@[65; 66) "}"
+      WHITESPACE@[66; 67) "\n"
+      R_CURLY@[67; 68) "}"
+  WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rs b/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.rs
new file mode 100644 (file)
index 0000000..04e0215
--- /dev/null
@@ -0,0 +1 @@
+unsafe trait T {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.txt b/crates/ra_syntax/test_data/parser/inline/ok/0016_unsafe_trait.txt
new file mode 100644 (file)
index 0000000..7b43f12
--- /dev/null
@@ -0,0 +1,13 @@
+SOURCE_FILE@[0; 18)
+  TRAIT_DEF@[0; 17)
+    UNSAFE_KW@[0; 6) "unsafe"
+    WHITESPACE@[6; 7) " "
+    TRAIT_KW@[7; 12) "trait"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.rs
new file mode 100644 (file)
index 0000000..27eb22f
--- /dev/null
@@ -0,0 +1 @@
+type T = [(); 92];
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0017_array_type.txt
new file mode 100644 (file)
index 0000000..b4055c9
--- /dev/null
@@ -0,0 +1,21 @@
+SOURCE_FILE@[0; 19)
+  TYPE_ALIAS_DEF@[0; 18)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    ARRAY_TYPE@[9; 17)
+      L_BRACK@[9; 10) "["
+      TUPLE_TYPE@[10; 12)
+        L_PAREN@[10; 11) "("
+        R_PAREN@[11; 12) ")"
+      SEMI@[12; 13) ";"
+      WHITESPACE@[13; 14) " "
+      LITERAL@[14; 16)
+        INT_NUMBER@[14; 16) "92"
+      R_BRACK@[16; 17) "]"
+    SEMI@[17; 18) ";"
+  WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rs b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rs
new file mode 100644 (file)
index 0000000..6a170d5
--- /dev/null
@@ -0,0 +1,4 @@
+impl S {
+    fn a(self: &Self) {}
+    fn b(mut self: Box<Self>) {}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt
new file mode 100644 (file)
index 0000000..67d0de0
--- /dev/null
@@ -0,0 +1,72 @@
+SOURCE_FILE@[0; 69)
+  IMPL_BLOCK@[0; 68)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 6)
+      PATH@[5; 6)
+        PATH_SEGMENT@[5; 6)
+          NAME_REF@[5; 6)
+            IDENT@[5; 6) "S"
+    WHITESPACE@[6; 7) " "
+    ITEM_LIST@[7; 68)
+      L_CURLY@[7; 8) "{"
+      WHITESPACE@[8; 13) "\n    "
+      FN_DEF@[13; 33)
+        FN_KW@[13; 15) "fn"
+        WHITESPACE@[15; 16) " "
+        NAME@[16; 17)
+          IDENT@[16; 17) "a"
+        PARAM_LIST@[17; 30)
+          L_PAREN@[17; 18) "("
+          SELF_PARAM@[18; 29)
+            SELF_KW@[18; 22) "self"
+            COLON@[22; 23) ":"
+            WHITESPACE@[23; 24) " "
+            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) "\n    "
+      FN_DEF@[38; 66)
+        FN_KW@[38; 40) "fn"
+        WHITESPACE@[40; 41) " "
+        NAME@[41; 42)
+          IDENT@[41; 42) "b"
+        PARAM_LIST@[42; 63)
+          L_PAREN@[42; 43) "("
+          SELF_PARAM@[43; 62)
+            MUT_KW@[43; 46) "mut"
+            WHITESPACE@[46; 47) " "
+            SELF_KW@[47; 51) "self"
+            COLON@[51; 52) ":"
+            WHITESPACE@[52; 53) " "
+            PATH_TYPE@[53; 62)
+              PATH@[53; 62)
+                PATH_SEGMENT@[53; 62)
+                  NAME_REF@[53; 56)
+                    IDENT@[53; 56) "Box"
+                  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) "\n"
+      R_CURLY@[67; 68) "}"
+  WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.rs
new file mode 100644 (file)
index 0000000..f1c3f71
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    **&1;
+    !!true;
+    --1;
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt
new file mode 100644 (file)
index 0000000..42032f5
--- /dev/null
@@ -0,0 +1,44 @@
+SOURCE_FILE@[0; 44)
+  FN_DEF@[0; 43)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 43)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 20)
+        PREFIX_EXPR@[15; 19)
+          STAR@[15; 16) "*"
+          PREFIX_EXPR@[16; 19)
+            STAR@[16; 17) "*"
+            REF_EXPR@[17; 19)
+              AMP@[17; 18) "&"
+              LITERAL@[18; 19)
+                INT_NUMBER@[18; 19) "1"
+        SEMI@[19; 20) ";"
+      WHITESPACE@[20; 25) "\n    "
+      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) "true"
+        SEMI@[31; 32) ";"
+      WHITESPACE@[32; 37) "\n    "
+      EXPR_STMT@[37; 41)
+        PREFIX_EXPR@[37; 40)
+          MINUS@[37; 38) "-"
+          PREFIX_EXPR@[38; 40)
+            MINUS@[38; 39) "-"
+            LITERAL@[39; 40)
+              INT_NUMBER@[39; 40) "1"
+        SEMI@[40; 41) ";"
+      WHITESPACE@[41; 42) "\n"
+      R_CURLY@[42; 43) "}"
+  WHITESPACE@[43; 44) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rs b/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.rs
new file mode 100644 (file)
index 0000000..6f15769
--- /dev/null
@@ -0,0 +1,4 @@
+use *;
+use ::*;
+use some::path::{*};
+use some::path::{::*};
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.txt b/crates/ra_syntax/test_data/parser/inline/ok/0020_use_star.txt
new file mode 100644 (file)
index 0000000..dd2095d
--- /dev/null
@@ -0,0 +1,59 @@
+SOURCE_FILE@[0; 60)
+  USE_ITEM@[0; 6)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 5)
+      STAR@[4; 5) "*"
+    SEMI@[5; 6) ";"
+  WHITESPACE@[6; 7) "\n"
+  USE_ITEM@[7; 15)
+    USE_KW@[7; 10) "use"
+    WHITESPACE@[10; 11) " "
+    USE_TREE@[11; 14)
+      COLONCOLON@[11; 13) "::"
+      STAR@[13; 14) "*"
+    SEMI@[14; 15) ";"
+  WHITESPACE@[15; 16) "\n"
+  USE_ITEM@[16; 36)
+    USE_KW@[16; 19) "use"
+    WHITESPACE@[19; 20) " "
+    USE_TREE@[20; 35)
+      PATH@[20; 30)
+        PATH@[20; 24)
+          PATH_SEGMENT@[20; 24)
+            NAME_REF@[20; 24)
+              IDENT@[20; 24) "some"
+        COLONCOLON@[24; 26) "::"
+        PATH_SEGMENT@[26; 30)
+          NAME_REF@[26; 30)
+            IDENT@[26; 30) "path"
+      COLONCOLON@[30; 32) "::"
+      USE_TREE_LIST@[32; 35)
+        L_CURLY@[32; 33) "{"
+        USE_TREE@[33; 34)
+          STAR@[33; 34) "*"
+        R_CURLY@[34; 35) "}"
+    SEMI@[35; 36) ";"
+  WHITESPACE@[36; 37) "\n"
+  USE_ITEM@[37; 59)
+    USE_KW@[37; 40) "use"
+    WHITESPACE@[40; 41) " "
+    USE_TREE@[41; 58)
+      PATH@[41; 51)
+        PATH@[41; 45)
+          PATH_SEGMENT@[41; 45)
+            NAME_REF@[41; 45)
+              IDENT@[41; 45) "some"
+        COLONCOLON@[45; 47) "::"
+        PATH_SEGMENT@[47; 51)
+          NAME_REF@[47; 51)
+            IDENT@[47; 51) "path"
+      COLONCOLON@[51; 53) "::"
+      USE_TREE_LIST@[53; 58)
+        L_CURLY@[53; 54) "{"
+        USE_TREE@[54; 57)
+          COLONCOLON@[54; 56) "::"
+          STAR@[56; 57) "*"
+        R_CURLY@[57; 58) "}"
+    SEMI@[58; 59) ";"
+  WHITESPACE@[59; 60) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rs b/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.rs
new file mode 100644 (file)
index 0000000..f108514
--- /dev/null
@@ -0,0 +1,6 @@
+impl F {
+    type A = i32;
+    const B: i32 = 92;
+    fn foo() {}
+    fn bar(&self) {}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt
new file mode 100644 (file)
index 0000000..a893833
--- /dev/null
@@ -0,0 +1,78 @@
+SOURCE_FILE@[0; 89)
+  IMPL_BLOCK@[0; 88)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 6)
+      PATH@[5; 6)
+        PATH_SEGMENT@[5; 6)
+          NAME_REF@[5; 6)
+            IDENT@[5; 6) "F"
+    WHITESPACE@[6; 7) " "
+    ITEM_LIST@[7; 88)
+      L_CURLY@[7; 8) "{"
+      WHITESPACE@[8; 13) "\n    "
+      TYPE_ALIAS_DEF@[13; 26)
+        TYPE_KW@[13; 17) "type"
+        WHITESPACE@[17; 18) " "
+        NAME@[18; 19)
+          IDENT@[18; 19) "A"
+        WHITESPACE@[19; 20) " "
+        EQ@[20; 21) "="
+        WHITESPACE@[21; 22) " "
+        PATH_TYPE@[22; 25)
+          PATH@[22; 25)
+            PATH_SEGMENT@[22; 25)
+              NAME_REF@[22; 25)
+                IDENT@[22; 25) "i32"
+        SEMI@[25; 26) ";"
+      WHITESPACE@[26; 31) "\n    "
+      CONST_DEF@[31; 49)
+        CONST_KW@[31; 36) "const"
+        WHITESPACE@[36; 37) " "
+        NAME@[37; 38)
+          IDENT@[37; 38) "B"
+        COLON@[38; 39) ":"
+        WHITESPACE@[39; 40) " "
+        PATH_TYPE@[40; 43)
+          PATH@[40; 43)
+            PATH_SEGMENT@[40; 43)
+              NAME_REF@[40; 43)
+                IDENT@[40; 43) "i32"
+        WHITESPACE@[43; 44) " "
+        EQ@[44; 45) "="
+        WHITESPACE@[45; 46) " "
+        LITERAL@[46; 48)
+          INT_NUMBER@[46; 48) "92"
+        SEMI@[48; 49) ";"
+      WHITESPACE@[49; 54) "\n    "
+      FN_DEF@[54; 65)
+        FN_KW@[54; 56) "fn"
+        WHITESPACE@[56; 57) " "
+        NAME@[57; 60)
+          IDENT@[57; 60) "foo"
+        PARAM_LIST@[60; 62)
+          L_PAREN@[60; 61) "("
+          R_PAREN@[61; 62) ")"
+        WHITESPACE@[62; 63) " "
+        BLOCK@[63; 65)
+          L_CURLY@[63; 64) "{"
+          R_CURLY@[64; 65) "}"
+      WHITESPACE@[65; 70) "\n    "
+      FN_DEF@[70; 86)
+        FN_KW@[70; 72) "fn"
+        WHITESPACE@[72; 73) " "
+        NAME@[73; 76)
+          IDENT@[73; 76) "bar"
+        PARAM_LIST@[76; 83)
+          L_PAREN@[76; 77) "("
+          SELF_PARAM@[77; 82)
+            AMP@[77; 78) "&"
+            SELF_KW@[78; 82) "self"
+          R_PAREN@[82; 83) ")"
+        WHITESPACE@[83; 84) " "
+        BLOCK@[84; 86)
+          L_CURLY@[84; 85) "{"
+          R_CURLY@[85; 86) "}"
+      WHITESPACE@[86; 87) "\n"
+      R_CURLY@[87; 88) "}"
+  WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rs b/crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.rs
new file mode 100644 (file)
index 0000000..faeefde
--- /dev/null
@@ -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/test_data/parser/inline/ok/0022_crate_visibility.txt b/crates/ra_syntax/test_data/parser/inline/ok/0022_crate_visibility.txt
new file mode 100644 (file)
index 0000000..891943f
--- /dev/null
@@ -0,0 +1,53 @@
+SOURCE_FILE@[0; 81)
+  STRUCT_DEF@[0; 20)
+    VISIBILITY@[0; 10)
+      PUB_KW@[0; 3) "pub"
+      L_PAREN@[3; 4) "("
+      CRATE_KW@[4; 9) "crate"
+      R_PAREN@[9; 10) ")"
+    WHITESPACE@[10; 11) " "
+    STRUCT_KW@[11; 17) "struct"
+    WHITESPACE@[17; 18) " "
+    NAME@[18; 19)
+      IDENT@[18; 19) "S"
+    SEMI@[19; 20) ";"
+  WHITESPACE@[20; 21) "\n"
+  STRUCT_DEF@[21; 40)
+    VISIBILITY@[21; 30)
+      PUB_KW@[21; 24) "pub"
+      L_PAREN@[24; 25) "("
+      SELF_KW@[25; 29) "self"
+      R_PAREN@[29; 30) ")"
+    WHITESPACE@[30; 31) " "
+    STRUCT_KW@[31; 37) "struct"
+    WHITESPACE@[37; 38) " "
+    NAME@[38; 39)
+      IDENT@[38; 39) "S"
+    SEMI@[39; 40) ";"
+  WHITESPACE@[40; 41) "\n"
+  STRUCT_DEF@[41; 60)
+    VISIBILITY@[41; 50)
+      PUB_KW@[41; 44) "pub"
+      L_PAREN@[44; 45) "("
+      SELF_KW@[45; 49) "self"
+      R_PAREN@[49; 50) ")"
+    WHITESPACE@[50; 51) " "
+    STRUCT_KW@[51; 57) "struct"
+    WHITESPACE@[57; 58) " "
+    NAME@[58; 59)
+      IDENT@[58; 59) "S"
+    SEMI@[59; 60) ";"
+  WHITESPACE@[60; 61) "\n"
+  STRUCT_DEF@[61; 80)
+    VISIBILITY@[61; 70)
+      PUB_KW@[61; 64) "pub"
+      L_PAREN@[64; 65) "("
+      SELF_KW@[65; 69) "self"
+      R_PAREN@[69; 70) ")"
+    WHITESPACE@[70; 71) " "
+    STRUCT_KW@[71; 77) "struct"
+    WHITESPACE@[77; 78) " "
+    NAME@[78; 79)
+      IDENT@[78; 79) "S"
+    SEMI@[79; 80) ";"
+  WHITESPACE@[80; 81) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.rs
new file mode 100644 (file)
index 0000000..7952dbd
--- /dev/null
@@ -0,0 +1 @@
+type Placeholder = _;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0023_placeholder_type.txt
new file mode 100644 (file)
index 0000000..0f32aec
--- /dev/null
@@ -0,0 +1,13 @@
+SOURCE_FILE@[0; 22)
+  TYPE_ALIAS_DEF@[0; 21)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 16)
+      IDENT@[5; 16) "Placeholder"
+    WHITESPACE@[16; 17) " "
+    EQ@[17; 18) "="
+    WHITESPACE@[18; 19) " "
+    PLACEHOLDER_TYPE@[19; 20)
+      UNDERSCORE@[19; 20) "_"
+    SEMI@[20; 21) ";"
+  WHITESPACE@[21; 22) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.rs
new file mode 100644 (file)
index 0000000..7955973
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    let [a, b, ..] = [];
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt
new file mode 100644 (file)
index 0000000..40ddbfb
--- /dev/null
@@ -0,0 +1,40 @@
+SOURCE_FILE@[0; 39)
+  FN_DEF@[0; 38)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 38)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      LET_STMT@[16; 36)
+        LET_KW@[16; 19) "let"
+        WHITESPACE@[19; 20) " "
+        SLICE_PAT@[20; 30)
+          L_BRACK@[20; 21) "["
+          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) "\n"
+      R_CURLY@[37; 38) "}"
+  WHITESPACE@[38; 39) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.rs
new file mode 100644 (file)
index 0000000..4da1af8
--- /dev/null
@@ -0,0 +1 @@
+type T = [()];
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0025_slice_type.txt
new file mode 100644 (file)
index 0000000..b3a2428
--- /dev/null
@@ -0,0 +1,17 @@
+SOURCE_FILE@[0; 15)
+  TYPE_ALIAS_DEF@[0; 14)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    SLICE_TYPE@[9; 13)
+      L_BRACK@[9; 10) "["
+      TUPLE_TYPE@[10; 12)
+        L_PAREN@[10; 11) "("
+        R_PAREN@[11; 12) ")"
+      R_BRACK@[12; 13) "]"
+    SEMI@[13; 14) ";"
+  WHITESPACE@[14; 15) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rs b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.rs
new file mode 100644 (file)
index 0000000..0dfe636
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    let S() = ();
+    let S(_) = ();
+    let S(_,) = ();
+    let S(_, .. , x) = ();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt
new file mode 100644 (file)
index 0000000..0ff9364
--- /dev/null
@@ -0,0 +1,103 @@
+SOURCE_FILE@[0; 97)
+  FN_DEF@[0; 96)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 96)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 28)
+        LET_KW@[15; 18) "let"
+        WHITESPACE@[18; 19) " "
+        TUPLE_STRUCT_PAT@[19; 22)
+          PATH@[19; 20)
+            PATH_SEGMENT@[19; 20)
+              NAME_REF@[19; 20)
+                IDENT@[19; 20) "S"
+          L_PAREN@[20; 21) "("
+          R_PAREN@[21; 22) ")"
+        WHITESPACE@[22; 23) " "
+        EQ@[23; 24) "="
+        WHITESPACE@[24; 25) " "
+        TUPLE_EXPR@[25; 27)
+          L_PAREN@[25; 26) "("
+          R_PAREN@[26; 27) ")"
+        SEMI@[27; 28) ";"
+      WHITESPACE@[28; 33) "\n    "
+      LET_STMT@[33; 47)
+        LET_KW@[33; 36) "let"
+        WHITESPACE@[36; 37) " "
+        TUPLE_STRUCT_PAT@[37; 41)
+          PATH@[37; 38)
+            PATH_SEGMENT@[37; 38)
+              NAME_REF@[37; 38)
+                IDENT@[37; 38) "S"
+          L_PAREN@[38; 39) "("
+          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) "\n    "
+      LET_STMT@[52; 67)
+        LET_KW@[52; 55) "let"
+        WHITESPACE@[55; 56) " "
+        TUPLE_STRUCT_PAT@[56; 61)
+          PATH@[56; 57)
+            PATH_SEGMENT@[56; 57)
+              NAME_REF@[56; 57)
+                IDENT@[56; 57) "S"
+          L_PAREN@[57; 58) "("
+          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) "\n    "
+      LET_STMT@[72; 94)
+        LET_KW@[72; 75) "let"
+        WHITESPACE@[75; 76) " "
+        TUPLE_STRUCT_PAT@[76; 88)
+          PATH@[76; 77)
+            PATH_SEGMENT@[76; 77)
+              NAME_REF@[76; 77)
+                IDENT@[76; 77) "S"
+          L_PAREN@[77; 78) "("
+          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) "\n"
+      R_CURLY@[95; 96) "}"
+  WHITESPACE@[96; 97) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.rs
new file mode 100644 (file)
index 0000000..de41f5c
--- /dev/null
@@ -0,0 +1,4 @@
+fn main() {
+    let &a = ();
+    let &mut b = ();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt
new file mode 100644 (file)
index 0000000..a833b1b
--- /dev/null
@@ -0,0 +1,49 @@
+SOURCE_FILE@[0; 52)
+  FN_DEF@[0; 51)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 51)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      LET_STMT@[16; 28)
+        LET_KW@[16; 19) "let"
+        WHITESPACE@[19; 20) " "
+        REF_PAT@[20; 22)
+          AMP@[20; 21) "&"
+          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) "\n    "
+      LET_STMT@[33; 49)
+        LET_KW@[33; 36) "let"
+        WHITESPACE@[36; 37) " "
+        REF_PAT@[37; 43)
+          AMP@[37; 38) "&"
+          MUT_KW@[38; 41) "mut"
+          WHITESPACE@[41; 42) " "
+          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) "\n"
+      R_CURLY@[50; 51) "}"
+  WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.rs
new file mode 100644 (file)
index 0000000..54c5a7c
--- /dev/null
@@ -0,0 +1 @@
+type A = impl Iterator<Item=Foo<'a>> + 'a;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0028_impl_trait_type.txt
new file mode 100644 (file)
index 0000000..f07027f
--- /dev/null
@@ -0,0 +1,43 @@
+SOURCE_FILE@[0; 43)
+  TYPE_ALIAS_DEF@[0; 42)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    IMPL_TRAIT_TYPE@[9; 41)
+      IMPL_KW@[9; 13) "impl"
+      WHITESPACE@[13; 14) " "
+      TYPE_BOUND_LIST@[14; 41)
+        TYPE_BOUND@[14; 36)
+          PATH_TYPE@[14; 36)
+            PATH@[14; 36)
+              PATH_SEGMENT@[14; 36)
+                NAME_REF@[14; 22)
+                  IDENT@[14; 22) "Iterator"
+                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) " "
+        TYPE_BOUND@[39; 41)
+          LIFETIME@[39; 41) "\'a"
+    SEMI@[41; 42) ";"
+  WHITESPACE@[42; 43) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.rs
new file mode 100644 (file)
index 0000000..bfe8e4b
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    82 as i32;
+    81 as i8 + 1;
+    79 as i16 - 1;
+    0x36 as u8 <= 0x37;
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt
new file mode 100644 (file)
index 0000000..11c14e3
--- /dev/null
@@ -0,0 +1,89 @@
+SOURCE_FILE@[0; 89)
+  FN_DEF@[0; 88)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 88)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 25)
+        CAST_EXPR@[15; 24)
+          LITERAL@[15; 17)
+            INT_NUMBER@[15; 17) "82"
+          WHITESPACE@[17; 18) " "
+          AS_KW@[18; 20) "as"
+          WHITESPACE@[20; 21) " "
+          PATH_TYPE@[21; 24)
+            PATH@[21; 24)
+              PATH_SEGMENT@[21; 24)
+                NAME_REF@[21; 24)
+                  IDENT@[21; 24) "i32"
+        SEMI@[24; 25) ";"
+      WHITESPACE@[25; 30) "\n    "
+      EXPR_STMT@[30; 43)
+        BIN_EXPR@[30; 42)
+          CAST_EXPR@[30; 38)
+            LITERAL@[30; 32)
+              INT_NUMBER@[30; 32) "81"
+            WHITESPACE@[32; 33) " "
+            AS_KW@[33; 35) "as"
+            WHITESPACE@[35; 36) " "
+            PATH_TYPE@[36; 38)
+              PATH@[36; 38)
+                PATH_SEGMENT@[36; 38)
+                  NAME_REF@[36; 38)
+                    IDENT@[36; 38) "i8"
+          WHITESPACE@[38; 39) " "
+          PLUS@[39; 40) "+"
+          WHITESPACE@[40; 41) " "
+          LITERAL@[41; 42)
+            INT_NUMBER@[41; 42) "1"
+        SEMI@[42; 43) ";"
+      WHITESPACE@[43; 48) "\n    "
+      EXPR_STMT@[48; 62)
+        BIN_EXPR@[48; 61)
+          CAST_EXPR@[48; 57)
+            LITERAL@[48; 50)
+              INT_NUMBER@[48; 50) "79"
+            WHITESPACE@[50; 51) " "
+            AS_KW@[51; 53) "as"
+            WHITESPACE@[53; 54) " "
+            PATH_TYPE@[54; 57)
+              PATH@[54; 57)
+                PATH_SEGMENT@[54; 57)
+                  NAME_REF@[54; 57)
+                    IDENT@[54; 57) "i16"
+          WHITESPACE@[57; 58) " "
+          MINUS@[58; 59) "-"
+          WHITESPACE@[59; 60) " "
+          LITERAL@[60; 61)
+            INT_NUMBER@[60; 61) "1"
+        SEMI@[61; 62) ";"
+      WHITESPACE@[62; 67) "\n    "
+      EXPR_STMT@[67; 86)
+        BIN_EXPR@[67; 85)
+          CAST_EXPR@[67; 77)
+            LITERAL@[67; 71)
+              INT_NUMBER@[67; 71) "0x36"
+            WHITESPACE@[71; 72) " "
+            AS_KW@[72; 74) "as"
+            WHITESPACE@[74; 75) " "
+            PATH_TYPE@[75; 77)
+              PATH@[75; 77)
+                PATH_SEGMENT@[75; 77)
+                  NAME_REF@[75; 77)
+                    IDENT@[75; 77) "u8"
+          WHITESPACE@[77; 78) " "
+          LTEQ@[78; 80) "<="
+          WHITESPACE@[80; 81) " "
+          LITERAL@[81; 85)
+            INT_NUMBER@[81; 85) "0x37"
+        SEMI@[85; 86) ";"
+      WHITESPACE@[86; 87) "\n"
+      R_CURLY@[87; 88) "}"
+  WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rs b/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.rs
new file mode 100644 (file)
index 0000000..2552a26
--- /dev/null
@@ -0,0 +1,7 @@
+fn foo() { if let Some(_) = None {} }
+fn bar() {
+    if let Some(_) | Some(_) = None {}
+    if let | Some(_) = None {}
+    while let Some(_) | Some(_) = None {}
+    while let | Some(_) = None {}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt b/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt
new file mode 100644 (file)
index 0000000..1c9414b
--- /dev/null
@@ -0,0 +1,200 @@
+SOURCE_FILE@[0; 197)
+  FN_DEF@[0; 37)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 37)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) " "
+      IF_EXPR@[11; 35)
+        IF_KW@[11; 13) "if"
+        WHITESPACE@[13; 14) " "
+        CONDITION@[14; 32)
+          LET_KW@[14; 17) "let"
+          WHITESPACE@[17; 18) " "
+          TUPLE_STRUCT_PAT@[18; 25)
+            PATH@[18; 22)
+              PATH_SEGMENT@[18; 22)
+                NAME_REF@[18; 22)
+                  IDENT@[18; 22) "Some"
+            L_PAREN@[22; 23) "("
+            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) "\n"
+  FN_DEF@[38; 196)
+    FN_KW@[38; 40) "fn"
+    WHITESPACE@[40; 41) " "
+    NAME@[41; 44)
+      IDENT@[41; 44) "bar"
+    PARAM_LIST@[44; 46)
+      L_PAREN@[44; 45) "("
+      R_PAREN@[45; 46) ")"
+    WHITESPACE@[46; 47) " "
+    BLOCK@[47; 196)
+      L_CURLY@[47; 48) "{"
+      WHITESPACE@[48; 53) "\n    "
+      EXPR_STMT@[53; 87)
+        IF_EXPR@[53; 87)
+          IF_KW@[53; 55) "if"
+          WHITESPACE@[55; 56) " "
+          CONDITION@[56; 84)
+            LET_KW@[56; 59) "let"
+            WHITESPACE@[59; 60) " "
+            TUPLE_STRUCT_PAT@[60; 67)
+              PATH@[60; 64)
+                PATH_SEGMENT@[60; 64)
+                  NAME_REF@[60; 64)
+                    IDENT@[60; 64) "Some"
+              L_PAREN@[64; 65) "("
+              PLACEHOLDER_PAT@[65; 66)
+                UNDERSCORE@[65; 66) "_"
+              R_PAREN@[66; 67) ")"
+            WHITESPACE@[67; 68) " "
+            PIPE@[68; 69) "|"
+            WHITESPACE@[69; 70) " "
+            TUPLE_STRUCT_PAT@[70; 77)
+              PATH@[70; 74)
+                PATH_SEGMENT@[70; 74)
+                  NAME_REF@[70; 74)
+                    IDENT@[70; 74) "Some"
+              L_PAREN@[74; 75) "("
+              PLACEHOLDER_PAT@[75; 76)
+                UNDERSCORE@[75; 76) "_"
+              R_PAREN@[76; 77) ")"
+            WHITESPACE@[77; 78) " "
+            EQ@[78; 79) "="
+            WHITESPACE@[79; 80) " "
+            PATH_EXPR@[80; 84)
+              PATH@[80; 84)
+                PATH_SEGMENT@[80; 84)
+                  NAME_REF@[80; 84)
+                    IDENT@[80; 84) "None"
+          WHITESPACE@[84; 85) " "
+          BLOCK@[85; 87)
+            L_CURLY@[85; 86) "{"
+            R_CURLY@[86; 87) "}"
+      WHITESPACE@[87; 92) "\n    "
+      EXPR_STMT@[92; 118)
+        IF_EXPR@[92; 118)
+          IF_KW@[92; 94) "if"
+          WHITESPACE@[94; 95) " "
+          CONDITION@[95; 115)
+            LET_KW@[95; 98) "let"
+            WHITESPACE@[98; 99) " "
+            PIPE@[99; 100) "|"
+            WHITESPACE@[100; 101) " "
+            TUPLE_STRUCT_PAT@[101; 108)
+              PATH@[101; 105)
+                PATH_SEGMENT@[101; 105)
+                  NAME_REF@[101; 105)
+                    IDENT@[101; 105) "Some"
+              L_PAREN@[105; 106) "("
+              PLACEHOLDER_PAT@[106; 107)
+                UNDERSCORE@[106; 107) "_"
+              R_PAREN@[107; 108) ")"
+            WHITESPACE@[108; 109) " "
+            EQ@[109; 110) "="
+            WHITESPACE@[110; 111) " "
+            PATH_EXPR@[111; 115)
+              PATH@[111; 115)
+                PATH_SEGMENT@[111; 115)
+                  NAME_REF@[111; 115)
+                    IDENT@[111; 115) "None"
+          WHITESPACE@[115; 116) " "
+          BLOCK@[116; 118)
+            L_CURLY@[116; 117) "{"
+            R_CURLY@[117; 118) "}"
+      WHITESPACE@[118; 123) "\n    "
+      EXPR_STMT@[123; 160)
+        WHILE_EXPR@[123; 160)
+          WHILE_KW@[123; 128) "while"
+          WHITESPACE@[128; 129) " "
+          CONDITION@[129; 157)
+            LET_KW@[129; 132) "let"
+            WHITESPACE@[132; 133) " "
+            TUPLE_STRUCT_PAT@[133; 140)
+              PATH@[133; 137)
+                PATH_SEGMENT@[133; 137)
+                  NAME_REF@[133; 137)
+                    IDENT@[133; 137) "Some"
+              L_PAREN@[137; 138) "("
+              PLACEHOLDER_PAT@[138; 139)
+                UNDERSCORE@[138; 139) "_"
+              R_PAREN@[139; 140) ")"
+            WHITESPACE@[140; 141) " "
+            PIPE@[141; 142) "|"
+            WHITESPACE@[142; 143) " "
+            TUPLE_STRUCT_PAT@[143; 150)
+              PATH@[143; 147)
+                PATH_SEGMENT@[143; 147)
+                  NAME_REF@[143; 147)
+                    IDENT@[143; 147) "Some"
+              L_PAREN@[147; 148) "("
+              PLACEHOLDER_PAT@[148; 149)
+                UNDERSCORE@[148; 149) "_"
+              R_PAREN@[149; 150) ")"
+            WHITESPACE@[150; 151) " "
+            EQ@[151; 152) "="
+            WHITESPACE@[152; 153) " "
+            PATH_EXPR@[153; 157)
+              PATH@[153; 157)
+                PATH_SEGMENT@[153; 157)
+                  NAME_REF@[153; 157)
+                    IDENT@[153; 157) "None"
+          WHITESPACE@[157; 158) " "
+          BLOCK@[158; 160)
+            L_CURLY@[158; 159) "{"
+            R_CURLY@[159; 160) "}"
+      WHITESPACE@[160; 165) "\n    "
+      WHILE_EXPR@[165; 194)
+        WHILE_KW@[165; 170) "while"
+        WHITESPACE@[170; 171) " "
+        CONDITION@[171; 191)
+          LET_KW@[171; 174) "let"
+          WHITESPACE@[174; 175) " "
+          PIPE@[175; 176) "|"
+          WHITESPACE@[176; 177) " "
+          TUPLE_STRUCT_PAT@[177; 184)
+            PATH@[177; 181)
+              PATH_SEGMENT@[177; 181)
+                NAME_REF@[177; 181)
+                  IDENT@[177; 181) "Some"
+            L_PAREN@[181; 182) "("
+            PLACEHOLDER_PAT@[182; 183)
+              UNDERSCORE@[182; 183) "_"
+            R_PAREN@[183; 184) ")"
+          WHITESPACE@[184; 185) " "
+          EQ@[185; 186) "="
+          WHITESPACE@[186; 187) " "
+          PATH_EXPR@[187; 191)
+            PATH@[187; 191)
+              PATH_SEGMENT@[187; 191)
+                NAME_REF@[187; 191)
+                  IDENT@[187; 191) "None"
+        WHITESPACE@[191; 192) " "
+        BLOCK@[192; 194)
+          L_CURLY@[192; 193) "{"
+          R_CURLY@[193; 194) "}"
+      WHITESPACE@[194; 195) "\n"
+      R_CURLY@[195; 196) "}"
+  WHITESPACE@[196; 197) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs
new file mode 100644 (file)
index 0000000..293046a
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+    while true {};
+    while let Some(x) = it.next() {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt
new file mode 100644 (file)
index 0000000..a772117
--- /dev/null
@@ -0,0 +1,66 @@
+SOURCE_FILE@[0; 70)
+  FN_DEF@[0; 69)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 69)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 29)
+        WHILE_EXPR@[15; 28)
+          WHILE_KW@[15; 20) "while"
+          WHITESPACE@[20; 21) " "
+          CONDITION@[21; 25)
+            LITERAL@[21; 25)
+              TRUE_KW@[21; 25) "true"
+          WHITESPACE@[25; 26) " "
+          BLOCK@[26; 28)
+            L_CURLY@[26; 27) "{"
+            R_CURLY@[27; 28) "}"
+        SEMI@[28; 29) ";"
+      WHITESPACE@[29; 34) "\n    "
+      EXPR_STMT@[34; 67)
+        WHILE_EXPR@[34; 66)
+          WHILE_KW@[34; 39) "while"
+          WHITESPACE@[39; 40) " "
+          CONDITION@[40; 63)
+            LET_KW@[40; 43) "let"
+            WHITESPACE@[43; 44) " "
+            TUPLE_STRUCT_PAT@[44; 51)
+              PATH@[44; 48)
+                PATH_SEGMENT@[44; 48)
+                  NAME_REF@[44; 48)
+                    IDENT@[44; 48) "Some"
+              L_PAREN@[48; 49) "("
+              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) "\n"
+      R_CURLY@[68; 69) "}"
+  WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.rs
new file mode 100644 (file)
index 0000000..9493da8
--- /dev/null
@@ -0,0 +1,4 @@
+type A = fn();
+type B = unsafe fn();
+type C = unsafe extern "C" fn();
+type D = extern "C" fn ( u8 , ... ) -> u8;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0032_fn_pointer_type.txt
new file mode 100644 (file)
index 0000000..a0a8aea
--- /dev/null
@@ -0,0 +1,97 @@
+SOURCE_FILE@[0; 113)
+  TYPE_ALIAS_DEF@[0; 14)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    FN_POINTER_TYPE@[9; 13)
+      FN_KW@[9; 11) "fn"
+      PARAM_LIST@[11; 13)
+        L_PAREN@[11; 12) "("
+        R_PAREN@[12; 13) ")"
+    SEMI@[13; 14) ";"
+  WHITESPACE@[14; 15) "\n"
+  TYPE_ALIAS_DEF@[15; 36)
+    TYPE_KW@[15; 19) "type"
+    WHITESPACE@[19; 20) " "
+    NAME@[20; 21)
+      IDENT@[20; 21) "B"
+    WHITESPACE@[21; 22) " "
+    EQ@[22; 23) "="
+    WHITESPACE@[23; 24) " "
+    FN_POINTER_TYPE@[24; 35)
+      UNSAFE_KW@[24; 30) "unsafe"
+      WHITESPACE@[30; 31) " "
+      FN_KW@[31; 33) "fn"
+      PARAM_LIST@[33; 35)
+        L_PAREN@[33; 34) "("
+        R_PAREN@[34; 35) ")"
+    SEMI@[35; 36) ";"
+  WHITESPACE@[36; 37) "\n"
+  TYPE_ALIAS_DEF@[37; 69)
+    TYPE_KW@[37; 41) "type"
+    WHITESPACE@[41; 42) " "
+    NAME@[42; 43)
+      IDENT@[42; 43) "C"
+    WHITESPACE@[43; 44) " "
+    EQ@[44; 45) "="
+    WHITESPACE@[45; 46) " "
+    FN_POINTER_TYPE@[46; 68)
+      UNSAFE_KW@[46; 52) "unsafe"
+      WHITESPACE@[52; 53) " "
+      ABI@[53; 63)
+        EXTERN_KW@[53; 59) "extern"
+        WHITESPACE@[59; 60) " "
+        STRING@[60; 63) "\"C\""
+      WHITESPACE@[63; 64) " "
+      FN_KW@[64; 66) "fn"
+      PARAM_LIST@[66; 68)
+        L_PAREN@[66; 67) "("
+        R_PAREN@[67; 68) ")"
+    SEMI@[68; 69) ";"
+  WHITESPACE@[69; 70) "\n"
+  TYPE_ALIAS_DEF@[70; 112)
+    TYPE_KW@[70; 74) "type"
+    WHITESPACE@[74; 75) " "
+    NAME@[75; 76)
+      IDENT@[75; 76) "D"
+    WHITESPACE@[76; 77) " "
+    EQ@[77; 78) "="
+    WHITESPACE@[78; 79) " "
+    FN_POINTER_TYPE@[79; 111)
+      ABI@[79; 89)
+        EXTERN_KW@[79; 85) "extern"
+        WHITESPACE@[85; 86) " "
+        STRING@[86; 89) "\"C\""
+      WHITESPACE@[89; 90) " "
+      FN_KW@[90; 92) "fn"
+      WHITESPACE@[92; 93) " "
+      PARAM_LIST@[93; 105)
+        L_PAREN@[93; 94) "("
+        WHITESPACE@[94; 95) " "
+        PARAM@[95; 97)
+          PATH_TYPE@[95; 97)
+            PATH@[95; 97)
+              PATH_SEGMENT@[95; 97)
+                NAME_REF@[95; 97)
+                  IDENT@[95; 97) "u8"
+        WHITESPACE@[97; 98) " "
+        COMMA@[98; 99) ","
+        WHITESPACE@[99; 100) " "
+        DOTDOTDOT@[100; 103) "..."
+        WHITESPACE@[103; 104) " "
+        R_PAREN@[104; 105) ")"
+      WHITESPACE@[105; 106) " "
+      RET_TYPE@[106; 111)
+        THIN_ARROW@[106; 108) "->"
+        WHITESPACE@[108; 109) " "
+        PATH_TYPE@[109; 111)
+          PATH@[109; 111)
+            PATH_SEGMENT@[109; 111)
+              NAME_REF@[109; 111)
+                IDENT@[109; 111) "u8"
+    SEMI@[111; 112) ";"
+  WHITESPACE@[112; 113) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rs b/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.rs
new file mode 100644 (file)
index 0000000..3ac0bad
--- /dev/null
@@ -0,0 +1,3 @@
+type A = &();
+type B = &'static ();
+type C = &mut ();
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.txt b/crates/ra_syntax/test_data/parser/inline/ok/0033_reference_type;.txt
new file mode 100644 (file)
index 0000000..7642ea6
--- /dev/null
@@ -0,0 +1,50 @@
+SOURCE_FILE@[0; 54)
+  TYPE_ALIAS_DEF@[0; 13)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    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) "\n"
+  TYPE_ALIAS_DEF@[14; 35)
+    TYPE_KW@[14; 18) "type"
+    WHITESPACE@[18; 19) " "
+    NAME@[19; 20)
+      IDENT@[19; 20) "B"
+    WHITESPACE@[20; 21) " "
+    EQ@[21; 22) "="
+    WHITESPACE@[22; 23) " "
+    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) "\n"
+  TYPE_ALIAS_DEF@[36; 53)
+    TYPE_KW@[36; 40) "type"
+    WHITESPACE@[40; 41) " "
+    NAME@[41; 42)
+      IDENT@[41; 42) "C"
+    WHITESPACE@[42; 43) " "
+    EQ@[43; 44) "="
+    WHITESPACE@[44; 45) " "
+    REFERENCE_TYPE@[45; 52)
+      AMP@[45; 46) "&"
+      MUT_KW@[46; 49) "mut"
+      WHITESPACE@[49; 50) " "
+      TUPLE_TYPE@[50; 52)
+        L_PAREN@[50; 51) "("
+        R_PAREN@[51; 52) ")"
+    SEMI@[52; 53) ";"
+  WHITESPACE@[53; 54) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.rs
new file mode 100644 (file)
index 0000000..1b40946
--- /dev/null
@@ -0,0 +1,8 @@
+fn foo() {
+    loop {
+        break;
+        break 'l;
+        break 92;
+        break 'l 92;
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt
new file mode 100644 (file)
index 0000000..4ece7cd
--- /dev/null
@@ -0,0 +1,53 @@
+SOURCE_FILE@[0; 102)
+  FN_DEF@[0; 101)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 101)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LOOP_EXPR@[15; 99)
+        LOOP_KW@[15; 19) "loop"
+        WHITESPACE@[19; 20) " "
+        BLOCK@[20; 99)
+          L_CURLY@[20; 21) "{"
+          WHITESPACE@[21; 30) "\n        "
+          EXPR_STMT@[30; 36)
+            BREAK_EXPR@[30; 35)
+              BREAK_KW@[30; 35) "break"
+            SEMI@[35; 36) ";"
+          WHITESPACE@[36; 45) "\n        "
+          EXPR_STMT@[45; 54)
+            BREAK_EXPR@[45; 53)
+              BREAK_KW@[45; 50) "break"
+              WHITESPACE@[50; 51) " "
+              LIFETIME@[51; 53) "\'l"
+            SEMI@[53; 54) ";"
+          WHITESPACE@[54; 63) "\n        "
+          EXPR_STMT@[63; 72)
+            BREAK_EXPR@[63; 71)
+              BREAK_KW@[63; 68) "break"
+              WHITESPACE@[68; 69) " "
+              LITERAL@[69; 71)
+                INT_NUMBER@[69; 71) "92"
+            SEMI@[71; 72) ";"
+          WHITESPACE@[72; 81) "\n        "
+          EXPR_STMT@[81; 93)
+            BREAK_EXPR@[81; 92)
+              BREAK_KW@[81; 86) "break"
+              WHITESPACE@[86; 87) " "
+              LIFETIME@[87; 89) "\'l"
+              WHITESPACE@[89; 90) " "
+              LITERAL@[90; 92)
+                INT_NUMBER@[90; 92) "92"
+            SEMI@[92; 93) ";"
+          WHITESPACE@[93; 98) "\n    "
+          R_CURLY@[98; 99) "}"
+      WHITESPACE@[99; 100) "\n"
+      R_CURLY@[100; 101) "}"
+  WHITESPACE@[101; 102) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rs b/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.rs
new file mode 100644 (file)
index 0000000..1295c2c
--- /dev/null
@@ -0,0 +1 @@
+unsafe extern "C" fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt
new file mode 100644 (file)
index 0000000..b5b09b2
--- /dev/null
@@ -0,0 +1,21 @@
+SOURCE_FILE@[0; 30)
+  FN_DEF@[0; 29)
+    UNSAFE_KW@[0; 6) "unsafe"
+    WHITESPACE@[6; 7) " "
+    ABI@[7; 17)
+      EXTERN_KW@[7; 13) "extern"
+      WHITESPACE@[13; 14) " "
+      STRING@[14; 17) "\"C\""
+    WHITESPACE@[17; 18) " "
+    FN_KW@[18; 20) "fn"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rs b/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.rs
new file mode 100644 (file)
index 0000000..d140692
--- /dev/null
@@ -0,0 +1,2 @@
+type X = <A as B>::Output;
+fn foo() { <usize as Default>::default(); }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt b/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt
new file mode 100644 (file)
index 0000000..9bfddf5
--- /dev/null
@@ -0,0 +1,78 @@
+SOURCE_FILE@[0; 71)
+  TYPE_ALIAS_DEF@[0; 26)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "X"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    PATH_TYPE@[9; 25)
+      PATH@[9; 25)
+        PATH@[9; 17)
+          PATH_SEGMENT@[9; 17)
+            L_ANGLE@[9; 10) "<"
+            PATH_TYPE@[10; 11)
+              PATH@[10; 11)
+                PATH_SEGMENT@[10; 11)
+                  NAME_REF@[10; 11)
+                    IDENT@[10; 11) "A"
+            WHITESPACE@[11; 12) " "
+            AS_KW@[12; 14) "as"
+            WHITESPACE@[14; 15) " "
+            PATH_TYPE@[15; 16)
+              PATH@[15; 16)
+                PATH_SEGMENT@[15; 16)
+                  NAME_REF@[15; 16)
+                    IDENT@[15; 16) "B"
+            R_ANGLE@[16; 17) ">"
+        COLONCOLON@[17; 19) "::"
+        PATH_SEGMENT@[19; 25)
+          NAME_REF@[19; 25)
+            IDENT@[19; 25) "Output"
+    SEMI@[25; 26) ";"
+  WHITESPACE@[26; 27) "\n"
+  FN_DEF@[27; 70)
+    FN_KW@[27; 29) "fn"
+    WHITESPACE@[29; 30) " "
+    NAME@[30; 33)
+      IDENT@[30; 33) "foo"
+    PARAM_LIST@[33; 35)
+      L_PAREN@[33; 34) "("
+      R_PAREN@[34; 35) ")"
+    WHITESPACE@[35; 36) " "
+    BLOCK@[36; 70)
+      L_CURLY@[36; 37) "{"
+      WHITESPACE@[37; 38) " "
+      EXPR_STMT@[38; 68)
+        CALL_EXPR@[38; 67)
+          PATH_EXPR@[38; 65)
+            PATH@[38; 65)
+              PATH@[38; 56)
+                PATH_SEGMENT@[38; 56)
+                  L_ANGLE@[38; 39) "<"
+                  PATH_TYPE@[39; 44)
+                    PATH@[39; 44)
+                      PATH_SEGMENT@[39; 44)
+                        NAME_REF@[39; 44)
+                          IDENT@[39; 44) "usize"
+                  WHITESPACE@[44; 45) " "
+                  AS_KW@[45; 47) "as"
+                  WHITESPACE@[47; 48) " "
+                  PATH_TYPE@[48; 55)
+                    PATH@[48; 55)
+                      PATH_SEGMENT@[48; 55)
+                        NAME_REF@[48; 55)
+                          IDENT@[48; 55) "Default"
+                  R_ANGLE@[55; 56) ">"
+              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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.rs
new file mode 100644 (file)
index 0000000..ae21ad9
--- /dev/null
@@ -0,0 +1 @@
+fn foo() { xs[..]; }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt
new file mode 100644 (file)
index 0000000..477c645
--- /dev/null
@@ -0,0 +1,28 @@
+SOURCE_FILE@[0; 21)
+  FN_DEF@[0; 20)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rs b/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.rs
new file mode 100644 (file)
index 0000000..385c431
--- /dev/null
@@ -0,0 +1 @@
+type A = B<'static, i32, Item=u64>;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.txt b/crates/ra_syntax/test_data/parser/inline/ok/0039_type_arg.txt
new file mode 100644 (file)
index 0000000..4786bf7
--- /dev/null
@@ -0,0 +1,40 @@
+SOURCE_FILE@[0; 36)
+  TYPE_ALIAS_DEF@[0; 35)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    PATH_TYPE@[9; 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) ">"
+    SEMI@[34; 35) ";"
+  WHITESPACE@[35; 36) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rs b/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.rs
new file mode 100644 (file)
index 0000000..e2b5f21
--- /dev/null
@@ -0,0 +1,3 @@
+crate fn main() { }
+struct S { crate field: u32 }
+struct T(crate u32);
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt b/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt
new file mode 100644 (file)
index 0000000..fb82461
--- /dev/null
@@ -0,0 +1,62 @@
+SOURCE_FILE@[0; 71)
+  FN_DEF@[0; 19)
+    VISIBILITY@[0; 5)
+      CRATE_KW@[0; 5) "crate"
+    WHITESPACE@[5; 6) " "
+    FN_KW@[6; 8) "fn"
+    WHITESPACE@[8; 9) " "
+    NAME@[9; 13)
+      IDENT@[9; 13) "main"
+    PARAM_LIST@[13; 15)
+      L_PAREN@[13; 14) "("
+      R_PAREN@[14; 15) ")"
+    WHITESPACE@[15; 16) " "
+    BLOCK@[16; 19)
+      L_CURLY@[16; 17) "{"
+      WHITESPACE@[17; 18) " "
+      R_CURLY@[18; 19) "}"
+  WHITESPACE@[19; 20) "\n"
+  STRUCT_DEF@[20; 49)
+    STRUCT_KW@[20; 26) "struct"
+    WHITESPACE@[26; 27) " "
+    NAME@[27; 28)
+      IDENT@[27; 28) "S"
+    WHITESPACE@[28; 29) " "
+    NAMED_FIELD_DEF_LIST@[29; 49)
+      L_CURLY@[29; 30) "{"
+      WHITESPACE@[30; 31) " "
+      NAMED_FIELD_DEF@[31; 47)
+        VISIBILITY@[31; 36)
+          CRATE_KW@[31; 36) "crate"
+        WHITESPACE@[36; 37) " "
+        NAME@[37; 42)
+          IDENT@[37; 42) "field"
+        COLON@[42; 43) ":"
+        WHITESPACE@[43; 44) " "
+        PATH_TYPE@[44; 47)
+          PATH@[44; 47)
+            PATH_SEGMENT@[44; 47)
+              NAME_REF@[44; 47)
+                IDENT@[44; 47) "u32"
+      WHITESPACE@[47; 48) " "
+      R_CURLY@[48; 49) "}"
+  WHITESPACE@[49; 50) "\n"
+  STRUCT_DEF@[50; 70)
+    STRUCT_KW@[50; 56) "struct"
+    WHITESPACE@[56; 57) " "
+    NAME@[57; 58)
+      IDENT@[57; 58) "T"
+    POS_FIELD_DEF_LIST@[58; 69)
+      L_PAREN@[58; 59) "("
+      POS_FIELD_DEF@[59; 68)
+        VISIBILITY@[59; 64)
+          CRATE_KW@[59; 64) "crate"
+        WHITESPACE@[64; 65) " "
+        PATH_TYPE@[65; 68)
+          PATH@[65; 68)
+            PATH_SEGMENT@[65; 68)
+              NAME_REF@[65; 68)
+                IDENT@[65; 68) "u32"
+      R_PAREN@[68; 69) ")"
+    SEMI@[69; 70) ";"
+  WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rs b/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.rs
new file mode 100644 (file)
index 0000000..32761dd
--- /dev/null
@@ -0,0 +1,2 @@
+trait T<U>: Hash + Clone where U: Copy {}
+trait X<U: Debug + Display>: Hash + Clone where U: Copy {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.txt b/crates/ra_syntax/test_data/parser/inline/ok/0041_trait_item.txt
new file mode 100644 (file)
index 0000000..5783617
--- /dev/null
@@ -0,0 +1,125 @@
+SOURCE_FILE@[0; 101)
+  TRAIT_DEF@[0; 41)
+    TRAIT_KW@[0; 5) "trait"
+    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) " "
+    TYPE_BOUND_LIST@[12; 24)
+      TYPE_BOUND@[12; 16)
+        PATH_TYPE@[12; 16)
+          PATH@[12; 16)
+            PATH_SEGMENT@[12; 16)
+              NAME_REF@[12; 16)
+                IDENT@[12; 16) "Hash"
+      WHITESPACE@[16; 17) " "
+      PLUS@[17; 18) "+"
+      WHITESPACE@[18; 19) " "
+      TYPE_BOUND@[19; 24)
+        PATH_TYPE@[19; 24)
+          PATH@[19; 24)
+            PATH_SEGMENT@[19; 24)
+              NAME_REF@[19; 24)
+                IDENT@[19; 24) "Clone"
+    WHITESPACE@[24; 25) " "
+    WHERE_CLAUSE@[25; 38)
+      WHERE_KW@[25; 30) "where"
+      WHITESPACE@[30; 31) " "
+      WHERE_PRED@[31; 38)
+        PATH_TYPE@[31; 32)
+          PATH@[31; 32)
+            PATH_SEGMENT@[31; 32)
+              NAME_REF@[31; 32)
+                IDENT@[31; 32) "U"
+        COLON@[32; 33) ":"
+        WHITESPACE@[33; 34) " "
+        TYPE_BOUND_LIST@[34; 38)
+          TYPE_BOUND@[34; 38)
+            PATH_TYPE@[34; 38)
+              PATH@[34; 38)
+                PATH_SEGMENT@[34; 38)
+                  NAME_REF@[34; 38)
+                    IDENT@[34; 38) "Copy"
+    WHITESPACE@[38; 39) " "
+    ITEM_LIST@[39; 41)
+      L_CURLY@[39; 40) "{"
+      R_CURLY@[40; 41) "}"
+  WHITESPACE@[41; 42) "\n"
+  TRAIT_DEF@[42; 100)
+    TRAIT_KW@[42; 47) "trait"
+    WHITESPACE@[47; 48) " "
+    NAME@[48; 49)
+      IDENT@[48; 49) "X"
+    TYPE_PARAM_LIST@[49; 69)
+      L_ANGLE@[49; 50) "<"
+      TYPE_PARAM@[50; 68)
+        NAME@[50; 51)
+          IDENT@[50; 51) "U"
+        COLON@[51; 52) ":"
+        WHITESPACE@[52; 53) " "
+        TYPE_BOUND_LIST@[53; 68)
+          TYPE_BOUND@[53; 58)
+            PATH_TYPE@[53; 58)
+              PATH@[53; 58)
+                PATH_SEGMENT@[53; 58)
+                  NAME_REF@[53; 58)
+                    IDENT@[53; 58) "Debug"
+          WHITESPACE@[58; 59) " "
+          PLUS@[59; 60) "+"
+          WHITESPACE@[60; 61) " "
+          TYPE_BOUND@[61; 68)
+            PATH_TYPE@[61; 68)
+              PATH@[61; 68)
+                PATH_SEGMENT@[61; 68)
+                  NAME_REF@[61; 68)
+                    IDENT@[61; 68) "Display"
+      R_ANGLE@[68; 69) ">"
+    COLON@[69; 70) ":"
+    WHITESPACE@[70; 71) " "
+    TYPE_BOUND_LIST@[71; 83)
+      TYPE_BOUND@[71; 75)
+        PATH_TYPE@[71; 75)
+          PATH@[71; 75)
+            PATH_SEGMENT@[71; 75)
+              NAME_REF@[71; 75)
+                IDENT@[71; 75) "Hash"
+      WHITESPACE@[75; 76) " "
+      PLUS@[76; 77) "+"
+      WHITESPACE@[77; 78) " "
+      TYPE_BOUND@[78; 83)
+        PATH_TYPE@[78; 83)
+          PATH@[78; 83)
+            PATH_SEGMENT@[78; 83)
+              NAME_REF@[78; 83)
+                IDENT@[78; 83) "Clone"
+    WHITESPACE@[83; 84) " "
+    WHERE_CLAUSE@[84; 97)
+      WHERE_KW@[84; 89) "where"
+      WHITESPACE@[89; 90) " "
+      WHERE_PRED@[90; 97)
+        PATH_TYPE@[90; 91)
+          PATH@[90; 91)
+            PATH_SEGMENT@[90; 91)
+              NAME_REF@[90; 91)
+                IDENT@[90; 91) "U"
+        COLON@[91; 92) ":"
+        WHITESPACE@[92; 93) " "
+        TYPE_BOUND_LIST@[93; 97)
+          TYPE_BOUND@[93; 97)
+            PATH_TYPE@[93; 97)
+              PATH@[93; 97)
+                PATH_SEGMENT@[93; 97)
+                  NAME_REF@[93; 97)
+                    IDENT@[93; 97) "Copy"
+    WHITESPACE@[97; 98) " "
+    ITEM_LIST@[98; 100)
+      L_CURLY@[98; 99) "{"
+      R_CURLY@[99; 100) "}"
+  WHITESPACE@[100; 101) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.rs
new file mode 100644 (file)
index 0000000..ffbf46d
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    let _ = f();
+    let _ = f()(1)(1, 2,);
+    let _ = f(<Foo>::func());
+    f(<Foo as Trait>::func());
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt
new file mode 100644 (file)
index 0000000..dd8946a
--- /dev/null
@@ -0,0 +1,147 @@
+SOURCE_FILE@[0; 118)
+  FN_DEF@[0; 117)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 117)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 27)
+        LET_KW@[15; 18) "let"
+        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) "\n    "
+      LET_STMT@[32; 54)
+        LET_KW@[32; 35) "let"
+        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; 59) "\n    "
+      LET_STMT@[59; 84)
+        LET_KW@[59; 62) "let"
+        WHITESPACE@[62; 63) " "
+        PLACEHOLDER_PAT@[63; 64)
+          UNDERSCORE@[63; 64) "_"
+        WHITESPACE@[64; 65) " "
+        EQ@[65; 66) "="
+        WHITESPACE@[66; 67) " "
+        CALL_EXPR@[67; 83)
+          PATH_EXPR@[67; 68)
+            PATH@[67; 68)
+              PATH_SEGMENT@[67; 68)
+                NAME_REF@[67; 68)
+                  IDENT@[67; 68) "f"
+          ARG_LIST@[68; 83)
+            L_PAREN@[68; 69) "("
+            CALL_EXPR@[69; 82)
+              PATH_EXPR@[69; 80)
+                PATH@[69; 80)
+                  PATH@[69; 74)
+                    PATH_SEGMENT@[69; 74)
+                      L_ANGLE@[69; 70) "<"
+                      PATH_TYPE@[70; 73)
+                        PATH@[70; 73)
+                          PATH_SEGMENT@[70; 73)
+                            NAME_REF@[70; 73)
+                              IDENT@[70; 73) "Foo"
+                      R_ANGLE@[73; 74) ">"
+                  COLONCOLON@[74; 76) "::"
+                  PATH_SEGMENT@[76; 80)
+                    NAME_REF@[76; 80)
+                      IDENT@[76; 80) "func"
+              ARG_LIST@[80; 82)
+                L_PAREN@[80; 81) "("
+                R_PAREN@[81; 82) ")"
+            R_PAREN@[82; 83) ")"
+        SEMI@[83; 84) ";"
+      WHITESPACE@[84; 89) "\n    "
+      EXPR_STMT@[89; 115)
+        CALL_EXPR@[89; 114)
+          PATH_EXPR@[89; 90)
+            PATH@[89; 90)
+              PATH_SEGMENT@[89; 90)
+                NAME_REF@[89; 90)
+                  IDENT@[89; 90) "f"
+          ARG_LIST@[90; 114)
+            L_PAREN@[90; 91) "("
+            CALL_EXPR@[91; 113)
+              PATH_EXPR@[91; 111)
+                PATH@[91; 111)
+                  PATH@[91; 105)
+                    PATH_SEGMENT@[91; 105)
+                      L_ANGLE@[91; 92) "<"
+                      PATH_TYPE@[92; 95)
+                        PATH@[92; 95)
+                          PATH_SEGMENT@[92; 95)
+                            NAME_REF@[92; 95)
+                              IDENT@[92; 95) "Foo"
+                      WHITESPACE@[95; 96) " "
+                      AS_KW@[96; 98) "as"
+                      WHITESPACE@[98; 99) " "
+                      PATH_TYPE@[99; 104)
+                        PATH@[99; 104)
+                          PATH_SEGMENT@[99; 104)
+                            NAME_REF@[99; 104)
+                              IDENT@[99; 104) "Trait"
+                      R_ANGLE@[104; 105) ">"
+                  COLONCOLON@[105; 107) "::"
+                  PATH_SEGMENT@[107; 111)
+                    NAME_REF@[107; 111)
+                      IDENT@[107; 111) "func"
+              ARG_LIST@[111; 113)
+                L_PAREN@[111; 112) "("
+                R_PAREN@[112; 113) ")"
+            R_PAREN@[113; 114) ")"
+        SEMI@[114; 115) ";"
+      WHITESPACE@[115; 116) "\n"
+      R_CURLY@[116; 117) "}"
+  WHITESPACE@[117; 118) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rs b/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.rs
new file mode 100644 (file)
index 0000000..9be50f8
--- /dev/null
@@ -0,0 +1,8 @@
+use some::path as some_name;
+use some::{
+ other::path as some_other_name,
+ different::path as different_name,
+ yet::another::path,
+ running::out::of::synonyms::for_::different::*
+};
+use Trait as _;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.txt b/crates/ra_syntax/test_data/parser/inline/ok/0043_use_alias.txt
new file mode 100644 (file)
index 0000000..18d8a15
--- /dev/null
@@ -0,0 +1,138 @@
+SOURCE_FILE@[0; 198)
+  USE_ITEM@[0; 28)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 27)
+      PATH@[4; 14)
+        PATH@[4; 8)
+          PATH_SEGMENT@[4; 8)
+            NAME_REF@[4; 8)
+              IDENT@[4; 8) "some"
+        COLONCOLON@[8; 10) "::"
+        PATH_SEGMENT@[10; 14)
+          NAME_REF@[10; 14)
+            IDENT@[10; 14) "path"
+      WHITESPACE@[14; 15) " "
+      ALIAS@[15; 27)
+        AS_KW@[15; 17) "as"
+        WHITESPACE@[17; 18) " "
+        NAME@[18; 27)
+          IDENT@[18; 27) "some_name"
+    SEMI@[27; 28) ";"
+  WHITESPACE@[28; 29) "\n"
+  USE_ITEM@[29; 181)
+    USE_KW@[29; 32) "use"
+    WHITESPACE@[32; 33) " "
+    USE_TREE@[33; 180)
+      PATH@[33; 37)
+        PATH_SEGMENT@[33; 37)
+          NAME_REF@[33; 37)
+            IDENT@[33; 37) "some"
+      COLONCOLON@[37; 39) "::"
+      USE_TREE_LIST@[39; 180)
+        L_CURLY@[39; 40) "{"
+        WHITESPACE@[40; 42) "\n "
+        USE_TREE@[42; 72)
+          PATH@[42; 53)
+            PATH@[42; 47)
+              PATH_SEGMENT@[42; 47)
+                NAME_REF@[42; 47)
+                  IDENT@[42; 47) "other"
+            COLONCOLON@[47; 49) "::"
+            PATH_SEGMENT@[49; 53)
+              NAME_REF@[49; 53)
+                IDENT@[49; 53) "path"
+          WHITESPACE@[53; 54) " "
+          ALIAS@[54; 72)
+            AS_KW@[54; 56) "as"
+            WHITESPACE@[56; 57) " "
+            NAME@[57; 72)
+              IDENT@[57; 72) "some_other_name"
+        COMMA@[72; 73) ","
+        WHITESPACE@[73; 75) "\n "
+        USE_TREE@[75; 108)
+          PATH@[75; 90)
+            PATH@[75; 84)
+              PATH_SEGMENT@[75; 84)
+                NAME_REF@[75; 84)
+                  IDENT@[75; 84) "different"
+            COLONCOLON@[84; 86) "::"
+            PATH_SEGMENT@[86; 90)
+              NAME_REF@[86; 90)
+                IDENT@[86; 90) "path"
+          WHITESPACE@[90; 91) " "
+          ALIAS@[91; 108)
+            AS_KW@[91; 93) "as"
+            WHITESPACE@[93; 94) " "
+            NAME@[94; 108)
+              IDENT@[94; 108) "different_name"
+        COMMA@[108; 109) ","
+        WHITESPACE@[109; 111) "\n "
+        USE_TREE@[111; 129)
+          PATH@[111; 129)
+            PATH@[111; 123)
+              PATH@[111; 114)
+                PATH_SEGMENT@[111; 114)
+                  NAME_REF@[111; 114)
+                    IDENT@[111; 114) "yet"
+              COLONCOLON@[114; 116) "::"
+              PATH_SEGMENT@[116; 123)
+                NAME_REF@[116; 123)
+                  IDENT@[116; 123) "another"
+            COLONCOLON@[123; 125) "::"
+            PATH_SEGMENT@[125; 129)
+              NAME_REF@[125; 129)
+                IDENT@[125; 129) "path"
+        COMMA@[129; 130) ","
+        WHITESPACE@[130; 132) "\n "
+        USE_TREE@[132; 178)
+          PATH@[132; 175)
+            PATH@[132; 164)
+              PATH@[132; 158)
+                PATH@[132; 148)
+                  PATH@[132; 144)
+                    PATH@[132; 139)
+                      PATH_SEGMENT@[132; 139)
+                        NAME_REF@[132; 139)
+                          IDENT@[132; 139) "running"
+                    COLONCOLON@[139; 141) "::"
+                    PATH_SEGMENT@[141; 144)
+                      NAME_REF@[141; 144)
+                        IDENT@[141; 144) "out"
+                  COLONCOLON@[144; 146) "::"
+                  PATH_SEGMENT@[146; 148)
+                    NAME_REF@[146; 148)
+                      IDENT@[146; 148) "of"
+                COLONCOLON@[148; 150) "::"
+                PATH_SEGMENT@[150; 158)
+                  NAME_REF@[150; 158)
+                    IDENT@[150; 158) "synonyms"
+              COLONCOLON@[158; 160) "::"
+              PATH_SEGMENT@[160; 164)
+                NAME_REF@[160; 164)
+                  IDENT@[160; 164) "for_"
+            COLONCOLON@[164; 166) "::"
+            PATH_SEGMENT@[166; 175)
+              NAME_REF@[166; 175)
+                IDENT@[166; 175) "different"
+          COLONCOLON@[175; 177) "::"
+          STAR@[177; 178) "*"
+        WHITESPACE@[178; 179) "\n"
+        R_CURLY@[179; 180) "}"
+    SEMI@[180; 181) ";"
+  WHITESPACE@[181; 182) "\n"
+  USE_ITEM@[182; 197)
+    USE_KW@[182; 185) "use"
+    WHITESPACE@[185; 186) " "
+    USE_TREE@[186; 196)
+      PATH@[186; 191)
+        PATH_SEGMENT@[186; 191)
+          NAME_REF@[186; 191)
+            IDENT@[186; 191) "Trait"
+      WHITESPACE@[191; 192) " "
+      ALIAS@[192; 196)
+        AS_KW@[192; 194) "as"
+        WHITESPACE@[194; 195) " "
+        UNDERSCORE@[195; 196) "_"
+    SEMI@[196; 197) ";"
+  WHITESPACE@[197; 198) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rs b/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.rs
new file mode 100644 (file)
index 0000000..d986871
--- /dev/null
@@ -0,0 +1 @@
+fn a() { fn b() {} }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt b/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt
new file mode 100644 (file)
index 0000000..d1a8c56
--- /dev/null
@@ -0,0 +1,28 @@
+SOURCE_FILE@[0; 21)
+  FN_DEF@[0; 20)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 4)
+      IDENT@[3; 4) "a"
+    PARAM_LIST@[4; 6)
+      L_PAREN@[4; 5) "("
+      R_PAREN@[5; 6) ")"
+    WHITESPACE@[6; 7) " "
+    BLOCK@[7; 20)
+      L_CURLY@[7; 8) "{"
+      WHITESPACE@[8; 9) " "
+      FN_DEF@[9; 18)
+        FN_KW@[9; 11) "fn"
+        WHITESPACE@[11; 12) " "
+        NAME@[12; 13)
+          IDENT@[12; 13) "b"
+        PARAM_LIST@[13; 15)
+          L_PAREN@[13; 14) "("
+          R_PAREN@[14; 15) ")"
+        WHITESPACE@[15; 16) " "
+        BLOCK@[16; 18)
+          L_CURLY@[16; 17) "{"
+          R_CURLY@[17; 18) "}"
+      WHITESPACE@[18; 19) " "
+      R_CURLY@[19; 20) "}"
+  WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs
new file mode 100644 (file)
index 0000000..9b93442
--- /dev/null
@@ -0,0 +1 @@
+fn foo<F: FnMut(&mut Foo<'a>)>(){}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt
new file mode 100644 (file)
index 0000000..f85d6a4
--- /dev/null
@@ -0,0 +1,46 @@
+SOURCE_FILE@[0; 35)
+  FN_DEF@[0; 34)
+    FN_KW@[0; 2) "fn"
+    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) " "
+        TYPE_BOUND_LIST@[10; 29)
+          TYPE_BOUND@[10; 29)
+            PATH_TYPE@[10; 29)
+              PATH@[10; 29)
+                PATH_SEGMENT@[10; 29)
+                  NAME_REF@[10; 15)
+                    IDENT@[10; 15) "FnMut"
+                  PARAM_LIST@[15; 29)
+                    L_PAREN@[15; 16) "("
+                    PARAM@[16; 28)
+                      REFERENCE_TYPE@[16; 28)
+                        AMP@[16; 17) "&"
+                        MUT_KW@[17; 20) "mut"
+                        WHITESPACE@[20; 21) " "
+                        PATH_TYPE@[21; 28)
+                          PATH@[21; 28)
+                            PATH_SEGMENT@[21; 28)
+                              NAME_REF@[21; 24)
+                                IDENT@[21; 24) "Foo"
+                              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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.rs
new file mode 100644 (file)
index 0000000..cb66bad
--- /dev/null
@@ -0,0 +1 @@
+type T = (i32,);
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0046_singleton_tuple_type.txt
new file mode 100644 (file)
index 0000000..c7b4e61
--- /dev/null
@@ -0,0 +1,20 @@
+SOURCE_FILE@[0; 17)
+  TYPE_ALIAS_DEF@[0; 16)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    TUPLE_TYPE@[9; 15)
+      L_PAREN@[9; 10) "("
+      PATH_TYPE@[10; 13)
+        PATH@[10; 13)
+          PATH_SEGMENT@[10; 13)
+            NAME_REF@[10; 13)
+              IDENT@[10; 13) "i32"
+      COMMA@[13; 14) ","
+      R_PAREN@[14; 15) ")"
+    SEMI@[15; 16) ";"
+  WHITESPACE@[16; 17) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rs b/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.rs
new file mode 100644 (file)
index 0000000..9cd6c57
--- /dev/null
@@ -0,0 +1 @@
+unsafe default impl Foo {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.txt b/crates/ra_syntax/test_data/parser/inline/ok/0047_unsafe_default_impl.txt
new file mode 100644 (file)
index 0000000..8f3dcaf
--- /dev/null
@@ -0,0 +1,18 @@
+SOURCE_FILE@[0; 27)
+  IMPL_BLOCK@[0; 26)
+    UNSAFE_KW@[0; 6) "unsafe"
+    WHITESPACE@[6; 7) " "
+    DEFAULT_KW@[7; 14) "default"
+    WHITESPACE@[14; 15) " "
+    IMPL_KW@[15; 19) "impl"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rs b/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.rs
new file mode 100644 (file)
index 0000000..4bb0f63
--- /dev/null
@@ -0,0 +1,2 @@
+fn foo() -> Box<T + 'f> {}
+fn foo() -> Box<dyn T + 'f> {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt b/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt
new file mode 100644 (file)
index 0000000..bb948c8
--- /dev/null
@@ -0,0 +1,81 @@
+SOURCE_FILE@[0; 58)
+  FN_DEF@[0; 26)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    RET_TYPE@[9; 23)
+      THIN_ARROW@[9; 11) "->"
+      WHITESPACE@[11; 12) " "
+      PATH_TYPE@[12; 23)
+        PATH@[12; 23)
+          PATH_SEGMENT@[12; 23)
+            NAME_REF@[12; 15)
+              IDENT@[12; 15) "Box"
+            TYPE_ARG_LIST@[15; 23)
+              L_ANGLE@[15; 16) "<"
+              TYPE_ARG@[16; 22)
+                DYN_TRAIT_TYPE@[16; 22)
+                  TYPE_BOUND_LIST@[16; 22)
+                    TYPE_BOUND@[16; 17)
+                      PATH_TYPE@[16; 17)
+                        PATH@[16; 17)
+                          PATH_SEGMENT@[16; 17)
+                            NAME_REF@[16; 17)
+                              IDENT@[16; 17) "T"
+                    WHITESPACE@[17; 18) " "
+                    PLUS@[18; 19) "+"
+                    WHITESPACE@[19; 20) " "
+                    TYPE_BOUND@[20; 22)
+                      LIFETIME@[20; 22) "\'f"
+              R_ANGLE@[22; 23) ">"
+    WHITESPACE@[23; 24) " "
+    BLOCK@[24; 26)
+      L_CURLY@[24; 25) "{"
+      R_CURLY@[25; 26) "}"
+  WHITESPACE@[26; 27) "\n"
+  FN_DEF@[27; 57)
+    FN_KW@[27; 29) "fn"
+    WHITESPACE@[29; 30) " "
+    NAME@[30; 33)
+      IDENT@[30; 33) "foo"
+    PARAM_LIST@[33; 35)
+      L_PAREN@[33; 34) "("
+      R_PAREN@[34; 35) ")"
+    WHITESPACE@[35; 36) " "
+    RET_TYPE@[36; 54)
+      THIN_ARROW@[36; 38) "->"
+      WHITESPACE@[38; 39) " "
+      PATH_TYPE@[39; 54)
+        PATH@[39; 54)
+          PATH_SEGMENT@[39; 54)
+            NAME_REF@[39; 42)
+              IDENT@[39; 42) "Box"
+            TYPE_ARG_LIST@[42; 54)
+              L_ANGLE@[42; 43) "<"
+              TYPE_ARG@[43; 53)
+                DYN_TRAIT_TYPE@[43; 53)
+                  DYN_KW@[43; 46) "dyn"
+                  WHITESPACE@[46; 47) " "
+                  TYPE_BOUND_LIST@[47; 53)
+                    TYPE_BOUND@[47; 48)
+                      PATH_TYPE@[47; 48)
+                        PATH@[47; 48)
+                          PATH_SEGMENT@[47; 48)
+                            NAME_REF@[47; 48)
+                              IDENT@[47; 48) "T"
+                    WHITESPACE@[48; 49) " "
+                    PLUS@[49; 50) "+"
+                    WHITESPACE@[50; 51) " "
+                    TYPE_BOUND@[51; 53)
+                      LIFETIME@[51; 53) "\'f"
+              R_ANGLE@[53; 54) ">"
+    WHITESPACE@[54; 55) " "
+    BLOCK@[55; 57)
+      L_CURLY@[55; 56) "{"
+      R_CURLY@[56; 57) "}"
+  WHITESPACE@[57; 58) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rs b/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.rs
new file mode 100644 (file)
index 0000000..c9f74f7
--- /dev/null
@@ -0,0 +1 @@
+trait T { fn foo(); }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.txt b/crates/ra_syntax/test_data/parser/inline/ok/0050_fn_decl.txt
new file mode 100644 (file)
index 0000000..19f961e
--- /dev/null
@@ -0,0 +1,22 @@
+SOURCE_FILE@[0; 22)
+  TRAIT_DEF@[0; 21)
+    TRAIT_KW@[0; 5) "trait"
+    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) "fn"
+        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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.rs
new file mode 100644 (file)
index 0000000..c039cf7
--- /dev/null
@@ -0,0 +1 @@
+type T = ();
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0051_unit_type.txt
new file mode 100644 (file)
index 0000000..6a469f8
--- /dev/null
@@ -0,0 +1,14 @@
+SOURCE_FILE@[0; 13)
+  TYPE_ALIAS_DEF@[0; 12)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    TUPLE_TYPE@[9; 11)
+      L_PAREN@[9; 10) "("
+      R_PAREN@[10; 11) ")"
+    SEMI@[11; 12) ";"
+  WHITESPACE@[12; 13) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.rs
new file mode 100644 (file)
index 0000000..bf94f32
--- /dev/null
@@ -0,0 +1,4 @@
+type A = Foo;
+type B = ::Foo;
+type C = self::Foo;
+type D = super::Foo;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0052_path_type.txt
new file mode 100644 (file)
index 0000000..ee55ee2
--- /dev/null
@@ -0,0 +1,70 @@
+SOURCE_FILE@[0; 71)
+  TYPE_ALIAS_DEF@[0; 13)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    PATH_TYPE@[9; 12)
+      PATH@[9; 12)
+        PATH_SEGMENT@[9; 12)
+          NAME_REF@[9; 12)
+            IDENT@[9; 12) "Foo"
+    SEMI@[12; 13) ";"
+  WHITESPACE@[13; 14) "\n"
+  TYPE_ALIAS_DEF@[14; 29)
+    TYPE_KW@[14; 18) "type"
+    WHITESPACE@[18; 19) " "
+    NAME@[19; 20)
+      IDENT@[19; 20) "B"
+    WHITESPACE@[20; 21) " "
+    EQ@[21; 22) "="
+    WHITESPACE@[22; 23) " "
+    PATH_TYPE@[23; 28)
+      PATH@[23; 28)
+        PATH_SEGMENT@[23; 28)
+          COLONCOLON@[23; 25) "::"
+          NAME_REF@[25; 28)
+            IDENT@[25; 28) "Foo"
+    SEMI@[28; 29) ";"
+  WHITESPACE@[29; 30) "\n"
+  TYPE_ALIAS_DEF@[30; 49)
+    TYPE_KW@[30; 34) "type"
+    WHITESPACE@[34; 35) " "
+    NAME@[35; 36)
+      IDENT@[35; 36) "C"
+    WHITESPACE@[36; 37) " "
+    EQ@[37; 38) "="
+    WHITESPACE@[38; 39) " "
+    PATH_TYPE@[39; 48)
+      PATH@[39; 48)
+        PATH@[39; 43)
+          PATH_SEGMENT@[39; 43)
+            SELF_KW@[39; 43) "self"
+        COLONCOLON@[43; 45) "::"
+        PATH_SEGMENT@[45; 48)
+          NAME_REF@[45; 48)
+            IDENT@[45; 48) "Foo"
+    SEMI@[48; 49) ";"
+  WHITESPACE@[49; 50) "\n"
+  TYPE_ALIAS_DEF@[50; 70)
+    TYPE_KW@[50; 54) "type"
+    WHITESPACE@[54; 55) " "
+    NAME@[55; 56)
+      IDENT@[55; 56) "D"
+    WHITESPACE@[56; 57) " "
+    EQ@[57; 58) "="
+    WHITESPACE@[58; 59) " "
+    PATH_TYPE@[59; 69)
+      PATH@[59; 69)
+        PATH@[59; 64)
+          PATH_SEGMENT@[59; 64)
+            SUPER_KW@[59; 64) "super"
+        COLONCOLON@[64; 66) "::"
+        PATH_SEGMENT@[66; 69)
+          NAME_REF@[66; 69)
+            IDENT@[66; 69) "Foo"
+    SEMI@[69; 70) ";"
+  WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.rs
new file mode 100644 (file)
index 0000000..333ebab
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    let _ = a;
+    let _ = a::b;
+    let _ = ::a::<b>;
+    let _ = format!();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt
new file mode 100644 (file)
index 0000000..bc4b97c
--- /dev/null
@@ -0,0 +1,95 @@
+SOURCE_FILE@[0; 91)
+  FN_DEF@[0; 90)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 90)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 25)
+        LET_KW@[15; 18) "let"
+        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) "\n    "
+      LET_STMT@[30; 43)
+        LET_KW@[30; 33) "let"
+        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) "\n    "
+      LET_STMT@[48; 65)
+        LET_KW@[48; 51) "let"
+        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) "\n    "
+      LET_STMT@[70; 88)
+        LET_KW@[70; 73) "let"
+        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) "\n"
+      R_CURLY@[89; 90) "}"
+  WHITESPACE@[90; 91) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0054_field_attrs.rs b/crates/ra_syntax/test_data/parser/inline/ok/0054_field_attrs.rs
new file mode 100644 (file)
index 0000000..4744d8a
--- /dev/null
@@ -0,0 +1,4 @@
+struct S {
+    #[serde(with = "url_serde")]
+    pub uri: Uri,
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0054_field_attrs.txt b/crates/ra_syntax/test_data/parser/inline/ok/0054_field_attrs.txt
new file mode 100644 (file)
index 0000000..f214d1d
--- /dev/null
@@ -0,0 +1,42 @@
+SOURCE_FILE@[0; 64)
+  STRUCT_DEF@[0; 63)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n    "
+      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) "\"url_serde\""
+              R_PAREN@[41; 42) ")"
+            R_BRACK@[42; 43) "]"
+        WHITESPACE@[43; 48) "\n    "
+        VISIBILITY@[48; 51)
+          PUB_KW@[48; 51) "pub"
+        WHITESPACE@[51; 52) " "
+        NAME@[52; 55)
+          IDENT@[52; 55) "uri"
+        COLON@[55; 56) ":"
+        WHITESPACE@[56; 57) " "
+        PATH_TYPE@[57; 60)
+          PATH@[57; 60)
+            PATH_SEGMENT@[57; 60)
+              NAME_REF@[57; 60)
+                IDENT@[57; 60) "Uri"
+      COMMA@[60; 61) ","
+      WHITESPACE@[61; 62) "\n"
+      R_CURLY@[62; 63) "}"
+  WHITESPACE@[63; 64) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rs b/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.rs
new file mode 100644 (file)
index 0000000..6dfd67b
--- /dev/null
@@ -0,0 +1,8 @@
+fn main() {
+    match () {
+        -1 => (),
+        92 => (),
+        'c' => (),
+        "hello" => (),
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt b/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt
new file mode 100644 (file)
index 0000000..ab5dad4
--- /dev/null
@@ -0,0 +1,76 @@
+SOURCE_FILE@[0; 113)
+  FN_DEF@[0; 112)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 112)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      MATCH_EXPR@[16; 110)
+        MATCH_KW@[16; 21) "match"
+        WHITESPACE@[21; 22) " "
+        TUPLE_EXPR@[22; 24)
+          L_PAREN@[22; 23) "("
+          R_PAREN@[23; 24) ")"
+        WHITESPACE@[24; 25) " "
+        MATCH_ARM_LIST@[25; 110)
+          L_CURLY@[25; 26) "{"
+          WHITESPACE@[26; 35) "\n        "
+          MATCH_ARM@[35; 43)
+            LITERAL_PAT@[35; 37)
+              MINUS@[35; 36) "-"
+              LITERAL@[36; 37)
+                INT_NUMBER@[36; 37) "1"
+            WHITESPACE@[37; 38) " "
+            FAT_ARROW@[38; 40) "=>"
+            WHITESPACE@[40; 41) " "
+            TUPLE_EXPR@[41; 43)
+              L_PAREN@[41; 42) "("
+              R_PAREN@[42; 43) ")"
+          COMMA@[43; 44) ","
+          WHITESPACE@[44; 53) "\n        "
+          MATCH_ARM@[53; 61)
+            LITERAL_PAT@[53; 55)
+              LITERAL@[53; 55)
+                INT_NUMBER@[53; 55) "92"
+            WHITESPACE@[55; 56) " "
+            FAT_ARROW@[56; 58) "=>"
+            WHITESPACE@[58; 59) " "
+            TUPLE_EXPR@[59; 61)
+              L_PAREN@[59; 60) "("
+              R_PAREN@[60; 61) ")"
+          COMMA@[61; 62) ","
+          WHITESPACE@[62; 71) "\n        "
+          MATCH_ARM@[71; 80)
+            LITERAL_PAT@[71; 74)
+              LITERAL@[71; 74)
+                CHAR@[71; 74) "\'c\'"
+            WHITESPACE@[74; 75) " "
+            FAT_ARROW@[75; 77) "=>"
+            WHITESPACE@[77; 78) " "
+            TUPLE_EXPR@[78; 80)
+              L_PAREN@[78; 79) "("
+              R_PAREN@[79; 80) ")"
+          COMMA@[80; 81) ","
+          WHITESPACE@[81; 90) "\n        "
+          MATCH_ARM@[90; 103)
+            LITERAL_PAT@[90; 97)
+              LITERAL@[90; 97)
+                STRING@[90; 97) "\"hello\""
+            WHITESPACE@[97; 98) " "
+            FAT_ARROW@[98; 100) "=>"
+            WHITESPACE@[100; 101) " "
+            TUPLE_EXPR@[101; 103)
+              L_PAREN@[101; 102) "("
+              R_PAREN@[102; 103) ")"
+          COMMA@[103; 104) ","
+          WHITESPACE@[104; 109) "\n    "
+          R_CURLY@[109; 110) "}"
+      WHITESPACE@[110; 111) "\n"
+      R_CURLY@[111; 112) "}"
+  WHITESPACE@[112; 113) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rs b/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.rs
new file mode 100644 (file)
index 0000000..19d7e57
--- /dev/null
@@ -0,0 +1,7 @@
+fn foo()
+where
+   'a: 'b + 'c,
+   T: Clone + Copy + 'static,
+   Iterator::Item: 'a,
+   <T as Iterator>::Item: 'a
+{}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt b/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt
new file mode 100644 (file)
index 0000000..c86a0db
--- /dev/null
@@ -0,0 +1,110 @@
+SOURCE_FILE@[0; 116)
+  FN_DEF@[0; 115)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) "\n"
+    WHERE_CLAUSE@[9; 112)
+      WHERE_KW@[9; 14) "where"
+      WHITESPACE@[14; 18) "\n   "
+      WHERE_PRED@[18; 29)
+        LIFETIME@[18; 20) "\'a"
+        COLON@[20; 21) ":"
+        WHITESPACE@[21; 22) " "
+        TYPE_BOUND_LIST@[22; 29)
+          TYPE_BOUND@[22; 24)
+            LIFETIME@[22; 24) "\'b"
+          WHITESPACE@[24; 25) " "
+          PLUS@[25; 26) "+"
+          WHITESPACE@[26; 27) " "
+          TYPE_BOUND@[27; 29)
+            LIFETIME@[27; 29) "\'c"
+      COMMA@[29; 30) ","
+      WHITESPACE@[30; 34) "\n   "
+      WHERE_PRED@[34; 59)
+        PATH_TYPE@[34; 35)
+          PATH@[34; 35)
+            PATH_SEGMENT@[34; 35)
+              NAME_REF@[34; 35)
+                IDENT@[34; 35) "T"
+        COLON@[35; 36) ":"
+        WHITESPACE@[36; 37) " "
+        TYPE_BOUND_LIST@[37; 59)
+          TYPE_BOUND@[37; 42)
+            PATH_TYPE@[37; 42)
+              PATH@[37; 42)
+                PATH_SEGMENT@[37; 42)
+                  NAME_REF@[37; 42)
+                    IDENT@[37; 42) "Clone"
+          WHITESPACE@[42; 43) " "
+          PLUS@[43; 44) "+"
+          WHITESPACE@[44; 45) " "
+          TYPE_BOUND@[45; 49)
+            PATH_TYPE@[45; 49)
+              PATH@[45; 49)
+                PATH_SEGMENT@[45; 49)
+                  NAME_REF@[45; 49)
+                    IDENT@[45; 49) "Copy"
+          WHITESPACE@[49; 50) " "
+          PLUS@[50; 51) "+"
+          WHITESPACE@[51; 52) " "
+          TYPE_BOUND@[52; 59)
+            LIFETIME@[52; 59) "\'static"
+      COMMA@[59; 60) ","
+      WHITESPACE@[60; 64) "\n   "
+      WHERE_PRED@[64; 82)
+        PATH_TYPE@[64; 78)
+          PATH@[64; 78)
+            PATH@[64; 72)
+              PATH_SEGMENT@[64; 72)
+                NAME_REF@[64; 72)
+                  IDENT@[64; 72) "Iterator"
+            COLONCOLON@[72; 74) "::"
+            PATH_SEGMENT@[74; 78)
+              NAME_REF@[74; 78)
+                IDENT@[74; 78) "Item"
+        COLON@[78; 79) ":"
+        WHITESPACE@[79; 80) " "
+        TYPE_BOUND_LIST@[80; 82)
+          TYPE_BOUND@[80; 82)
+            LIFETIME@[80; 82) "\'a"
+      COMMA@[82; 83) ","
+      WHITESPACE@[83; 87) "\n   "
+      WHERE_PRED@[87; 112)
+        PATH_TYPE@[87; 108)
+          PATH@[87; 108)
+            PATH@[87; 102)
+              PATH_SEGMENT@[87; 102)
+                L_ANGLE@[87; 88) "<"
+                PATH_TYPE@[88; 89)
+                  PATH@[88; 89)
+                    PATH_SEGMENT@[88; 89)
+                      NAME_REF@[88; 89)
+                        IDENT@[88; 89) "T"
+                WHITESPACE@[89; 90) " "
+                AS_KW@[90; 92) "as"
+                WHITESPACE@[92; 93) " "
+                PATH_TYPE@[93; 101)
+                  PATH@[93; 101)
+                    PATH_SEGMENT@[93; 101)
+                      NAME_REF@[93; 101)
+                        IDENT@[93; 101) "Iterator"
+                R_ANGLE@[101; 102) ">"
+            COLONCOLON@[102; 104) "::"
+            PATH_SEGMENT@[104; 108)
+              NAME_REF@[104; 108)
+                IDENT@[104; 108) "Item"
+        COLON@[108; 109) ":"
+        WHITESPACE@[109; 110) " "
+        TYPE_BOUND_LIST@[110; 112)
+          TYPE_BOUND@[110; 112)
+            LIFETIME@[110; 112) "\'a"
+    WHITESPACE@[112; 113) "\n"
+    BLOCK@[113; 115)
+      L_CURLY@[113; 114) "{"
+      R_CURLY@[114; 115) "}"
+  WHITESPACE@[115; 116) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rs b/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.rs
new file mode 100644 (file)
index 0000000..8c84d9c
--- /dev/null
@@ -0,0 +1 @@
+const fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt
new file mode 100644 (file)
index 0000000..7a8b819
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 18)
+  FN_DEF@[0; 17)
+    CONST_KW@[0; 5) "const"
+    WHITESPACE@[5; 6) " "
+    FN_KW@[6; 8) "fn"
+    WHITESPACE@[8; 9) " "
+    NAME@[9; 12)
+      IDENT@[9; 12) "foo"
+    PARAM_LIST@[12; 14)
+      L_PAREN@[12; 13) "("
+      R_PAREN@[13; 14) ")"
+    WHITESPACE@[14; 15) " "
+    BLOCK@[15; 17)
+      L_CURLY@[15; 16) "{"
+      R_CURLY@[16; 17) "}"
+  WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.rs
new file mode 100644 (file)
index 0000000..c12ab6f
--- /dev/null
@@ -0,0 +1,7 @@
+fn main() {
+    match 92 {
+        0 ... 100 => (),
+        101 ..= 200 => (),
+        200 .. 301=> (),
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt
new file mode 100644 (file)
index 0000000..1b7e9b9
--- /dev/null
@@ -0,0 +1,82 @@
+SOURCE_FILE@[0; 112)
+  FN_DEF@[0; 111)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 111)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      MATCH_EXPR@[16; 109)
+        MATCH_KW@[16; 21) "match"
+        WHITESPACE@[21; 22) " "
+        LITERAL@[22; 24)
+          INT_NUMBER@[22; 24) "92"
+        WHITESPACE@[24; 25) " "
+        MATCH_ARM_LIST@[25; 109)
+          L_CURLY@[25; 26) "{"
+          WHITESPACE@[26; 35) "\n        "
+          MATCH_ARM@[35; 50)
+            RANGE_PAT@[35; 44)
+              LITERAL_PAT@[35; 36)
+                LITERAL@[35; 36)
+                  INT_NUMBER@[35; 36) "0"
+              WHITESPACE@[36; 37) " "
+              DOTDOTDOT@[37; 40) "..."
+              WHITESPACE@[40; 41) " "
+              LITERAL_PAT@[41; 44)
+                LITERAL@[41; 44)
+                  INT_NUMBER@[41; 44) "100"
+            WHITESPACE@[44; 45) " "
+            FAT_ARROW@[45; 47) "=>"
+            WHITESPACE@[47; 48) " "
+            TUPLE_EXPR@[48; 50)
+              L_PAREN@[48; 49) "("
+              R_PAREN@[49; 50) ")"
+          COMMA@[50; 51) ","
+          WHITESPACE@[51; 60) "\n        "
+          MATCH_ARM@[60; 77)
+            RANGE_PAT@[60; 71)
+              LITERAL_PAT@[60; 63)
+                LITERAL@[60; 63)
+                  INT_NUMBER@[60; 63) "101"
+              WHITESPACE@[63; 64) " "
+              DOTDOTEQ@[64; 67) "..="
+              WHITESPACE@[67; 68) " "
+              LITERAL_PAT@[68; 71)
+                LITERAL@[68; 71)
+                  INT_NUMBER@[68; 71) "200"
+            WHITESPACE@[71; 72) " "
+            FAT_ARROW@[72; 74) "=>"
+            WHITESPACE@[74; 75) " "
+            TUPLE_EXPR@[75; 77)
+              L_PAREN@[75; 76) "("
+              R_PAREN@[76; 77) ")"
+          COMMA@[77; 78) ","
+          WHITESPACE@[78; 87) "\n        "
+          MATCH_ARM@[87; 102)
+            RANGE_PAT@[87; 97)
+              LITERAL_PAT@[87; 90)
+                LITERAL@[87; 90)
+                  INT_NUMBER@[87; 90) "200"
+              WHITESPACE@[90; 91) " "
+              DOTDOT@[91; 93) ".."
+              WHITESPACE@[93; 94) " "
+              LITERAL_PAT@[94; 97)
+                LITERAL@[94; 97)
+                  INT_NUMBER@[94; 97) "301"
+            FAT_ARROW@[97; 99) "=>"
+            WHITESPACE@[99; 100) " "
+            TUPLE_EXPR@[100; 102)
+              L_PAREN@[100; 101) "("
+              R_PAREN@[101; 102) ")"
+          COMMA@[102; 103) ","
+          WHITESPACE@[103; 108) "\n    "
+          R_CURLY@[108; 109) "}"
+      WHITESPACE@[109; 110) "\n"
+      R_CURLY@[110; 111) "}"
+  WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rs b/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.rs
new file mode 100644 (file)
index 0000000..1f25d57
--- /dev/null
@@ -0,0 +1,7 @@
+fn foo() {
+    match () {
+        _ => (),
+        _ => {}
+        _ => ()
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt b/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt
new file mode 100644 (file)
index 0000000..9491171
--- /dev/null
@@ -0,0 +1,59 @@
+SOURCE_FILE@[0; 83)
+  FN_DEF@[0; 82)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 82)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      MATCH_EXPR@[15; 80)
+        MATCH_KW@[15; 20) "match"
+        WHITESPACE@[20; 21) " "
+        TUPLE_EXPR@[21; 23)
+          L_PAREN@[21; 22) "("
+          R_PAREN@[22; 23) ")"
+        WHITESPACE@[23; 24) " "
+        MATCH_ARM_LIST@[24; 80)
+          L_CURLY@[24; 25) "{"
+          WHITESPACE@[25; 34) "\n        "
+          MATCH_ARM@[34; 41)
+            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) "\n        "
+          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) "\n        "
+          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) "\n    "
+          R_CURLY@[79; 80) "}"
+      WHITESPACE@[80; 81) "\n"
+      R_CURLY@[81; 82) "}"
+  WHITESPACE@[82; 83) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rs b/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.rs
new file mode 100644 (file)
index 0000000..49af74e
--- /dev/null
@@ -0,0 +1 @@
+extern crate foo;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.txt b/crates/ra_syntax/test_data/parser/inline/ok/0060_extern_crate.txt
new file mode 100644 (file)
index 0000000..7667201
--- /dev/null
@@ -0,0 +1,10 @@
+SOURCE_FILE@[0; 18)
+  EXTERN_CRATE_ITEM@[0; 17)
+    EXTERN_KW@[0; 6) "extern"
+    WHITESPACE@[6; 7) " "
+    CRATE_KW@[7; 12) "crate"
+    WHITESPACE@[12; 13) " "
+    NAME_REF@[13; 16)
+      IDENT@[13; 16) "foo"
+    SEMI@[16; 17) ";"
+  WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.rs b/crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.rs
new file mode 100644 (file)
index 0000000..eb711f6
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    S {};
+    S { x, y: 32, };
+    S { x, y: 32, ..Default::default() };
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.txt b/crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.txt
new file mode 100644 (file)
index 0000000..94d1bfe
--- /dev/null
@@ -0,0 +1,97 @@
+SOURCE_FILE@[0; 86)
+  FN_DEF@[0; 85)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 85)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      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) "\n    "
+      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) "\n    "
+      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) "\n"
+      R_CURLY@[84; 85) "}"
+  WHITESPACE@[85; 86) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rs b/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.rs
new file mode 100644 (file)
index 0000000..24a15c5
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {}
+macro_rules! foo {}
+foo::bar!();
+super::baz! {}
+struct S;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.txt b/crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.txt
new file mode 100644 (file)
index 0000000..db2b9a5
--- /dev/null
@@ -0,0 +1,66 @@
+SOURCE_FILE@[0; 70)
+  FN_DEF@[0; 11)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 11)
+      L_CURLY@[9; 10) "{"
+      R_CURLY@[10; 11) "}"
+  WHITESPACE@[11; 12) "\n"
+  MACRO_CALL@[12; 31)
+    PATH@[12; 23)
+      PATH_SEGMENT@[12; 23)
+        NAME_REF@[12; 23)
+          IDENT@[12; 23) "macro_rules"
+    EXCL@[23; 24) "!"
+    WHITESPACE@[24; 25) " "
+    NAME@[25; 28)
+      IDENT@[25; 28) "foo"
+    WHITESPACE@[28; 29) " "
+    TOKEN_TREE@[29; 31)
+      L_CURLY@[29; 30) "{"
+      R_CURLY@[30; 31) "}"
+  WHITESPACE@[31; 32) "\n"
+  MACRO_CALL@[32; 44)
+    PATH@[32; 40)
+      PATH@[32; 35)
+        PATH_SEGMENT@[32; 35)
+          NAME_REF@[32; 35)
+            IDENT@[32; 35) "foo"
+      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) "\n"
+  MACRO_CALL@[45; 59)
+    PATH@[45; 55)
+      PATH@[45; 50)
+        PATH_SEGMENT@[45; 50)
+          SUPER_KW@[45; 50) "super"
+      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) "\n"
+  STRUCT_DEF@[60; 69)
+    STRUCT_KW@[60; 66) "struct"
+    WHITESPACE@[66; 67) " "
+    NAME@[67; 68)
+      IDENT@[67; 68) "S"
+    SEMI@[68; 69) ";"
+  WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_block_neg.rs b/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_block_neg.rs
new file mode 100644 (file)
index 0000000..b7527c8
--- /dev/null
@@ -0,0 +1 @@
+impl !Send for X {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_block_neg.txt b/crates/ra_syntax/test_data/parser/inline/ok/0063_impl_block_neg.txt
new file mode 100644 (file)
index 0000000..dfff947
--- /dev/null
@@ -0,0 +1,23 @@
+SOURCE_FILE@[0; 20)
+  IMPL_BLOCK@[0; 19)
+    IMPL_KW@[0; 4) "impl"
+    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) "for"
+    WHITESPACE@[14; 15) " "
+    PATH_TYPE@[15; 16)
+      PATH@[15; 16)
+        PATH_SEGMENT@[15; 16)
+          NAME_REF@[15; 16)
+            IDENT@[15; 16) "X"
+    WHITESPACE@[16; 17) " "
+    ITEM_LIST@[17; 19)
+      L_CURLY@[17; 18) "{"
+      R_CURLY@[18; 19) "}"
+  WHITESPACE@[19; 20) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs
new file mode 100644 (file)
index 0000000..4b0d9af
--- /dev/null
@@ -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/test_data/parser/inline/ok/0064_if_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt
new file mode 100644 (file)
index 0000000..554bda6
--- /dev/null
@@ -0,0 +1,95 @@
+SOURCE_FILE@[0; 107)
+  FN_DEF@[0; 106)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 106)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 26)
+        IF_EXPR@[15; 25)
+          IF_KW@[15; 17) "if"
+          WHITESPACE@[17; 18) " "
+          CONDITION@[18; 22)
+            LITERAL@[18; 22)
+              TRUE_KW@[18; 22) "true"
+          WHITESPACE@[22; 23) " "
+          BLOCK@[23; 25)
+            L_CURLY@[23; 24) "{"
+            R_CURLY@[24; 25) "}"
+        SEMI@[25; 26) ";"
+      WHITESPACE@[26; 31) "\n    "
+      EXPR_STMT@[31; 50)
+        IF_EXPR@[31; 49)
+          IF_KW@[31; 33) "if"
+          WHITESPACE@[33; 34) " "
+          CONDITION@[34; 38)
+            LITERAL@[34; 38)
+              TRUE_KW@[34; 38) "true"
+          WHITESPACE@[38; 39) " "
+          BLOCK@[39; 41)
+            L_CURLY@[39; 40) "{"
+            R_CURLY@[40; 41) "}"
+          WHITESPACE@[41; 42) " "
+          ELSE_KW@[42; 46) "else"
+          WHITESPACE@[46; 47) " "
+          BLOCK@[47; 49)
+            L_CURLY@[47; 48) "{"
+            R_CURLY@[48; 49) "}"
+        SEMI@[49; 50) ";"
+      WHITESPACE@[50; 55) "\n    "
+      EXPR_STMT@[55; 91)
+        IF_EXPR@[55; 90)
+          IF_KW@[55; 57) "if"
+          WHITESPACE@[57; 58) " "
+          CONDITION@[58; 62)
+            LITERAL@[58; 62)
+              TRUE_KW@[58; 62) "true"
+          WHITESPACE@[62; 63) " "
+          BLOCK@[63; 65)
+            L_CURLY@[63; 64) "{"
+            R_CURLY@[64; 65) "}"
+          WHITESPACE@[65; 66) " "
+          ELSE_KW@[66; 70) "else"
+          WHITESPACE@[70; 71) " "
+          IF_EXPR@[71; 90)
+            IF_KW@[71; 73) "if"
+            WHITESPACE@[73; 74) " "
+            CONDITION@[74; 79)
+              LITERAL@[74; 79)
+                FALSE_KW@[74; 79) "false"
+            WHITESPACE@[79; 80) " "
+            BLOCK@[80; 82)
+              L_CURLY@[80; 81) "{"
+              R_CURLY@[81; 82) "}"
+            WHITESPACE@[82; 83) " "
+            ELSE_KW@[83; 87) "else"
+            WHITESPACE@[87; 88) " "
+            BLOCK@[88; 90)
+              L_CURLY@[88; 89) "{"
+              R_CURLY@[89; 90) "}"
+        SEMI@[90; 91) ";"
+      WHITESPACE@[91; 96) "\n    "
+      EXPR_STMT@[96; 104)
+        IF_EXPR@[96; 103)
+          IF_KW@[96; 98) "if"
+          WHITESPACE@[98; 99) " "
+          CONDITION@[99; 100)
+            PATH_EXPR@[99; 100)
+              PATH@[99; 100)
+                PATH_SEGMENT@[99; 100)
+                  NAME_REF@[99; 100)
+                    IDENT@[99; 100) "S"
+          WHITESPACE@[100; 101) " "
+          BLOCK@[101; 103)
+            L_CURLY@[101; 102) "{"
+            R_CURLY@[102; 103) "}"
+        SEMI@[103; 104) ";"
+      WHITESPACE@[104; 105) "\n"
+      R_CURLY@[105; 106) "}"
+  WHITESPACE@[106; 107) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.rs
new file mode 100644 (file)
index 0000000..c3ecabb
--- /dev/null
@@ -0,0 +1 @@
+type A = dyn Iterator<Item=Foo<'a>> + 'a;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0065_dyn_trait_type.txt
new file mode 100644 (file)
index 0000000..2ee0dc1
--- /dev/null
@@ -0,0 +1,43 @@
+SOURCE_FILE@[0; 42)
+  TYPE_ALIAS_DEF@[0; 41)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    DYN_TRAIT_TYPE@[9; 40)
+      DYN_KW@[9; 12) "dyn"
+      WHITESPACE@[12; 13) " "
+      TYPE_BOUND_LIST@[13; 40)
+        TYPE_BOUND@[13; 35)
+          PATH_TYPE@[13; 35)
+            PATH@[13; 35)
+              PATH_SEGMENT@[13; 35)
+                NAME_REF@[13; 21)
+                  IDENT@[13; 21) "Iterator"
+                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) " "
+        TYPE_BOUND@[38; 40)
+          LIFETIME@[38; 40) "\'a"
+    SEMI@[40; 41) ";"
+  WHITESPACE@[41; 42) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rs b/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.rs
new file mode 100644 (file)
index 0000000..9e009e2
--- /dev/null
@@ -0,0 +1,9 @@
+fn foo() {
+    match () {
+        _ => (),
+        _ if Test > Test{field: 0} => (),
+        X | Y if Z => (),
+        | X | Y if Z => (),
+        | X => (),
+    };
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.txt b/crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.txt
new file mode 100644 (file)
index 0000000..041e717
--- /dev/null
@@ -0,0 +1,149 @@
+SOURCE_FILE@[0; 167)
+  FN_DEF@[0; 166)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 166)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 164)
+        MATCH_EXPR@[15; 163)
+          MATCH_KW@[15; 20) "match"
+          WHITESPACE@[20; 21) " "
+          TUPLE_EXPR@[21; 23)
+            L_PAREN@[21; 22) "("
+            R_PAREN@[22; 23) ")"
+          WHITESPACE@[23; 24) " "
+          MATCH_ARM_LIST@[24; 163)
+            L_CURLY@[24; 25) "{"
+            WHITESPACE@[25; 34) "\n        "
+            MATCH_ARM@[34; 41)
+              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) "\n        "
+            MATCH_ARM@[51; 83)
+              PLACEHOLDER_PAT@[51; 52)
+                UNDERSCORE@[51; 52) "_"
+              WHITESPACE@[52; 53) " "
+              MATCH_GUARD@[53; 77)
+                IF_KW@[53; 55) "if"
+                WHITESPACE@[55; 56) " "
+                BIN_EXPR@[56; 77)
+                  PATH_EXPR@[56; 60)
+                    PATH@[56; 60)
+                      PATH_SEGMENT@[56; 60)
+                        NAME_REF@[56; 60)
+                          IDENT@[56; 60) "Test"
+                  WHITESPACE@[60; 61) " "
+                  R_ANGLE@[61; 62) ">"
+                  WHITESPACE@[62; 63) " "
+                  STRUCT_LIT@[63; 77)
+                    PATH@[63; 67)
+                      PATH_SEGMENT@[63; 67)
+                        NAME_REF@[63; 67)
+                          IDENT@[63; 67) "Test"
+                    NAMED_FIELD_LIST@[67; 77)
+                      L_CURLY@[67; 68) "{"
+                      NAMED_FIELD@[68; 76)
+                        NAME_REF@[68; 73)
+                          IDENT@[68; 73) "field"
+                        COLON@[73; 74) ":"
+                        WHITESPACE@[74; 75) " "
+                        LITERAL@[75; 76)
+                          INT_NUMBER@[75; 76) "0"
+                      R_CURLY@[76; 77) "}"
+              WHITESPACE@[77; 78) " "
+              FAT_ARROW@[78; 80) "=>"
+              WHITESPACE@[80; 81) " "
+              TUPLE_EXPR@[81; 83)
+                L_PAREN@[81; 82) "("
+                R_PAREN@[82; 83) ")"
+            COMMA@[83; 84) ","
+            WHITESPACE@[84; 93) "\n        "
+            MATCH_ARM@[93; 109)
+              BIND_PAT@[93; 94)
+                NAME@[93; 94)
+                  IDENT@[93; 94) "X"
+              WHITESPACE@[94; 95) " "
+              PIPE@[95; 96) "|"
+              WHITESPACE@[96; 97) " "
+              BIND_PAT@[97; 98)
+                NAME@[97; 98)
+                  IDENT@[97; 98) "Y"
+              WHITESPACE@[98; 99) " "
+              MATCH_GUARD@[99; 103)
+                IF_KW@[99; 101) "if"
+                WHITESPACE@[101; 102) " "
+                PATH_EXPR@[102; 103)
+                  PATH@[102; 103)
+                    PATH_SEGMENT@[102; 103)
+                      NAME_REF@[102; 103)
+                        IDENT@[102; 103) "Z"
+              WHITESPACE@[103; 104) " "
+              FAT_ARROW@[104; 106) "=>"
+              WHITESPACE@[106; 107) " "
+              TUPLE_EXPR@[107; 109)
+                L_PAREN@[107; 108) "("
+                R_PAREN@[108; 109) ")"
+            COMMA@[109; 110) ","
+            WHITESPACE@[110; 119) "\n        "
+            MATCH_ARM@[119; 137)
+              PIPE@[119; 120) "|"
+              WHITESPACE@[120; 121) " "
+              BIND_PAT@[121; 122)
+                NAME@[121; 122)
+                  IDENT@[121; 122) "X"
+              WHITESPACE@[122; 123) " "
+              PIPE@[123; 124) "|"
+              WHITESPACE@[124; 125) " "
+              BIND_PAT@[125; 126)
+                NAME@[125; 126)
+                  IDENT@[125; 126) "Y"
+              WHITESPACE@[126; 127) " "
+              MATCH_GUARD@[127; 131)
+                IF_KW@[127; 129) "if"
+                WHITESPACE@[129; 130) " "
+                PATH_EXPR@[130; 131)
+                  PATH@[130; 131)
+                    PATH_SEGMENT@[130; 131)
+                      NAME_REF@[130; 131)
+                        IDENT@[130; 131) "Z"
+              WHITESPACE@[131; 132) " "
+              FAT_ARROW@[132; 134) "=>"
+              WHITESPACE@[134; 135) " "
+              TUPLE_EXPR@[135; 137)
+                L_PAREN@[135; 136) "("
+                R_PAREN@[136; 137) ")"
+            COMMA@[137; 138) ","
+            WHITESPACE@[138; 147) "\n        "
+            MATCH_ARM@[147; 156)
+              PIPE@[147; 148) "|"
+              WHITESPACE@[148; 149) " "
+              BIND_PAT@[149; 150)
+                NAME@[149; 150)
+                  IDENT@[149; 150) "X"
+              WHITESPACE@[150; 151) " "
+              FAT_ARROW@[151; 153) "=>"
+              WHITESPACE@[153; 154) " "
+              TUPLE_EXPR@[154; 156)
+                L_PAREN@[154; 155) "("
+                R_PAREN@[155; 156) ")"
+            COMMA@[156; 157) ","
+            WHITESPACE@[157; 162) "\n    "
+            R_CURLY@[162; 163) "}"
+        SEMI@[163; 164) ";"
+      WHITESPACE@[164; 165) "\n"
+      R_CURLY@[165; 166) "}"
+  WHITESPACE@[166; 167) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rs b/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.rs
new file mode 100644 (file)
index 0000000..1bbb593
--- /dev/null
@@ -0,0 +1 @@
+use crate::foo;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.txt b/crates/ra_syntax/test_data/parser/inline/ok/0067_crate_path.txt
new file mode 100644 (file)
index 0000000..f2ba4e9
--- /dev/null
@@ -0,0 +1,15 @@
+SOURCE_FILE@[0; 16)
+  USE_ITEM@[0; 15)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 14)
+      PATH@[4; 14)
+        PATH@[4; 9)
+          PATH_SEGMENT@[4; 9)
+            CRATE_KW@[4; 9) "crate"
+        COLONCOLON@[9; 11) "::"
+        PATH_SEGMENT@[11; 14)
+          NAME_REF@[11; 14)
+            IDENT@[11; 14) "foo"
+    SEMI@[14; 15) ";"
+  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rs b/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.rs
new file mode 100644 (file)
index 0000000..b7dd610
--- /dev/null
@@ -0,0 +1,5 @@
+union Foo {}
+union Foo {
+    a: i32,
+    b: f32,
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.txt b/crates/ra_syntax/test_data/parser/inline/ok/0068_union_items.txt
new file mode 100644 (file)
index 0000000..4b65331
--- /dev/null
@@ -0,0 +1,46 @@
+SOURCE_FILE@[0; 51)
+  STRUCT_DEF@[0; 12)
+    UNION_KW@[0; 5) "union"
+    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) "\n"
+  STRUCT_DEF@[13; 50)
+    UNION_KW@[13; 18) "union"
+    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) "\n    "
+      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) "\n    "
+      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) "\n"
+      R_CURLY@[49; 50) "}"
+  WHITESPACE@[50; 51) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs b/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs
new file mode 100644 (file)
index 0000000..c0a3d63
--- /dev/null
@@ -0,0 +1,2 @@
+use crate::{Item};
+use self::{Item};
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.txt b/crates/ra_syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.txt
new file mode 100644 (file)
index 0000000..86afc93
--- /dev/null
@@ -0,0 +1,37 @@
+SOURCE_FILE@[0; 37)
+  USE_ITEM@[0; 18)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 17)
+      PATH@[4; 9)
+        PATH_SEGMENT@[4; 9)
+          CRATE_KW@[4; 9) "crate"
+      COLONCOLON@[9; 11) "::"
+      USE_TREE_LIST@[11; 17)
+        L_CURLY@[11; 12) "{"
+        USE_TREE@[12; 16)
+          PATH@[12; 16)
+            PATH_SEGMENT@[12; 16)
+              NAME_REF@[12; 16)
+                IDENT@[12; 16) "Item"
+        R_CURLY@[16; 17) "}"
+    SEMI@[17; 18) ";"
+  WHITESPACE@[18; 19) "\n"
+  USE_ITEM@[19; 36)
+    USE_KW@[19; 22) "use"
+    WHITESPACE@[22; 23) " "
+    USE_TREE@[23; 35)
+      PATH@[23; 27)
+        PATH_SEGMENT@[23; 27)
+          SELF_KW@[23; 27) "self"
+      COLONCOLON@[27; 29) "::"
+      USE_TREE_LIST@[29; 35)
+        L_CURLY@[29; 30) "{"
+        USE_TREE@[30; 34)
+          PATH@[30; 34)
+            PATH_SEGMENT@[30; 34)
+              NAME_REF@[30; 34)
+                IDENT@[30; 34) "Item"
+        R_CURLY@[34; 35) "}"
+    SEMI@[35; 36) ";"
+  WHITESPACE@[36; 37) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs b/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs
new file mode 100644 (file)
index 0000000..37b8437
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+    let _ = {1} & 2;
+    {1} &2;
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt b/crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
new file mode 100644 (file)
index 0000000..40333d5
--- /dev/null
@@ -0,0 +1,52 @@
+SOURCE_FILE@[0; 46)
+  FN_DEF@[0; 45)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 45)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 31)
+        LET_KW@[15; 18) "let"
+        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) "\n    "
+      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) "\n"
+      R_CURLY@[44; 45) "}"
+  WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs
new file mode 100644 (file)
index 0000000..c9205df
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+    match () { };
+    match S {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt
new file mode 100644 (file)
index 0000000..658948c
--- /dev/null
@@ -0,0 +1,44 @@
+SOURCE_FILE@[0; 47)
+  FN_DEF@[0; 46)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 46)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 28)
+        MATCH_EXPR@[15; 27)
+          MATCH_KW@[15; 20) "match"
+          WHITESPACE@[20; 21) " "
+          TUPLE_EXPR@[21; 23)
+            L_PAREN@[21; 22) "("
+            R_PAREN@[22; 23) ")"
+          WHITESPACE@[23; 24) " "
+          MATCH_ARM_LIST@[24; 27)
+            L_CURLY@[24; 25) "{"
+            WHITESPACE@[25; 26) " "
+            R_CURLY@[26; 27) "}"
+        SEMI@[27; 28) ";"
+      WHITESPACE@[28; 33) "\n    "
+      EXPR_STMT@[33; 44)
+        MATCH_EXPR@[33; 43)
+          MATCH_KW@[33; 38) "match"
+          WHITESPACE@[38; 39) " "
+          PATH_EXPR@[39; 40)
+            PATH@[39; 40)
+              PATH_SEGMENT@[39; 40)
+                NAME_REF@[39; 40)
+                  IDENT@[39; 40) "S"
+          WHITESPACE@[40; 41) " "
+          MATCH_ARM_LIST@[41; 43)
+            L_CURLY@[41; 42) "{"
+            R_CURLY@[42; 43) "}"
+        SEMI@[43; 44) ";"
+      WHITESPACE@[44; 45) "\n"
+      R_CURLY@[45; 46) "}"
+  WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.rs
new file mode 100644 (file)
index 0000000..5733666
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+    return;
+    return 92;
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.txt
new file mode 100644 (file)
index 0000000..cd9e10b
--- /dev/null
@@ -0,0 +1,28 @@
+SOURCE_FILE@[0; 40)
+  FN_DEF@[0; 39)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 39)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 22)
+        RETURN_EXPR@[15; 21)
+          RETURN_KW@[15; 21) "return"
+        SEMI@[21; 22) ";"
+      WHITESPACE@[22; 27) "\n    "
+      EXPR_STMT@[27; 37)
+        RETURN_EXPR@[27; 36)
+          RETURN_KW@[27; 33) "return"
+          WHITESPACE@[33; 34) " "
+          LITERAL@[34; 36)
+            INT_NUMBER@[34; 36) "92"
+        SEMI@[36; 37) ";"
+      WHITESPACE@[37; 38) "\n"
+      R_CURLY@[38; 39) "}"
+  WHITESPACE@[39; 40) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rs b/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.rs
new file mode 100644 (file)
index 0000000..defd110
--- /dev/null
@@ -0,0 +1 @@
+type Result<T> = ();
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.txt b/crates/ra_syntax/test_data/parser/inline/ok/0073_type_item_type_params.txt
new file mode 100644 (file)
index 0000000..2dd6db2
--- /dev/null
@@ -0,0 +1,20 @@
+SOURCE_FILE@[0; 21)
+  TYPE_ALIAS_DEF@[0; 20)
+    TYPE_KW@[0; 4) "type"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs b/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs
new file mode 100644 (file)
index 0000000..2edd578
--- /dev/null
@@ -0,0 +1,7 @@
+fn foo() {
+    match () {
+        _ => {}
+        () => {}
+        [] => {}
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt b/crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
new file mode 100644 (file)
index 0000000..48af2f3
--- /dev/null
@@ -0,0 +1,62 @@
+SOURCE_FILE@[0; 84)
+  FN_DEF@[0; 83)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 83)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      MATCH_EXPR@[15; 81)
+        MATCH_KW@[15; 20) "match"
+        WHITESPACE@[20; 21) " "
+        TUPLE_EXPR@[21; 23)
+          L_PAREN@[21; 22) "("
+          R_PAREN@[22; 23) ")"
+        WHITESPACE@[23; 24) " "
+        MATCH_ARM_LIST@[24; 81)
+          L_CURLY@[24; 25) "{"
+          WHITESPACE@[25; 34) "\n        "
+          MATCH_ARM@[34; 41)
+            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) "\n        "
+          MATCH_ARM@[50; 58)
+            TUPLE_PAT@[50; 52)
+              L_PAREN@[50; 51) "("
+              R_PAREN@[51; 52) ")"
+            WHITESPACE@[52; 53) " "
+            FAT_ARROW@[53; 55) "=>"
+            WHITESPACE@[55; 56) " "
+            BLOCK_EXPR@[56; 58)
+              BLOCK@[56; 58)
+                L_CURLY@[56; 57) "{"
+                R_CURLY@[57; 58) "}"
+          WHITESPACE@[58; 67) "\n        "
+          MATCH_ARM@[67; 75)
+            SLICE_PAT@[67; 69)
+              L_BRACK@[67; 68) "["
+              R_BRACK@[68; 69) "]"
+            WHITESPACE@[69; 70) " "
+            FAT_ARROW@[70; 72) "=>"
+            WHITESPACE@[72; 73) " "
+            BLOCK_EXPR@[73; 75)
+              BLOCK@[73; 75)
+                L_CURLY@[73; 74) "{"
+                R_CURLY@[74; 75) "}"
+          WHITESPACE@[75; 80) "\n    "
+          R_CURLY@[80; 81) "}"
+      WHITESPACE@[81; 82) "\n"
+      R_CURLY@[82; 83) "}"
+  WHITESPACE@[83; 84) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0075_block.rs b/crates/ra_syntax/test_data/parser/inline/ok/0075_block.rs
new file mode 100644 (file)
index 0000000..81f44c5
--- /dev/null
@@ -0,0 +1,4 @@
+fn a() {}
+fn b() { let _ = 1; }
+fn c() { 1; 2; }
+fn d() { 1; 2 }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0075_block.txt b/crates/ra_syntax/test_data/parser/inline/ok/0075_block.txt
new file mode 100644 (file)
index 0000000..3698359
--- /dev/null
@@ -0,0 +1,86 @@
+SOURCE_FILE@[0; 65)
+  FN_DEF@[0; 9)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 4)
+      IDENT@[3; 4) "a"
+    PARAM_LIST@[4; 6)
+      L_PAREN@[4; 5) "("
+      R_PAREN@[5; 6) ")"
+    WHITESPACE@[6; 7) " "
+    BLOCK@[7; 9)
+      L_CURLY@[7; 8) "{"
+      R_CURLY@[8; 9) "}"
+  WHITESPACE@[9; 10) "\n"
+  FN_DEF@[10; 31)
+    FN_KW@[10; 12) "fn"
+    WHITESPACE@[12; 13) " "
+    NAME@[13; 14)
+      IDENT@[13; 14) "b"
+    PARAM_LIST@[14; 16)
+      L_PAREN@[14; 15) "("
+      R_PAREN@[15; 16) ")"
+    WHITESPACE@[16; 17) " "
+    BLOCK@[17; 31)
+      L_CURLY@[17; 18) "{"
+      WHITESPACE@[18; 19) " "
+      LET_STMT@[19; 29)
+        LET_KW@[19; 22) "let"
+        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) "\n"
+  FN_DEF@[32; 48)
+    FN_KW@[32; 34) "fn"
+    WHITESPACE@[34; 35) " "
+    NAME@[35; 36)
+      IDENT@[35; 36) "c"
+    PARAM_LIST@[36; 38)
+      L_PAREN@[36; 37) "("
+      R_PAREN@[37; 38) ")"
+    WHITESPACE@[38; 39) " "
+    BLOCK@[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) "\n"
+  FN_DEF@[49; 64)
+    FN_KW@[49; 51) "fn"
+    WHITESPACE@[51; 52) " "
+    NAME@[52; 53)
+      IDENT@[52; 53) "d"
+    PARAM_LIST@[53; 55)
+      L_PAREN@[53; 54) "("
+      R_PAREN@[54; 55) ")"
+    WHITESPACE@[55; 56) " "
+    BLOCK@[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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rs b/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.rs
new file mode 100644 (file)
index 0000000..f0920b2
--- /dev/null
@@ -0,0 +1 @@
+fn foo<T>() where T: Copy {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.txt b/crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.txt
new file mode 100644 (file)
index 0000000..32979c5
--- /dev/null
@@ -0,0 +1,39 @@
+SOURCE_FILE@[0; 29)
+  FN_DEF@[0; 28)
+    FN_KW@[0; 2) "fn"
+    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) "where"
+      WHITESPACE@[17; 18) " "
+      WHERE_PRED@[18; 25)
+        PATH_TYPE@[18; 19)
+          PATH@[18; 19)
+            PATH_SEGMENT@[18; 19)
+              NAME_REF@[18; 19)
+                IDENT@[18; 19) "T"
+        COLON@[19; 20) ":"
+        WHITESPACE@[20; 21) " "
+        TYPE_BOUND_LIST@[21; 25)
+          TYPE_BOUND@[21; 25)
+            PATH_TYPE@[21; 25)
+              PATH@[21; 25)
+                PATH_SEGMENT@[21; 25)
+                  NAME_REF@[21; 25)
+                    IDENT@[21; 25) "Copy"
+    WHITESPACE@[25; 26) " "
+    BLOCK@[26; 28)
+      L_CURLY@[26; 27) "{"
+      R_CURLY@[27; 28) "}"
+  WHITESPACE@[28; 29) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.rs
new file mode 100644 (file)
index 0000000..8b74f7b
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo() {
+    x?;
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.txt
new file mode 100644 (file)
index 0000000..72de14b
--- /dev/null
@@ -0,0 +1,25 @@
+SOURCE_FILE@[0; 21)
+  FN_DEF@[0; 20)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 20)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 18)
+        TRY_EXPR@[15; 17)
+          PATH_EXPR@[15; 16)
+            PATH@[15; 16)
+              PATH_SEGMENT@[15; 16)
+                NAME_REF@[15; 16)
+                  IDENT@[15; 16) "x"
+          QUESTION@[16; 17) "?"
+        SEMI@[17; 18) ";"
+      WHITESPACE@[18; 19) "\n"
+      R_CURLY@[19; 20) "}"
+  WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rs b/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.rs
new file mode 100644 (file)
index 0000000..04c0344
--- /dev/null
@@ -0,0 +1 @@
+type Foo = Bar;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.txt b/crates/ra_syntax/test_data/parser/inline/ok/0078_type_item.txt
new file mode 100644 (file)
index 0000000..4bc0b18
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 16)
+  TYPE_ALIAS_DEF@[0; 15)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 8)
+      IDENT@[5; 8) "Foo"
+    WHITESPACE@[8; 9) " "
+    EQ@[9; 10) "="
+    WHITESPACE@[10; 11) " "
+    PATH_TYPE@[11; 14)
+      PATH@[11; 14)
+        PATH_SEGMENT@[11; 14)
+          NAME_REF@[11; 14)
+            IDENT@[11; 14) "Bar"
+    SEMI@[14; 15) ";"
+  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_block.rs b/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_block.rs
new file mode 100644 (file)
index 0000000..d6337f6
--- /dev/null
@@ -0,0 +1 @@
+impl Foo {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_block.txt b/crates/ra_syntax/test_data/parser/inline/ok/0079_impl_block.txt
new file mode 100644 (file)
index 0000000..bda3435
--- /dev/null
@@ -0,0 +1,14 @@
+SOURCE_FILE@[0; 12)
+  IMPL_BLOCK@[0; 11)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 8)
+      PATH@[5; 8)
+        PATH_SEGMENT@[5; 8)
+          NAME_REF@[5; 8)
+            IDENT@[5; 8) "Foo"
+    WHITESPACE@[8; 9) " "
+    ITEM_LIST@[9; 11)
+      L_CURLY@[9; 10) "{"
+      R_CURLY@[10; 11) "}"
+  WHITESPACE@[11; 12) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs
new file mode 100644 (file)
index 0000000..c39fe8e
--- /dev/null
@@ -0,0 +1 @@
+fn foo() { let x = 1..; }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt
new file mode 100644 (file)
index 0000000..541add8
--- /dev/null
@@ -0,0 +1,30 @@
+SOURCE_FILE@[0; 26)
+  FN_DEF@[0; 25)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 25)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) " "
+      LET_STMT@[11; 23)
+        LET_KW@[11; 14) "let"
+        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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.rs
new file mode 100644 (file)
index 0000000..7cde5c5
--- /dev/null
@@ -0,0 +1,3 @@
+type A = for<'a> fn() -> ();
+fn foo<T>(_t: &T) where for<'a> &'a T: Iterator {}
+fn bar<T>(_t: &T) where for<'a> &'a mut T: Iterator {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.txt
new file mode 100644 (file)
index 0000000..599cf94
--- /dev/null
@@ -0,0 +1,159 @@
+SOURCE_FILE@[0; 135)
+  TYPE_ALIAS_DEF@[0; 28)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    FOR_TYPE@[9; 27)
+      FOR_KW@[9; 12) "for"
+      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) "fn"
+        PARAM_LIST@[19; 21)
+          L_PAREN@[19; 20) "("
+          R_PAREN@[20; 21) ")"
+        WHITESPACE@[21; 22) " "
+        RET_TYPE@[22; 27)
+          THIN_ARROW@[22; 24) "->"
+          WHITESPACE@[24; 25) " "
+          TUPLE_TYPE@[25; 27)
+            L_PAREN@[25; 26) "("
+            R_PAREN@[26; 27) ")"
+    SEMI@[27; 28) ";"
+  WHITESPACE@[28; 29) "\n"
+  FN_DEF@[29; 79)
+    FN_KW@[29; 31) "fn"
+    WHITESPACE@[31; 32) " "
+    NAME@[32; 35)
+      IDENT@[32; 35) "foo"
+    TYPE_PARAM_LIST@[35; 38)
+      L_ANGLE@[35; 36) "<"
+      TYPE_PARAM@[36; 37)
+        NAME@[36; 37)
+          IDENT@[36; 37) "T"
+      R_ANGLE@[37; 38) ">"
+    PARAM_LIST@[38; 46)
+      L_PAREN@[38; 39) "("
+      PARAM@[39; 45)
+        BIND_PAT@[39; 41)
+          NAME@[39; 41)
+            IDENT@[39; 41) "_t"
+        COLON@[41; 42) ":"
+        WHITESPACE@[42; 43) " "
+        REFERENCE_TYPE@[43; 45)
+          AMP@[43; 44) "&"
+          PATH_TYPE@[44; 45)
+            PATH@[44; 45)
+              PATH_SEGMENT@[44; 45)
+                NAME_REF@[44; 45)
+                  IDENT@[44; 45) "T"
+      R_PAREN@[45; 46) ")"
+    WHITESPACE@[46; 47) " "
+    WHERE_CLAUSE@[47; 76)
+      WHERE_KW@[47; 52) "where"
+      WHITESPACE@[52; 53) " "
+      WHERE_PRED@[53; 76)
+        FOR_TYPE@[53; 66)
+          FOR_KW@[53; 56) "for"
+          TYPE_PARAM_LIST@[56; 60)
+            L_ANGLE@[56; 57) "<"
+            LIFETIME_PARAM@[57; 59)
+              LIFETIME@[57; 59) "\'a"
+            R_ANGLE@[59; 60) ">"
+          WHITESPACE@[60; 61) " "
+          REFERENCE_TYPE@[61; 66)
+            AMP@[61; 62) "&"
+            LIFETIME@[62; 64) "\'a"
+            WHITESPACE@[64; 65) " "
+            PATH_TYPE@[65; 66)
+              PATH@[65; 66)
+                PATH_SEGMENT@[65; 66)
+                  NAME_REF@[65; 66)
+                    IDENT@[65; 66) "T"
+        COLON@[66; 67) ":"
+        WHITESPACE@[67; 68) " "
+        TYPE_BOUND_LIST@[68; 76)
+          TYPE_BOUND@[68; 76)
+            PATH_TYPE@[68; 76)
+              PATH@[68; 76)
+                PATH_SEGMENT@[68; 76)
+                  NAME_REF@[68; 76)
+                    IDENT@[68; 76) "Iterator"
+    WHITESPACE@[76; 77) " "
+    BLOCK@[77; 79)
+      L_CURLY@[77; 78) "{"
+      R_CURLY@[78; 79) "}"
+  WHITESPACE@[79; 80) "\n"
+  FN_DEF@[80; 134)
+    FN_KW@[80; 82) "fn"
+    WHITESPACE@[82; 83) " "
+    NAME@[83; 86)
+      IDENT@[83; 86) "bar"
+    TYPE_PARAM_LIST@[86; 89)
+      L_ANGLE@[86; 87) "<"
+      TYPE_PARAM@[87; 88)
+        NAME@[87; 88)
+          IDENT@[87; 88) "T"
+      R_ANGLE@[88; 89) ">"
+    PARAM_LIST@[89; 97)
+      L_PAREN@[89; 90) "("
+      PARAM@[90; 96)
+        BIND_PAT@[90; 92)
+          NAME@[90; 92)
+            IDENT@[90; 92) "_t"
+        COLON@[92; 93) ":"
+        WHITESPACE@[93; 94) " "
+        REFERENCE_TYPE@[94; 96)
+          AMP@[94; 95) "&"
+          PATH_TYPE@[95; 96)
+            PATH@[95; 96)
+              PATH_SEGMENT@[95; 96)
+                NAME_REF@[95; 96)
+                  IDENT@[95; 96) "T"
+      R_PAREN@[96; 97) ")"
+    WHITESPACE@[97; 98) " "
+    WHERE_CLAUSE@[98; 131)
+      WHERE_KW@[98; 103) "where"
+      WHITESPACE@[103; 104) " "
+      WHERE_PRED@[104; 131)
+        FOR_TYPE@[104; 121)
+          FOR_KW@[104; 107) "for"
+          TYPE_PARAM_LIST@[107; 111)
+            L_ANGLE@[107; 108) "<"
+            LIFETIME_PARAM@[108; 110)
+              LIFETIME@[108; 110) "\'a"
+            R_ANGLE@[110; 111) ">"
+          WHITESPACE@[111; 112) " "
+          REFERENCE_TYPE@[112; 121)
+            AMP@[112; 113) "&"
+            LIFETIME@[113; 115) "\'a"
+            WHITESPACE@[115; 116) " "
+            MUT_KW@[116; 119) "mut"
+            WHITESPACE@[119; 120) " "
+            PATH_TYPE@[120; 121)
+              PATH@[120; 121)
+                PATH_SEGMENT@[120; 121)
+                  NAME_REF@[120; 121)
+                    IDENT@[120; 121) "T"
+        COLON@[121; 122) ":"
+        WHITESPACE@[122; 123) " "
+        TYPE_BOUND_LIST@[123; 131)
+          TYPE_BOUND@[123; 131)
+            PATH_TYPE@[123; 131)
+              PATH@[123; 131)
+                PATH_SEGMENT@[123; 131)
+                  NAME_REF@[123; 131)
+                    IDENT@[123; 131) "Iterator"
+    WHITESPACE@[131; 132) " "
+    BLOCK@[132; 134)
+      L_CURLY@[132; 133) "{"
+      R_CURLY@[133; 134) "}"
+  WHITESPACE@[134; 135) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.rs
new file mode 100644 (file)
index 0000000..2dac6be
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+    let _ = &1;
+    let _ = &mut &f();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.txt
new file mode 100644 (file)
index 0000000..87a56d8
--- /dev/null
@@ -0,0 +1,54 @@
+SOURCE_FILE@[0; 52)
+  FN_DEF@[0; 51)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 51)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 26)
+        LET_KW@[15; 18) "let"
+        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) "\n    "
+      LET_STMT@[31; 49)
+        LET_KW@[31; 34) "let"
+        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) "mut"
+          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) "\n"
+      R_CURLY@[50; 51) "}"
+  WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rs b/crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.rs
new file mode 100644 (file)
index 0000000..693e3f3
--- /dev/null
@@ -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/test_data/parser/inline/ok/0083_struct_items.txt b/crates/ra_syntax/test_data/parser/inline/ok/0083_struct_items.txt
new file mode 100644 (file)
index 0000000..62d9351
--- /dev/null
@@ -0,0 +1,87 @@
+SOURCE_FILE@[0; 106)
+  STRUCT_DEF@[0; 11)
+    STRUCT_KW@[0; 6) "struct"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 10)
+      IDENT@[7; 10) "Foo"
+    SEMI@[10; 11) ";"
+  WHITESPACE@[11; 12) "\n"
+  STRUCT_DEF@[12; 25)
+    STRUCT_KW@[12; 18) "struct"
+    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) "\n"
+  STRUCT_DEF@[26; 39)
+    STRUCT_KW@[26; 32) "struct"
+    WHITESPACE@[32; 33) " "
+    NAME@[33; 36)
+      IDENT@[33; 36) "Foo"
+    POS_FIELD_DEF_LIST@[36; 38)
+      L_PAREN@[36; 37) "("
+      R_PAREN@[37; 38) ")"
+    SEMI@[38; 39) ";"
+  WHITESPACE@[39; 40) "\n"
+  STRUCT_DEF@[40; 66)
+    STRUCT_KW@[40; 46) "struct"
+    WHITESPACE@[46; 47) " "
+    NAME@[47; 50)
+      IDENT@[47; 50) "Foo"
+    POS_FIELD_DEF_LIST@[50; 65)
+      L_PAREN@[50; 51) "("
+      POS_FIELD_DEF@[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_DEF@[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) "\n"
+  STRUCT_DEF@[67; 105)
+    STRUCT_KW@[67; 73) "struct"
+    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) "\n    "
+      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) "\n    "
+      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) "\n"
+      R_CURLY@[104; 105) "}"
+  WHITESPACE@[105; 106) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.rs
new file mode 100644 (file)
index 0000000..6e1b251
--- /dev/null
@@ -0,0 +1 @@
+type T = (i32);
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0084_paren_type.txt
new file mode 100644 (file)
index 0000000..c0cf48a
--- /dev/null
@@ -0,0 +1,19 @@
+SOURCE_FILE@[0; 16)
+  TYPE_ALIAS_DEF@[0; 15)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    PAREN_TYPE@[9; 14)
+      L_PAREN@[9; 10) "("
+      PATH_TYPE@[10; 13)
+        PATH@[10; 13)
+          PATH_SEGMENT@[10; 13)
+            NAME_REF@[10; 13)
+              IDENT@[10; 13) "i32"
+      R_PAREN@[13; 14) ")"
+    SEMI@[14; 15) ";"
+  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rs b/crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.rs
new file mode 100644 (file)
index 0000000..2e11a5a
--- /dev/null
@@ -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/test_data/parser/inline/ok/0085_expr_literals.txt b/crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.txt
new file mode 100644 (file)
index 0000000..2f2be32
--- /dev/null
@@ -0,0 +1,135 @@
+SOURCE_FILE@[0; 189)
+  FN_DEF@[0; 188)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 188)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 28)
+        LET_KW@[15; 18) "let"
+        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) "true"
+        SEMI@[27; 28) ";"
+      WHITESPACE@[28; 33) "\n    "
+      LET_STMT@[33; 47)
+        LET_KW@[33; 36) "let"
+        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) "false"
+        SEMI@[46; 47) ";"
+      WHITESPACE@[47; 52) "\n    "
+      LET_STMT@[52; 62)
+        LET_KW@[52; 55) "let"
+        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) "\n    "
+      LET_STMT@[67; 79)
+        LET_KW@[67; 70) "let"
+        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) "\n    "
+      LET_STMT@[84; 97)
+        LET_KW@[84; 87) "let"
+        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) "b\'a\'"
+        SEMI@[96; 97) ";"
+      WHITESPACE@[97; 102) "\n    "
+      LET_STMT@[102; 114)
+        LET_KW@[102; 105) "let"
+        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) "\'b\'"
+        SEMI@[113; 114) ";"
+      WHITESPACE@[114; 119) "\n    "
+      LET_STMT@[119; 131)
+        LET_KW@[119; 122) "let"
+        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) "\"c\""
+        SEMI@[130; 131) ";"
+      WHITESPACE@[131; 136) "\n    "
+      LET_STMT@[136; 149)
+        LET_KW@[136; 139) "let"
+        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) "r\"d\""
+        SEMI@[148; 149) ";"
+      WHITESPACE@[149; 154) "\n    "
+      LET_STMT@[154; 167)
+        LET_KW@[154; 157) "let"
+        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) "b\"e\""
+        SEMI@[166; 167) ";"
+      WHITESPACE@[167; 172) "\n    "
+      LET_STMT@[172; 186)
+        LET_KW@[172; 175) "let"
+        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) "br\"f\""
+        SEMI@[185; 186) ";"
+      WHITESPACE@[186; 187) "\n"
+      R_CURLY@[187; 188) "}"
+  WHITESPACE@[188; 189) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.rs
new file mode 100644 (file)
index 0000000..d22d8ca
--- /dev/null
@@ -0,0 +1,2 @@
+fn foo() {}
+fn bar() -> () {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.txt
new file mode 100644 (file)
index 0000000..ac793c9
--- /dev/null
@@ -0,0 +1,34 @@
+SOURCE_FILE@[0; 30)
+  FN_DEF@[0; 11)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 11)
+      L_CURLY@[9; 10) "{"
+      R_CURLY@[10; 11) "}"
+  WHITESPACE@[11; 12) "\n"
+  FN_DEF@[12; 29)
+    FN_KW@[12; 14) "fn"
+    WHITESPACE@[14; 15) " "
+    NAME@[15; 18)
+      IDENT@[15; 18) "bar"
+    PARAM_LIST@[18; 20)
+      L_PAREN@[18; 19) "("
+      R_PAREN@[19; 20) ")"
+    WHITESPACE@[20; 21) " "
+    RET_TYPE@[21; 26)
+      THIN_ARROW@[21; 23) "->"
+      WHITESPACE@[23; 24) " "
+      TUPLE_TYPE@[24; 26)
+        L_PAREN@[24; 25) "("
+        R_PAREN@[25; 26) ")"
+    WHITESPACE@[26; 27) " "
+    BLOCK@[27; 29)
+      L_CURLY@[27; 28) "{"
+      R_CURLY@[28; 29) "}"
+  WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rs b/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.rs
new file mode 100644 (file)
index 0000000..41055f4
--- /dev/null
@@ -0,0 +1 @@
+unsafe impl Foo {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.txt b/crates/ra_syntax/test_data/parser/inline/ok/0087_unsafe_impl.txt
new file mode 100644 (file)
index 0000000..590e2a8
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 19)
+  IMPL_BLOCK@[0; 18)
+    UNSAFE_KW@[0; 6) "unsafe"
+    WHITESPACE@[6; 7) " "
+    IMPL_KW@[7; 11) "impl"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rs b/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.rs
new file mode 100644 (file)
index 0000000..560eb05
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo(){
+    if break {}
+    while break {}
+    for i in break {}
+    match break {}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.txt b/crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.txt
new file mode 100644 (file)
index 0000000..b93a10c
--- /dev/null
@@ -0,0 +1,65 @@
+SOURCE_FILE@[0; 88)
+  FN_DEF@[0; 87)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    BLOCK@[8; 87)
+      L_CURLY@[8; 9) "{"
+      WHITESPACE@[9; 14) "\n    "
+      EXPR_STMT@[14; 25)
+        IF_EXPR@[14; 25)
+          IF_KW@[14; 16) "if"
+          WHITESPACE@[16; 17) " "
+          CONDITION@[17; 22)
+            BREAK_EXPR@[17; 22)
+              BREAK_KW@[17; 22) "break"
+          WHITESPACE@[22; 23) " "
+          BLOCK@[23; 25)
+            L_CURLY@[23; 24) "{"
+            R_CURLY@[24; 25) "}"
+      WHITESPACE@[25; 30) "\n    "
+      EXPR_STMT@[30; 44)
+        WHILE_EXPR@[30; 44)
+          WHILE_KW@[30; 35) "while"
+          WHITESPACE@[35; 36) " "
+          CONDITION@[36; 41)
+            BREAK_EXPR@[36; 41)
+              BREAK_KW@[36; 41) "break"
+          WHITESPACE@[41; 42) " "
+          BLOCK@[42; 44)
+            L_CURLY@[42; 43) "{"
+            R_CURLY@[43; 44) "}"
+      WHITESPACE@[44; 49) "\n    "
+      EXPR_STMT@[49; 66)
+        FOR_EXPR@[49; 66)
+          FOR_KW@[49; 52) "for"
+          WHITESPACE@[52; 53) " "
+          BIND_PAT@[53; 54)
+            NAME@[53; 54)
+              IDENT@[53; 54) "i"
+          WHITESPACE@[54; 55) " "
+          IN_KW@[55; 57) "in"
+          WHITESPACE@[57; 58) " "
+          BREAK_EXPR@[58; 63)
+            BREAK_KW@[58; 63) "break"
+          WHITESPACE@[63; 64) " "
+          BLOCK@[64; 66)
+            L_CURLY@[64; 65) "{"
+            R_CURLY@[65; 66) "}"
+      WHITESPACE@[66; 71) "\n    "
+      MATCH_EXPR@[71; 85)
+        MATCH_KW@[71; 76) "match"
+        WHITESPACE@[76; 77) " "
+        BREAK_EXPR@[77; 82)
+          BREAK_KW@[77; 82) "break"
+        WHITESPACE@[82; 83) " "
+        MATCH_ARM_LIST@[83; 85)
+          L_CURLY@[83; 84) "{"
+          R_CURLY@[84; 85) "}"
+      WHITESPACE@[85; 86) "\n"
+      R_CURLY@[86; 87) "}"
+  WHITESPACE@[87; 88) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rs b/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.rs
new file mode 100644 (file)
index 0000000..394a049
--- /dev/null
@@ -0,0 +1 @@
+extern fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.txt
new file mode 100644 (file)
index 0000000..ed5339e
--- /dev/null
@@ -0,0 +1,17 @@
+SOURCE_FILE@[0; 19)
+  FN_DEF@[0; 18)
+    ABI@[0; 6)
+      EXTERN_KW@[0; 6) "extern"
+    WHITESPACE@[6; 7) " "
+    FN_KW@[7; 9) "fn"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rs b/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.rs
new file mode 100644 (file)
index 0000000..540eacb
--- /dev/null
@@ -0,0 +1 @@
+struct S<T = i32>;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.txt b/crates/ra_syntax/test_data/parser/inline/ok/0090_type_param_default.txt
new file mode 100644 (file)
index 0000000..8d2579c
--- /dev/null
@@ -0,0 +1,22 @@
+SOURCE_FILE@[0; 19)
+  STRUCT_DEF@[0; 18)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rs b/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.rs
new file mode 100644 (file)
index 0000000..72adf60
--- /dev/null
@@ -0,0 +1 @@
+auto trait T {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.txt b/crates/ra_syntax/test_data/parser/inline/ok/0091_auto_trait.txt
new file mode 100644 (file)
index 0000000..7093c2b
--- /dev/null
@@ -0,0 +1,13 @@
+SOURCE_FILE@[0; 16)
+  TRAIT_DEF@[0; 15)
+    AUTO_KW@[0; 4) "auto"
+    WHITESPACE@[4; 5) " "
+    TRAIT_KW@[5; 10) "trait"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs b/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs
new file mode 100644 (file)
index 0000000..e3ba5e8
--- /dev/null
@@ -0,0 +1 @@
+type F = fn() -> ();
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt b/crates/ra_syntax/test_data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
new file mode 100644 (file)
index 0000000..fae8223
--- /dev/null
@@ -0,0 +1,23 @@
+SOURCE_FILE@[0; 21)
+  TYPE_ALIAS_DEF@[0; 20)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "F"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    FN_POINTER_TYPE@[9; 19)
+      FN_KW@[9; 11) "fn"
+      PARAM_LIST@[11; 13)
+        L_PAREN@[11; 12) "("
+        R_PAREN@[12; 13) ")"
+      WHITESPACE@[13; 14) " "
+      RET_TYPE@[14; 19)
+        THIN_ARROW@[14; 16) "->"
+        WHITESPACE@[16; 17) " "
+        TUPLE_TYPE@[17; 19)
+          L_PAREN@[17; 18) "("
+          R_PAREN@[18; 19) ")"
+    SEMI@[19; 20) ";"
+  WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.rs
new file mode 100644 (file)
index 0000000..b9ba78a
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo() {
+    x[1][2];
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.txt
new file mode 100644 (file)
index 0000000..b4a71f9
--- /dev/null
@@ -0,0 +1,33 @@
+SOURCE_FILE@[0; 26)
+  FN_DEF@[0; 25)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 25)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 23)
+        INDEX_EXPR@[15; 22)
+          INDEX_EXPR@[15; 19)
+            PATH_EXPR@[15; 16)
+              PATH@[15; 16)
+                PATH_SEGMENT@[15; 16)
+                  NAME_REF@[15; 16)
+                    IDENT@[15; 16) "x"
+            L_BRACK@[16; 17) "["
+            LITERAL@[17; 18)
+              INT_NUMBER@[17; 18) "1"
+            R_BRACK@[18; 19) "]"
+          L_BRACK@[19; 20) "["
+          LITERAL@[20; 21)
+            INT_NUMBER@[20; 21) "2"
+          R_BRACK@[21; 22) "]"
+        SEMI@[22; 23) ";"
+      WHITESPACE@[23; 24) "\n"
+      R_CURLY@[24; 25) "}"
+  WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rs b/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.rs
new file mode 100644 (file)
index 0000000..03d29f3
--- /dev/null
@@ -0,0 +1 @@
+unsafe auto trait T {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.txt b/crates/ra_syntax/test_data/parser/inline/ok/0094_unsafe_auto_trait.txt
new file mode 100644 (file)
index 0000000..3da3bea
--- /dev/null
@@ -0,0 +1,15 @@
+SOURCE_FILE@[0; 23)
+  TRAIT_DEF@[0; 22)
+    UNSAFE_KW@[0; 6) "unsafe"
+    WHITESPACE@[6; 7) " "
+    AUTO_KW@[7; 11) "auto"
+    WHITESPACE@[11; 12) " "
+    TRAIT_KW@[12; 17) "trait"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.rs
new file mode 100644 (file)
index 0000000..4d719c4
--- /dev/null
@@ -0,0 +1 @@
+fn main() { let _ = (); }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.txt
new file mode 100644 (file)
index 0000000..f11bc1f
--- /dev/null
@@ -0,0 +1,28 @@
+SOURCE_FILE@[0; 26)
+  FN_DEF@[0; 25)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 25)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 12) " "
+      LET_STMT@[12; 23)
+        LET_KW@[12; 15) "let"
+        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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rs b/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.rs
new file mode 100644 (file)
index 0000000..4919665
--- /dev/null
@@ -0,0 +1,13 @@
+fn foo() {
+    if true {}
+    loop {}
+    match () {}
+    while true {}
+    for _ in () {}
+    {}
+    {}
+    macro_rules! test {
+         () => {}
+    }
+    test!{}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.txt b/crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.txt
new file mode 100644 (file)
index 0000000..6d24f21
--- /dev/null
@@ -0,0 +1,125 @@
+SOURCE_FILE@[0; 167)
+  FN_DEF@[0; 166)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 166)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 25)
+        IF_EXPR@[15; 25)
+          IF_KW@[15; 17) "if"
+          WHITESPACE@[17; 18) " "
+          CONDITION@[18; 22)
+            LITERAL@[18; 22)
+              TRUE_KW@[18; 22) "true"
+          WHITESPACE@[22; 23) " "
+          BLOCK@[23; 25)
+            L_CURLY@[23; 24) "{"
+            R_CURLY@[24; 25) "}"
+      WHITESPACE@[25; 30) "\n    "
+      EXPR_STMT@[30; 37)
+        LOOP_EXPR@[30; 37)
+          LOOP_KW@[30; 34) "loop"
+          WHITESPACE@[34; 35) " "
+          BLOCK@[35; 37)
+            L_CURLY@[35; 36) "{"
+            R_CURLY@[36; 37) "}"
+      WHITESPACE@[37; 42) "\n    "
+      EXPR_STMT@[42; 53)
+        MATCH_EXPR@[42; 53)
+          MATCH_KW@[42; 47) "match"
+          WHITESPACE@[47; 48) " "
+          TUPLE_EXPR@[48; 50)
+            L_PAREN@[48; 49) "("
+            R_PAREN@[49; 50) ")"
+          WHITESPACE@[50; 51) " "
+          MATCH_ARM_LIST@[51; 53)
+            L_CURLY@[51; 52) "{"
+            R_CURLY@[52; 53) "}"
+      WHITESPACE@[53; 58) "\n    "
+      EXPR_STMT@[58; 71)
+        WHILE_EXPR@[58; 71)
+          WHILE_KW@[58; 63) "while"
+          WHITESPACE@[63; 64) " "
+          CONDITION@[64; 68)
+            LITERAL@[64; 68)
+              TRUE_KW@[64; 68) "true"
+          WHITESPACE@[68; 69) " "
+          BLOCK@[69; 71)
+            L_CURLY@[69; 70) "{"
+            R_CURLY@[70; 71) "}"
+      WHITESPACE@[71; 76) "\n    "
+      EXPR_STMT@[76; 90)
+        FOR_EXPR@[76; 90)
+          FOR_KW@[76; 79) "for"
+          WHITESPACE@[79; 80) " "
+          PLACEHOLDER_PAT@[80; 81)
+            UNDERSCORE@[80; 81) "_"
+          WHITESPACE@[81; 82) " "
+          IN_KW@[82; 84) "in"
+          WHITESPACE@[84; 85) " "
+          TUPLE_EXPR@[85; 87)
+            L_PAREN@[85; 86) "("
+            R_PAREN@[86; 87) ")"
+          WHITESPACE@[87; 88) " "
+          BLOCK@[88; 90)
+            L_CURLY@[88; 89) "{"
+            R_CURLY@[89; 90) "}"
+      WHITESPACE@[90; 95) "\n    "
+      EXPR_STMT@[95; 97)
+        BLOCK_EXPR@[95; 97)
+          BLOCK@[95; 97)
+            L_CURLY@[95; 96) "{"
+            R_CURLY@[96; 97) "}"
+      WHITESPACE@[97; 102) "\n    "
+      EXPR_STMT@[102; 104)
+        BLOCK_EXPR@[102; 104)
+          BLOCK@[102; 104)
+            L_CURLY@[102; 103) "{"
+            R_CURLY@[103; 104) "}"
+      WHITESPACE@[104; 109) "\n    "
+      EXPR_STMT@[109; 152)
+        MACRO_CALL@[109; 152)
+          PATH@[109; 120)
+            PATH_SEGMENT@[109; 120)
+              NAME_REF@[109; 120)
+                IDENT@[109; 120) "macro_rules"
+          EXCL@[120; 121) "!"
+          WHITESPACE@[121; 122) " "
+          NAME@[122; 126)
+            IDENT@[122; 126) "test"
+          WHITESPACE@[126; 127) " "
+          TOKEN_TREE@[127; 152)
+            L_CURLY@[127; 128) "{"
+            WHITESPACE@[128; 138) "\n         "
+            TOKEN_TREE@[138; 140)
+              L_PAREN@[138; 139) "("
+              R_PAREN@[139; 140) ")"
+            WHITESPACE@[140; 141) " "
+            EQ@[141; 142) "="
+            R_ANGLE@[142; 143) ">"
+            WHITESPACE@[143; 144) " "
+            TOKEN_TREE@[144; 146)
+              L_CURLY@[144; 145) "{"
+              R_CURLY@[145; 146) "}"
+            WHITESPACE@[146; 151) "\n    "
+            R_CURLY@[151; 152) "}"
+      WHITESPACE@[152; 157) "\n    "
+      MACRO_CALL@[157; 164)
+        PATH@[157; 161)
+          PATH_SEGMENT@[157; 161)
+            NAME_REF@[157; 161)
+              IDENT@[157; 161) "test"
+        EXCL@[161; 162) "!"
+        TOKEN_TREE@[162; 164)
+          L_CURLY@[162; 163) "{"
+          R_CURLY@[163; 164) "}"
+      WHITESPACE@[164; 165) "\n"
+      R_CURLY@[165; 166) "}"
+  WHITESPACE@[166; 167) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rs b/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.rs
new file mode 100644 (file)
index 0000000..ef6aa84
--- /dev/null
@@ -0,0 +1 @@
+default impl Foo {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.txt b/crates/ra_syntax/test_data/parser/inline/ok/0097_default_impl.txt
new file mode 100644 (file)
index 0000000..ada94a8
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 20)
+  IMPL_BLOCK@[0; 19)
+    DEFAULT_KW@[0; 7) "default"
+    WHITESPACE@[7; 8) " "
+    IMPL_KW@[8; 12) "impl"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rs b/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.rs
new file mode 100644 (file)
index 0000000..31a1e43
--- /dev/null
@@ -0,0 +1 @@
+const unsafe fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.txt
new file mode 100644 (file)
index 0000000..0dd42ab
--- /dev/null
@@ -0,0 +1,18 @@
+SOURCE_FILE@[0; 25)
+  FN_DEF@[0; 24)
+    CONST_KW@[0; 5) "const"
+    WHITESPACE@[5; 6) " "
+    UNSAFE_KW@[6; 12) "unsafe"
+    WHITESPACE@[12; 13) " "
+    FN_KW@[13; 15) "fn"
+    WHITESPACE@[15; 16) " "
+    NAME@[16; 19)
+      IDENT@[16; 19) "foo"
+    PARAM_LIST@[19; 21)
+      L_PAREN@[19; 20) "("
+      R_PAREN@[20; 21) ")"
+    WHITESPACE@[21; 22) " "
+    BLOCK@[22; 24)
+      L_CURLY@[22; 23) "{"
+      R_CURLY@[23; 24) "}"
+  WHITESPACE@[24; 25) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rs b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rs
new file mode 100644 (file)
index 0000000..9d55bed
--- /dev/null
@@ -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/test_data/parser/inline/ok/0099_param_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.txt
new file mode 100644 (file)
index 0000000..80d6368
--- /dev/null
@@ -0,0 +1,99 @@
+SOURCE_FILE@[0; 67)
+  FN_DEF@[0; 9)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 4)
+      IDENT@[3; 4) "a"
+    PARAM_LIST@[4; 6)
+      L_PAREN@[4; 5) "("
+      R_PAREN@[5; 6) ")"
+    WHITESPACE@[6; 7) " "
+    BLOCK@[7; 9)
+      L_CURLY@[7; 8) "{"
+      R_CURLY@[8; 9) "}"
+  WHITESPACE@[9; 10) "\n"
+  FN_DEF@[10; 25)
+    FN_KW@[10; 12) "fn"
+    WHITESPACE@[12; 13) " "
+    NAME@[13; 14)
+      IDENT@[13; 14) "b"
+    PARAM_LIST@[14; 22)
+      L_PAREN@[14; 15) "("
+      PARAM@[15; 21)
+        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) "\n"
+  FN_DEF@[26; 43)
+    FN_KW@[26; 28) "fn"
+    WHITESPACE@[28; 29) " "
+    NAME@[29; 30)
+      IDENT@[29; 30) "c"
+    PARAM_LIST@[30; 40)
+      L_PAREN@[30; 31) "("
+      PARAM@[31; 37)
+        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) "\n"
+  FN_DEF@[44; 66)
+    FN_KW@[44; 46) "fn"
+    WHITESPACE@[46; 47) " "
+    NAME@[47; 48)
+      IDENT@[47; 48) "d"
+    PARAM_LIST@[48; 63)
+      L_PAREN@[48; 49) "("
+      PARAM@[49; 55)
+        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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.rs
new file mode 100644 (file)
index 0000000..972197d
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo() {
+    for x in [] {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.txt
new file mode 100644 (file)
index 0000000..09e1085
--- /dev/null
@@ -0,0 +1,34 @@
+SOURCE_FILE@[0; 33)
+  FN_DEF@[0; 32)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 32)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 30)
+        FOR_EXPR@[15; 29)
+          FOR_KW@[15; 18) "for"
+          WHITESPACE@[18; 19) " "
+          BIND_PAT@[19; 20)
+            NAME@[19; 20)
+              IDENT@[19; 20) "x"
+          WHITESPACE@[20; 21) " "
+          IN_KW@[21; 23) "in"
+          WHITESPACE@[23; 24) " "
+          ARRAY_EXPR@[24; 26)
+            L_BRACK@[24; 25) "["
+            R_BRACK@[25; 26) "]"
+          WHITESPACE@[26; 27) " "
+          BLOCK@[27; 29)
+            L_CURLY@[27; 28) "{"
+            R_CURLY@[28; 29) "}"
+        SEMI@[29; 30) ";"
+      WHITESPACE@[30; 31) "\n"
+      R_CURLY@[31; 32) "}"
+  WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rs b/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.rs
new file mode 100644 (file)
index 0000000..33cfc4c
--- /dev/null
@@ -0,0 +1 @@
+unsafe fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.txt
new file mode 100644 (file)
index 0000000..1a60f6f
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 19)
+  FN_DEF@[0; 18)
+    UNSAFE_KW@[0; 6) "unsafe"
+    WHITESPACE@[6; 7) " "
+    FN_KW@[7; 9) "fn"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0102_field_pat_list.rs b/crates/ra_syntax/test_data/parser/inline/ok/0102_field_pat_list.rs
new file mode 100644 (file)
index 0000000..da3412f
--- /dev/null
@@ -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/test_data/parser/inline/ok/0102_field_pat_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0102_field_pat_list.txt
new file mode 100644 (file)
index 0000000..a2af4fc
--- /dev/null
@@ -0,0 +1,130 @@
+SOURCE_FILE@[0; 119)
+  FN_DEF@[0; 118)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 118)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 29)
+        LET_KW@[15; 18) "let"
+        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) "\n    "
+      LET_STMT@[34; 62)
+        LET_KW@[34; 37) "let"
+        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) "ref"
+              WHITESPACE@[48; 49) " "
+              MUT_KW@[49; 52) "mut"
+              WHITESPACE@[52; 53) " "
+              NAME@[53; 54)
+                IDENT@[53; 54) "g"
+            WHITESPACE@[54; 55) " "
+            R_CURLY@[55; 56) "}"
+        WHITESPACE@[56; 57) " "
+        EQ@[57; 58) "="
+        WHITESPACE@[58; 59) " "
+        TUPLE_EXPR@[59; 61)
+          L_PAREN@[59; 60) "("
+          R_PAREN@[60; 61) ")"
+        SEMI@[61; 62) ";"
+      WHITESPACE@[62; 67) "\n    "
+      LET_STMT@[67; 90)
+        LET_KW@[67; 70) "let"
+        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) " "
+            FIELD_PAT@[75; 79)
+              NAME@[75; 76)
+                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) "\n    "
+      LET_STMT@[95; 116)
+        LET_KW@[95; 98) "let"
+        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) " "
+            FIELD_PAT@[103; 107)
+              NAME@[103; 104)
+                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) "\n"
+      R_CURLY@[117; 118) "}"
+  WHITESPACE@[118; 119) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.rs
new file mode 100644 (file)
index 0000000..4dc1999
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    [];
+    [1];
+    [1, 2,];
+    [1; 2];
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.txt
new file mode 100644 (file)
index 0000000..e74e231
--- /dev/null
@@ -0,0 +1,54 @@
+SOURCE_FILE@[0; 55)
+  FN_DEF@[0; 54)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 54)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 18)
+        ARRAY_EXPR@[15; 17)
+          L_BRACK@[15; 16) "["
+          R_BRACK@[16; 17) "]"
+        SEMI@[17; 18) ";"
+      WHITESPACE@[18; 23) "\n    "
+      EXPR_STMT@[23; 27)
+        ARRAY_EXPR@[23; 26)
+          L_BRACK@[23; 24) "["
+          LITERAL@[24; 25)
+            INT_NUMBER@[24; 25) "1"
+          R_BRACK@[25; 26) "]"
+        SEMI@[26; 27) ";"
+      WHITESPACE@[27; 32) "\n    "
+      EXPR_STMT@[32; 40)
+        ARRAY_EXPR@[32; 39)
+          L_BRACK@[32; 33) "["
+          LITERAL@[33; 34)
+            INT_NUMBER@[33; 34) "1"
+          COMMA@[34; 35) ","
+          WHITESPACE@[35; 36) " "
+          LITERAL@[36; 37)
+            INT_NUMBER@[36; 37) "2"
+          COMMA@[37; 38) ","
+          R_BRACK@[38; 39) "]"
+        SEMI@[39; 40) ";"
+      WHITESPACE@[40; 45) "\n    "
+      EXPR_STMT@[45; 52)
+        ARRAY_EXPR@[45; 51)
+          L_BRACK@[45; 46) "["
+          LITERAL@[46; 47)
+            INT_NUMBER@[46; 47) "1"
+          SEMI@[47; 48) ";"
+          WHITESPACE@[48; 49) " "
+          LITERAL@[49; 50)
+            INT_NUMBER@[49; 50) "2"
+          R_BRACK@[50; 51) "]"
+        SEMI@[51; 52) ";"
+      WHITESPACE@[52; 53) "\n"
+      R_CURLY@[53; 54) "}"
+  WHITESPACE@[54; 55) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rs b/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.rs
new file mode 100644 (file)
index 0000000..aef45e5
--- /dev/null
@@ -0,0 +1 @@
+type F = Box<Fn(x: i32) -> ()>;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.txt b/crates/ra_syntax/test_data/parser/inline/ok/0104_path_fn_trait_args.txt
new file mode 100644 (file)
index 0000000..d6f1968
--- /dev/null
@@ -0,0 +1,46 @@
+SOURCE_FILE@[0; 32)
+  TYPE_ALIAS_DEF@[0; 31)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "F"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    PATH_TYPE@[9; 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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.rs
new file mode 100644 (file)
index 0000000..2fed74c
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    {};
+    unsafe {};
+    'label: {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.txt
new file mode 100644 (file)
index 0000000..4bc446a
--- /dev/null
@@ -0,0 +1,42 @@
+SOURCE_FILE@[0; 52)
+  FN_DEF@[0; 51)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 51)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      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) "\n    "
+      EXPR_STMT@[23; 33)
+        BLOCK_EXPR@[23; 32)
+          UNSAFE_KW@[23; 29) "unsafe"
+          WHITESPACE@[29; 30) " "
+          BLOCK@[30; 32)
+            L_CURLY@[30; 31) "{"
+            R_CURLY@[31; 32) "}"
+        SEMI@[32; 33) ";"
+      WHITESPACE@[33; 38) "\n    "
+      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) "\n"
+      R_CURLY@[50; 51) "}"
+  WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.rs
new file mode 100644 (file)
index 0000000..0757178
--- /dev/null
@@ -0,0 +1,9 @@
+fn foo() {
+    || ();
+    || -> i32 { 92 };
+    |x| x;
+    move |x: i32,| x;
+    async || {};
+    move || {};
+    async move || {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.txt
new file mode 100644 (file)
index 0000000..a052181
--- /dev/null
@@ -0,0 +1,139 @@
+SOURCE_FILE@[0; 134)
+  FN_DEF@[0; 133)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 133)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      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) "\n    "
+      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) "\n    "
+      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) "\n    "
+      EXPR_STMT@[59; 76)
+        LAMBDA_EXPR@[59; 75)
+          MOVE_KW@[59; 63) "move"
+          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; 81) "\n    "
+      EXPR_STMT@[81; 93)
+        LAMBDA_EXPR@[81; 92)
+          ASYNC_KW@[81; 86) "async"
+          WHITESPACE@[86; 87) " "
+          PARAM_LIST@[87; 89)
+            PIPE@[87; 88) "|"
+            PIPE@[88; 89) "|"
+          WHITESPACE@[89; 90) " "
+          BLOCK_EXPR@[90; 92)
+            BLOCK@[90; 92)
+              L_CURLY@[90; 91) "{"
+              R_CURLY@[91; 92) "}"
+        SEMI@[92; 93) ";"
+      WHITESPACE@[93; 98) "\n    "
+      EXPR_STMT@[98; 109)
+        LAMBDA_EXPR@[98; 108)
+          MOVE_KW@[98; 102) "move"
+          WHITESPACE@[102; 103) " "
+          PARAM_LIST@[103; 105)
+            PIPE@[103; 104) "|"
+            PIPE@[104; 105) "|"
+          WHITESPACE@[105; 106) " "
+          BLOCK_EXPR@[106; 108)
+            BLOCK@[106; 108)
+              L_CURLY@[106; 107) "{"
+              R_CURLY@[107; 108) "}"
+        SEMI@[108; 109) ";"
+      WHITESPACE@[109; 114) "\n    "
+      EXPR_STMT@[114; 131)
+        LAMBDA_EXPR@[114; 130)
+          ASYNC_KW@[114; 119) "async"
+          WHITESPACE@[119; 120) " "
+          MOVE_KW@[120; 124) "move"
+          WHITESPACE@[124; 125) " "
+          PARAM_LIST@[125; 127)
+            PIPE@[125; 126) "|"
+            PIPE@[126; 127) "|"
+          WHITESPACE@[127; 128) " "
+          BLOCK_EXPR@[128; 130)
+            BLOCK@[128; 130)
+              L_CURLY@[128; 129) "{"
+              R_CURLY@[129; 130) "}"
+        SEMI@[130; 131) ";"
+      WHITESPACE@[131; 132) "\n"
+      R_CURLY@[132; 133) "}"
+  WHITESPACE@[133; 134) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.rs
new file mode 100644 (file)
index 0000000..1a3aa35
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+    x.foo();
+    y.bar::<T>(1, 2,);
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.txt
new file mode 100644 (file)
index 0000000..bc28b29
--- /dev/null
@@ -0,0 +1,62 @@
+SOURCE_FILE@[0; 49)
+  FN_DEF@[0; 48)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 48)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 23)
+        METHOD_CALL_EXPR@[15; 22)
+          PATH_EXPR@[15; 16)
+            PATH@[15; 16)
+              PATH_SEGMENT@[15; 16)
+                NAME_REF@[15; 16)
+                  IDENT@[15; 16) "x"
+          DOT@[16; 17) "."
+          NAME_REF@[17; 20)
+            IDENT@[17; 20) "foo"
+          ARG_LIST@[20; 22)
+            L_PAREN@[20; 21) "("
+            R_PAREN@[21; 22) ")"
+        SEMI@[22; 23) ";"
+      WHITESPACE@[23; 28) "\n    "
+      EXPR_STMT@[28; 46)
+        METHOD_CALL_EXPR@[28; 45)
+          PATH_EXPR@[28; 29)
+            PATH@[28; 29)
+              PATH_SEGMENT@[28; 29)
+                NAME_REF@[28; 29)
+                  IDENT@[28; 29) "y"
+          DOT@[29; 30) "."
+          NAME_REF@[30; 33)
+            IDENT@[30; 33) "bar"
+          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) "\n"
+      R_CURLY@[47; 48) "}"
+  WHITESPACE@[48; 49) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.rs
new file mode 100644 (file)
index 0000000..e4f7742
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    ();
+    (1);
+    (1,);
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.txt
new file mode 100644 (file)
index 0000000..32be7a8
--- /dev/null
@@ -0,0 +1,38 @@
+SOURCE_FILE@[0; 40)
+  FN_DEF@[0; 39)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 39)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 18)
+        TUPLE_EXPR@[15; 17)
+          L_PAREN@[15; 16) "("
+          R_PAREN@[16; 17) ")"
+        SEMI@[17; 18) ";"
+      WHITESPACE@[18; 23) "\n    "
+      EXPR_STMT@[23; 27)
+        PAREN_EXPR@[23; 26)
+          L_PAREN@[23; 24) "("
+          LITERAL@[24; 25)
+            INT_NUMBER@[24; 25) "1"
+          R_PAREN@[25; 26) ")"
+        SEMI@[26; 27) ";"
+      WHITESPACE@[27; 32) "\n    "
+      EXPR_STMT@[32; 37)
+        TUPLE_EXPR@[32; 36)
+          L_PAREN@[32; 33) "("
+          LITERAL@[33; 34)
+            INT_NUMBER@[33; 34) "1"
+          COMMA@[34; 35) ","
+          R_PAREN@[35; 36) ")"
+        SEMI@[36; 37) ";"
+      WHITESPACE@[37; 38) "\n"
+      R_CURLY@[38; 39) "}"
+  WHITESPACE@[39; 40) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0109_label.rs b/crates/ra_syntax/test_data/parser/inline/ok/0109_label.rs
new file mode 100644 (file)
index 0000000..48e83f2
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    'a: loop {}
+    'b: while true {}
+    'c: for x in () {}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0109_label.txt b/crates/ra_syntax/test_data/parser/inline/ok/0109_label.txt
new file mode 100644 (file)
index 0000000..39e4f4b
--- /dev/null
@@ -0,0 +1,64 @@
+SOURCE_FILE@[0; 74)
+  FN_DEF@[0; 73)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 73)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 26)
+        LOOP_EXPR@[15; 26)
+          LABEL@[15; 18)
+            LIFETIME@[15; 17) "\'a"
+            COLON@[17; 18) ":"
+          WHITESPACE@[18; 19) " "
+          LOOP_KW@[19; 23) "loop"
+          WHITESPACE@[23; 24) " "
+          BLOCK@[24; 26)
+            L_CURLY@[24; 25) "{"
+            R_CURLY@[25; 26) "}"
+      WHITESPACE@[26; 31) "\n    "
+      EXPR_STMT@[31; 48)
+        WHILE_EXPR@[31; 48)
+          LABEL@[31; 34)
+            LIFETIME@[31; 33) "\'b"
+            COLON@[33; 34) ":"
+          WHITESPACE@[34; 35) " "
+          WHILE_KW@[35; 40) "while"
+          WHITESPACE@[40; 41) " "
+          CONDITION@[41; 45)
+            LITERAL@[41; 45)
+              TRUE_KW@[41; 45) "true"
+          WHITESPACE@[45; 46) " "
+          BLOCK@[46; 48)
+            L_CURLY@[46; 47) "{"
+            R_CURLY@[47; 48) "}"
+      WHITESPACE@[48; 53) "\n    "
+      FOR_EXPR@[53; 71)
+        LABEL@[53; 56)
+          LIFETIME@[53; 55) "\'c"
+          COLON@[55; 56) ":"
+        WHITESPACE@[56; 57) " "
+        FOR_KW@[57; 60) "for"
+        WHITESPACE@[60; 61) " "
+        BIND_PAT@[61; 62)
+          NAME@[61; 62)
+            IDENT@[61; 62) "x"
+        WHITESPACE@[62; 63) " "
+        IN_KW@[63; 65) "in"
+        WHITESPACE@[65; 66) " "
+        TUPLE_EXPR@[66; 68)
+          L_PAREN@[66; 67) "("
+          R_PAREN@[67; 68) ")"
+        WHITESPACE@[68; 69) " "
+        BLOCK@[69; 71)
+          L_CURLY@[69; 70) "{"
+          R_CURLY@[70; 71) "}"
+      WHITESPACE@[71; 72) "\n"
+      R_CURLY@[72; 73) "}"
+  WHITESPACE@[73; 74) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rs b/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.rs
new file mode 100644 (file)
index 0000000..328e947
--- /dev/null
@@ -0,0 +1,3 @@
+use ::crate_name; // Rust 2018 - All flavours
+use crate_name; // Rust 2018 - Anchored paths
+use item_in_scope_or_crate_name; // Rust 2018 - Uniform Paths
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.txt b/crates/ra_syntax/test_data/parser/inline/ok/0110_use_path.txt
new file mode 100644 (file)
index 0000000..7dbcd39
--- /dev/null
@@ -0,0 +1,38 @@
+SOURCE_FILE@[0; 154)
+  USE_ITEM@[0; 17)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 16)
+      PATH@[4; 16)
+        PATH_SEGMENT@[4; 16)
+          COLONCOLON@[4; 6) "::"
+          NAME_REF@[6; 16)
+            IDENT@[6; 16) "crate_name"
+    SEMI@[16; 17) ";"
+  WHITESPACE@[17; 18) " "
+  COMMENT@[18; 45) "// Rust 2018 - All fl ..."
+  WHITESPACE@[45; 46) "\n"
+  USE_ITEM@[46; 61)
+    USE_KW@[46; 49) "use"
+    WHITESPACE@[49; 50) " "
+    USE_TREE@[50; 60)
+      PATH@[50; 60)
+        PATH_SEGMENT@[50; 60)
+          NAME_REF@[50; 60)
+            IDENT@[50; 60) "crate_name"
+    SEMI@[60; 61) ";"
+  WHITESPACE@[61; 62) " "
+  COMMENT@[62; 91) "// Rust 2018 - Anchor ..."
+  WHITESPACE@[91; 92) "\n"
+  USE_ITEM@[92; 124)
+    USE_KW@[92; 95) "use"
+    WHITESPACE@[95; 96) " "
+    USE_TREE@[96; 123)
+      PATH@[96; 123)
+        PATH_SEGMENT@[96; 123)
+          NAME_REF@[96; 123)
+            IDENT@[96; 123) "item_in_scope_or_crat ..."
+    SEMI@[123; 124) ";"
+  WHITESPACE@[124; 125) " "
+  COMMENT@[125; 153) "// Rust 2018 - Unifor ..."
+  WHITESPACE@[153; 154) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.rs
new file mode 100644 (file)
index 0000000..f785acd
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    let (a, b, ..) = ();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt
new file mode 100644 (file)
index 0000000..aef3f7e
--- /dev/null
@@ -0,0 +1,40 @@
+SOURCE_FILE@[0; 39)
+  FN_DEF@[0; 38)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 38)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      LET_STMT@[16; 36)
+        LET_KW@[16; 19) "let"
+        WHITESPACE@[19; 20) " "
+        TUPLE_PAT@[20; 30)
+          L_PAREN@[20; 21) "("
+          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) "\n"
+      R_CURLY@[37; 38) "}"
+  WHITESPACE@[38; 39) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.rs
new file mode 100644 (file)
index 0000000..5a93469
--- /dev/null
@@ -0,0 +1,9 @@
+fn main() {
+    let a = ();
+    let mut b = ();
+    let ref c = ();
+    let ref mut d = ();
+    let e @ _ = ();
+    let ref mut f @ g @ _ = ();
+    let box i = Box::new(1i32);
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.txt
new file mode 100644 (file)
index 0000000..189254a
--- /dev/null
@@ -0,0 +1,156 @@
+SOURCE_FILE@[0; 178)
+  FN_DEF@[0; 177)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 177)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      LET_STMT@[16; 27)
+        LET_KW@[16; 19) "let"
+        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) "\n    "
+      LET_STMT@[32; 47)
+        LET_KW@[32; 35) "let"
+        WHITESPACE@[35; 36) " "
+        BIND_PAT@[36; 41)
+          MUT_KW@[36; 39) "mut"
+          WHITESPACE@[39; 40) " "
+          NAME@[40; 41)
+            IDENT@[40; 41) "b"
+        WHITESPACE@[41; 42) " "
+        EQ@[42; 43) "="
+        WHITESPACE@[43; 44) " "
+        TUPLE_EXPR@[44; 46)
+          L_PAREN@[44; 45) "("
+          R_PAREN@[45; 46) ")"
+        SEMI@[46; 47) ";"
+      WHITESPACE@[47; 52) "\n    "
+      LET_STMT@[52; 67)
+        LET_KW@[52; 55) "let"
+        WHITESPACE@[55; 56) " "
+        BIND_PAT@[56; 61)
+          REF_KW@[56; 59) "ref"
+          WHITESPACE@[59; 60) " "
+          NAME@[60; 61)
+            IDENT@[60; 61) "c"
+        WHITESPACE@[61; 62) " "
+        EQ@[62; 63) "="
+        WHITESPACE@[63; 64) " "
+        TUPLE_EXPR@[64; 66)
+          L_PAREN@[64; 65) "("
+          R_PAREN@[65; 66) ")"
+        SEMI@[66; 67) ";"
+      WHITESPACE@[67; 72) "\n    "
+      LET_STMT@[72; 91)
+        LET_KW@[72; 75) "let"
+        WHITESPACE@[75; 76) " "
+        BIND_PAT@[76; 85)
+          REF_KW@[76; 79) "ref"
+          WHITESPACE@[79; 80) " "
+          MUT_KW@[80; 83) "mut"
+          WHITESPACE@[83; 84) " "
+          NAME@[84; 85)
+            IDENT@[84; 85) "d"
+        WHITESPACE@[85; 86) " "
+        EQ@[86; 87) "="
+        WHITESPACE@[87; 88) " "
+        TUPLE_EXPR@[88; 90)
+          L_PAREN@[88; 89) "("
+          R_PAREN@[89; 90) ")"
+        SEMI@[90; 91) ";"
+      WHITESPACE@[91; 96) "\n    "
+      LET_STMT@[96; 111)
+        LET_KW@[96; 99) "let"
+        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) "\n    "
+      LET_STMT@[116; 143)
+        LET_KW@[116; 119) "let"
+        WHITESPACE@[119; 120) " "
+        BIND_PAT@[120; 137)
+          REF_KW@[120; 123) "ref"
+          WHITESPACE@[123; 124) " "
+          MUT_KW@[124; 127) "mut"
+          WHITESPACE@[127; 128) " "
+          NAME@[128; 129)
+            IDENT@[128; 129) "f"
+          WHITESPACE@[129; 130) " "
+          AT@[130; 131) "@"
+          WHITESPACE@[131; 132) " "
+          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; 148) "\n    "
+      LET_STMT@[148; 175)
+        LET_KW@[148; 151) "let"
+        WHITESPACE@[151; 152) " "
+        BIND_PAT@[152; 157)
+          BOX_KW@[152; 155) "box"
+          WHITESPACE@[155; 156) " "
+          NAME@[156; 157)
+            IDENT@[156; 157) "i"
+        WHITESPACE@[157; 158) " "
+        EQ@[158; 159) "="
+        WHITESPACE@[159; 160) " "
+        CALL_EXPR@[160; 174)
+          PATH_EXPR@[160; 168)
+            PATH@[160; 168)
+              PATH@[160; 163)
+                PATH_SEGMENT@[160; 163)
+                  NAME_REF@[160; 163)
+                    IDENT@[160; 163) "Box"
+              COLONCOLON@[163; 165) "::"
+              PATH_SEGMENT@[165; 168)
+                NAME_REF@[165; 168)
+                  IDENT@[165; 168) "new"
+          ARG_LIST@[168; 174)
+            L_PAREN@[168; 169) "("
+            LITERAL@[169; 173)
+              INT_NUMBER@[169; 173) "1i32"
+            R_PAREN@[173; 174) ")"
+        SEMI@[174; 175) ";"
+      WHITESPACE@[175; 176) "\n"
+      R_CURLY@[176; 177) "}"
+  WHITESPACE@[177; 178) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.rs
new file mode 100644 (file)
index 0000000..bbf09e3
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo(){
+    ;;;some_expr();;;;{;;;};;;;Ok(())
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.txt
new file mode 100644 (file)
index 0000000..601a5ba
--- /dev/null
@@ -0,0 +1,56 @@
+SOURCE_FILE@[0; 50)
+  FN_DEF@[0; 49)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    BLOCK@[8; 49)
+      L_CURLY@[8; 9) "{"
+      WHITESPACE@[9; 14) "\n    "
+      SEMI@[14; 15) ";"
+      SEMI@[15; 16) ";"
+      SEMI@[16; 17) ";"
+      EXPR_STMT@[17; 29)
+        CALL_EXPR@[17; 28)
+          PATH_EXPR@[17; 26)
+            PATH@[17; 26)
+              PATH_SEGMENT@[17; 26)
+                NAME_REF@[17; 26)
+                  IDENT@[17; 26) "some_expr"
+          ARG_LIST@[26; 28)
+            L_PAREN@[26; 27) "("
+            R_PAREN@[27; 28) ")"
+        SEMI@[28; 29) ";"
+      SEMI@[29; 30) ";"
+      SEMI@[30; 31) ";"
+      SEMI@[31; 32) ";"
+      EXPR_STMT@[32; 38)
+        BLOCK_EXPR@[32; 37)
+          BLOCK@[32; 37)
+            L_CURLY@[32; 33) "{"
+            SEMI@[33; 34) ";"
+            SEMI@[34; 35) ";"
+            SEMI@[35; 36) ";"
+            R_CURLY@[36; 37) "}"
+        SEMI@[37; 38) ";"
+      SEMI@[38; 39) ";"
+      SEMI@[39; 40) ";"
+      SEMI@[40; 41) ";"
+      CALL_EXPR@[41; 47)
+        PATH_EXPR@[41; 43)
+          PATH@[41; 43)
+            PATH_SEGMENT@[41; 43)
+              NAME_REF@[41; 43)
+                IDENT@[41; 43) "Ok"
+        ARG_LIST@[43; 47)
+          L_PAREN@[43; 44) "("
+          TUPLE_EXPR@[44; 46)
+            L_PAREN@[44; 45) "("
+            R_PAREN@[45; 46) ")"
+          R_PAREN@[46; 47) ")"
+      WHITESPACE@[47; 48) "\n"
+      R_CURLY@[48; 49) "}"
+  WHITESPACE@[49; 50) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rs b/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.rs
new file mode 100644 (file)
index 0000000..ddd5901
--- /dev/null
@@ -0,0 +1,2 @@
+struct Test<T>(T) where T: Clone;
+struct Test<T>(T);
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.txt b/crates/ra_syntax/test_data/parser/inline/ok/0114_tuple_struct_where.txt
new file mode 100644 (file)
index 0000000..8534592
--- /dev/null
@@ -0,0 +1,64 @@
+SOURCE_FILE@[0; 53)
+  STRUCT_DEF@[0; 33)
+    STRUCT_KW@[0; 6) "struct"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 11)
+      IDENT@[7; 11) "Test"
+    TYPE_PARAM_LIST@[11; 14)
+      L_ANGLE@[11; 12) "<"
+      TYPE_PARAM@[12; 13)
+        NAME@[12; 13)
+          IDENT@[12; 13) "T"
+      R_ANGLE@[13; 14) ">"
+    POS_FIELD_DEF_LIST@[14; 17)
+      L_PAREN@[14; 15) "("
+      POS_FIELD_DEF@[15; 16)
+        PATH_TYPE@[15; 16)
+          PATH@[15; 16)
+            PATH_SEGMENT@[15; 16)
+              NAME_REF@[15; 16)
+                IDENT@[15; 16) "T"
+      R_PAREN@[16; 17) ")"
+    WHITESPACE@[17; 18) " "
+    WHERE_CLAUSE@[18; 32)
+      WHERE_KW@[18; 23) "where"
+      WHITESPACE@[23; 24) " "
+      WHERE_PRED@[24; 32)
+        PATH_TYPE@[24; 25)
+          PATH@[24; 25)
+            PATH_SEGMENT@[24; 25)
+              NAME_REF@[24; 25)
+                IDENT@[24; 25) "T"
+        COLON@[25; 26) ":"
+        WHITESPACE@[26; 27) " "
+        TYPE_BOUND_LIST@[27; 32)
+          TYPE_BOUND@[27; 32)
+            PATH_TYPE@[27; 32)
+              PATH@[27; 32)
+                PATH_SEGMENT@[27; 32)
+                  NAME_REF@[27; 32)
+                    IDENT@[27; 32) "Clone"
+    SEMI@[32; 33) ";"
+  WHITESPACE@[33; 34) "\n"
+  STRUCT_DEF@[34; 52)
+    STRUCT_KW@[34; 40) "struct"
+    WHITESPACE@[40; 41) " "
+    NAME@[41; 45)
+      IDENT@[41; 45) "Test"
+    TYPE_PARAM_LIST@[45; 48)
+      L_ANGLE@[45; 46) "<"
+      TYPE_PARAM@[46; 47)
+        NAME@[46; 47)
+          IDENT@[46; 47) "T"
+      R_ANGLE@[47; 48) ">"
+    POS_FIELD_DEF_LIST@[48; 51)
+      L_PAREN@[48; 49) "("
+      POS_FIELD_DEF@[49; 50)
+        PATH_TYPE@[49; 50)
+          PATH@[49; 50)
+            PATH_SEGMENT@[49; 50)
+              NAME_REF@[49; 50)
+                IDENT@[49; 50) "T"
+      R_PAREN@[50; 51) ")"
+    SEMI@[51; 52) ";"
+  WHITESPACE@[52; 53) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0115_pos_field_attrs.rs b/crates/ra_syntax/test_data/parser/inline/ok/0115_pos_field_attrs.rs
new file mode 100644 (file)
index 0000000..635b9ac
--- /dev/null
@@ -0,0 +1,4 @@
+struct S (
+    #[serde(with = "url_serde")]
+    pub Uri,
+);
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0115_pos_field_attrs.txt b/crates/ra_syntax/test_data/parser/inline/ok/0115_pos_field_attrs.txt
new file mode 100644 (file)
index 0000000..6dd3a9b
--- /dev/null
@@ -0,0 +1,39 @@
+SOURCE_FILE@[0; 60)
+  STRUCT_DEF@[0; 59)
+    STRUCT_KW@[0; 6) "struct"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 8)
+      IDENT@[7; 8) "S"
+    WHITESPACE@[8; 9) " "
+    POS_FIELD_DEF_LIST@[9; 58)
+      L_PAREN@[9; 10) "("
+      WHITESPACE@[10; 15) "\n    "
+      POS_FIELD_DEF@[15; 55)
+        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) "\"url_serde\""
+              R_PAREN@[41; 42) ")"
+            R_BRACK@[42; 43) "]"
+        WHITESPACE@[43; 48) "\n    "
+        VISIBILITY@[48; 51)
+          PUB_KW@[48; 51) "pub"
+        WHITESPACE@[51; 52) " "
+        PATH_TYPE@[52; 55)
+          PATH@[52; 55)
+            PATH_SEGMENT@[52; 55)
+              NAME_REF@[52; 55)
+                IDENT@[52; 55) "Uri"
+      COMMA@[55; 56) ","
+      WHITESPACE@[56; 57) "\n"
+      R_PAREN@[57; 58) ")"
+    SEMI@[58; 59) ";"
+  WHITESPACE@[59; 60) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs b/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs
new file mode 100644 (file)
index 0000000..472cb88
--- /dev/null
@@ -0,0 +1,3 @@
+trait Foo {
+    fn bar(_: u64, mut x: i32);
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt b/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
new file mode 100644 (file)
index 0000000..158236c
--- /dev/null
@@ -0,0 +1,47 @@
+SOURCE_FILE@[0; 46)
+  TRAIT_DEF@[0; 45)
+    TRAIT_KW@[0; 5) "trait"
+    WHITESPACE@[5; 6) " "
+    NAME@[6; 9)
+      IDENT@[6; 9) "Foo"
+    WHITESPACE@[9; 10) " "
+    ITEM_LIST@[10; 45)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      FN_DEF@[16; 43)
+        FN_KW@[16; 18) "fn"
+        WHITESPACE@[18; 19) " "
+        NAME@[19; 22)
+          IDENT@[19; 22) "bar"
+        PARAM_LIST@[22; 42)
+          L_PAREN@[22; 23) "("
+          PARAM@[23; 29)
+            PLACEHOLDER_PAT@[23; 24)
+              UNDERSCORE@[23; 24) "_"
+            COLON@[24; 25) ":"
+            WHITESPACE@[25; 26) " "
+            PATH_TYPE@[26; 29)
+              PATH@[26; 29)
+                PATH_SEGMENT@[26; 29)
+                  NAME_REF@[26; 29)
+                    IDENT@[26; 29) "u64"
+          COMMA@[29; 30) ","
+          WHITESPACE@[30; 31) " "
+          PARAM@[31; 41)
+            BIND_PAT@[31; 36)
+              MUT_KW@[31; 34) "mut"
+              WHITESPACE@[34; 35) " "
+              NAME@[35; 36)
+                IDENT@[35; 36) "x"
+            COLON@[36; 37) ":"
+            WHITESPACE@[37; 38) " "
+            PATH_TYPE@[38; 41)
+              PATH@[38; 41)
+                PATH_SEGMENT@[38; 41)
+                  NAME_REF@[38; 41)
+                    IDENT@[38; 41) "i32"
+          R_PAREN@[41; 42) ")"
+        SEMI@[42; 43) ";"
+      WHITESPACE@[43; 44) "\n"
+      R_CURLY@[44; 45) "}"
+  WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.rs
new file mode 100644 (file)
index 0000000..edb470c
--- /dev/null
@@ -0,0 +1,2 @@
+type A = foo!();
+type B = crate::foo!();
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0117_macro_call_type.txt
new file mode 100644 (file)
index 0000000..892dc81
--- /dev/null
@@ -0,0 +1,43 @@
+SOURCE_FILE@[0; 41)
+  TYPE_ALIAS_DEF@[0; 16)
+    TYPE_KW@[0; 4) "type"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "A"
+    WHITESPACE@[6; 7) " "
+    EQ@[7; 8) "="
+    WHITESPACE@[8; 9) " "
+    MACRO_CALL@[9; 15)
+      PATH@[9; 12)
+        PATH_SEGMENT@[9; 12)
+          NAME_REF@[9; 12)
+            IDENT@[9; 12) "foo"
+      EXCL@[12; 13) "!"
+      TOKEN_TREE@[13; 15)
+        L_PAREN@[13; 14) "("
+        R_PAREN@[14; 15) ")"
+    SEMI@[15; 16) ";"
+  WHITESPACE@[16; 17) "\n"
+  TYPE_ALIAS_DEF@[17; 40)
+    TYPE_KW@[17; 21) "type"
+    WHITESPACE@[21; 22) " "
+    NAME@[22; 23)
+      IDENT@[22; 23) "B"
+    WHITESPACE@[23; 24) " "
+    EQ@[24; 25) "="
+    WHITESPACE@[25; 26) " "
+    MACRO_CALL@[26; 39)
+      PATH@[26; 36)
+        PATH@[26; 31)
+          PATH_SEGMENT@[26; 31)
+            CRATE_KW@[26; 31) "crate"
+        COLONCOLON@[31; 33) "::"
+        PATH_SEGMENT@[33; 36)
+          NAME_REF@[33; 36)
+            IDENT@[33; 36) "foo"
+      EXCL@[36; 37) "!"
+      TOKEN_TREE@[37; 39)
+        L_PAREN@[37; 38) "("
+        R_PAREN@[38; 39) ")"
+    SEMI@[39; 40) ";"
+  WHITESPACE@[40; 41) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rs b/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.rs
new file mode 100644 (file)
index 0000000..4d68cce
--- /dev/null
@@ -0,0 +1,5 @@
+enum F{}
+impl F {
+     //! This is a doc comment
+     #![doc("This is also a doc comment")]
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt
new file mode 100644 (file)
index 0000000..0ef3eeb
--- /dev/null
@@ -0,0 +1,38 @@
+SOURCE_FILE@[0; 94)
+  ENUM_DEF@[0; 8)
+    ENUM_KW@[0; 4) "enum"
+    WHITESPACE@[4; 5) " "
+    NAME@[5; 6)
+      IDENT@[5; 6) "F"
+    ENUM_VARIANT_LIST@[6; 8)
+      L_CURLY@[6; 7) "{"
+      R_CURLY@[7; 8) "}"
+  WHITESPACE@[8; 9) "\n"
+  IMPL_BLOCK@[9; 93)
+    IMPL_KW@[9; 13) "impl"
+    WHITESPACE@[13; 14) " "
+    PATH_TYPE@[14; 15)
+      PATH@[14; 15)
+        PATH_SEGMENT@[14; 15)
+          NAME_REF@[14; 15)
+            IDENT@[14; 15) "F"
+    WHITESPACE@[15; 16) " "
+    ITEM_LIST@[16; 93)
+      L_CURLY@[16; 17) "{"
+      WHITESPACE@[17; 23) "\n     "
+      COMMENT@[23; 48) "//! This is a doc com ..."
+      WHITESPACE@[48; 54) "\n     "
+      ATTR@[54; 91)
+        POUND@[54; 55) "#"
+        EXCL@[55; 56) "!"
+        TOKEN_TREE@[56; 91)
+          L_BRACK@[56; 57) "["
+          IDENT@[57; 60) "doc"
+          TOKEN_TREE@[60; 90)
+            L_PAREN@[60; 61) "("
+            STRING@[61; 89) "\"This is also a doc c ..."
+            R_PAREN@[89; 90) ")"
+          R_BRACK@[90; 91) "]"
+      WHITESPACE@[91; 92) "\n"
+      R_CURLY@[92; 93) "}"
+  WHITESPACE@[93; 94) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rs b/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.rs
new file mode 100644 (file)
index 0000000..f1bd72f
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    match () {
+        _ if foo => (),
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.txt b/crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.txt
new file mode 100644 (file)
index 0000000..d53e10e
--- /dev/null
@@ -0,0 +1,47 @@
+SOURCE_FILE@[0; 58)
+  FN_DEF@[0; 57)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 57)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      MATCH_EXPR@[15; 55)
+        MATCH_KW@[15; 20) "match"
+        WHITESPACE@[20; 21) " "
+        TUPLE_EXPR@[21; 23)
+          L_PAREN@[21; 22) "("
+          R_PAREN@[22; 23) ")"
+        WHITESPACE@[23; 24) " "
+        MATCH_ARM_LIST@[24; 55)
+          L_CURLY@[24; 25) "{"
+          WHITESPACE@[25; 34) "\n        "
+          MATCH_ARM@[34; 48)
+            PLACEHOLDER_PAT@[34; 35)
+              UNDERSCORE@[34; 35) "_"
+            WHITESPACE@[35; 36) " "
+            MATCH_GUARD@[36; 42)
+              IF_KW@[36; 38) "if"
+              WHITESPACE@[38; 39) " "
+              PATH_EXPR@[39; 42)
+                PATH@[39; 42)
+                  PATH_SEGMENT@[39; 42)
+                    NAME_REF@[39; 42)
+                      IDENT@[39; 42) "foo"
+            WHITESPACE@[42; 43) " "
+            FAT_ARROW@[43; 45) "=>"
+            WHITESPACE@[45; 46) " "
+            TUPLE_EXPR@[46; 48)
+              L_PAREN@[46; 47) "("
+              R_PAREN@[47; 48) ")"
+          COMMA@[48; 49) ","
+          WHITESPACE@[49; 54) "\n    "
+          R_CURLY@[54; 55) "}"
+      WHITESPACE@[55; 56) "\n"
+      R_CURLY@[56; 57) "}"
+  WHITESPACE@[57; 58) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rs b/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.rs
new file mode 100644 (file)
index 0000000..54a67c9
--- /dev/null
@@ -0,0 +1,8 @@
+fn foo() {
+    match () {
+        #![doc("Inner attribute")]
+        #![doc("Can be")]
+        #![doc("Stacked")]
+        _ => (),
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt b/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt
new file mode 100644 (file)
index 0000000..17c2963
--- /dev/null
@@ -0,0 +1,74 @@
+SOURCE_FILE@[0; 139)
+  FN_DEF@[0; 138)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 138)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      MATCH_EXPR@[15; 136)
+        MATCH_KW@[15; 20) "match"
+        WHITESPACE@[20; 21) " "
+        TUPLE_EXPR@[21; 23)
+          L_PAREN@[21; 22) "("
+          R_PAREN@[22; 23) ")"
+        WHITESPACE@[23; 24) " "
+        MATCH_ARM_LIST@[24; 136)
+          L_CURLY@[24; 25) "{"
+          WHITESPACE@[25; 34) "\n        "
+          ATTR@[34; 60)
+            POUND@[34; 35) "#"
+            EXCL@[35; 36) "!"
+            TOKEN_TREE@[36; 60)
+              L_BRACK@[36; 37) "["
+              IDENT@[37; 40) "doc"
+              TOKEN_TREE@[40; 59)
+                L_PAREN@[40; 41) "("
+                STRING@[41; 58) "\"Inner attribute\""
+                R_PAREN@[58; 59) ")"
+              R_BRACK@[59; 60) "]"
+          WHITESPACE@[60; 69) "\n        "
+          ATTR@[69; 86)
+            POUND@[69; 70) "#"
+            EXCL@[70; 71) "!"
+            TOKEN_TREE@[71; 86)
+              L_BRACK@[71; 72) "["
+              IDENT@[72; 75) "doc"
+              TOKEN_TREE@[75; 85)
+                L_PAREN@[75; 76) "("
+                STRING@[76; 84) "\"Can be\""
+                R_PAREN@[84; 85) ")"
+              R_BRACK@[85; 86) "]"
+          WHITESPACE@[86; 95) "\n        "
+          ATTR@[95; 113)
+            POUND@[95; 96) "#"
+            EXCL@[96; 97) "!"
+            TOKEN_TREE@[97; 113)
+              L_BRACK@[97; 98) "["
+              IDENT@[98; 101) "doc"
+              TOKEN_TREE@[101; 112)
+                L_PAREN@[101; 102) "("
+                STRING@[102; 111) "\"Stacked\""
+                R_PAREN@[111; 112) ")"
+              R_BRACK@[112; 113) "]"
+          WHITESPACE@[113; 122) "\n        "
+          MATCH_ARM@[122; 129)
+            PLACEHOLDER_PAT@[122; 123)
+              UNDERSCORE@[122; 123) "_"
+            WHITESPACE@[123; 124) " "
+            FAT_ARROW@[124; 126) "=>"
+            WHITESPACE@[126; 127) " "
+            TUPLE_EXPR@[127; 129)
+              L_PAREN@[127; 128) "("
+              R_PAREN@[128; 129) ")"
+          COMMA@[129; 130) ","
+          WHITESPACE@[130; 135) "\n    "
+          R_CURLY@[135; 136) "}"
+      WHITESPACE@[136; 137) "\n"
+      R_CURLY@[137; 138) "}"
+  WHITESPACE@[138; 139) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rs b/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.rs
new file mode 100644 (file)
index 0000000..676db42
--- /dev/null
@@ -0,0 +1,12 @@
+fn foo() {
+    match () {
+        #[cfg(feature = "some")]
+        _ => (),
+        #[cfg(feature = "other")]
+        _ => (),
+        #[cfg(feature = "many")]
+        #[cfg(feature = "attributes")]
+        #[cfg(feature = "before")]
+        _ => (),
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt
new file mode 100644 (file)
index 0000000..9c238e8
--- /dev/null
@@ -0,0 +1,135 @@
+SOURCE_FILE@[0; 259)
+  FN_DEF@[0; 258)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 258)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      MATCH_EXPR@[15; 256)
+        MATCH_KW@[15; 20) "match"
+        WHITESPACE@[20; 21) " "
+        TUPLE_EXPR@[21; 23)
+          L_PAREN@[21; 22) "("
+          R_PAREN@[22; 23) ")"
+        WHITESPACE@[23; 24) " "
+        MATCH_ARM_LIST@[24; 256)
+          L_CURLY@[24; 25) "{"
+          WHITESPACE@[25; 34) "\n        "
+          MATCH_ARM@[34; 74)
+            ATTR@[34; 58)
+              POUND@[34; 35) "#"
+              TOKEN_TREE@[35; 58)
+                L_BRACK@[35; 36) "["
+                IDENT@[36; 39) "cfg"
+                TOKEN_TREE@[39; 57)
+                  L_PAREN@[39; 40) "("
+                  IDENT@[40; 47) "feature"
+                  WHITESPACE@[47; 48) " "
+                  EQ@[48; 49) "="
+                  WHITESPACE@[49; 50) " "
+                  STRING@[50; 56) "\"some\""
+                  R_PAREN@[56; 57) ")"
+                R_BRACK@[57; 58) "]"
+            WHITESPACE@[58; 67) "\n        "
+            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) ")"
+          COMMA@[74; 75) ","
+          WHITESPACE@[75; 84) "\n        "
+          MATCH_ARM@[84; 125)
+            ATTR@[84; 109)
+              POUND@[84; 85) "#"
+              TOKEN_TREE@[85; 109)
+                L_BRACK@[85; 86) "["
+                IDENT@[86; 89) "cfg"
+                TOKEN_TREE@[89; 108)
+                  L_PAREN@[89; 90) "("
+                  IDENT@[90; 97) "feature"
+                  WHITESPACE@[97; 98) " "
+                  EQ@[98; 99) "="
+                  WHITESPACE@[99; 100) " "
+                  STRING@[100; 107) "\"other\""
+                  R_PAREN@[107; 108) ")"
+                R_BRACK@[108; 109) "]"
+            WHITESPACE@[109; 118) "\n        "
+            PLACEHOLDER_PAT@[118; 119)
+              UNDERSCORE@[118; 119) "_"
+            WHITESPACE@[119; 120) " "
+            FAT_ARROW@[120; 122) "=>"
+            WHITESPACE@[122; 123) " "
+            TUPLE_EXPR@[123; 125)
+              L_PAREN@[123; 124) "("
+              R_PAREN@[124; 125) ")"
+          COMMA@[125; 126) ","
+          WHITESPACE@[126; 135) "\n        "
+          MATCH_ARM@[135; 249)
+            ATTR@[135; 159)
+              POUND@[135; 136) "#"
+              TOKEN_TREE@[136; 159)
+                L_BRACK@[136; 137) "["
+                IDENT@[137; 140) "cfg"
+                TOKEN_TREE@[140; 158)
+                  L_PAREN@[140; 141) "("
+                  IDENT@[141; 148) "feature"
+                  WHITESPACE@[148; 149) " "
+                  EQ@[149; 150) "="
+                  WHITESPACE@[150; 151) " "
+                  STRING@[151; 157) "\"many\""
+                  R_PAREN@[157; 158) ")"
+                R_BRACK@[158; 159) "]"
+            WHITESPACE@[159; 168) "\n        "
+            ATTR@[168; 198)
+              POUND@[168; 169) "#"
+              TOKEN_TREE@[169; 198)
+                L_BRACK@[169; 170) "["
+                IDENT@[170; 173) "cfg"
+                TOKEN_TREE@[173; 197)
+                  L_PAREN@[173; 174) "("
+                  IDENT@[174; 181) "feature"
+                  WHITESPACE@[181; 182) " "
+                  EQ@[182; 183) "="
+                  WHITESPACE@[183; 184) " "
+                  STRING@[184; 196) "\"attributes\""
+                  R_PAREN@[196; 197) ")"
+                R_BRACK@[197; 198) "]"
+            WHITESPACE@[198; 207) "\n        "
+            ATTR@[207; 233)
+              POUND@[207; 208) "#"
+              TOKEN_TREE@[208; 233)
+                L_BRACK@[208; 209) "["
+                IDENT@[209; 212) "cfg"
+                TOKEN_TREE@[212; 232)
+                  L_PAREN@[212; 213) "("
+                  IDENT@[213; 220) "feature"
+                  WHITESPACE@[220; 221) " "
+                  EQ@[221; 222) "="
+                  WHITESPACE@[222; 223) " "
+                  STRING@[223; 231) "\"before\""
+                  R_PAREN@[231; 232) ")"
+                R_BRACK@[232; 233) "]"
+            WHITESPACE@[233; 242) "\n        "
+            PLACEHOLDER_PAT@[242; 243)
+              UNDERSCORE@[242; 243) "_"
+            WHITESPACE@[243; 244) " "
+            FAT_ARROW@[244; 246) "=>"
+            WHITESPACE@[246; 247) " "
+            TUPLE_EXPR@[247; 249)
+              L_PAREN@[247; 248) "("
+              R_PAREN@[248; 249) ")"
+          COMMA@[249; 250) ","
+          WHITESPACE@[250; 255) "\n    "
+          R_CURLY@[255; 256) "}"
+      WHITESPACE@[256; 257) "\n"
+      R_CURLY@[257; 258) "}"
+  WHITESPACE@[258; 259) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs b/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs
new file mode 100644 (file)
index 0000000..e8fdf74
--- /dev/null
@@ -0,0 +1,2 @@
+fn foo<#[derive(Lifetime)] 'a, #[derive(Type)] T>(_: &'a T) {
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt b/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
new file mode 100644 (file)
index 0000000..a459952
--- /dev/null
@@ -0,0 +1,61 @@
+SOURCE_FILE@[0; 64)
+  FN_DEF@[0; 63)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    TYPE_PARAM_LIST@[6; 49)
+      L_ANGLE@[6; 7) "<"
+      LIFETIME_PARAM@[7; 29)
+        ATTR@[7; 26)
+          POUND@[7; 8) "#"
+          TOKEN_TREE@[8; 26)
+            L_BRACK@[8; 9) "["
+            IDENT@[9; 15) "derive"
+            TOKEN_TREE@[15; 25)
+              L_PAREN@[15; 16) "("
+              IDENT@[16; 24) "Lifetime"
+              R_PAREN@[24; 25) ")"
+            R_BRACK@[25; 26) "]"
+        WHITESPACE@[26; 27) " "
+        LIFETIME@[27; 29) "\'a"
+      COMMA@[29; 30) ","
+      WHITESPACE@[30; 31) " "
+      TYPE_PARAM@[31; 48)
+        ATTR@[31; 46)
+          POUND@[31; 32) "#"
+          TOKEN_TREE@[32; 46)
+            L_BRACK@[32; 33) "["
+            IDENT@[33; 39) "derive"
+            TOKEN_TREE@[39; 45)
+              L_PAREN@[39; 40) "("
+              IDENT@[40; 44) "Type"
+              R_PAREN@[44; 45) ")"
+            R_BRACK@[45; 46) "]"
+        WHITESPACE@[46; 47) " "
+        NAME@[47; 48)
+          IDENT@[47; 48) "T"
+      R_ANGLE@[48; 49) ">"
+    PARAM_LIST@[49; 59)
+      L_PAREN@[49; 50) "("
+      PARAM@[50; 58)
+        PLACEHOLDER_PAT@[50; 51)
+          UNDERSCORE@[50; 51) "_"
+        COLON@[51; 52) ":"
+        WHITESPACE@[52; 53) " "
+        REFERENCE_TYPE@[53; 58)
+          AMP@[53; 54) "&"
+          LIFETIME@[54; 56) "\'a"
+          WHITESPACE@[56; 57) " "
+          PATH_TYPE@[57; 58)
+            PATH@[57; 58)
+              PATH_SEGMENT@[57; 58)
+                NAME_REF@[57; 58)
+                  IDENT@[57; 58) "T"
+      R_PAREN@[58; 59) ")"
+    WHITESPACE@[59; 60) " "
+    BLOCK@[60; 63)
+      L_CURLY@[60; 61) "{"
+      WHITESPACE@[61; 62) "\n"
+      R_CURLY@[62; 63) "}"
+  WHITESPACE@[63; 64) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs
new file mode 100644 (file)
index 0000000..c59adda
--- /dev/null
@@ -0,0 +1 @@
+extern "C" { fn printf(format: *const i8, ...) -> i32; }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.txt b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.txt
new file mode 100644 (file)
index 0000000..836e8e5
--- /dev/null
@@ -0,0 +1,49 @@
+SOURCE_FILE@[0; 57)
+  EXTERN_BLOCK@[0; 56)
+    ABI@[0; 10)
+      EXTERN_KW@[0; 6) "extern"
+      WHITESPACE@[6; 7) " "
+      STRING@[7; 10) "\"C\""
+    WHITESPACE@[10; 11) " "
+    EXTERN_ITEM_LIST@[11; 56)
+      L_CURLY@[11; 12) "{"
+      WHITESPACE@[12; 13) " "
+      FN_DEF@[13; 54)
+        FN_KW@[13; 15) "fn"
+        WHITESPACE@[15; 16) " "
+        NAME@[16; 22)
+          IDENT@[16; 22) "printf"
+        PARAM_LIST@[22; 46)
+          L_PAREN@[22; 23) "("
+          PARAM@[23; 40)
+            BIND_PAT@[23; 29)
+              NAME@[23; 29)
+                IDENT@[23; 29) "format"
+            COLON@[29; 30) ":"
+            WHITESPACE@[30; 31) " "
+            POINTER_TYPE@[31; 40)
+              STAR@[31; 32) "*"
+              CONST_KW@[32; 37) "const"
+              WHITESPACE@[37; 38) " "
+              PATH_TYPE@[38; 40)
+                PATH@[38; 40)
+                  PATH_SEGMENT@[38; 40)
+                    NAME_REF@[38; 40)
+                      IDENT@[38; 40) "i8"
+          COMMA@[40; 41) ","
+          WHITESPACE@[41; 42) " "
+          DOTDOTDOT@[42; 45) "..."
+          R_PAREN@[45; 46) ")"
+        WHITESPACE@[46; 47) " "
+        RET_TYPE@[47; 53)
+          THIN_ARROW@[47; 49) "->"
+          WHITESPACE@[49; 50) " "
+          PATH_TYPE@[50; 53)
+            PATH@[50; 53)
+              PATH_SEGMENT@[50; 53)
+                NAME_REF@[50; 53)
+                  IDENT@[50; 53) "i32"
+        SEMI@[53; 54) ";"
+      WHITESPACE@[54; 55) " "
+      R_CURLY@[55; 56) "}"
+  WHITESPACE@[56; 57) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rs b/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.rs
new file mode 100644 (file)
index 0000000..f4adcb6
--- /dev/null
@@ -0,0 +1 @@
+async fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.txt
new file mode 100644 (file)
index 0000000..f0610e7
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 18)
+  FN_DEF@[0; 17)
+    ASYNC_KW@[0; 5) "async"
+    WHITESPACE@[5; 6) " "
+    FN_KW@[6; 8) "fn"
+    WHITESPACE@[8; 9) " "
+    NAME@[9; 12)
+      IDENT@[9; 12) "foo"
+    PARAM_LIST@[12; 14)
+      L_PAREN@[12; 13) "("
+      R_PAREN@[13; 14) ")"
+    WHITESPACE@[14; 15) " "
+    BLOCK@[15; 17)
+      L_CURLY@[15; 16) "{"
+      R_CURLY@[16; 17) "}"
+  WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rs b/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.rs
new file mode 100644 (file)
index 0000000..0f454d1
--- /dev/null
@@ -0,0 +1 @@
+fn foo() { crate::foo(); }
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.txt b/crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.txt
new file mode 100644 (file)
index 0000000..4afe9c5
--- /dev/null
@@ -0,0 +1,31 @@
+SOURCE_FILE@[0; 27)
+  FN_DEF@[0; 26)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 26)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) " "
+      EXPR_STMT@[11; 24)
+        CALL_EXPR@[11; 23)
+          PATH_EXPR@[11; 21)
+            PATH@[11; 21)
+              PATH@[11; 16)
+                PATH_SEGMENT@[11; 16)
+                  CRATE_KW@[11; 16) "crate"
+              COLONCOLON@[16; 18) "::"
+              PATH_SEGMENT@[18; 21)
+                NAME_REF@[18; 21)
+                  IDENT@[18; 21) "foo"
+          ARG_LIST@[21; 23)
+            L_PAREN@[21; 22) "("
+            R_PAREN@[22; 23) ")"
+        SEMI@[23; 24) ";"
+      WHITESPACE@[24; 25) " "
+      R_CURLY@[25; 26) "}"
+  WHITESPACE@[26; 27) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0125_struct_literal_field_with_attr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0125_struct_literal_field_with_attr.rs
new file mode 100644 (file)
index 0000000..a6c7760
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    S { #[cfg(test)] field: 1 }
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0125_struct_literal_field_with_attr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0125_struct_literal_field_with_attr.txt
new file mode 100644 (file)
index 0000000..f9c5ec1
--- /dev/null
@@ -0,0 +1,45 @@
+SOURCE_FILE@[0; 46)
+  FN_DEF@[0; 45)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 45)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      STRUCT_LIT@[16; 43)
+        PATH@[16; 17)
+          PATH_SEGMENT@[16; 17)
+            NAME_REF@[16; 17)
+              IDENT@[16; 17) "S"
+        WHITESPACE@[17; 18) " "
+        NAMED_FIELD_LIST@[18; 43)
+          L_CURLY@[18; 19) "{"
+          WHITESPACE@[19; 20) " "
+          NAMED_FIELD@[20; 41)
+            ATTR@[20; 32)
+              POUND@[20; 21) "#"
+              TOKEN_TREE@[21; 32)
+                L_BRACK@[21; 22) "["
+                IDENT@[22; 25) "cfg"
+                TOKEN_TREE@[25; 31)
+                  L_PAREN@[25; 26) "("
+                  IDENT@[26; 30) "test"
+                  R_PAREN@[30; 31) ")"
+                R_BRACK@[31; 32) "]"
+            WHITESPACE@[32; 33) " "
+            NAME_REF@[33; 38)
+              IDENT@[33; 38) "field"
+            COLON@[38; 39) ":"
+            WHITESPACE@[39; 40) " "
+            LITERAL@[40; 41)
+              INT_NUMBER@[40; 41) "1"
+          WHITESPACE@[41; 42) " "
+          R_CURLY@[42; 43) "}"
+      WHITESPACE@[43; 44) "\n"
+      R_CURLY@[44; 45) "}"
+  WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rs b/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.rs
new file mode 100644 (file)
index 0000000..b28c078
--- /dev/null
@@ -0,0 +1,6 @@
+fn foo() {
+    #[A] foo();
+    #[B] bar!{}
+    #[C] #[D] {}
+    #[D] return ();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt b/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt
new file mode 100644 (file)
index 0000000..c15c757
--- /dev/null
@@ -0,0 +1,88 @@
+SOURCE_FILE@[0; 82)
+  FN_DEF@[0; 81)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 81)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 26)
+        ATTR@[15; 19)
+          POUND@[15; 16) "#"
+          TOKEN_TREE@[16; 19)
+            L_BRACK@[16; 17) "["
+            IDENT@[17; 18) "A"
+            R_BRACK@[18; 19) "]"
+        WHITESPACE@[19; 20) " "
+        CALL_EXPR@[20; 25)
+          PATH_EXPR@[20; 23)
+            PATH@[20; 23)
+              PATH_SEGMENT@[20; 23)
+                NAME_REF@[20; 23)
+                  IDENT@[20; 23) "foo"
+          ARG_LIST@[23; 25)
+            L_PAREN@[23; 24) "("
+            R_PAREN@[24; 25) ")"
+        SEMI@[25; 26) ";"
+      WHITESPACE@[26; 31) "\n    "
+      EXPR_STMT@[31; 42)
+        ATTR@[31; 35)
+          POUND@[31; 32) "#"
+          TOKEN_TREE@[32; 35)
+            L_BRACK@[32; 33) "["
+            IDENT@[33; 34) "B"
+            R_BRACK@[34; 35) "]"
+        WHITESPACE@[35; 36) " "
+        MACRO_CALL@[36; 42)
+          PATH@[36; 39)
+            PATH_SEGMENT@[36; 39)
+              NAME_REF@[36; 39)
+                IDENT@[36; 39) "bar"
+          EXCL@[39; 40) "!"
+          TOKEN_TREE@[40; 42)
+            L_CURLY@[40; 41) "{"
+            R_CURLY@[41; 42) "}"
+      WHITESPACE@[42; 47) "\n    "
+      EXPR_STMT@[47; 59)
+        ATTR@[47; 51)
+          POUND@[47; 48) "#"
+          TOKEN_TREE@[48; 51)
+            L_BRACK@[48; 49) "["
+            IDENT@[49; 50) "C"
+            R_BRACK@[50; 51) "]"
+        WHITESPACE@[51; 52) " "
+        ATTR@[52; 56)
+          POUND@[52; 53) "#"
+          TOKEN_TREE@[53; 56)
+            L_BRACK@[53; 54) "["
+            IDENT@[54; 55) "D"
+            R_BRACK@[55; 56) "]"
+        WHITESPACE@[56; 57) " "
+        BLOCK_EXPR@[57; 59)
+          BLOCK@[57; 59)
+            L_CURLY@[57; 58) "{"
+            R_CURLY@[58; 59) "}"
+      WHITESPACE@[59; 64) "\n    "
+      EXPR_STMT@[64; 79)
+        ATTR@[64; 68)
+          POUND@[64; 65) "#"
+          TOKEN_TREE@[65; 68)
+            L_BRACK@[65; 66) "["
+            IDENT@[66; 67) "D"
+            R_BRACK@[67; 68) "]"
+        WHITESPACE@[68; 69) " "
+        RETURN_EXPR@[69; 78)
+          RETURN_KW@[69; 75) "return"
+          WHITESPACE@[75; 76) " "
+          TUPLE_EXPR@[76; 78)
+            L_PAREN@[76; 77) "("
+            R_PAREN@[77; 78) ")"
+        SEMI@[78; 79) ";"
+      WHITESPACE@[79; 80) "\n"
+      R_CURLY@[80; 81) "}"
+  WHITESPACE@[81; 82) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs b/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs
new file mode 100644 (file)
index 0000000..9c5c8eb
--- /dev/null
@@ -0,0 +1,4 @@
+fn foo() {
+    { #[A] bar!()? }
+    #[B] &()
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt b/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
new file mode 100644 (file)
index 0000000..62a6a7b
--- /dev/null
@@ -0,0 +1,54 @@
+SOURCE_FILE@[0; 47)
+  FN_DEF@[0; 46)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 46)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 31)
+        BLOCK_EXPR@[15; 31)
+          BLOCK@[15; 31)
+            L_CURLY@[15; 16) "{"
+            WHITESPACE@[16; 17) " "
+            TRY_EXPR@[17; 29)
+              ATTR@[17; 21)
+                POUND@[17; 18) "#"
+                TOKEN_TREE@[18; 21)
+                  L_BRACK@[18; 19) "["
+                  IDENT@[19; 20) "A"
+                  R_BRACK@[20; 21) "]"
+              WHITESPACE@[21; 22) " "
+              MACRO_CALL@[22; 28)
+                PATH@[22; 25)
+                  PATH_SEGMENT@[22; 25)
+                    NAME_REF@[22; 25)
+                      IDENT@[22; 25) "bar"
+                EXCL@[25; 26) "!"
+                TOKEN_TREE@[26; 28)
+                  L_PAREN@[26; 27) "("
+                  R_PAREN@[27; 28) ")"
+              QUESTION@[28; 29) "?"
+            WHITESPACE@[29; 30) " "
+            R_CURLY@[30; 31) "}"
+      WHITESPACE@[31; 36) "\n    "
+      REF_EXPR@[36; 44)
+        ATTR@[36; 40)
+          POUND@[36; 37) "#"
+          TOKEN_TREE@[37; 40)
+            L_BRACK@[37; 38) "["
+            IDENT@[38; 39) "B"
+            R_BRACK@[39; 40) "]"
+        WHITESPACE@[40; 41) " "
+        AMP@[41; 42) "&"
+        TUPLE_EXPR@[42; 44)
+          L_PAREN@[42; 43) "("
+          R_PAREN@[43; 44) ")"
+      WHITESPACE@[44; 45) "\n"
+      R_CURLY@[45; 46) "}"
+  WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rs b/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.rs
new file mode 100644 (file)
index 0000000..46af91b
--- /dev/null
@@ -0,0 +1,2 @@
+unsafe async fn foo() {}
+const unsafe fn bar() {}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.txt b/crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.txt
new file mode 100644 (file)
index 0000000..2a16aeb
--- /dev/null
@@ -0,0 +1,35 @@
+SOURCE_FILE@[0; 50)
+  FN_DEF@[0; 24)
+    UNSAFE_KW@[0; 6) "unsafe"
+    WHITESPACE@[6; 7) " "
+    ASYNC_KW@[7; 12) "async"
+    WHITESPACE@[12; 13) " "
+    FN_KW@[13; 15) "fn"
+    WHITESPACE@[15; 16) " "
+    NAME@[16; 19)
+      IDENT@[16; 19) "foo"
+    PARAM_LIST@[19; 21)
+      L_PAREN@[19; 20) "("
+      R_PAREN@[20; 21) ")"
+    WHITESPACE@[21; 22) " "
+    BLOCK@[22; 24)
+      L_CURLY@[22; 23) "{"
+      R_CURLY@[23; 24) "}"
+  WHITESPACE@[24; 25) "\n"
+  FN_DEF@[25; 49)
+    CONST_KW@[25; 30) "const"
+    WHITESPACE@[30; 31) " "
+    UNSAFE_KW@[31; 37) "unsafe"
+    WHITESPACE@[37; 38) " "
+    FN_KW@[38; 40) "fn"
+    WHITESPACE@[40; 41) " "
+    NAME@[41; 44)
+      IDENT@[41; 44) "bar"
+    PARAM_LIST@[44; 46)
+      L_PAREN@[44; 45) "("
+      R_PAREN@[45; 46) ")"
+    WHITESPACE@[46; 47) " "
+    BLOCK@[47; 49)
+      L_CURLY@[47; 48) "{"
+      R_CURLY@[48; 49) "}"
+  WHITESPACE@[49; 50) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.rs
new file mode 100644 (file)
index 0000000..811181d
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    let m!(x) = 0;
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.txt
new file mode 100644 (file)
index 0000000..50b4ab2
--- /dev/null
@@ -0,0 +1,36 @@
+SOURCE_FILE@[0; 33)
+  FN_DEF@[0; 32)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 32)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      LET_STMT@[16; 30)
+        LET_KW@[16; 19) "let"
+        WHITESPACE@[19; 20) " "
+        MACRO_CALL@[20; 25)
+          PATH_PAT@[20; 21)
+            PATH@[20; 21)
+              PATH_SEGMENT@[20; 21)
+                NAME_REF@[20; 21)
+                  IDENT@[20; 21) "m"
+          EXCL@[21; 22) "!"
+          TOKEN_TREE@[22; 25)
+            L_PAREN@[22; 23) "("
+            IDENT@[23; 24) "x"
+            R_PAREN@[24; 25) ")"
+        WHITESPACE@[25; 26) " "
+        EQ@[26; 27) "="
+        WHITESPACE@[27; 28) " "
+        LITERAL@[28; 29)
+          INT_NUMBER@[28; 29) "0"
+        SEMI@[29; 30) ";"
+      WHITESPACE@[30; 31) "\n"
+      R_CURLY@[31; 32) "}"
+  WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rs b/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rs
new file mode 100644 (file)
index 0000000..86803fe
--- /dev/null
@@ -0,0 +1,8 @@
+fn foo() {
+    let a;
+    let b: i32;
+    let c = 92;
+    let d: i32 = 92;
+    let e: !;
+    let _: ! = {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.txt b/crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.txt
new file mode 100644 (file)
index 0000000..82c1eb0
--- /dev/null
@@ -0,0 +1,101 @@
+SOURCE_FILE@[0; 110)
+  FN_DEF@[0; 109)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 109)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 21)
+        LET_KW@[15; 18) "let"
+        WHITESPACE@[18; 19) " "
+        BIND_PAT@[19; 20)
+          NAME@[19; 20)
+            IDENT@[19; 20) "a"
+        SEMI@[20; 21) ";"
+      WHITESPACE@[21; 26) "\n    "
+      LET_STMT@[26; 37)
+        LET_KW@[26; 29) "let"
+        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) "\n    "
+      LET_STMT@[42; 53)
+        LET_KW@[42; 45) "let"
+        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) "\n    "
+      LET_STMT@[58; 74)
+        LET_KW@[58; 61) "let"
+        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; 79) "\n    "
+      LET_STMT@[79; 88)
+        LET_KW@[79; 82) "let"
+        WHITESPACE@[82; 83) " "
+        BIND_PAT@[83; 84)
+          NAME@[83; 84)
+            IDENT@[83; 84) "e"
+        COLON@[84; 85) ":"
+        WHITESPACE@[85; 86) " "
+        NEVER_TYPE@[86; 87)
+          EXCL@[86; 87) "!"
+        SEMI@[87; 88) ";"
+      WHITESPACE@[88; 93) "\n    "
+      LET_STMT@[93; 107)
+        LET_KW@[93; 96) "let"
+        WHITESPACE@[96; 97) " "
+        PLACEHOLDER_PAT@[97; 98)
+          UNDERSCORE@[97; 98) "_"
+        COLON@[98; 99) ":"
+        WHITESPACE@[99; 100) " "
+        NEVER_TYPE@[100; 101)
+          EXCL@[100; 101) "!"
+        WHITESPACE@[101; 102) " "
+        EQ@[102; 103) "="
+        WHITESPACE@[103; 104) " "
+        BLOCK_EXPR@[104; 106)
+          BLOCK@[104; 106)
+            L_CURLY@[104; 105) "{"
+            R_CURLY@[105; 106) "}"
+        SEMI@[106; 107) ";"
+      WHITESPACE@[107; 108) "\n"
+      R_CURLY@[108; 109) "}"
+  WHITESPACE@[109; 110) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.rs
new file mode 100644 (file)
index 0000000..0f1b41e
--- /dev/null
@@ -0,0 +1,3 @@
+fn foo() {
+    let _ = try {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.txt
new file mode 100644 (file)
index 0000000..53f49b9
--- /dev/null
@@ -0,0 +1,31 @@
+SOURCE_FILE@[0; 33)
+  FN_DEF@[0; 32)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 32)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 30)
+        LET_KW@[15; 18) "let"
+        WHITESPACE@[18; 19) " "
+        PLACEHOLDER_PAT@[19; 20)
+          UNDERSCORE@[19; 20) "_"
+        WHITESPACE@[20; 21) " "
+        EQ@[21; 22) "="
+        WHITESPACE@[22; 23) " "
+        TRY_EXPR@[23; 29)
+          TRY_KW@[23; 26) "try"
+          WHITESPACE@[26; 27) " "
+          BLOCK@[27; 29)
+            L_CURLY@[27; 28) "{"
+            R_CURLY@[28; 29) "}"
+        SEMI@[29; 30) ";"
+      WHITESPACE@[30; 31) "\n"
+      R_CURLY@[31; 32) "}"
+  WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.rs
new file mode 100644 (file)
index 0000000..23baf71
--- /dev/null
@@ -0,0 +1 @@
+existential type Foo: Fn() -> usize;
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0131_existential_type.txt
new file mode 100644 (file)
index 0000000..6bfac98
--- /dev/null
@@ -0,0 +1,31 @@
+SOURCE_FILE@[0; 37)
+  TYPE_ALIAS_DEF@[0; 36)
+    EXISTENTIAL_KW@[0; 11) "existential"
+    WHITESPACE@[11; 12) " "
+    TYPE_KW@[12; 16) "type"
+    WHITESPACE@[16; 17) " "
+    NAME@[17; 20)
+      IDENT@[17; 20) "Foo"
+    COLON@[20; 21) ":"
+    WHITESPACE@[21; 22) " "
+    TYPE_BOUND_LIST@[22; 35)
+      TYPE_BOUND@[22; 35)
+        PATH_TYPE@[22; 35)
+          PATH@[22; 35)
+            PATH_SEGMENT@[22; 35)
+              NAME_REF@[22; 24)
+                IDENT@[22; 24) "Fn"
+              PARAM_LIST@[24; 26)
+                L_PAREN@[24; 25) "("
+                R_PAREN@[25; 26) ")"
+              WHITESPACE@[26; 27) " "
+              RET_TYPE@[27; 35)
+                THIN_ARROW@[27; 29) "->"
+                WHITESPACE@[29; 30) " "
+                PATH_TYPE@[30; 35)
+                  PATH@[30; 35)
+                    PATH_SEGMENT@[30; 35)
+                      NAME_REF@[30; 35)
+                        IDENT@[30; 35) "usize"
+    SEMI@[35; 36) ";"
+  WHITESPACE@[36; 37) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.rs
new file mode 100644 (file)
index 0000000..fc9923b
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    let x = box 1i32;
+    let y = (box 1i32, box 2i32);
+    let z = Foo(box 1i32, box 2i32);
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.txt
new file mode 100644 (file)
index 0000000..3d22002
--- /dev/null
@@ -0,0 +1,89 @@
+SOURCE_FILE@[0; 106)
+  FN_DEF@[0; 105)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 105)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      LET_STMT@[15; 32)
+        LET_KW@[15; 18) "let"
+        WHITESPACE@[18; 19) " "
+        BIND_PAT@[19; 20)
+          NAME@[19; 20)
+            IDENT@[19; 20) "x"
+        WHITESPACE@[20; 21) " "
+        EQ@[21; 22) "="
+        WHITESPACE@[22; 23) " "
+        BOX_EXPR@[23; 31)
+          BOX_KW@[23; 26) "box"
+          WHITESPACE@[26; 27) " "
+          LITERAL@[27; 31)
+            INT_NUMBER@[27; 31) "1i32"
+        SEMI@[31; 32) ";"
+      WHITESPACE@[32; 37) "\n    "
+      LET_STMT@[37; 66)
+        LET_KW@[37; 40) "let"
+        WHITESPACE@[40; 41) " "
+        BIND_PAT@[41; 42)
+          NAME@[41; 42)
+            IDENT@[41; 42) "y"
+        WHITESPACE@[42; 43) " "
+        EQ@[43; 44) "="
+        WHITESPACE@[44; 45) " "
+        TUPLE_EXPR@[45; 65)
+          L_PAREN@[45; 46) "("
+          BOX_EXPR@[46; 54)
+            BOX_KW@[46; 49) "box"
+            WHITESPACE@[49; 50) " "
+            LITERAL@[50; 54)
+              INT_NUMBER@[50; 54) "1i32"
+          COMMA@[54; 55) ","
+          WHITESPACE@[55; 56) " "
+          BOX_EXPR@[56; 64)
+            BOX_KW@[56; 59) "box"
+            WHITESPACE@[59; 60) " "
+            LITERAL@[60; 64)
+              INT_NUMBER@[60; 64) "2i32"
+          R_PAREN@[64; 65) ")"
+        SEMI@[65; 66) ";"
+      WHITESPACE@[66; 71) "\n    "
+      LET_STMT@[71; 103)
+        LET_KW@[71; 74) "let"
+        WHITESPACE@[74; 75) " "
+        BIND_PAT@[75; 76)
+          NAME@[75; 76)
+            IDENT@[75; 76) "z"
+        WHITESPACE@[76; 77) " "
+        EQ@[77; 78) "="
+        WHITESPACE@[78; 79) " "
+        CALL_EXPR@[79; 102)
+          PATH_EXPR@[79; 82)
+            PATH@[79; 82)
+              PATH_SEGMENT@[79; 82)
+                NAME_REF@[79; 82)
+                  IDENT@[79; 82) "Foo"
+          ARG_LIST@[82; 102)
+            L_PAREN@[82; 83) "("
+            BOX_EXPR@[83; 91)
+              BOX_KW@[83; 86) "box"
+              WHITESPACE@[86; 87) " "
+              LITERAL@[87; 91)
+                INT_NUMBER@[87; 91) "1i32"
+            COMMA@[91; 92) ","
+            WHITESPACE@[92; 93) " "
+            BOX_EXPR@[93; 101)
+              BOX_KW@[93; 96) "box"
+              WHITESPACE@[96; 97) " "
+              LITERAL@[97; 101)
+                INT_NUMBER@[97; 101) "2i32"
+            R_PAREN@[101; 102) ")"
+        SEMI@[102; 103) ";"
+      WHITESPACE@[103; 104) "\n"
+      R_CURLY@[104; 105) "}"
+  WHITESPACE@[105; 106) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rs b/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.rs
new file mode 100644 (file)
index 0000000..8f5d611
--- /dev/null
@@ -0,0 +1,4 @@
+impl T for Foo {
+    default type T = Bar;
+    default fn foo() {}
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.txt b/crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.txt
new file mode 100644 (file)
index 0000000..384b203
--- /dev/null
@@ -0,0 +1,55 @@
+SOURCE_FILE@[0; 69)
+  IMPL_BLOCK@[0; 68)
+    IMPL_KW@[0; 4) "impl"
+    WHITESPACE@[4; 5) " "
+    PATH_TYPE@[5; 6)
+      PATH@[5; 6)
+        PATH_SEGMENT@[5; 6)
+          NAME_REF@[5; 6)
+            IDENT@[5; 6) "T"
+    WHITESPACE@[6; 7) " "
+    FOR_KW@[7; 10) "for"
+    WHITESPACE@[10; 11) " "
+    PATH_TYPE@[11; 14)
+      PATH@[11; 14)
+        PATH_SEGMENT@[11; 14)
+          NAME_REF@[11; 14)
+            IDENT@[11; 14) "Foo"
+    WHITESPACE@[14; 15) " "
+    ITEM_LIST@[15; 68)
+      L_CURLY@[15; 16) "{"
+      WHITESPACE@[16; 21) "\n    "
+      TYPE_ALIAS_DEF@[21; 42)
+        DEFAULT_KW@[21; 28) "default"
+        WHITESPACE@[28; 29) " "
+        TYPE_KW@[29; 33) "type"
+        WHITESPACE@[33; 34) " "
+        NAME@[34; 35)
+          IDENT@[34; 35) "T"
+        WHITESPACE@[35; 36) " "
+        EQ@[36; 37) "="
+        WHITESPACE@[37; 38) " "
+        PATH_TYPE@[38; 41)
+          PATH@[38; 41)
+            PATH_SEGMENT@[38; 41)
+              NAME_REF@[38; 41)
+                IDENT@[38; 41) "Bar"
+        SEMI@[41; 42) ";"
+      WHITESPACE@[42; 47) "\n    "
+      FN_DEF@[47; 66)
+        DEFAULT_KW@[47; 54) "default"
+        WHITESPACE@[54; 55) " "
+        FN_KW@[55; 57) "fn"
+        WHITESPACE@[57; 58) " "
+        NAME@[58; 61)
+          IDENT@[58; 61) "foo"
+        PARAM_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) "}"
+      WHITESPACE@[66; 67) "\n"
+      R_CURLY@[67; 68) "}"
+  WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rs b/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.rs
new file mode 100644 (file)
index 0000000..eadc7ff
--- /dev/null
@@ -0,0 +1,8 @@
+fn simple_function() {
+    enum LocalEnum {
+        One,
+        Two,
+    };
+    fn f() {};
+    struct S {};
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt b/crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt
new file mode 100644 (file)
index 0000000..50d3b5d
--- /dev/null
@@ -0,0 +1,62 @@
+SOURCE_FILE@[0; 111)
+  FN_DEF@[0; 110)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 18)
+      IDENT@[3; 18) "simple_function"
+    PARAM_LIST@[18; 20)
+      L_PAREN@[18; 19) "("
+      R_PAREN@[19; 20) ")"
+    WHITESPACE@[20; 21) " "
+    BLOCK@[21; 110)
+      L_CURLY@[21; 22) "{"
+      WHITESPACE@[22; 27) "\n    "
+      ENUM_DEF@[27; 75)
+        ENUM_KW@[27; 31) "enum"
+        WHITESPACE@[31; 32) " "
+        NAME@[32; 41)
+          IDENT@[32; 41) "LocalEnum"
+        WHITESPACE@[41; 42) " "
+        ENUM_VARIANT_LIST@[42; 75)
+          L_CURLY@[42; 43) "{"
+          WHITESPACE@[43; 52) "\n        "
+          ENUM_VARIANT@[52; 55)
+            NAME@[52; 55)
+              IDENT@[52; 55) "One"
+          COMMA@[55; 56) ","
+          WHITESPACE@[56; 65) "\n        "
+          ENUM_VARIANT@[65; 68)
+            NAME@[65; 68)
+              IDENT@[65; 68) "Two"
+          COMMA@[68; 69) ","
+          WHITESPACE@[69; 74) "\n    "
+          R_CURLY@[74; 75) "}"
+      SEMI@[75; 76) ";"
+      WHITESPACE@[76; 81) "\n    "
+      FN_DEF@[81; 90)
+        FN_KW@[81; 83) "fn"
+        WHITESPACE@[83; 84) " "
+        NAME@[84; 85)
+          IDENT@[84; 85) "f"
+        PARAM_LIST@[85; 87)
+          L_PAREN@[85; 86) "("
+          R_PAREN@[86; 87) ")"
+        WHITESPACE@[87; 88) " "
+        BLOCK@[88; 90)
+          L_CURLY@[88; 89) "{"
+          R_CURLY@[89; 90) "}"
+      SEMI@[90; 91) ";"
+      WHITESPACE@[91; 96) "\n    "
+      STRUCT_DEF@[96; 107)
+        STRUCT_KW@[96; 102) "struct"
+        WHITESPACE@[102; 103) " "
+        NAME@[103; 104)
+          IDENT@[103; 104) "S"
+        WHITESPACE@[104; 105) " "
+        NAMED_FIELD_DEF_LIST@[105; 107)
+          L_CURLY@[105; 106) "{"
+          R_CURLY@[106; 107) "}"
+      SEMI@[107; 108) ";"
+      WHITESPACE@[108; 109) "\n"
+      R_CURLY@[109; 110) "}"
+  WHITESPACE@[110; 111) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.rs b/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.rs
new file mode 100644 (file)
index 0000000..f59e137
--- /dev/null
@@ -0,0 +1,5 @@
+pub const A: &[i64] = &[
+   #[cfg(test)]
+   1,
+   2,
+];
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt
new file mode 100644 (file)
index 0000000..eac4f6f
--- /dev/null
@@ -0,0 +1,51 @@
+SOURCE_FILE@[0; 56)
+  CONST_DEF@[0; 55)
+    VISIBILITY@[0; 3)
+      PUB_KW@[0; 3) "pub"
+    WHITESPACE@[3; 4) " "
+    CONST_KW@[4; 9) "const"
+    WHITESPACE@[9; 10) " "
+    NAME@[10; 11)
+      IDENT@[10; 11) "A"
+    COLON@[11; 12) ":"
+    WHITESPACE@[12; 13) " "
+    REFERENCE_TYPE@[13; 19)
+      AMP@[13; 14) "&"
+      SLICE_TYPE@[14; 19)
+        L_BRACK@[14; 15) "["
+        PATH_TYPE@[15; 18)
+          PATH@[15; 18)
+            PATH_SEGMENT@[15; 18)
+              NAME_REF@[15; 18)
+                IDENT@[15; 18) "i64"
+        R_BRACK@[18; 19) "]"
+    WHITESPACE@[19; 20) " "
+    EQ@[20; 21) "="
+    WHITESPACE@[21; 22) " "
+    REF_EXPR@[22; 54)
+      AMP@[22; 23) "&"
+      ARRAY_EXPR@[23; 54)
+        L_BRACK@[23; 24) "["
+        WHITESPACE@[24; 28) "\n   "
+        ATTR@[28; 40)
+          POUND@[28; 29) "#"
+          TOKEN_TREE@[29; 40)
+            L_BRACK@[29; 30) "["
+            IDENT@[30; 33) "cfg"
+            TOKEN_TREE@[33; 39)
+              L_PAREN@[33; 34) "("
+              IDENT@[34; 38) "test"
+              R_PAREN@[38; 39) ")"
+            R_BRACK@[39; 40) "]"
+        WHITESPACE@[40; 44) "\n   "
+        LITERAL@[44; 45)
+          INT_NUMBER@[44; 45) "1"
+        COMMA@[45; 46) ","
+        WHITESPACE@[46; 50) "\n   "
+        LITERAL@[50; 51)
+          INT_NUMBER@[50; 51) "2"
+        COMMA@[51; 52) ","
+        WHITESPACE@[52; 53) "\n"
+        R_BRACK@[53; 54) "]"
+    SEMI@[54; 55) ";"
+  WHITESPACE@[55; 56) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.rs b/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.rs
new file mode 100644 (file)
index 0000000..1324acb
--- /dev/null
@@ -0,0 +1,5 @@
+pub const A: &[i64] = &[
+   1,
+   #[cfg(test)]
+   2,
+];
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt
new file mode 100644 (file)
index 0000000..6fa1b42
--- /dev/null
@@ -0,0 +1,51 @@
+SOURCE_FILE@[0; 56)
+  CONST_DEF@[0; 55)
+    VISIBILITY@[0; 3)
+      PUB_KW@[0; 3) "pub"
+    WHITESPACE@[3; 4) " "
+    CONST_KW@[4; 9) "const"
+    WHITESPACE@[9; 10) " "
+    NAME@[10; 11)
+      IDENT@[10; 11) "A"
+    COLON@[11; 12) ":"
+    WHITESPACE@[12; 13) " "
+    REFERENCE_TYPE@[13; 19)
+      AMP@[13; 14) "&"
+      SLICE_TYPE@[14; 19)
+        L_BRACK@[14; 15) "["
+        PATH_TYPE@[15; 18)
+          PATH@[15; 18)
+            PATH_SEGMENT@[15; 18)
+              NAME_REF@[15; 18)
+                IDENT@[15; 18) "i64"
+        R_BRACK@[18; 19) "]"
+    WHITESPACE@[19; 20) " "
+    EQ@[20; 21) "="
+    WHITESPACE@[21; 22) " "
+    REF_EXPR@[22; 54)
+      AMP@[22; 23) "&"
+      ARRAY_EXPR@[23; 54)
+        L_BRACK@[23; 24) "["
+        WHITESPACE@[24; 28) "\n   "
+        LITERAL@[28; 29)
+          INT_NUMBER@[28; 29) "1"
+        COMMA@[29; 30) ","
+        WHITESPACE@[30; 34) "\n   "
+        ATTR@[34; 46)
+          POUND@[34; 35) "#"
+          TOKEN_TREE@[35; 46)
+            L_BRACK@[35; 36) "["
+            IDENT@[36; 39) "cfg"
+            TOKEN_TREE@[39; 45)
+              L_PAREN@[39; 40) "("
+              IDENT@[40; 44) "test"
+              R_PAREN@[44; 45) ")"
+            R_BRACK@[45; 46) "]"
+        WHITESPACE@[46; 50) "\n   "
+        LITERAL@[50; 51)
+          INT_NUMBER@[50; 51) "2"
+        COMMA@[51; 52) ","
+        WHITESPACE@[52; 53) "\n"
+        R_BRACK@[53; 54) "]"
+    SEMI@[54; 55) ";"
+  WHITESPACE@[55; 56) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.rs
new file mode 100644 (file)
index 0000000..d2ba89c
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    x.await;
+    x.0.await;
+    x.0().await?.hello();
+}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.txt
new file mode 100644 (file)
index 0000000..99bd76a
--- /dev/null
@@ -0,0 +1,67 @@
+SOURCE_FILE@[0; 67)
+  FN_DEF@[0; 66)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 66)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 23)
+        AWAIT_EXPR@[15; 22)
+          PATH_EXPR@[15; 16)
+            PATH@[15; 16)
+              PATH_SEGMENT@[15; 16)
+                NAME_REF@[15; 16)
+                  IDENT@[15; 16) "x"
+          DOT@[16; 17) "."
+          AWAIT_KW@[17; 22) "await"
+        SEMI@[22; 23) ";"
+      WHITESPACE@[23; 28) "\n    "
+      EXPR_STMT@[28; 38)
+        AWAIT_EXPR@[28; 37)
+          FIELD_EXPR@[28; 31)
+            PATH_EXPR@[28; 29)
+              PATH@[28; 29)
+                PATH_SEGMENT@[28; 29)
+                  NAME_REF@[28; 29)
+                    IDENT@[28; 29) "x"
+            DOT@[29; 30) "."
+            INT_NUMBER@[30; 31) "0"
+          DOT@[31; 32) "."
+          AWAIT_KW@[32; 37) "await"
+        SEMI@[37; 38) ";"
+      WHITESPACE@[38; 43) "\n    "
+      EXPR_STMT@[43; 64)
+        METHOD_CALL_EXPR@[43; 63)
+          TRY_EXPR@[43; 55)
+            AWAIT_EXPR@[43; 54)
+              CALL_EXPR@[43; 48)
+                FIELD_EXPR@[43; 46)
+                  PATH_EXPR@[43; 44)
+                    PATH@[43; 44)
+                      PATH_SEGMENT@[43; 44)
+                        NAME_REF@[43; 44)
+                          IDENT@[43; 44) "x"
+                  DOT@[44; 45) "."
+                  INT_NUMBER@[45; 46) "0"
+                ARG_LIST@[46; 48)
+                  L_PAREN@[46; 47) "("
+                  R_PAREN@[47; 48) ")"
+              DOT@[48; 49) "."
+              AWAIT_KW@[49; 54) "await"
+            QUESTION@[54; 55) "?"
+          DOT@[55; 56) "."
+          NAME_REF@[56; 61)
+            IDENT@[56; 61) "hello"
+          ARG_LIST@[61; 63)
+            L_PAREN@[61; 62) "("
+            R_PAREN@[62; 63) ")"
+        SEMI@[63; 64) ";"
+      WHITESPACE@[64; 65) "\n"
+      R_CURLY@[65; 66) "}"
+  WHITESPACE@[66; 67) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0000_empty.rs b/crates/ra_syntax/test_data/parser/ok/0000_empty.rs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/crates/ra_syntax/test_data/parser/ok/0000_empty.txt b/crates/ra_syntax/test_data/parser/ok/0000_empty.txt
new file mode 100644 (file)
index 0000000..08f5a94
--- /dev/null
@@ -0,0 +1 @@
+SOURCE_FILE@[0; 0)
diff --git a/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rs b/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rs
new file mode 100644 (file)
index 0000000..512aeb3
--- /dev/null
@@ -0,0 +1,3 @@
+struct S<T: Copy> {
+    f: T,
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0001_struct_item.txt b/crates/ra_syntax/test_data/parser/ok/0001_struct_item.txt
new file mode 100644 (file)
index 0000000..c6653cf
--- /dev/null
@@ -0,0 +1,39 @@
+SOURCE_FILE@[0; 32)
+  STRUCT_DEF@[0; 31)
+    STRUCT_KW@[0; 6) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[12; 16)
+          TYPE_BOUND@[12; 16)
+            PATH_TYPE@[12; 16)
+              PATH@[12; 16)
+                PATH_SEGMENT@[12; 16)
+                  NAME_REF@[12; 16)
+                    IDENT@[12; 16) "Copy"
+      R_ANGLE@[16; 17) ">"
+    WHITESPACE@[17; 18) " "
+    NAMED_FIELD_DEF_LIST@[18; 31)
+      L_CURLY@[18; 19) "{"
+      WHITESPACE@[19; 24) "\n    "
+      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) "\n"
+      R_CURLY@[30; 31) "}"
+  WHITESPACE@[31; 32) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rs b/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rs
new file mode 100644 (file)
index 0000000..cc3866d
--- /dev/null
@@ -0,0 +1,3 @@
+struct S {
+    foo: u32
+}
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.txt b/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.txt
new file mode 100644 (file)
index 0000000..d0565ea
--- /dev/null
@@ -0,0 +1,22 @@
+SOURCE_FILE@[0; 25)
+  STRUCT_DEF@[0; 25)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n    "
+      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) "\n"
+      R_CURLY@[24; 25) "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rs b/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rs
new file mode 100644 (file)
index 0000000..53dc9e6
--- /dev/null
@@ -0,0 +1 @@
+#!/use/bin/env rusti
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.txt b/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.txt
new file mode 100644 (file)
index 0000000..e3915c2
--- /dev/null
@@ -0,0 +1,2 @@
+SOURCE_FILE@[0; 20)
+  SHEBANG@[0; 20) "#!/use/bin/env rusti"
diff --git a/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rs b/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rs
new file mode 100644 (file)
index 0000000..0321055
--- /dev/null
@@ -0,0 +1,2 @@
+fn foo() {
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0005_fn_item.txt b/crates/ra_syntax/test_data/parser/ok/0005_fn_item.txt
new file mode 100644 (file)
index 0000000..9b63a24
--- /dev/null
@@ -0,0 +1,15 @@
+SOURCE_FILE@[0; 13)
+  FN_DEF@[0; 12)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 12)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) "\n"
+      R_CURLY@[11; 12) "}"
+  WHITESPACE@[12; 13) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rs b/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rs
new file mode 100644 (file)
index 0000000..e81f8b1
--- /dev/null
@@ -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/test_data/parser/ok/0006_inner_attributes.txt b/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.txt
new file mode 100644 (file)
index 0000000..d8cabc9
--- /dev/null
@@ -0,0 +1,164 @@
+SOURCE_FILE@[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) "\n"
+  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) "true"
+        R_PAREN@[21; 22) ")"
+      R_BRACK@[22; 23) "]"
+  WHITESPACE@[23; 24) "\n"
+  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) "\n"
+  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) "true"
+        COMMA@[64; 65) ","
+        WHITESPACE@[65; 66) " "
+        STRING@[66; 72) "\"true\""
+        COMMA@[72; 73) ","
+        WHITESPACE@[73; 74) " "
+        IDENT@[74; 79) "ident"
+        WHITESPACE@[79; 80) " "
+        EQ@[80; 81) "="
+        WHITESPACE@[81; 82) " "
+        INT_NUMBER@[82; 85) "100"
+        COMMA@[85; 86) ","
+        WHITESPACE@[86; 87) " "
+        IDENT@[87; 92) "ident"
+        WHITESPACE@[92; 93) " "
+        EQ@[93; 94) "="
+        WHITESPACE@[94; 95) " "
+        STRING@[95; 102) "\"hello\""
+        COMMA@[102; 103) ","
+        WHITESPACE@[103; 104) " "
+        IDENT@[104; 109) "ident"
+        TOKEN_TREE@[109; 114)
+          L_PAREN@[109; 110) "("
+          INT_NUMBER@[110; 113) "100"
+          R_PAREN@[113; 114) ")"
+        R_PAREN@[114; 115) ")"
+      R_BRACK@[115; 116) "]"
+  WHITESPACE@[116; 117) "\n"
+  ATTR@[117; 130)
+    POUND@[117; 118) "#"
+    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) "\n"
+  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) "true"
+        R_PAREN@[153; 154) ")"
+      R_BRACK@[154; 155) "]"
+  WHITESPACE@[155; 156) "\n"
+  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) "true"
+        R_PAREN@[171; 172) ")"
+      R_BRACK@[172; 173) "]"
+  WHITESPACE@[173; 174) "\n"
+  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) "\"hello\""
+        R_PAREN@[189; 190) ")"
+      R_BRACK@[190; 191) "]"
+  WHITESPACE@[191; 192) "\n"
+  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) "\n"
+  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/test_data/parser/ok/0007_extern_crate.rs b/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rs
new file mode 100644 (file)
index 0000000..ab81a60
--- /dev/null
@@ -0,0 +1,3 @@
+extern crate foo;
+extern crate foo as bar;
+extern crate self as baz;
diff --git a/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.txt b/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.txt
new file mode 100644 (file)
index 0000000..1ffa36c
--- /dev/null
@@ -0,0 +1,40 @@
+SOURCE_FILE@[0; 69)
+  EXTERN_CRATE_ITEM@[0; 17)
+    EXTERN_KW@[0; 6) "extern"
+    WHITESPACE@[6; 7) " "
+    CRATE_KW@[7; 12) "crate"
+    WHITESPACE@[12; 13) " "
+    NAME_REF@[13; 16)
+      IDENT@[13; 16) "foo"
+    SEMI@[16; 17) ";"
+  WHITESPACE@[17; 18) "\n"
+  EXTERN_CRATE_ITEM@[18; 42)
+    EXTERN_KW@[18; 24) "extern"
+    WHITESPACE@[24; 25) " "
+    CRATE_KW@[25; 30) "crate"
+    WHITESPACE@[30; 31) " "
+    NAME_REF@[31; 34)
+      IDENT@[31; 34) "foo"
+    WHITESPACE@[34; 35) " "
+    ALIAS@[35; 41)
+      AS_KW@[35; 37) "as"
+      WHITESPACE@[37; 38) " "
+      NAME@[38; 41)
+        IDENT@[38; 41) "bar"
+    SEMI@[41; 42) ";"
+  WHITESPACE@[42; 43) "\n"
+  EXTERN_CRATE_ITEM@[43; 68)
+    EXTERN_KW@[43; 49) "extern"
+    WHITESPACE@[49; 50) " "
+    CRATE_KW@[50; 55) "crate"
+    WHITESPACE@[55; 56) " "
+    SELF_KW@[56; 60)
+      SELF_KW@[56; 60) "self"
+    WHITESPACE@[60; 61) " "
+    ALIAS@[61; 67)
+      AS_KW@[61; 63) "as"
+      WHITESPACE@[63; 64) " "
+      NAME@[64; 67)
+        IDENT@[64; 67) "baz"
+    SEMI@[67; 68) ";"
+  WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rs b/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rs
new file mode 100644 (file)
index 0000000..d22993b
--- /dev/null
@@ -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/test_data/parser/ok/0008_mod_item.txt b/crates/ra_syntax/test_data/parser/ok/0008_mod_item.txt
new file mode 100644 (file)
index 0000000..9152d6e
--- /dev/null
@@ -0,0 +1,90 @@
+SOURCE_FILE@[0; 118)
+  MODULE@[0; 6)
+    MOD_KW@[0; 3) "mod"
+    WHITESPACE@[3; 4) " "
+    NAME@[4; 5)
+      IDENT@[4; 5) "a"
+    SEMI@[5; 6) ";"
+  WHITESPACE@[6; 8) "\n\n"
+  MODULE@[8; 17)
+    MOD_KW@[8; 11) "mod"
+    WHITESPACE@[11; 12) " "
+    NAME@[12; 13)
+      IDENT@[12; 13) "b"
+    WHITESPACE@[13; 14) " "
+    ITEM_LIST@[14; 17)
+      L_CURLY@[14; 15) "{"
+      WHITESPACE@[15; 16) "\n"
+      R_CURLY@[16; 17) "}"
+  WHITESPACE@[17; 19) "\n\n"
+  MODULE@[19; 65)
+    MOD_KW@[19; 22) "mod"
+    WHITESPACE@[22; 23) " "
+    NAME@[23; 24)
+      IDENT@[23; 24) "c"
+    WHITESPACE@[24; 25) " "
+    ITEM_LIST@[25; 65)
+      L_CURLY@[25; 26) "{"
+      WHITESPACE@[26; 31) "\n    "
+      FN_DEF@[31; 47)
+        FN_KW@[31; 33) "fn"
+        WHITESPACE@[33; 34) " "
+        NAME@[34; 37)
+          IDENT@[34; 37) "foo"
+        PARAM_LIST@[37; 39)
+          L_PAREN@[37; 38) "("
+          R_PAREN@[38; 39) ")"
+        WHITESPACE@[39; 40) " "
+        BLOCK@[40; 47)
+          L_CURLY@[40; 41) "{"
+          WHITESPACE@[41; 46) "\n    "
+          R_CURLY@[46; 47) "}"
+      WHITESPACE@[47; 52) "\n    "
+      STRUCT_DEF@[52; 63)
+        STRUCT_KW@[52; 58) "struct"
+        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) "\n"
+      R_CURLY@[64; 65) "}"
+  WHITESPACE@[65; 67) "\n\n"
+  MODULE@[67; 118)
+    MOD_KW@[67; 70) "mod"
+    WHITESPACE@[70; 71) " "
+    NAME@[71; 72)
+      IDENT@[71; 72) "d"
+    WHITESPACE@[72; 73) " "
+    ITEM_LIST@[73; 118)
+      L_CURLY@[73; 74) "{"
+      WHITESPACE@[74; 79) "\n    "
+      ATTR@[79; 87)
+        POUND@[79; 80) "#"
+        EXCL@[80; 81) "!"
+        TOKEN_TREE@[81; 87)
+          L_BRACK@[81; 82) "["
+          IDENT@[82; 86) "attr"
+          R_BRACK@[86; 87) "]"
+      WHITESPACE@[87; 92) "\n    "
+      MODULE@[92; 98)
+        MOD_KW@[92; 95) "mod"
+        WHITESPACE@[95; 96) " "
+        NAME@[96; 97)
+          IDENT@[96; 97) "e"
+        SEMI@[97; 98) ";"
+      WHITESPACE@[98; 103) "\n    "
+      MODULE@[103; 116)
+        MOD_KW@[103; 106) "mod"
+        WHITESPACE@[106; 107) " "
+        NAME@[107; 108)
+          IDENT@[107; 108) "f"
+        WHITESPACE@[108; 109) " "
+        ITEM_LIST@[109; 116)
+          L_CURLY@[109; 110) "{"
+          WHITESPACE@[110; 115) "\n    "
+          R_CURLY@[115; 116) "}"
+      WHITESPACE@[116; 117) "\n"
+      R_CURLY@[117; 118) "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0009_use_item.rs b/crates/ra_syntax/test_data/parser/ok/0009_use_item.rs
new file mode 100644 (file)
index 0000000..05a6aff
--- /dev/null
@@ -0,0 +1,2 @@
+use foo;
+use ::bar;
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0009_use_item.txt b/crates/ra_syntax/test_data/parser/ok/0009_use_item.txt
new file mode 100644 (file)
index 0000000..41db9db
--- /dev/null
@@ -0,0 +1,21 @@
+SOURCE_FILE@[0; 19)
+  USE_ITEM@[0; 8)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 7)
+      PATH@[4; 7)
+        PATH_SEGMENT@[4; 7)
+          NAME_REF@[4; 7)
+            IDENT@[4; 7) "foo"
+    SEMI@[7; 8) ";"
+  WHITESPACE@[8; 9) "\n"
+  USE_ITEM@[9; 19)
+    USE_KW@[9; 12) "use"
+    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/test_data/parser/ok/0010_use_path_segments.rs b/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rs
new file mode 100644 (file)
index 0000000..1e71b7a
--- /dev/null
@@ -0,0 +1,2 @@
+use ::foo::bar::baz;
+use foo::bar::baz;
diff --git a/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.txt b/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.txt
new file mode 100644 (file)
index 0000000..09871b8
--- /dev/null
@@ -0,0 +1,42 @@
+SOURCE_FILE@[0; 40)
+  USE_ITEM@[0; 20)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 19)
+      PATH@[4; 19)
+        PATH@[4; 14)
+          PATH@[4; 9)
+            PATH_SEGMENT@[4; 9)
+              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) "\n"
+  USE_ITEM@[21; 39)
+    USE_KW@[21; 24) "use"
+    WHITESPACE@[24; 25) " "
+    USE_TREE@[25; 38)
+      PATH@[25; 38)
+        PATH@[25; 33)
+          PATH@[25; 28)
+            PATH_SEGMENT@[25; 28)
+              NAME_REF@[25; 28)
+                IDENT@[25; 28) "foo"
+          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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rs b/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rs
new file mode 100644 (file)
index 0000000..8b80c0d
--- /dev/null
@@ -0,0 +1,3 @@
+#[cfg(test)]
+#[ignore]
+fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.txt b/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.txt
new file mode 100644 (file)
index 0000000..2a0dc7b
--- /dev/null
@@ -0,0 +1,32 @@
+SOURCE_FILE@[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) "\n"
+    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) "\n"
+    FN_KW@[23; 25) "fn"
+    WHITESPACE@[25; 26) " "
+    NAME@[26; 29)
+      IDENT@[26; 29) "foo"
+    PARAM_LIST@[29; 31)
+      L_PAREN@[29; 30) "("
+      R_PAREN@[30; 31) ")"
+    WHITESPACE@[31; 32) " "
+    BLOCK@[32; 34)
+      L_CURLY@[32; 33) "{"
+      R_CURLY@[33; 34) "}"
+  WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0012_visibility.rs b/crates/ra_syntax/test_data/parser/ok/0012_visibility.rs
new file mode 100644 (file)
index 0000000..75b1db1
--- /dev/null
@@ -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/test_data/parser/ok/0012_visibility.txt b/crates/ra_syntax/test_data/parser/ok/0012_visibility.txt
new file mode 100644 (file)
index 0000000..c9d038c
--- /dev/null
@@ -0,0 +1,102 @@
+SOURCE_FILE@[0; 98)
+  FN_DEF@[0; 9)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 4)
+      IDENT@[3; 4) "a"
+    PARAM_LIST@[4; 6)
+      L_PAREN@[4; 5) "("
+      R_PAREN@[5; 6) ")"
+    WHITESPACE@[6; 7) " "
+    BLOCK@[7; 9)
+      L_CURLY@[7; 8) "{"
+      R_CURLY@[8; 9) "}"
+  WHITESPACE@[9; 10) "\n"
+  FN_DEF@[10; 23)
+    VISIBILITY@[10; 13)
+      PUB_KW@[10; 13) "pub"
+    WHITESPACE@[13; 14) " "
+    FN_KW@[14; 16) "fn"
+    WHITESPACE@[16; 17) " "
+    NAME@[17; 18)
+      IDENT@[17; 18) "b"
+    PARAM_LIST@[18; 20)
+      L_PAREN@[18; 19) "("
+      R_PAREN@[19; 20) ")"
+    WHITESPACE@[20; 21) " "
+    BLOCK@[21; 23)
+      L_CURLY@[21; 22) "{"
+      R_CURLY@[22; 23) "}"
+  WHITESPACE@[23; 24) "\n"
+  FN_DEF@[24; 44)
+    VISIBILITY@[24; 34)
+      PUB_KW@[24; 27) "pub"
+      L_PAREN@[27; 28) "("
+      CRATE_KW@[28; 33) "crate"
+      R_PAREN@[33; 34) ")"
+    WHITESPACE@[34; 35) " "
+    FN_KW@[35; 37) "fn"
+    WHITESPACE@[37; 38) " "
+    NAME@[38; 39)
+      IDENT@[38; 39) "c"
+    PARAM_LIST@[39; 41)
+      L_PAREN@[39; 40) "("
+      R_PAREN@[40; 41) ")"
+    WHITESPACE@[41; 42) " "
+    BLOCK@[42; 44)
+      L_CURLY@[42; 43) "{"
+      R_CURLY@[43; 44) "}"
+  WHITESPACE@[44; 45) "\n"
+  FN_DEF@[45; 65)
+    VISIBILITY@[45; 55)
+      PUB_KW@[45; 48) "pub"
+      L_PAREN@[48; 49) "("
+      SUPER_KW@[49; 54) "super"
+      R_PAREN@[54; 55) ")"
+    WHITESPACE@[55; 56) " "
+    FN_KW@[56; 58) "fn"
+    WHITESPACE@[58; 59) " "
+    NAME@[59; 60)
+      IDENT@[59; 60) "d"
+    PARAM_LIST@[60; 62)
+      L_PAREN@[60; 61) "("
+      R_PAREN@[61; 62) ")"
+    WHITESPACE@[62; 63) " "
+    BLOCK@[63; 65)
+      L_CURLY@[63; 64) "{"
+      R_CURLY@[64; 65) "}"
+  WHITESPACE@[65; 66) "\n"
+  FN_DEF@[66; 97)
+    VISIBILITY@[66; 87)
+      PUB_KW@[66; 69) "pub"
+      L_PAREN@[69; 70) "("
+      IN_KW@[70; 72) "in"
+      WHITESPACE@[72; 73) " "
+      PATH@[73; 86)
+        PATH@[73; 81)
+          PATH@[73; 76)
+            PATH_SEGMENT@[73; 76)
+              NAME_REF@[73; 76)
+                IDENT@[73; 76) "foo"
+          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) "fn"
+    WHITESPACE@[90; 91) " "
+    NAME@[91; 92)
+      IDENT@[91; 92) "e"
+    PARAM_LIST@[92; 94)
+      L_PAREN@[92; 93) "("
+      R_PAREN@[93; 94) ")"
+    WHITESPACE@[94; 95) " "
+    BLOCK@[95; 97)
+      L_CURLY@[95; 96) "{"
+      R_CURLY@[96; 97) "}"
+  WHITESPACE@[97; 98) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rs b/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rs
new file mode 100644 (file)
index 0000000..faf6a42
--- /dev/null
@@ -0,0 +1,3 @@
+use self::foo;
+use super::super::bar;
+use ::self::a::super::bar;
diff --git a/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.txt b/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.txt
new file mode 100644 (file)
index 0000000..50730e9
--- /dev/null
@@ -0,0 +1,57 @@
+SOURCE_FILE@[0; 65)
+  USE_ITEM@[0; 14)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 13)
+      PATH@[4; 13)
+        PATH@[4; 8)
+          PATH_SEGMENT@[4; 8)
+            SELF_KW@[4; 8) "self"
+        COLONCOLON@[8; 10) "::"
+        PATH_SEGMENT@[10; 13)
+          NAME_REF@[10; 13)
+            IDENT@[10; 13) "foo"
+    SEMI@[13; 14) ";"
+  WHITESPACE@[14; 15) "\n"
+  USE_ITEM@[15; 37)
+    USE_KW@[15; 18) "use"
+    WHITESPACE@[18; 19) " "
+    USE_TREE@[19; 36)
+      PATH@[19; 36)
+        PATH@[19; 31)
+          PATH@[19; 24)
+            PATH_SEGMENT@[19; 24)
+              SUPER_KW@[19; 24) "super"
+          COLONCOLON@[24; 26) "::"
+          PATH_SEGMENT@[26; 31)
+            SUPER_KW@[26; 31) "super"
+        COLONCOLON@[31; 33) "::"
+        PATH_SEGMENT@[33; 36)
+          NAME_REF@[33; 36)
+            IDENT@[33; 36) "bar"
+    SEMI@[36; 37) ";"
+  WHITESPACE@[37; 38) "\n"
+  USE_ITEM@[38; 64)
+    USE_KW@[38; 41) "use"
+    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) "self"
+            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) "super"
+        COLONCOLON@[58; 60) "::"
+        PATH_SEGMENT@[60; 63)
+          NAME_REF@[60; 63)
+            IDENT@[60; 63) "bar"
+    SEMI@[63; 64) ";"
+  WHITESPACE@[64; 65) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rs b/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rs
new file mode 100644 (file)
index 0000000..5e4aa3a
--- /dev/null
@@ -0,0 +1,7 @@
+use *;
+use ::*;
+use ::{};
+use {};
+use foo::*;
+use foo::{};
+use ::foo::{a, b, c};
diff --git a/crates/ra_syntax/test_data/parser/ok/0014_use_tree.txt b/crates/ra_syntax/test_data/parser/ok/0014_use_tree.txt
new file mode 100644 (file)
index 0000000..3fe34d0
--- /dev/null
@@ -0,0 +1,95 @@
+SOURCE_FILE@[0; 81)
+  USE_ITEM@[0; 6)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 5)
+      STAR@[4; 5) "*"
+    SEMI@[5; 6) ";"
+  WHITESPACE@[6; 7) "\n"
+  USE_ITEM@[7; 15)
+    USE_KW@[7; 10) "use"
+    WHITESPACE@[10; 11) " "
+    USE_TREE@[11; 14)
+      COLONCOLON@[11; 13) "::"
+      STAR@[13; 14) "*"
+    SEMI@[14; 15) ";"
+  WHITESPACE@[15; 16) "\n"
+  USE_ITEM@[16; 25)
+    USE_KW@[16; 19) "use"
+    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) "\n"
+  USE_ITEM@[26; 33)
+    USE_KW@[26; 29) "use"
+    WHITESPACE@[29; 30) " "
+    USE_TREE@[30; 32)
+      USE_TREE_LIST@[30; 32)
+        L_CURLY@[30; 31) "{"
+        R_CURLY@[31; 32) "}"
+    SEMI@[32; 33) ";"
+  WHITESPACE@[33; 34) "\n"
+  USE_ITEM@[34; 45)
+    USE_KW@[34; 37) "use"
+    WHITESPACE@[37; 38) " "
+    USE_TREE@[38; 44)
+      PATH@[38; 41)
+        PATH_SEGMENT@[38; 41)
+          NAME_REF@[38; 41)
+            IDENT@[38; 41) "foo"
+      COLONCOLON@[41; 43) "::"
+      STAR@[43; 44) "*"
+    SEMI@[44; 45) ";"
+  WHITESPACE@[45; 46) "\n"
+  USE_ITEM@[46; 58)
+    USE_KW@[46; 49) "use"
+    WHITESPACE@[49; 50) " "
+    USE_TREE@[50; 57)
+      PATH@[50; 53)
+        PATH_SEGMENT@[50; 53)
+          NAME_REF@[50; 53)
+            IDENT@[50; 53) "foo"
+      COLONCOLON@[53; 55) "::"
+      USE_TREE_LIST@[55; 57)
+        L_CURLY@[55; 56) "{"
+        R_CURLY@[56; 57) "}"
+    SEMI@[57; 58) ";"
+  WHITESPACE@[58; 59) "\n"
+  USE_ITEM@[59; 80)
+    USE_KW@[59; 62) "use"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rs b/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rs
new file mode 100644 (file)
index 0000000..46a0783
--- /dev/null
@@ -0,0 +1,2 @@
+use foo as bar;
+use foo::{a as b, *, ::*, ::foo as x};
diff --git a/crates/ra_syntax/test_data/parser/ok/0015_use_tree.txt b/crates/ra_syntax/test_data/parser/ok/0015_use_tree.txt
new file mode 100644 (file)
index 0000000..e63f142
--- /dev/null
@@ -0,0 +1,65 @@
+SOURCE_FILE@[0; 55)
+  USE_ITEM@[0; 15)
+    USE_KW@[0; 3) "use"
+    WHITESPACE@[3; 4) " "
+    USE_TREE@[4; 14)
+      PATH@[4; 7)
+        PATH_SEGMENT@[4; 7)
+          NAME_REF@[4; 7)
+            IDENT@[4; 7) "foo"
+      WHITESPACE@[7; 8) " "
+      ALIAS@[8; 14)
+        AS_KW@[8; 10) "as"
+        WHITESPACE@[10; 11) " "
+        NAME@[11; 14)
+          IDENT@[11; 14) "bar"
+    SEMI@[14; 15) ";"
+  WHITESPACE@[15; 16) "\n"
+  USE_ITEM@[16; 54)
+    USE_KW@[16; 19) "use"
+    WHITESPACE@[19; 20) " "
+    USE_TREE@[20; 53)
+      PATH@[20; 23)
+        PATH_SEGMENT@[20; 23)
+          NAME_REF@[20; 23)
+            IDENT@[20; 23) "foo"
+      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) "as"
+            WHITESPACE@[30; 31) " "
+            NAME@[31; 32)
+              IDENT@[31; 32) "b"
+        COMMA@[32; 33) ","
+        WHITESPACE@[33; 34) " "
+        USE_TREE@[34; 35)
+          STAR@[34; 35) "*"
+        COMMA@[35; 36) ","
+        WHITESPACE@[36; 37) " "
+        USE_TREE@[37; 40)
+          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) "as"
+            WHITESPACE@[50; 51) " "
+            NAME@[51; 52)
+              IDENT@[51; 52) "x"
+        R_CURLY@[52; 53) "}"
+    SEMI@[53; 54) ";"
+  WHITESPACE@[54; 55) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rs b/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rs
new file mode 100644 (file)
index 0000000..6963835
--- /dev/null
@@ -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/test_data/parser/ok/0016_struct_flavors.txt b/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.txt
new file mode 100644 (file)
index 0000000..ac44093
--- /dev/null
@@ -0,0 +1,93 @@
+SOURCE_FILE@[0; 97)
+  STRUCT_DEF@[0; 9)
+    STRUCT_KW@[0; 6) "struct"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 8)
+      IDENT@[7; 8) "A"
+    SEMI@[8; 9) ";"
+  WHITESPACE@[9; 10) "\n"
+  STRUCT_DEF@[10; 21)
+    STRUCT_KW@[10; 16) "struct"
+    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) "\n"
+  STRUCT_DEF@[22; 33)
+    STRUCT_KW@[22; 28) "struct"
+    WHITESPACE@[28; 29) " "
+    NAME@[29; 30)
+      IDENT@[29; 30) "C"
+    POS_FIELD_DEF_LIST@[30; 32)
+      L_PAREN@[30; 31) "("
+      R_PAREN@[31; 32) ")"
+    SEMI@[32; 33) ";"
+  WHITESPACE@[33; 35) "\n\n"
+  STRUCT_DEF@[35; 74)
+    STRUCT_KW@[35; 41) "struct"
+    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) "\n    "
+      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) "\n    "
+      NAMED_FIELD_DEF@[62; 72)
+        VISIBILITY@[62; 65)
+          PUB_KW@[62; 65) "pub"
+        WHITESPACE@[65; 66) " "
+        NAME@[66; 67)
+          IDENT@[66; 67) "b"
+        COLON@[67; 68) ":"
+        WHITESPACE@[68; 69) " "
+        PATH_TYPE@[69; 72)
+          PATH@[69; 72)
+            PATH_SEGMENT@[69; 72)
+              NAME_REF@[69; 72)
+                IDENT@[69; 72) "u32"
+      WHITESPACE@[72; 73) "\n"
+      R_CURLY@[73; 74) "}"
+  WHITESPACE@[74; 76) "\n\n"
+  STRUCT_DEF@[76; 96)
+    STRUCT_KW@[76; 82) "struct"
+    WHITESPACE@[82; 83) " "
+    NAME@[83; 84)
+      IDENT@[83; 84) "E"
+    POS_FIELD_DEF_LIST@[84; 95)
+      L_PAREN@[84; 85) "("
+      POS_FIELD_DEF@[85; 90)
+        VISIBILITY@[85; 88)
+          PUB_KW@[85; 88) "pub"
+        WHITESPACE@[88; 89) " "
+        PATH_TYPE@[89; 90)
+          PATH@[89; 90)
+            PATH_SEGMENT@[89; 90)
+              NAME_REF@[89; 90)
+                IDENT@[89; 90) "x"
+      COMMA@[90; 91) ","
+      WHITESPACE@[91; 92) " "
+      POS_FIELD_DEF@[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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rs b/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rs
new file mode 100644 (file)
index 0000000..fe0a7bb
--- /dev/null
@@ -0,0 +1,2 @@
+#[foo(a,)]
+fn foo() {}
diff --git a/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.txt b/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.txt
new file mode 100644 (file)
index 0000000..cd8f038
--- /dev/null
@@ -0,0 +1,26 @@
+SOURCE_FILE@[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) "\n"
+    FN_KW@[11; 13) "fn"
+    WHITESPACE@[13; 14) " "
+    NAME@[14; 17)
+      IDENT@[14; 17) "foo"
+    PARAM_LIST@[17; 19)
+      L_PAREN@[17; 18) "("
+      R_PAREN@[18; 19) ")"
+    WHITESPACE@[19; 20) " "
+    BLOCK@[20; 22)
+      L_CURLY@[20; 21) "{"
+      R_CURLY@[21; 22) "}"
+  WHITESPACE@[22; 23) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rs b/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rs
new file mode 100644 (file)
index 0000000..88c5449
--- /dev/null
@@ -0,0 +1,17 @@
+struct S1<T>;
+struct S2<T>(u32);
+struct S3<T> { 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<T>;
+struct S14<T, U>;
+struct S15<'a, T, U>;
diff --git a/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.txt b/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.txt
new file mode 100644 (file)
index 0000000..3f06f20
--- /dev/null
@@ -0,0 +1,257 @@
+SOURCE_FILE@[0; 290)
+  STRUCT_DEF@[0; 13)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n"
+  STRUCT_DEF@[14; 32)
+    STRUCT_KW@[14; 20) "struct"
+    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_DEF_LIST@[26; 31)
+      L_PAREN@[26; 27) "("
+      POS_FIELD_DEF@[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) "\n"
+  STRUCT_DEF@[33; 56)
+    STRUCT_KW@[33; 39) "struct"
+    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) "\n\n"
+  STRUCT_DEF@[58; 70)
+    STRUCT_KW@[58; 64) "struct"
+    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) "\n"
+  STRUCT_DEF@[71; 85)
+    STRUCT_KW@[71; 77) "struct"
+    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) "\n"
+  STRUCT_DEF@[86; 101)
+    STRUCT_KW@[86; 92) "struct"
+    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) "\n"
+  STRUCT_DEF@[102; 120)
+    STRUCT_KW@[102; 108) "struct"
+    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) "\n"
+  STRUCT_DEF@[121; 142)
+    STRUCT_KW@[121; 127) "struct"
+    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) "\n"
+  STRUCT_DEF@[143; 166)
+    STRUCT_KW@[143; 149) "struct"
+    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) "\n"
+  STRUCT_DEF@[167; 183)
+    STRUCT_KW@[167; 173) "struct"
+    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) "\n"
+  STRUCT_DEF@[184; 203)
+    STRUCT_KW@[184; 190) "struct"
+    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) "\n"
+  STRUCT_DEF@[204; 233)
+    STRUCT_KW@[204; 210) "struct"
+    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) "\n\n"
+  STRUCT_DEF@[235; 249)
+    STRUCT_KW@[235; 241) "struct"
+    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) "\n"
+  STRUCT_DEF@[250; 267)
+    STRUCT_KW@[250; 256) "struct"
+    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) "\n"
+  STRUCT_DEF@[268; 289)
+    STRUCT_KW@[268; 274) "struct"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0019_enums.rs b/crates/ra_syntax/test_data/parser/ok/0019_enums.rs
new file mode 100644 (file)
index 0000000..7a1afa0
--- /dev/null
@@ -0,0 +1,25 @@
+enum E1 {
+}
+
+enum E2<T> {
+}
+
+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/test_data/parser/ok/0019_enums.txt b/crates/ra_syntax/test_data/parser/ok/0019_enums.txt
new file mode 100644 (file)
index 0000000..37753a7
--- /dev/null
@@ -0,0 +1,155 @@
+SOURCE_FILE@[0; 182)
+  ENUM_DEF@[0; 11)
+    ENUM_KW@[0; 4) "enum"
+    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) "\n"
+      R_CURLY@[10; 11) "}"
+  WHITESPACE@[11; 13) "\n\n"
+  ENUM_DEF@[13; 27)
+    ENUM_KW@[13; 17) "enum"
+    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) "\n"
+      R_CURLY@[26; 27) "}"
+  WHITESPACE@[27; 29) "\n\n"
+  ENUM_DEF@[29; 46)
+    ENUM_KW@[29; 33) "enum"
+    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) "\n    "
+      ENUM_VARIANT@[43; 44)
+        NAME@[43; 44)
+          IDENT@[43; 44) "X"
+      WHITESPACE@[44; 45) "\n"
+      R_CURLY@[45; 46) "}"
+  WHITESPACE@[46; 48) "\n\n"
+  ENUM_DEF@[48; 66)
+    ENUM_KW@[48; 52) "enum"
+    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) "\n    "
+      ENUM_VARIANT@[62; 63)
+        NAME@[62; 63)
+          IDENT@[62; 63) "X"
+      COMMA@[63; 64) ","
+      WHITESPACE@[64; 65) "\n"
+      R_CURLY@[65; 66) "}"
+  WHITESPACE@[66; 68) "\n\n"
+  ENUM_DEF@[68; 181)
+    ENUM_KW@[68; 72) "enum"
+    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) "\n    "
+      ENUM_VARIANT@[82; 83)
+        NAME@[82; 83)
+          IDENT@[82; 83) "A"
+      COMMA@[83; 84) ","
+      WHITESPACE@[84; 89) "\n    "
+      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) "\n    "
+      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) "\n        "
+          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) "\n        "
+          NAMED_FIELD_DEF@[129; 139)
+            VISIBILITY@[129; 132)
+              PUB_KW@[129; 132) "pub"
+            WHITESPACE@[132; 133) " "
+            NAME@[133; 134)
+              IDENT@[133; 134) "b"
+            COLON@[134; 135) ":"
+            WHITESPACE@[135; 136) " "
+            PATH_TYPE@[136; 139)
+              PATH@[136; 139)
+                PATH_SEGMENT@[136; 139)
+                  NAME_REF@[136; 139)
+                    IDENT@[136; 139) "f64"
+          COMMA@[139; 140) ","
+          WHITESPACE@[140; 145) "\n    "
+          R_CURLY@[145; 146) "}"
+      COMMA@[146; 147) ","
+      WHITESPACE@[147; 152) "\n    "
+      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) "\n    "
+      ENUM_VARIANT@[162; 169)
+        NAME@[162; 163)
+          IDENT@[162; 163) "D"
+        POS_FIELD_DEF_LIST@[163; 169)
+          L_PAREN@[163; 164) "("
+          POS_FIELD_DEF@[164; 167)
+            PATH_TYPE@[164; 167)
+              PATH@[164; 167)
+                PATH_SEGMENT@[164; 167)
+                  NAME_REF@[164; 167)
+                    IDENT@[164; 167) "u32"
+          COMMA@[167; 168) ","
+          R_PAREN@[168; 169) ")"
+      COMMA@[169; 170) ","
+      WHITESPACE@[170; 175) "\n    "
+      ENUM_VARIANT@[175; 178)
+        NAME@[175; 176)
+          IDENT@[175; 176) "E"
+        POS_FIELD_DEF_LIST@[176; 178)
+          L_PAREN@[176; 177) "("
+          R_PAREN@[177; 178) ")"
+      COMMA@[178; 179) ","
+      WHITESPACE@[179; 180) "\n"
+      R_CURLY@[180; 181) "}"
+  WHITESPACE@[181; 182) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rs b/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rs
new file mode 100644 (file)
index 0000000..7128989
--- /dev/null
@@ -0,0 +1,10 @@
+struct A<T>;
+struct B<T:>;
+struct C<T: 'a>;
+struct D<T: 'a + >;
+struct E<T: 'a + 'd >;
+struct F<T: 'a + 'd + Clone>;
+struct G<T: Clone + Copy>;
+struct H<T: ::Foo + self::Bar + 'a>;
+struct I<T:, U:,>;
+struct K<'a: 'd, 'd: 'a + 'b, T: 'a + 'd + Clone>;
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.txt b/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.txt
new file mode 100644 (file)
index 0000000..18a5fd7
--- /dev/null
@@ -0,0 +1,268 @@
+SOURCE_FILE@[0; 250)
+  STRUCT_DEF@[0; 12)
+    STRUCT_KW@[0; 6) "struct"
+    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) "\n"
+  STRUCT_DEF@[13; 26)
+    STRUCT_KW@[13; 19) "struct"
+    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) ":"
+        TYPE_BOUND_LIST@[24; 24)
+      R_ANGLE@[24; 25) ">"
+    SEMI@[25; 26) ";"
+  WHITESPACE@[26; 27) "\n"
+  STRUCT_DEF@[27; 43)
+    STRUCT_KW@[27; 33) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[39; 41)
+          TYPE_BOUND@[39; 41)
+            LIFETIME@[39; 41) "\'a"
+      R_ANGLE@[41; 42) ">"
+    SEMI@[42; 43) ";"
+  WHITESPACE@[43; 44) "\n"
+  STRUCT_DEF@[44; 63)
+    STRUCT_KW@[44; 50) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[56; 60)
+          TYPE_BOUND@[56; 58)
+            LIFETIME@[56; 58) "\'a"
+          WHITESPACE@[58; 59) " "
+          PLUS@[59; 60) "+"
+      WHITESPACE@[60; 61) " "
+      R_ANGLE@[61; 62) ">"
+    SEMI@[62; 63) ";"
+  WHITESPACE@[63; 64) "\n"
+  STRUCT_DEF@[64; 86)
+    STRUCT_KW@[64; 70) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[76; 83)
+          TYPE_BOUND@[76; 78)
+            LIFETIME@[76; 78) "\'a"
+          WHITESPACE@[78; 79) " "
+          PLUS@[79; 80) "+"
+          WHITESPACE@[80; 81) " "
+          TYPE_BOUND@[81; 83)
+            LIFETIME@[81; 83) "\'d"
+      WHITESPACE@[83; 84) " "
+      R_ANGLE@[84; 85) ">"
+    SEMI@[85; 86) ";"
+  WHITESPACE@[86; 87) "\n"
+  STRUCT_DEF@[87; 116)
+    STRUCT_KW@[87; 93) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[99; 114)
+          TYPE_BOUND@[99; 101)
+            LIFETIME@[99; 101) "\'a"
+          WHITESPACE@[101; 102) " "
+          PLUS@[102; 103) "+"
+          WHITESPACE@[103; 104) " "
+          TYPE_BOUND@[104; 106)
+            LIFETIME@[104; 106) "\'d"
+          WHITESPACE@[106; 107) " "
+          PLUS@[107; 108) "+"
+          WHITESPACE@[108; 109) " "
+          TYPE_BOUND@[109; 114)
+            PATH_TYPE@[109; 114)
+              PATH@[109; 114)
+                PATH_SEGMENT@[109; 114)
+                  NAME_REF@[109; 114)
+                    IDENT@[109; 114) "Clone"
+      R_ANGLE@[114; 115) ">"
+    SEMI@[115; 116) ";"
+  WHITESPACE@[116; 117) "\n"
+  STRUCT_DEF@[117; 143)
+    STRUCT_KW@[117; 123) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[129; 141)
+          TYPE_BOUND@[129; 134)
+            PATH_TYPE@[129; 134)
+              PATH@[129; 134)
+                PATH_SEGMENT@[129; 134)
+                  NAME_REF@[129; 134)
+                    IDENT@[129; 134) "Clone"
+          WHITESPACE@[134; 135) " "
+          PLUS@[135; 136) "+"
+          WHITESPACE@[136; 137) " "
+          TYPE_BOUND@[137; 141)
+            PATH_TYPE@[137; 141)
+              PATH@[137; 141)
+                PATH_SEGMENT@[137; 141)
+                  NAME_REF@[137; 141)
+                    IDENT@[137; 141) "Copy"
+      R_ANGLE@[141; 142) ">"
+    SEMI@[142; 143) ";"
+  WHITESPACE@[143; 144) "\n"
+  STRUCT_DEF@[144; 180)
+    STRUCT_KW@[144; 150) "struct"
+    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) " "
+        TYPE_BOUND_LIST@[156; 178)
+          TYPE_BOUND@[156; 161)
+            PATH_TYPE@[156; 161)
+              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) " "
+          TYPE_BOUND@[164; 173)
+            PATH_TYPE@[164; 173)
+              PATH@[164; 173)
+                PATH@[164; 168)
+                  PATH_SEGMENT@[164; 168)
+                    SELF_KW@[164; 168) "self"
+                COLONCOLON@[168; 170) "::"
+                PATH_SEGMENT@[170; 173)
+                  NAME_REF@[170; 173)
+                    IDENT@[170; 173) "Bar"
+          WHITESPACE@[173; 174) " "
+          PLUS@[174; 175) "+"
+          WHITESPACE@[175; 176) " "
+          TYPE_BOUND@[176; 178)
+            LIFETIME@[176; 178) "\'a"
+      R_ANGLE@[178; 179) ">"
+    SEMI@[179; 180) ";"
+  WHITESPACE@[180; 181) "\n"
+  STRUCT_DEF@[181; 199)
+    STRUCT_KW@[181; 187) "struct"
+    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) ":"
+        TYPE_BOUND_LIST@[192; 192)
+      COMMA@[192; 193) ","
+      WHITESPACE@[193; 194) " "
+      TYPE_PARAM@[194; 196)
+        NAME@[194; 195)
+          IDENT@[194; 195) "U"
+        COLON@[195; 196) ":"
+        TYPE_BOUND_LIST@[196; 196)
+      COMMA@[196; 197) ","
+      R_ANGLE@[197; 198) ">"
+    SEMI@[198; 199) ";"
+  WHITESPACE@[199; 200) "\n"
+  STRUCT_DEF@[200; 250)
+    STRUCT_KW@[200; 206) "struct"
+    WHITESPACE@[206; 207) " "
+    NAME@[207; 208)
+      IDENT@[207; 208) "K"
+    TYPE_PARAM_LIST@[208; 249)
+      L_ANGLE@[208; 209) "<"
+      LIFETIME_PARAM@[209; 215)
+        LIFETIME@[209; 211) "\'a"
+        COLON@[211; 212) ":"
+        WHITESPACE@[212; 213) " "
+        LIFETIME@[213; 215) "\'d"
+      COMMA@[215; 216) ","
+      WHITESPACE@[216; 217) " "
+      LIFETIME_PARAM@[217; 228)
+        LIFETIME@[217; 219) "\'d"
+        COLON@[219; 220) ":"
+        WHITESPACE@[220; 221) " "
+        LIFETIME@[221; 223) "\'a"
+        WHITESPACE@[223; 224) " "
+        PLUS@[224; 225) "+"
+        WHITESPACE@[225; 226) " "
+        LIFETIME@[226; 228) "\'b"
+      COMMA@[228; 229) ","
+      WHITESPACE@[229; 230) " "
+      TYPE_PARAM@[230; 248)
+        NAME@[230; 231)
+          IDENT@[230; 231) "T"
+        COLON@[231; 232) ":"
+        WHITESPACE@[232; 233) " "
+        TYPE_BOUND_LIST@[233; 248)
+          TYPE_BOUND@[233; 235)
+            LIFETIME@[233; 235) "\'a"
+          WHITESPACE@[235; 236) " "
+          PLUS@[236; 237) "+"
+          WHITESPACE@[237; 238) " "
+          TYPE_BOUND@[238; 240)
+            LIFETIME@[238; 240) "\'d"
+          WHITESPACE@[240; 241) " "
+          PLUS@[241; 242) "+"
+          WHITESPACE@[242; 243) " "
+          TYPE_BOUND@[243; 248)
+            PATH_TYPE@[243; 248)
+              PATH@[243; 248)
+                PATH_SEGMENT@[243; 248)
+                  NAME_REF@[243; 248)
+                    IDENT@[243; 248) "Clone"
+      R_ANGLE@[248; 249) ">"
+    SEMI@[249; 250) ";"
diff --git a/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rs b/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rs
new file mode 100644 (file)
index 0000000..e929eef
--- /dev/null
@@ -0,0 +1,8 @@
+extern fn foo() {
+}
+
+extern "C" fn bar() {
+}
+
+extern r"D" fn baz() {
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.txt b/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.txt
new file mode 100644 (file)
index 0000000..a4e75ec
--- /dev/null
@@ -0,0 +1,56 @@
+SOURCE_FILE@[0; 71)
+  FN_DEF@[0; 19)
+    ABI@[0; 6)
+      EXTERN_KW@[0; 6) "extern"
+    WHITESPACE@[6; 7) " "
+    FN_KW@[7; 9) "fn"
+    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) "\n"
+      R_CURLY@[18; 19) "}"
+  WHITESPACE@[19; 21) "\n\n"
+  FN_DEF@[21; 44)
+    ABI@[21; 31)
+      EXTERN_KW@[21; 27) "extern"
+      WHITESPACE@[27; 28) " "
+      STRING@[28; 31) "\"C\""
+    WHITESPACE@[31; 32) " "
+    FN_KW@[32; 34) "fn"
+    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) "\n"
+      R_CURLY@[43; 44) "}"
+  WHITESPACE@[44; 46) "\n\n"
+  FN_DEF@[46; 70)
+    ABI@[46; 57)
+      EXTERN_KW@[46; 52) "extern"
+      WHITESPACE@[52; 53) " "
+      RAW_STRING@[53; 57) "r\"D\""
+    WHITESPACE@[57; 58) " "
+    FN_KW@[58; 60) "fn"
+    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) "\n"
+      R_CURLY@[69; 70) "}"
+  WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rs b/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rs
new file mode 100644 (file)
index 0000000..f5fe0e6
--- /dev/null
@@ -0,0 +1,5 @@
+extern {
+}
+
+extern "C" {
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.txt b/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.txt
new file mode 100644 (file)
index 0000000..bbbd95f
--- /dev/null
@@ -0,0 +1,21 @@
+SOURCE_FILE@[0; 27)
+  EXTERN_BLOCK@[0; 10)
+    ABI@[0; 6)
+      EXTERN_KW@[0; 6) "extern"
+    WHITESPACE@[6; 7) " "
+    EXTERN_ITEM_LIST@[7; 10)
+      L_CURLY@[7; 8) "{"
+      WHITESPACE@[8; 9) "\n"
+      R_CURLY@[9; 10) "}"
+  WHITESPACE@[10; 12) "\n\n"
+  EXTERN_BLOCK@[12; 26)
+    ABI@[12; 22)
+      EXTERN_KW@[12; 18) "extern"
+      WHITESPACE@[18; 19) " "
+      STRING@[19; 22) "\"C\""
+    WHITESPACE@[22; 23) " "
+    EXTERN_ITEM_LIST@[23; 26)
+      L_CURLY@[23; 24) "{"
+      WHITESPACE@[24; 25) "\n"
+      R_CURLY@[25; 26) "}"
+  WHITESPACE@[26; 27) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0023_static_items.rs b/crates/ra_syntax/test_data/parser/ok/0023_static_items.rs
new file mode 100644 (file)
index 0000000..5fb92ce
--- /dev/null
@@ -0,0 +1,2 @@
+static FOO: u32 = 1;
+static mut BAR: i32 = 92;
diff --git a/crates/ra_syntax/test_data/parser/ok/0023_static_items.txt b/crates/ra_syntax/test_data/parser/ok/0023_static_items.txt
new file mode 100644 (file)
index 0000000..5591f95
--- /dev/null
@@ -0,0 +1,41 @@
+SOURCE_FILE@[0; 47)
+  STATIC_DEF@[0; 20)
+    STATIC_KW@[0; 6) "static"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 10)
+      IDENT@[7; 10) "FOO"
+    COLON@[10; 11) ":"
+    WHITESPACE@[11; 12) " "
+    PATH_TYPE@[12; 15)
+      PATH@[12; 15)
+        PATH_SEGMENT@[12; 15)
+          NAME_REF@[12; 15)
+            IDENT@[12; 15) "u32"
+    WHITESPACE@[15; 16) " "
+    EQ@[16; 17) "="
+    WHITESPACE@[17; 18) " "
+    LITERAL@[18; 19)
+      INT_NUMBER@[18; 19) "1"
+    SEMI@[19; 20) ";"
+  WHITESPACE@[20; 21) "\n"
+  STATIC_DEF@[21; 46)
+    STATIC_KW@[21; 27) "static"
+    WHITESPACE@[27; 28) " "
+    MUT_KW@[28; 31) "mut"
+    WHITESPACE@[31; 32) " "
+    NAME@[32; 35)
+      IDENT@[32; 35) "BAR"
+    COLON@[35; 36) ":"
+    WHITESPACE@[36; 37) " "
+    PATH_TYPE@[37; 40)
+      PATH@[37; 40)
+        PATH_SEGMENT@[37; 40)
+          NAME_REF@[37; 40)
+            IDENT@[37; 40) "i32"
+    WHITESPACE@[40; 41) " "
+    EQ@[41; 42) "="
+    WHITESPACE@[42; 43) " "
+    LITERAL@[43; 45)
+      INT_NUMBER@[43; 45) "92"
+    SEMI@[45; 46) ";"
+  WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0024_const_item.rs b/crates/ra_syntax/test_data/parser/ok/0024_const_item.rs
new file mode 100644 (file)
index 0000000..7446859
--- /dev/null
@@ -0,0 +1,2 @@
+const FOO: u32 = 92;
+const mut BAR: u32 = 62;
diff --git a/crates/ra_syntax/test_data/parser/ok/0024_const_item.txt b/crates/ra_syntax/test_data/parser/ok/0024_const_item.txt
new file mode 100644 (file)
index 0000000..dea8a3a
--- /dev/null
@@ -0,0 +1,41 @@
+SOURCE_FILE@[0; 46)
+  CONST_DEF@[0; 20)
+    CONST_KW@[0; 5) "const"
+    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) "\n"
+  CONST_DEF@[21; 45)
+    CONST_KW@[21; 26) "const"
+    WHITESPACE@[26; 27) " "
+    MUT_KW@[27; 30) "mut"
+    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) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rs b/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rs
new file mode 100644 (file)
index 0000000..2898098
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    extern fn f() {}
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.txt b/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.txt
new file mode 100644 (file)
index 0000000..a345f4b
--- /dev/null
@@ -0,0 +1,31 @@
+SOURCE_FILE@[0; 35)
+  FN_DEF@[0; 34)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 34)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      FN_DEF@[16; 32)
+        ABI@[16; 22)
+          EXTERN_KW@[16; 22) "extern"
+        WHITESPACE@[22; 23) " "
+        FN_KW@[23; 25) "fn"
+        WHITESPACE@[25; 26) " "
+        NAME@[26; 27)
+          IDENT@[26; 27) "f"
+        PARAM_LIST@[27; 29)
+          L_PAREN@[27; 28) "("
+          R_PAREN@[28; 29) ")"
+        WHITESPACE@[29; 30) " "
+        BLOCK@[30; 32)
+          L_CURLY@[30; 31) "{"
+          R_CURLY@[31; 32) "}"
+      WHITESPACE@[32; 33) "\n"
+      R_CURLY@[33; 34) "}"
+  WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rs b/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rs
new file mode 100644 (file)
index 0000000..7641a3d
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    const fn f() {}
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.txt b/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.txt
new file mode 100644 (file)
index 0000000..cbcd15a
--- /dev/null
@@ -0,0 +1,30 @@
+SOURCE_FILE@[0; 34)
+  FN_DEF@[0; 33)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 33)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      FN_DEF@[16; 31)
+        CONST_KW@[16; 21) "const"
+        WHITESPACE@[21; 22) " "
+        FN_KW@[22; 24) "fn"
+        WHITESPACE@[24; 25) " "
+        NAME@[25; 26)
+          IDENT@[25; 26) "f"
+        PARAM_LIST@[26; 28)
+          L_PAREN@[26; 27) "("
+          R_PAREN@[27; 28) ")"
+        WHITESPACE@[28; 29) " "
+        BLOCK@[29; 31)
+          L_CURLY@[29; 30) "{"
+          R_CURLY@[30; 31) "}"
+      WHITESPACE@[31; 32) "\n"
+      R_CURLY@[32; 33) "}"
+  WHITESPACE@[33; 34) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rs b/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rs
new file mode 100644 (file)
index 0000000..f3c5ff9
--- /dev/null
@@ -0,0 +1,4 @@
+fn main() {
+    unsafe fn f() {}
+    unsafe { 92 }
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.txt b/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.txt
new file mode 100644 (file)
index 0000000..f863759
--- /dev/null
@@ -0,0 +1,41 @@
+SOURCE_FILE@[0; 53)
+  FN_DEF@[0; 52)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 52)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      FN_DEF@[16; 32)
+        UNSAFE_KW@[16; 22) "unsafe"
+        WHITESPACE@[22; 23) " "
+        FN_KW@[23; 25) "fn"
+        WHITESPACE@[25; 26) " "
+        NAME@[26; 27)
+          IDENT@[26; 27) "f"
+        PARAM_LIST@[27; 29)
+          L_PAREN@[27; 28) "("
+          R_PAREN@[28; 29) ")"
+        WHITESPACE@[29; 30) " "
+        BLOCK@[30; 32)
+          L_CURLY@[30; 31) "{"
+          R_CURLY@[31; 32) "}"
+      WHITESPACE@[32; 37) "\n    "
+      BLOCK_EXPR@[37; 50)
+        UNSAFE_KW@[37; 43) "unsafe"
+        WHITESPACE@[43; 44) " "
+        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) "\n"
+      R_CURLY@[51; 52) "}"
+  WHITESPACE@[52; 53) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rs b/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rs
new file mode 100644 (file)
index 0000000..cc95984
--- /dev/null
@@ -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/test_data/parser/ok/0028_operator_binding_power.txt b/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.txt
new file mode 100644 (file)
index 0000000..b066764
--- /dev/null
@@ -0,0 +1,185 @@
+SOURCE_FILE@[0; 248)
+  FN_DEF@[0; 247)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 16)
+      IDENT@[3; 16) "binding_power"
+    PARAM_LIST@[16; 18)
+      L_PAREN@[16; 17) "("
+      R_PAREN@[17; 18) ")"
+    WHITESPACE@[18; 19) " "
+    BLOCK@[19; 247)
+      L_CURLY@[19; 20) "{"
+      WHITESPACE@[20; 25) "\n    "
+      LET_STMT@[25; 55)
+        LET_KW@[25; 28) "let"
+        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) "\n    "
+      EXPR_STMT@[60; 70)
+        BIN_EXPR@[60; 69)
+          LITERAL@[60; 61)
+            INT_NUMBER@[60; 61) "1"
+          WHITESPACE@[61; 62) " "
+          PLUS@[62; 63) "+"
+          WHITESPACE@[63; 64) " "
+          BIN_EXPR@[64; 69)
+            LITERAL@[64; 65)
+              INT_NUMBER@[64; 65) "2"
+            WHITESPACE@[65; 66) " "
+            STAR@[66; 67) "*"
+            WHITESPACE@[67; 68) " "
+            LITERAL@[68; 69)
+              INT_NUMBER@[68; 69) "3"
+        SEMI@[69; 70) ";"
+      WHITESPACE@[70; 75) "\n    "
+      EXPR_STMT@[75; 86)
+        BIN_EXPR@[75; 85)
+          LITERAL@[75; 76)
+            INT_NUMBER@[75; 76) "1"
+          WHITESPACE@[76; 77) " "
+          SHL@[77; 79) "<<"
+          WHITESPACE@[79; 80) " "
+          BIN_EXPR@[80; 85)
+            LITERAL@[80; 81)
+              INT_NUMBER@[80; 81) "2"
+            WHITESPACE@[81; 82) " "
+            PLUS@[82; 83) "+"
+            WHITESPACE@[83; 84) " "
+            LITERAL@[84; 85)
+              INT_NUMBER@[84; 85) "3"
+        SEMI@[85; 86) ";"
+      WHITESPACE@[86; 91) "\n    "
+      EXPR_STMT@[91; 102)
+        BIN_EXPR@[91; 101)
+          LITERAL@[91; 92)
+            INT_NUMBER@[91; 92) "1"
+          WHITESPACE@[92; 93) " "
+          AMP@[93; 94) "&"
+          WHITESPACE@[94; 95) " "
+          BIN_EXPR@[95; 101)
+            LITERAL@[95; 96)
+              INT_NUMBER@[95; 96) "2"
+            WHITESPACE@[96; 97) " "
+            SHR@[97; 99) ">>"
+            WHITESPACE@[99; 100) " "
+            LITERAL@[100; 101)
+              INT_NUMBER@[100; 101) "3"
+        SEMI@[101; 102) ";"
+      WHITESPACE@[102; 107) "\n    "
+      EXPR_STMT@[107; 117)
+        BIN_EXPR@[107; 116)
+          LITERAL@[107; 108)
+            INT_NUMBER@[107; 108) "1"
+          WHITESPACE@[108; 109) " "
+          CARET@[109; 110) "^"
+          WHITESPACE@[110; 111) " "
+          BIN_EXPR@[111; 116)
+            LITERAL@[111; 112)
+              INT_NUMBER@[111; 112) "2"
+            WHITESPACE@[112; 113) " "
+            AMP@[113; 114) "&"
+            WHITESPACE@[114; 115) " "
+            LITERAL@[115; 116)
+              INT_NUMBER@[115; 116) "3"
+        SEMI@[116; 117) ";"
+      WHITESPACE@[117; 122) "\n    "
+      EXPR_STMT@[122; 132)
+        BIN_EXPR@[122; 131)
+          LITERAL@[122; 123)
+            INT_NUMBER@[122; 123) "1"
+          WHITESPACE@[123; 124) " "
+          PIPE@[124; 125) "|"
+          WHITESPACE@[125; 126) " "
+          BIN_EXPR@[126; 131)
+            LITERAL@[126; 127)
+              INT_NUMBER@[126; 127) "2"
+            WHITESPACE@[127; 128) " "
+            CARET@[128; 129) "^"
+            WHITESPACE@[129; 130) " "
+            LITERAL@[130; 131)
+              INT_NUMBER@[130; 131) "3"
+        SEMI@[131; 132) ";"
+      WHITESPACE@[132; 137) "\n    "
+      EXPR_STMT@[137; 148)
+        BIN_EXPR@[137; 147)
+          LITERAL@[137; 138)
+            INT_NUMBER@[137; 138) "1"
+          WHITESPACE@[138; 139) " "
+          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) "\n    "
+      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) "\n    "
+      COMMENT@[170; 184) "//1 || 2 && 2;"
+      WHITESPACE@[184; 189) "\n    "
+      COMMENT@[189; 203) "//1 .. 2 || 3;"
+      WHITESPACE@[203; 208) "\n    "
+      COMMENT@[208; 221) "//1 = 2 .. 3;"
+      WHITESPACE@[221; 226) "\n    "
+      COMMENT@[226; 245) "//---&*1 - --2 * 9;"
+      WHITESPACE@[245; 246) "\n"
+      R_CURLY@[246; 247) "}"
+  WHITESPACE@[247; 248) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rs b/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rs
new file mode 100644 (file)
index 0000000..f9ff444
--- /dev/null
@@ -0,0 +1,11 @@
+fn foo() {
+    ..1 + 1;
+    ..z = 2;
+    x = false..1 == 1;
+    let x = 1..;
+    
+    ..=1 + 1;
+    ..=z = 2;
+    x = false..=1 == 1;
+    let x = 1..;
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0029_range_forms.txt b/crates/ra_syntax/test_data/parser/ok/0029_range_forms.txt
new file mode 100644 (file)
index 0000000..e4db98c
--- /dev/null
@@ -0,0 +1,151 @@
+SOURCE_FILE@[0; 153)
+  FN_DEF@[0; 152)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 152)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      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) "\n    "
+      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) "\n    "
+      EXPR_STMT@[41; 59)
+        BIN_EXPR@[41; 58)
+          PATH_EXPR@[41; 42)
+            PATH@[41; 42)
+              PATH_SEGMENT@[41; 42)
+                NAME_REF@[41; 42)
+                  IDENT@[41; 42) "x"
+          WHITESPACE@[42; 43) " "
+          EQ@[43; 44) "="
+          WHITESPACE@[44; 45) " "
+          RANGE_EXPR@[45; 58)
+            LITERAL@[45; 50)
+              FALSE_KW@[45; 50) "false"
+            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) "\n    "
+      LET_STMT@[64; 76)
+        LET_KW@[64; 67) "let"
+        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; 86) "\n    \n    "
+      EXPR_STMT@[86; 95)
+        RANGE_EXPR@[86; 94)
+          DOTDOTEQ@[86; 89) "..="
+          BIN_EXPR@[89; 94)
+            LITERAL@[89; 90)
+              INT_NUMBER@[89; 90) "1"
+            WHITESPACE@[90; 91) " "
+            PLUS@[91; 92) "+"
+            WHITESPACE@[92; 93) " "
+            LITERAL@[93; 94)
+              INT_NUMBER@[93; 94) "1"
+        SEMI@[94; 95) ";"
+      WHITESPACE@[95; 100) "\n    "
+      EXPR_STMT@[100; 109)
+        BIN_EXPR@[100; 108)
+          RANGE_EXPR@[100; 104)
+            DOTDOTEQ@[100; 103) "..="
+            PATH_EXPR@[103; 104)
+              PATH@[103; 104)
+                PATH_SEGMENT@[103; 104)
+                  NAME_REF@[103; 104)
+                    IDENT@[103; 104) "z"
+          WHITESPACE@[104; 105) " "
+          EQ@[105; 106) "="
+          WHITESPACE@[106; 107) " "
+          LITERAL@[107; 108)
+            INT_NUMBER@[107; 108) "2"
+        SEMI@[108; 109) ";"
+      WHITESPACE@[109; 114) "\n    "
+      EXPR_STMT@[114; 133)
+        BIN_EXPR@[114; 132)
+          PATH_EXPR@[114; 115)
+            PATH@[114; 115)
+              PATH_SEGMENT@[114; 115)
+                NAME_REF@[114; 115)
+                  IDENT@[114; 115) "x"
+          WHITESPACE@[115; 116) " "
+          EQ@[116; 117) "="
+          WHITESPACE@[117; 118) " "
+          RANGE_EXPR@[118; 132)
+            LITERAL@[118; 123)
+              FALSE_KW@[118; 123) "false"
+            DOTDOTEQ@[123; 126) "..="
+            BIN_EXPR@[126; 132)
+              LITERAL@[126; 127)
+                INT_NUMBER@[126; 127) "1"
+              WHITESPACE@[127; 128) " "
+              EQEQ@[128; 130) "=="
+              WHITESPACE@[130; 131) " "
+              LITERAL@[131; 132)
+                INT_NUMBER@[131; 132) "1"
+        SEMI@[132; 133) ";"
+      WHITESPACE@[133; 138) "\n    "
+      LET_STMT@[138; 150)
+        LET_KW@[138; 141) "let"
+        WHITESPACE@[141; 142) " "
+        BIND_PAT@[142; 143)
+          NAME@[142; 143)
+            IDENT@[142; 143) "x"
+        WHITESPACE@[143; 144) " "
+        EQ@[144; 145) "="
+        WHITESPACE@[145; 146) " "
+        RANGE_EXPR@[146; 149)
+          LITERAL@[146; 147)
+            INT_NUMBER@[146; 147) "1"
+          DOTDOT@[147; 149) ".."
+        SEMI@[149; 150) ";"
+      WHITESPACE@[150; 151) "\n"
+      R_CURLY@[151; 152) "}"
+  WHITESPACE@[152; 153) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rs b/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rs
new file mode 100644 (file)
index 0000000..261aad1
--- /dev/null
@@ -0,0 +1,6 @@
+fn main() {
+    let _ = 'c'u32;
+    let _ = "string"invalid;
+    let _ = b'b'_suff;
+    let _ = b"bs"invalid;
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.txt b/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.txt
new file mode 100644 (file)
index 0000000..4f7e809
--- /dev/null
@@ -0,0 +1,63 @@
+SOURCE_FILE@[0; 112)
+  FN_DEF@[0; 111)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 111)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      LET_STMT@[16; 31)
+        LET_KW@[16; 19) "let"
+        WHITESPACE@[19; 20) " "
+        PLACEHOLDER_PAT@[20; 21)
+          UNDERSCORE@[20; 21) "_"
+        WHITESPACE@[21; 22) " "
+        EQ@[22; 23) "="
+        WHITESPACE@[23; 24) " "
+        LITERAL@[24; 30)
+          CHAR@[24; 30) "\'c\'u32"
+        SEMI@[30; 31) ";"
+      WHITESPACE@[31; 36) "\n    "
+      LET_STMT@[36; 60)
+        LET_KW@[36; 39) "let"
+        WHITESPACE@[39; 40) " "
+        PLACEHOLDER_PAT@[40; 41)
+          UNDERSCORE@[40; 41) "_"
+        WHITESPACE@[41; 42) " "
+        EQ@[42; 43) "="
+        WHITESPACE@[43; 44) " "
+        LITERAL@[44; 59)
+          STRING@[44; 59) "\"string\"invalid"
+        SEMI@[59; 60) ";"
+      WHITESPACE@[60; 65) "\n    "
+      LET_STMT@[65; 83)
+        LET_KW@[65; 68) "let"
+        WHITESPACE@[68; 69) " "
+        PLACEHOLDER_PAT@[69; 70)
+          UNDERSCORE@[69; 70) "_"
+        WHITESPACE@[70; 71) " "
+        EQ@[71; 72) "="
+        WHITESPACE@[72; 73) " "
+        LITERAL@[73; 82)
+          BYTE@[73; 82) "b\'b\'_suff"
+        SEMI@[82; 83) ";"
+      WHITESPACE@[83; 88) "\n    "
+      LET_STMT@[88; 109)
+        LET_KW@[88; 91) "let"
+        WHITESPACE@[91; 92) " "
+        PLACEHOLDER_PAT@[92; 93)
+          UNDERSCORE@[92; 93) "_"
+        WHITESPACE@[93; 94) " "
+        EQ@[94; 95) "="
+        WHITESPACE@[95; 96) " "
+        LITERAL@[96; 108)
+          BYTE_STRING@[96; 108) "b\"bs\"invalid"
+        SEMI@[108; 109) ";"
+      WHITESPACE@[109; 110) "\n"
+      R_CURLY@[110; 111) "}"
+  WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0030_traits.rs b/crates/ra_syntax/test_data/parser/ok/0030_traits.rs
new file mode 100644 (file)
index 0000000..23c4be0
--- /dev/null
@@ -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/test_data/parser/ok/0030_traits.txt b/crates/ra_syntax/test_data/parser/ok/0030_traits.txt
new file mode 100644 (file)
index 0000000..b656c1a
--- /dev/null
@@ -0,0 +1,93 @@
+SOURCE_FILE@[0; 164)
+  TRAIT_DEF@[0; 66)
+    VISIBILITY@[0; 3)
+      PUB_KW@[0; 3) "pub"
+    WHITESPACE@[3; 4) " "
+    TRAIT_KW@[4; 9) "trait"
+    WHITESPACE@[9; 10) " "
+    NAME@[10; 22)
+      IDENT@[10; 22) "WriteMessage"
+    WHITESPACE@[22; 23) " "
+    ITEM_LIST@[23; 66)
+      L_CURLY@[23; 24) "{"
+      WHITESPACE@[24; 29) "\n    "
+      FN_DEF@[29; 64)
+        FN_KW@[29; 31) "fn"
+        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) "\n"
+      R_CURLY@[65; 66) "}"
+  WHITESPACE@[66; 68) "\n\n"
+  TRAIT_DEF@[68; 104)
+    TRAIT_KW@[68; 73) "trait"
+    WHITESPACE@[73; 74) " "
+    NAME@[74; 82)
+      IDENT@[74; 82) "Runnable"
+    WHITESPACE@[82; 83) " "
+    ITEM_LIST@[83; 104)
+      L_CURLY@[83; 84) "{"
+      WHITESPACE@[84; 89) "\n    "
+      FN_DEF@[89; 102)
+        FN_KW@[89; 91) "fn"
+        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) "\n"
+      R_CURLY@[103; 104) "}"
+  WHITESPACE@[104; 106) "\n\n"
+  TRAIT_DEF@[106; 163)
+    TRAIT_KW@[106; 111) "trait"
+    WHITESPACE@[111; 112) " "
+    NAME@[112; 125)
+      IDENT@[112; 125) "TraitWithExpr"
+    WHITESPACE@[125; 126) " "
+    ITEM_LIST@[126; 163)
+      L_CURLY@[126; 127) "{"
+      WHITESPACE@[127; 132) "\n    "
+      FN_DEF@[132; 161)
+        FN_KW@[132; 134) "fn"
+        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) "\n"
+      R_CURLY@[162; 163) "}"
+  WHITESPACE@[163; 164) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0031_extern.rs b/crates/ra_syntax/test_data/parser/ok/0031_extern.rs
new file mode 100644 (file)
index 0000000..b33ac27
--- /dev/null
@@ -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/test_data/parser/ok/0031_extern.txt b/crates/ra_syntax/test_data/parser/ok/0031_extern.txt
new file mode 100644 (file)
index 0000000..badbf76
--- /dev/null
@@ -0,0 +1,973 @@
+SOURCE_FILE@[0; 1598)
+  EXTERN_BLOCK@[0; 1597)
+    ABI@[0; 6)
+      EXTERN_KW@[0; 6) "extern"
+    WHITESPACE@[6; 7) " "
+    EXTERN_ITEM_LIST@[7; 1597)
+      L_CURLY@[7; 8) "{"
+      WHITESPACE@[8; 13) "\n    "
+      FN_DEF@[13; 87)
+        VISIBILITY@[13; 16)
+          PUB_KW@[13; 16) "pub"
+        WHITESPACE@[16; 17) " "
+        FN_KW@[17; 19) "fn"
+        WHITESPACE@[19; 20) " "
+        NAME@[20; 26)
+          IDENT@[20; 26) "socket"
+        PARAM_LIST@[26; 75)
+          L_PAREN@[26; 27) "("
+          PARAM@[27; 42)
+            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) "\n    "
+      FN_DEF@[92; 167)
+        VISIBILITY@[92; 95)
+          PUB_KW@[92; 95) "pub"
+        WHITESPACE@[95; 96) " "
+        FN_KW@[96; 98) "fn"
+        WHITESPACE@[98; 99) " "
+        NAME@[99; 103)
+          IDENT@[99; 103) "bind"
+        PARAM_LIST@[103; 155)
+          L_PAREN@[103; 104) "("
+          PARAM@[104; 115)
+            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) "const"
+              WHITESPACE@[129; 130) " "
+              PATH_TYPE@[130; 138)
+                PATH@[130; 138)
+                  PATH_SEGMENT@[130; 138)
+                    NAME_REF@[130; 138)
+                      IDENT@[130; 138) "sockaddr"
+          COMMA@[138; 139) ","
+          WHITESPACE@[139; 140) " "
+          PARAM@[140; 154)
+            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) "\n    "
+      FN_DEF@[172; 276)
+        VISIBILITY@[172; 175)
+          PUB_KW@[172; 175) "pub"
+        WHITESPACE@[175; 176) " "
+        FN_KW@[176; 178) "fn"
+        WHITESPACE@[178; 179) " "
+        NAME@[179; 186)
+          IDENT@[179; 186) "connect"
+        PARAM_LIST@[186; 264)
+          L_PAREN@[186; 187) "("
+          PARAM@[187; 202)
+            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) "const"
+              WHITESPACE@[219; 220) " "
+              PATH_TYPE@[220; 228)
+                PATH@[220; 228)
+                  PATH_SEGMENT@[220; 228)
+                    NAME_REF@[220; 228)
+                      IDENT@[220; 228) "sockaddr"
+          COMMA@[228; 229) ","
+          WHITESPACE@[229; 249) "\n                   "
+          PARAM@[249; 263)
+            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) "\n    "
+      FN_DEF@[281; 341)
+        VISIBILITY@[281; 284)
+          PUB_KW@[281; 284) "pub"
+        WHITESPACE@[284; 285) " "
+        FN_KW@[285; 287) "fn"
+        WHITESPACE@[287; 288) " "
+        NAME@[288; 294)
+          IDENT@[288; 294) "listen"
+        PARAM_LIST@[294; 329)
+          L_PAREN@[294; 295) "("
+          PARAM@[295; 310)
+            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) "\n    "
+      FN_DEF@[346; 469)
+        VISIBILITY@[346; 349)
+          PUB_KW@[346; 349) "pub"
+        WHITESPACE@[349; 350) " "
+        FN_KW@[350; 352) "fn"
+        WHITESPACE@[352; 353) " "
+        NAME@[353; 364)
+          IDENT@[353; 364) "getsockname"
+        PARAM_LIST@[364; 457)
+          L_PAREN@[364; 365) "("
+          PARAM@[365; 380)
+            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) "mut"
+              WHITESPACE@[395; 396) " "
+              PATH_TYPE@[396; 404)
+                PATH@[396; 404)
+                  PATH_SEGMENT@[396; 404)
+                    NAME_REF@[396; 404)
+                      IDENT@[396; 404) "sockaddr"
+          COMMA@[404; 405) ","
+          WHITESPACE@[405; 429) "\n                       "
+          PARAM@[429; 456)
+            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) "mut"
+              WHITESPACE@[446; 447) " "
+              PATH_TYPE@[447; 456)
+                PATH@[447; 456)
+                  PATH_SEGMENT@[447; 456)
+                    NAME_REF@[447; 456)
+                      IDENT@[447; 456) "socklen_t"
+          R_PAREN@[456; 457) ")"
+        WHITESPACE@[457; 458) " "
+        RET_TYPE@[458; 468)
+          THIN_ARROW@[458; 460) "->"
+          WHITESPACE@[460; 461) " "
+          PATH_TYPE@[461; 468)
+            PATH@[461; 468)
+              PATH_SEGMENT@[461; 468)
+                COLONCOLON@[461; 463) "::"
+                NAME_REF@[463; 468)
+                  IDENT@[463; 468) "c_int"
+        SEMI@[468; 469) ";"
+      WHITESPACE@[469; 474) "\n    "
+      FN_DEF@[474; 691)
+        VISIBILITY@[474; 477)
+          PUB_KW@[474; 477) "pub"
+        WHITESPACE@[477; 478) " "
+        FN_KW@[478; 480) "fn"
+        WHITESPACE@[480; 481) " "
+        NAME@[481; 491)
+          IDENT@[481; 491) "getsockopt"
+        PARAM_LIST@[491; 679)
+          L_PAREN@[491; 492) "("
+          PARAM@[492; 507)
+            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) "\n                      "
+          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) "\n                      "
+          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) "\n                      "
+          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) "mut"
+              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) "\n                      "
+          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) "mut"
+              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) "\n    "
+      FN_DEF@[696; 864)
+        VISIBILITY@[696; 699)
+          PUB_KW@[696; 699) "pub"
+        WHITESPACE@[699; 700) " "
+        FN_KW@[700; 702) "fn"
+        WHITESPACE@[702; 703) " "
+        NAME@[703; 713)
+          IDENT@[703; 713) "setsockopt"
+        PARAM_LIST@[713; 852)
+          L_PAREN@[713; 714) "("
+          PARAM@[714; 729)
+            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) "\n                      "
+          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) "const"
+              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) "\n                      "
+          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) "\n    "
+      FN_DEF@[869; 992)
+        VISIBILITY@[869; 872)
+          PUB_KW@[869; 872) "pub"
+        WHITESPACE@[872; 873) " "
+        FN_KW@[873; 875) "fn"
+        WHITESPACE@[875; 876) " "
+        NAME@[876; 887)
+          IDENT@[876; 887) "getpeername"
+        PARAM_LIST@[887; 980)
+          L_PAREN@[887; 888) "("
+          PARAM@[888; 903)
+            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) "mut"
+              WHITESPACE@[918; 919) " "
+              PATH_TYPE@[919; 927)
+                PATH@[919; 927)
+                  PATH_SEGMENT@[919; 927)
+                    NAME_REF@[919; 927)
+                      IDENT@[919; 927) "sockaddr"
+          COMMA@[927; 928) ","
+          WHITESPACE@[928; 952) "\n                       "
+          PARAM@[952; 979)
+            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) "mut"
+              WHITESPACE@[969; 970) " "
+              PATH_TYPE@[970; 979)
+                PATH@[970; 979)
+                  PATH_SEGMENT@[970; 979)
+                    NAME_REF@[970; 979)
+                      IDENT@[970; 979) "socklen_t"
+          R_PAREN@[979; 980) ")"
+        WHITESPACE@[980; 981) " "
+        RET_TYPE@[981; 991)
+          THIN_ARROW@[981; 983) "->"
+          WHITESPACE@[983; 984) " "
+          PATH_TYPE@[984; 991)
+            PATH@[984; 991)
+              PATH_SEGMENT@[984; 991)
+                COLONCOLON@[984; 986) "::"
+                NAME_REF@[986; 991)
+                  IDENT@[986; 991) "c_int"
+        SEMI@[991; 992) ";"
+      WHITESPACE@[992; 997) "\n    "
+      FN_DEF@[997; 1173)
+        VISIBILITY@[997; 1000)
+          PUB_KW@[997; 1000) "pub"
+        WHITESPACE@[1000; 1001) " "
+        FN_KW@[1001; 1003) "fn"
+        WHITESPACE@[1003; 1004) " "
+        NAME@[1004; 1010)
+          IDENT@[1004; 1010) "sendto"
+        PARAM_LIST@[1010; 1159)
+          L_PAREN@[1010; 1011) "("
+          PARAM@[1011; 1026)
+            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) "const"
+              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) "\n                  "
+          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) "const"
+              WHITESPACE@[1111; 1112) " "
+              PATH_TYPE@[1112; 1120)
+                PATH@[1112; 1120)
+                  PATH_SEGMENT@[1112; 1120)
+                    NAME_REF@[1112; 1120)
+                      IDENT@[1112; 1120) "sockaddr"
+          COMMA@[1120; 1121) ","
+          WHITESPACE@[1121; 1140) "\n                  "
+          PARAM@[1140; 1158)
+            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) "\n    "
+      FN_DEF@[1178; 1289)
+        VISIBILITY@[1178; 1181)
+          PUB_KW@[1178; 1181) "pub"
+        WHITESPACE@[1181; 1182) " "
+        FN_KW@[1182; 1184) "fn"
+        WHITESPACE@[1184; 1185) " "
+        NAME@[1185; 1189)
+          IDENT@[1185; 1189) "send"
+        PARAM_LIST@[1189; 1275)
+          L_PAREN@[1189; 1190) "("
+          PARAM@[1190; 1205)
+            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) "const"
+              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) "\n                "
+          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) "\n    "
+      FN_DEF@[1294; 1481)
+        VISIBILITY@[1294; 1297)
+          PUB_KW@[1294; 1297) "pub"
+        WHITESPACE@[1297; 1298) " "
+        FN_KW@[1298; 1300) "fn"
+        WHITESPACE@[1300; 1301) " "
+        NAME@[1301; 1309)
+          IDENT@[1301; 1309) "recvfrom"
+        PARAM_LIST@[1309; 1467)
+          L_PAREN@[1309; 1310) "("
+          PARAM@[1310; 1325)
+            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) "mut"
+              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) "\n                    "
+          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) "mut"
+              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) "\n                    "
+          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) "mut"
+              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) "\n    "
+      FN_DEF@[1486; 1595)
+        VISIBILITY@[1486; 1489)
+          PUB_KW@[1486; 1489) "pub"
+        WHITESPACE@[1489; 1490) " "
+        FN_KW@[1490; 1492) "fn"
+        WHITESPACE@[1492; 1493) " "
+        NAME@[1493; 1497)
+          IDENT@[1493; 1497) "recv"
+        PARAM_LIST@[1497; 1581)
+          L_PAREN@[1497; 1498) "("
+          PARAM@[1498; 1513)
+            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) "mut"
+              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) "\n                "
+          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) "\n"
+      R_CURLY@[1596; 1597) "}"
+  WHITESPACE@[1597; 1598) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0032_where_for.rs b/crates/ra_syntax/test_data/parser/ok/0032_where_for.rs
new file mode 100644 (file)
index 0000000..588170f
--- /dev/null
@@ -0,0 +1,4 @@
+fn test_serialization<SER>()
+where
+    SER: Serialize + for<'de> Deserialize<'de> + PartialEq + std::fmt::Debug,
+{}
diff --git a/crates/ra_syntax/test_data/parser/ok/0032_where_for.txt b/crates/ra_syntax/test_data/parser/ok/0032_where_for.txt
new file mode 100644 (file)
index 0000000..9b1d0e8
--- /dev/null
@@ -0,0 +1,90 @@
+SOURCE_FILE@[0; 116)
+  FN_DEF@[0; 115)
+    FN_KW@[0; 2) "fn"
+    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) "\n"
+    WHERE_CLAUSE@[29; 112)
+      WHERE_KW@[29; 34) "where"
+      WHITESPACE@[34; 39) "\n    "
+      WHERE_PRED@[39; 111)
+        PATH_TYPE@[39; 42)
+          PATH@[39; 42)
+            PATH_SEGMENT@[39; 42)
+              NAME_REF@[39; 42)
+                IDENT@[39; 42) "SER"
+        COLON@[42; 43) ":"
+        WHITESPACE@[43; 44) " "
+        TYPE_BOUND_LIST@[44; 111)
+          TYPE_BOUND@[44; 53)
+            PATH_TYPE@[44; 53)
+              PATH@[44; 53)
+                PATH_SEGMENT@[44; 53)
+                  NAME_REF@[44; 53)
+                    IDENT@[44; 53) "Serialize"
+          WHITESPACE@[53; 54) " "
+          PLUS@[54; 55) "+"
+          WHITESPACE@[55; 56) " "
+          TYPE_BOUND@[56; 81)
+            FOR_TYPE@[56; 81)
+              FOR_KW@[56; 59) "for"
+              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) " "
+          TYPE_BOUND@[84; 93)
+            PATH_TYPE@[84; 93)
+              PATH@[84; 93)
+                PATH_SEGMENT@[84; 93)
+                  NAME_REF@[84; 93)
+                    IDENT@[84; 93) "PartialEq"
+          WHITESPACE@[93; 94) " "
+          PLUS@[94; 95) "+"
+          WHITESPACE@[95; 96) " "
+          TYPE_BOUND@[96; 111)
+            PATH_TYPE@[96; 111)
+              PATH@[96; 111)
+                PATH@[96; 104)
+                  PATH@[96; 99)
+                    PATH_SEGMENT@[96; 99)
+                      NAME_REF@[96; 99)
+                        IDENT@[96; 99) "std"
+                  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) "\n"
+    BLOCK@[113; 115)
+      L_CURLY@[113; 114) "{"
+      R_CURLY@[114; 115) "}"
+  WHITESPACE@[115; 116) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0033_label_break.rs b/crates/ra_syntax/test_data/parser/ok/0033_label_break.rs
new file mode 100644 (file)
index 0000000..728d781
--- /dev/null
@@ -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/test_data/parser/ok/0033_label_break.txt b/crates/ra_syntax/test_data/parser/ok/0033_label_break.txt
new file mode 100644 (file)
index 0000000..845a8d7
--- /dev/null
@@ -0,0 +1,215 @@
+SOURCE_FILE@[0; 506)
+  FN_DEF@[0; 505)
+    COMMENT@[0; 33) "// format with label  ..."
+    WHITESPACE@[33; 34) "\n"
+    FN_KW@[34; 36) "fn"
+    WHITESPACE@[36; 37) " "
+    NAME@[37; 41)
+      IDENT@[37; 41) "main"
+    PARAM_LIST@[41; 43)
+      L_PAREN@[41; 42) "("
+      R_PAREN@[42; 43) ")"
+    WHITESPACE@[43; 44) " "
+    BLOCK@[44; 505)
+      L_CURLY@[44; 45) "{"
+      WHITESPACE@[45; 50) "\n    "
+      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) "\n\n    "
+      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) "\n        "
+            EXPR_STMT@[90; 101)
+              CALL_EXPR@[90; 100)
+                PATH_EXPR@[90; 98)
+                  PATH@[90; 98)
+                    PATH_SEGMENT@[90; 98)
+                      NAME_REF@[90; 98)
+                        IDENT@[90; 98) "do_thing"
+                ARG_LIST@[98; 100)
+                  L_PAREN@[98; 99) "("
+                  R_PAREN@[99; 100) ")"
+              SEMI@[100; 101) ";"
+            WHITESPACE@[101; 110) "\n        "
+            EXPR_STMT@[110; 170)
+              IF_EXPR@[110; 170)
+                IF_KW@[110; 112) "if"
+                WHITESPACE@[112; 113) " "
+                CONDITION@[113; 132)
+                  CALL_EXPR@[113; 132)
+                    PATH_EXPR@[113; 130)
+                      PATH@[113; 130)
+                        PATH_SEGMENT@[113; 130)
+                          NAME_REF@[113; 130)
+                            IDENT@[113; 130) "condition_not_met"
+                    ARG_LIST@[130; 132)
+                      L_PAREN@[130; 131) "("
+                      R_PAREN@[131; 132) ")"
+                WHITESPACE@[132; 133) " "
+                BLOCK@[133; 170)
+                  L_CURLY@[133; 134) "{"
+                  WHITESPACE@[134; 147) "\n            "
+                  EXPR_STMT@[147; 160)
+                    BREAK_EXPR@[147; 159)
+                      BREAK_KW@[147; 152) "break"
+                      WHITESPACE@[152; 153) " "
+                      LIFETIME@[153; 159) "\'block"
+                    SEMI@[159; 160) ";"
+                  WHITESPACE@[160; 169) "\n        "
+                  R_CURLY@[169; 170) "}"
+            WHITESPACE@[170; 179) "\n        "
+            EXPR_STMT@[179; 195)
+              CALL_EXPR@[179; 194)
+                PATH_EXPR@[179; 192)
+                  PATH@[179; 192)
+                    PATH_SEGMENT@[179; 192)
+                      NAME_REF@[179; 192)
+                        IDENT@[179; 192) "do_next_thing"
+                ARG_LIST@[192; 194)
+                  L_PAREN@[192; 193) "("
+                  R_PAREN@[193; 194) ")"
+              SEMI@[194; 195) ";"
+            WHITESPACE@[195; 204) "\n        "
+            EXPR_STMT@[204; 264)
+              IF_EXPR@[204; 264)
+                IF_KW@[204; 206) "if"
+                WHITESPACE@[206; 207) " "
+                CONDITION@[207; 226)
+                  CALL_EXPR@[207; 226)
+                    PATH_EXPR@[207; 224)
+                      PATH@[207; 224)
+                        PATH_SEGMENT@[207; 224)
+                          NAME_REF@[207; 224)
+                            IDENT@[207; 224) "condition_not_met"
+                    ARG_LIST@[224; 226)
+                      L_PAREN@[224; 225) "("
+                      R_PAREN@[225; 226) ")"
+                WHITESPACE@[226; 227) " "
+                BLOCK@[227; 264)
+                  L_CURLY@[227; 228) "{"
+                  WHITESPACE@[228; 241) "\n            "
+                  EXPR_STMT@[241; 254)
+                    BREAK_EXPR@[241; 253)
+                      BREAK_KW@[241; 246) "break"
+                      WHITESPACE@[246; 247) " "
+                      LIFETIME@[247; 253) "\'block"
+                    SEMI@[253; 254) ";"
+                  WHITESPACE@[254; 263) "\n        "
+                  R_CURLY@[263; 264) "}"
+            WHITESPACE@[264; 273) "\n        "
+            EXPR_STMT@[273; 289)
+              CALL_EXPR@[273; 288)
+                PATH_EXPR@[273; 286)
+                  PATH@[273; 286)
+                    PATH_SEGMENT@[273; 286)
+                      NAME_REF@[273; 286)
+                        IDENT@[273; 286) "do_last_thing"
+                ARG_LIST@[286; 288)
+                  L_PAREN@[286; 287) "("
+                  R_PAREN@[287; 288) ")"
+              SEMI@[288; 289) ";"
+            WHITESPACE@[289; 294) "\n    "
+            R_CURLY@[294; 295) "}"
+      WHITESPACE@[295; 301) "\n\n    "
+      LET_STMT@[301; 503)
+        LET_KW@[301; 304) "let"
+        WHITESPACE@[304; 305) " "
+        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) "\n        "
+            EXPR_STMT@[332; 403)
+              IF_EXPR@[332; 403)
+                IF_KW@[332; 334) "if"
+                WHITESPACE@[334; 335) " "
+                CONDITION@[335; 340)
+                  CALL_EXPR@[335; 340)
+                    PATH_EXPR@[335; 338)
+                      PATH@[335; 338)
+                        PATH_SEGMENT@[335; 338)
+                          NAME_REF@[335; 338)
+                            IDENT@[335; 338) "foo"
+                    ARG_LIST@[338; 340)
+                      L_PAREN@[338; 339) "("
+                      R_PAREN@[339; 340) ")"
+                WHITESPACE@[340; 341) " "
+                BLOCK@[341; 403)
+                  L_CURLY@[341; 342) "{"
+                  WHITESPACE@[342; 355) "\n            "
+                  COMMENT@[355; 365) "// comment"
+                  WHITESPACE@[365; 378) "\n            "
+                  EXPR_STMT@[378; 393)
+                    BREAK_EXPR@[378; 392)
+                      BREAK_KW@[378; 383) "break"
+                      WHITESPACE@[383; 384) " "
+                      LIFETIME@[384; 390) "\'block"
+                      WHITESPACE@[390; 391) " "
+                      LITERAL@[391; 392)
+                        INT_NUMBER@[391; 392) "1"
+                    SEMI@[392; 393) ";"
+                  WHITESPACE@[393; 402) "\n        "
+                  R_CURLY@[402; 403) "}"
+            WHITESPACE@[403; 412) "\n        "
+            EXPR_STMT@[412; 486)
+              IF_EXPR@[412; 486)
+                IF_KW@[412; 414) "if"
+                WHITESPACE@[414; 415) " "
+                CONDITION@[415; 420)
+                  CALL_EXPR@[415; 420)
+                    PATH_EXPR@[415; 418)
+                      PATH@[415; 418)
+                        PATH_SEGMENT@[415; 418)
+                          NAME_REF@[415; 418)
+                            IDENT@[415; 418) "bar"
+                    ARG_LIST@[418; 420)
+                      L_PAREN@[418; 419) "("
+                      R_PAREN@[419; 420) ")"
+                WHITESPACE@[420; 421) " "
+                BLOCK@[421; 486)
+                  L_CURLY@[421; 422) "{"
+                  WHITESPACE@[422; 435) "\n            "
+                  COMMENT@[435; 448) "/* comment */"
+                  WHITESPACE@[448; 461) "\n            "
+                  EXPR_STMT@[461; 476)
+                    BREAK_EXPR@[461; 475)
+                      BREAK_KW@[461; 466) "break"
+                      WHITESPACE@[466; 467) " "
+                      LIFETIME@[467; 473) "\'block"
+                      WHITESPACE@[473; 474) " "
+                      LITERAL@[474; 475)
+                        INT_NUMBER@[474; 475) "2"
+                    SEMI@[475; 476) ";"
+                  WHITESPACE@[476; 485) "\n        "
+                  R_CURLY@[485; 486) "}"
+            WHITESPACE@[486; 495) "\n        "
+            LITERAL@[495; 496)
+              INT_NUMBER@[495; 496) "3"
+            WHITESPACE@[496; 501) "\n    "
+            R_CURLY@[501; 502) "}"
+        SEMI@[502; 503) ";"
+      WHITESPACE@[503; 504) "\n"
+      R_CURLY@[504; 505) "}"
+  WHITESPACE@[505; 506) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rs b/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rs
new file mode 100644 (file)
index 0000000..f1ed302
--- /dev/null
@@ -0,0 +1,3 @@
+fn main() {
+    make_query(crate::module_map::module_tree);
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.txt b/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.txt
new file mode 100644 (file)
index 0000000..a77d4aa
--- /dev/null
@@ -0,0 +1,41 @@
+SOURCE_FILE@[0; 62)
+  FN_DEF@[0; 61)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "main"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    BLOCK@[10; 61)
+      L_CURLY@[10; 11) "{"
+      WHITESPACE@[11; 16) "\n    "
+      EXPR_STMT@[16; 59)
+        CALL_EXPR@[16; 58)
+          PATH_EXPR@[16; 26)
+            PATH@[16; 26)
+              PATH_SEGMENT@[16; 26)
+                NAME_REF@[16; 26)
+                  IDENT@[16; 26) "make_query"
+          ARG_LIST@[26; 58)
+            L_PAREN@[26; 27) "("
+            PATH_EXPR@[27; 57)
+              PATH@[27; 57)
+                PATH@[27; 44)
+                  PATH@[27; 32)
+                    PATH_SEGMENT@[27; 32)
+                      CRATE_KW@[27; 32) "crate"
+                  COLONCOLON@[32; 34) "::"
+                  PATH_SEGMENT@[34; 44)
+                    NAME_REF@[34; 44)
+                      IDENT@[34; 44) "module_map"
+                COLONCOLON@[44; 46) "::"
+                PATH_SEGMENT@[46; 57)
+                  NAME_REF@[46; 57)
+                    IDENT@[46; 57) "module_tree"
+            R_PAREN@[57; 58) ")"
+        SEMI@[58; 59) ";"
+      WHITESPACE@[59; 60) "\n"
+      R_CURLY@[60; 61) "}"
+  WHITESPACE@[61; 62) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rs b/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rs
new file mode 100644 (file)
index 0000000..8c13231
--- /dev/null
@@ -0,0 +1,154 @@
+//! Adapted from a `rustc` test, which can be found at 
+//! https://github.com/rust-lang/rust/blob/6d34ec18c7d7e574553f6347ecf08e1e1c45c13d/src/test/run-pass/weird-exprs.rs.
+//! 
+//! Reported to rust-analyzer in https://github.com/rust-analyzer/rust-analyzer/issues/290
+
+#![allow(non_camel_case_types)]
+#![allow(dead_code)]
+#![allow(unreachable_code)]
+#![allow(unused_parens)]
+
+#![recursion_limit = "128"]
+
+use std::cell::Cell;
+use std::mem::swap;
+
+// Just a grab bag of stuff that you wouldn't want to actually write.
+
+fn strange() -> bool { let _x: bool = return true; }
+
+fn funny() {
+    fn f(_x: ()) { }
+    f(return);
+}
+
+fn what() {
+    fn the(x: &Cell<bool>) {
+        return while !x.get() { x.set(true); };
+    }
+    let i = &Cell::new(false);
+    let dont = {||the(i)};
+    dont();
+    assert!((i.get()));
+}
+
+fn zombiejesus() {
+    loop {
+        while (return) {
+            if (return) {
+                match (return) {
+                    1 => {
+                        if (return) {
+                            return
+                        } else {
+                            return
+                        }
+                    }
+                    _ => { return }
+                };
+            } else if (return) {
+                return;
+            }
+        }
+        if (return) { break; }
+    }
+}
+
+fn notsure() {
+    let mut _x: isize;
+    let mut _y = (_x = 0) == (_x = 0);
+    let mut _z = (_x = 0) < (_x = 0);
+    let _a = (_x += 0) == (_x = 0);
+    let _b = swap(&mut _y, &mut _z) == swap(&mut _y, &mut _z);
+}
+
+fn canttouchthis() -> usize {
+    fn p() -> bool { true }
+    let _a = (assert!((true)) == (assert!(p())));
+    let _c = (assert!((p())) == ());
+    let _b: bool = (println!("{}", 0) == (return 0));
+}
+
+fn angrydome() {
+    loop { if break { } }
+    let mut i = 0;
+    loop { i += 1; if i == 1 { match (continue) { 1 => { }, _ => panic!("wat") } }
+      break; }
+}
+
+fn evil_lincoln() { let _evil = println!("lincoln"); }
+
+fn dots() {
+    assert_eq!(String::from(".................................................."),
+               format!("{:?}", .. .. .. .. .. .. .. .. .. .. .. .. ..
+                               .. .. .. .. .. .. .. .. .. .. .. ..));
+}
+
+fn u8(u8: u8) {
+    if u8 != 0u8 {
+        assert_eq!(8u8, {
+            macro_rules! u8 {
+                (u8) => {
+                    mod u8 {
+                        pub fn u8<'u8: 'u8 + 'u8>(u8: &'u8 u8) -> &'u8 u8 {
+                            "u8";
+                            u8
+                        }
+                    }
+                };
+            }
+
+            u8!(u8);
+            let &u8: &u8 = u8::u8(&8u8);
+            crate::u8(0u8);
+            u8
+        });
+    }
+}
+
+fn fishy() {
+    assert_eq!(String::from("><>"),
+               String::<>::from::<>("><>").chars::<>().rev::<>().collect::<String>());
+}
+
+fn union() {
+    union union<'union> { union: &'union union<'union>, }
+}
+
+fn special_characters() {
+    let val = !((|(..):(_,_),__@_|__)((&*"\\",'🤔')/**/,{})=={&[..=..][..];})//
+    ;
+    assert!(!val);
+}
+
+fn punch_card() -> impl std::fmt::Debug {
+    ..=..=.. ..    .. .. .. ..    .. .. .. ..    .. ..=.. ..
+    ..=.. ..=..    .. .. .. ..    .. .. .. ..    ..=..=..=..
+    ..=.. ..=..    ..=.. ..=..    .. ..=..=..    .. ..=.. ..
+    ..=..=.. ..    ..=.. ..=..    ..=.. .. ..    .. ..=.. ..
+    ..=.. ..=..    ..=.. ..=..    .. ..=.. ..    .. ..=.. ..
+    ..=.. ..=..    ..=.. ..=..    .. .. ..=..    .. ..=.. ..
+    ..=.. ..=..    .. ..=..=..    ..=..=.. ..    .. ..=.. ..
+}
+
+fn ktulhu() {
+    ;;;();;;;;;;;;()
+}
+
+pub fn main() {
+    strange();
+    funny();
+    what();
+    zombiejesus();
+    notsure();
+    canttouchthis();
+    angrydome();
+    evil_lincoln();
+    dots();
+    u8(8u8);
+    fishy();
+    union();
+    special_characters();
+    punch_card();
+    ktulhu();
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.txt b/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.txt
new file mode 100644 (file)
index 0000000..c89b591
--- /dev/null
@@ -0,0 +1,2285 @@
+SOURCE_FILE@[0; 3813)
+  COMMENT@[0; 55) "//! Adapted from a `r ..."
+  WHITESPACE@[55; 56) "\n"
+  COMMENT@[56; 173) "//! https://github.co ..."
+  WHITESPACE@[173; 174) "\n"
+  COMMENT@[174; 178) "//! "
+  WHITESPACE@[178; 179) "\n"
+  COMMENT@[179; 269) "//! Reported to rust- ..."
+  WHITESPACE@[269; 271) "\n\n"
+  ATTR@[271; 302)
+    POUND@[271; 272) "#"
+    EXCL@[272; 273) "!"
+    TOKEN_TREE@[273; 302)
+      L_BRACK@[273; 274) "["
+      IDENT@[274; 279) "allow"
+      TOKEN_TREE@[279; 301)
+        L_PAREN@[279; 280) "("
+        IDENT@[280; 300) "non_camel_case_types"
+        R_PAREN@[300; 301) ")"
+      R_BRACK@[301; 302) "]"
+  WHITESPACE@[302; 303) "\n"
+  ATTR@[303; 323)
+    POUND@[303; 304) "#"
+    EXCL@[304; 305) "!"
+    TOKEN_TREE@[305; 323)
+      L_BRACK@[305; 306) "["
+      IDENT@[306; 311) "allow"
+      TOKEN_TREE@[311; 322)
+        L_PAREN@[311; 312) "("
+        IDENT@[312; 321) "dead_code"
+        R_PAREN@[321; 322) ")"
+      R_BRACK@[322; 323) "]"
+  WHITESPACE@[323; 324) "\n"
+  ATTR@[324; 351)
+    POUND@[324; 325) "#"
+    EXCL@[325; 326) "!"
+    TOKEN_TREE@[326; 351)
+      L_BRACK@[326; 327) "["
+      IDENT@[327; 332) "allow"
+      TOKEN_TREE@[332; 350)
+        L_PAREN@[332; 333) "("
+        IDENT@[333; 349) "unreachable_code"
+        R_PAREN@[349; 350) ")"
+      R_BRACK@[350; 351) "]"
+  WHITESPACE@[351; 352) "\n"
+  ATTR@[352; 376)
+    POUND@[352; 353) "#"
+    EXCL@[353; 354) "!"
+    TOKEN_TREE@[354; 376)
+      L_BRACK@[354; 355) "["
+      IDENT@[355; 360) "allow"
+      TOKEN_TREE@[360; 375)
+        L_PAREN@[360; 361) "("
+        IDENT@[361; 374) "unused_parens"
+        R_PAREN@[374; 375) ")"
+      R_BRACK@[375; 376) "]"
+  WHITESPACE@[376; 378) "\n\n"
+  ATTR@[378; 405)
+    POUND@[378; 379) "#"
+    EXCL@[379; 380) "!"
+    TOKEN_TREE@[380; 405)
+      L_BRACK@[380; 381) "["
+      IDENT@[381; 396) "recursion_limit"
+      WHITESPACE@[396; 397) " "
+      EQ@[397; 398) "="
+      WHITESPACE@[398; 399) " "
+      STRING@[399; 404) "\"128\""
+      R_BRACK@[404; 405) "]"
+  WHITESPACE@[405; 407) "\n\n"
+  USE_ITEM@[407; 427)
+    USE_KW@[407; 410) "use"
+    WHITESPACE@[410; 411) " "
+    USE_TREE@[411; 426)
+      PATH@[411; 426)
+        PATH@[411; 420)
+          PATH@[411; 414)
+            PATH_SEGMENT@[411; 414)
+              NAME_REF@[411; 414)
+                IDENT@[411; 414) "std"
+          COLONCOLON@[414; 416) "::"
+          PATH_SEGMENT@[416; 420)
+            NAME_REF@[416; 420)
+              IDENT@[416; 420) "cell"
+        COLONCOLON@[420; 422) "::"
+        PATH_SEGMENT@[422; 426)
+          NAME_REF@[422; 426)
+            IDENT@[422; 426) "Cell"
+    SEMI@[426; 427) ";"
+  WHITESPACE@[427; 428) "\n"
+  USE_ITEM@[428; 447)
+    USE_KW@[428; 431) "use"
+    WHITESPACE@[431; 432) " "
+    USE_TREE@[432; 446)
+      PATH@[432; 446)
+        PATH@[432; 440)
+          PATH@[432; 435)
+            PATH_SEGMENT@[432; 435)
+              NAME_REF@[432; 435)
+                IDENT@[432; 435) "std"
+          COLONCOLON@[435; 437) "::"
+          PATH_SEGMENT@[437; 440)
+            NAME_REF@[437; 440)
+              IDENT@[437; 440) "mem"
+        COLONCOLON@[440; 442) "::"
+        PATH_SEGMENT@[442; 446)
+          NAME_REF@[442; 446)
+            IDENT@[442; 446) "swap"
+    SEMI@[446; 447) ";"
+  WHITESPACE@[447; 449) "\n\n"
+  COMMENT@[449; 518) "// Just a grab bag of ..."
+  WHITESPACE@[518; 520) "\n\n"
+  FN_DEF@[520; 572)
+    FN_KW@[520; 522) "fn"
+    WHITESPACE@[522; 523) " "
+    NAME@[523; 530)
+      IDENT@[523; 530) "strange"
+    PARAM_LIST@[530; 532)
+      L_PAREN@[530; 531) "("
+      R_PAREN@[531; 532) ")"
+    WHITESPACE@[532; 533) " "
+    RET_TYPE@[533; 540)
+      THIN_ARROW@[533; 535) "->"
+      WHITESPACE@[535; 536) " "
+      PATH_TYPE@[536; 540)
+        PATH@[536; 540)
+          PATH_SEGMENT@[536; 540)
+            NAME_REF@[536; 540)
+              IDENT@[536; 540) "bool"
+    WHITESPACE@[540; 541) " "
+    BLOCK@[541; 572)
+      L_CURLY@[541; 542) "{"
+      WHITESPACE@[542; 543) " "
+      LET_STMT@[543; 570)
+        LET_KW@[543; 546) "let"
+        WHITESPACE@[546; 547) " "
+        BIND_PAT@[547; 549)
+          NAME@[547; 549)
+            IDENT@[547; 549) "_x"
+        COLON@[549; 550) ":"
+        WHITESPACE@[550; 551) " "
+        PATH_TYPE@[551; 555)
+          PATH@[551; 555)
+            PATH_SEGMENT@[551; 555)
+              NAME_REF@[551; 555)
+                IDENT@[551; 555) "bool"
+        WHITESPACE@[555; 556) " "
+        EQ@[556; 557) "="
+        WHITESPACE@[557; 558) " "
+        RETURN_EXPR@[558; 569)
+          RETURN_KW@[558; 564) "return"
+          WHITESPACE@[564; 565) " "
+          LITERAL@[565; 569)
+            TRUE_KW@[565; 569) "true"
+        SEMI@[569; 570) ";"
+      WHITESPACE@[570; 571) " "
+      R_CURLY@[571; 572) "}"
+  WHITESPACE@[572; 574) "\n\n"
+  FN_DEF@[574; 624)
+    FN_KW@[574; 576) "fn"
+    WHITESPACE@[576; 577) " "
+    NAME@[577; 582)
+      IDENT@[577; 582) "funny"
+    PARAM_LIST@[582; 584)
+      L_PAREN@[582; 583) "("
+      R_PAREN@[583; 584) ")"
+    WHITESPACE@[584; 585) " "
+    BLOCK@[585; 624)
+      L_CURLY@[585; 586) "{"
+      WHITESPACE@[586; 591) "\n    "
+      FN_DEF@[591; 607)
+        FN_KW@[591; 593) "fn"
+        WHITESPACE@[593; 594) " "
+        NAME@[594; 595)
+          IDENT@[594; 595) "f"
+        PARAM_LIST@[595; 603)
+          L_PAREN@[595; 596) "("
+          PARAM@[596; 602)
+            BIND_PAT@[596; 598)
+              NAME@[596; 598)
+                IDENT@[596; 598) "_x"
+            COLON@[598; 599) ":"
+            WHITESPACE@[599; 600) " "
+            TUPLE_TYPE@[600; 602)
+              L_PAREN@[600; 601) "("
+              R_PAREN@[601; 602) ")"
+          R_PAREN@[602; 603) ")"
+        WHITESPACE@[603; 604) " "
+        BLOCK@[604; 607)
+          L_CURLY@[604; 605) "{"
+          WHITESPACE@[605; 606) " "
+          R_CURLY@[606; 607) "}"
+      WHITESPACE@[607; 612) "\n    "
+      EXPR_STMT@[612; 622)
+        CALL_EXPR@[612; 621)
+          PATH_EXPR@[612; 613)
+            PATH@[612; 613)
+              PATH_SEGMENT@[612; 613)
+                NAME_REF@[612; 613)
+                  IDENT@[612; 613) "f"
+          ARG_LIST@[613; 621)
+            L_PAREN@[613; 614) "("
+            RETURN_EXPR@[614; 620)
+              RETURN_KW@[614; 620) "return"
+            R_PAREN@[620; 621) ")"
+        SEMI@[621; 622) ";"
+      WHITESPACE@[622; 623) "\n"
+      R_CURLY@[623; 624) "}"
+  WHITESPACE@[624; 626) "\n\n"
+  FN_DEF@[626; 816)
+    FN_KW@[626; 628) "fn"
+    WHITESPACE@[628; 629) " "
+    NAME@[629; 633)
+      IDENT@[629; 633) "what"
+    PARAM_LIST@[633; 635)
+      L_PAREN@[633; 634) "("
+      R_PAREN@[634; 635) ")"
+    WHITESPACE@[635; 636) " "
+    BLOCK@[636; 816)
+      L_CURLY@[636; 637) "{"
+      WHITESPACE@[637; 642) "\n    "
+      FN_DEF@[642; 720)
+        FN_KW@[642; 644) "fn"
+        WHITESPACE@[644; 645) " "
+        NAME@[645; 648)
+          IDENT@[645; 648) "the"
+        PARAM_LIST@[648; 664)
+          L_PAREN@[648; 649) "("
+          PARAM@[649; 663)
+            BIND_PAT@[649; 650)
+              NAME@[649; 650)
+                IDENT@[649; 650) "x"
+            COLON@[650; 651) ":"
+            WHITESPACE@[651; 652) " "
+            REFERENCE_TYPE@[652; 663)
+              AMP@[652; 653) "&"
+              PATH_TYPE@[653; 663)
+                PATH@[653; 663)
+                  PATH_SEGMENT@[653; 663)
+                    NAME_REF@[653; 657)
+                      IDENT@[653; 657) "Cell"
+                    TYPE_ARG_LIST@[657; 663)
+                      L_ANGLE@[657; 658) "<"
+                      TYPE_ARG@[658; 662)
+                        PATH_TYPE@[658; 662)
+                          PATH@[658; 662)
+                            PATH_SEGMENT@[658; 662)
+                              NAME_REF@[658; 662)
+                                IDENT@[658; 662) "bool"
+                      R_ANGLE@[662; 663) ">"
+          R_PAREN@[663; 664) ")"
+        WHITESPACE@[664; 665) " "
+        BLOCK@[665; 720)
+          L_CURLY@[665; 666) "{"
+          WHITESPACE@[666; 675) "\n        "
+          EXPR_STMT@[675; 714)
+            RETURN_EXPR@[675; 713)
+              RETURN_KW@[675; 681) "return"
+              WHITESPACE@[681; 682) " "
+              WHILE_EXPR@[682; 713)
+                WHILE_KW@[682; 687) "while"
+                WHITESPACE@[687; 688) " "
+                CONDITION@[688; 696)
+                  PREFIX_EXPR@[688; 696)
+                    EXCL@[688; 689) "!"
+                    METHOD_CALL_EXPR@[689; 696)
+                      PATH_EXPR@[689; 690)
+                        PATH@[689; 690)
+                          PATH_SEGMENT@[689; 690)
+                            NAME_REF@[689; 690)
+                              IDENT@[689; 690) "x"
+                      DOT@[690; 691) "."
+                      NAME_REF@[691; 694)
+                        IDENT@[691; 694) "get"
+                      ARG_LIST@[694; 696)
+                        L_PAREN@[694; 695) "("
+                        R_PAREN@[695; 696) ")"
+                WHITESPACE@[696; 697) " "
+                BLOCK@[697; 713)
+                  L_CURLY@[697; 698) "{"
+                  WHITESPACE@[698; 699) " "
+                  EXPR_STMT@[699; 711)
+                    METHOD_CALL_EXPR@[699; 710)
+                      PATH_EXPR@[699; 700)
+                        PATH@[699; 700)
+                          PATH_SEGMENT@[699; 700)
+                            NAME_REF@[699; 700)
+                              IDENT@[699; 700) "x"
+                      DOT@[700; 701) "."
+                      NAME_REF@[701; 704)
+                        IDENT@[701; 704) "set"
+                      ARG_LIST@[704; 710)
+                        L_PAREN@[704; 705) "("
+                        LITERAL@[705; 709)
+                          TRUE_KW@[705; 709) "true"
+                        R_PAREN@[709; 710) ")"
+                    SEMI@[710; 711) ";"
+                  WHITESPACE@[711; 712) " "
+                  R_CURLY@[712; 713) "}"
+            SEMI@[713; 714) ";"
+          WHITESPACE@[714; 719) "\n    "
+          R_CURLY@[719; 720) "}"
+      WHITESPACE@[720; 725) "\n    "
+      LET_STMT@[725; 751)
+        LET_KW@[725; 728) "let"
+        WHITESPACE@[728; 729) " "
+        BIND_PAT@[729; 730)
+          NAME@[729; 730)
+            IDENT@[729; 730) "i"
+        WHITESPACE@[730; 731) " "
+        EQ@[731; 732) "="
+        WHITESPACE@[732; 733) " "
+        REF_EXPR@[733; 750)
+          AMP@[733; 734) "&"
+          CALL_EXPR@[734; 750)
+            PATH_EXPR@[734; 743)
+              PATH@[734; 743)
+                PATH@[734; 738)
+                  PATH_SEGMENT@[734; 738)
+                    NAME_REF@[734; 738)
+                      IDENT@[734; 738) "Cell"
+                COLONCOLON@[738; 740) "::"
+                PATH_SEGMENT@[740; 743)
+                  NAME_REF@[740; 743)
+                    IDENT@[740; 743) "new"
+            ARG_LIST@[743; 750)
+              L_PAREN@[743; 744) "("
+              LITERAL@[744; 749)
+                FALSE_KW@[744; 749) "false"
+              R_PAREN@[749; 750) ")"
+        SEMI@[750; 751) ";"
+      WHITESPACE@[751; 756) "\n    "
+      LET_STMT@[756; 778)
+        LET_KW@[756; 759) "let"
+        WHITESPACE@[759; 760) " "
+        BIND_PAT@[760; 764)
+          NAME@[760; 764)
+            IDENT@[760; 764) "dont"
+        WHITESPACE@[764; 765) " "
+        EQ@[765; 766) "="
+        WHITESPACE@[766; 767) " "
+        BLOCK_EXPR@[767; 777)
+          BLOCK@[767; 777)
+            L_CURLY@[767; 768) "{"
+            LAMBDA_EXPR@[768; 776)
+              PARAM_LIST@[768; 770)
+                PIPE@[768; 769) "|"
+                PIPE@[769; 770) "|"
+              CALL_EXPR@[770; 776)
+                PATH_EXPR@[770; 773)
+                  PATH@[770; 773)
+                    PATH_SEGMENT@[770; 773)
+                      NAME_REF@[770; 773)
+                        IDENT@[770; 773) "the"
+                ARG_LIST@[773; 776)
+                  L_PAREN@[773; 774) "("
+                  PATH_EXPR@[774; 775)
+                    PATH@[774; 775)
+                      PATH_SEGMENT@[774; 775)
+                        NAME_REF@[774; 775)
+                          IDENT@[774; 775) "i"
+                  R_PAREN@[775; 776) ")"
+            R_CURLY@[776; 777) "}"
+        SEMI@[777; 778) ";"
+      WHITESPACE@[778; 783) "\n    "
+      EXPR_STMT@[783; 790)
+        CALL_EXPR@[783; 789)
+          PATH_EXPR@[783; 787)
+            PATH@[783; 787)
+              PATH_SEGMENT@[783; 787)
+                NAME_REF@[783; 787)
+                  IDENT@[783; 787) "dont"
+          ARG_LIST@[787; 789)
+            L_PAREN@[787; 788) "("
+            R_PAREN@[788; 789) ")"
+        SEMI@[789; 790) ";"
+      WHITESPACE@[790; 795) "\n    "
+      EXPR_STMT@[795; 814)
+        MACRO_CALL@[795; 813)
+          PATH@[795; 801)
+            PATH_SEGMENT@[795; 801)
+              NAME_REF@[795; 801)
+                IDENT@[795; 801) "assert"
+          EXCL@[801; 802) "!"
+          TOKEN_TREE@[802; 813)
+            L_PAREN@[802; 803) "("
+            TOKEN_TREE@[803; 812)
+              L_PAREN@[803; 804) "("
+              IDENT@[804; 805) "i"
+              DOT@[805; 806) "."
+              IDENT@[806; 809) "get"
+              TOKEN_TREE@[809; 811)
+                L_PAREN@[809; 810) "("
+                R_PAREN@[810; 811) ")"
+              R_PAREN@[811; 812) ")"
+            R_PAREN@[812; 813) ")"
+        SEMI@[813; 814) ";"
+      WHITESPACE@[814; 815) "\n"
+      R_CURLY@[815; 816) "}"
+  WHITESPACE@[816; 818) "\n\n"
+  FN_DEF@[818; 1322)
+    FN_KW@[818; 820) "fn"
+    WHITESPACE@[820; 821) " "
+    NAME@[821; 832)
+      IDENT@[821; 832) "zombiejesus"
+    PARAM_LIST@[832; 834)
+      L_PAREN@[832; 833) "("
+      R_PAREN@[833; 834) ")"
+    WHITESPACE@[834; 835) " "
+    BLOCK@[835; 1322)
+      L_CURLY@[835; 836) "{"
+      WHITESPACE@[836; 841) "\n    "
+      LOOP_EXPR@[841; 1320)
+        LOOP_KW@[841; 845) "loop"
+        WHITESPACE@[845; 846) " "
+        BLOCK@[846; 1320)
+          L_CURLY@[846; 847) "{"
+          WHITESPACE@[847; 856) "\n        "
+          EXPR_STMT@[856; 1283)
+            WHILE_EXPR@[856; 1283)
+              WHILE_KW@[856; 861) "while"
+              WHITESPACE@[861; 862) " "
+              CONDITION@[862; 870)
+                PAREN_EXPR@[862; 870)
+                  L_PAREN@[862; 863) "("
+                  RETURN_EXPR@[863; 869)
+                    RETURN_KW@[863; 869) "return"
+                  R_PAREN@[869; 870) ")"
+              WHITESPACE@[870; 871) " "
+              BLOCK@[871; 1283)
+                L_CURLY@[871; 872) "{"
+                WHITESPACE@[872; 885) "\n            "
+                IF_EXPR@[885; 1273)
+                  IF_KW@[885; 887) "if"
+                  WHITESPACE@[887; 888) " "
+                  CONDITION@[888; 896)
+                    PAREN_EXPR@[888; 896)
+                      L_PAREN@[888; 889) "("
+                      RETURN_EXPR@[889; 895)
+                        RETURN_KW@[889; 895) "return"
+                      R_PAREN@[895; 896) ")"
+                  WHITESPACE@[896; 897) " "
+                  BLOCK@[897; 1216)
+                    L_CURLY@[897; 898) "{"
+                    WHITESPACE@[898; 915) "\n                "
+                    EXPR_STMT@[915; 1202)
+                      MATCH_EXPR@[915; 1201)
+                        MATCH_KW@[915; 920) "match"
+                        WHITESPACE@[920; 921) " "
+                        PAREN_EXPR@[921; 929)
+                          L_PAREN@[921; 922) "("
+                          RETURN_EXPR@[922; 928)
+                            RETURN_KW@[922; 928) "return"
+                          R_PAREN@[928; 929) ")"
+                        WHITESPACE@[929; 930) " "
+                        MATCH_ARM_LIST@[930; 1201)
+                          L_CURLY@[930; 931) "{"
+                          WHITESPACE@[931; 952) "\n                    "
+                          MATCH_ARM@[952; 1147)
+                            LITERAL_PAT@[952; 953)
+                              LITERAL@[952; 953)
+                                INT_NUMBER@[952; 953) "1"
+                            WHITESPACE@[953; 954) " "
+                            FAT_ARROW@[954; 956) "=>"
+                            WHITESPACE@[956; 957) " "
+                            BLOCK_EXPR@[957; 1147)
+                              BLOCK@[957; 1147)
+                                L_CURLY@[957; 958) "{"
+                                WHITESPACE@[958; 983) "\n                     ..."
+                                IF_EXPR@[983; 1125)
+                                  IF_KW@[983; 985) "if"
+                                  WHITESPACE@[985; 986) " "
+                                  CONDITION@[986; 994)
+                                    PAREN_EXPR@[986; 994)
+                                      L_PAREN@[986; 987) "("
+                                      RETURN_EXPR@[987; 993)
+                                        RETURN_KW@[987; 993) "return"
+                                      R_PAREN@[993; 994) ")"
+                                  WHITESPACE@[994; 995) " "
+                                  BLOCK@[995; 1057)
+                                    L_CURLY@[995; 996) "{"
+                                    WHITESPACE@[996; 1025) "\n                     ..."
+                                    RETURN_EXPR@[1025; 1031)
+                                      RETURN_KW@[1025; 1031) "return"
+                                    WHITESPACE@[1031; 1056) "\n                     ..."
+                                    R_CURLY@[1056; 1057) "}"
+                                  WHITESPACE@[1057; 1058) " "
+                                  ELSE_KW@[1058; 1062) "else"
+                                  WHITESPACE@[1062; 1063) " "
+                                  BLOCK@[1063; 1125)
+                                    L_CURLY@[1063; 1064) "{"
+                                    WHITESPACE@[1064; 1093) "\n                     ..."
+                                    RETURN_EXPR@[1093; 1099)
+                                      RETURN_KW@[1093; 1099) "return"
+                                    WHITESPACE@[1099; 1124) "\n                     ..."
+                                    R_CURLY@[1124; 1125) "}"
+                                WHITESPACE@[1125; 1146) "\n                    "
+                                R_CURLY@[1146; 1147) "}"
+                          WHITESPACE@[1147; 1168) "\n                    "
+                          MATCH_ARM@[1168; 1183)
+                            PLACEHOLDER_PAT@[1168; 1169)
+                              UNDERSCORE@[1168; 1169) "_"
+                            WHITESPACE@[1169; 1170) " "
+                            FAT_ARROW@[1170; 1172) "=>"
+                            WHITESPACE@[1172; 1173) " "
+                            BLOCK_EXPR@[1173; 1183)
+                              BLOCK@[1173; 1183)
+                                L_CURLY@[1173; 1174) "{"
+                                WHITESPACE@[1174; 1175) " "
+                                RETURN_EXPR@[1175; 1181)
+                                  RETURN_KW@[1175; 1181) "return"
+                                WHITESPACE@[1181; 1182) " "
+                                R_CURLY@[1182; 1183) "}"
+                          WHITESPACE@[1183; 1200) "\n                "
+                          R_CURLY@[1200; 1201) "}"
+                      SEMI@[1201; 1202) ";"
+                    WHITESPACE@[1202; 1215) "\n            "
+                    R_CURLY@[1215; 1216) "}"
+                  WHITESPACE@[1216; 1217) " "
+                  ELSE_KW@[1217; 1221) "else"
+                  WHITESPACE@[1221; 1222) " "
+                  IF_EXPR@[1222; 1273)
+                    IF_KW@[1222; 1224) "if"
+                    WHITESPACE@[1224; 1225) " "
+                    CONDITION@[1225; 1233)
+                      PAREN_EXPR@[1225; 1233)
+                        L_PAREN@[1225; 1226) "("
+                        RETURN_EXPR@[1226; 1232)
+                          RETURN_KW@[1226; 1232) "return"
+                        R_PAREN@[1232; 1233) ")"
+                    WHITESPACE@[1233; 1234) " "
+                    BLOCK@[1234; 1273)
+                      L_CURLY@[1234; 1235) "{"
+                      WHITESPACE@[1235; 1252) "\n                "
+                      EXPR_STMT@[1252; 1259)
+                        RETURN_EXPR@[1252; 1258)
+                          RETURN_KW@[1252; 1258) "return"
+                        SEMI@[1258; 1259) ";"
+                      WHITESPACE@[1259; 1272) "\n            "
+                      R_CURLY@[1272; 1273) "}"
+                WHITESPACE@[1273; 1282) "\n        "
+                R_CURLY@[1282; 1283) "}"
+          WHITESPACE@[1283; 1292) "\n        "
+          IF_EXPR@[1292; 1314)
+            IF_KW@[1292; 1294) "if"
+            WHITESPACE@[1294; 1295) " "
+            CONDITION@[1295; 1303)
+              PAREN_EXPR@[1295; 1303)
+                L_PAREN@[1295; 1296) "("
+                RETURN_EXPR@[1296; 1302)
+                  RETURN_KW@[1296; 1302) "return"
+                R_PAREN@[1302; 1303) ")"
+            WHITESPACE@[1303; 1304) " "
+            BLOCK@[1304; 1314)
+              L_CURLY@[1304; 1305) "{"
+              WHITESPACE@[1305; 1306) " "
+              EXPR_STMT@[1306; 1312)
+                BREAK_EXPR@[1306; 1311)
+                  BREAK_KW@[1306; 1311) "break"
+                SEMI@[1311; 1312) ";"
+              WHITESPACE@[1312; 1313) " "
+              R_CURLY@[1313; 1314) "}"
+          WHITESPACE@[1314; 1319) "\n    "
+          R_CURLY@[1319; 1320) "}"
+      WHITESPACE@[1320; 1321) "\n"
+      R_CURLY@[1321; 1322) "}"
+  WHITESPACE@[1322; 1324) "\n\n"
+  FN_DEF@[1324; 1539)
+    FN_KW@[1324; 1326) "fn"
+    WHITESPACE@[1326; 1327) " "
+    NAME@[1327; 1334)
+      IDENT@[1327; 1334) "notsure"
+    PARAM_LIST@[1334; 1336)
+      L_PAREN@[1334; 1335) "("
+      R_PAREN@[1335; 1336) ")"
+    WHITESPACE@[1336; 1337) " "
+    BLOCK@[1337; 1539)
+      L_CURLY@[1337; 1338) "{"
+      WHITESPACE@[1338; 1343) "\n    "
+      LET_STMT@[1343; 1361)
+        LET_KW@[1343; 1346) "let"
+        WHITESPACE@[1346; 1347) " "
+        BIND_PAT@[1347; 1353)
+          MUT_KW@[1347; 1350) "mut"
+          WHITESPACE@[1350; 1351) " "
+          NAME@[1351; 1353)
+            IDENT@[1351; 1353) "_x"
+        COLON@[1353; 1354) ":"
+        WHITESPACE@[1354; 1355) " "
+        PATH_TYPE@[1355; 1360)
+          PATH@[1355; 1360)
+            PATH_SEGMENT@[1355; 1360)
+              NAME_REF@[1355; 1360)
+                IDENT@[1355; 1360) "isize"
+        SEMI@[1360; 1361) ";"
+      WHITESPACE@[1361; 1366) "\n    "
+      LET_STMT@[1366; 1400)
+        LET_KW@[1366; 1369) "let"
+        WHITESPACE@[1369; 1370) " "
+        BIND_PAT@[1370; 1376)
+          MUT_KW@[1370; 1373) "mut"
+          WHITESPACE@[1373; 1374) " "
+          NAME@[1374; 1376)
+            IDENT@[1374; 1376) "_y"
+        WHITESPACE@[1376; 1377) " "
+        EQ@[1377; 1378) "="
+        WHITESPACE@[1378; 1379) " "
+        BIN_EXPR@[1379; 1399)
+          PAREN_EXPR@[1379; 1387)
+            L_PAREN@[1379; 1380) "("
+            BIN_EXPR@[1380; 1386)
+              PATH_EXPR@[1380; 1382)
+                PATH@[1380; 1382)
+                  PATH_SEGMENT@[1380; 1382)
+                    NAME_REF@[1380; 1382)
+                      IDENT@[1380; 1382) "_x"
+              WHITESPACE@[1382; 1383) " "
+              EQ@[1383; 1384) "="
+              WHITESPACE@[1384; 1385) " "
+              LITERAL@[1385; 1386)
+                INT_NUMBER@[1385; 1386) "0"
+            R_PAREN@[1386; 1387) ")"
+          WHITESPACE@[1387; 1388) " "
+          EQEQ@[1388; 1390) "=="
+          WHITESPACE@[1390; 1391) " "
+          PAREN_EXPR@[1391; 1399)
+            L_PAREN@[1391; 1392) "("
+            BIN_EXPR@[1392; 1398)
+              PATH_EXPR@[1392; 1394)
+                PATH@[1392; 1394)
+                  PATH_SEGMENT@[1392; 1394)
+                    NAME_REF@[1392; 1394)
+                      IDENT@[1392; 1394) "_x"
+              WHITESPACE@[1394; 1395) " "
+              EQ@[1395; 1396) "="
+              WHITESPACE@[1396; 1397) " "
+              LITERAL@[1397; 1398)
+                INT_NUMBER@[1397; 1398) "0"
+            R_PAREN@[1398; 1399) ")"
+        SEMI@[1399; 1400) ";"
+      WHITESPACE@[1400; 1405) "\n    "
+      LET_STMT@[1405; 1438)
+        LET_KW@[1405; 1408) "let"
+        WHITESPACE@[1408; 1409) " "
+        BIND_PAT@[1409; 1415)
+          MUT_KW@[1409; 1412) "mut"
+          WHITESPACE@[1412; 1413) " "
+          NAME@[1413; 1415)
+            IDENT@[1413; 1415) "_z"
+        WHITESPACE@[1415; 1416) " "
+        EQ@[1416; 1417) "="
+        WHITESPACE@[1417; 1418) " "
+        BIN_EXPR@[1418; 1437)
+          PAREN_EXPR@[1418; 1426)
+            L_PAREN@[1418; 1419) "("
+            BIN_EXPR@[1419; 1425)
+              PATH_EXPR@[1419; 1421)
+                PATH@[1419; 1421)
+                  PATH_SEGMENT@[1419; 1421)
+                    NAME_REF@[1419; 1421)
+                      IDENT@[1419; 1421) "_x"
+              WHITESPACE@[1421; 1422) " "
+              EQ@[1422; 1423) "="
+              WHITESPACE@[1423; 1424) " "
+              LITERAL@[1424; 1425)
+                INT_NUMBER@[1424; 1425) "0"
+            R_PAREN@[1425; 1426) ")"
+          WHITESPACE@[1426; 1427) " "
+          L_ANGLE@[1427; 1428) "<"
+          WHITESPACE@[1428; 1429) " "
+          PAREN_EXPR@[1429; 1437)
+            L_PAREN@[1429; 1430) "("
+            BIN_EXPR@[1430; 1436)
+              PATH_EXPR@[1430; 1432)
+                PATH@[1430; 1432)
+                  PATH_SEGMENT@[1430; 1432)
+                    NAME_REF@[1430; 1432)
+                      IDENT@[1430; 1432) "_x"
+              WHITESPACE@[1432; 1433) " "
+              EQ@[1433; 1434) "="
+              WHITESPACE@[1434; 1435) " "
+              LITERAL@[1435; 1436)
+                INT_NUMBER@[1435; 1436) "0"
+            R_PAREN@[1436; 1437) ")"
+        SEMI@[1437; 1438) ";"
+      WHITESPACE@[1438; 1443) "\n    "
+      LET_STMT@[1443; 1474)
+        LET_KW@[1443; 1446) "let"
+        WHITESPACE@[1446; 1447) " "
+        BIND_PAT@[1447; 1449)
+          NAME@[1447; 1449)
+            IDENT@[1447; 1449) "_a"
+        WHITESPACE@[1449; 1450) " "
+        EQ@[1450; 1451) "="
+        WHITESPACE@[1451; 1452) " "
+        BIN_EXPR@[1452; 1473)
+          PAREN_EXPR@[1452; 1461)
+            L_PAREN@[1452; 1453) "("
+            BIN_EXPR@[1453; 1460)
+              PATH_EXPR@[1453; 1455)
+                PATH@[1453; 1455)
+                  PATH_SEGMENT@[1453; 1455)
+                    NAME_REF@[1453; 1455)
+                      IDENT@[1453; 1455) "_x"
+              WHITESPACE@[1455; 1456) " "
+              PLUSEQ@[1456; 1458) "+="
+              WHITESPACE@[1458; 1459) " "
+              LITERAL@[1459; 1460)
+                INT_NUMBER@[1459; 1460) "0"
+            R_PAREN@[1460; 1461) ")"
+          WHITESPACE@[1461; 1462) " "
+          EQEQ@[1462; 1464) "=="
+          WHITESPACE@[1464; 1465) " "
+          PAREN_EXPR@[1465; 1473)
+            L_PAREN@[1465; 1466) "("
+            BIN_EXPR@[1466; 1472)
+              PATH_EXPR@[1466; 1468)
+                PATH@[1466; 1468)
+                  PATH_SEGMENT@[1466; 1468)
+                    NAME_REF@[1466; 1468)
+                      IDENT@[1466; 1468) "_x"
+              WHITESPACE@[1468; 1469) " "
+              EQ@[1469; 1470) "="
+              WHITESPACE@[1470; 1471) " "
+              LITERAL@[1471; 1472)
+                INT_NUMBER@[1471; 1472) "0"
+            R_PAREN@[1472; 1473) ")"
+        SEMI@[1473; 1474) ";"
+      WHITESPACE@[1474; 1479) "\n    "
+      LET_STMT@[1479; 1537)
+        LET_KW@[1479; 1482) "let"
+        WHITESPACE@[1482; 1483) " "
+        BIND_PAT@[1483; 1485)
+          NAME@[1483; 1485)
+            IDENT@[1483; 1485) "_b"
+        WHITESPACE@[1485; 1486) " "
+        EQ@[1486; 1487) "="
+        WHITESPACE@[1487; 1488) " "
+        BIN_EXPR@[1488; 1536)
+          CALL_EXPR@[1488; 1510)
+            PATH_EXPR@[1488; 1492)
+              PATH@[1488; 1492)
+                PATH_SEGMENT@[1488; 1492)
+                  NAME_REF@[1488; 1492)
+                    IDENT@[1488; 1492) "swap"
+            ARG_LIST@[1492; 1510)
+              L_PAREN@[1492; 1493) "("
+              REF_EXPR@[1493; 1500)
+                AMP@[1493; 1494) "&"
+                MUT_KW@[1494; 1497) "mut"
+                WHITESPACE@[1497; 1498) " "
+                PATH_EXPR@[1498; 1500)
+                  PATH@[1498; 1500)
+                    PATH_SEGMENT@[1498; 1500)
+                      NAME_REF@[1498; 1500)
+                        IDENT@[1498; 1500) "_y"
+              COMMA@[1500; 1501) ","
+              WHITESPACE@[1501; 1502) " "
+              REF_EXPR@[1502; 1509)
+                AMP@[1502; 1503) "&"
+                MUT_KW@[1503; 1506) "mut"
+                WHITESPACE@[1506; 1507) " "
+                PATH_EXPR@[1507; 1509)
+                  PATH@[1507; 1509)
+                    PATH_SEGMENT@[1507; 1509)
+                      NAME_REF@[1507; 1509)
+                        IDENT@[1507; 1509) "_z"
+              R_PAREN@[1509; 1510) ")"
+          WHITESPACE@[1510; 1511) " "
+          EQEQ@[1511; 1513) "=="
+          WHITESPACE@[1513; 1514) " "
+          CALL_EXPR@[1514; 1536)
+            PATH_EXPR@[1514; 1518)
+              PATH@[1514; 1518)
+                PATH_SEGMENT@[1514; 1518)
+                  NAME_REF@[1514; 1518)
+                    IDENT@[1514; 1518) "swap"
+            ARG_LIST@[1518; 1536)
+              L_PAREN@[1518; 1519) "("
+              REF_EXPR@[1519; 1526)
+                AMP@[1519; 1520) "&"
+                MUT_KW@[1520; 1523) "mut"
+                WHITESPACE@[1523; 1524) " "
+                PATH_EXPR@[1524; 1526)
+                  PATH@[1524; 1526)
+                    PATH_SEGMENT@[1524; 1526)
+                      NAME_REF@[1524; 1526)
+                        IDENT@[1524; 1526) "_y"
+              COMMA@[1526; 1527) ","
+              WHITESPACE@[1527; 1528) " "
+              REF_EXPR@[1528; 1535)
+                AMP@[1528; 1529) "&"
+                MUT_KW@[1529; 1532) "mut"
+                WHITESPACE@[1532; 1533) " "
+                PATH_EXPR@[1533; 1535)
+                  PATH@[1533; 1535)
+                    PATH_SEGMENT@[1533; 1535)
+                      NAME_REF@[1533; 1535)
+                        IDENT@[1533; 1535) "_z"
+              R_PAREN@[1535; 1536) ")"
+        SEMI@[1536; 1537) ";"
+      WHITESPACE@[1537; 1538) "\n"
+      R_CURLY@[1538; 1539) "}"
+  WHITESPACE@[1539; 1541) "\n\n"
+  FN_DEF@[1541; 1741)
+    FN_KW@[1541; 1543) "fn"
+    WHITESPACE@[1543; 1544) " "
+    NAME@[1544; 1557)
+      IDENT@[1544; 1557) "canttouchthis"
+    PARAM_LIST@[1557; 1559)
+      L_PAREN@[1557; 1558) "("
+      R_PAREN@[1558; 1559) ")"
+    WHITESPACE@[1559; 1560) " "
+    RET_TYPE@[1560; 1568)
+      THIN_ARROW@[1560; 1562) "->"
+      WHITESPACE@[1562; 1563) " "
+      PATH_TYPE@[1563; 1568)
+        PATH@[1563; 1568)
+          PATH_SEGMENT@[1563; 1568)
+            NAME_REF@[1563; 1568)
+              IDENT@[1563; 1568) "usize"
+    WHITESPACE@[1568; 1569) " "
+    BLOCK@[1569; 1741)
+      L_CURLY@[1569; 1570) "{"
+      WHITESPACE@[1570; 1575) "\n    "
+      FN_DEF@[1575; 1598)
+        FN_KW@[1575; 1577) "fn"
+        WHITESPACE@[1577; 1578) " "
+        NAME@[1578; 1579)
+          IDENT@[1578; 1579) "p"
+        PARAM_LIST@[1579; 1581)
+          L_PAREN@[1579; 1580) "("
+          R_PAREN@[1580; 1581) ")"
+        WHITESPACE@[1581; 1582) " "
+        RET_TYPE@[1582; 1589)
+          THIN_ARROW@[1582; 1584) "->"
+          WHITESPACE@[1584; 1585) " "
+          PATH_TYPE@[1585; 1589)
+            PATH@[1585; 1589)
+              PATH_SEGMENT@[1585; 1589)
+                NAME_REF@[1585; 1589)
+                  IDENT@[1585; 1589) "bool"
+        WHITESPACE@[1589; 1590) " "
+        BLOCK@[1590; 1598)
+          L_CURLY@[1590; 1591) "{"
+          WHITESPACE@[1591; 1592) " "
+          LITERAL@[1592; 1596)
+            TRUE_KW@[1592; 1596) "true"
+          WHITESPACE@[1596; 1597) " "
+          R_CURLY@[1597; 1598) "}"
+      WHITESPACE@[1598; 1603) "\n    "
+      LET_STMT@[1603; 1648)
+        LET_KW@[1603; 1606) "let"
+        WHITESPACE@[1606; 1607) " "
+        BIND_PAT@[1607; 1609)
+          NAME@[1607; 1609)
+            IDENT@[1607; 1609) "_a"
+        WHITESPACE@[1609; 1610) " "
+        EQ@[1610; 1611) "="
+        WHITESPACE@[1611; 1612) " "
+        PAREN_EXPR@[1612; 1647)
+          L_PAREN@[1612; 1613) "("
+          BIN_EXPR@[1613; 1646)
+            MACRO_CALL@[1613; 1628)
+              PATH@[1613; 1619)
+                PATH_SEGMENT@[1613; 1619)
+                  NAME_REF@[1613; 1619)
+                    IDENT@[1613; 1619) "assert"
+              EXCL@[1619; 1620) "!"
+              TOKEN_TREE@[1620; 1628)
+                L_PAREN@[1620; 1621) "("
+                TOKEN_TREE@[1621; 1627)
+                  L_PAREN@[1621; 1622) "("
+                  TRUE_KW@[1622; 1626) "true"
+                  R_PAREN@[1626; 1627) ")"
+                R_PAREN@[1627; 1628) ")"
+            WHITESPACE@[1628; 1629) " "
+            EQEQ@[1629; 1631) "=="
+            WHITESPACE@[1631; 1632) " "
+            PAREN_EXPR@[1632; 1646)
+              L_PAREN@[1632; 1633) "("
+              MACRO_CALL@[1633; 1645)
+                PATH@[1633; 1639)
+                  PATH_SEGMENT@[1633; 1639)
+                    NAME_REF@[1633; 1639)
+                      IDENT@[1633; 1639) "assert"
+                EXCL@[1639; 1640) "!"
+                TOKEN_TREE@[1640; 1645)
+                  L_PAREN@[1640; 1641) "("
+                  IDENT@[1641; 1642) "p"
+                  TOKEN_TREE@[1642; 1644)
+                    L_PAREN@[1642; 1643) "("
+                    R_PAREN@[1643; 1644) ")"
+                  R_PAREN@[1644; 1645) ")"
+              R_PAREN@[1645; 1646) ")"
+          R_PAREN@[1646; 1647) ")"
+        SEMI@[1647; 1648) ";"
+      WHITESPACE@[1648; 1653) "\n    "
+      LET_STMT@[1653; 1685)
+        LET_KW@[1653; 1656) "let"
+        WHITESPACE@[1656; 1657) " "
+        BIND_PAT@[1657; 1659)
+          NAME@[1657; 1659)
+            IDENT@[1657; 1659) "_c"
+        WHITESPACE@[1659; 1660) " "
+        EQ@[1660; 1661) "="
+        WHITESPACE@[1661; 1662) " "
+        PAREN_EXPR@[1662; 1684)
+          L_PAREN@[1662; 1663) "("
+          BIN_EXPR@[1663; 1683)
+            MACRO_CALL@[1663; 1677)
+              PATH@[1663; 1669)
+                PATH_SEGMENT@[1663; 1669)
+                  NAME_REF@[1663; 1669)
+                    IDENT@[1663; 1669) "assert"
+              EXCL@[1669; 1670) "!"
+              TOKEN_TREE@[1670; 1677)
+                L_PAREN@[1670; 1671) "("
+                TOKEN_TREE@[1671; 1676)
+                  L_PAREN@[1671; 1672) "("
+                  IDENT@[1672; 1673) "p"
+                  TOKEN_TREE@[1673; 1675)
+                    L_PAREN@[1673; 1674) "("
+                    R_PAREN@[1674; 1675) ")"
+                  R_PAREN@[1675; 1676) ")"
+                R_PAREN@[1676; 1677) ")"
+            WHITESPACE@[1677; 1678) " "
+            EQEQ@[1678; 1680) "=="
+            WHITESPACE@[1680; 1681) " "
+            TUPLE_EXPR@[1681; 1683)
+              L_PAREN@[1681; 1682) "("
+              R_PAREN@[1682; 1683) ")"
+          R_PAREN@[1683; 1684) ")"
+        SEMI@[1684; 1685) ";"
+      WHITESPACE@[1685; 1690) "\n    "
+      LET_STMT@[1690; 1739)
+        LET_KW@[1690; 1693) "let"
+        WHITESPACE@[1693; 1694) " "
+        BIND_PAT@[1694; 1696)
+          NAME@[1694; 1696)
+            IDENT@[1694; 1696) "_b"
+        COLON@[1696; 1697) ":"
+        WHITESPACE@[1697; 1698) " "
+        PATH_TYPE@[1698; 1702)
+          PATH@[1698; 1702)
+            PATH_SEGMENT@[1698; 1702)
+              NAME_REF@[1698; 1702)
+                IDENT@[1698; 1702) "bool"
+        WHITESPACE@[1702; 1703) " "
+        EQ@[1703; 1704) "="
+        WHITESPACE@[1704; 1705) " "
+        PAREN_EXPR@[1705; 1738)
+          L_PAREN@[1705; 1706) "("
+          BIN_EXPR@[1706; 1737)
+            MACRO_CALL@[1706; 1723)
+              PATH@[1706; 1713)
+                PATH_SEGMENT@[1706; 1713)
+                  NAME_REF@[1706; 1713)
+                    IDENT@[1706; 1713) "println"
+              EXCL@[1713; 1714) "!"
+              TOKEN_TREE@[1714; 1723)
+                L_PAREN@[1714; 1715) "("
+                STRING@[1715; 1719) "\"{}\""
+                COMMA@[1719; 1720) ","
+                WHITESPACE@[1720; 1721) " "
+                INT_NUMBER@[1721; 1722) "0"
+                R_PAREN@[1722; 1723) ")"
+            WHITESPACE@[1723; 1724) " "
+            EQEQ@[1724; 1726) "=="
+            WHITESPACE@[1726; 1727) " "
+            PAREN_EXPR@[1727; 1737)
+              L_PAREN@[1727; 1728) "("
+              RETURN_EXPR@[1728; 1736)
+                RETURN_KW@[1728; 1734) "return"
+                WHITESPACE@[1734; 1735) " "
+                LITERAL@[1735; 1736)
+                  INT_NUMBER@[1735; 1736) "0"
+              R_PAREN@[1736; 1737) ")"
+          R_PAREN@[1737; 1738) ")"
+        SEMI@[1738; 1739) ";"
+      WHITESPACE@[1739; 1740) "\n"
+      R_CURLY@[1740; 1741) "}"
+  WHITESPACE@[1741; 1743) "\n\n"
+  FN_DEF@[1743; 1904)
+    FN_KW@[1743; 1745) "fn"
+    WHITESPACE@[1745; 1746) " "
+    NAME@[1746; 1755)
+      IDENT@[1746; 1755) "angrydome"
+    PARAM_LIST@[1755; 1757)
+      L_PAREN@[1755; 1756) "("
+      R_PAREN@[1756; 1757) ")"
+    WHITESPACE@[1757; 1758) " "
+    BLOCK@[1758; 1904)
+      L_CURLY@[1758; 1759) "{"
+      WHITESPACE@[1759; 1764) "\n    "
+      EXPR_STMT@[1764; 1785)
+        LOOP_EXPR@[1764; 1785)
+          LOOP_KW@[1764; 1768) "loop"
+          WHITESPACE@[1768; 1769) " "
+          BLOCK@[1769; 1785)
+            L_CURLY@[1769; 1770) "{"
+            WHITESPACE@[1770; 1771) " "
+            IF_EXPR@[1771; 1783)
+              IF_KW@[1771; 1773) "if"
+              WHITESPACE@[1773; 1774) " "
+              CONDITION@[1774; 1779)
+                BREAK_EXPR@[1774; 1779)
+                  BREAK_KW@[1774; 1779) "break"
+              WHITESPACE@[1779; 1780) " "
+              BLOCK@[1780; 1783)
+                L_CURLY@[1780; 1781) "{"
+                WHITESPACE@[1781; 1782) " "
+                R_CURLY@[1782; 1783) "}"
+            WHITESPACE@[1783; 1784) " "
+            R_CURLY@[1784; 1785) "}"
+      WHITESPACE@[1785; 1790) "\n    "
+      LET_STMT@[1790; 1804)
+        LET_KW@[1790; 1793) "let"
+        WHITESPACE@[1793; 1794) " "
+        BIND_PAT@[1794; 1799)
+          MUT_KW@[1794; 1797) "mut"
+          WHITESPACE@[1797; 1798) " "
+          NAME@[1798; 1799)
+            IDENT@[1798; 1799) "i"
+        WHITESPACE@[1799; 1800) " "
+        EQ@[1800; 1801) "="
+        WHITESPACE@[1801; 1802) " "
+        LITERAL@[1802; 1803)
+          INT_NUMBER@[1802; 1803) "0"
+        SEMI@[1803; 1804) ";"
+      WHITESPACE@[1804; 1809) "\n    "
+      LOOP_EXPR@[1809; 1902)
+        LOOP_KW@[1809; 1813) "loop"
+        WHITESPACE@[1813; 1814) " "
+        BLOCK@[1814; 1902)
+          L_CURLY@[1814; 1815) "{"
+          WHITESPACE@[1815; 1816) " "
+          EXPR_STMT@[1816; 1823)
+            BIN_EXPR@[1816; 1822)
+              PATH_EXPR@[1816; 1817)
+                PATH@[1816; 1817)
+                  PATH_SEGMENT@[1816; 1817)
+                    NAME_REF@[1816; 1817)
+                      IDENT@[1816; 1817) "i"
+              WHITESPACE@[1817; 1818) " "
+              PLUSEQ@[1818; 1820) "+="
+              WHITESPACE@[1820; 1821) " "
+              LITERAL@[1821; 1822)
+                INT_NUMBER@[1821; 1822) "1"
+            SEMI@[1822; 1823) ";"
+          WHITESPACE@[1823; 1824) " "
+          EXPR_STMT@[1824; 1887)
+            IF_EXPR@[1824; 1887)
+              IF_KW@[1824; 1826) "if"
+              WHITESPACE@[1826; 1827) " "
+              CONDITION@[1827; 1833)
+                BIN_EXPR@[1827; 1833)
+                  PATH_EXPR@[1827; 1828)
+                    PATH@[1827; 1828)
+                      PATH_SEGMENT@[1827; 1828)
+                        NAME_REF@[1827; 1828)
+                          IDENT@[1827; 1828) "i"
+                  WHITESPACE@[1828; 1829) " "
+                  EQEQ@[1829; 1831) "=="
+                  WHITESPACE@[1831; 1832) " "
+                  LITERAL@[1832; 1833)
+                    INT_NUMBER@[1832; 1833) "1"
+              WHITESPACE@[1833; 1834) " "
+              BLOCK@[1834; 1887)
+                L_CURLY@[1834; 1835) "{"
+                WHITESPACE@[1835; 1836) " "
+                MATCH_EXPR@[1836; 1885)
+                  MATCH_KW@[1836; 1841) "match"
+                  WHITESPACE@[1841; 1842) " "
+                  PAREN_EXPR@[1842; 1852)
+                    L_PAREN@[1842; 1843) "("
+                    CONTINUE_EXPR@[1843; 1851)
+                      CONTINUE_KW@[1843; 1851) "continue"
+                    R_PAREN@[1851; 1852) ")"
+                  WHITESPACE@[1852; 1853) " "
+                  MATCH_ARM_LIST@[1853; 1885)
+                    L_CURLY@[1853; 1854) "{"
+                    WHITESPACE@[1854; 1855) " "
+                    MATCH_ARM@[1855; 1863)
+                      LITERAL_PAT@[1855; 1856)
+                        LITERAL@[1855; 1856)
+                          INT_NUMBER@[1855; 1856) "1"
+                      WHITESPACE@[1856; 1857) " "
+                      FAT_ARROW@[1857; 1859) "=>"
+                      WHITESPACE@[1859; 1860) " "
+                      BLOCK_EXPR@[1860; 1863)
+                        BLOCK@[1860; 1863)
+                          L_CURLY@[1860; 1861) "{"
+                          WHITESPACE@[1861; 1862) " "
+                          R_CURLY@[1862; 1863) "}"
+                    COMMA@[1863; 1864) ","
+                    WHITESPACE@[1864; 1865) " "
+                    MATCH_ARM@[1865; 1883)
+                      PLACEHOLDER_PAT@[1865; 1866)
+                        UNDERSCORE@[1865; 1866) "_"
+                      WHITESPACE@[1866; 1867) " "
+                      FAT_ARROW@[1867; 1869) "=>"
+                      WHITESPACE@[1869; 1870) " "
+                      MACRO_CALL@[1870; 1883)
+                        PATH@[1870; 1875)
+                          PATH_SEGMENT@[1870; 1875)
+                            NAME_REF@[1870; 1875)
+                              IDENT@[1870; 1875) "panic"
+                        EXCL@[1875; 1876) "!"
+                        TOKEN_TREE@[1876; 1883)
+                          L_PAREN@[1876; 1877) "("
+                          STRING@[1877; 1882) "\"wat\""
+                          R_PAREN@[1882; 1883) ")"
+                    WHITESPACE@[1883; 1884) " "
+                    R_CURLY@[1884; 1885) "}"
+                WHITESPACE@[1885; 1886) " "
+                R_CURLY@[1886; 1887) "}"
+          WHITESPACE@[1887; 1894) "\n      "
+          EXPR_STMT@[1894; 1900)
+            BREAK_EXPR@[1894; 1899)
+              BREAK_KW@[1894; 1899) "break"
+            SEMI@[1899; 1900) ";"
+          WHITESPACE@[1900; 1901) " "
+          R_CURLY@[1901; 1902) "}"
+      WHITESPACE@[1902; 1903) "\n"
+      R_CURLY@[1903; 1904) "}"
+  WHITESPACE@[1904; 1906) "\n\n"
+  FN_DEF@[1906; 1960)
+    FN_KW@[1906; 1908) "fn"
+    WHITESPACE@[1908; 1909) " "
+    NAME@[1909; 1921)
+      IDENT@[1909; 1921) "evil_lincoln"
+    PARAM_LIST@[1921; 1923)
+      L_PAREN@[1921; 1922) "("
+      R_PAREN@[1922; 1923) ")"
+    WHITESPACE@[1923; 1924) " "
+    BLOCK@[1924; 1960)
+      L_CURLY@[1924; 1925) "{"
+      WHITESPACE@[1925; 1926) " "
+      LET_STMT@[1926; 1958)
+        LET_KW@[1926; 1929) "let"
+        WHITESPACE@[1929; 1930) " "
+        BIND_PAT@[1930; 1935)
+          NAME@[1930; 1935)
+            IDENT@[1930; 1935) "_evil"
+        WHITESPACE@[1935; 1936) " "
+        EQ@[1936; 1937) "="
+        WHITESPACE@[1937; 1938) " "
+        MACRO_CALL@[1938; 1957)
+          PATH@[1938; 1945)
+            PATH_SEGMENT@[1938; 1945)
+              NAME_REF@[1938; 1945)
+                IDENT@[1938; 1945) "println"
+          EXCL@[1945; 1946) "!"
+          TOKEN_TREE@[1946; 1957)
+            L_PAREN@[1946; 1947) "("
+            STRING@[1947; 1956) "\"lincoln\""
+            R_PAREN@[1956; 1957) ")"
+        SEMI@[1957; 1958) ";"
+      WHITESPACE@[1958; 1959) " "
+      R_CURLY@[1959; 1960) "}"
+  WHITESPACE@[1960; 1962) "\n\n"
+  FN_DEF@[1962; 2198)
+    FN_KW@[1962; 1964) "fn"
+    WHITESPACE@[1964; 1965) " "
+    NAME@[1965; 1969)
+      IDENT@[1965; 1969) "dots"
+    PARAM_LIST@[1969; 1971)
+      L_PAREN@[1969; 1970) "("
+      R_PAREN@[1970; 1971) ")"
+    WHITESPACE@[1971; 1972) " "
+    BLOCK@[1972; 2198)
+      L_CURLY@[1972; 1973) "{"
+      WHITESPACE@[1973; 1978) "\n    "
+      EXPR_STMT@[1978; 2196)
+        MACRO_CALL@[1978; 2195)
+          PATH@[1978; 1987)
+            PATH_SEGMENT@[1978; 1987)
+              NAME_REF@[1978; 1987)
+                IDENT@[1978; 1987) "assert_eq"
+          EXCL@[1987; 1988) "!"
+          TOKEN_TREE@[1988; 2195)
+            L_PAREN@[1988; 1989) "("
+            IDENT@[1989; 1995) "String"
+            COLON@[1995; 1996) ":"
+            COLON@[1996; 1997) ":"
+            IDENT@[1997; 2001) "from"
+            TOKEN_TREE@[2001; 2055)
+              L_PAREN@[2001; 2002) "("
+              STRING@[2002; 2054) "\".................... ..."
+              R_PAREN@[2054; 2055) ")"
+            COMMA@[2055; 2056) ","
+            WHITESPACE@[2056; 2072) "\n               "
+            IDENT@[2072; 2078) "format"
+            EXCL@[2078; 2079) "!"
+            TOKEN_TREE@[2079; 2194)
+              L_PAREN@[2079; 2080) "("
+              STRING@[2080; 2086) "\"{:?}\""
+              COMMA@[2086; 2087) ","
+              WHITESPACE@[2087; 2088) " "
+              DOT@[2088; 2089) "."
+              DOT@[2089; 2090) "."
+              WHITESPACE@[2090; 2091) " "
+              DOT@[2091; 2092) "."
+              DOT@[2092; 2093) "."
+              WHITESPACE@[2093; 2094) " "
+              DOT@[2094; 2095) "."
+              DOT@[2095; 2096) "."
+              WHITESPACE@[2096; 2097) " "
+              DOT@[2097; 2098) "."
+              DOT@[2098; 2099) "."
+              WHITESPACE@[2099; 2100) " "
+              DOT@[2100; 2101) "."
+              DOT@[2101; 2102) "."
+              WHITESPACE@[2102; 2103) " "
+              DOT@[2103; 2104) "."
+              DOT@[2104; 2105) "."
+              WHITESPACE@[2105; 2106) " "
+              DOT@[2106; 2107) "."
+              DOT@[2107; 2108) "."
+              WHITESPACE@[2108; 2109) " "
+              DOT@[2109; 2110) "."
+              DOT@[2110; 2111) "."
+              WHITESPACE@[2111; 2112) " "
+              DOT@[2112; 2113) "."
+              DOT@[2113; 2114) "."
+              WHITESPACE@[2114; 2115) " "
+              DOT@[2115; 2116) "."
+              DOT@[2116; 2117) "."
+              WHITESPACE@[2117; 2118) " "
+              DOT@[2118; 2119) "."
+              DOT@[2119; 2120) "."
+              WHITESPACE@[2120; 2121) " "
+              DOT@[2121; 2122) "."
+              DOT@[2122; 2123) "."
+              WHITESPACE@[2123; 2124) " "
+              DOT@[2124; 2125) "."
+              DOT@[2125; 2126) "."
+              WHITESPACE@[2126; 2158) "\n                     ..."
+              DOT@[2158; 2159) "."
+              DOT@[2159; 2160) "."
+              WHITESPACE@[2160; 2161) " "
+              DOT@[2161; 2162) "."
+              DOT@[2162; 2163) "."
+              WHITESPACE@[2163; 2164) " "
+              DOT@[2164; 2165) "."
+              DOT@[2165; 2166) "."
+              WHITESPACE@[2166; 2167) " "
+              DOT@[2167; 2168) "."
+              DOT@[2168; 2169) "."
+              WHITESPACE@[2169; 2170) " "
+              DOT@[2170; 2171) "."
+              DOT@[2171; 2172) "."
+              WHITESPACE@[2172; 2173) " "
+              DOT@[2173; 2174) "."
+              DOT@[2174; 2175) "."
+              WHITESPACE@[2175; 2176) " "
+              DOT@[2176; 2177) "."
+              DOT@[2177; 2178) "."
+              WHITESPACE@[2178; 2179) " "
+              DOT@[2179; 2180) "."
+              DOT@[2180; 2181) "."
+              WHITESPACE@[2181; 2182) " "
+              DOT@[2182; 2183) "."
+              DOT@[2183; 2184) "."
+              WHITESPACE@[2184; 2185) " "
+              DOT@[2185; 2186) "."
+              DOT@[2186; 2187) "."
+              WHITESPACE@[2187; 2188) " "
+              DOT@[2188; 2189) "."
+              DOT@[2189; 2190) "."
+              WHITESPACE@[2190; 2191) " "
+              DOT@[2191; 2192) "."
+              DOT@[2192; 2193) "."
+              R_PAREN@[2193; 2194) ")"
+            R_PAREN@[2194; 2195) ")"
+        SEMI@[2195; 2196) ";"
+      WHITESPACE@[2196; 2197) "\n"
+      R_CURLY@[2197; 2198) "}"
+  WHITESPACE@[2198; 2200) "\n\n"
+  FN_DEF@[2200; 2693)
+    FN_KW@[2200; 2202) "fn"
+    WHITESPACE@[2202; 2203) " "
+    NAME@[2203; 2205)
+      IDENT@[2203; 2205) "u8"
+    PARAM_LIST@[2205; 2213)
+      L_PAREN@[2205; 2206) "("
+      PARAM@[2206; 2212)
+        BIND_PAT@[2206; 2208)
+          NAME@[2206; 2208)
+            IDENT@[2206; 2208) "u8"
+        COLON@[2208; 2209) ":"
+        WHITESPACE@[2209; 2210) " "
+        PATH_TYPE@[2210; 2212)
+          PATH@[2210; 2212)
+            PATH_SEGMENT@[2210; 2212)
+              NAME_REF@[2210; 2212)
+                IDENT@[2210; 2212) "u8"
+      R_PAREN@[2212; 2213) ")"
+    WHITESPACE@[2213; 2214) " "
+    BLOCK@[2214; 2693)
+      L_CURLY@[2214; 2215) "{"
+      WHITESPACE@[2215; 2220) "\n    "
+      IF_EXPR@[2220; 2691)
+        IF_KW@[2220; 2222) "if"
+        WHITESPACE@[2222; 2223) " "
+        CONDITION@[2223; 2232)
+          BIN_EXPR@[2223; 2232)
+            PATH_EXPR@[2223; 2225)
+              PATH@[2223; 2225)
+                PATH_SEGMENT@[2223; 2225)
+                  NAME_REF@[2223; 2225)
+                    IDENT@[2223; 2225) "u8"
+            WHITESPACE@[2225; 2226) " "
+            NEQ@[2226; 2228) "!="
+            WHITESPACE@[2228; 2229) " "
+            LITERAL@[2229; 2232)
+              INT_NUMBER@[2229; 2232) "0u8"
+        WHITESPACE@[2232; 2233) " "
+        BLOCK@[2233; 2691)
+          L_CURLY@[2233; 2234) "{"
+          WHITESPACE@[2234; 2243) "\n        "
+          EXPR_STMT@[2243; 2685)
+            MACRO_CALL@[2243; 2684)
+              PATH@[2243; 2252)
+                PATH_SEGMENT@[2243; 2252)
+                  NAME_REF@[2243; 2252)
+                    IDENT@[2243; 2252) "assert_eq"
+              EXCL@[2252; 2253) "!"
+              TOKEN_TREE@[2253; 2684)
+                L_PAREN@[2253; 2254) "("
+                INT_NUMBER@[2254; 2257) "8u8"
+                COMMA@[2257; 2258) ","
+                WHITESPACE@[2258; 2259) " "
+                TOKEN_TREE@[2259; 2683)
+                  L_CURLY@[2259; 2260) "{"
+                  WHITESPACE@[2260; 2273) "\n            "
+                  IDENT@[2273; 2284) "macro_rules"
+                  EXCL@[2284; 2285) "!"
+                  WHITESPACE@[2285; 2286) " "
+                  IDENT@[2286; 2288) "u8"
+                  WHITESPACE@[2288; 2289) " "
+                  TOKEN_TREE@[2289; 2567)
+                    L_CURLY@[2289; 2290) "{"
+                    WHITESPACE@[2290; 2307) "\n                "
+                    TOKEN_TREE@[2307; 2311)
+                      L_PAREN@[2307; 2308) "("
+                      IDENT@[2308; 2310) "u8"
+                      R_PAREN@[2310; 2311) ")"
+                    WHITESPACE@[2311; 2312) " "
+                    EQ@[2312; 2313) "="
+                    R_ANGLE@[2313; 2314) ">"
+                    WHITESPACE@[2314; 2315) " "
+                    TOKEN_TREE@[2315; 2552)
+                      L_CURLY@[2315; 2316) "{"
+                      WHITESPACE@[2316; 2337) "\n                    "
+                      MOD_KW@[2337; 2340) "mod"
+                      WHITESPACE@[2340; 2341) " "
+                      IDENT@[2341; 2343) "u8"
+                      WHITESPACE@[2343; 2344) " "
+                      TOKEN_TREE@[2344; 2534)
+                        L_CURLY@[2344; 2345) "{"
+                        WHITESPACE@[2345; 2370) "\n                     ..."
+                        PUB_KW@[2370; 2373) "pub"
+                        WHITESPACE@[2373; 2374) " "
+                        FN_KW@[2374; 2376) "fn"
+                        WHITESPACE@[2376; 2377) " "
+                        IDENT@[2377; 2379) "u8"
+                        L_ANGLE@[2379; 2380) "<"
+                        LIFETIME@[2380; 2383) "\'u8"
+                        COLON@[2383; 2384) ":"
+                        WHITESPACE@[2384; 2385) " "
+                        LIFETIME@[2385; 2388) "\'u8"
+                        WHITESPACE@[2388; 2389) " "
+                        PLUS@[2389; 2390) "+"
+                        WHITESPACE@[2390; 2391) " "
+                        LIFETIME@[2391; 2394) "\'u8"
+                        R_ANGLE@[2394; 2395) ">"
+                        TOKEN_TREE@[2395; 2408)
+                          L_PAREN@[2395; 2396) "("
+                          IDENT@[2396; 2398) "u8"
+                          COLON@[2398; 2399) ":"
+                          WHITESPACE@[2399; 2400) " "
+                          AMP@[2400; 2401) "&"
+                          LIFETIME@[2401; 2404) "\'u8"
+                          WHITESPACE@[2404; 2405) " "
+                          IDENT@[2405; 2407) "u8"
+                          R_PAREN@[2407; 2408) ")"
+                        WHITESPACE@[2408; 2409) " "
+                        MINUS@[2409; 2410) "-"
+                        R_ANGLE@[2410; 2411) ">"
+                        WHITESPACE@[2411; 2412) " "
+                        AMP@[2412; 2413) "&"
+                        LIFETIME@[2413; 2416) "\'u8"
+                        WHITESPACE@[2416; 2417) " "
+                        IDENT@[2417; 2419) "u8"
+                        WHITESPACE@[2419; 2420) " "
+                        TOKEN_TREE@[2420; 2512)
+                          L_CURLY@[2420; 2421) "{"
+                          WHITESPACE@[2421; 2450) "\n                     ..."
+                          STRING@[2450; 2454) "\"u8\""
+                          SEMI@[2454; 2455) ";"
+                          WHITESPACE@[2455; 2484) "\n                     ..."
+                          IDENT@[2484; 2486) "u8"
+                          WHITESPACE@[2486; 2511) "\n                     ..."
+                          R_CURLY@[2511; 2512) "}"
+                        WHITESPACE@[2512; 2533) "\n                    "
+                        R_CURLY@[2533; 2534) "}"
+                      WHITESPACE@[2534; 2551) "\n                "
+                      R_CURLY@[2551; 2552) "}"
+                    SEMI@[2552; 2553) ";"
+                    WHITESPACE@[2553; 2566) "\n            "
+                    R_CURLY@[2566; 2567) "}"
+                  WHITESPACE@[2567; 2581) "\n\n            "
+                  IDENT@[2581; 2583) "u8"
+                  EXCL@[2583; 2584) "!"
+                  TOKEN_TREE@[2584; 2588)
+                    L_PAREN@[2584; 2585) "("
+                    IDENT@[2585; 2587) "u8"
+                    R_PAREN@[2587; 2588) ")"
+                  SEMI@[2588; 2589) ";"
+                  WHITESPACE@[2589; 2602) "\n            "
+                  LET_KW@[2602; 2605) "let"
+                  WHITESPACE@[2605; 2606) " "
+                  AMP@[2606; 2607) "&"
+                  IDENT@[2607; 2609) "u8"
+                  COLON@[2609; 2610) ":"
+                  WHITESPACE@[2610; 2611) " "
+                  AMP@[2611; 2612) "&"
+                  IDENT@[2612; 2614) "u8"
+                  WHITESPACE@[2614; 2615) " "
+                  EQ@[2615; 2616) "="
+                  WHITESPACE@[2616; 2617) " "
+                  IDENT@[2617; 2619) "u8"
+                  COLON@[2619; 2620) ":"
+                  COLON@[2620; 2621) ":"
+                  IDENT@[2621; 2623) "u8"
+                  TOKEN_TREE@[2623; 2629)
+                    L_PAREN@[2623; 2624) "("
+                    AMP@[2624; 2625) "&"
+                    INT_NUMBER@[2625; 2628) "8u8"
+                    R_PAREN@[2628; 2629) ")"
+                  SEMI@[2629; 2630) ";"
+                  WHITESPACE@[2630; 2643) "\n            "
+                  CRATE_KW@[2643; 2648) "crate"
+                  COLON@[2648; 2649) ":"
+                  COLON@[2649; 2650) ":"
+                  IDENT@[2650; 2652) "u8"
+                  TOKEN_TREE@[2652; 2657)
+                    L_PAREN@[2652; 2653) "("
+                    INT_NUMBER@[2653; 2656) "0u8"
+                    R_PAREN@[2656; 2657) ")"
+                  SEMI@[2657; 2658) ";"
+                  WHITESPACE@[2658; 2671) "\n            "
+                  IDENT@[2671; 2673) "u8"
+                  WHITESPACE@[2673; 2682) "\n        "
+                  R_CURLY@[2682; 2683) "}"
+                R_PAREN@[2683; 2684) ")"
+            SEMI@[2684; 2685) ";"
+          WHITESPACE@[2685; 2690) "\n    "
+          R_CURLY@[2690; 2691) "}"
+      WHITESPACE@[2691; 2692) "\n"
+      R_CURLY@[2692; 2693) "}"
+  WHITESPACE@[2693; 2695) "\n\n"
+  FN_DEF@[2695; 2832)
+    FN_KW@[2695; 2697) "fn"
+    WHITESPACE@[2697; 2698) " "
+    NAME@[2698; 2703)
+      IDENT@[2698; 2703) "fishy"
+    PARAM_LIST@[2703; 2705)
+      L_PAREN@[2703; 2704) "("
+      R_PAREN@[2704; 2705) ")"
+    WHITESPACE@[2705; 2706) " "
+    BLOCK@[2706; 2832)
+      L_CURLY@[2706; 2707) "{"
+      WHITESPACE@[2707; 2712) "\n    "
+      EXPR_STMT@[2712; 2830)
+        MACRO_CALL@[2712; 2829)
+          PATH@[2712; 2721)
+            PATH_SEGMENT@[2712; 2721)
+              NAME_REF@[2712; 2721)
+                IDENT@[2712; 2721) "assert_eq"
+          EXCL@[2721; 2722) "!"
+          TOKEN_TREE@[2722; 2829)
+            L_PAREN@[2722; 2723) "("
+            IDENT@[2723; 2729) "String"
+            COLON@[2729; 2730) ":"
+            COLON@[2730; 2731) ":"
+            IDENT@[2731; 2735) "from"
+            TOKEN_TREE@[2735; 2742)
+              L_PAREN@[2735; 2736) "("
+              STRING@[2736; 2741) "\"><>\""
+              R_PAREN@[2741; 2742) ")"
+            COMMA@[2742; 2743) ","
+            WHITESPACE@[2743; 2759) "\n               "
+            IDENT@[2759; 2765) "String"
+            COLON@[2765; 2766) ":"
+            COLON@[2766; 2767) ":"
+            L_ANGLE@[2767; 2768) "<"
+            R_ANGLE@[2768; 2769) ">"
+            COLON@[2769; 2770) ":"
+            COLON@[2770; 2771) ":"
+            IDENT@[2771; 2775) "from"
+            COLON@[2775; 2776) ":"
+            COLON@[2776; 2777) ":"
+            L_ANGLE@[2777; 2778) "<"
+            R_ANGLE@[2778; 2779) ">"
+            TOKEN_TREE@[2779; 2786)
+              L_PAREN@[2779; 2780) "("
+              STRING@[2780; 2785) "\"><>\""
+              R_PAREN@[2785; 2786) ")"
+            DOT@[2786; 2787) "."
+            IDENT@[2787; 2792) "chars"
+            COLON@[2792; 2793) ":"
+            COLON@[2793; 2794) ":"
+            L_ANGLE@[2794; 2795) "<"
+            R_ANGLE@[2795; 2796) ">"
+            TOKEN_TREE@[2796; 2798)
+              L_PAREN@[2796; 2797) "("
+              R_PAREN@[2797; 2798) ")"
+            DOT@[2798; 2799) "."
+            IDENT@[2799; 2802) "rev"
+            COLON@[2802; 2803) ":"
+            COLON@[2803; 2804) ":"
+            L_ANGLE@[2804; 2805) "<"
+            R_ANGLE@[2805; 2806) ">"
+            TOKEN_TREE@[2806; 2808)
+              L_PAREN@[2806; 2807) "("
+              R_PAREN@[2807; 2808) ")"
+            DOT@[2808; 2809) "."
+            IDENT@[2809; 2816) "collect"
+            COLON@[2816; 2817) ":"
+            COLON@[2817; 2818) ":"
+            L_ANGLE@[2818; 2819) "<"
+            IDENT@[2819; 2825) "String"
+            R_ANGLE@[2825; 2826) ">"
+            TOKEN_TREE@[2826; 2828)
+              L_PAREN@[2826; 2827) "("
+              R_PAREN@[2827; 2828) ")"
+            R_PAREN@[2828; 2829) ")"
+        SEMI@[2829; 2830) ";"
+      WHITESPACE@[2830; 2831) "\n"
+      R_CURLY@[2831; 2832) "}"
+  WHITESPACE@[2832; 2834) "\n\n"
+  FN_DEF@[2834; 2906)
+    FN_KW@[2834; 2836) "fn"
+    WHITESPACE@[2836; 2837) " "
+    NAME@[2837; 2842)
+      IDENT@[2837; 2842) "union"
+    PARAM_LIST@[2842; 2844)
+      L_PAREN@[2842; 2843) "("
+      R_PAREN@[2843; 2844) ")"
+    WHITESPACE@[2844; 2845) " "
+    BLOCK@[2845; 2906)
+      L_CURLY@[2845; 2846) "{"
+      WHITESPACE@[2846; 2851) "\n    "
+      STRUCT_DEF@[2851; 2904)
+        UNION_KW@[2851; 2856) "union"
+        WHITESPACE@[2856; 2857) " "
+        NAME@[2857; 2862)
+          IDENT@[2857; 2862) "union"
+        TYPE_PARAM_LIST@[2862; 2870)
+          L_ANGLE@[2862; 2863) "<"
+          LIFETIME_PARAM@[2863; 2869)
+            LIFETIME@[2863; 2869) "\'union"
+          R_ANGLE@[2869; 2870) ">"
+        WHITESPACE@[2870; 2871) " "
+        NAMED_FIELD_DEF_LIST@[2871; 2904)
+          L_CURLY@[2871; 2872) "{"
+          WHITESPACE@[2872; 2873) " "
+          NAMED_FIELD_DEF@[2873; 2901)
+            NAME@[2873; 2878)
+              IDENT@[2873; 2878) "union"
+            COLON@[2878; 2879) ":"
+            WHITESPACE@[2879; 2880) " "
+            REFERENCE_TYPE@[2880; 2901)
+              AMP@[2880; 2881) "&"
+              LIFETIME@[2881; 2887) "\'union"
+              WHITESPACE@[2887; 2888) " "
+              PATH_TYPE@[2888; 2901)
+                PATH@[2888; 2901)
+                  PATH_SEGMENT@[2888; 2901)
+                    NAME_REF@[2888; 2893)
+                      IDENT@[2888; 2893) "union"
+                    TYPE_ARG_LIST@[2893; 2901)
+                      L_ANGLE@[2893; 2894) "<"
+                      LIFETIME_ARG@[2894; 2900)
+                        LIFETIME@[2894; 2900) "\'union"
+                      R_ANGLE@[2900; 2901) ">"
+          COMMA@[2901; 2902) ","
+          WHITESPACE@[2902; 2903) " "
+          R_CURLY@[2903; 2904) "}"
+      WHITESPACE@[2904; 2905) "\n"
+      R_CURLY@[2905; 2906) "}"
+  WHITESPACE@[2906; 2908) "\n\n"
+  FN_DEF@[2908; 3042)
+    FN_KW@[2908; 2910) "fn"
+    WHITESPACE@[2910; 2911) " "
+    NAME@[2911; 2929)
+      IDENT@[2911; 2929) "special_characters"
+    PARAM_LIST@[2929; 2931)
+      L_PAREN@[2929; 2930) "("
+      R_PAREN@[2930; 2931) ")"
+    WHITESPACE@[2931; 2932) " "
+    BLOCK@[2932; 3042)
+      L_CURLY@[2932; 2933) "{"
+      WHITESPACE@[2933; 2938) "\n    "
+      LET_STMT@[2938; 3021)
+        LET_KW@[2938; 2941) "let"
+        WHITESPACE@[2941; 2942) " "
+        BIND_PAT@[2942; 2945)
+          NAME@[2942; 2945)
+            IDENT@[2942; 2945) "val"
+        WHITESPACE@[2945; 2946) " "
+        EQ@[2946; 2947) "="
+        WHITESPACE@[2947; 2948) " "
+        PREFIX_EXPR@[2948; 3013)
+          EXCL@[2948; 2949) "!"
+          PAREN_EXPR@[2949; 3013)
+            L_PAREN@[2949; 2950) "("
+            BIN_EXPR@[2950; 3012)
+              CALL_EXPR@[2950; 2995)
+                PAREN_EXPR@[2950; 2971)
+                  L_PAREN@[2950; 2951) "("
+                  LAMBDA_EXPR@[2951; 2970)
+                    PARAM_LIST@[2951; 2968)
+                      PIPE@[2951; 2952) "|"
+                      PARAM@[2952; 2962)
+                        TUPLE_PAT@[2952; 2956)
+                          L_PAREN@[2952; 2953) "("
+                          DOTDOT@[2953; 2955) ".."
+                          R_PAREN@[2955; 2956) ")"
+                        COLON@[2956; 2957) ":"
+                        TUPLE_TYPE@[2957; 2962)
+                          L_PAREN@[2957; 2958) "("
+                          PLACEHOLDER_TYPE@[2958; 2959)
+                            UNDERSCORE@[2958; 2959) "_"
+                          COMMA@[2959; 2960) ","
+                          PLACEHOLDER_TYPE@[2960; 2961)
+                            UNDERSCORE@[2960; 2961) "_"
+                          R_PAREN@[2961; 2962) ")"
+                      COMMA@[2962; 2963) ","
+                      PARAM@[2963; 2967)
+                        BIND_PAT@[2963; 2967)
+                          NAME@[2963; 2965)
+                            IDENT@[2963; 2965) "__"
+                          AT@[2965; 2966) "@"
+                          PLACEHOLDER_PAT@[2966; 2967)
+                            UNDERSCORE@[2966; 2967) "_"
+                      PIPE@[2967; 2968) "|"
+                    PATH_EXPR@[2968; 2970)
+                      PATH@[2968; 2970)
+                        PATH_SEGMENT@[2968; 2970)
+                          NAME_REF@[2968; 2970)
+                            IDENT@[2968; 2970) "__"
+                  R_PAREN@[2970; 2971) ")"
+                ARG_LIST@[2971; 2995)
+                  L_PAREN@[2971; 2972) "("
+                  TUPLE_EXPR@[2972; 2987)
+                    L_PAREN@[2972; 2973) "("
+                    REF_EXPR@[2973; 2979)
+                      AMP@[2973; 2974) "&"
+                      PREFIX_EXPR@[2974; 2979)
+                        STAR@[2974; 2975) "*"
+                        LITERAL@[2975; 2979)
+                          STRING@[2975; 2979) "\"\\\\\""
+                    COMMA@[2979; 2980) ","
+                    LITERAL@[2980; 2986)
+                      CHAR@[2980; 2986) "\'🤔\'"
+                    R_PAREN@[2986; 2987) ")"
+                  COMMENT@[2987; 2991) "/**/"
+                  COMMA@[2991; 2992) ","
+                  BLOCK_EXPR@[2992; 2994)
+                    BLOCK@[2992; 2994)
+                      L_CURLY@[2992; 2993) "{"
+                      R_CURLY@[2993; 2994) "}"
+                  R_PAREN@[2994; 2995) ")"
+              EQEQ@[2995; 2997) "=="
+              BLOCK_EXPR@[2997; 3012)
+                BLOCK@[2997; 3012)
+                  L_CURLY@[2997; 2998) "{"
+                  EXPR_STMT@[2998; 3011)
+                    REF_EXPR@[2998; 3010)
+                      AMP@[2998; 2999) "&"
+                      INDEX_EXPR@[2999; 3010)
+                        ARRAY_EXPR@[2999; 3006)
+                          L_BRACK@[2999; 3000) "["
+                          RANGE_EXPR@[3000; 3005)
+                            DOTDOTEQ@[3000; 3003) "..="
+                            RANGE_EXPR@[3003; 3005)
+                              DOTDOT@[3003; 3005) ".."
+                          R_BRACK@[3005; 3006) "]"
+                        L_BRACK@[3006; 3007) "["
+                        RANGE_EXPR@[3007; 3009)
+                          DOTDOT@[3007; 3009) ".."
+                        R_BRACK@[3009; 3010) "]"
+                    SEMI@[3010; 3011) ";"
+                  R_CURLY@[3011; 3012) "}"
+            R_PAREN@[3012; 3013) ")"
+        COMMENT@[3013; 3015) "//"
+        WHITESPACE@[3015; 3020) "\n    "
+        SEMI@[3020; 3021) ";"
+      WHITESPACE@[3021; 3026) "\n    "
+      EXPR_STMT@[3026; 3040)
+        MACRO_CALL@[3026; 3039)
+          PATH@[3026; 3032)
+            PATH_SEGMENT@[3026; 3032)
+              NAME_REF@[3026; 3032)
+                IDENT@[3026; 3032) "assert"
+          EXCL@[3032; 3033) "!"
+          TOKEN_TREE@[3033; 3039)
+            L_PAREN@[3033; 3034) "("
+            EXCL@[3034; 3035) "!"
+            IDENT@[3035; 3038) "val"
+            R_PAREN@[3038; 3039) ")"
+        SEMI@[3039; 3040) ";"
+      WHITESPACE@[3040; 3041) "\n"
+      R_CURLY@[3041; 3042) "}"
+  WHITESPACE@[3042; 3044) "\n\n"
+  FN_DEF@[3044; 3514)
+    FN_KW@[3044; 3046) "fn"
+    WHITESPACE@[3046; 3047) " "
+    NAME@[3047; 3057)
+      IDENT@[3047; 3057) "punch_card"
+    PARAM_LIST@[3057; 3059)
+      L_PAREN@[3057; 3058) "("
+      R_PAREN@[3058; 3059) ")"
+    WHITESPACE@[3059; 3060) " "
+    RET_TYPE@[3060; 3083)
+      THIN_ARROW@[3060; 3062) "->"
+      WHITESPACE@[3062; 3063) " "
+      IMPL_TRAIT_TYPE@[3063; 3083)
+        IMPL_KW@[3063; 3067) "impl"
+        WHITESPACE@[3067; 3068) " "
+        TYPE_BOUND_LIST@[3068; 3083)
+          TYPE_BOUND@[3068; 3083)
+            PATH_TYPE@[3068; 3083)
+              PATH@[3068; 3083)
+                PATH@[3068; 3076)
+                  PATH@[3068; 3071)
+                    PATH_SEGMENT@[3068; 3071)
+                      NAME_REF@[3068; 3071)
+                        IDENT@[3068; 3071) "std"
+                  COLONCOLON@[3071; 3073) "::"
+                  PATH_SEGMENT@[3073; 3076)
+                    NAME_REF@[3073; 3076)
+                      IDENT@[3073; 3076) "fmt"
+                COLONCOLON@[3076; 3078) "::"
+                PATH_SEGMENT@[3078; 3083)
+                  NAME_REF@[3078; 3083)
+                    IDENT@[3078; 3083) "Debug"
+    WHITESPACE@[3083; 3084) " "
+    BLOCK@[3084; 3514)
+      L_CURLY@[3084; 3085) "{"
+      WHITESPACE@[3085; 3090) "\n    "
+      RANGE_EXPR@[3090; 3512)
+        DOTDOTEQ@[3090; 3093) "..="
+        RANGE_EXPR@[3093; 3512)
+          DOTDOTEQ@[3093; 3096) "..="
+          RANGE_EXPR@[3096; 3512)
+            DOTDOT@[3096; 3098) ".."
+            WHITESPACE@[3098; 3099) " "
+            RANGE_EXPR@[3099; 3512)
+              DOTDOT@[3099; 3101) ".."
+              WHITESPACE@[3101; 3105) "    "
+              RANGE_EXPR@[3105; 3512)
+                DOTDOT@[3105; 3107) ".."
+                WHITESPACE@[3107; 3108) " "
+                RANGE_EXPR@[3108; 3512)
+                  DOTDOT@[3108; 3110) ".."
+                  WHITESPACE@[3110; 3111) " "
+                  RANGE_EXPR@[3111; 3512)
+                    DOTDOT@[3111; 3113) ".."
+                    WHITESPACE@[3113; 3114) " "
+                    RANGE_EXPR@[3114; 3512)
+                      DOTDOT@[3114; 3116) ".."
+                      WHITESPACE@[3116; 3120) "    "
+                      RANGE_EXPR@[3120; 3512)
+                        DOTDOT@[3120; 3122) ".."
+                        WHITESPACE@[3122; 3123) " "
+                        RANGE_EXPR@[3123; 3512)
+                          DOTDOT@[3123; 3125) ".."
+                          WHITESPACE@[3125; 3126) " "
+                          RANGE_EXPR@[3126; 3512)
+                            DOTDOT@[3126; 3128) ".."
+                            WHITESPACE@[3128; 3129) " "
+                            RANGE_EXPR@[3129; 3512)
+                              DOTDOT@[3129; 3131) ".."
+                              WHITESPACE@[3131; 3135) "    "
+                              RANGE_EXPR@[3135; 3512)
+                                DOTDOT@[3135; 3137) ".."
+                                WHITESPACE@[3137; 3138) " "
+                                RANGE_EXPR@[3138; 3512)
+                                  DOTDOTEQ@[3138; 3141) "..="
+                                  RANGE_EXPR@[3141; 3512)
+                                    DOTDOT@[3141; 3143) ".."
+                                    WHITESPACE@[3143; 3144) " "
+                                    RANGE_EXPR@[3144; 3512)
+                                      DOTDOT@[3144; 3146) ".."
+                                      WHITESPACE@[3146; 3151) "\n    "
+                                      RANGE_EXPR@[3151; 3512)
+                                        DOTDOTEQ@[3151; 3154) "..="
+                                        RANGE_EXPR@[3154; 3512)
+                                          DOTDOT@[3154; 3156) ".."
+                                          WHITESPACE@[3156; 3157) " "
+                                          RANGE_EXPR@[3157; 3512)
+                                            DOTDOTEQ@[3157; 3160) "..="
+                                            RANGE_EXPR@[3160; 3512)
+                                              DOTDOT@[3160; 3162) ".."
+                                              WHITESPACE@[3162; 3166) "    "
+                                              RANGE_EXPR@[3166; 3512)
+                                                DOTDOT@[3166; 3168) ".."
+                                                WHITESPACE@[3168; 3169) " "
+                                                RANGE_EXPR@[3169; 3512)
+                                                  DOTDOT@[3169; 3171) ".."
+                                                  WHITESPACE@[3171; 3172) " "
+                                                  RANGE_EXPR@[3172; 3512)
+                                                    DOTDOT@[3172; 3174) ".."
+                                                    WHITESPACE@[3174; 3175) " "
+                                                    RANGE_EXPR@[3175; 3512)
+                                                      DOTDOT@[3175; 3177) ".."
+                                                      WHITESPACE@[3177; 3181) "    "
+                                                      RANGE_EXPR@[3181; 3512)
+                                                        DOTDOT@[3181; 3183) ".."
+                                                        WHITESPACE@[3183; 3184) " "
+                                                        RANGE_EXPR@[3184; 3512)
+                                                          DOTDOT@[3184; 3186) ".."
+                                                          WHITESPACE@[3186; 3187) " "
+                                                          RANGE_EXPR@[3187; 3512)
+                                                            DOTDOT@[3187; 3189) ".."
+                                                            WHITESPACE@[3189; 3190) " "
+                                                            RANGE_EXPR@[3190; 3512)
+                                                              DOTDOT@[3190; 3192) ".."
+                                                              WHITESPACE@[3192; 3196) "    "
+                                                              RANGE_EXPR@[3196; 3512)
+                                                                DOTDOTEQ@[3196; 3199) "..="
+                                                                RANGE_EXPR@[3199; 3512)
+                                                                  DOTDOTEQ@[3199; 3202) "..="
+                                                                  RANGE_EXPR@[3202; 3512)
+                                                                    DOTDOTEQ@[3202; 3205) "..="
+                                                                    RANGE_EXPR@[3205; 3512)
+                                                                      DOTDOT@[3205; 3207) ".."
+                                                                      WHITESPACE@[3207; 3212) "\n    "
+                                                                      RANGE_EXPR@[3212; 3512)
+                                                                        DOTDOTEQ@[3212; 3215) "..="
+                                                                        RANGE_EXPR@[3215; 3512)
+                                                                          DOTDOT@[3215; 3217) ".."
+                                                                          WHITESPACE@[3217; 3218) " "
+                                                                          RANGE_EXPR@[3218; 3512)
+                                                                            DOTDOTEQ@[3218; 3221) "..="
+                                                                            RANGE_EXPR@[3221; 3512)
+                                                                              DOTDOT@[3221; 3223) ".."
+                                                                              WHITESPACE@[3223; 3227) "    "
+                                                                              RANGE_EXPR@[3227; 3512)
+                                                                                DOTDOTEQ@[3227; 3230) "..="
+                                                                                RANGE_EXPR@[3230; 3512)
+                                                                                  DOTDOT@[3230; 3232) ".."
+                                                                                  WHITESPACE@[3232; 3233) " "
+                                                                                  RANGE_EXPR@[3233; 3512)
+                                                                                    DOTDOTEQ@[3233; 3236) "..="
+                                                                                    RANGE_EXPR@[3236; 3512)
+                                                                                      DOTDOT@[3236; 3238) ".."
+                                                                                      WHITESPACE@[3238; 3242) "    "
+                                                                                      RANGE_EXPR@[3242; 3512)
+                                                                                        DOTDOT@[3242; 3244) ".."
+                                                                                        WHITESPACE@[3244; 3245) " "
+                                                                                        RANGE_EXPR@[3245; 3512)
+                                                                                          DOTDOTEQ@[3245; 3248) "..="
+                                                                                          RANGE_EXPR@[3248; 3512)
+                                                                                            DOTDOTEQ@[3248; 3251) "..="
+                                                                                            RANGE_EXPR@[3251; 3512)
+                                                                                              DOTDOT@[3251; 3253) ".."
+                                                                                              WHITESPACE@[3253; 3257) "    "
+                                                                                              RANGE_EXPR@[3257; 3512)
+                                                                                                DOTDOT@[3257; 3259) ".."
+                                                                                                WHITESPACE@[3259; 3260) " "
+                                                                                                RANGE_EXPR@[3260; 3512)
+                                                                                                  DOTDOTEQ@[3260; 3263) "..="
+                                                                                                  RANGE_EXPR@[3263; 3512)
+                                                                                                    DOTDOT@[3263; 3265) ".."
+                                                                                                    WHITESPACE@[3265; 3266) " "
+                                                                                                    RANGE_EXPR@[3266; 3512)
+                                                                                                      DOTDOT@[3266; 3268) ".."
+                                                                                                      WHITESPACE@[3268; 3273) "\n    "
+                                                                                                      RANGE_EXPR@[3273; 3512)
+                                                                                                        DOTDOTEQ@[3273; 3276) "..="
+                                                                                                        RANGE_EXPR@[3276; 3512)
+                                                                                                          DOTDOTEQ@[3276; 3279) "..="
+                                                                                                          RANGE_EXPR@[3279; 3512)
+                                                                                                            DOTDOT@[3279; 3281) ".."
+                                                                                                            WHITESPACE@[3281; 3282) " "
+                                                                                                            RANGE_EXPR@[3282; 3512)
+                                                                                                              DOTDOT@[3282; 3284) ".."
+                                                                                                              WHITESPACE@[3284; 3288) "    "
+                                                                                                              RANGE_EXPR@[3288; 3512)
+                                                                                                                DOTDOTEQ@[3288; 3291) "..="
+                                                                                                                RANGE_EXPR@[3291; 3512)
+                                                                                                                  DOTDOT@[3291; 3293) ".."
+                                                                                                                  WHITESPACE@[3293; 3294) " "
+                                                                                                                  RANGE_EXPR@[3294; 3512)
+                                                                                                                    DOTDOTEQ@[3294; 3297) "..="
+                                                                                                                    RANGE_EXPR@[3297; 3512)
+                                                                                                                      DOTDOT@[3297; 3299) ".."
+                                                                                                                      WHITESPACE@[3299; 3303) "    "
+                                                                                                                      RANGE_EXPR@[3303; 3512)
+                                                                                                                        DOTDOTEQ@[3303; 3306) "..="
+                                                                                                                        RANGE_EXPR@[3306; 3512)
+                                                                                                                          DOTDOT@[3306; 3308) ".."
+                                                                                                                          WHITESPACE@[3308; 3309) " "
+                                                                                                                          RANGE_EXPR@[3309; 3512)
+                                                                                                                            DOTDOT@[3309; 3311) ".."
+                                                                                                                            WHITESPACE@[3311; 3312) " "
+                                                                                                                            RANGE_EXPR@[3312; 3512)
+                                                                                                                              DOTDOT@[3312; 3314) ".."
+                                                                                                                              WHITESPACE@[3314; 3318) "    "
+                                                                                                                              RANGE_EXPR@[3318; 3512)
+                                                                                                                                DOTDOT@[3318; 3320) ".."
+                                                                                                                                WHITESPACE@[3320; 3321) " "
+                                                                                                                                RANGE_EXPR@[3321; 3512)
+                                                                                                                                  DOTDOTEQ@[3321; 3324) "..="
+                                                                                                                                  RANGE_EXPR@[3324; 3512)
+                                                                                                                                    DOTDOT@[3324; 3326) ".."
+                                                                                                                                    WHITESPACE@[3326; 3327) " "
+                                                                                                                                    RANGE_EXPR@[3327; 3512)
+                                                                                                                                      DOTDOT@[3327; 3329) ".."
+                                                                                                                                      WHITESPACE@[3329; 3334) "\n    "
+                                                                                                                                      RANGE_EXPR@[3334; 3512)
+                                                                                                                                        DOTDOTEQ@[3334; 3337) "..="
+                                                                                                                                        RANGE_EXPR@[3337; 3512)
+                                                                                                                                          DOTDOT@[3337; 3339) ".."
+                                                                                                                                          WHITESPACE@[3339; 3340) " "
+                                                                                                                                          RANGE_EXPR@[3340; 3512)
+                                                                                                                                            DOTDOTEQ@[3340; 3343) "..="
+                                                                                                                                            RANGE_EXPR@[3343; 3512)
+                                                                                                                                              DOTDOT@[3343; 3345) ".."
+                                                                                                                                              WHITESPACE@[3345; 3349) "    "
+                                                                                                                                              RANGE_EXPR@[3349; 3512)
+                                                                                                                                                DOTDOTEQ@[3349; 3352) "..="
+                                                                                                                                                RANGE_EXPR@[3352; 3512)
+                                                                                                                                                  DOTDOT@[3352; 3354) ".."
+                                                                                                                                                  WHITESPACE@[3354; 3355) " "
+                                                                                                                                                  RANGE_EXPR@[3355; 3512)
+                                                                                                                                                    DOTDOTEQ@[3355; 3358) "..="
+                                                                                                                                                    RANGE_EXPR@[3358; 3512)
+                                                                                                                                                      DOTDOT@[3358; 3360) ".."
+                                                                                                                                                      WHITESPACE@[3360; 3364) "    "
+                                                                                                                                                      RANGE_EXPR@[3364; 3512)
+                                                                                                                                                        DOTDOT@[3364; 3366) ".."
+                                                                                                                                                        WHITESPACE@[3366; 3367) " "
+                                                                                                                                                        RANGE_EXPR@[3367; 3512)
+                                                                                                                                                          DOTDOTEQ@[3367; 3370) "..="
+                                                                                                                                                          RANGE_EXPR@[3370; 3512)
+                                                                                                                                                            DOTDOT@[3370; 3372) ".."
+                                                                                                                                                            WHITESPACE@[3372; 3373) " "
+                                                                                                                                                            RANGE_EXPR@[3373; 3512)
+                                                                                                                                                              DOTDOT@[3373; 3375) ".."
+                                                                                                                                                              WHITESPACE@[3375; 3379) "    "
+                                                                                                                                                              RANGE_EXPR@[3379; 3512)
+                                                                                                                                                                DOTDOT@[3379; 3381) ".."
+                                                                                                                                                                WHITESPACE@[3381; 3382) " "
+                                                                                                                                                                RANGE_EXPR@[3382; 3512)
+                                                                                                                                                                  DOTDOTEQ@[3382; 3385) "..="
+                                                                                                                                                                  RANGE_EXPR@[3385; 3512)
+                                                                                                                                                                    DOTDOT@[3385; 3387) ".."
+                                                                                                                                                                    WHITESPACE@[3387; 3388) " "
+                                                                                                                                                                    RANGE_EXPR@[3388; 3512)
+                                                                                                                                                                      DOTDOT@[3388; 3390) ".."
+                                                                                                                                                                      WHITESPACE@[3390; 3395) "\n    "
+                                                                                                                                                                      RANGE_EXPR@[3395; 3512)
+                                                                                                                                                                        DOTDOTEQ@[3395; 3398) "..="
+                                                                                                                                                                        RANGE_EXPR@[3398; 3512)
+                                                                                                                                                                          DOTDOT@[3398; 3400) ".."
+                                                                                                                                                                          WHITESPACE@[3400; 3401) " "
+                                                                                                                                                                          RANGE_EXPR@[3401; 3512)
+                                                                                                                                                                            DOTDOTEQ@[3401; 3404) "..="
+                                                                                                                                                                            RANGE_EXPR@[3404; 3512)
+                                                                                                                                                                              DOTDOT@[3404; 3406) ".."
+                                                                                                                                                                              WHITESPACE@[3406; 3410) "    "
+                                                                                                                                                                              RANGE_EXPR@[3410; 3512)
+                                                                                                                                                                                DOTDOTEQ@[3410; 3413) "..="
+                                                                                                                                                                                RANGE_EXPR@[3413; 3512)
+                                                                                                                                                                                  DOTDOT@[3413; 3415) ".."
+                                                                                                                                                                                  WHITESPACE@[3415; 3416) " "
+                                                                                                                                                                                  RANGE_EXPR@[3416; 3512)
+                                                                                                                                                                                    DOTDOTEQ@[3416; 3419) "..="
+                                                                                                                                                                                    RANGE_EXPR@[3419; 3512)
+                                                                                                                                                                                      DOTDOT@[3419; 3421) ".."
+                                                                                                                                                                                      WHITESPACE@[3421; 3425) "    "
+                                                                                                                                                                                      RANGE_EXPR@[3425; 3512)
+                                                                                                                                                                                        DOTDOT@[3425; 3427) ".."
+                                                                                                                                                                                        WHITESPACE@[3427; 3428) " "
+                                                                                                                                                                                        RANGE_EXPR@[3428; 3512)
+                                                                                                                                                                                          DOTDOT@[3428; 3430) ".."
+                                                                                                                                                                                          WHITESPACE@[3430; 3431) " "
+                                                                                                                                                                                          RANGE_EXPR@[3431; 3512)
+                                                                                                                                                                                            DOTDOTEQ@[3431; 3434) "..="
+                                                                                                                                                                                            RANGE_EXPR@[3434; 3512)
+                                                                                                                                                                                              DOTDOT@[3434; 3436) ".."
+                                                                                                                                                                                              WHITESPACE@[3436; 3440) "    "
+                                                                                                                                                                                              RANGE_EXPR@[3440; 3512)
+                                                                                                                                                                                                DOTDOT@[3440; 3442) ".."
+                                                                                                                                                                                                WHITESPACE@[3442; 3443) " "
+                                                                                                                                                                                                RANGE_EXPR@[3443; 3512)
+                                                                                                                                                                                                  DOTDOTEQ@[3443; 3446) "..="
+                                                                                                                                                                                                  RANGE_EXPR@[3446; 3512)
+                                                                                                                                                                                                    DOTDOT@[3446; 3448) ".."
+                                                                                                                                                                                                    WHITESPACE@[3448; 3449) " "
+                                                                                                                                                                                                    RANGE_EXPR@[3449; 3512)
+                                                                                                                                                                                                      DOTDOT@[3449; 3451) ".."
+                                                                                                                                                                                                      WHITESPACE@[3451; 3456) "\n    "
+                                                                                                                                                                                                      RANGE_EXPR@[3456; 3512)
+                                                                                                                                                                                                        DOTDOTEQ@[3456; 3459) "..="
+                                                                                                                                                                                                        RANGE_EXPR@[3459; 3512)
+                                                                                                                                                                                                          DOTDOT@[3459; 3461) ".."
+                                                                                                                                                                                                          WHITESPACE@[3461; 3462) " "
+                                                                                                                                                                                                          RANGE_EXPR@[3462; 3512)
+                                                                                                                                                                                                            DOTDOTEQ@[3462; 3465) "..="
+                                                                                                                                                                                                            RANGE_EXPR@[3465; 3512)
+                                                                                                                                                                                                              DOTDOT@[3465; 3467) ".."
+                                                                                                                                                                                                              WHITESPACE@[3467; 3471) "    "
+                                                                                                                                                                                                              RANGE_EXPR@[3471; 3512)
+                                                                                                                                                                                                                DOTDOT@[3471; 3473) ".."
+                                                                                                                                                                                                                WHITESPACE@[3473; 3474) " "
+                                                                                                                                                                                                                RANGE_EXPR@[3474; 3512)
+                                                                                                                                                                                                                  DOTDOTEQ@[3474; 3477) "..="
+                                                                                                                                                                                                                  RANGE_EXPR@[3477; 3512)
+                                                                                                                                                                                                                    DOTDOTEQ@[3477; 3480) "..="
+                                                                                                                                                                                                                    RANGE_EXPR@[3480; 3512)
+                                                                                                                                                                                                                      DOTDOT@[3480; 3482) ".."
+                                                                                                                                                                                                                      WHITESPACE@[3482; 3486) "    "
+                                                                                                                                                                                                                      RANGE_EXPR@[3486; 3512)
+                                                                                                                                                                                                                        DOTDOTEQ@[3486; 3489) "..="
+                                                                                                                                                                                                                        RANGE_EXPR@[3489; 3512)
+                                                                                                                                                                                                                          DOTDOTEQ@[3489; 3492) "..="
+                                                                                                                                                                                                                          RANGE_EXPR@[3492; 3512)
+                                                                                                                                                                                                                            DOTDOT@[3492; 3494) ".."
+                                                                                                                                                                                                                            WHITESPACE@[3494; 3495) " "
+                                                                                                                                                                                                                            RANGE_EXPR@[3495; 3512)
+                                                                                                                                                                                                                              DOTDOT@[3495; 3497) ".."
+                                                                                                                                                                                                                              WHITESPACE@[3497; 3501) "    "
+                                                                                                                                                                                                                              RANGE_EXPR@[3501; 3512)
+                                                                                                                                                                                                                                DOTDOT@[3501; 3503) ".."
+                                                                                                                                                                                                                                WHITESPACE@[3503; 3504) " "
+                                                                                                                                                                                                                                RANGE_EXPR@[3504; 3512)
+                                                                                                                                                                                                                                  DOTDOTEQ@[3504; 3507) "..="
+                                                                                                                                                                                                                                  RANGE_EXPR@[3507; 3512)
+                                                                                                                                                                                                                                    DOTDOT@[3507; 3509) ".."
+                                                                                                                                                                                                                                    WHITESPACE@[3509; 3510) " "
+                                                                                                                                                                                                                                    RANGE_EXPR@[3510; 3512)
+                                                                                                                                                                                                                                      DOTDOT@[3510; 3512) ".."
+      WHITESPACE@[3512; 3513) "\n"
+      R_CURLY@[3513; 3514) "}"
+  WHITESPACE@[3514; 3516) "\n\n"
+  FN_DEF@[3516; 3552)
+    FN_KW@[3516; 3518) "fn"
+    WHITESPACE@[3518; 3519) " "
+    NAME@[3519; 3525)
+      IDENT@[3519; 3525) "ktulhu"
+    PARAM_LIST@[3525; 3527)
+      L_PAREN@[3525; 3526) "("
+      R_PAREN@[3526; 3527) ")"
+    WHITESPACE@[3527; 3528) " "
+    BLOCK@[3528; 3552)
+      L_CURLY@[3528; 3529) "{"
+      WHITESPACE@[3529; 3534) "\n    "
+      SEMI@[3534; 3535) ";"
+      SEMI@[3535; 3536) ";"
+      SEMI@[3536; 3537) ";"
+      EXPR_STMT@[3537; 3540)
+        TUPLE_EXPR@[3537; 3539)
+          L_PAREN@[3537; 3538) "("
+          R_PAREN@[3538; 3539) ")"
+        SEMI@[3539; 3540) ";"
+      SEMI@[3540; 3541) ";"
+      SEMI@[3541; 3542) ";"
+      SEMI@[3542; 3543) ";"
+      SEMI@[3543; 3544) ";"
+      SEMI@[3544; 3545) ";"
+      SEMI@[3545; 3546) ";"
+      SEMI@[3546; 3547) ";"
+      SEMI@[3547; 3548) ";"
+      TUPLE_EXPR@[3548; 3550)
+        L_PAREN@[3548; 3549) "("
+        R_PAREN@[3549; 3550) ")"
+      WHITESPACE@[3550; 3551) "\n"
+      R_CURLY@[3551; 3552) "}"
+  WHITESPACE@[3552; 3554) "\n\n"
+  FN_DEF@[3554; 3812)
+    VISIBILITY@[3554; 3557)
+      PUB_KW@[3554; 3557) "pub"
+    WHITESPACE@[3557; 3558) " "
+    FN_KW@[3558; 3560) "fn"
+    WHITESPACE@[3560; 3561) " "
+    NAME@[3561; 3565)
+      IDENT@[3561; 3565) "main"
+    PARAM_LIST@[3565; 3567)
+      L_PAREN@[3565; 3566) "("
+      R_PAREN@[3566; 3567) ")"
+    WHITESPACE@[3567; 3568) " "
+    BLOCK@[3568; 3812)
+      L_CURLY@[3568; 3569) "{"
+      WHITESPACE@[3569; 3574) "\n    "
+      EXPR_STMT@[3574; 3584)
+        CALL_EXPR@[3574; 3583)
+          PATH_EXPR@[3574; 3581)
+            PATH@[3574; 3581)
+              PATH_SEGMENT@[3574; 3581)
+                NAME_REF@[3574; 3581)
+                  IDENT@[3574; 3581) "strange"
+          ARG_LIST@[3581; 3583)
+            L_PAREN@[3581; 3582) "("
+            R_PAREN@[3582; 3583) ")"
+        SEMI@[3583; 3584) ";"
+      WHITESPACE@[3584; 3589) "\n    "
+      EXPR_STMT@[3589; 3597)
+        CALL_EXPR@[3589; 3596)
+          PATH_EXPR@[3589; 3594)
+            PATH@[3589; 3594)
+              PATH_SEGMENT@[3589; 3594)
+                NAME_REF@[3589; 3594)
+                  IDENT@[3589; 3594) "funny"
+          ARG_LIST@[3594; 3596)
+            L_PAREN@[3594; 3595) "("
+            R_PAREN@[3595; 3596) ")"
+        SEMI@[3596; 3597) ";"
+      WHITESPACE@[3597; 3602) "\n    "
+      EXPR_STMT@[3602; 3609)
+        CALL_EXPR@[3602; 3608)
+          PATH_EXPR@[3602; 3606)
+            PATH@[3602; 3606)
+              PATH_SEGMENT@[3602; 3606)
+                NAME_REF@[3602; 3606)
+                  IDENT@[3602; 3606) "what"
+          ARG_LIST@[3606; 3608)
+            L_PAREN@[3606; 3607) "("
+            R_PAREN@[3607; 3608) ")"
+        SEMI@[3608; 3609) ";"
+      WHITESPACE@[3609; 3614) "\n    "
+      EXPR_STMT@[3614; 3628)
+        CALL_EXPR@[3614; 3627)
+          PATH_EXPR@[3614; 3625)
+            PATH@[3614; 3625)
+              PATH_SEGMENT@[3614; 3625)
+                NAME_REF@[3614; 3625)
+                  IDENT@[3614; 3625) "zombiejesus"
+          ARG_LIST@[3625; 3627)
+            L_PAREN@[3625; 3626) "("
+            R_PAREN@[3626; 3627) ")"
+        SEMI@[3627; 3628) ";"
+      WHITESPACE@[3628; 3633) "\n    "
+      EXPR_STMT@[3633; 3643)
+        CALL_EXPR@[3633; 3642)
+          PATH_EXPR@[3633; 3640)
+            PATH@[3633; 3640)
+              PATH_SEGMENT@[3633; 3640)
+                NAME_REF@[3633; 3640)
+                  IDENT@[3633; 3640) "notsure"
+          ARG_LIST@[3640; 3642)
+            L_PAREN@[3640; 3641) "("
+            R_PAREN@[3641; 3642) ")"
+        SEMI@[3642; 3643) ";"
+      WHITESPACE@[3643; 3648) "\n    "
+      EXPR_STMT@[3648; 3664)
+        CALL_EXPR@[3648; 3663)
+          PATH_EXPR@[3648; 3661)
+            PATH@[3648; 3661)
+              PATH_SEGMENT@[3648; 3661)
+                NAME_REF@[3648; 3661)
+                  IDENT@[3648; 3661) "canttouchthis"
+          ARG_LIST@[3661; 3663)
+            L_PAREN@[3661; 3662) "("
+            R_PAREN@[3662; 3663) ")"
+        SEMI@[3663; 3664) ";"
+      WHITESPACE@[3664; 3669) "\n    "
+      EXPR_STMT@[3669; 3681)
+        CALL_EXPR@[3669; 3680)
+          PATH_EXPR@[3669; 3678)
+            PATH@[3669; 3678)
+              PATH_SEGMENT@[3669; 3678)
+                NAME_REF@[3669; 3678)
+                  IDENT@[3669; 3678) "angrydome"
+          ARG_LIST@[3678; 3680)
+            L_PAREN@[3678; 3679) "("
+            R_PAREN@[3679; 3680) ")"
+        SEMI@[3680; 3681) ";"
+      WHITESPACE@[3681; 3686) "\n    "
+      EXPR_STMT@[3686; 3701)
+        CALL_EXPR@[3686; 3700)
+          PATH_EXPR@[3686; 3698)
+            PATH@[3686; 3698)
+              PATH_SEGMENT@[3686; 3698)
+                NAME_REF@[3686; 3698)
+                  IDENT@[3686; 3698) "evil_lincoln"
+          ARG_LIST@[3698; 3700)
+            L_PAREN@[3698; 3699) "("
+            R_PAREN@[3699; 3700) ")"
+        SEMI@[3700; 3701) ";"
+      WHITESPACE@[3701; 3706) "\n    "
+      EXPR_STMT@[3706; 3713)
+        CALL_EXPR@[3706; 3712)
+          PATH_EXPR@[3706; 3710)
+            PATH@[3706; 3710)
+              PATH_SEGMENT@[3706; 3710)
+                NAME_REF@[3706; 3710)
+                  IDENT@[3706; 3710) "dots"
+          ARG_LIST@[3710; 3712)
+            L_PAREN@[3710; 3711) "("
+            R_PAREN@[3711; 3712) ")"
+        SEMI@[3712; 3713) ";"
+      WHITESPACE@[3713; 3718) "\n    "
+      EXPR_STMT@[3718; 3726)
+        CALL_EXPR@[3718; 3725)
+          PATH_EXPR@[3718; 3720)
+            PATH@[3718; 3720)
+              PATH_SEGMENT@[3718; 3720)
+                NAME_REF@[3718; 3720)
+                  IDENT@[3718; 3720) "u8"
+          ARG_LIST@[3720; 3725)
+            L_PAREN@[3720; 3721) "("
+            LITERAL@[3721; 3724)
+              INT_NUMBER@[3721; 3724) "8u8"
+            R_PAREN@[3724; 3725) ")"
+        SEMI@[3725; 3726) ";"
+      WHITESPACE@[3726; 3731) "\n    "
+      EXPR_STMT@[3731; 3739)
+        CALL_EXPR@[3731; 3738)
+          PATH_EXPR@[3731; 3736)
+            PATH@[3731; 3736)
+              PATH_SEGMENT@[3731; 3736)
+                NAME_REF@[3731; 3736)
+                  IDENT@[3731; 3736) "fishy"
+          ARG_LIST@[3736; 3738)
+            L_PAREN@[3736; 3737) "("
+            R_PAREN@[3737; 3738) ")"
+        SEMI@[3738; 3739) ";"
+      WHITESPACE@[3739; 3744) "\n    "
+      EXPR_STMT@[3744; 3752)
+        CALL_EXPR@[3744; 3751)
+          PATH_EXPR@[3744; 3749)
+            PATH@[3744; 3749)
+              PATH_SEGMENT@[3744; 3749)
+                NAME_REF@[3744; 3749)
+                  IDENT@[3744; 3749) "union"
+          ARG_LIST@[3749; 3751)
+            L_PAREN@[3749; 3750) "("
+            R_PAREN@[3750; 3751) ")"
+        SEMI@[3751; 3752) ";"
+      WHITESPACE@[3752; 3757) "\n    "
+      EXPR_STMT@[3757; 3778)
+        CALL_EXPR@[3757; 3777)
+          PATH_EXPR@[3757; 3775)
+            PATH@[3757; 3775)
+              PATH_SEGMENT@[3757; 3775)
+                NAME_REF@[3757; 3775)
+                  IDENT@[3757; 3775) "special_characters"
+          ARG_LIST@[3775; 3777)
+            L_PAREN@[3775; 3776) "("
+            R_PAREN@[3776; 3777) ")"
+        SEMI@[3777; 3778) ";"
+      WHITESPACE@[3778; 3783) "\n    "
+      EXPR_STMT@[3783; 3796)
+        CALL_EXPR@[3783; 3795)
+          PATH_EXPR@[3783; 3793)
+            PATH@[3783; 3793)
+              PATH_SEGMENT@[3783; 3793)
+                NAME_REF@[3783; 3793)
+                  IDENT@[3783; 3793) "punch_card"
+          ARG_LIST@[3793; 3795)
+            L_PAREN@[3793; 3794) "("
+            R_PAREN@[3794; 3795) ")"
+        SEMI@[3795; 3796) ";"
+      WHITESPACE@[3796; 3801) "\n    "
+      EXPR_STMT@[3801; 3810)
+        CALL_EXPR@[3801; 3809)
+          PATH_EXPR@[3801; 3807)
+            PATH@[3801; 3807)
+              PATH_SEGMENT@[3801; 3807)
+                NAME_REF@[3801; 3807)
+                  IDENT@[3801; 3807) "ktulhu"
+          ARG_LIST@[3807; 3809)
+            L_PAREN@[3807; 3808) "("
+            R_PAREN@[3808; 3809) ")"
+        SEMI@[3809; 3810) ";"
+      WHITESPACE@[3810; 3811) "\n"
+      R_CURLY@[3811; 3812) "}"
+  WHITESPACE@[3812; 3813) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rs b/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rs
new file mode 100644 (file)
index 0000000..6da2793
--- /dev/null
@@ -0,0 +1,8 @@
+// https://github.com/rust-analyzer/rust-analyzer/issues/311
+
+pub fn foo<S: Iterator>() -> String
+where
+    <S as Iterator>::Item: Eq,
+{
+    "".to_owned()
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.txt b/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.txt
new file mode 100644 (file)
index 0000000..86263c0
--- /dev/null
@@ -0,0 +1,92 @@
+SOURCE_FILE@[0; 157)
+  COMMENT@[0; 60) "// https://github.com ..."
+  WHITESPACE@[60; 62) "\n\n"
+  FN_DEF@[62; 156)
+    VISIBILITY@[62; 65)
+      PUB_KW@[62; 65) "pub"
+    WHITESPACE@[65; 66) " "
+    FN_KW@[66; 68) "fn"
+    WHITESPACE@[68; 69) " "
+    NAME@[69; 72)
+      IDENT@[69; 72) "foo"
+    TYPE_PARAM_LIST@[72; 85)
+      L_ANGLE@[72; 73) "<"
+      TYPE_PARAM@[73; 84)
+        NAME@[73; 74)
+          IDENT@[73; 74) "S"
+        COLON@[74; 75) ":"
+        WHITESPACE@[75; 76) " "
+        TYPE_BOUND_LIST@[76; 84)
+          TYPE_BOUND@[76; 84)
+            PATH_TYPE@[76; 84)
+              PATH@[76; 84)
+                PATH_SEGMENT@[76; 84)
+                  NAME_REF@[76; 84)
+                    IDENT@[76; 84) "Iterator"
+      R_ANGLE@[84; 85) ">"
+    PARAM_LIST@[85; 87)
+      L_PAREN@[85; 86) "("
+      R_PAREN@[86; 87) ")"
+    WHITESPACE@[87; 88) " "
+    RET_TYPE@[88; 97)
+      THIN_ARROW@[88; 90) "->"
+      WHITESPACE@[90; 91) " "
+      PATH_TYPE@[91; 97)
+        PATH@[91; 97)
+          PATH_SEGMENT@[91; 97)
+            NAME_REF@[91; 97)
+              IDENT@[91; 97) "String"
+    WHITESPACE@[97; 98) "\n"
+    WHERE_CLAUSE@[98; 134)
+      WHERE_KW@[98; 103) "where"
+      WHITESPACE@[103; 108) "\n    "
+      WHERE_PRED@[108; 133)
+        PATH_TYPE@[108; 129)
+          PATH@[108; 129)
+            PATH@[108; 123)
+              PATH_SEGMENT@[108; 123)
+                L_ANGLE@[108; 109) "<"
+                PATH_TYPE@[109; 110)
+                  PATH@[109; 110)
+                    PATH_SEGMENT@[109; 110)
+                      NAME_REF@[109; 110)
+                        IDENT@[109; 110) "S"
+                WHITESPACE@[110; 111) " "
+                AS_KW@[111; 113) "as"
+                WHITESPACE@[113; 114) " "
+                PATH_TYPE@[114; 122)
+                  PATH@[114; 122)
+                    PATH_SEGMENT@[114; 122)
+                      NAME_REF@[114; 122)
+                        IDENT@[114; 122) "Iterator"
+                R_ANGLE@[122; 123) ">"
+            COLONCOLON@[123; 125) "::"
+            PATH_SEGMENT@[125; 129)
+              NAME_REF@[125; 129)
+                IDENT@[125; 129) "Item"
+        COLON@[129; 130) ":"
+        WHITESPACE@[130; 131) " "
+        TYPE_BOUND_LIST@[131; 133)
+          TYPE_BOUND@[131; 133)
+            PATH_TYPE@[131; 133)
+              PATH@[131; 133)
+                PATH_SEGMENT@[131; 133)
+                  NAME_REF@[131; 133)
+                    IDENT@[131; 133) "Eq"
+      COMMA@[133; 134) ","
+    WHITESPACE@[134; 135) "\n"
+    BLOCK@[135; 156)
+      L_CURLY@[135; 136) "{"
+      WHITESPACE@[136; 141) "\n    "
+      METHOD_CALL_EXPR@[141; 154)
+        LITERAL@[141; 143)
+          STRING@[141; 143) "\"\""
+        DOT@[143; 144) "."
+        NAME_REF@[144; 152)
+          IDENT@[144; 152) "to_owned"
+        ARG_LIST@[152; 154)
+          L_PAREN@[152; 153) "("
+          R_PAREN@[153; 154) ")"
+      WHITESPACE@[154; 155) "\n"
+      R_CURLY@[155; 156) "}"
+  WHITESPACE@[156; 157) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0037_mod.rs b/crates/ra_syntax/test_data/parser/ok/0037_mod.rs
new file mode 100644 (file)
index 0000000..7e5a1b8
--- /dev/null
@@ -0,0 +1,5 @@
+// https://github.com/rust-analyzer/rust-analyzer/issues/357
+
+//! docs
+// non-docs
+mod foo {}
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0037_mod.txt b/crates/ra_syntax/test_data/parser/ok/0037_mod.txt
new file mode 100644 (file)
index 0000000..3af40a1
--- /dev/null
@@ -0,0 +1,16 @@
+SOURCE_FILE@[0; 93)
+  COMMENT@[0; 60) "// https://github.com ..."
+  WHITESPACE@[60; 62) "\n\n"
+  MODULE@[62; 93)
+    COMMENT@[62; 70) "//! docs"
+    WHITESPACE@[70; 71) "\n"
+    COMMENT@[71; 82) "// non-docs"
+    WHITESPACE@[82; 83) "\n"
+    MOD_KW@[83; 86) "mod"
+    WHITESPACE@[86; 87) " "
+    NAME@[87; 90)
+      IDENT@[87; 90) "foo"
+    WHITESPACE@[90; 91) " "
+    ITEM_LIST@[91; 93)
+      L_CURLY@[91; 92) "{"
+      R_CURLY@[92; 93) "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rs b/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rs
new file mode 100644 (file)
index 0000000..8bfc341
--- /dev/null
@@ -0,0 +1 @@
+fn test() where (u64, u64): Foo {}
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.txt b/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.txt
new file mode 100644 (file)
index 0000000..7a55074
--- /dev/null
@@ -0,0 +1,42 @@
+SOURCE_FILE@[0; 34)
+  FN_DEF@[0; 34)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 7)
+      IDENT@[3; 7) "test"
+    PARAM_LIST@[7; 9)
+      L_PAREN@[7; 8) "("
+      R_PAREN@[8; 9) ")"
+    WHITESPACE@[9; 10) " "
+    WHERE_CLAUSE@[10; 31)
+      WHERE_KW@[10; 15) "where"
+      WHITESPACE@[15; 16) " "
+      WHERE_PRED@[16; 31)
+        TUPLE_TYPE@[16; 26)
+          L_PAREN@[16; 17) "("
+          PATH_TYPE@[17; 20)
+            PATH@[17; 20)
+              PATH_SEGMENT@[17; 20)
+                NAME_REF@[17; 20)
+                  IDENT@[17; 20) "u64"
+          COMMA@[20; 21) ","
+          WHITESPACE@[21; 22) " "
+          PATH_TYPE@[22; 25)
+            PATH@[22; 25)
+              PATH_SEGMENT@[22; 25)
+                NAME_REF@[22; 25)
+                  IDENT@[22; 25) "u64"
+          R_PAREN@[25; 26) ")"
+        COLON@[26; 27) ":"
+        WHITESPACE@[27; 28) " "
+        TYPE_BOUND_LIST@[28; 31)
+          TYPE_BOUND@[28; 31)
+            PATH_TYPE@[28; 31)
+              PATH@[28; 31)
+                PATH_SEGMENT@[28; 31)
+                  NAME_REF@[28; 31)
+                    IDENT@[28; 31) "Foo"
+    WHITESPACE@[31; 32) " "
+    BLOCK@[32; 34)
+      L_CURLY@[32; 33) "{"
+      R_CURLY@[33; 34) "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rs b/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rs
new file mode 100644 (file)
index 0000000..8380d1e
--- /dev/null
@@ -0,0 +1,2 @@
+fn r#foo() {
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.txt b/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.txt
new file mode 100644 (file)
index 0000000..69fac87
--- /dev/null
@@ -0,0 +1,15 @@
+SOURCE_FILE@[0; 15)
+  FN_DEF@[0; 14)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 8)
+      IDENT@[3; 8) "r#foo"
+    PARAM_LIST@[8; 10)
+      L_PAREN@[8; 9) "("
+      R_PAREN@[9; 10) ")"
+    WHITESPACE@[10; 11) " "
+    BLOCK@[11; 14)
+      L_CURLY@[11; 12) "{"
+      WHITESPACE@[12; 13) "\n"
+      R_CURLY@[13; 14) "}"
+  WHITESPACE@[14; 15) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rs b/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rs
new file mode 100644 (file)
index 0000000..098a60a
--- /dev/null
@@ -0,0 +1,3 @@
+struct S {
+    r#foo: u32
+}
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.txt b/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.txt
new file mode 100644 (file)
index 0000000..3c71755
--- /dev/null
@@ -0,0 +1,22 @@
+SOURCE_FILE@[0; 27)
+  STRUCT_DEF@[0; 27)
+    STRUCT_KW@[0; 6) "struct"
+    WHITESPACE@[6; 7) " "
+    NAME@[7; 8)
+      IDENT@[7; 8) "S"
+    WHITESPACE@[8; 9) " "
+    NAMED_FIELD_DEF_LIST@[9; 27)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      NAMED_FIELD_DEF@[15; 25)
+        NAME@[15; 20)
+          IDENT@[15; 20) "r#foo"
+        COLON@[20; 21) ":"
+        WHITESPACE@[21; 22) " "
+        PATH_TYPE@[22; 25)
+          PATH@[22; 25)
+            PATH_SEGMENT@[22; 25)
+              NAME_REF@[22; 25)
+                IDENT@[22; 25) "u32"
+      WHITESPACE@[25; 26) "\n"
+      R_CURLY@[26; 27) "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rs b/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rs
new file mode 100644 (file)
index 0000000..d59a6d3
--- /dev/null
@@ -0,0 +1 @@
+fn foo() { let r#struct = 92; let r#trait = r#struct * 2; }
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.txt b/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.txt
new file mode 100644 (file)
index 0000000..554b52f
--- /dev/null
@@ -0,0 +1,49 @@
+SOURCE_FILE@[0; 59)
+  FN_DEF@[0; 59)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 59)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 11) " "
+      LET_STMT@[11; 29)
+        LET_KW@[11; 14) "let"
+        WHITESPACE@[14; 15) " "
+        BIND_PAT@[15; 23)
+          NAME@[15; 23)
+            IDENT@[15; 23) "r#struct"
+        WHITESPACE@[23; 24) " "
+        EQ@[24; 25) "="
+        WHITESPACE@[25; 26) " "
+        LITERAL@[26; 28)
+          INT_NUMBER@[26; 28) "92"
+        SEMI@[28; 29) ";"
+      WHITESPACE@[29; 30) " "
+      LET_STMT@[30; 57)
+        LET_KW@[30; 33) "let"
+        WHITESPACE@[33; 34) " "
+        BIND_PAT@[34; 41)
+          NAME@[34; 41)
+            IDENT@[34; 41) "r#trait"
+        WHITESPACE@[41; 42) " "
+        EQ@[42; 43) "="
+        WHITESPACE@[43; 44) " "
+        BIN_EXPR@[44; 56)
+          PATH_EXPR@[44; 52)
+            PATH@[44; 52)
+              PATH_SEGMENT@[44; 52)
+                NAME_REF@[44; 52)
+                  IDENT@[44; 52) "r#struct"
+          WHITESPACE@[52; 53) " "
+          STAR@[53; 54) "*"
+          WHITESPACE@[54; 55) " "
+          LITERAL@[55; 56)
+            INT_NUMBER@[55; 56) "2"
+        SEMI@[56; 57) ";"
+      WHITESPACE@[57; 58) " "
+      R_CURLY@[58; 59) "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rs b/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rs
new file mode 100644 (file)
index 0000000..6c02e65
--- /dev/null
@@ -0,0 +1,15 @@
+// https://github.com/rust-analyzer/rust-analyzer/issues/596
+
+struct Foo;
+
+impl Foo {
+    fn bar() -> bool {
+        unimplemented!()
+    }
+}
+
+fn baz(_: bool) {}
+
+fn main() {
+    baz(<Foo>::bar())
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.txt b/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.txt
new file mode 100644 (file)
index 0000000..1995101
--- /dev/null
@@ -0,0 +1,123 @@
+SOURCE_FILE@[0; 199)
+  COMMENT@[0; 60) "// https://github.com ..."
+  WHITESPACE@[60; 62) "\n\n"
+  STRUCT_DEF@[62; 73)
+    STRUCT_KW@[62; 68) "struct"
+    WHITESPACE@[68; 69) " "
+    NAME@[69; 72)
+      IDENT@[69; 72) "Foo"
+    SEMI@[72; 73) ";"
+  WHITESPACE@[73; 75) "\n\n"
+  IMPL_BLOCK@[75; 141)
+    IMPL_KW@[75; 79) "impl"
+    WHITESPACE@[79; 80) " "
+    PATH_TYPE@[80; 83)
+      PATH@[80; 83)
+        PATH_SEGMENT@[80; 83)
+          NAME_REF@[80; 83)
+            IDENT@[80; 83) "Foo"
+    WHITESPACE@[83; 84) " "
+    ITEM_LIST@[84; 141)
+      L_CURLY@[84; 85) "{"
+      WHITESPACE@[85; 90) "\n    "
+      FN_DEF@[90; 139)
+        FN_KW@[90; 92) "fn"
+        WHITESPACE@[92; 93) " "
+        NAME@[93; 96)
+          IDENT@[93; 96) "bar"
+        PARAM_LIST@[96; 98)
+          L_PAREN@[96; 97) "("
+          R_PAREN@[97; 98) ")"
+        WHITESPACE@[98; 99) " "
+        RET_TYPE@[99; 106)
+          THIN_ARROW@[99; 101) "->"
+          WHITESPACE@[101; 102) " "
+          PATH_TYPE@[102; 106)
+            PATH@[102; 106)
+              PATH_SEGMENT@[102; 106)
+                NAME_REF@[102; 106)
+                  IDENT@[102; 106) "bool"
+        WHITESPACE@[106; 107) " "
+        BLOCK@[107; 139)
+          L_CURLY@[107; 108) "{"
+          WHITESPACE@[108; 117) "\n        "
+          MACRO_CALL@[117; 133)
+            PATH@[117; 130)
+              PATH_SEGMENT@[117; 130)
+                NAME_REF@[117; 130)
+                  IDENT@[117; 130) "unimplemented"
+            EXCL@[130; 131) "!"
+            TOKEN_TREE@[131; 133)
+              L_PAREN@[131; 132) "("
+              R_PAREN@[132; 133) ")"
+          WHITESPACE@[133; 138) "\n    "
+          R_CURLY@[138; 139) "}"
+      WHITESPACE@[139; 140) "\n"
+      R_CURLY@[140; 141) "}"
+  WHITESPACE@[141; 143) "\n\n"
+  FN_DEF@[143; 161)
+    FN_KW@[143; 145) "fn"
+    WHITESPACE@[145; 146) " "
+    NAME@[146; 149)
+      IDENT@[146; 149) "baz"
+    PARAM_LIST@[149; 158)
+      L_PAREN@[149; 150) "("
+      PARAM@[150; 157)
+        PLACEHOLDER_PAT@[150; 151)
+          UNDERSCORE@[150; 151) "_"
+        COLON@[151; 152) ":"
+        WHITESPACE@[152; 153) " "
+        PATH_TYPE@[153; 157)
+          PATH@[153; 157)
+            PATH_SEGMENT@[153; 157)
+              NAME_REF@[153; 157)
+                IDENT@[153; 157) "bool"
+      R_PAREN@[157; 158) ")"
+    WHITESPACE@[158; 159) " "
+    BLOCK@[159; 161)
+      L_CURLY@[159; 160) "{"
+      R_CURLY@[160; 161) "}"
+  WHITESPACE@[161; 163) "\n\n"
+  FN_DEF@[163; 198)
+    FN_KW@[163; 165) "fn"
+    WHITESPACE@[165; 166) " "
+    NAME@[166; 170)
+      IDENT@[166; 170) "main"
+    PARAM_LIST@[170; 172)
+      L_PAREN@[170; 171) "("
+      R_PAREN@[171; 172) ")"
+    WHITESPACE@[172; 173) " "
+    BLOCK@[173; 198)
+      L_CURLY@[173; 174) "{"
+      WHITESPACE@[174; 179) "\n    "
+      CALL_EXPR@[179; 196)
+        PATH_EXPR@[179; 182)
+          PATH@[179; 182)
+            PATH_SEGMENT@[179; 182)
+              NAME_REF@[179; 182)
+                IDENT@[179; 182) "baz"
+        ARG_LIST@[182; 196)
+          L_PAREN@[182; 183) "("
+          CALL_EXPR@[183; 195)
+            PATH_EXPR@[183; 193)
+              PATH@[183; 193)
+                PATH@[183; 188)
+                  PATH_SEGMENT@[183; 188)
+                    L_ANGLE@[183; 184) "<"
+                    PATH_TYPE@[184; 187)
+                      PATH@[184; 187)
+                        PATH_SEGMENT@[184; 187)
+                          NAME_REF@[184; 187)
+                            IDENT@[184; 187) "Foo"
+                    R_ANGLE@[187; 188) ">"
+                COLONCOLON@[188; 190) "::"
+                PATH_SEGMENT@[190; 193)
+                  NAME_REF@[190; 193)
+                    IDENT@[190; 193) "bar"
+            ARG_LIST@[193; 195)
+              L_PAREN@[193; 194) "("
+              R_PAREN@[194; 195) ")"
+          R_PAREN@[195; 196) ")"
+      WHITESPACE@[196; 197) "\n"
+      R_CURLY@[197; 198) "}"
+  WHITESPACE@[198; 199) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rs b/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rs
new file mode 100644 (file)
index 0000000..7e4a28b
--- /dev/null
@@ -0,0 +1,8 @@
+// https://github.com/rust-analyzer/rust-analyzer/issues/674
+
+struct Repr { raw: [u8; 1] }
+
+fn abc() {
+    Repr { raw: [0] }.raw[0] = 0;
+    Repr{raw:[0]}();
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.txt b/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.txt
new file mode 100644 (file)
index 0000000..ef47521
--- /dev/null
@@ -0,0 +1,109 @@
+SOURCE_FILE@[0; 160)
+  COMMENT@[0; 60) "// https://github.com ..."
+  WHITESPACE@[60; 62) "\n\n"
+  STRUCT_DEF@[62; 90)
+    STRUCT_KW@[62; 68) "struct"
+    WHITESPACE@[68; 69) " "
+    NAME@[69; 73)
+      IDENT@[69; 73) "Repr"
+    WHITESPACE@[73; 74) " "
+    NAMED_FIELD_DEF_LIST@[74; 90)
+      L_CURLY@[74; 75) "{"
+      WHITESPACE@[75; 76) " "
+      NAMED_FIELD_DEF@[76; 88)
+        NAME@[76; 79)
+          IDENT@[76; 79) "raw"
+        COLON@[79; 80) ":"
+        WHITESPACE@[80; 81) " "
+        ARRAY_TYPE@[81; 88)
+          L_BRACK@[81; 82) "["
+          PATH_TYPE@[82; 84)
+            PATH@[82; 84)
+              PATH_SEGMENT@[82; 84)
+                NAME_REF@[82; 84)
+                  IDENT@[82; 84) "u8"
+          SEMI@[84; 85) ";"
+          WHITESPACE@[85; 86) " "
+          LITERAL@[86; 87)
+            INT_NUMBER@[86; 87) "1"
+          R_BRACK@[87; 88) "]"
+      WHITESPACE@[88; 89) " "
+      R_CURLY@[89; 90) "}"
+  WHITESPACE@[90; 92) "\n\n"
+  FN_DEF@[92; 159)
+    FN_KW@[92; 94) "fn"
+    WHITESPACE@[94; 95) " "
+    NAME@[95; 98)
+      IDENT@[95; 98) "abc"
+    PARAM_LIST@[98; 100)
+      L_PAREN@[98; 99) "("
+      R_PAREN@[99; 100) ")"
+    WHITESPACE@[100; 101) " "
+    BLOCK@[101; 159)
+      L_CURLY@[101; 102) "{"
+      WHITESPACE@[102; 107) "\n    "
+      EXPR_STMT@[107; 136)
+        BIN_EXPR@[107; 135)
+          INDEX_EXPR@[107; 131)
+            FIELD_EXPR@[107; 128)
+              STRUCT_LIT@[107; 124)
+                PATH@[107; 111)
+                  PATH_SEGMENT@[107; 111)
+                    NAME_REF@[107; 111)
+                      IDENT@[107; 111) "Repr"
+                WHITESPACE@[111; 112) " "
+                NAMED_FIELD_LIST@[112; 124)
+                  L_CURLY@[112; 113) "{"
+                  WHITESPACE@[113; 114) " "
+                  NAMED_FIELD@[114; 122)
+                    NAME_REF@[114; 117)
+                      IDENT@[114; 117) "raw"
+                    COLON@[117; 118) ":"
+                    WHITESPACE@[118; 119) " "
+                    ARRAY_EXPR@[119; 122)
+                      L_BRACK@[119; 120) "["
+                      LITERAL@[120; 121)
+                        INT_NUMBER@[120; 121) "0"
+                      R_BRACK@[121; 122) "]"
+                  WHITESPACE@[122; 123) " "
+                  R_CURLY@[123; 124) "}"
+              DOT@[124; 125) "."
+              NAME_REF@[125; 128)
+                IDENT@[125; 128) "raw"
+            L_BRACK@[128; 129) "["
+            LITERAL@[129; 130)
+              INT_NUMBER@[129; 130) "0"
+            R_BRACK@[130; 131) "]"
+          WHITESPACE@[131; 132) " "
+          EQ@[132; 133) "="
+          WHITESPACE@[133; 134) " "
+          LITERAL@[134; 135)
+            INT_NUMBER@[134; 135) "0"
+        SEMI@[135; 136) ";"
+      WHITESPACE@[136; 141) "\n    "
+      EXPR_STMT@[141; 157)
+        CALL_EXPR@[141; 156)
+          STRUCT_LIT@[141; 154)
+            PATH@[141; 145)
+              PATH_SEGMENT@[141; 145)
+                NAME_REF@[141; 145)
+                  IDENT@[141; 145) "Repr"
+            NAMED_FIELD_LIST@[145; 154)
+              L_CURLY@[145; 146) "{"
+              NAMED_FIELD@[146; 153)
+                NAME_REF@[146; 149)
+                  IDENT@[146; 149) "raw"
+                COLON@[149; 150) ":"
+                ARRAY_EXPR@[150; 153)
+                  L_BRACK@[150; 151) "["
+                  LITERAL@[151; 152)
+                    INT_NUMBER@[151; 152) "0"
+                  R_BRACK@[152; 153) "]"
+              R_CURLY@[153; 154) "}"
+          ARG_LIST@[154; 156)
+            L_PAREN@[154; 155) "("
+            R_PAREN@[155; 156) ")"
+        SEMI@[156; 157) ";"
+      WHITESPACE@[157; 158) "\n"
+      R_CURLY@[158; 159) "}"
+  WHITESPACE@[159; 160) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rs b/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rs
new file mode 100644 (file)
index 0000000..325a97a
--- /dev/null
@@ -0,0 +1,5 @@
+// https://github.com/rust-analyzer/rust-analyzer/issues/677
+fn main() {
+    #[cfg(feature = "backtrace")]
+    let exit_code = panic::catch_unwind(move || main());
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.txt b/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.txt
new file mode 100644 (file)
index 0000000..b928ada
--- /dev/null
@@ -0,0 +1,73 @@
+SOURCE_FILE@[0; 166)
+  FN_DEF@[0; 165)
+    COMMENT@[0; 60) "// https://github.com ..."
+    WHITESPACE@[60; 61) "\n"
+    FN_KW@[61; 63) "fn"
+    WHITESPACE@[63; 64) " "
+    NAME@[64; 68)
+      IDENT@[64; 68) "main"
+    PARAM_LIST@[68; 70)
+      L_PAREN@[68; 69) "("
+      R_PAREN@[69; 70) ")"
+    WHITESPACE@[70; 71) " "
+    BLOCK@[71; 165)
+      L_CURLY@[71; 72) "{"
+      WHITESPACE@[72; 77) "\n    "
+      LET_STMT@[77; 163)
+        ATTR@[77; 106)
+          POUND@[77; 78) "#"
+          TOKEN_TREE@[78; 106)
+            L_BRACK@[78; 79) "["
+            IDENT@[79; 82) "cfg"
+            TOKEN_TREE@[82; 105)
+              L_PAREN@[82; 83) "("
+              IDENT@[83; 90) "feature"
+              WHITESPACE@[90; 91) " "
+              EQ@[91; 92) "="
+              WHITESPACE@[92; 93) " "
+              STRING@[93; 104) "\"backtrace\""
+              R_PAREN@[104; 105) ")"
+            R_BRACK@[105; 106) "]"
+        WHITESPACE@[106; 111) "\n    "
+        LET_KW@[111; 114) "let"
+        WHITESPACE@[114; 115) " "
+        BIND_PAT@[115; 124)
+          NAME@[115; 124)
+            IDENT@[115; 124) "exit_code"
+        WHITESPACE@[124; 125) " "
+        EQ@[125; 126) "="
+        WHITESPACE@[126; 127) " "
+        CALL_EXPR@[127; 162)
+          PATH_EXPR@[127; 146)
+            PATH@[127; 146)
+              PATH@[127; 132)
+                PATH_SEGMENT@[127; 132)
+                  NAME_REF@[127; 132)
+                    IDENT@[127; 132) "panic"
+              COLONCOLON@[132; 134) "::"
+              PATH_SEGMENT@[134; 146)
+                NAME_REF@[134; 146)
+                  IDENT@[134; 146) "catch_unwind"
+          ARG_LIST@[146; 162)
+            L_PAREN@[146; 147) "("
+            LAMBDA_EXPR@[147; 161)
+              MOVE_KW@[147; 151) "move"
+              WHITESPACE@[151; 152) " "
+              PARAM_LIST@[152; 154)
+                PIPE@[152; 153) "|"
+                PIPE@[153; 154) "|"
+              WHITESPACE@[154; 155) " "
+              CALL_EXPR@[155; 161)
+                PATH_EXPR@[155; 159)
+                  PATH@[155; 159)
+                    PATH_SEGMENT@[155; 159)
+                      NAME_REF@[155; 159)
+                        IDENT@[155; 159) "main"
+                ARG_LIST@[159; 161)
+                  L_PAREN@[159; 160) "("
+                  R_PAREN@[160; 161) ")"
+            R_PAREN@[161; 162) ")"
+        SEMI@[162; 163) ";"
+      WHITESPACE@[163; 164) "\n"
+      R_CURLY@[164; 165) "}"
+  WHITESPACE@[165; 166) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rs b/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rs
new file mode 100644 (file)
index 0000000..88df813
--- /dev/null
@@ -0,0 +1,20 @@
+fn block() {
+    #![doc("Inner attributes allowed here")]
+    //! As are ModuleDoc style comments
+    {
+        #![doc("Inner attributes are allowed in blocks used as statements")]
+        #![doc("Being validated is not affected by duplcates")]
+        //! As are ModuleDoc style comments
+    };
+    {
+        #![doc("Inner attributes are allowed in blocks when they are the last statement of another block")]
+        //! As are ModuleDoc style comments
+    }
+}
+
+// https://github.com/rust-analyzer/rust-analyzer/issues/689
+impl Whatever {
+    fn salsa_event(&self, event_fn: impl Fn() -> Event<Self>) {
+        #![allow(unused_variables)] // this is  `inner_attr` of the block
+    }
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.txt b/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.txt
new file mode 100644 (file)
index 0000000..f6d3bf3
--- /dev/null
@@ -0,0 +1,169 @@
+SOURCE_FILE@[0; 686)
+  FN_DEF@[0; 461)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 8)
+      IDENT@[3; 8) "block"
+    PARAM_LIST@[8; 10)
+      L_PAREN@[8; 9) "("
+      R_PAREN@[9; 10) ")"
+    WHITESPACE@[10; 11) " "
+    BLOCK@[11; 461)
+      L_CURLY@[11; 12) "{"
+      WHITESPACE@[12; 17) "\n    "
+      ATTR@[17; 57)
+        POUND@[17; 18) "#"
+        EXCL@[18; 19) "!"
+        TOKEN_TREE@[19; 57)
+          L_BRACK@[19; 20) "["
+          IDENT@[20; 23) "doc"
+          TOKEN_TREE@[23; 56)
+            L_PAREN@[23; 24) "("
+            STRING@[24; 55) "\"Inner attributes all ..."
+            R_PAREN@[55; 56) ")"
+          R_BRACK@[56; 57) "]"
+      WHITESPACE@[57; 62) "\n    "
+      COMMENT@[62; 97) "//! As are ModuleDoc  ..."
+      WHITESPACE@[97; 102) "\n    "
+      EXPR_STMT@[102; 295)
+        BLOCK_EXPR@[102; 294)
+          BLOCK@[102; 294)
+            L_CURLY@[102; 103) "{"
+            WHITESPACE@[103; 112) "\n        "
+            ATTR@[112; 180)
+              POUND@[112; 113) "#"
+              EXCL@[113; 114) "!"
+              TOKEN_TREE@[114; 180)
+                L_BRACK@[114; 115) "["
+                IDENT@[115; 118) "doc"
+                TOKEN_TREE@[118; 179)
+                  L_PAREN@[118; 119) "("
+                  STRING@[119; 178) "\"Inner attributes are ..."
+                  R_PAREN@[178; 179) ")"
+                R_BRACK@[179; 180) "]"
+            WHITESPACE@[180; 189) "\n        "
+            ATTR@[189; 244)
+              POUND@[189; 190) "#"
+              EXCL@[190; 191) "!"
+              TOKEN_TREE@[191; 244)
+                L_BRACK@[191; 192) "["
+                IDENT@[192; 195) "doc"
+                TOKEN_TREE@[195; 243)
+                  L_PAREN@[195; 196) "("
+                  STRING@[196; 242) "\"Being validated is n ..."
+                  R_PAREN@[242; 243) ")"
+                R_BRACK@[243; 244) "]"
+            WHITESPACE@[244; 253) "\n        "
+            COMMENT@[253; 288) "//! As are ModuleDoc  ..."
+            WHITESPACE@[288; 293) "\n    "
+            R_CURLY@[293; 294) "}"
+        SEMI@[294; 295) ";"
+      WHITESPACE@[295; 300) "\n    "
+      BLOCK_EXPR@[300; 459)
+        BLOCK@[300; 459)
+          L_CURLY@[300; 301) "{"
+          WHITESPACE@[301; 310) "\n        "
+          ATTR@[310; 409)
+            POUND@[310; 311) "#"
+            EXCL@[311; 312) "!"
+            TOKEN_TREE@[312; 409)
+              L_BRACK@[312; 313) "["
+              IDENT@[313; 316) "doc"
+              TOKEN_TREE@[316; 408)
+                L_PAREN@[316; 317) "("
+                STRING@[317; 407) "\"Inner attributes are ..."
+                R_PAREN@[407; 408) ")"
+              R_BRACK@[408; 409) "]"
+          WHITESPACE@[409; 418) "\n        "
+          COMMENT@[418; 453) "//! As are ModuleDoc  ..."
+          WHITESPACE@[453; 458) "\n    "
+          R_CURLY@[458; 459) "}"
+      WHITESPACE@[459; 460) "\n"
+      R_CURLY@[460; 461) "}"
+  WHITESPACE@[461; 463) "\n\n"
+  COMMENT@[463; 523) "// https://github.com ..."
+  WHITESPACE@[523; 524) "\n"
+  IMPL_BLOCK@[524; 685)
+    IMPL_KW@[524; 528) "impl"
+    WHITESPACE@[528; 529) " "
+    PATH_TYPE@[529; 537)
+      PATH@[529; 537)
+        PATH_SEGMENT@[529; 537)
+          NAME_REF@[529; 537)
+            IDENT@[529; 537) "Whatever"
+    WHITESPACE@[537; 538) " "
+    ITEM_LIST@[538; 685)
+      L_CURLY@[538; 539) "{"
+      WHITESPACE@[539; 544) "\n    "
+      FN_DEF@[544; 683)
+        FN_KW@[544; 546) "fn"
+        WHITESPACE@[546; 547) " "
+        NAME@[547; 558)
+          IDENT@[547; 558) "salsa_event"
+        PARAM_LIST@[558; 601)
+          L_PAREN@[558; 559) "("
+          SELF_PARAM@[559; 564)
+            AMP@[559; 560) "&"
+            SELF_KW@[560; 564) "self"
+          COMMA@[564; 565) ","
+          WHITESPACE@[565; 566) " "
+          PARAM@[566; 600)
+            BIND_PAT@[566; 574)
+              NAME@[566; 574)
+                IDENT@[566; 574) "event_fn"
+            COLON@[574; 575) ":"
+            WHITESPACE@[575; 576) " "
+            IMPL_TRAIT_TYPE@[576; 600)
+              IMPL_KW@[576; 580) "impl"
+              WHITESPACE@[580; 581) " "
+              TYPE_BOUND_LIST@[581; 600)
+                TYPE_BOUND@[581; 600)
+                  PATH_TYPE@[581; 600)
+                    PATH@[581; 600)
+                      PATH_SEGMENT@[581; 600)
+                        NAME_REF@[581; 583)
+                          IDENT@[581; 583) "Fn"
+                        PARAM_LIST@[583; 585)
+                          L_PAREN@[583; 584) "("
+                          R_PAREN@[584; 585) ")"
+                        WHITESPACE@[585; 586) " "
+                        RET_TYPE@[586; 600)
+                          THIN_ARROW@[586; 588) "->"
+                          WHITESPACE@[588; 589) " "
+                          PATH_TYPE@[589; 600)
+                            PATH@[589; 600)
+                              PATH_SEGMENT@[589; 600)
+                                NAME_REF@[589; 594)
+                                  IDENT@[589; 594) "Event"
+                                TYPE_ARG_LIST@[594; 600)
+                                  L_ANGLE@[594; 595) "<"
+                                  TYPE_ARG@[595; 599)
+                                    PATH_TYPE@[595; 599)
+                                      PATH@[595; 599)
+                                        PATH_SEGMENT@[595; 599)
+                                          NAME_REF@[595; 599)
+                                            IDENT@[595; 599) "Self"
+                                  R_ANGLE@[599; 600) ">"
+          R_PAREN@[600; 601) ")"
+        WHITESPACE@[601; 602) " "
+        BLOCK@[602; 683)
+          L_CURLY@[602; 603) "{"
+          WHITESPACE@[603; 612) "\n        "
+          ATTR@[612; 639)
+            POUND@[612; 613) "#"
+            EXCL@[613; 614) "!"
+            TOKEN_TREE@[614; 639)
+              L_BRACK@[614; 615) "["
+              IDENT@[615; 620) "allow"
+              TOKEN_TREE@[620; 638)
+                L_PAREN@[620; 621) "("
+                IDENT@[621; 637) "unused_variables"
+                R_PAREN@[637; 638) ")"
+              R_BRACK@[638; 639) "]"
+          WHITESPACE@[639; 640) " "
+          COMMENT@[640; 677) "// this is  `inner_at ..."
+          WHITESPACE@[677; 682) "\n    "
+          R_CURLY@[682; 683) "}"
+      WHITESPACE@[683; 684) "\n"
+      R_CURLY@[684; 685) "}"
+  WHITESPACE@[685; 686) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rs b/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rs
new file mode 100644 (file)
index 0000000..fe67e2d
--- /dev/null
@@ -0,0 +1,4 @@
+extern "C" {
+    //! This is a doc comment
+    #![doc("This is also a doc comment")]
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.txt b/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.txt
new file mode 100644 (file)
index 0000000..4487a6e
--- /dev/null
@@ -0,0 +1,26 @@
+SOURCE_FILE@[0; 87)
+  EXTERN_BLOCK@[0; 86)
+    ABI@[0; 10)
+      EXTERN_KW@[0; 6) "extern"
+      WHITESPACE@[6; 7) " "
+      STRING@[7; 10) "\"C\""
+    WHITESPACE@[10; 11) " "
+    EXTERN_ITEM_LIST@[11; 86)
+      L_CURLY@[11; 12) "{"
+      WHITESPACE@[12; 17) "\n    "
+      COMMENT@[17; 42) "//! This is a doc com ..."
+      WHITESPACE@[42; 47) "\n    "
+      ATTR@[47; 84)
+        POUND@[47; 48) "#"
+        EXCL@[48; 49) "!"
+        TOKEN_TREE@[49; 84)
+          L_BRACK@[49; 50) "["
+          IDENT@[50; 53) "doc"
+          TOKEN_TREE@[53; 83)
+            L_PAREN@[53; 54) "("
+            STRING@[54; 82) "\"This is also a doc c ..."
+            R_PAREN@[82; 83) ")"
+          R_BRACK@[83; 84) "]"
+      WHITESPACE@[84; 85) "\n"
+      R_CURLY@[85; 86) "}"
+  WHITESPACE@[86; 87) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rs b/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rs
new file mode 100644 (file)
index 0000000..bbd6b0f
--- /dev/null
@@ -0,0 +1,27 @@
+// https://github.com/rust-analyzer/rust-analyzer/issues/972
+
+fn main() {
+    match Some(-1) {
+        Some(-1) => (),
+        _ => (),
+    }
+
+    match Some((-1, -1)) {
+        Some((-1, -1)) => (),
+        _ => (),
+    }
+
+    match A::B(-1, -1) {
+        A::B(-1, -1) => (),
+        _ => (),
+    }
+
+    if let Some(-1) = Some(-1) {
+    }
+}
+
+enum A {
+    B(i8, i8)
+}
+
+fn foo(-128..=127: i8) {}
diff --git a/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.txt b/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.txt
new file mode 100644 (file)
index 0000000..917b50d
--- /dev/null
@@ -0,0 +1,320 @@
+SOURCE_FILE@[0; 395)
+  COMMENT@[0; 60) "// https://github.com ..."
+  WHITESPACE@[60; 62) "\n\n"
+  FN_DEF@[62; 341)
+    FN_KW@[62; 64) "fn"
+    WHITESPACE@[64; 65) " "
+    NAME@[65; 69)
+      IDENT@[65; 69) "main"
+    PARAM_LIST@[69; 71)
+      L_PAREN@[69; 70) "("
+      R_PAREN@[70; 71) ")"
+    WHITESPACE@[71; 72) " "
+    BLOCK@[72; 341)
+      L_CURLY@[72; 73) "{"
+      WHITESPACE@[73; 78) "\n    "
+      EXPR_STMT@[78; 141)
+        MATCH_EXPR@[78; 141)
+          MATCH_KW@[78; 83) "match"
+          WHITESPACE@[83; 84) " "
+          CALL_EXPR@[84; 92)
+            PATH_EXPR@[84; 88)
+              PATH@[84; 88)
+                PATH_SEGMENT@[84; 88)
+                  NAME_REF@[84; 88)
+                    IDENT@[84; 88) "Some"
+            ARG_LIST@[88; 92)
+              L_PAREN@[88; 89) "("
+              PREFIX_EXPR@[89; 91)
+                MINUS@[89; 90) "-"
+                LITERAL@[90; 91)
+                  INT_NUMBER@[90; 91) "1"
+              R_PAREN@[91; 92) ")"
+          WHITESPACE@[92; 93) " "
+          MATCH_ARM_LIST@[93; 141)
+            L_CURLY@[93; 94) "{"
+            WHITESPACE@[94; 103) "\n        "
+            MATCH_ARM@[103; 117)
+              TUPLE_STRUCT_PAT@[103; 111)
+                PATH@[103; 107)
+                  PATH_SEGMENT@[103; 107)
+                    NAME_REF@[103; 107)
+                      IDENT@[103; 107) "Some"
+                L_PAREN@[107; 108) "("
+                LITERAL_PAT@[108; 110)
+                  MINUS@[108; 109) "-"
+                  LITERAL@[109; 110)
+                    INT_NUMBER@[109; 110) "1"
+                R_PAREN@[110; 111) ")"
+              WHITESPACE@[111; 112) " "
+              FAT_ARROW@[112; 114) "=>"
+              WHITESPACE@[114; 115) " "
+              TUPLE_EXPR@[115; 117)
+                L_PAREN@[115; 116) "("
+                R_PAREN@[116; 117) ")"
+            COMMA@[117; 118) ","
+            WHITESPACE@[118; 127) "\n        "
+            MATCH_ARM@[127; 134)
+              PLACEHOLDER_PAT@[127; 128)
+                UNDERSCORE@[127; 128) "_"
+              WHITESPACE@[128; 129) " "
+              FAT_ARROW@[129; 131) "=>"
+              WHITESPACE@[131; 132) " "
+              TUPLE_EXPR@[132; 134)
+                L_PAREN@[132; 133) "("
+                R_PAREN@[133; 134) ")"
+            COMMA@[134; 135) ","
+            WHITESPACE@[135; 140) "\n    "
+            R_CURLY@[140; 141) "}"
+      WHITESPACE@[141; 147) "\n\n    "
+      EXPR_STMT@[147; 222)
+        MATCH_EXPR@[147; 222)
+          MATCH_KW@[147; 152) "match"
+          WHITESPACE@[152; 153) " "
+          CALL_EXPR@[153; 167)
+            PATH_EXPR@[153; 157)
+              PATH@[153; 157)
+                PATH_SEGMENT@[153; 157)
+                  NAME_REF@[153; 157)
+                    IDENT@[153; 157) "Some"
+            ARG_LIST@[157; 167)
+              L_PAREN@[157; 158) "("
+              TUPLE_EXPR@[158; 166)
+                L_PAREN@[158; 159) "("
+                PREFIX_EXPR@[159; 161)
+                  MINUS@[159; 160) "-"
+                  LITERAL@[160; 161)
+                    INT_NUMBER@[160; 161) "1"
+                COMMA@[161; 162) ","
+                WHITESPACE@[162; 163) " "
+                PREFIX_EXPR@[163; 165)
+                  MINUS@[163; 164) "-"
+                  LITERAL@[164; 165)
+                    INT_NUMBER@[164; 165) "1"
+                R_PAREN@[165; 166) ")"
+              R_PAREN@[166; 167) ")"
+          WHITESPACE@[167; 168) " "
+          MATCH_ARM_LIST@[168; 222)
+            L_CURLY@[168; 169) "{"
+            WHITESPACE@[169; 178) "\n        "
+            MATCH_ARM@[178; 198)
+              TUPLE_STRUCT_PAT@[178; 192)
+                PATH@[178; 182)
+                  PATH_SEGMENT@[178; 182)
+                    NAME_REF@[178; 182)
+                      IDENT@[178; 182) "Some"
+                L_PAREN@[182; 183) "("
+                TUPLE_PAT@[183; 191)
+                  L_PAREN@[183; 184) "("
+                  LITERAL_PAT@[184; 186)
+                    MINUS@[184; 185) "-"
+                    LITERAL@[185; 186)
+                      INT_NUMBER@[185; 186) "1"
+                  COMMA@[186; 187) ","
+                  WHITESPACE@[187; 188) " "
+                  LITERAL_PAT@[188; 190)
+                    MINUS@[188; 189) "-"
+                    LITERAL@[189; 190)
+                      INT_NUMBER@[189; 190) "1"
+                  R_PAREN@[190; 191) ")"
+                R_PAREN@[191; 192) ")"
+              WHITESPACE@[192; 193) " "
+              FAT_ARROW@[193; 195) "=>"
+              WHITESPACE@[195; 196) " "
+              TUPLE_EXPR@[196; 198)
+                L_PAREN@[196; 197) "("
+                R_PAREN@[197; 198) ")"
+            COMMA@[198; 199) ","
+            WHITESPACE@[199; 208) "\n        "
+            MATCH_ARM@[208; 215)
+              PLACEHOLDER_PAT@[208; 209)
+                UNDERSCORE@[208; 209) "_"
+              WHITESPACE@[209; 210) " "
+              FAT_ARROW@[210; 212) "=>"
+              WHITESPACE@[212; 213) " "
+              TUPLE_EXPR@[213; 215)
+                L_PAREN@[213; 214) "("
+                R_PAREN@[214; 215) ")"
+            COMMA@[215; 216) ","
+            WHITESPACE@[216; 221) "\n    "
+            R_CURLY@[221; 222) "}"
+      WHITESPACE@[222; 228) "\n\n    "
+      EXPR_STMT@[228; 299)
+        MATCH_EXPR@[228; 299)
+          MATCH_KW@[228; 233) "match"
+          WHITESPACE@[233; 234) " "
+          CALL_EXPR@[234; 246)
+            PATH_EXPR@[234; 238)
+              PATH@[234; 238)
+                PATH@[234; 235)
+                  PATH_SEGMENT@[234; 235)
+                    NAME_REF@[234; 235)
+                      IDENT@[234; 235) "A"
+                COLONCOLON@[235; 237) "::"
+                PATH_SEGMENT@[237; 238)
+                  NAME_REF@[237; 238)
+                    IDENT@[237; 238) "B"
+            ARG_LIST@[238; 246)
+              L_PAREN@[238; 239) "("
+              PREFIX_EXPR@[239; 241)
+                MINUS@[239; 240) "-"
+                LITERAL@[240; 241)
+                  INT_NUMBER@[240; 241) "1"
+              COMMA@[241; 242) ","
+              WHITESPACE@[242; 243) " "
+              PREFIX_EXPR@[243; 245)
+                MINUS@[243; 244) "-"
+                LITERAL@[244; 245)
+                  INT_NUMBER@[244; 245) "1"
+              R_PAREN@[245; 246) ")"
+          WHITESPACE@[246; 247) " "
+          MATCH_ARM_LIST@[247; 299)
+            L_CURLY@[247; 248) "{"
+            WHITESPACE@[248; 257) "\n        "
+            MATCH_ARM@[257; 275)
+              TUPLE_STRUCT_PAT@[257; 269)
+                PATH@[257; 261)
+                  PATH@[257; 258)
+                    PATH_SEGMENT@[257; 258)
+                      NAME_REF@[257; 258)
+                        IDENT@[257; 258) "A"
+                  COLONCOLON@[258; 260) "::"
+                  PATH_SEGMENT@[260; 261)
+                    NAME_REF@[260; 261)
+                      IDENT@[260; 261) "B"
+                L_PAREN@[261; 262) "("
+                LITERAL_PAT@[262; 264)
+                  MINUS@[262; 263) "-"
+                  LITERAL@[263; 264)
+                    INT_NUMBER@[263; 264) "1"
+                COMMA@[264; 265) ","
+                WHITESPACE@[265; 266) " "
+                LITERAL_PAT@[266; 268)
+                  MINUS@[266; 267) "-"
+                  LITERAL@[267; 268)
+                    INT_NUMBER@[267; 268) "1"
+                R_PAREN@[268; 269) ")"
+              WHITESPACE@[269; 270) " "
+              FAT_ARROW@[270; 272) "=>"
+              WHITESPACE@[272; 273) " "
+              TUPLE_EXPR@[273; 275)
+                L_PAREN@[273; 274) "("
+                R_PAREN@[274; 275) ")"
+            COMMA@[275; 276) ","
+            WHITESPACE@[276; 285) "\n        "
+            MATCH_ARM@[285; 292)
+              PLACEHOLDER_PAT@[285; 286)
+                UNDERSCORE@[285; 286) "_"
+              WHITESPACE@[286; 287) " "
+              FAT_ARROW@[287; 289) "=>"
+              WHITESPACE@[289; 290) " "
+              TUPLE_EXPR@[290; 292)
+                L_PAREN@[290; 291) "("
+                R_PAREN@[291; 292) ")"
+            COMMA@[292; 293) ","
+            WHITESPACE@[293; 298) "\n    "
+            R_CURLY@[298; 299) "}"
+      WHITESPACE@[299; 305) "\n\n    "
+      IF_EXPR@[305; 339)
+        IF_KW@[305; 307) "if"
+        WHITESPACE@[307; 308) " "
+        CONDITION@[308; 331)
+          LET_KW@[308; 311) "let"
+          WHITESPACE@[311; 312) " "
+          TUPLE_STRUCT_PAT@[312; 320)
+            PATH@[312; 316)
+              PATH_SEGMENT@[312; 316)
+                NAME_REF@[312; 316)
+                  IDENT@[312; 316) "Some"
+            L_PAREN@[316; 317) "("
+            LITERAL_PAT@[317; 319)
+              MINUS@[317; 318) "-"
+              LITERAL@[318; 319)
+                INT_NUMBER@[318; 319) "1"
+            R_PAREN@[319; 320) ")"
+          WHITESPACE@[320; 321) " "
+          EQ@[321; 322) "="
+          WHITESPACE@[322; 323) " "
+          CALL_EXPR@[323; 331)
+            PATH_EXPR@[323; 327)
+              PATH@[323; 327)
+                PATH_SEGMENT@[323; 327)
+                  NAME_REF@[323; 327)
+                    IDENT@[323; 327) "Some"
+            ARG_LIST@[327; 331)
+              L_PAREN@[327; 328) "("
+              PREFIX_EXPR@[328; 330)
+                MINUS@[328; 329) "-"
+                LITERAL@[329; 330)
+                  INT_NUMBER@[329; 330) "1"
+              R_PAREN@[330; 331) ")"
+        WHITESPACE@[331; 332) " "
+        BLOCK@[332; 339)
+          L_CURLY@[332; 333) "{"
+          WHITESPACE@[333; 338) "\n    "
+          R_CURLY@[338; 339) "}"
+      WHITESPACE@[339; 340) "\n"
+      R_CURLY@[340; 341) "}"
+  WHITESPACE@[341; 343) "\n\n"
+  ENUM_DEF@[343; 367)
+    ENUM_KW@[343; 347) "enum"
+    WHITESPACE@[347; 348) " "
+    NAME@[348; 349)
+      IDENT@[348; 349) "A"
+    WHITESPACE@[349; 350) " "
+    ENUM_VARIANT_LIST@[350; 367)
+      L_CURLY@[350; 351) "{"
+      WHITESPACE@[351; 356) "\n    "
+      ENUM_VARIANT@[356; 365)
+        NAME@[356; 357)
+          IDENT@[356; 357) "B"
+        POS_FIELD_DEF_LIST@[357; 365)
+          L_PAREN@[357; 358) "("
+          POS_FIELD_DEF@[358; 360)
+            PATH_TYPE@[358; 360)
+              PATH@[358; 360)
+                PATH_SEGMENT@[358; 360)
+                  NAME_REF@[358; 360)
+                    IDENT@[358; 360) "i8"
+          COMMA@[360; 361) ","
+          WHITESPACE@[361; 362) " "
+          POS_FIELD_DEF@[362; 364)
+            PATH_TYPE@[362; 364)
+              PATH@[362; 364)
+                PATH_SEGMENT@[362; 364)
+                  NAME_REF@[362; 364)
+                    IDENT@[362; 364) "i8"
+          R_PAREN@[364; 365) ")"
+      WHITESPACE@[365; 366) "\n"
+      R_CURLY@[366; 367) "}"
+  WHITESPACE@[367; 369) "\n\n"
+  FN_DEF@[369; 394)
+    FN_KW@[369; 371) "fn"
+    WHITESPACE@[371; 372) " "
+    NAME@[372; 375)
+      IDENT@[372; 375) "foo"
+    PARAM_LIST@[375; 391)
+      L_PAREN@[375; 376) "("
+      PARAM@[376; 390)
+        RANGE_PAT@[376; 386)
+          LITERAL_PAT@[376; 380)
+            MINUS@[376; 377) "-"
+            LITERAL@[377; 380)
+              INT_NUMBER@[377; 380) "128"
+          DOTDOTEQ@[380; 383) "..="
+          LITERAL_PAT@[383; 386)
+            LITERAL@[383; 386)
+              INT_NUMBER@[383; 386) "127"
+        COLON@[386; 387) ":"
+        WHITESPACE@[387; 388) " "
+        PATH_TYPE@[388; 390)
+          PATH@[388; 390)
+            PATH_SEGMENT@[388; 390)
+              NAME_REF@[388; 390)
+                IDENT@[388; 390) "i8"
+      R_PAREN@[390; 391) ")"
+    WHITESPACE@[391; 392) " "
+    BLOCK@[392; 394)
+      L_CURLY@[392; 393) "{"
+      R_CURLY@[393; 394) "}"
+  WHITESPACE@[394; 395) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rs b/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rs
new file mode 100644 (file)
index 0000000..871720a
--- /dev/null
@@ -0,0 +1,17 @@
+// https://github.com/rust-analyzer/rust-analyzer/pull/983
+
+fn compound_assignment() {
+    let mut a = 0;
+    a += 1;
+    a -= 2;
+    a *= 3;
+    a %= 4;
+    a /= 5;
+    a |= 6;
+    a &= 7;
+    a ^= 8;
+    a <= 9;
+    a >= 10;
+    a >>= 11;
+    a <<= 12;
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.txt b/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.txt
new file mode 100644 (file)
index 0000000..3fca499
--- /dev/null
@@ -0,0 +1,200 @@
+SOURCE_FILE@[0; 257)
+  COMMENT@[0; 58) "// https://github.com ..."
+  WHITESPACE@[58; 60) "\n\n"
+  FN_DEF@[60; 256)
+    FN_KW@[60; 62) "fn"
+    WHITESPACE@[62; 63) " "
+    NAME@[63; 82)
+      IDENT@[63; 82) "compound_assignment"
+    PARAM_LIST@[82; 84)
+      L_PAREN@[82; 83) "("
+      R_PAREN@[83; 84) ")"
+    WHITESPACE@[84; 85) " "
+    BLOCK@[85; 256)
+      L_CURLY@[85; 86) "{"
+      WHITESPACE@[86; 91) "\n    "
+      LET_STMT@[91; 105)
+        LET_KW@[91; 94) "let"
+        WHITESPACE@[94; 95) " "
+        BIND_PAT@[95; 100)
+          MUT_KW@[95; 98) "mut"
+          WHITESPACE@[98; 99) " "
+          NAME@[99; 100)
+            IDENT@[99; 100) "a"
+        WHITESPACE@[100; 101) " "
+        EQ@[101; 102) "="
+        WHITESPACE@[102; 103) " "
+        LITERAL@[103; 104)
+          INT_NUMBER@[103; 104) "0"
+        SEMI@[104; 105) ";"
+      WHITESPACE@[105; 110) "\n    "
+      EXPR_STMT@[110; 117)
+        BIN_EXPR@[110; 116)
+          PATH_EXPR@[110; 111)
+            PATH@[110; 111)
+              PATH_SEGMENT@[110; 111)
+                NAME_REF@[110; 111)
+                  IDENT@[110; 111) "a"
+          WHITESPACE@[111; 112) " "
+          PLUSEQ@[112; 114) "+="
+          WHITESPACE@[114; 115) " "
+          LITERAL@[115; 116)
+            INT_NUMBER@[115; 116) "1"
+        SEMI@[116; 117) ";"
+      WHITESPACE@[117; 122) "\n    "
+      EXPR_STMT@[122; 129)
+        BIN_EXPR@[122; 128)
+          PATH_EXPR@[122; 123)
+            PATH@[122; 123)
+              PATH_SEGMENT@[122; 123)
+                NAME_REF@[122; 123)
+                  IDENT@[122; 123) "a"
+          WHITESPACE@[123; 124) " "
+          MINUSEQ@[124; 126) "-="
+          WHITESPACE@[126; 127) " "
+          LITERAL@[127; 128)
+            INT_NUMBER@[127; 128) "2"
+        SEMI@[128; 129) ";"
+      WHITESPACE@[129; 134) "\n    "
+      EXPR_STMT@[134; 141)
+        BIN_EXPR@[134; 140)
+          PATH_EXPR@[134; 135)
+            PATH@[134; 135)
+              PATH_SEGMENT@[134; 135)
+                NAME_REF@[134; 135)
+                  IDENT@[134; 135) "a"
+          WHITESPACE@[135; 136) " "
+          STAREQ@[136; 138) "*="
+          WHITESPACE@[138; 139) " "
+          LITERAL@[139; 140)
+            INT_NUMBER@[139; 140) "3"
+        SEMI@[140; 141) ";"
+      WHITESPACE@[141; 146) "\n    "
+      EXPR_STMT@[146; 153)
+        BIN_EXPR@[146; 152)
+          PATH_EXPR@[146; 147)
+            PATH@[146; 147)
+              PATH_SEGMENT@[146; 147)
+                NAME_REF@[146; 147)
+                  IDENT@[146; 147) "a"
+          WHITESPACE@[147; 148) " "
+          PERCENTEQ@[148; 150) "%="
+          WHITESPACE@[150; 151) " "
+          LITERAL@[151; 152)
+            INT_NUMBER@[151; 152) "4"
+        SEMI@[152; 153) ";"
+      WHITESPACE@[153; 158) "\n    "
+      EXPR_STMT@[158; 165)
+        BIN_EXPR@[158; 164)
+          PATH_EXPR@[158; 159)
+            PATH@[158; 159)
+              PATH_SEGMENT@[158; 159)
+                NAME_REF@[158; 159)
+                  IDENT@[158; 159) "a"
+          WHITESPACE@[159; 160) " "
+          SLASHEQ@[160; 162) "/="
+          WHITESPACE@[162; 163) " "
+          LITERAL@[163; 164)
+            INT_NUMBER@[163; 164) "5"
+        SEMI@[164; 165) ";"
+      WHITESPACE@[165; 170) "\n    "
+      EXPR_STMT@[170; 177)
+        BIN_EXPR@[170; 176)
+          PATH_EXPR@[170; 171)
+            PATH@[170; 171)
+              PATH_SEGMENT@[170; 171)
+                NAME_REF@[170; 171)
+                  IDENT@[170; 171) "a"
+          WHITESPACE@[171; 172) " "
+          PIPEEQ@[172; 174) "|="
+          WHITESPACE@[174; 175) " "
+          LITERAL@[175; 176)
+            INT_NUMBER@[175; 176) "6"
+        SEMI@[176; 177) ";"
+      WHITESPACE@[177; 182) "\n    "
+      EXPR_STMT@[182; 189)
+        BIN_EXPR@[182; 188)
+          PATH_EXPR@[182; 183)
+            PATH@[182; 183)
+              PATH_SEGMENT@[182; 183)
+                NAME_REF@[182; 183)
+                  IDENT@[182; 183) "a"
+          WHITESPACE@[183; 184) " "
+          AMPEQ@[184; 186) "&="
+          WHITESPACE@[186; 187) " "
+          LITERAL@[187; 188)
+            INT_NUMBER@[187; 188) "7"
+        SEMI@[188; 189) ";"
+      WHITESPACE@[189; 194) "\n    "
+      EXPR_STMT@[194; 201)
+        BIN_EXPR@[194; 200)
+          PATH_EXPR@[194; 195)
+            PATH@[194; 195)
+              PATH_SEGMENT@[194; 195)
+                NAME_REF@[194; 195)
+                  IDENT@[194; 195) "a"
+          WHITESPACE@[195; 196) " "
+          CARETEQ@[196; 198) "^="
+          WHITESPACE@[198; 199) " "
+          LITERAL@[199; 200)
+            INT_NUMBER@[199; 200) "8"
+        SEMI@[200; 201) ";"
+      WHITESPACE@[201; 206) "\n    "
+      EXPR_STMT@[206; 213)
+        BIN_EXPR@[206; 212)
+          PATH_EXPR@[206; 207)
+            PATH@[206; 207)
+              PATH_SEGMENT@[206; 207)
+                NAME_REF@[206; 207)
+                  IDENT@[206; 207) "a"
+          WHITESPACE@[207; 208) " "
+          LTEQ@[208; 210) "<="
+          WHITESPACE@[210; 211) " "
+          LITERAL@[211; 212)
+            INT_NUMBER@[211; 212) "9"
+        SEMI@[212; 213) ";"
+      WHITESPACE@[213; 218) "\n    "
+      EXPR_STMT@[218; 226)
+        BIN_EXPR@[218; 225)
+          PATH_EXPR@[218; 219)
+            PATH@[218; 219)
+              PATH_SEGMENT@[218; 219)
+                NAME_REF@[218; 219)
+                  IDENT@[218; 219) "a"
+          WHITESPACE@[219; 220) " "
+          GTEQ@[220; 222) ">="
+          WHITESPACE@[222; 223) " "
+          LITERAL@[223; 225)
+            INT_NUMBER@[223; 225) "10"
+        SEMI@[225; 226) ";"
+      WHITESPACE@[226; 231) "\n    "
+      EXPR_STMT@[231; 240)
+        BIN_EXPR@[231; 239)
+          PATH_EXPR@[231; 232)
+            PATH@[231; 232)
+              PATH_SEGMENT@[231; 232)
+                NAME_REF@[231; 232)
+                  IDENT@[231; 232) "a"
+          WHITESPACE@[232; 233) " "
+          SHREQ@[233; 236) ">>="
+          WHITESPACE@[236; 237) " "
+          LITERAL@[237; 239)
+            INT_NUMBER@[237; 239) "11"
+        SEMI@[239; 240) ";"
+      WHITESPACE@[240; 245) "\n    "
+      EXPR_STMT@[245; 254)
+        BIN_EXPR@[245; 253)
+          PATH_EXPR@[245; 246)
+            PATH@[245; 246)
+              PATH_SEGMENT@[245; 246)
+                NAME_REF@[245; 246)
+                  IDENT@[245; 246) "a"
+          WHITESPACE@[246; 247) " "
+          SHLEQ@[247; 250) "<<="
+          WHITESPACE@[250; 251) " "
+          LITERAL@[251; 253)
+            INT_NUMBER@[251; 253) "12"
+        SEMI@[253; 254) ";"
+      WHITESPACE@[254; 255) "\n"
+      R_CURLY@[255; 256) "}"
+  WHITESPACE@[256; 257) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0049_async_block.rs b/crates/ra_syntax/test_data/parser/ok/0049_async_block.rs
new file mode 100644 (file)
index 0000000..4781b32
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo() {
+    async {};
+    async move {};
+}
+
diff --git a/crates/ra_syntax/test_data/parser/ok/0049_async_block.txt b/crates/ra_syntax/test_data/parser/ok/0049_async_block.txt
new file mode 100644 (file)
index 0000000..517982d
--- /dev/null
@@ -0,0 +1,35 @@
+SOURCE_FILE@[0; 47)
+  FN_DEF@[0; 45)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 8)
+      L_PAREN@[6; 7) "("
+      R_PAREN@[7; 8) ")"
+    WHITESPACE@[8; 9) " "
+    BLOCK@[9; 45)
+      L_CURLY@[9; 10) "{"
+      WHITESPACE@[10; 15) "\n    "
+      EXPR_STMT@[15; 24)
+        BLOCK_EXPR@[15; 23)
+          ASYNC_KW@[15; 20) "async"
+          WHITESPACE@[20; 21) " "
+          BLOCK@[21; 23)
+            L_CURLY@[21; 22) "{"
+            R_CURLY@[22; 23) "}"
+        SEMI@[23; 24) ";"
+      WHITESPACE@[24; 29) "\n    "
+      EXPR_STMT@[29; 43)
+        BLOCK_EXPR@[29; 42)
+          ASYNC_KW@[29; 34) "async"
+          WHITESPACE@[34; 35) " "
+          MOVE_KW@[35; 39) "move"
+          WHITESPACE@[39; 40) " "
+          BLOCK@[40; 42)
+            L_CURLY@[40; 41) "{"
+            R_CURLY@[41; 42) "}"
+        SEMI@[42; 43) ";"
+      WHITESPACE@[43; 44) "\n"
+      R_CURLY@[44; 45) "}"
+  WHITESPACE@[45; 47) "\n\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rs b/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rs
new file mode 100644 (file)
index 0000000..ec4612c
--- /dev/null
@@ -0,0 +1,5 @@
+fn foo(x: impl std::future::Future<Output = i32>) {}
+
+fn main() {
+    foo(async move { 12 })
+}
diff --git a/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.txt b/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.txt
new file mode 100644 (file)
index 0000000..64da587
--- /dev/null
@@ -0,0 +1,90 @@
+SOURCE_FILE@[0; 95)
+  FN_DEF@[0; 52)
+    FN_KW@[0; 2) "fn"
+    WHITESPACE@[2; 3) " "
+    NAME@[3; 6)
+      IDENT@[3; 6) "foo"
+    PARAM_LIST@[6; 49)
+      L_PAREN@[6; 7) "("
+      PARAM@[7; 48)
+        BIND_PAT@[7; 8)
+          NAME@[7; 8)
+            IDENT@[7; 8) "x"
+        COLON@[8; 9) ":"
+        WHITESPACE@[9; 10) " "
+        IMPL_TRAIT_TYPE@[10; 48)
+          IMPL_KW@[10; 14) "impl"
+          WHITESPACE@[14; 15) " "
+          TYPE_BOUND_LIST@[15; 48)
+            TYPE_BOUND@[15; 48)
+              PATH_TYPE@[15; 48)
+                PATH@[15; 48)
+                  PATH@[15; 26)
+                    PATH@[15; 18)
+                      PATH_SEGMENT@[15; 18)
+                        NAME_REF@[15; 18)
+                          IDENT@[15; 18) "std"
+                    COLONCOLON@[18; 20) "::"
+                    PATH_SEGMENT@[20; 26)
+                      NAME_REF@[20; 26)
+                        IDENT@[20; 26) "future"
+                  COLONCOLON@[26; 28) "::"
+                  PATH_SEGMENT@[28; 48)
+                    NAME_REF@[28; 34)
+                      IDENT@[28; 34) "Future"
+                    TYPE_ARG_LIST@[34; 48)
+                      L_ANGLE@[34; 35) "<"
+                      ASSOC_TYPE_ARG@[35; 47)
+                        NAME_REF@[35; 41)
+                          IDENT@[35; 41) "Output"
+                        WHITESPACE@[41; 42) " "
+                        EQ@[42; 43) "="
+                        WHITESPACE@[43; 44) " "
+                        PATH_TYPE@[44; 47)
+                          PATH@[44; 47)
+                            PATH_SEGMENT@[44; 47)
+                              NAME_REF@[44; 47)
+                                IDENT@[44; 47) "i32"
+                      R_ANGLE@[47; 48) ">"
+      R_PAREN@[48; 49) ")"
+    WHITESPACE@[49; 50) " "
+    BLOCK@[50; 52)
+      L_CURLY@[50; 51) "{"
+      R_CURLY@[51; 52) "}"
+  WHITESPACE@[52; 54) "\n\n"
+  FN_DEF@[54; 94)
+    FN_KW@[54; 56) "fn"
+    WHITESPACE@[56; 57) " "
+    NAME@[57; 61)
+      IDENT@[57; 61) "main"
+    PARAM_LIST@[61; 63)
+      L_PAREN@[61; 62) "("
+      R_PAREN@[62; 63) ")"
+    WHITESPACE@[63; 64) " "
+    BLOCK@[64; 94)
+      L_CURLY@[64; 65) "{"
+      WHITESPACE@[65; 70) "\n    "
+      CALL_EXPR@[70; 92)
+        PATH_EXPR@[70; 73)
+          PATH@[70; 73)
+            PATH_SEGMENT@[70; 73)
+              NAME_REF@[70; 73)
+                IDENT@[70; 73) "foo"
+        ARG_LIST@[73; 92)
+          L_PAREN@[73; 74) "("
+          BLOCK_EXPR@[74; 91)
+            ASYNC_KW@[74; 79) "async"
+            WHITESPACE@[79; 80) " "
+            MOVE_KW@[80; 84) "move"
+            WHITESPACE@[84; 85) " "
+            BLOCK@[85; 91)
+              L_CURLY@[85; 86) "{"
+              WHITESPACE@[86; 87) " "
+              LITERAL@[87; 89)
+                INT_NUMBER@[87; 89) "12"
+              WHITESPACE@[89; 90) " "
+              R_CURLY@[90; 91) "}"
+          R_PAREN@[91; 92) ")"
+      WHITESPACE@[92; 93) "\n"
+      R_CURLY@[93; 94) "}"
+  WHITESPACE@[94; 95) "\n"
diff --git a/crates/ra_syntax/test_data/reparse/fuzz-failures/0000.rs b/crates/ra_syntax/test_data/reparse/fuzz-failures/0000.rs
new file mode 100644 (file)
index 0000000..388eb74
--- /dev/null
@@ -0,0 +1,6 @@
+0
+1
+
+
+
+0
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/reparse/fuzz-failures/0001.rs b/crates/ra_syntax/test_data/reparse/fuzz-failures/0001.rs
new file mode 100644 (file)
index 0000000..d2d42c6
--- /dev/null
@@ -0,0 +1,4 @@
+0
+1
+
+bb"
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/reparse/fuzz-failures/0002.rs b/crates/ra_syntax/test_data/reparse/fuzz-failures/0002.rs
new file mode 100644 (file)
index 0000000..3fbee15
--- /dev/null
@@ -0,0 +1,4 @@
+1
+1
+
+""!
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/reparse/fuzz-failures/0003.rs b/crates/ra_syntax/test_data/reparse/fuzz-failures/0003.rs
new file mode 100644 (file)
index 0000000..d2757cd
Binary files /dev/null and b/crates/ra_syntax/test_data/reparse/fuzz-failures/0003.rs differ
diff --git a/crates/ra_syntax/test_data/reparse/fuzz-failures/0004.rs b/crates/ra_syntax/test_data/reparse/fuzz-failures/0004.rs
new file mode 100644 (file)
index 0000000..481617a
--- /dev/null
@@ -0,0 +1,4 @@
+0
+0
+}
+{;
\ No newline at end of file
diff --git a/crates/ra_syntax/test_data/reparse/fuzz-failures/0005.rs b/crates/ra_syntax/test_data/reparse/fuzz-failures/0005.rs
new file mode 100644 (file)
index 0000000..074d761
--- /dev/null
@@ -0,0 +1,7 @@
+05
+1
+
+
+
+b'\ 1
+               
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/lexer/00012_block_comment.rs b/crates/ra_syntax/tests/data/lexer/00012_block_comment.rs
deleted file mode 100644 (file)
index 708aac1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/* */
-/**/
-/* /* */ */
-/*
diff --git a/crates/ra_syntax/tests/data/lexer/00012_block_comment.txt b/crates/ra_syntax/tests/data/lexer/00012_block_comment.txt
deleted file mode 100644 (file)
index 9958b25..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100644 (file)
index 95d09f2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644 (file)
index 27a5940..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index 08fce14..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644 (file)
index 01d2609..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100644 (file)
index c05c9c0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644 (file)
index 4a0d5c0..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-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
deleted file mode 100644 (file)
index dc974b5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
deleted file mode 100644 (file)
index 7bb89b8..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-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 " "
-FLOAT_NUMBER 2 "0e"
-WHITESPACE 1 " "
-FLOAT_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 " "
-FLOAT_NUMBER 6 "0e1279"
-WHITESPACE 1 " "
-FLOAT_NUMBER 6 "0E1279"
-WHITESPACE 1 "\n"
-INT_NUMBER 1 "0"
-DOT 1 "."
-DOT 1 "."
-INT_NUMBER 1 "2"
-WHITESPACE 1 "\n"
-INT_NUMBER 1 "0"
-DOT 1 "."
-IDENT 3 "foo"
-L_PAREN 1 "("
-R_PAREN 1 ")"
-WHITESPACE 1 "\n"
-FLOAT_NUMBER 4 "0e+1"
-WHITESPACE 1 "\n"
-INT_NUMBER 1 "0"
-DOT 1 "."
-IDENT 1 "e"
-PLUS 1 "+"
-INT_NUMBER 1 "1"
-WHITESPACE 1 "\n"
-FLOAT_NUMBER 6 "0.0E-2"
-WHITESPACE 1 "\n"
-FLOAT_NUMBER 26 "0___0.10000____0000e+111__"
-WHITESPACE 1 "\n"
-INT_NUMBER 4 "1i64"
-WHITESPACE 1 " "
-FLOAT_NUMBER 7 "92.0f32"
-WHITESPACE 1 " "
-INT_NUMBER 5 "11__s"
diff --git a/crates/ra_syntax/tests/data/lexer/0005_symbols.rs b/crates/ra_syntax/tests/data/lexer/0005_symbols.rs
deleted file mode 100644 (file)
index 487569b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-; , ( ) { } [ ] < > @ # ~ ? $ & | + * / ^ %
-. .. ... ..=
-: ::
-= =>
-! !=
-- ->
diff --git a/crates/ra_syntax/tests/data/lexer/0005_symbols.txt b/crates/ra_syntax/tests/data/lexer/0005_symbols.txt
deleted file mode 100644 (file)
index 469a90e..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-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 " "
-DOT 1 "."
-DOT 1 "."
-WHITESPACE 1 " "
-DOT 1 "."
-DOT 1 "."
-DOT 1 "."
-WHITESPACE 1 " "
-DOT 1 "."
-DOT 1 "."
-EQ 1 "="
-WHITESPACE 1 "\n"
-COLON 1 ":"
-WHITESPACE 1 " "
-COLON 1 ":"
-COLON 1 ":"
-WHITESPACE 1 "\n"
-EQ 1 "="
-WHITESPACE 1 " "
-EQ 1 "="
-R_ANGLE 1 ">"
-WHITESPACE 1 "\n"
-EXCL 1 "!"
-WHITESPACE 1 " "
-EXCL 1 "!"
-EQ 1 "="
-WHITESPACE 1 "\n"
-MINUS 1 "-"
-WHITESPACE 1 " "
-MINUS 1 "-"
-R_ANGLE 1 ">"
-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
deleted file mode 100644 (file)
index 454ee0a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-'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
deleted file mode 100644 (file)
index 950954f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-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
deleted file mode 100644 (file)
index b764f1d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-'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
deleted file mode 100644 (file)
index 005c291..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644 (file)
index b54930f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index bc03b51..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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
deleted file mode 100644 (file)
index 4ddb5bf..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-"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
deleted file mode 100644 (file)
index 4cb4d71..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644 (file)
index 71bdd1f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/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
deleted file mode 100644 (file)
index 3c997de..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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
deleted file mode 100644 (file)
index 1e91bff..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-async fn use struct trait enum impl true false as extern crate
-mod pub self super in where for loop while if match const
-static mut type ref let else move return
diff --git a/crates/ra_syntax/tests/data/lexer/0011_keywords.txt b/crates/ra_syntax/tests/data/lexer/0011_keywords.txt
deleted file mode 100644 (file)
index 22c00ee..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-ASYNC_KW 5 "async"
-WHITESPACE 1 " "
-FN_KW 2 "fn"
-WHITESPACE 1 " "
-USE_KW 3 "use"
-WHITESPACE 1 " "
-STRUCT_KW 6 "struct"
-WHITESPACE 1 " "
-TRAIT_KW 5 "trait"
-WHITESPACE 1 " "
-ENUM_KW 4 "enum"
-WHITESPACE 1 " "
-IMPL_KW 4 "impl"
-WHITESPACE 1 " "
-TRUE_KW 4 "true"
-WHITESPACE 1 " "
-FALSE_KW 5 "false"
-WHITESPACE 1 " "
-AS_KW 2 "as"
-WHITESPACE 1 " "
-EXTERN_KW 6 "extern"
-WHITESPACE 1 " "
-CRATE_KW 5 "crate"
-WHITESPACE 1 "\n"
-MOD_KW 3 "mod"
-WHITESPACE 1 " "
-PUB_KW 3 "pub"
-WHITESPACE 1 " "
-SELF_KW 4 "self"
-WHITESPACE 1 " "
-SUPER_KW 5 "super"
-WHITESPACE 1 " "
-IN_KW 2 "in"
-WHITESPACE 1 " "
-WHERE_KW 5 "where"
-WHITESPACE 1 " "
-FOR_KW 3 "for"
-WHITESPACE 1 " "
-LOOP_KW 4 "loop"
-WHITESPACE 1 " "
-WHILE_KW 5 "while"
-WHITESPACE 1 " "
-IF_KW 2 "if"
-WHITESPACE 1 " "
-MATCH_KW 5 "match"
-WHITESPACE 1 " "
-CONST_KW 5 "const"
-WHITESPACE 1 "\n"
-STATIC_KW 6 "static"
-WHITESPACE 1 " "
-MUT_KW 3 "mut"
-WHITESPACE 1 " "
-TYPE_KW 4 "type"
-WHITESPACE 1 " "
-REF_KW 3 "ref"
-WHITESPACE 1 " "
-LET_KW 3 "let"
-WHITESPACE 1 " "
-ELSE_KW 4 "else"
-WHITESPACE 1 " "
-MOVE_KW 4 "move"
-WHITESPACE 1 " "
-RETURN_KW 6 "return"
-WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/tests/data/lexer/0013_raw_strings.rs b/crates/ra_syntax/tests/data/lexer/0013_raw_strings.rs
deleted file mode 100644 (file)
index e5ed0b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644 (file)
index 9cf0957..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index 9c00070..0000000
+++ /dev/null
@@ -1 +0,0 @@
-'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
deleted file mode 100644 (file)
index 737a300..0000000
+++ /dev/null
@@ -1 +0,0 @@
-LIFETIME 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
deleted file mode 100644 (file)
index d771a26..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"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
deleted file mode 100644 (file)
index 728c40b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-STRING 7 "\"hello\n"
diff --git a/crates/ra_syntax/tests/data/lexer/0016_raw_ident.rs b/crates/ra_syntax/tests/data/lexer/0016_raw_ident.rs
deleted file mode 100644 (file)
index b40a1b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-r#raw_ident
diff --git a/crates/ra_syntax/tests/data/lexer/0016_raw_ident.txt b/crates/ra_syntax/tests/data/lexer/0016_raw_ident.txt
deleted file mode 100644 (file)
index 4846896..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-IDENT 11 "r#raw_ident"
-WHITESPACE 1 "\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
deleted file mode 100644 (file)
index fe5030d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644 (file)
index 0dbbfe8..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCE_FILE@[0; 34)
-  STRUCT_DEF@[0; 34)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n    "
-      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"
-      WHITESPACE@[21; 26) "\n    "
-      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) "\n"
-      R_CURLY@[33; 34) "}"
-error 21: expected COMMA
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
deleted file mode 100644 (file)
index 98f23de..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index 7cfb54e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SOURCE_FILE@[0; 21)
-  ERROR@[0; 2)
-    IF_KW@[0; 2) "if"
-  WHITESPACE@[2; 3) " "
-  ERROR@[3; 8)
-    MATCH_KW@[3; 8) "match"
-  WHITESPACE@[8; 10) "\n\n"
-  STRUCT_DEF@[10; 21)
-    STRUCT_KW@[10; 16) "struct"
-    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) "}"
-error 0: expected an item
-error 3: expected an item
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
deleted file mode 100644 (file)
index 48a3a39..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/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
deleted file mode 100644 (file)
index 8486702..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE@[0; 42)
-  SHEBANG@[0; 20) "#!/use/bin/env rusti"
-  WHITESPACE@[20; 21) "\n"
-  ATTR@[21; 23)
-    POUND@[21; 22) "#"
-    EXCL@[22; 23) "!"
-  ERROR@[23; 24)
-    SLASH@[23; 24) "/"
-  USE_ITEM@[24; 28)
-    USE_KW@[24; 27) "use"
-    ERROR@[27; 28)
-      SLASH@[27; 28) "/"
-  MACRO_CALL@[28; 31)
-    PATH@[28; 31)
-      PATH_SEGMENT@[28; 31)
-        NAME_REF@[28; 31)
-          IDENT@[28; 31) "bin"
-  ERROR@[31; 32)
-    SLASH@[31; 32) "/"
-  MACRO_CALL@[32; 41)
-    PATH@[32; 35)
-      PATH_SEGMENT@[32; 35)
-        NAME_REF@[32; 35)
-          IDENT@[32; 35) "env"
-    WHITESPACE@[35; 36) " "
-    NAME@[36; 41)
-      IDENT@[36; 41) "rusti"
-  WHITESPACE@[41; 42) "\n"
-error 23: expected `[`
-error 23: expected an item
-error 27: expected one of `*`, `::`, `{`, `self`, `super` or an indentifier
-error 28: expected SEMI
-error 31: expected EXCL
-error 31: expected `{`, `[`, `(`
-error 31: expected SEMI
-error 31: expected an item
-error 35: expected EXCL
-error 41: expected `{`, `[`, `(`
-error 41: expected SEMI
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
deleted file mode 100644 (file)
index 0093122..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644 (file)
index 8578260..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE@[0; 40)
-  STRUCT_DEF@[0; 39)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n    "
-      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) "\n    "
-      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) "\n"
-      R_CURLY@[38; 39) "}"
-  ERROR@[39; 40)
-    SEMI@[39; 40) ";"
-error 39: expected item, found `;`
-consider removing this semicolon
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
deleted file mode 100644 (file)
index 060e65d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644 (file)
index 5210a88..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 12)
-  USE_ITEM@[0; 12)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 11)
-      PATH@[4; 11)
-        PATH@[4; 7)
-          PATH_SEGMENT@[4; 7)
-            NAME_REF@[4; 7)
-              IDENT@[4; 7) "foo"
-        COLONCOLON@[7; 9) "::"
-        PATH_SEGMENT@[9; 11)
-          ERROR@[9; 11)
-            INT_NUMBER@[9; 11) "92"
-    SEMI@[11; 12) ";"
-error 9: expected identifier
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
deleted file mode 100644 (file)
index de7f816..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#[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
deleted file mode 100644 (file)
index 6d5199a..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-SOURCE_FILE@[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) "\n"
-    FN_KW@[19; 21) "fn"
-    WHITESPACE@[21; 22) " "
-    NAME@[22; 25)
-      IDENT@[22; 25) "foo"
-    PARAM_LIST@[25; 27)
-      L_PAREN@[25; 26) "("
-      R_PAREN@[26; 27) ")"
-    WHITESPACE@[27; 28) " "
-    BLOCK@[28; 31)
-      L_CURLY@[28; 29) "{"
-      WHITESPACE@[29; 30) "\n"
-      R_CURLY@[30; 31) "}"
-  WHITESPACE@[31; 34) "\n\n\n"
-  ATTR@[34; 53)
-    POUND@[34; 35) "#"
-    TOKEN_TREE@[35; 53)
-      L_BRACK@[35; 36) "["
-      IDENT@[36; 39) "foo"
-      TOKEN_TREE@[39; 53)
-        L_PAREN@[39; 40) "("
-        WHITESPACE@[40; 41) "\n"
-        FN_KW@[41; 43) "fn"
-        WHITESPACE@[43; 44) " "
-        IDENT@[44; 47) "foo"
-        TOKEN_TREE@[47; 49)
-          L_PAREN@[47; 48) "("
-          R_PAREN@[48; 49) ")"
-        WHITESPACE@[49; 50) " "
-        TOKEN_TREE@[50; 53)
-          L_CURLY@[50; 51) "{"
-          WHITESPACE@[51; 52) "\n"
-          R_CURLY@[52; 53) "}"
-  WHITESPACE@[53; 54) "\n"
-error 53: expected R_PAREN
-error 53: expected R_BRACK
-error 53: expected an item
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
deleted file mode 100644 (file)
index 8069c11..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100644 (file)
index 6143e68..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-SOURCE_FILE@[0; 74)
-  STRUCT_DEF@[0; 73)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n    "
-      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) "\n    "
-      VISIBILITY@[27; 30)
-        PUB_KW@[27; 30) "pub"
-      WHITESPACE@[30; 31) " "
-      ERROR@[31; 33)
-        INT_NUMBER@[31; 33) "92"
-      WHITESPACE@[33; 38) "\n    "
-      ERROR@[38; 39)
-        PLUS@[38; 39) "+"
-      WHITESPACE@[39; 40) " "
-      ERROR@[40; 41)
-        MINUS@[40; 41) "-"
-      WHITESPACE@[41; 42) " "
-      ERROR@[42; 43)
-        STAR@[42; 43) "*"
-      WHITESPACE@[43; 48) "\n    "
-      NAMED_FIELD_DEF@[48; 58)
-        VISIBILITY@[48; 51)
-          PUB_KW@[48; 51) "pub"
-        WHITESPACE@[51; 52) " "
-        NAME@[52; 53)
-          IDENT@[52; 53) "x"
-        COLON@[53; 54) ":"
-        WHITESPACE@[54; 55) " "
-        PATH_TYPE@[55; 58)
-          PATH@[55; 58)
-            PATH_SEGMENT@[55; 58)
-              NAME_REF@[55; 58)
-                IDENT@[55; 58) "u32"
-      COMMA@[58; 59) ","
-      WHITESPACE@[59; 64) "\n    "
-      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) "\n"
-      R_CURLY@[72; 73) "}"
-  WHITESPACE@[73; 74) "\n"
-error 31: expected field declaration
-error 33: expected COMMA
-error 38: expected field declaration
-error 39: expected COMMA
-error 40: expected field declaration
-error 41: expected COMMA
-error 42: expected field declaration
-error 43: expected COMMA
diff --git a/crates/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
deleted file mode 100644 (file)
index dc869fb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-}
-
-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
deleted file mode 100644 (file)
index b79e012..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE@[0; 31)
-  ERROR@[0; 1)
-    R_CURLY@[0; 1) "}"
-  WHITESPACE@[1; 3) "\n\n"
-  STRUCT_DEF@[3; 12)
-    STRUCT_KW@[3; 9) "struct"
-    WHITESPACE@[9; 10) " "
-    NAME@[10; 11)
-      IDENT@[10; 11) "S"
-    SEMI@[11; 12) ";"
-  WHITESPACE@[12; 14) "\n\n"
-  ERROR@[14; 15)
-    R_CURLY@[14; 15) "}"
-  WHITESPACE@[15; 17) "\n\n"
-  FN_DEF@[17; 27)
-    FN_KW@[17; 19) "fn"
-    WHITESPACE@[19; 20) " "
-    NAME@[20; 23)
-      IDENT@[20; 23) "foo"
-    PARAM_LIST@[23; 25)
-      L_PAREN@[23; 24) "("
-      R_PAREN@[24; 25) ")"
-    BLOCK@[25; 27)
-      L_CURLY@[25; 26) "{"
-      R_CURLY@[26; 27) "}"
-  WHITESPACE@[27; 29) "\n\n"
-  ERROR@[29; 30)
-    R_CURLY@[29; 30) "}"
-  WHITESPACE@[30; 31) "\n"
-error 0: unmatched `}`
-error 14: unmatched `}`
-error 29: unmatched `}`
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
deleted file mode 100644 (file)
index 9fcac19..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644 (file)
index 9a88715..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-SOURCE_FILE@[0; 95)
-  FN_DEF@[0; 12)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 12)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) "\n"
-      R_CURLY@[11; 12) "}"
-  WHITESPACE@[12; 14) "\n\n"
-  MACRO_CALL@[14; 19)
-    PATH@[14; 17)
-      PATH_SEGMENT@[14; 17)
-        NAME_REF@[14; 17)
-          IDENT@[14; 17) "bar"
-    TOKEN_TREE@[17; 19)
-      L_PAREN@[17; 18) "("
-      R_PAREN@[18; 19) ")"
-  WHITESPACE@[19; 20) " "
-  ERROR@[20; 80)
-    L_CURLY@[20; 21) "{"
-    WHITESPACE@[21; 26) "\n    "
-    IF_EXPR@[26; 78)
-      IF_KW@[26; 28) "if"
-      WHITESPACE@[28; 29) " "
-      CONDITION@[29; 33)
-        LITERAL@[29; 33)
-          TRUE_KW@[29; 33) "true"
-      WHITESPACE@[33; 34) " "
-      BLOCK@[34; 51)
-        L_CURLY@[34; 35) "{"
-        WHITESPACE@[35; 44) "\n        "
-        LITERAL@[44; 45)
-          INT_NUMBER@[44; 45) "1"
-        WHITESPACE@[45; 50) "\n    "
-        R_CURLY@[50; 51) "}"
-      WHITESPACE@[51; 52) " "
-      ELSE_KW@[52; 56) "else"
-      WHITESPACE@[56; 57) " "
-      BLOCK@[57; 78)
-        L_CURLY@[57; 58) "{"
-        WHITESPACE@[58; 67) "\n        "
-        BIN_EXPR@[67; 72)
-          LITERAL@[67; 68)
-            INT_NUMBER@[67; 68) "2"
-          WHITESPACE@[68; 69) " "
-          PLUS@[69; 70) "+"
-          WHITESPACE@[70; 71) " "
-          LITERAL@[71; 72)
-            INT_NUMBER@[71; 72) "3"
-        WHITESPACE@[72; 77) "\n    "
-        R_CURLY@[77; 78) "}"
-    WHITESPACE@[78; 79) "\n"
-    R_CURLY@[79; 80) "}"
-  WHITESPACE@[80; 82) "\n\n"
-  FN_DEF@[82; 94)
-    FN_KW@[82; 84) "fn"
-    WHITESPACE@[84; 85) " "
-    NAME@[85; 88)
-      IDENT@[85; 88) "baz"
-    PARAM_LIST@[88; 90)
-      L_PAREN@[88; 89) "("
-      R_PAREN@[89; 90) ")"
-    WHITESPACE@[90; 91) " "
-    BLOCK@[91; 94)
-      L_CURLY@[91; 92) "{"
-      WHITESPACE@[92; 93) "\n"
-      R_CURLY@[93; 94) "}"
-  WHITESPACE@[94; 95) "\n"
-error 17: expected EXCL
-error 19: expected SEMI
-error 20: expected an item
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
deleted file mode 100644 (file)
index 0dd30d0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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
deleted file mode 100644 (file)
index e147d64..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-SOURCE_FILE@[0; 43)
-  STRUCT_DEF@[0; 11)
-    STRUCT_KW@[0; 6) "struct"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 8)
-      IDENT@[7; 8) "S"
-    TYPE_PARAM_LIST@[8; 11)
-      L_ANGLE@[8; 9) "<"
-      ERROR@[9; 11)
-        INT_NUMBER@[9; 11) "90"
-  WHITESPACE@[11; 12) " "
-  ERROR@[12; 13)
-    PLUS@[12; 13) "+"
-  WHITESPACE@[13; 14) " "
-  ERROR@[14; 15)
-    INT_NUMBER@[14; 15) "2"
-  ERROR@[15; 16)
-    R_ANGLE@[15; 16) ">"
-  WHITESPACE@[16; 17) " "
-  ERROR@[17; 31)
-    L_CURLY@[17; 18) "{"
-    WHITESPACE@[18; 23) "\n    "
-    EXPR_STMT@[23; 24)
-      PATH_EXPR@[23; 24)
-        PATH@[23; 24)
-          PATH_SEGMENT@[23; 24)
-            NAME_REF@[23; 24)
-              IDENT@[23; 24) "f"
-    EXPR_STMT@[24; 25)
-      ERROR@[24; 25)
-        COLON@[24; 25) ":"
-    WHITESPACE@[25; 26) " "
-    PATH_EXPR@[26; 29)
-      PATH@[26; 29)
-        PATH_SEGMENT@[26; 29)
-          NAME_REF@[26; 29)
-            IDENT@[26; 29) "u32"
-    WHITESPACE@[29; 30) "\n"
-    R_CURLY@[30; 31) "}"
-  WHITESPACE@[31; 33) "\n\n"
-  STRUCT_DEF@[33; 42)
-    STRUCT_KW@[33; 39) "struct"
-    WHITESPACE@[39; 40) " "
-    NAME@[40; 41)
-      IDENT@[40; 41) "T"
-    SEMI@[41; 42) ";"
-  WHITESPACE@[42; 43) "\n"
-error 9: expected type parameter
-error 11: expected COMMA
-error 11: expected R_ANGLE
-error 11: expected `;`, `{`, or `(`
-error 12: expected an item
-error 14: expected an item
-error 15: expected an item
-error 17: expected an item
-error 24: expected SEMI
-error 24: expected expression
-error 25: expected SEMI
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
deleted file mode 100644 (file)
index 9857752..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index c46809f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE@[0; 42)
-  FN_DEF@[0; 41)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 41)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      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) ")"
-          WHITESPACE@[24; 25) " "
-          BLOCK_EXPR@[25; 38)
-            UNSAFE_KW@[25; 31) "unsafe"
-            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) "\n"
-      R_CURLY@[40; 41) "}"
-  WHITESPACE@[41; 42) "\n"
-error 24: expected `{`
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
deleted file mode 100644 (file)
index c1bd0a2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644 (file)
index 381147d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE@[0; 19)
-  ERROR@[0; 6)
-    ABI@[0; 6)
-      EXTERN_KW@[0; 6) "extern"
-  WHITESPACE@[6; 7) " "
-  STRUCT_DEF@[7; 18)
-    STRUCT_KW@[7; 13) "struct"
-    WHITESPACE@[13; 14) " "
-    NAME@[14; 17)
-      IDENT@[14; 17) "Foo"
-    SEMI@[17; 18) ";"
-  WHITESPACE@[18; 19) "\n"
-error 6: expected existential, fn, trait or impl
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
deleted file mode 100644 (file)
index 12ebc2a..0000000
+++ /dev/null
@@ -1,387 +0,0 @@
-SOURCE_FILE@[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
deleted file mode 100644 (file)
index 20dde3b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-pub struct Cache(
-    RefCell<HashMap<
-        TypeId,
-        Box<@ Any>,
-    >>
-);
-
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
deleted file mode 100644 (file)
index bef286b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-SOURCE_FILE@[0; 86)
-  STRUCT_DEF@[0; 72)
-    VISIBILITY@[0; 3)
-      PUB_KW@[0; 3) "pub"
-    WHITESPACE@[3; 4) " "
-    STRUCT_KW@[4; 10) "struct"
-    WHITESPACE@[10; 11) " "
-    NAME@[11; 16)
-      IDENT@[11; 16) "Cache"
-    POS_FIELD_DEF_LIST@[16; 72)
-      L_PAREN@[16; 17) "("
-      WHITESPACE@[17; 22) "\n    "
-      POS_FIELD_DEF@[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) "\n        "
-                          TYPE_ARG@[47; 53)
-                            PATH_TYPE@[47; 53)
-                              PATH@[47; 53)
-                                PATH_SEGMENT@[47; 53)
-                                  NAME_REF@[47; 53)
-                                    IDENT@[47; 53) "TypeId"
-                          COMMA@[53; 54) ","
-                          WHITESPACE@[54; 63) "\n        "
-                          TYPE_ARG@[63; 68)
-                            PATH_TYPE@[63; 68)
-                              PATH@[63; 68)
-                                PATH_SEGMENT@[63; 68)
-                                  NAME_REF@[63; 66)
-                                    IDENT@[63; 66) "Box"
-                                  TYPE_ARG_LIST@[66; 68)
-                                    L_ANGLE@[66; 67) "<"
-                                    TYPE_ARG@[67; 68)
-                                      ERROR@[67; 68)
-                                        AT@[67; 68) "@"
-      WHITESPACE@[68; 69) " "
-      POS_FIELD_DEF@[69; 72)
-        PATH_TYPE@[69; 72)
-          PATH@[69; 72)
-            PATH_SEGMENT@[69; 72)
-              NAME_REF@[69; 72)
-                IDENT@[69; 72) "Any"
-      ERROR@[72; 72)
-  ERROR@[72; 73)
-    R_ANGLE@[72; 73) ">"
-  ERROR@[73; 74)
-    COMMA@[73; 74) ","
-  WHITESPACE@[74; 79) "\n    "
-  ERROR@[79; 80)
-    R_ANGLE@[79; 80) ">"
-  ERROR@[80; 81)
-    R_ANGLE@[80; 81) ">"
-  WHITESPACE@[81; 82) "\n"
-  ERROR@[82; 83)
-    R_PAREN@[82; 83) ")"
-  ERROR@[83; 84)
-    SEMI@[83; 84) ";"
-  WHITESPACE@[84; 86) "\n\n"
-error 67: expected type
-error 68: expected COMMA
-error 68: expected R_ANGLE
-error 68: expected COMMA
-error 68: expected R_ANGLE
-error 68: expected COMMA
-error 68: expected R_ANGLE
-error 68: expected COMMA
-error 72: expected COMMA
-error 72: expected a type
-error 72: expected R_PAREN
-error 72: expected SEMI
-error 72: expected an item
-error 73: expected an item
-error 79: expected an item
-error 80: expected an item
-error 82: expected an item
-error 83: expected an item
diff --git a/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.rs b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.rs
deleted file mode 100644 (file)
index 75c1d2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo<T>() 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
deleted file mode 100644 (file)
index 2f08785..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE@[0; 23)
-  FN_DEF@[0; 22)
-    FN_KW@[0; 2) "fn"
-    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) "where"
-      WHITESPACE@[17; 18) " "
-      WHERE_PRED@[18; 19)
-        PATH_TYPE@[18; 19)
-          PATH@[18; 19)
-            PATH_SEGMENT@[18; 19)
-              NAME_REF@[18; 19)
-                IDENT@[18; 19) "T"
-    WHITESPACE@[19; 20) " "
-    BLOCK@[20; 22)
-      L_CURLY@[20; 21) "{"
-      R_CURLY@[21; 22) "}"
-  WHITESPACE@[22; 23) "\n"
-error 19: expected colon
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
deleted file mode 100644 (file)
index 156e702..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index 23ca0c4..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE@[0; 14)
-  FN_DEF@[0; 7)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 7)
-      L_PAREN@[6; 7) "("
-  ERROR@[7; 8)
-    R_CURLY@[7; 8) "}"
-  ERROR@[8; 9)
-    R_PAREN@[8; 9) ")"
-  WHITESPACE@[9; 10) " "
-  ERROR@[10; 13)
-    L_CURLY@[10; 11) "{"
-    WHITESPACE@[11; 12) "\n"
-    R_CURLY@[12; 13) "}"
-  WHITESPACE@[13; 14) "\n"
-error 7: expected value parameter
-error 7: expected R_PAREN
-error 7: expected a block
-error 7: unmatched `}`
-error 8: expected an item
-error 10: expected an item
diff --git a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.rs b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.rs
deleted file mode 100644 (file)
index 9ae8576..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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
deleted file mode 100644 (file)
index 97e64de..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE@[0; 56)
-  FN_DEF@[0; 55)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 55)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 38)
-        CALL_EXPR@[15; 38)
-          PATH_EXPR@[15; 18)
-            PATH@[15; 18)
-              PATH_SEGMENT@[15; 18)
-                NAME_REF@[15; 18)
-                  IDENT@[15; 18) "foo"
-          ARG_LIST@[18; 38)
-            L_PAREN@[18; 19) "("
-            WHITESPACE@[19; 28) "\n        "
-            LITERAL@[28; 29)
-              INT_NUMBER@[28; 29) "1"
-            COMMA@[29; 30) ","
-            WHITESPACE@[30; 31) " "
-            LITERAL@[31; 32)
-              INT_NUMBER@[31; 32) "2"
-            WHITESPACE@[32; 37) "\n    "
-            R_PAREN@[37; 38) ")"
-      WHITESPACE@[38; 43) "\n    "
-      EXPR_STMT@[43; 53)
-        RETURN_EXPR@[43; 52)
-          RETURN_KW@[43; 49) "return"
-          WHITESPACE@[49; 50) " "
-          LITERAL@[50; 52)
-            INT_NUMBER@[50; 52) "92"
-        SEMI@[52; 53) ";"
-      WHITESPACE@[53; 54) "\n"
-      R_CURLY@[54; 55) "}"
-  WHITESPACE@[55; 56) "\n"
-error 38: expected SEMI
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
deleted file mode 100644 (file)
index 17bd497..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644 (file)
index c18e209..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-SOURCE_FILE@[0; 47)
-  FN_DEF@[0; 46)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 16)
-      L_PAREN@[6; 7) "("
-      PARAM@[7; 15)
-        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) "\n    "
-      LET_STMT@[23; 36)
-        LET_KW@[23; 26) "let"
-        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) "\n    "
-      BIN_EXPR@[41; 44)
-        LITERAL@[41; 42)
-          INT_NUMBER@[41; 42) "1"
-        WHITESPACE@[42; 43) " "
-        PLUS@[43; 44) "+"
-      WHITESPACE@[44; 45) "\n"
-      R_CURLY@[45; 46) "}"
-  WHITESPACE@[46; 47) "\n"
-error 44: expected expression
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
deleted file mode 100644 (file)
index fe60400..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644 (file)
index 51def2d..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-SOURCE_FILE@[0; 183)
-  IMPL_BLOCK@[0; 182)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 13)
-      PATH@[5; 13)
-        PATH_SEGMENT@[5; 13)
-          NAME_REF@[5; 13)
-            IDENT@[5; 13) "FnScopes"
-    WHITESPACE@[13; 14) " "
-    ITEM_LIST@[14; 182)
-      L_CURLY@[14; 15) "{"
-      WHITESPACE@[15; 20) "\n    "
-      FN_DEF@[20; 161)
-        FN_KW@[20; 22) "fn"
-        WHITESPACE@[22; 23) " "
-        NAME@[23; 32)
-          IDENT@[23; 32) "new_scope"
-        PARAM_LIST@[32; 35)
-          L_PAREN@[32; 33) "("
-          PARAM@[33; 34)
-            REF_PAT@[33; 34)
-              AMP@[33; 34) "&"
-          R_PAREN@[34; 35) ")"
-        WHITESPACE@[35; 36) " "
-        RET_TYPE@[36; 46)
-          THIN_ARROW@[36; 38) "->"
-          WHITESPACE@[38; 39) " "
-          PATH_TYPE@[39; 46)
-            PATH@[39; 46)
-              PATH_SEGMENT@[39; 46)
-                NAME_REF@[39; 46)
-                  IDENT@[39; 46) "ScopeId"
-        WHITESPACE@[46; 47) " "
-        BLOCK@[47; 161)
-          L_CURLY@[47; 48) "{"
-          WHITESPACE@[48; 57) "\n        "
-          LET_STMT@[57; 85)
-            LET_KW@[57; 60) "let"
-            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) "self"
-                DOT@[71; 72) "."
-                NAME_REF@[72; 78)
-                  IDENT@[72; 78) "scopes"
-              DOT@[78; 79) "."
-              NAME_REF@[79; 82)
-                IDENT@[79; 82) "len"
-              ARG_LIST@[82; 84)
-                L_PAREN@[82; 83) "("
-                R_PAREN@[83; 84) ")"
-            SEMI@[84; 85) ";"
-          WHITESPACE@[85; 94) "\n        "
-          METHOD_CALL_EXPR@[94; 155)
-            FIELD_EXPR@[94; 105)
-              PATH_EXPR@[94; 98)
-                PATH@[94; 98)
-                  PATH_SEGMENT@[94; 98)
-                    SELF_KW@[94; 98) "self"
-              DOT@[98; 99) "."
-              NAME_REF@[99; 105)
-                IDENT@[99; 105) "scopes"
-            DOT@[105; 106) "."
-            NAME_REF@[106; 110)
-              IDENT@[106; 110) "push"
-            ARG_LIST@[110; 155)
-              L_PAREN@[110; 111) "("
-              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) "\n    "
-          R_CURLY@[160; 161) "}"
-      WHITESPACE@[161; 167) "\n\n    "
-      FN_DEF@[167; 180)
-        FN_KW@[167; 169) "fn"
-        WHITESPACE@[169; 170) " "
-        NAME@[170; 180)
-          IDENT@[170; 180) "set_parent"
-      WHITESPACE@[180; 181) "\n"
-      R_CURLY@[181; 182) "}"
-  WHITESPACE@[182; 183) "\n"
-error 34: expected pattern
-error 34: expected COLON
-error 34: expected type
-error 180: expected function arguments
-error 180: expected a block
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
deleted file mode 100644 (file)
index 48bf3d6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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
deleted file mode 100644 (file)
index b671024..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-SOURCE_FILE@[0; 139)
-  FN_DEF@[0; 138)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 138)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 24)
-        LET_KW@[15; 18) "let"
-        WHITESPACE@[18; 19) " "
-        BIND_PAT@[19; 22)
-          NAME@[19; 22)
-            IDENT@[19; 22) "foo"
-        WHITESPACE@[22; 23) " "
-        EQ@[23; 24) "="
-      WHITESPACE@[24; 29) "\n    "
-      LET_STMT@[29; 41)
-        LET_KW@[29; 32) "let"
-        WHITESPACE@[32; 33) " "
-        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) "\n    "
-      LET_STMT@[46; 49)
-        LET_KW@[46; 49) "let"
-      WHITESPACE@[49; 54) "\n    "
-      LET_STMT@[54; 67)
-        LET_KW@[54; 57) "let"
-        WHITESPACE@[57; 58) " "
-        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) "\n    "
-      LET_STMT@[72; 75)
-        LET_KW@[72; 75) "let"
-      WHITESPACE@[75; 80) "\n    "
-      EXPR_STMT@[80; 90)
-        IF_EXPR@[80; 90)
-          IF_KW@[80; 82) "if"
-          WHITESPACE@[82; 83) " "
-          CONDITION@[83; 87)
-            LITERAL@[83; 87)
-              TRUE_KW@[83; 87) "true"
-          WHITESPACE@[87; 88) " "
-          BLOCK@[88; 90)
-            L_CURLY@[88; 89) "{"
-            R_CURLY@[89; 90) "}"
-      WHITESPACE@[90; 95) "\n    "
-      LET_STMT@[95; 98)
-        LET_KW@[95; 98) "let"
-      WHITESPACE@[98; 103) "\n    "
-      EXPR_STMT@[103; 116)
-        WHILE_EXPR@[103; 116)
-          WHILE_KW@[103; 108) "while"
-          WHITESPACE@[108; 109) " "
-          CONDITION@[109; 113)
-            LITERAL@[109; 113)
-              TRUE_KW@[109; 113) "true"
-          WHITESPACE@[113; 114) " "
-          BLOCK@[114; 116)
-            L_CURLY@[114; 115) "{"
-            R_CURLY@[115; 116) "}"
-      WHITESPACE@[116; 121) "\n    "
-      LET_STMT@[121; 124)
-        LET_KW@[121; 124) "let"
-      WHITESPACE@[124; 129) "\n    "
-      LOOP_EXPR@[129; 136)
-        LOOP_KW@[129; 133) "loop"
-        WHITESPACE@[133; 134) " "
-        BLOCK@[134; 136)
-          L_CURLY@[134; 135) "{"
-          R_CURLY@[135; 136) "}"
-      WHITESPACE@[136; 137) "\n"
-      R_CURLY@[137; 138) "}"
-  WHITESPACE@[138; 139) "\n"
-error 24: expected expression
-error 24: expected SEMI
-error 49: expected pattern
-error 49: expected SEMI
-error 75: expected pattern
-error 75: expected SEMI
-error 98: expected pattern
-error 98: expected SEMI
-error 124: expected pattern
-error 124: expected SEMI
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
deleted file mode 100644 (file)
index 3393b66..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index 71c0140..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-SOURCE_FILE@[0; 16)
-  FN_DEF@[0; 2)
-    FN_KW@[0; 2) "fn"
-  WHITESPACE@[2; 4) "\n\n"
-  FN_DEF@[4; 15)
-    FN_KW@[4; 6) "fn"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 10)
-      IDENT@[7; 10) "foo"
-    PARAM_LIST@[10; 12)
-      L_PAREN@[10; 11) "("
-      R_PAREN@[11; 12) ")"
-    WHITESPACE@[12; 13) " "
-    BLOCK@[13; 15)
-      L_CURLY@[13; 14) "{"
-      R_CURLY@[14; 15) "}"
-  WHITESPACE@[15; 16) "\n"
-error 2: expected a name
-error 2: expected function arguments
-error 2: expected a block
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
deleted file mode 100644 (file)
index 7a6c264..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index c125a0b..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCE_FILE@[0; 22)
-  FN_DEF@[0; 21)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 17)
-      L_PAREN@[6; 7) "("
-      PARAM@[7; 13)
-        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"
-      R_PAREN@[16; 17) ")"
-    WHITESPACE@[17; 18) " "
-    BLOCK@[18; 21)
-      L_CURLY@[18; 19) "{"
-      WHITESPACE@[19; 20) "\n"
-      R_CURLY@[20; 21) "}"
-  WHITESPACE@[21; 22) "\n"
-error 16: expected COLON
-error 16: expected type
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
deleted file mode 100644 (file)
index cd2d493..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index 32b53bb..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-SOURCE_FILE@[0; 112)
-  FN_DEF@[0; 33)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 4)
-      IDENT@[3; 4) "a"
-    PARAM_LIST@[4; 6)
-      L_PAREN@[4; 5) "("
-      R_PAREN@[5; 6) ")"
-    WHITESPACE@[6; 7) " "
-    BLOCK@[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) ","
-      WHITESPACE@[15; 16) " "
-      EXPR_STMT@[16; 17)
-        ERROR@[16; 17)
-          AT@[16; 17) "@"
-      EXPR_STMT@[17; 18)
-        ERROR@[17; 18)
-          COMMA@[17; 18) ","
-      WHITESPACE@[18; 19) " "
-      STRUCT_DEF@[19; 26)
-        STRUCT_KW@[19; 25) "struct"
-        ERROR@[25; 26)
-          COMMA@[25; 26) ","
-      WHITESPACE@[26; 27) " "
-      LET_STMT@[27; 31)
-        LET_KW@[27; 30) "let"
-        ERROR@[30; 31)
-          R_BRACK@[30; 31) "]"
-      WHITESPACE@[31; 32) " "
-      R_CURLY@[32; 33) "}"
-  WHITESPACE@[33; 34) "\n"
-  FN_DEF@[34; 68)
-    FN_KW@[34; 36) "fn"
-    WHITESPACE@[36; 37) " "
-    NAME@[37; 38)
-      IDENT@[37; 38) "b"
-    PARAM_LIST@[38; 40)
-      L_PAREN@[38; 39) "("
-      R_PAREN@[39; 40) ")"
-    WHITESPACE@[40; 41) " "
-    BLOCK@[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) ","
-      WHITESPACE@[52; 53) " "
-      EXPR_STMT@[53; 54)
-        ERROR@[53; 54)
-          AT@[53; 54) "@"
-      EXPR_STMT@[54; 55)
-        ERROR@[54; 55)
-          COMMA@[54; 55) ","
-      WHITESPACE@[55; 56) " "
-      IMPL_BLOCK@[56; 60)
-        IMPL_KW@[56; 60) "impl"
-      EXPR_STMT@[60; 61)
-        ERROR@[60; 61)
-          COMMA@[60; 61) ","
-      WHITESPACE@[61; 62) " "
-      LET_STMT@[62; 65)
-        LET_KW@[62; 65) "let"
-      ERROR@[65; 66)
-        R_PAREN@[65; 66) ")"
-      WHITESPACE@[66; 67) " "
-      R_CURLY@[67; 68) "}"
-  WHITESPACE@[68; 69) "\n"
-  FN_DEF@[69; 111)
-    FN_KW@[69; 71) "fn"
-    WHITESPACE@[71; 72) " "
-    NAME@[72; 73)
-      IDENT@[72; 73) "c"
-    PARAM_LIST@[73; 75)
-      L_PAREN@[73; 74) "("
-      R_PAREN@[74; 75) ")"
-    WHITESPACE@[75; 76) " "
-    BLOCK@[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) ","
-      WHITESPACE@[91; 92) " "
-      EXPR_STMT@[92; 93)
-        ERROR@[92; 93)
-          AT@[92; 93) "@"
-      EXPR_STMT@[93; 94)
-        ERROR@[93; 94)
-          COMMA@[93; 94) ","
-      WHITESPACE@[94; 95) " "
-      EXPR_STMT@[95; 96)
-        ERROR@[95; 96)
-          R_BRACK@[95; 96) "]"
-      EXPR_STMT@[96; 97)
-        ERROR@[96; 97)
-          COMMA@[96; 97) ","
-      WHITESPACE@[97; 98) " "
-      TRAIT_DEF@[98; 104)
-        TRAIT_KW@[98; 103) "trait"
-        ERROR@[103; 104)
-          COMMA@[103; 104) ","
-      WHITESPACE@[104; 105) " "
-      LET_STMT@[105; 108)
-        LET_KW@[105; 108) "let"
-      ERROR@[108; 109)
-        R_PAREN@[108; 109) ")"
-      WHITESPACE@[109; 110) " "
-      R_CURLY@[110; 111) "}"
-  WHITESPACE@[111; 112) "\n"
-error 15: expected expression
-error 15: expected R_BRACK
-error 15: expected SEMI
-error 16: expected expression
-error 17: expected SEMI
-error 17: expected expression
-error 18: expected SEMI
-error 25: expected a name
-error 26: expected `;`, `{`, or `(`
-error 30: expected pattern
-error 31: expected SEMI
-error 52: expected expression
-error 52: expected SEMI
-error 53: expected expression
-error 54: expected SEMI
-error 54: expected expression
-error 55: expected SEMI
-error 60: expected type
-error 60: expected `{`
-error 60: expected expression
-error 61: expected SEMI
-error 65: expected pattern
-error 65: expected SEMI
-error 65: expected expression
-error 91: expected expression
-error 91: expected SEMI
-error 92: expected expression
-error 93: expected SEMI
-error 93: expected expression
-error 94: expected SEMI
-error 95: expected expression
-error 96: expected SEMI
-error 96: expected expression
-error 97: expected SEMI
-error 103: expected a name
-error 104: expected `{`
-error 108: expected pattern
-error 108: expected SEMI
-error 108: expected expression
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
deleted file mode 100644 (file)
index 0206d56..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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
deleted file mode 100644 (file)
index f2515fa..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE@[0; 94)
-  FN_DEF@[0; 55)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 55)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      MACRO_CALL@[16; 49)
-        PATH@[16; 19)
-          PATH_SEGMENT@[16; 19)
-            NAME_REF@[16; 19)
-              IDENT@[16; 19) "foo"
-        EXCL@[19; 20) "!"
-        WHITESPACE@[20; 21) " "
-        TOKEN_TREE@[21; 49)
-          L_PAREN@[21; 22) "("
-          WHITESPACE@[22; 31) "\n        "
-          IDENT@[31; 34) "bar"
-          COMMA@[34; 35) ","
-          WHITESPACE@[35; 36) " "
-          STRING@[36; 41) "\"baz\""
-          COMMA@[41; 42) ","
-          WHITESPACE@[42; 43) " "
-          INT_NUMBER@[43; 44) "1"
-          COMMA@[44; 45) ","
-          WHITESPACE@[45; 46) " "
-          FLOAT_NUMBER@[46; 49) "2.0"
-      WHITESPACE@[49; 54) "\n    "
-      R_CURLY@[54; 55) "}"
-  WHITESPACE@[55; 56) " "
-  COMMENT@[56; 91) "//~ ERROR incorrect c ..."
-  WHITESPACE@[91; 92) "\n"
-  ERROR@[92; 93)
-    R_CURLY@[92; 93) "}"
-  WHITESPACE@[93; 94) "\n"
-error 49: unmatched `}`
-error 92: unmatched `}`
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
deleted file mode 100644 (file)
index 6c2e95c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-fn f<T: (Copy) + (?Sized) + (for<'a> 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
deleted file mode 100644 (file)
index faf0fe4..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-SOURCE_FILE@[0; 240)
-  FN_DEF@[0; 53)
-    FN_KW@[0; 2) "fn"
-    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) " "
-        TYPE_BOUND_LIST@[8; 47)
-          TYPE_BOUND@[8; 14)
-            L_PAREN@[8; 9) "("
-            PATH_TYPE@[9; 13)
-              PATH@[9; 13)
-                PATH_SEGMENT@[9; 13)
-                  NAME_REF@[9; 13)
-                    IDENT@[9; 13) "Copy"
-            R_PAREN@[13; 14) ")"
-          WHITESPACE@[14; 15) " "
-          PLUS@[15; 16) "+"
-          WHITESPACE@[16; 17) " "
-          TYPE_BOUND@[17; 25)
-            L_PAREN@[17; 18) "("
-            QUESTION@[18; 19) "?"
-            PATH_TYPE@[19; 24)
-              PATH@[19; 24)
-                PATH_SEGMENT@[19; 24)
-                  NAME_REF@[19; 24)
-                    IDENT@[19; 24) "Sized"
-            R_PAREN@[24; 25) ")"
-          WHITESPACE@[25; 26) " "
-          PLUS@[26; 27) "+"
-          WHITESPACE@[27; 28) " "
-          TYPE_BOUND@[28; 47)
-            L_PAREN@[28; 29) "("
-            FOR_TYPE@[29; 46)
-              FOR_KW@[29; 32) "for"
-              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) "\n\n"
-  FN_DEF@[55; 239)
-    FN_KW@[55; 57) "fn"
-    WHITESPACE@[57; 58) " "
-    NAME@[58; 62)
-      IDENT@[58; 62) "main"
-    PARAM_LIST@[62; 64)
-      L_PAREN@[62; 63) "("
-      R_PAREN@[63; 64) ")"
-    WHITESPACE@[64; 65) " "
-    BLOCK@[65; 239)
-      L_CURLY@[65; 66) "{"
-      WHITESPACE@[66; 71) "\n    "
-      LET_STMT@[71; 121)
-        LET_KW@[71; 74) "let"
-        WHITESPACE@[74; 75) " "
-        PLACEHOLDER_PAT@[75; 76)
-          UNDERSCORE@[75; 76) "_"
-        COLON@[76; 77) ":"
-        WHITESPACE@[77; 78) " "
-        DYN_TRAIT_TYPE@[78; 121)
-          TYPE_BOUND_LIST@[78; 121)
-            TYPE_BOUND@[78; 88)
-              PATH_TYPE@[78; 88)
-                PATH@[78; 88)
-                  PATH_SEGMENT@[78; 88)
-                    NAME_REF@[78; 81)
-                      IDENT@[78; 81) "Box"
-                    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) ")"
-            WHITESPACE@[88; 89) " "
-            PLUS@[89; 90) "+"
-            WHITESPACE@[90; 91) " "
-            TYPE_BOUND@[91; 99)
-              L_PAREN@[91; 92) "("
-              QUESTION@[92; 93) "?"
-              PATH_TYPE@[93; 98)
-                PATH@[93; 98)
-                  PATH_SEGMENT@[93; 98)
-                    NAME_REF@[93; 98)
-                      IDENT@[93; 98) "Sized"
-              R_PAREN@[98; 99) ")"
-            WHITESPACE@[99; 100) " "
-            PLUS@[100; 101) "+"
-            WHITESPACE@[101; 102) " "
-            TYPE_BOUND@[102; 121)
-              L_PAREN@[102; 103) "("
-              FOR_TYPE@[103; 120)
-                FOR_KW@[103; 106) "for"
-                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) ")"
-      EXPR_STMT@[121; 123)
-        ERROR@[121; 122)
-          R_ANGLE@[121; 122) ">"
-        SEMI@[122; 123) ";"
-      WHITESPACE@[123; 128) "\n    "
-      LET_STMT@[128; 141)
-        LET_KW@[128; 131) "let"
-        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) "("
-                    ERROR@[140; 141)
-                      QUESTION@[140; 141) "?"
-      EXPR_STMT@[141; 146)
-        PATH_EXPR@[141; 146)
-          PATH@[141; 146)
-            PATH_SEGMENT@[141; 146)
-              NAME_REF@[141; 146)
-                IDENT@[141; 146) "Sized"
-      EXPR_STMT@[146; 147)
-        ERROR@[146; 147)
-          R_PAREN@[146; 147) ")"
-      WHITESPACE@[147; 148) " "
-      EXPR_STMT@[148; 149)
-        ERROR@[148; 149)
-          PLUS@[148; 149) "+"
-      WHITESPACE@[149; 150) " "
-      EXPR_STMT@[150; 151)
-        PAREN_EXPR@[150; 151)
-          L_PAREN@[150; 151) "("
-      EXPR_STMT@[151; 157)
-        FOR_EXPR@[151; 157)
-          FOR_KW@[151; 154) "for"
-          ERROR@[154; 155)
-            L_ANGLE@[154; 155) "<"
-          ERROR@[155; 157)
-            LIFETIME@[155; 157) "\'a"
-      EXPR_STMT@[157; 158)
-        ERROR@[157; 158)
-          R_ANGLE@[157; 158) ">"
-      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) "<"
-                ERROR@[165; 167)
-                  LIFETIME@[165; 167) "\'a"
-              R_ANGLE@[167; 168) ">"
-              ERROR@[168; 169)
-                R_PAREN@[168; 169) ")"
-            WHITESPACE@[169; 170) " "
-            PLUS@[170; 171) "+"
-            WHITESPACE@[171; 172) " "
-            PAREN_EXPR@[172; 178)
-              L_PAREN@[172; 173) "("
-              PATH_EXPR@[173; 177)
-                PATH@[173; 177)
-                  PATH_SEGMENT@[173; 177)
-                    NAME_REF@[173; 177)
-                      IDENT@[173; 177) "Copy"
-              R_PAREN@[177; 178) ")"
-          R_ANGLE@[178; 179) ">"
-          ERROR@[179; 180)
-            SEMI@[179; 180) ";"
-      WHITESPACE@[180; 185) "\n    "
-      LET_STMT@[185; 235)
-        LET_KW@[185; 188) "let"
-        WHITESPACE@[188; 189) " "
-        PLACEHOLDER_PAT@[189; 190)
-          UNDERSCORE@[189; 190) "_"
-        COLON@[190; 191) ":"
-        WHITESPACE@[191; 192) " "
-        DYN_TRAIT_TYPE@[192; 235)
-          TYPE_BOUND_LIST@[192; 235)
-            TYPE_BOUND@[192; 215)
-              PATH_TYPE@[192; 215)
-                PATH@[192; 215)
-                  PATH_SEGMENT@[192; 215)
-                    NAME_REF@[192; 195)
-                      IDENT@[192; 195) "Box"
-                    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) "for"
-                            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) ")"
-            WHITESPACE@[215; 216) " "
-            PLUS@[216; 217) "+"
-            WHITESPACE@[217; 218) " "
-            TYPE_BOUND@[218; 224)
-              L_PAREN@[218; 219) "("
-              PATH_TYPE@[219; 223)
-                PATH@[219; 223)
-                  PATH_SEGMENT@[219; 223)
-                    NAME_REF@[219; 223)
-                      IDENT@[219; 223) "Copy"
-              R_PAREN@[223; 224) ")"
-            WHITESPACE@[224; 225) " "
-            PLUS@[225; 226) "+"
-            WHITESPACE@[226; 227) " "
-            TYPE_BOUND@[227; 235)
-              L_PAREN@[227; 228) "("
-              QUESTION@[228; 229) "?"
-              PATH_TYPE@[229; 234)
-                PATH@[229; 234)
-                  PATH_SEGMENT@[229; 234)
-                    NAME_REF@[229; 234)
-                      IDENT@[229; 234) "Sized"
-              R_PAREN@[234; 235) ")"
-      EXPR_STMT@[235; 237)
-        ERROR@[235; 236)
-          R_ANGLE@[235; 236) ">"
-        SEMI@[236; 237) ";"
-      WHITESPACE@[237; 238) "\n"
-      R_CURLY@[238; 239) "}"
-  WHITESPACE@[239; 240) "\n"
-error 88: expected COMMA
-error 88: expected R_ANGLE
-error 121: expected SEMI
-error 121: expected expression
-error 140: expected type
-error 141: expected R_PAREN
-error 141: expected COMMA
-error 141: expected R_ANGLE
-error 141: expected SEMI
-error 146: expected SEMI
-error 146: expected expression
-error 147: expected SEMI
-error 148: expected expression
-error 149: expected SEMI
-error 151: expected expression
-error 151: expected R_PAREN
-error 151: expected SEMI
-error 154: expected pattern
-error 155: expected IN_KW
-error 155: expected expression
-error 157: expected a block
-error 157: expected expression
-error 158: expected SEMI
-error 165: expected expression
-error 168: expected expression
-error 179: expected expression
-error 180: expected SEMI
-error 215: expected COMMA
-error 215: expected R_ANGLE
-error 235: expected SEMI
-error 235: expected expression
diff --git a/crates/ra_syntax/tests/data/parser/err/0025_nope.rs b/crates/ra_syntax/tests/data/parser/err/0025_nope.rs
deleted file mode 100644 (file)
index 28726ed..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100644 (file)
index 0a3952d..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-SOURCE_FILE@[0; 575)
-  FN_DEF@[0; 574)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 574)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      ENUM_DEF@[16; 152)
-        ENUM_KW@[16; 20) "enum"
-        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) "\n        "
-          ENUM_VARIANT@[36; 40)
-            NAME@[36; 40)
-              IDENT@[36; 40) "Var1"
-          COMMA@[40; 41) ","
-          WHITESPACE@[41; 50) "\n        "
-          ENUM_VARIANT@[50; 62)
-            NAME@[50; 54)
-              IDENT@[50; 54) "Var2"
-            POS_FIELD_DEF_LIST@[54; 62)
-              L_PAREN@[54; 55) "("
-              POS_FIELD_DEF@[55; 61)
-                PATH_TYPE@[55; 61)
-                  PATH@[55; 61)
-                    PATH_SEGMENT@[55; 61)
-                      NAME_REF@[55; 61)
-                        IDENT@[55; 61) "String"
-              R_PAREN@[61; 62) ")"
-          COMMA@[62; 63) ","
-          WHITESPACE@[63; 72) "\n        "
-          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) "\n            "
-              NAMED_FIELD_DEF@[91; 95)
-                NAME@[91; 94)
-                  IDENT@[91; 94) "abc"
-                COLON@[94; 95) ":"
-              WHITESPACE@[95; 96) " "
-              ERROR@[96; 98)
-                L_CURLY@[96; 97) "{"
-                R_CURLY@[97; 98) "}"
-              ERROR@[98; 99)
-                COMMA@[98; 99) ","
-              WHITESPACE@[99; 100) " "
-              COMMENT@[100; 135) "//~ ERROR: expected t ..."
-              WHITESPACE@[135; 144) "\n        "
-              R_CURLY@[144; 145) "}"
-          COMMA@[145; 146) ","
-          WHITESPACE@[146; 151) "\n    "
-          R_CURLY@[151; 152) "}"
-      WHITESPACE@[152; 158) "\n\n    "
-      COMMENT@[158; 171) "// recover..."
-      WHITESPACE@[171; 176) "\n    "
-      LET_STMT@[176; 186)
-        LET_KW@[176; 179) "let"
-        WHITESPACE@[179; 180) " "
-        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) "\n    "
-      ENUM_DEF@[191; 223)
-        ENUM_KW@[191; 195) "enum"
-        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) "\n        "
-          ENUM_VARIANT@[212; 216)
-            NAME@[212; 216)
-              IDENT@[212; 216) "Fine"
-          COMMA@[216; 217) ","
-          WHITESPACE@[217; 222) "\n    "
-          R_CURLY@[222; 223) "}"
-      WHITESPACE@[223; 229) "\n\n    "
-      ENUM_DEF@[229; 300)
-        ENUM_KW@[229; 233) "enum"
-        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) "\n        "
-          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) "\n            "
-              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) "\n        "
-              R_CURLY@[292; 293) "}"
-          COMMA@[293; 294) ","
-          WHITESPACE@[294; 299) "\n    "
-          R_CURLY@[299; 300) "}"
-      WHITESPACE@[300; 306) "\n\n    "
-      EXPR_STMT@[306; 459)
-        BLOCK_EXPR@[306; 459)
-          BLOCK@[306; 459)
-            L_CURLY@[306; 307) "{"
-            WHITESPACE@[307; 316) "\n        "
-            ENUM_DEF@[316; 453)
-              COMMENT@[316; 329) "// fail again"
-              WHITESPACE@[329; 338) "\n        "
-              ENUM_KW@[338; 342) "enum"
-              WHITESPACE@[342; 343) " "
-              NAME@[343; 348)
-                IDENT@[343; 348) "Test4"
-              WHITESPACE@[348; 349) " "
-              ENUM_VARIANT_LIST@[349; 453)
-                L_CURLY@[349; 350) "{"
-                WHITESPACE@[350; 363) "\n            "
-                ENUM_VARIANT@[363; 372)
-                  NAME@[363; 367)
-                    IDENT@[363; 367) "Nope"
-                  POS_FIELD_DEF_LIST@[367; 372)
-                    L_PAREN@[367; 368) "("
-                    POS_FIELD_DEF@[368; 371)
-                      PATH_TYPE@[368; 371)
-                        PATH@[368; 371)
-                          PATH_SEGMENT@[368; 371)
-                            NAME_REF@[368; 371)
-                              IDENT@[368; 371) "i32"
-                    WHITESPACE@[371; 372) " "
-                    ERROR@[372; 372)
-                ERROR@[372; 374)
-                  L_CURLY@[372; 373) "{"
-                  R_CURLY@[373; 374) "}"
-                ERROR@[374; 375)
-                  R_PAREN@[374; 375) ")"
-                WHITESPACE@[375; 376) " "
-                COMMENT@[376; 396) "//~ ERROR: found `{`"
-                WHITESPACE@[396; 422) "\n                     ..."
-                COMMENT@[422; 443) "//~^ ERROR: found `{`"
-                WHITESPACE@[443; 452) "\n        "
-                R_CURLY@[452; 453) "}"
-            WHITESPACE@[453; 458) "\n    "
-            R_CURLY@[458; 459) "}"
-      WHITESPACE@[459; 464) "\n    "
-      COMMENT@[464; 486) "// still recover later"
-      WHITESPACE@[486; 491) "\n    "
-      LET_STMT@[491; 510)
-        LET_KW@[491; 494) "let"
-        WHITESPACE@[494; 495) " "
-        BIND_PAT@[495; 505)
-          NAME@[495; 505)
-            IDENT@[495; 505) "bad_syntax"
-        WHITESPACE@[505; 506) " "
-        EQ@[506; 507) "="
-        WHITESPACE@[507; 508) " "
-        ERROR@[508; 509)
-          UNDERSCORE@[508; 509) "_"
-        SEMI@[509; 510) ";"
-      WHITESPACE@[510; 511) " "
-      COMMENT@[511; 572) "//~ ERROR: expected e ..."
-      WHITESPACE@[572; 573) "\n"
-      R_CURLY@[573; 574) "}"
-  WHITESPACE@[574; 575) "\n"
-error 95: expected type
-error 95: expected COMMA
-error 96: expected field
-error 98: expected field declaration
-error 371: expected COMMA
-error 372: expected a type
-error 372: expected R_PAREN
-error 372: expected COMMA
-error 372: expected enum variant
-error 374: expected enum variant
-error 508: expected expression
diff --git a/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.rs b/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.rs
deleted file mode 100644 (file)
index 829ca1c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-impl<T: Clone>
-impl<T> OnceCell<T> {}
diff --git a/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
deleted file mode 100644 (file)
index d3da2f5..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE@[0; 38)
-  IMPL_BLOCK@[0; 14)
-    IMPL_KW@[0; 4) "impl"
-    TYPE_PARAM_LIST@[4; 14)
-      L_ANGLE@[4; 5) "<"
-      TYPE_PARAM@[5; 13)
-        NAME@[5; 6)
-          IDENT@[5; 6) "T"
-        COLON@[6; 7) ":"
-        WHITESPACE@[7; 8) " "
-        TYPE_BOUND_LIST@[8; 13)
-          TYPE_BOUND@[8; 13)
-            PATH_TYPE@[8; 13)
-              PATH@[8; 13)
-                PATH_SEGMENT@[8; 13)
-                  NAME_REF@[8; 13)
-                    IDENT@[8; 13) "Clone"
-      R_ANGLE@[13; 14) ">"
-  WHITESPACE@[14; 15) "\n"
-  IMPL_BLOCK@[15; 37)
-    IMPL_KW@[15; 19) "impl"
-    TYPE_PARAM_LIST@[19; 22)
-      L_ANGLE@[19; 20) "<"
-      TYPE_PARAM@[20; 21)
-        NAME@[20; 21)
-          IDENT@[20; 21) "T"
-      R_ANGLE@[21; 22) ">"
-    WHITESPACE@[22; 23) " "
-    PATH_TYPE@[23; 34)
-      PATH@[23; 34)
-        PATH_SEGMENT@[23; 34)
-          NAME_REF@[23; 31)
-            IDENT@[23; 31) "OnceCell"
-          TYPE_ARG_LIST@[31; 34)
-            L_ANGLE@[31; 32) "<"
-            TYPE_ARG@[32; 33)
-              PATH_TYPE@[32; 33)
-                PATH@[32; 33)
-                  PATH_SEGMENT@[32; 33)
-                    NAME_REF@[32; 33)
-                      IDENT@[32; 33) "T"
-            R_ANGLE@[33; 34) ">"
-    WHITESPACE@[34; 35) " "
-    ITEM_LIST@[35; 37)
-      L_CURLY@[35; 36) "{"
-      R_CURLY@[36; 37) "}"
-  WHITESPACE@[37; 38) "\n"
-error 14: expected trait or type
-error 14: expected `{`
diff --git a/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.rs b/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.rs
deleted file mode 100644 (file)
index 2792c20..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo()
-    where for<'a>
-{}
diff --git a/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt b/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt
deleted file mode 100644 (file)
index 061e6fb..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE@[0; 30)
-  FN_DEF@[0; 29)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 13) "\n    "
-    WHERE_CLAUSE@[13; 26)
-      WHERE_KW@[13; 18) "where"
-      WHITESPACE@[18; 19) " "
-      WHERE_PRED@[19; 26)
-        FOR_TYPE@[19; 26)
-          FOR_KW@[19; 22) "for"
-          TYPE_PARAM_LIST@[22; 26)
-            L_ANGLE@[22; 23) "<"
-            LIFETIME_PARAM@[23; 25)
-              LIFETIME@[23; 25) "\'a"
-            R_ANGLE@[25; 26) ">"
-    WHITESPACE@[26; 27) "\n"
-    BLOCK@[27; 29)
-      L_CURLY@[27; 28) "{"
-      R_CURLY@[28; 29) "}"
-  WHITESPACE@[29; 30) "\n"
-error 26: expected a path
-error 26: expected colon
diff --git a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.rs b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.rs
deleted file mode 100644 (file)
index 781047b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-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/err/0028_macro_2.0.txt b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt
deleted file mode 100644 (file)
index 98bc562..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-SOURCE_FILE@[0; 349)
-  MACRO_CALL@[0; 41)
-    PATH@[0; 5)
-      PATH_SEGMENT@[0; 5)
-        NAME_REF@[0; 5)
-          IDENT@[0; 5) "macro"
-    WHITESPACE@[5; 6) " "
-    NAME@[6; 21)
-      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) ")"
-  WHITESPACE@[41; 42) " "
-  ERROR@[42; 93)
-    L_CURLY@[42; 43) "{"
-    WHITESPACE@[43; 48) "\n    "
-    MACRO_CALL@[48; 91)
-      PATH@[48; 51)
-        PATH_SEGMENT@[48; 51)
-          NAME_REF@[48; 51)
-            IDENT@[48; 51) "vec"
-      EXCL@[51; 52) "!"
-      TOKEN_TREE@[52; 91)
-        L_BRACK@[52; 53) "["
-        WHITESPACE@[53; 62) "\n        "
-        DOLLAR@[62; 63) "$"
-        TOKEN_TREE@[63; 84)
-          L_PAREN@[63; 64) "("
-          IDENT@[64; 78) "parse_use_tree"
-          TOKEN_TREE@[78; 82)
-            L_PAREN@[78; 79) "("
-            DOLLAR@[79; 80) "$"
-            IDENT@[80; 81) "s"
-            R_PAREN@[81; 82) ")"
-          COMMA@[82; 83) ","
-          R_PAREN@[83; 84) ")"
-        STAR@[84; 85) "*"
-        WHITESPACE@[85; 90) "\n    "
-        R_BRACK@[90; 91) "]"
-    WHITESPACE@[91; 92) "\n"
-    R_CURLY@[92; 93) "}"
-  WHITESPACE@[93; 95) "\n\n"
-  FN_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) "\n"
-    FN_KW@[103; 105) "fn"
-    WHITESPACE@[105; 106) " "
-    NAME@[106; 125)
-      IDENT@[106; 125) "test_use_tree_merge"
-    PARAM_LIST@[125; 127)
-      L_PAREN@[125; 126) "("
-      R_PAREN@[126; 127) ")"
-    WHITESPACE@[127; 128) " "
-    BLOCK@[128; 348)
-      L_CURLY@[128; 129) "{"
-      WHITESPACE@[129; 134) "\n    "
-      EXPR_STMT@[134; 139)
-        PATH_EXPR@[134; 139)
-          PATH@[134; 139)
-            PATH_SEGMENT@[134; 139)
-              NAME_REF@[134; 139)
-                IDENT@[134; 139) "macro"
-      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) "["
-              ERROR@[152; 153)
-                DOLLAR@[152; 153) "$"
-              PAREN_EXPR@[153; 154)
-                L_PAREN@[153; 154) "("
-      EXPR_STMT@[154; 155)
-        ERROR@[154; 155)
-          DOLLAR@[154; 155) "$"
-      EXPR_STMT@[155; 160)
-        PATH_EXPR@[155; 160)
-          PATH@[155; 160)
-            PATH_SEGMENT@[155; 160)
-              NAME_REF@[155; 160)
-                IDENT@[155; 160) "input"
-      EXPR_STMT@[160; 161)
-        ERROR@[160; 161)
-          COLON@[160; 161) ":"
-      EXPR_STMT@[161; 165)
-        PATH_EXPR@[161; 165)
-          PATH@[161; 165)
-            PATH_SEGMENT@[161; 165)
-              NAME_REF@[161; 165)
-                IDENT@[161; 165) "expr"
-      EXPR_STMT@[165; 166)
-        ERROR@[165; 166)
-          R_PAREN@[165; 166) ")"
-      EXPR_STMT@[166; 167)
-        ERROR@[166; 167)
-          COMMA@[166; 167) ","
-      EXPR_STMT@[167; 170)
-        PREFIX_EXPR@[167; 170)
-          STAR@[167; 168) "*"
-          WHITESPACE@[168; 169) " "
-          ERROR@[169; 170)
-            DOLLAR@[169; 170) "$"
-      EXPR_STMT@[170; 171)
-        PAREN_EXPR@[170; 171)
-          L_PAREN@[170; 171) "("
-      EXPR_STMT@[171; 172)
-        ERROR@[171; 172)
-          COMMA@[171; 172) ","
-      EXPR_STMT@[172; 173)
-        ERROR@[172; 173)
-          R_PAREN@[172; 173) ")"
-      EXPR_STMT@[173; 175)
-        PREFIX_EXPR@[173; 175)
-          STAR@[173; 174) "*"
-          ERROR@[174; 175)
-            R_BRACK@[174; 175) "]"
-      EXPR_STMT@[175; 176)
-        ERROR@[175; 176)
-          COMMA@[175; 176) ","
-      WHITESPACE@[176; 177) " "
-      EXPR_STMT@[177; 180)
-        ARRAY_EXPR@[177; 180)
-          L_BRACK@[177; 178) "["
-          ERROR@[178; 179)
-            DOLLAR@[178; 179) "$"
-          PAREN_EXPR@[179; 180)
-            L_PAREN@[179; 180) "("
-      EXPR_STMT@[180; 181)
-        ERROR@[180; 181)
-          DOLLAR@[180; 181) "$"
-      EXPR_STMT@[181; 187)
-        PATH_EXPR@[181; 187)
-          PATH@[181; 187)
-            PATH_SEGMENT@[181; 187)
-              NAME_REF@[181; 187)
-                IDENT@[181; 187) "output"
-      EXPR_STMT@[187; 188)
-        ERROR@[187; 188)
-          COLON@[187; 188) ":"
-      EXPR_STMT@[188; 192)
-        PATH_EXPR@[188; 192)
-          PATH@[188; 192)
-            PATH_SEGMENT@[188; 192)
-              NAME_REF@[188; 192)
-                IDENT@[188; 192) "expr"
-      EXPR_STMT@[192; 193)
-        ERROR@[192; 193)
-          R_PAREN@[192; 193) ")"
-      EXPR_STMT@[193; 194)
-        ERROR@[193; 194)
-          COMMA@[193; 194) ","
-      EXPR_STMT@[194; 197)
-        PREFIX_EXPR@[194; 197)
-          STAR@[194; 195) "*"
-          WHITESPACE@[195; 196) " "
-          ERROR@[196; 197)
-            DOLLAR@[196; 197) "$"
-      EXPR_STMT@[197; 198)
-        PAREN_EXPR@[197; 198)
-          L_PAREN@[197; 198) "("
-      EXPR_STMT@[198; 199)
-        ERROR@[198; 199)
-          COMMA@[198; 199) ","
-      EXPR_STMT@[199; 200)
-        ERROR@[199; 200)
-          R_PAREN@[199; 200) ")"
-      EXPR_STMT@[200; 202)
-        PREFIX_EXPR@[200; 202)
-          STAR@[200; 201) "*"
-          ERROR@[201; 202)
-            R_BRACK@[201; 202) "]"
-      EXPR_STMT@[202; 203)
-        ERROR@[202; 203)
-          R_PAREN@[202; 203) ")"
-      WHITESPACE@[203; 204) " "
-      BLOCK_EXPR@[204; 346)
-        BLOCK@[204; 346)
-          L_CURLY@[204; 205) "{"
-          WHITESPACE@[205; 214) "\n        "
-          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) "\n            "
-                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) "\n            "
-                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) "\n        "
-                R_PAREN@[338; 339) ")"
-            SEMI@[339; 340) ";"
-          WHITESPACE@[340; 345) "\n    "
-          R_CURLY@[345; 346) "}"
-      WHITESPACE@[346; 347) "\n"
-      R_CURLY@[347; 348) "}"
-  WHITESPACE@[348; 349) "\n"
-error 5: expected EXCL
-error 41: expected SEMI
-error 42: expected an item
-error 139: expected SEMI
-error 152: expected expression
-error 153: expected COMMA
-error 154: expected expression
-error 154: expected R_PAREN
-error 154: expected COMMA
-error 154: expected expression
-error 154: expected R_BRACK
-error 154: expected COMMA
-error 154: expected SEMI
-error 154: expected expression
-error 155: expected SEMI
-error 160: expected SEMI
-error 160: expected expression
-error 161: expected SEMI
-error 165: expected SEMI
-error 165: expected expression
-error 166: expected SEMI
-error 166: expected expression
-error 167: expected SEMI
-error 169: expected expression
-error 170: expected SEMI
-error 171: expected expression
-error 171: expected R_PAREN
-error 171: expected SEMI
-error 171: expected expression
-error 172: expected SEMI
-error 172: expected expression
-error 173: expected SEMI
-error 174: expected expression
-error 175: expected SEMI
-error 175: expected expression
-error 176: expected SEMI
-error 178: expected expression
-error 179: expected COMMA
-error 180: expected expression
-error 180: expected R_PAREN
-error 180: expected COMMA
-error 180: expected expression
-error 180: expected R_BRACK
-error 180: expected SEMI
-error 180: expected expression
-error 181: expected SEMI
-error 187: expected SEMI
-error 187: expected expression
-error 188: expected SEMI
-error 192: expected SEMI
-error 192: expected expression
-error 193: expected SEMI
-error 193: expected expression
-error 194: expected SEMI
-error 196: expected expression
-error 197: expected SEMI
-error 198: expected expression
-error 198: expected R_PAREN
-error 198: expected SEMI
-error 198: expected expression
-error 199: expected SEMI
-error 199: expected expression
-error 200: expected SEMI
-error 201: expected expression
-error 202: expected SEMI
-error 202: expected expression
-error 203: expected SEMI
diff --git a/crates/ra_syntax/tests/data/parser/err/0029_field_completion.rs b/crates/ra_syntax/tests/data/parser/err/0029_field_completion.rs
deleted file mode 100644 (file)
index a7cdc17..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo(a: A) {
-    a.
-}
diff --git a/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt b/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt
deleted file mode 100644 (file)
index fb50a12..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE@[0; 24)
-  FN_DEF@[0; 23)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 12)
-      L_PAREN@[6; 7) "("
-      PARAM@[7; 11)
-        BIND_PAT@[7; 8)
-          NAME@[7; 8)
-            IDENT@[7; 8) "a"
-        COLON@[8; 9) ":"
-        WHITESPACE@[9; 10) " "
-        PATH_TYPE@[10; 11)
-          PATH@[10; 11)
-            PATH_SEGMENT@[10; 11)
-              NAME_REF@[10; 11)
-                IDENT@[10; 11) "A"
-      R_PAREN@[11; 12) ")"
-    WHITESPACE@[12; 13) " "
-    BLOCK@[13; 23)
-      L_CURLY@[13; 14) "{"
-      WHITESPACE@[14; 19) "\n    "
-      FIELD_EXPR@[19; 21)
-        PATH_EXPR@[19; 20)
-          PATH@[19; 20)
-            PATH_SEGMENT@[19; 20)
-              NAME_REF@[19; 20)
-                IDENT@[19; 20) "a"
-        DOT@[20; 21) "."
-      WHITESPACE@[21; 22) "\n"
-      R_CURLY@[22; 23) "}"
-  WHITESPACE@[23; 24) "\n"
-error 21: expected field name or number
diff --git a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.rs b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.rs
deleted file mode 100644 (file)
index 6a04f2d..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-fn block() {
-    let inner = {
-        #![doc("Inner attributes not allowed here")]
-        //! Nor are ModuleDoc comments
-    };
-    if true {
-        #![doc("Nor here")]
-        #![doc("We error on each attr")]
-        //! Nor are ModuleDoc comments
-    }
-    while true {
-        #![doc("Nor here")]
-        //! Nor are ModuleDoc comments
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt
deleted file mode 100644 (file)
index c205cf1..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-SOURCE_FILE@[0; 350)
-  FN_DEF@[0; 349)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 8)
-      IDENT@[3; 8) "block"
-    PARAM_LIST@[8; 10)
-      L_PAREN@[8; 9) "("
-      R_PAREN@[9; 10) ")"
-    WHITESPACE@[10; 11) " "
-    BLOCK@[11; 349)
-      L_CURLY@[11; 12) "{"
-      WHITESPACE@[12; 17) "\n    "
-      LET_STMT@[17; 129)
-        LET_KW@[17; 20) "let"
-        WHITESPACE@[20; 21) " "
-        BIND_PAT@[21; 26)
-          NAME@[21; 26)
-            IDENT@[21; 26) "inner"
-        WHITESPACE@[26; 27) " "
-        EQ@[27; 28) "="
-        WHITESPACE@[28; 29) " "
-        BLOCK_EXPR@[29; 128)
-          BLOCK@[29; 128)
-            L_CURLY@[29; 30) "{"
-            WHITESPACE@[30; 39) "\n        "
-            ATTR@[39; 83)
-              POUND@[39; 40) "#"
-              EXCL@[40; 41) "!"
-              TOKEN_TREE@[41; 83)
-                L_BRACK@[41; 42) "["
-                IDENT@[42; 45) "doc"
-                TOKEN_TREE@[45; 82)
-                  L_PAREN@[45; 46) "("
-                  STRING@[46; 81) "\"Inner attributes not ..."
-                  R_PAREN@[81; 82) ")"
-                R_BRACK@[82; 83) "]"
-            WHITESPACE@[83; 92) "\n        "
-            COMMENT@[92; 122) "//! Nor are ModuleDoc ..."
-            WHITESPACE@[122; 127) "\n    "
-            R_CURLY@[127; 128) "}"
-        SEMI@[128; 129) ";"
-      WHITESPACE@[129; 134) "\n    "
-      EXPR_STMT@[134; 257)
-        IF_EXPR@[134; 257)
-          IF_KW@[134; 136) "if"
-          WHITESPACE@[136; 137) " "
-          CONDITION@[137; 141)
-            LITERAL@[137; 141)
-              TRUE_KW@[137; 141) "true"
-          WHITESPACE@[141; 142) " "
-          BLOCK@[142; 257)
-            L_CURLY@[142; 143) "{"
-            WHITESPACE@[143; 152) "\n        "
-            ATTR@[152; 171)
-              POUND@[152; 153) "#"
-              EXCL@[153; 154) "!"
-              TOKEN_TREE@[154; 171)
-                L_BRACK@[154; 155) "["
-                IDENT@[155; 158) "doc"
-                TOKEN_TREE@[158; 170)
-                  L_PAREN@[158; 159) "("
-                  STRING@[159; 169) "\"Nor here\""
-                  R_PAREN@[169; 170) ")"
-                R_BRACK@[170; 171) "]"
-            WHITESPACE@[171; 180) "\n        "
-            ATTR@[180; 212)
-              POUND@[180; 181) "#"
-              EXCL@[181; 182) "!"
-              TOKEN_TREE@[182; 212)
-                L_BRACK@[182; 183) "["
-                IDENT@[183; 186) "doc"
-                TOKEN_TREE@[186; 211)
-                  L_PAREN@[186; 187) "("
-                  STRING@[187; 210) "\"We error on each attr\""
-                  R_PAREN@[210; 211) ")"
-                R_BRACK@[211; 212) "]"
-            WHITESPACE@[212; 221) "\n        "
-            COMMENT@[221; 251) "//! Nor are ModuleDoc ..."
-            WHITESPACE@[251; 256) "\n    "
-            R_CURLY@[256; 257) "}"
-      WHITESPACE@[257; 262) "\n    "
-      WHILE_EXPR@[262; 347)
-        WHILE_KW@[262; 267) "while"
-        WHITESPACE@[267; 268) " "
-        CONDITION@[268; 272)
-          LITERAL@[268; 272)
-            TRUE_KW@[268; 272) "true"
-        WHITESPACE@[272; 273) " "
-        BLOCK@[273; 347)
-          L_CURLY@[273; 274) "{"
-          WHITESPACE@[274; 283) "\n        "
-          ATTR@[283; 302)
-            POUND@[283; 284) "#"
-            EXCL@[284; 285) "!"
-            TOKEN_TREE@[285; 302)
-              L_BRACK@[285; 286) "["
-              IDENT@[286; 289) "doc"
-              TOKEN_TREE@[289; 301)
-                L_PAREN@[289; 290) "("
-                STRING@[290; 300) "\"Nor here\""
-                R_PAREN@[300; 301) ")"
-              R_BRACK@[301; 302) "]"
-          WHITESPACE@[302; 311) "\n        "
-          COMMENT@[311; 341) "//! Nor are ModuleDoc ..."
-          WHITESPACE@[341; 346) "\n    "
-          R_CURLY@[346; 347) "}"
-      WHITESPACE@[347; 348) "\n"
-      R_CURLY@[348; 349) "}"
-  WHITESPACE@[349; 350) "\n"
-error [39; 83): A block in this position cannot accept inner attributes
-error [152; 171): A block in this position cannot accept inner attributes
-error [180; 212): A block in this position cannot accept inner attributes
-error [283; 302): A block in this position cannot accept inner attributes
diff --git a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.rs b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.rs
deleted file mode 100644 (file)
index 06aa477..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-fn foo() {
-    match () {
-        _ => (),
-        #![doc("Not allowed here")]
-        _ => (),
-    }
-
-    match () {
-        _ => (),
-        _ => (),
-        #![doc("Nor here")]
-    }
-
-    match () {
-        #[cfg(test)]
-        #![doc("Nor here")]
-        _ => (),
-        _ => (),
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt
deleted file mode 100644 (file)
index 4e8c414..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-SOURCE_FILE@[0; 293)
-  FN_DEF@[0; 292)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 292)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 101)
-        MATCH_EXPR@[15; 101)
-          MATCH_KW@[15; 20) "match"
-          WHITESPACE@[20; 21) " "
-          TUPLE_EXPR@[21; 23)
-            L_PAREN@[21; 22) "("
-            R_PAREN@[22; 23) ")"
-          WHITESPACE@[23; 24) " "
-          MATCH_ARM_LIST@[24; 101)
-            L_CURLY@[24; 25) "{"
-            WHITESPACE@[25; 34) "\n        "
-            MATCH_ARM@[34; 41)
-              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) "\n        "
-            MATCH_ARM@[51; 78)
-              ATTR@[51; 52)
-                POUND@[51; 52) "#"
-              ERROR@[52; 53)
-                EXCL@[52; 53) "!"
-              ARRAY_EXPR@[53; 78)
-                L_BRACK@[53; 54) "["
-                CALL_EXPR@[54; 77)
-                  PATH_EXPR@[54; 57)
-                    PATH@[54; 57)
-                      PATH_SEGMENT@[54; 57)
-                        NAME_REF@[54; 57)
-                          IDENT@[54; 57) "doc"
-                  ARG_LIST@[57; 77)
-                    L_PAREN@[57; 58) "("
-                    LITERAL@[58; 76)
-                      STRING@[58; 76) "\"Not allowed here\""
-                    R_PAREN@[76; 77) ")"
-                R_BRACK@[77; 78) "]"
-            WHITESPACE@[78; 87) "\n        "
-            MATCH_ARM@[87; 94)
-              PLACEHOLDER_PAT@[87; 88)
-                UNDERSCORE@[87; 88) "_"
-              WHITESPACE@[88; 89) " "
-              FAT_ARROW@[89; 91) "=>"
-              WHITESPACE@[91; 92) " "
-              TUPLE_EXPR@[92; 94)
-                L_PAREN@[92; 93) "("
-                R_PAREN@[93; 94) ")"
-            COMMA@[94; 95) ","
-            WHITESPACE@[95; 100) "\n    "
-            R_CURLY@[100; 101) "}"
-      WHITESPACE@[101; 107) "\n\n    "
-      EXPR_STMT@[107; 185)
-        MATCH_EXPR@[107; 185)
-          MATCH_KW@[107; 112) "match"
-          WHITESPACE@[112; 113) " "
-          TUPLE_EXPR@[113; 115)
-            L_PAREN@[113; 114) "("
-            R_PAREN@[114; 115) ")"
-          WHITESPACE@[115; 116) " "
-          MATCH_ARM_LIST@[116; 185)
-            L_CURLY@[116; 117) "{"
-            WHITESPACE@[117; 126) "\n        "
-            MATCH_ARM@[126; 133)
-              PLACEHOLDER_PAT@[126; 127)
-                UNDERSCORE@[126; 127) "_"
-              WHITESPACE@[127; 128) " "
-              FAT_ARROW@[128; 130) "=>"
-              WHITESPACE@[130; 131) " "
-              TUPLE_EXPR@[131; 133)
-                L_PAREN@[131; 132) "("
-                R_PAREN@[132; 133) ")"
-            COMMA@[133; 134) ","
-            WHITESPACE@[134; 143) "\n        "
-            MATCH_ARM@[143; 150)
-              PLACEHOLDER_PAT@[143; 144)
-                UNDERSCORE@[143; 144) "_"
-              WHITESPACE@[144; 145) " "
-              FAT_ARROW@[145; 147) "=>"
-              WHITESPACE@[147; 148) " "
-              TUPLE_EXPR@[148; 150)
-                L_PAREN@[148; 149) "("
-                R_PAREN@[149; 150) ")"
-            COMMA@[150; 151) ","
-            WHITESPACE@[151; 160) "\n        "
-            MATCH_ARM@[160; 179)
-              ATTR@[160; 161)
-                POUND@[160; 161) "#"
-              ERROR@[161; 162)
-                EXCL@[161; 162) "!"
-              ARRAY_EXPR@[162; 179)
-                L_BRACK@[162; 163) "["
-                CALL_EXPR@[163; 178)
-                  PATH_EXPR@[163; 166)
-                    PATH@[163; 166)
-                      PATH_SEGMENT@[163; 166)
-                        NAME_REF@[163; 166)
-                          IDENT@[163; 166) "doc"
-                  ARG_LIST@[166; 178)
-                    L_PAREN@[166; 167) "("
-                    LITERAL@[167; 177)
-                      STRING@[167; 177) "\"Nor here\""
-                    R_PAREN@[177; 178) ")"
-                R_BRACK@[178; 179) "]"
-            WHITESPACE@[179; 184) "\n    "
-            R_CURLY@[184; 185) "}"
-      WHITESPACE@[185; 191) "\n\n    "
-      MATCH_EXPR@[191; 290)
-        MATCH_KW@[191; 196) "match"
-        WHITESPACE@[196; 197) " "
-        TUPLE_EXPR@[197; 199)
-          L_PAREN@[197; 198) "("
-          R_PAREN@[198; 199) ")"
-        WHITESPACE@[199; 200) " "
-        MATCH_ARM_LIST@[200; 290)
-          L_CURLY@[200; 201) "{"
-          WHITESPACE@[201; 210) "\n        "
-          MATCH_ARM@[210; 250)
-            ATTR@[210; 222)
-              POUND@[210; 211) "#"
-              TOKEN_TREE@[211; 222)
-                L_BRACK@[211; 212) "["
-                IDENT@[212; 215) "cfg"
-                TOKEN_TREE@[215; 221)
-                  L_PAREN@[215; 216) "("
-                  IDENT@[216; 220) "test"
-                  R_PAREN@[220; 221) ")"
-                R_BRACK@[221; 222) "]"
-            WHITESPACE@[222; 231) "\n        "
-            ATTR@[231; 232)
-              POUND@[231; 232) "#"
-            ERROR@[232; 233)
-              EXCL@[232; 233) "!"
-            ARRAY_EXPR@[233; 250)
-              L_BRACK@[233; 234) "["
-              CALL_EXPR@[234; 249)
-                PATH_EXPR@[234; 237)
-                  PATH@[234; 237)
-                    PATH_SEGMENT@[234; 237)
-                      NAME_REF@[234; 237)
-                        IDENT@[234; 237) "doc"
-                ARG_LIST@[237; 249)
-                  L_PAREN@[237; 238) "("
-                  LITERAL@[238; 248)
-                    STRING@[238; 248) "\"Nor here\""
-                  R_PAREN@[248; 249) ")"
-              R_BRACK@[249; 250) "]"
-          WHITESPACE@[250; 259) "\n        "
-          MATCH_ARM@[259; 266)
-            PLACEHOLDER_PAT@[259; 260)
-              UNDERSCORE@[259; 260) "_"
-            WHITESPACE@[260; 261) " "
-            FAT_ARROW@[261; 263) "=>"
-            WHITESPACE@[263; 264) " "
-            TUPLE_EXPR@[264; 266)
-              L_PAREN@[264; 265) "("
-              R_PAREN@[265; 266) ")"
-          COMMA@[266; 267) ","
-          WHITESPACE@[267; 276) "\n        "
-          MATCH_ARM@[276; 283)
-            PLACEHOLDER_PAT@[276; 277)
-              UNDERSCORE@[276; 277) "_"
-            WHITESPACE@[277; 278) " "
-            FAT_ARROW@[278; 280) "=>"
-            WHITESPACE@[280; 281) " "
-            TUPLE_EXPR@[281; 283)
-              L_PAREN@[281; 282) "("
-              R_PAREN@[282; 283) ")"
-          COMMA@[283; 284) ","
-          WHITESPACE@[284; 289) "\n    "
-          R_CURLY@[289; 290) "}"
-      WHITESPACE@[290; 291) "\n"
-      R_CURLY@[291; 292) "}"
-  WHITESPACE@[292; 293) "\n"
-error 52: expected `[`
-error 52: expected pattern
-error 53: expected FAT_ARROW
-error 78: expected COMMA
-error 161: expected `[`
-error 161: expected pattern
-error 162: expected FAT_ARROW
-error 232: expected `[`
-error 232: expected pattern
-error 233: expected FAT_ARROW
-error 250: expected COMMA
diff --git a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.rs b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.rs
deleted file mode 100644 (file)
index 4635222..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-fn foo() {
-    match () {
-        _ => (),
-        _ => (),
-        #[cfg(test)]
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt
deleted file mode 100644 (file)
index e4f1f63..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-SOURCE_FILE@[0; 89)
-  FN_DEF@[0; 88)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 88)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      MATCH_EXPR@[15; 86)
-        MATCH_KW@[15; 20) "match"
-        WHITESPACE@[20; 21) " "
-        TUPLE_EXPR@[21; 23)
-          L_PAREN@[21; 22) "("
-          R_PAREN@[22; 23) ")"
-        WHITESPACE@[23; 24) " "
-        MATCH_ARM_LIST@[24; 86)
-          L_CURLY@[24; 25) "{"
-          WHITESPACE@[25; 34) "\n        "
-          MATCH_ARM@[34; 41)
-            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) "\n        "
-          MATCH_ARM@[51; 58)
-            PLACEHOLDER_PAT@[51; 52)
-              UNDERSCORE@[51; 52) "_"
-            WHITESPACE@[52; 53) " "
-            FAT_ARROW@[53; 55) "=>"
-            WHITESPACE@[55; 56) " "
-            TUPLE_EXPR@[56; 58)
-              L_PAREN@[56; 57) "("
-              R_PAREN@[57; 58) ")"
-          COMMA@[58; 59) ","
-          WHITESPACE@[59; 68) "\n        "
-          MATCH_ARM@[68; 80)
-            ATTR@[68; 80)
-              POUND@[68; 69) "#"
-              TOKEN_TREE@[69; 80)
-                L_BRACK@[69; 70) "["
-                IDENT@[70; 73) "cfg"
-                TOKEN_TREE@[73; 79)
-                  L_PAREN@[73; 74) "("
-                  IDENT@[74; 78) "test"
-                  R_PAREN@[78; 79) ")"
-                R_BRACK@[79; 80) "]"
-          WHITESPACE@[80; 85) "\n    "
-          R_CURLY@[85; 86) "}"
-      WHITESPACE@[86; 87) "\n"
-      R_CURLY@[87; 88) "}"
-  WHITESPACE@[88; 89) "\n"
-error 80: expected pattern
-error 80: expected FAT_ARROW
-error 80: expected expression
diff --git a/crates/ra_syntax/tests/data/parser/fuzz-failures/0000.rs b/crates/ra_syntax/tests/data/parser/fuzz-failures/0000.rs
deleted file mode 100644 (file)
index e0437d1..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-//! 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::<syntax_node::GreenBuilder>(
-            text, &tokens, grammar::root,
-        );
-        File::new(green, errors)
-    }
-    pub fn reparse(&self, edit: &AtomTextEdit) -> File {
-        self.incremental_reparse(edit).unwrap_or_else(|| self.full_reparse(edit))
-    }
-    pub fn incremental_reparse(&self, edit: &AtomTextEdit) -> Option<File> {
-        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::<syntax_node::GreenBuilder>(
-            &te2t, &tokens, reparser,
-        );
-        let green_root = node.replace_with(green);
-        let errors = merge_errors(self.errors(), new_errors, node, edit);
-        Some(File::new(green_root, errors))
-    }
-    fn full_reparse(&self, edit: &AtomTextEdit) -> File {
-        let text = replace_range(self.syntax().text().to_string(), edit.delete, &edit.insert);
-        File::parse(&text)
-    }
-    pub fn ast(&self) -> ast::Root {
-        ast::Root::cast(self.syntax()).unwrap()
-    }
-    pub fn syntax(&self) -> SyntaxNodeRef {
-        self.root.brroowed()
-    }
-    mp_tree(root),
-                    );
-                    assert!(
-                        node.next_sibling().is_none() && pair.prev_sibling().is_none(),
-                        "\nfloating curlys at {:?}\nfile:\n{}\nerror:\n{}\n",
-                        node,
-                        root.text(),
-                        node.text(),
-                    );
-                }
-            }
-            _ => (),
-        }
-    }
-}
-
-#[derive(Debug, Clone)]
-pub struct AtomTextEdit {
-    pub delete: TextRange,
-    pub insert: String,
-}
-
-impl AtomTextEdit {
-    pub fn replace(range: TextRange, replace_with: String) -> AtomTextEdit {
-        AtomTextEdit { delete: range, insert: replace_with }
-    }
-
-    pub fn delete(range: TextRange) -> AtomTextEdit {
-        AtomTextEdit::replace(range, String::new())
-    }
-
-    pub fn insert(offset: TextUnit, text: String) -> AtomTextEdit {
-        AtomTextEdit::replace(TextRange::offset_len(offset, 0.into()), text)
-    }
-}
-
-fn find_reparsable_node(node: SyntaxNodeRef, range: TextRange) -> Option<(SyntaxNodeRef, fn(&mut Parser))> {
-    let node = algo::find_covering_node(node, range);
-    return algo::ancestors(node)
-        .filter_map(|node| reparser(node).map(|r| (node, r)))
-        .next();
-
-    fn reparser(node: SyntaxNodeRef) -> Option<fn(&mut Parser)> {
-        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 AtomTextEdit {
-    pub fn replace(range: TextRange, replace_with: String) -> AtomTextEdit {
-        AtomTextEdit { delete: range, insert: replace_with }
-    }
-
-    pub fn delete(range: TextRange) -> AtomTextEdit {
-        AtomTextEdit::replace(range, String::new())
-    }
-
-    pub fn insert(offset: TextUnit, text: String) -> AtomTextEdit {
-        AtomTextEdit::replace(TextRange::offset_len(offset, 0.into()), text)
-    }
-}
-
-fn find_reparsable_node(node: SyntaxNodeRef, range: TextRange) -> Option<(SyntaxNodeRef, fn(&mut Parser))> {
-    let node = algo::find_covering_node(node, range);
-    return algo::ancestors(node)
-        .filter_map(|node| reparser(node).map(|r| (node, r)))
-        .next();
-
-    fn reparser(node: SyntaxNodeRef) -> Option<fn(&mut Parser)> {
-        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<SyntaxError>,
-    new_errors: Vec<SyntaxError>,
-    old_node: SyntaxNodeRef,
-    edit: &AtomTextEdit,
-) -> Vec<SyntaxError> {
-    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
deleted file mode 100644 (file)
index 099cc5f..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-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<TextRange> {
-    let syntax = file.syntax();
-    extend(syntax.borrowed(), range)
-}
-
-pub(crate) fn extend(root: SyntaxNodeRef, range: TextRange) -> Option<TextRange> {
-    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<TextRange> {
-    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/fuzz-failures/0002.rs b/crates/ra_syntax/tests/data/parser/fuzz-failures/0002.rs
deleted file mode 100644 (file)
index f35dc72..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!('\
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/fuzz-failures/0003.rs b/crates/ra_syntax/tests/data/parser/fuzz-failures/0003.rs
deleted file mode 100644 (file)
index 0f59c47..0000000
+++ /dev/null
@@ -1 +0,0 @@
-if'\xɿ
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/fuzz-failures/0004.rs b/crates/ra_syntax/tests/data/parser/fuzz-failures/0004.rs
deleted file mode 100644 (file)
index 003290f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-b"\xʿ
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.rs b/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.rs
deleted file mode 100644 (file)
index a948514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type T = [() 92];
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt b/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt
deleted file mode 100644 (file)
index 3f0f1b4..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-SOURCE_FILE@[0; 18)
-  TYPE_ALIAS_DEF@[0; 12)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    SLICE_TYPE@[9; 12)
-      L_BRACK@[9; 10) "["
-      TUPLE_TYPE@[10; 12)
-        L_PAREN@[10; 11) "("
-        R_PAREN@[11; 12) ")"
-  WHITESPACE@[12; 13) " "
-  ERROR@[13; 15)
-    INT_NUMBER@[13; 15) "92"
-  ERROR@[15; 16)
-    R_BRACK@[15; 16) "]"
-  ERROR@[16; 17)
-    SEMI@[16; 17) ";"
-  WHITESPACE@[17; 18) "\n"
-error 12: expected `;` or `]`
-error 12: expected SEMI
-error 13: expected an item
-error 15: expected an item
-error 16: expected an item
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.rs b/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.rs
deleted file mode 100644 (file)
index a2164c5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
-    'loop: impl
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt b/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt
deleted file mode 100644 (file)
index 7abc49d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE@[0; 30)
-  FN_DEF@[0; 29)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 29)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      EXPR_STMT@[16; 22)
-        ERROR@[16; 22)
-          LABEL@[16; 22)
-            LIFETIME@[16; 21) "\'loop"
-            COLON@[21; 22) ":"
-      WHITESPACE@[22; 23) " "
-      IMPL_BLOCK@[23; 27)
-        IMPL_KW@[23; 27) "impl"
-      WHITESPACE@[27; 28) "\n"
-      R_CURLY@[28; 29) "}"
-  WHITESPACE@[29; 30) "\n"
-error 22: expected a loop
-error 22: expected SEMI
-error 27: expected type
-error 27: expected `{`
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.rs b/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.rs
deleted file mode 100644 (file)
index fae7051..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type T = *();
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt b/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt
deleted file mode 100644 (file)
index b97e339..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SOURCE_FILE@[0; 14)
-  TYPE_ALIAS_DEF@[0; 13)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    POINTER_TYPE@[9; 12)
-      STAR@[9; 10) "*"
-      TUPLE_TYPE@[10; 12)
-        L_PAREN@[10; 11) "("
-        R_PAREN@[11; 12) ")"
-    SEMI@[12; 13) ";"
-  WHITESPACE@[13; 14) "\n"
-error 10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.rs b/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.rs
deleted file mode 100644 (file)
index b8c7b65..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-impl Type {}
-impl Trait1 for T {}
-impl impl NotType {}
-impl Trait2 for impl NotType {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt b/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt
deleted file mode 100644 (file)
index 43321b1..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-SOURCE_FILE@[0; 87)
-  IMPL_BLOCK@[0; 12)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 9)
-      PATH@[5; 9)
-        PATH_SEGMENT@[5; 9)
-          NAME_REF@[5; 9)
-            IDENT@[5; 9) "Type"
-    WHITESPACE@[9; 10) " "
-    ITEM_LIST@[10; 12)
-      L_CURLY@[10; 11) "{"
-      R_CURLY@[11; 12) "}"
-  WHITESPACE@[12; 13) "\n"
-  IMPL_BLOCK@[13; 33)
-    IMPL_KW@[13; 17) "impl"
-    WHITESPACE@[17; 18) " "
-    PATH_TYPE@[18; 24)
-      PATH@[18; 24)
-        PATH_SEGMENT@[18; 24)
-          NAME_REF@[18; 24)
-            IDENT@[18; 24) "Trait1"
-    WHITESPACE@[24; 25) " "
-    FOR_KW@[25; 28) "for"
-    WHITESPACE@[28; 29) " "
-    PATH_TYPE@[29; 30)
-      PATH@[29; 30)
-        PATH_SEGMENT@[29; 30)
-          NAME_REF@[29; 30)
-            IDENT@[29; 30) "T"
-    WHITESPACE@[30; 31) " "
-    ITEM_LIST@[31; 33)
-      L_CURLY@[31; 32) "{"
-      R_CURLY@[32; 33) "}"
-  WHITESPACE@[33; 34) "\n"
-  IMPL_BLOCK@[34; 38)
-    IMPL_KW@[34; 38) "impl"
-  WHITESPACE@[38; 39) " "
-  IMPL_BLOCK@[39; 54)
-    IMPL_KW@[39; 43) "impl"
-    WHITESPACE@[43; 44) " "
-    PATH_TYPE@[44; 51)
-      PATH@[44; 51)
-        PATH_SEGMENT@[44; 51)
-          NAME_REF@[44; 51)
-            IDENT@[44; 51) "NotType"
-    WHITESPACE@[51; 52) " "
-    ITEM_LIST@[52; 54)
-      L_CURLY@[52; 53) "{"
-      R_CURLY@[53; 54) "}"
-  WHITESPACE@[54; 55) "\n"
-  IMPL_BLOCK@[55; 70)
-    IMPL_KW@[55; 59) "impl"
-    WHITESPACE@[59; 60) " "
-    PATH_TYPE@[60; 66)
-      PATH@[60; 66)
-        PATH_SEGMENT@[60; 66)
-          NAME_REF@[60; 66)
-            IDENT@[60; 66) "Trait2"
-    WHITESPACE@[66; 67) " "
-    FOR_KW@[67; 70) "for"
-  WHITESPACE@[70; 71) " "
-  IMPL_BLOCK@[71; 86)
-    IMPL_KW@[71; 75) "impl"
-    WHITESPACE@[75; 76) " "
-    PATH_TYPE@[76; 83)
-      PATH@[76; 83)
-        PATH_SEGMENT@[76; 83)
-          NAME_REF@[76; 83)
-            IDENT@[76; 83) "NotType"
-    WHITESPACE@[83; 84) " "
-    ITEM_LIST@[84; 86)
-      L_CURLY@[84; 85) "{"
-      R_CURLY@[85; 86) "}"
-  WHITESPACE@[86; 87) "\n"
-error 38: expected trait or type
-error 38: expected `{`
-error 70: expected trait or type
-error 70: expected `{`
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs b/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.rs
deleted file mode 100644 (file)
index f014914..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type F = unsafe ();
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt b/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
deleted file mode 100644 (file)
index 451f29d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-SOURCE_FILE@[0; 20)
-  TYPE_ALIAS_DEF@[0; 15)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "F"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    UNSAFE_KW@[9; 15) "unsafe"
-  WHITESPACE@[15; 16) " "
-  ERROR@[16; 17)
-    L_PAREN@[16; 17) "("
-  ERROR@[17; 18)
-    R_PAREN@[17; 18) ")"
-  ERROR@[18; 19)
-    SEMI@[18; 19) ";"
-  WHITESPACE@[19; 20) "\n"
-error 15: expected `fn`
-error 15: expected SEMI
-error 16: expected an item
-error 17: expected an item
-error 18: expected an item
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.rs b/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.rs
deleted file mode 100644 (file)
index 26141e9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo(){} unsafe { } fn bar(){}
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt b/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt
deleted file mode 100644 (file)
index a1871ec..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE@[0; 33)
-  FN_DEF@[0; 10)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    BLOCK@[8; 10)
-      L_CURLY@[8; 9) "{"
-      R_CURLY@[9; 10) "}"
-  WHITESPACE@[10; 11) " "
-  ERROR@[11; 17)
-    UNSAFE_KW@[11; 17) "unsafe"
-  WHITESPACE@[17; 18) " "
-  ERROR@[18; 21)
-    L_CURLY@[18; 19) "{"
-    WHITESPACE@[19; 20) " "
-    R_CURLY@[20; 21) "}"
-  WHITESPACE@[21; 22) " "
-  FN_DEF@[22; 32)
-    FN_KW@[22; 24) "fn"
-    WHITESPACE@[24; 25) " "
-    NAME@[25; 28)
-      IDENT@[25; 28) "bar"
-    PARAM_LIST@[28; 30)
-      L_PAREN@[28; 29) "("
-      R_PAREN@[29; 30) ")"
-    BLOCK@[30; 32)
-      L_CURLY@[30; 31) "{"
-      R_CURLY@[31; 32) "}"
-  WHITESPACE@[32; 33) "\n"
-error 11: expected an item
-error 18: expected an item
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.rs b/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.rs
deleted file mode 100644 (file)
index 9a42324..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo() { let _ = async {} }
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt b/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt
deleted file mode 100644 (file)
index f70adc2..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE@[0; 30)
-  FN_DEF@[0; 29)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 29)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) " "
-      LET_STMT@[11; 27)
-        LET_KW@[11; 14) "let"
-        WHITESPACE@[14; 15) " "
-        PLACEHOLDER_PAT@[15; 16)
-          UNDERSCORE@[15; 16) "_"
-        WHITESPACE@[16; 17) " "
-        EQ@[17; 18) "="
-        WHITESPACE@[18; 19) " "
-        BLOCK_EXPR@[19; 27)
-          ASYNC_KW@[19; 24) "async"
-          WHITESPACE@[24; 25) " "
-          BLOCK@[25; 27)
-            L_CURLY@[25; 26) "{"
-            R_CURLY@[26; 27) "}"
-      WHITESPACE@[27; 28) " "
-      R_CURLY@[28; 29) "}"
-  WHITESPACE@[29; 30) "\n"
-error 27: expected SEMI
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.rs b/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.rs
deleted file mode 100644 (file)
index 2976f68..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo() { pub 92; }
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt b/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt
deleted file mode 100644 (file)
index 1dbfca6..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-SOURCE_FILE@[0; 21)
-  FN_DEF@[0; 20)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 20)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) " "
-      ERROR@[11; 14)
-        VISIBILITY@[11; 14)
-          PUB_KW@[11; 14) "pub"
-      WHITESPACE@[14; 15) " "
-      EXPR_STMT@[15; 18)
-        LITERAL@[15; 17)
-          INT_NUMBER@[15; 17) "92"
-        SEMI@[17; 18) ";"
-      WHITESPACE@[18; 19) " "
-      R_CURLY@[19; 20) "}"
-  WHITESPACE@[20; 21) "\n"
-error 14: expected an item
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.rs b/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.rs
deleted file mode 100644 (file)
index d725a07..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-   #[A] 1 + 2;
-   #[B] if true {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt b/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
deleted file mode 100644 (file)
index 338776a..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-SOURCE_FILE@[0; 48)
-  FN_DEF@[0; 47)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 47)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 14) "\n   "
-      EXPR_STMT@[14; 25)
-        ATTR@[14; 18)
-          POUND@[14; 15) "#"
-          TOKEN_TREE@[15; 18)
-            L_BRACK@[15; 16) "["
-            IDENT@[16; 17) "A"
-            R_BRACK@[17; 18) "]"
-        WHITESPACE@[18; 19) " "
-        BIN_EXPR@[19; 24)
-          LITERAL@[19; 20)
-            INT_NUMBER@[19; 20) "1"
-          WHITESPACE@[20; 21) " "
-          PLUS@[21; 22) "+"
-          WHITESPACE@[22; 23) " "
-          LITERAL@[23; 24)
-            INT_NUMBER@[23; 24) "2"
-        SEMI@[24; 25) ";"
-      WHITESPACE@[25; 29) "\n   "
-      EXPR_STMT@[29; 45)
-        ATTR@[29; 33)
-          POUND@[29; 30) "#"
-          TOKEN_TREE@[30; 33)
-            L_BRACK@[30; 31) "["
-            IDENT@[31; 32) "B"
-            R_BRACK@[32; 33) "]"
-        WHITESPACE@[33; 34) " "
-        IF_EXPR@[34; 44)
-          IF_KW@[34; 36) "if"
-          WHITESPACE@[36; 37) " "
-          CONDITION@[37; 41)
-            LITERAL@[37; 41)
-              TRUE_KW@[37; 41) "true"
-          WHITESPACE@[41; 42) " "
-          BLOCK@[42; 44)
-            L_CURLY@[42; 43) "{"
-            R_CURLY@[43; 44) "}"
-        SEMI@[44; 45) ";"
-      WHITESPACE@[45; 46) "\n"
-      R_CURLY@[46; 47) "}"
-  WHITESPACE@[47; 48) "\n"
-error 24: attributes are not allowed on BIN_EXPR
-error 44: attributes are not allowed on IF_EXPR
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0010_bad_tuple_index_expr.rs b/crates/ra_syntax/tests/data/parser/inline/err/0010_bad_tuple_index_expr.rs
deleted file mode 100644 (file)
index 30cc491..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    x.0.;
-    x.1i32;
-    x.0x01;
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0010_bad_tuple_index_expr.txt b/crates/ra_syntax/tests/data/parser/inline/err/0010_bad_tuple_index_expr.txt
deleted file mode 100644 (file)
index a21b29c..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-SOURCE_FILE@[0; 47)
-  FN_DEF@[0; 46)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 46)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 20)
-        FIELD_EXPR@[15; 19)
-          PATH_EXPR@[15; 16)
-            PATH@[15; 16)
-              PATH_SEGMENT@[15; 16)
-                NAME_REF@[15; 16)
-                  IDENT@[15; 16) "x"
-          DOT@[16; 17) "."
-          FLOAT_NUMBER@[17; 19) "0."
-        SEMI@[19; 20) ";"
-      WHITESPACE@[20; 25) "\n    "
-      EXPR_STMT@[25; 32)
-        FIELD_EXPR@[25; 31)
-          PATH_EXPR@[25; 26)
-            PATH@[25; 26)
-              PATH_SEGMENT@[25; 26)
-                NAME_REF@[25; 26)
-                  IDENT@[25; 26) "x"
-          DOT@[26; 27) "."
-          INT_NUMBER@[27; 31) "1i32"
-        SEMI@[31; 32) ";"
-      WHITESPACE@[32; 37) "\n    "
-      EXPR_STMT@[37; 44)
-        FIELD_EXPR@[37; 43)
-          PATH_EXPR@[37; 38)
-            PATH@[37; 38)
-              PATH_SEGMENT@[37; 38)
-                NAME_REF@[37; 38)
-                  IDENT@[37; 38) "x"
-          DOT@[38; 39) "."
-          INT_NUMBER@[39; 43) "0x01"
-        SEMI@[43; 44) ";"
-      WHITESPACE@[44; 45) "\n"
-      R_CURLY@[45; 46) "}"
-  WHITESPACE@[46; 47) "\n"
-error [17; 19): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
-error [27; 31): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
-error [39; 43): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0010_wrong_order_fns.rs b/crates/ra_syntax/tests/data/parser/inline/err/0010_wrong_order_fns.rs
deleted file mode 100644 (file)
index 16edee9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-async unsafe fn foo() {}
-unsafe const fn bar() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0010_wrong_order_fns.txt b/crates/ra_syntax/tests/data/parser/inline/err/0010_wrong_order_fns.txt
deleted file mode 100644 (file)
index b1ef210..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE@[0; 50)
-  ERROR@[0; 5)
-    ASYNC_KW@[0; 5) "async"
-  WHITESPACE@[5; 6) " "
-  FN_DEF@[6; 24)
-    UNSAFE_KW@[6; 12) "unsafe"
-    WHITESPACE@[12; 13) " "
-    FN_KW@[13; 15) "fn"
-    WHITESPACE@[15; 16) " "
-    NAME@[16; 19)
-      IDENT@[16; 19) "foo"
-    PARAM_LIST@[19; 21)
-      L_PAREN@[19; 20) "("
-      R_PAREN@[20; 21) ")"
-    WHITESPACE@[21; 22) " "
-    BLOCK@[22; 24)
-      L_CURLY@[22; 23) "{"
-      R_CURLY@[23; 24) "}"
-  WHITESPACE@[24; 25) "\n"
-  ERROR@[25; 31)
-    UNSAFE_KW@[25; 31) "unsafe"
-  WHITESPACE@[31; 32) " "
-  FN_DEF@[32; 49)
-    CONST_KW@[32; 37) "const"
-    WHITESPACE@[37; 38) " "
-    FN_KW@[38; 40) "fn"
-    WHITESPACE@[40; 41) " "
-    NAME@[41; 44)
-      IDENT@[41; 44) "bar"
-    PARAM_LIST@[44; 46)
-      L_PAREN@[44; 45) "("
-      R_PAREN@[45; 46) ")"
-    WHITESPACE@[46; 47) " "
-    BLOCK@[47; 49)
-      L_CURLY@[47; 48) "{"
-      R_CURLY@[48; 49) "}"
-  WHITESPACE@[49; 50) "\n"
-error 5: expected existential, fn, trait or impl
-error 31: expected existential, fn, trait or impl
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0014_default_fn_type.rs b/crates/ra_syntax/tests/data/parser/inline/err/0014_default_fn_type.rs
deleted file mode 100644 (file)
index 15ba8f4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-trait T {
-    default type T = Bar;
-    default fn foo() {}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0014_default_fn_type.txt b/crates/ra_syntax/tests/data/parser/inline/err/0014_default_fn_type.txt
deleted file mode 100644 (file)
index 7da4e24..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-SOURCE_FILE@[0; 62)
-  TRAIT_DEF@[0; 61)
-    TRAIT_KW@[0; 5) "trait"
-    WHITESPACE@[5; 6) " "
-    NAME@[6; 7)
-      IDENT@[6; 7) "T"
-    WHITESPACE@[7; 8) " "
-    ITEM_LIST@[8; 61)
-      L_CURLY@[8; 9) "{"
-      WHITESPACE@[9; 14) "\n    "
-      MACRO_CALL@[14; 21)
-        PATH@[14; 21)
-          PATH_SEGMENT@[14; 21)
-            NAME_REF@[14; 21)
-              IDENT@[14; 21) "default"
-      WHITESPACE@[21; 22) " "
-      TYPE_ALIAS_DEF@[22; 35)
-        TYPE_KW@[22; 26) "type"
-        WHITESPACE@[26; 27) " "
-        NAME@[27; 28)
-          IDENT@[27; 28) "T"
-        WHITESPACE@[28; 29) " "
-        EQ@[29; 30) "="
-        WHITESPACE@[30; 31) " "
-        PATH_TYPE@[31; 34)
-          PATH@[31; 34)
-            PATH_SEGMENT@[31; 34)
-              NAME_REF@[31; 34)
-                IDENT@[31; 34) "Bar"
-        SEMI@[34; 35) ";"
-      WHITESPACE@[35; 40) "\n    "
-      MACRO_CALL@[40; 47)
-        PATH@[40; 47)
-          PATH_SEGMENT@[40; 47)
-            NAME_REF@[40; 47)
-              IDENT@[40; 47) "default"
-      WHITESPACE@[47; 48) " "
-      FN_DEF@[48; 59)
-        FN_KW@[48; 50) "fn"
-        WHITESPACE@[50; 51) " "
-        NAME@[51; 54)
-          IDENT@[51; 54) "foo"
-        PARAM_LIST@[54; 56)
-          L_PAREN@[54; 55) "("
-          R_PAREN@[55; 56) ")"
-        WHITESPACE@[56; 57) " "
-        BLOCK@[57; 59)
-          L_CURLY@[57; 58) "{"
-          R_CURLY@[58; 59) "}"
-      WHITESPACE@[59; 60) "\n"
-      R_CURLY@[60; 61) "}"
-  WHITESPACE@[61; 62) "\n"
-error 21: expected EXCL
-error 21: expected `{`, `[`, `(`
-error 21: expected SEMI
-error 47: expected EXCL
-error 47: expected `{`, `[`, `(`
-error 47: expected SEMI
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.rs
deleted file mode 100644 (file)
index a5ec323..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-impl F {
-    type A: Clone;
-    const B: i32;
-    fn foo() {}
-    fn bar(&self);
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt
deleted file mode 100644 (file)
index 18f02bb..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-SOURCE_FILE@[0; 83)
-  IMPL_BLOCK@[0; 82)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 6)
-      PATH@[5; 6)
-        PATH_SEGMENT@[5; 6)
-          NAME_REF@[5; 6)
-            IDENT@[5; 6) "F"
-    WHITESPACE@[6; 7) " "
-    ITEM_LIST@[7; 82)
-      L_CURLY@[7; 8) "{"
-      WHITESPACE@[8; 13) "\n    "
-      TYPE_ALIAS_DEF@[13; 27)
-        TYPE_KW@[13; 17) "type"
-        WHITESPACE@[17; 18) " "
-        NAME@[18; 19)
-          IDENT@[18; 19) "A"
-        COLON@[19; 20) ":"
-        WHITESPACE@[20; 21) " "
-        TYPE_BOUND_LIST@[21; 26)
-          TYPE_BOUND@[21; 26)
-            PATH_TYPE@[21; 26)
-              PATH@[21; 26)
-                PATH_SEGMENT@[21; 26)
-                  NAME_REF@[21; 26)
-                    IDENT@[21; 26) "Clone"
-        SEMI@[26; 27) ";"
-      WHITESPACE@[27; 32) "\n    "
-      CONST_DEF@[32; 45)
-        CONST_KW@[32; 37) "const"
-        WHITESPACE@[37; 38) " "
-        NAME@[38; 39)
-          IDENT@[38; 39) "B"
-        COLON@[39; 40) ":"
-        WHITESPACE@[40; 41) " "
-        PATH_TYPE@[41; 44)
-          PATH@[41; 44)
-            PATH_SEGMENT@[41; 44)
-              NAME_REF@[41; 44)
-                IDENT@[41; 44) "i32"
-        SEMI@[44; 45) ";"
-      WHITESPACE@[45; 50) "\n    "
-      FN_DEF@[50; 61)
-        FN_KW@[50; 52) "fn"
-        WHITESPACE@[52; 53) " "
-        NAME@[53; 56)
-          IDENT@[53; 56) "foo"
-        PARAM_LIST@[56; 58)
-          L_PAREN@[56; 57) "("
-          R_PAREN@[57; 58) ")"
-        WHITESPACE@[58; 59) " "
-        BLOCK@[59; 61)
-          L_CURLY@[59; 60) "{"
-          R_CURLY@[60; 61) "}"
-      WHITESPACE@[61; 66) "\n    "
-      FN_DEF@[66; 80)
-        FN_KW@[66; 68) "fn"
-        WHITESPACE@[68; 69) " "
-        NAME@[69; 72)
-          IDENT@[69; 72) "bar"
-        PARAM_LIST@[72; 79)
-          L_PAREN@[72; 73) "("
-          SELF_PARAM@[73; 78)
-            AMP@[73; 74) "&"
-            SELF_KW@[74; 78) "self"
-          R_PAREN@[78; 79) ")"
-        SEMI@[79; 80) ";"
-      WHITESPACE@[80; 81) "\n"
-      R_CURLY@[81; 82) "}"
-  WHITESPACE@[82; 83) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.rs
deleted file mode 100644 (file)
index 06c387c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-use {crate::path::from::root, or::path::from::crate_name}; // Rust 2018 (with a crate named `or`)
-use {path::from::root}; // Rust 2015
-use ::{some::arbritrary::path}; // Rust 2015
-use ::{{{crate::export}}}; // Nonsensical but perfectly legal nestnig
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt
deleted file mode 100644 (file)
index 1b318df..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-SOURCE_FILE@[0; 250)
-  USE_ITEM@[0; 58)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 57)
-      USE_TREE_LIST@[4; 57)
-        L_CURLY@[4; 5) "{"
-        USE_TREE@[5; 28)
-          PATH@[5; 28)
-            PATH@[5; 22)
-              PATH@[5; 16)
-                PATH@[5; 10)
-                  PATH_SEGMENT@[5; 10)
-                    CRATE_KW@[5; 10) "crate"
-                COLONCOLON@[10; 12) "::"
-                PATH_SEGMENT@[12; 16)
-                  NAME_REF@[12; 16)
-                    IDENT@[12; 16) "path"
-              COLONCOLON@[16; 18) "::"
-              PATH_SEGMENT@[18; 22)
-                NAME_REF@[18; 22)
-                  IDENT@[18; 22) "from"
-            COLONCOLON@[22; 24) "::"
-            PATH_SEGMENT@[24; 28)
-              NAME_REF@[24; 28)
-                IDENT@[24; 28) "root"
-        COMMA@[28; 29) ","
-        WHITESPACE@[29; 30) " "
-        USE_TREE@[30; 56)
-          PATH@[30; 56)
-            PATH@[30; 44)
-              PATH@[30; 38)
-                PATH@[30; 32)
-                  PATH_SEGMENT@[30; 32)
-                    NAME_REF@[30; 32)
-                      IDENT@[30; 32) "or"
-                COLONCOLON@[32; 34) "::"
-                PATH_SEGMENT@[34; 38)
-                  NAME_REF@[34; 38)
-                    IDENT@[34; 38) "path"
-              COLONCOLON@[38; 40) "::"
-              PATH_SEGMENT@[40; 44)
-                NAME_REF@[40; 44)
-                  IDENT@[40; 44) "from"
-            COLONCOLON@[44; 46) "::"
-            PATH_SEGMENT@[46; 56)
-              NAME_REF@[46; 56)
-                IDENT@[46; 56) "crate_name"
-        R_CURLY@[56; 57) "}"
-    SEMI@[57; 58) ";"
-  WHITESPACE@[58; 59) " "
-  COMMENT@[59; 97) "// Rust 2018 (with a  ..."
-  WHITESPACE@[97; 98) "\n"
-  USE_ITEM@[98; 121)
-    USE_KW@[98; 101) "use"
-    WHITESPACE@[101; 102) " "
-    USE_TREE@[102; 120)
-      USE_TREE_LIST@[102; 120)
-        L_CURLY@[102; 103) "{"
-        USE_TREE@[103; 119)
-          PATH@[103; 119)
-            PATH@[103; 113)
-              PATH@[103; 107)
-                PATH_SEGMENT@[103; 107)
-                  NAME_REF@[103; 107)
-                    IDENT@[103; 107) "path"
-              COLONCOLON@[107; 109) "::"
-              PATH_SEGMENT@[109; 113)
-                NAME_REF@[109; 113)
-                  IDENT@[109; 113) "from"
-            COLONCOLON@[113; 115) "::"
-            PATH_SEGMENT@[115; 119)
-              NAME_REF@[115; 119)
-                IDENT@[115; 119) "root"
-        R_CURLY@[119; 120) "}"
-    SEMI@[120; 121) ";"
-  WHITESPACE@[121; 122) " "
-  COMMENT@[122; 134) "// Rust 2015"
-  WHITESPACE@[134; 135) "\n"
-  USE_ITEM@[135; 166)
-    USE_KW@[135; 138) "use"
-    WHITESPACE@[138; 139) " "
-    USE_TREE@[139; 165)
-      COLONCOLON@[139; 141) "::"
-      USE_TREE_LIST@[141; 165)
-        L_CURLY@[141; 142) "{"
-        USE_TREE@[142; 164)
-          PATH@[142; 164)
-            PATH@[142; 158)
-              PATH@[142; 146)
-                PATH_SEGMENT@[142; 146)
-                  NAME_REF@[142; 146)
-                    IDENT@[142; 146) "some"
-              COLONCOLON@[146; 148) "::"
-              PATH_SEGMENT@[148; 158)
-                NAME_REF@[148; 158)
-                  IDENT@[148; 158) "arbritrary"
-            COLONCOLON@[158; 160) "::"
-            PATH_SEGMENT@[160; 164)
-              NAME_REF@[160; 164)
-                IDENT@[160; 164) "path"
-        R_CURLY@[164; 165) "}"
-    SEMI@[165; 166) ";"
-  WHITESPACE@[166; 167) " "
-  COMMENT@[167; 179) "// Rust 2015"
-  WHITESPACE@[179; 180) "\n"
-  USE_ITEM@[180; 206)
-    USE_KW@[180; 183) "use"
-    WHITESPACE@[183; 184) " "
-    USE_TREE@[184; 205)
-      COLONCOLON@[184; 186) "::"
-      USE_TREE_LIST@[186; 205)
-        L_CURLY@[186; 187) "{"
-        USE_TREE@[187; 204)
-          USE_TREE_LIST@[187; 204)
-            L_CURLY@[187; 188) "{"
-            USE_TREE@[188; 203)
-              USE_TREE_LIST@[188; 203)
-                L_CURLY@[188; 189) "{"
-                USE_TREE@[189; 202)
-                  PATH@[189; 202)
-                    PATH@[189; 194)
-                      PATH_SEGMENT@[189; 194)
-                        CRATE_KW@[189; 194) "crate"
-                    COLONCOLON@[194; 196) "::"
-                    PATH_SEGMENT@[196; 202)
-                      NAME_REF@[196; 202)
-                        IDENT@[196; 202) "export"
-                R_CURLY@[202; 203) "}"
-            R_CURLY@[203; 204) "}"
-        R_CURLY@[204; 205) "}"
-    SEMI@[205; 206) ";"
-  WHITESPACE@[206; 207) " "
-  COMMENT@[207; 249) "// Nonsensical but pe ..."
-  WHITESPACE@[249; 250) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.rs
deleted file mode 100644 (file)
index b448c61..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn test<F>()
-where
-   for<'a> F: Fn(&'a str)
-{ }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt
deleted file mode 100644 (file)
index 8a21ee9..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-SOURCE_FILE@[0; 49)
-  FN_DEF@[0; 48)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "test"
-    TYPE_PARAM_LIST@[7; 10)
-      L_ANGLE@[7; 8) "<"
-      TYPE_PARAM@[8; 9)
-        NAME@[8; 9)
-          IDENT@[8; 9) "F"
-      R_ANGLE@[9; 10) ">"
-    PARAM_LIST@[10; 12)
-      L_PAREN@[10; 11) "("
-      R_PAREN@[11; 12) ")"
-    WHITESPACE@[12; 13) "\n"
-    WHERE_CLAUSE@[13; 44)
-      WHERE_KW@[13; 18) "where"
-      WHITESPACE@[18; 22) "\n   "
-      WHERE_PRED@[22; 44)
-        FOR_TYPE@[22; 31)
-          FOR_KW@[22; 25) "for"
-          TYPE_PARAM_LIST@[25; 29)
-            L_ANGLE@[25; 26) "<"
-            LIFETIME_PARAM@[26; 28)
-              LIFETIME@[26; 28) "\'a"
-            R_ANGLE@[28; 29) ">"
-          WHITESPACE@[29; 30) " "
-          PATH_TYPE@[30; 31)
-            PATH@[30; 31)
-              PATH_SEGMENT@[30; 31)
-                NAME_REF@[30; 31)
-                  IDENT@[30; 31) "F"
-        COLON@[31; 32) ":"
-        WHITESPACE@[32; 33) " "
-        TYPE_BOUND_LIST@[33; 44)
-          TYPE_BOUND@[33; 44)
-            PATH_TYPE@[33; 44)
-              PATH@[33; 44)
-                PATH_SEGMENT@[33; 44)
-                  NAME_REF@[33; 35)
-                    IDENT@[33; 35) "Fn"
-                  PARAM_LIST@[35; 44)
-                    L_PAREN@[35; 36) "("
-                    PARAM@[36; 43)
-                      REFERENCE_TYPE@[36; 43)
-                        AMP@[36; 37) "&"
-                        LIFETIME@[37; 39) "\'a"
-                        WHITESPACE@[39; 40) " "
-                        PATH_TYPE@[40; 43)
-                          PATH@[40; 43)
-                            PATH_SEGMENT@[40; 43)
-                              NAME_REF@[40; 43)
-                                IDENT@[40; 43) "str"
-                    R_PAREN@[43; 44) ")"
-    WHITESPACE@[44; 45) "\n"
-    BLOCK@[45; 48)
-      L_CURLY@[45; 46) "{"
-      WHITESPACE@[46; 47) " "
-      R_CURLY@[47; 48) "}"
-  WHITESPACE@[48; 49) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.rs
deleted file mode 100644 (file)
index d8c23c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type F = Box<Fn(a: i32, &b: &i32, &mut c: &i32, ())>;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt
deleted file mode 100644 (file)
index 8cfba84..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-SOURCE_FILE@[0; 54)
-  TYPE_ALIAS_DEF@[0; 53)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "F"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    PATH_TYPE@[9; 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) "mut"
-                          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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.rs
deleted file mode 100644 (file)
index 9df40ed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo<T: Clone + Copy>(){}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt
deleted file mode 100644 (file)
index c1a70d5..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-SOURCE_FILE@[0; 28)
-  FN_DEF@[0; 27)
-    FN_KW@[0; 2) "fn"
-    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) " "
-        TYPE_BOUND_LIST@[10; 22)
-          TYPE_BOUND@[10; 15)
-            PATH_TYPE@[10; 15)
-              PATH@[10; 15)
-                PATH_SEGMENT@[10; 15)
-                  NAME_REF@[10; 15)
-                    IDENT@[10; 15) "Clone"
-          WHITESPACE@[15; 16) " "
-          PLUS@[16; 17) "+"
-          WHITESPACE@[17; 18) " "
-          TYPE_BOUND@[18; 22)
-            PATH_TYPE@[18; 22)
-              PATH@[18; 22)
-                PATH_SEGMENT@[18; 22)
-                  NAME_REF@[18; 22)
-                    IDENT@[18; 22) "Copy"
-      R_ANGLE@[22; 23) ">"
-    PARAM_LIST@[23; 25)
-      L_PAREN@[23; 24) "("
-      R_PAREN@[24; 25) ")"
-    BLOCK@[25; 27)
-      L_CURLY@[25; 26) "{"
-      R_CURLY@[26; 27) "}"
-  WHITESPACE@[27; 28) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.rs
deleted file mode 100644 (file)
index 80c0a43..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-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/ok/0006_self_param.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.txt
deleted file mode 100644 (file)
index 8e210a6..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-SOURCE_FILE@[0; 128)
-  IMPL_BLOCK@[0; 127)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 6)
-      PATH@[5; 6)
-        PATH_SEGMENT@[5; 6)
-          NAME_REF@[5; 6)
-            IDENT@[5; 6) "S"
-    WHITESPACE@[6; 7) " "
-    ITEM_LIST@[7; 127)
-      L_CURLY@[7; 8) "{"
-      WHITESPACE@[8; 13) "\n    "
-      FN_DEF@[13; 26)
-        FN_KW@[13; 15) "fn"
-        WHITESPACE@[15; 16) " "
-        NAME@[16; 17)
-          IDENT@[16; 17) "a"
-        PARAM_LIST@[17; 23)
-          L_PAREN@[17; 18) "("
-          SELF_PARAM@[18; 22)
-            SELF_KW@[18; 22) "self"
-          R_PAREN@[22; 23) ")"
-        WHITESPACE@[23; 24) " "
-        BLOCK@[24; 26)
-          L_CURLY@[24; 25) "{"
-          R_CURLY@[25; 26) "}"
-      WHITESPACE@[26; 31) "\n    "
-      FN_DEF@[31; 46)
-        FN_KW@[31; 33) "fn"
-        WHITESPACE@[33; 34) " "
-        NAME@[34; 35)
-          IDENT@[34; 35) "b"
-        PARAM_LIST@[35; 43)
-          L_PAREN@[35; 36) "("
-          SELF_PARAM@[36; 41)
-            AMP@[36; 37) "&"
-            SELF_KW@[37; 41) "self"
-          COMMA@[41; 42) ","
-          R_PAREN@[42; 43) ")"
-        WHITESPACE@[43; 44) " "
-        BLOCK@[44; 46)
-          L_CURLY@[44; 45) "{"
-          R_CURLY@[45; 46) "}"
-      WHITESPACE@[46; 51) "\n    "
-      FN_DEF@[51; 69)
-        FN_KW@[51; 53) "fn"
-        WHITESPACE@[53; 54) " "
-        NAME@[54; 55)
-          IDENT@[54; 55) "c"
-        PARAM_LIST@[55; 66)
-          L_PAREN@[55; 56) "("
-          SELF_PARAM@[56; 64)
-            AMP@[56; 57) "&"
-            LIFETIME@[57; 59) "\'a"
-            WHITESPACE@[59; 60) " "
-            SELF_KW@[60; 64) "self"
-          COMMA@[64; 65) ","
-          R_PAREN@[65; 66) ")"
-        WHITESPACE@[66; 67) " "
-        BLOCK@[67; 69)
-          L_CURLY@[67; 68) "{"
-          R_CURLY@[68; 69) "}"
-      WHITESPACE@[69; 74) "\n    "
-      FN_DEF@[74; 103)
-        FN_KW@[74; 76) "fn"
-        WHITESPACE@[76; 77) " "
-        NAME@[77; 78)
-          IDENT@[77; 78) "d"
-        PARAM_LIST@[78; 100)
-          L_PAREN@[78; 79) "("
-          SELF_PARAM@[79; 91)
-            AMP@[79; 80) "&"
-            LIFETIME@[80; 82) "\'a"
-            WHITESPACE@[82; 83) " "
-            MUT_KW@[83; 86) "mut"
-            WHITESPACE@[86; 87) " "
-            SELF_KW@[87; 91) "self"
-          COMMA@[91; 92) ","
-          WHITESPACE@[92; 93) " "
-          PARAM@[93; 99)
-            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) "\n    "
-      FN_DEF@[108; 125)
-        FN_KW@[108; 110) "fn"
-        WHITESPACE@[110; 111) " "
-        NAME@[111; 112)
-          IDENT@[111; 112) "e"
-        PARAM_LIST@[112; 122)
-          L_PAREN@[112; 113) "("
-          SELF_PARAM@[113; 121)
-            MUT_KW@[113; 116) "mut"
-            WHITESPACE@[116; 117) " "
-            SELF_KW@[117; 121) "self"
-          R_PAREN@[121; 122) ")"
-        WHITESPACE@[122; 123) " "
-        BLOCK@[123; 125)
-          L_CURLY@[123; 124) "{"
-          R_CURLY@[124; 125) "}"
-      WHITESPACE@[125; 126) "\n"
-      R_CURLY@[126; 127) "}"
-  WHITESPACE@[127; 128) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.rs
deleted file mode 100644 (file)
index 919bde0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-struct S<T: 'a + ?Sized + (Copy)>;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt
deleted file mode 100644 (file)
index a7186c7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-SOURCE_FILE@[0; 35)
-  STRUCT_DEF@[0; 34)
-    STRUCT_KW@[0; 6) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[12; 32)
-          TYPE_BOUND@[12; 14)
-            LIFETIME@[12; 14) "\'a"
-          WHITESPACE@[14; 15) " "
-          PLUS@[15; 16) "+"
-          WHITESPACE@[16; 17) " "
-          TYPE_BOUND@[17; 23)
-            QUESTION@[17; 18) "?"
-            PATH_TYPE@[18; 23)
-              PATH@[18; 23)
-                PATH_SEGMENT@[18; 23)
-                  NAME_REF@[18; 23)
-                    IDENT@[18; 23) "Sized"
-          WHITESPACE@[23; 24) " "
-          PLUS@[24; 25) "+"
-          WHITESPACE@[25; 26) " "
-          TYPE_BOUND@[26; 32)
-            L_PAREN@[26; 27) "("
-            PATH_TYPE@[27; 31)
-              PATH@[27; 31)
-                PATH_SEGMENT@[27; 31)
-                  NAME_REF@[27; 31)
-                    IDENT@[27; 31) "Copy"
-            R_PAREN@[31; 32) ")"
-      R_ANGLE@[32; 33) ">"
-    SEMI@[33; 34) ";"
-  WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.rs
deleted file mode 100644 (file)
index f6e32c7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    let foo::Bar = ();
-    let ::Bar = ();
-    let Bar { .. } = ();
-    let Bar(..) = ();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt
deleted file mode 100644 (file)
index 0c6be48..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-SOURCE_FILE@[0; 103)
-  FN_DEF@[0; 102)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 102)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 33)
-        LET_KW@[15; 18) "let"
-        WHITESPACE@[18; 19) " "
-        PATH_PAT@[19; 27)
-          PATH@[19; 27)
-            PATH@[19; 22)
-              PATH_SEGMENT@[19; 22)
-                NAME_REF@[19; 22)
-                  IDENT@[19; 22) "foo"
-            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) "\n    "
-      LET_STMT@[38; 53)
-        LET_KW@[38; 41) "let"
-        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) "\n    "
-      LET_STMT@[58; 78)
-        LET_KW@[58; 61) "let"
-        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) "\n    "
-      LET_STMT@[83; 100)
-        LET_KW@[83; 86) "let"
-        WHITESPACE@[86; 87) " "
-        TUPLE_STRUCT_PAT@[87; 94)
-          PATH@[87; 90)
-            PATH_SEGMENT@[87; 90)
-              NAME_REF@[87; 90)
-                IDENT@[87; 90) "Bar"
-          L_PAREN@[90; 91) "("
-          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) "\n"
-      R_CURLY@[101; 102) "}"
-  WHITESPACE@[102; 103) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.rs
deleted file mode 100644 (file)
index 9f078fa..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo() {
-    loop {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt
deleted file mode 100644 (file)
index 8240aba..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-SOURCE_FILE@[0; 26)
-  FN_DEF@[0; 25)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 25)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 23)
-        LOOP_EXPR@[15; 22)
-          LOOP_KW@[15; 19) "loop"
-          WHITESPACE@[19; 20) " "
-          BLOCK@[20; 22)
-            L_CURLY@[20; 21) "{"
-            R_CURLY@[21; 22) "}"
-        SEMI@[22; 23) ";"
-      WHITESPACE@[23; 24) "\n"
-      R_CURLY@[24; 25) "}"
-  WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.rs
deleted file mode 100644 (file)
index 26a9ccd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-extern {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt
deleted file mode 100644 (file)
index 506f56f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-SOURCE_FILE@[0; 10)
-  EXTERN_BLOCK@[0; 9)
-    ABI@[0; 6)
-      EXTERN_KW@[0; 6) "extern"
-    WHITESPACE@[6; 7) " "
-    EXTERN_ITEM_LIST@[7; 9)
-      L_CURLY@[7; 8) "{"
-      R_CURLY@[8; 9) "}"
-  WHITESPACE@[9; 10) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.rs
deleted file mode 100644 (file)
index b8da2dd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    x.foo;
-    x.0.bar;
-    x.0();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt
deleted file mode 100644 (file)
index 78054ec..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-SOURCE_FILE@[0; 48)
-  FN_DEF@[0; 47)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 47)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 21)
-        FIELD_EXPR@[15; 20)
-          PATH_EXPR@[15; 16)
-            PATH@[15; 16)
-              PATH_SEGMENT@[15; 16)
-                NAME_REF@[15; 16)
-                  IDENT@[15; 16) "x"
-          DOT@[16; 17) "."
-          NAME_REF@[17; 20)
-            IDENT@[17; 20) "foo"
-        SEMI@[20; 21) ";"
-      WHITESPACE@[21; 26) "\n    "
-      EXPR_STMT@[26; 34)
-        FIELD_EXPR@[26; 33)
-          FIELD_EXPR@[26; 29)
-            PATH_EXPR@[26; 27)
-              PATH@[26; 27)
-                PATH_SEGMENT@[26; 27)
-                  NAME_REF@[26; 27)
-                    IDENT@[26; 27) "x"
-            DOT@[27; 28) "."
-            INT_NUMBER@[28; 29) "0"
-          DOT@[29; 30) "."
-          NAME_REF@[30; 33)
-            IDENT@[30; 33) "bar"
-        SEMI@[33; 34) ";"
-      WHITESPACE@[34; 39) "\n    "
-      EXPR_STMT@[39; 45)
-        CALL_EXPR@[39; 44)
-          FIELD_EXPR@[39; 42)
-            PATH_EXPR@[39; 40)
-              PATH@[39; 40)
-                PATH_SEGMENT@[39; 40)
-                  NAME_REF@[39; 40)
-                    IDENT@[39; 40) "x"
-            DOT@[40; 41) "."
-            INT_NUMBER@[41; 42) "0"
-          ARG_LIST@[42; 44)
-            L_PAREN@[42; 43) "("
-            R_PAREN@[43; 44) ")"
-        SEMI@[44; 45) ";"
-      WHITESPACE@[45; 46) "\n"
-      R_CURLY@[46; 47) "}"
-  WHITESPACE@[47; 48) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.rs
deleted file mode 100644 (file)
index a602d07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type Foo where Foo: Copy = ();
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt
deleted file mode 100644 (file)
index da04dac..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE@[0; 31)
-  TYPE_ALIAS_DEF@[0; 30)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 8)
-      IDENT@[5; 8) "Foo"
-    WHITESPACE@[8; 9) " "
-    WHERE_CLAUSE@[9; 24)
-      WHERE_KW@[9; 14) "where"
-      WHITESPACE@[14; 15) " "
-      WHERE_PRED@[15; 24)
-        PATH_TYPE@[15; 18)
-          PATH@[15; 18)
-            PATH_SEGMENT@[15; 18)
-              NAME_REF@[15; 18)
-                IDENT@[15; 18) "Foo"
-        COLON@[18; 19) ":"
-        WHITESPACE@[19; 20) " "
-        TYPE_BOUND_LIST@[20; 24)
-          TYPE_BOUND@[20; 24)
-            PATH_TYPE@[20; 24)
-              PATH@[20; 24)
-                PATH_SEGMENT@[20; 24)
-                  NAME_REF@[20; 24)
-                    IDENT@[20; 24) "Copy"
-    WHITESPACE@[24; 25) " "
-    EQ@[25; 26) "="
-    WHITESPACE@[26; 27) " "
-    TUPLE_TYPE@[27; 29)
-      L_PAREN@[27; 28) "("
-      R_PAREN@[28; 29) ")"
-    SEMI@[29; 30) ";"
-  WHITESPACE@[30; 31) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.rs
deleted file mode 100644 (file)
index 04b2bb9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-type M = *mut ();
-type C = *mut ();
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt
deleted file mode 100644 (file)
index c05f873..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE@[0; 36)
-  TYPE_ALIAS_DEF@[0; 17)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "M"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    POINTER_TYPE@[9; 16)
-      STAR@[9; 10) "*"
-      MUT_KW@[10; 13) "mut"
-      WHITESPACE@[13; 14) " "
-      TUPLE_TYPE@[14; 16)
-        L_PAREN@[14; 15) "("
-        R_PAREN@[15; 16) ")"
-    SEMI@[16; 17) ";"
-  WHITESPACE@[17; 18) "\n"
-  TYPE_ALIAS_DEF@[18; 35)
-    TYPE_KW@[18; 22) "type"
-    WHITESPACE@[22; 23) " "
-    NAME@[23; 24)
-      IDENT@[23; 24) "C"
-    WHITESPACE@[24; 25) " "
-    EQ@[25; 26) "="
-    WHITESPACE@[26; 27) " "
-    POINTER_TYPE@[27; 34)
-      STAR@[27; 28) "*"
-      MUT_KW@[28; 31) "mut"
-      WHITESPACE@[31; 32) " "
-      TUPLE_TYPE@[32; 34)
-        L_PAREN@[32; 33) "("
-        R_PAREN@[33; 34) ")"
-    SEMI@[34; 35) ";"
-  WHITESPACE@[35; 36) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.rs
deleted file mode 100644 (file)
index de399fc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type Never = !;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt
deleted file mode 100644 (file)
index ac53e4f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE@[0; 16)
-  TYPE_ALIAS_DEF@[0; 15)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 10)
-      IDENT@[5; 10) "Never"
-    WHITESPACE@[10; 11) " "
-    EQ@[11; 12) "="
-    WHITESPACE@[12; 13) " "
-    NEVER_TYPE@[13; 14)
-      EXCL@[13; 14) "!"
-    SEMI@[14; 15) ";"
-  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.rs
deleted file mode 100644 (file)
index 474cc3f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    loop {
-        continue;
-        continue 'l;
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt
deleted file mode 100644 (file)
index e8cc32f..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE@[0; 69)
-  FN_DEF@[0; 68)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 68)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LOOP_EXPR@[15; 66)
-        LOOP_KW@[15; 19) "loop"
-        WHITESPACE@[19; 20) " "
-        BLOCK@[20; 66)
-          L_CURLY@[20; 21) "{"
-          WHITESPACE@[21; 30) "\n        "
-          EXPR_STMT@[30; 39)
-            CONTINUE_EXPR@[30; 38)
-              CONTINUE_KW@[30; 38) "continue"
-            SEMI@[38; 39) ";"
-          WHITESPACE@[39; 48) "\n        "
-          EXPR_STMT@[48; 60)
-            CONTINUE_EXPR@[48; 59)
-              CONTINUE_KW@[48; 56) "continue"
-              WHITESPACE@[56; 57) " "
-              LIFETIME@[57; 59) "\'l"
-            SEMI@[59; 60) ";"
-          WHITESPACE@[60; 65) "\n    "
-          R_CURLY@[65; 66) "}"
-      WHITESPACE@[66; 67) "\n"
-      R_CURLY@[67; 68) "}"
-  WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.rs
deleted file mode 100644 (file)
index 04e0215..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unsafe trait T {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt
deleted file mode 100644 (file)
index 7b43f12..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE@[0; 18)
-  TRAIT_DEF@[0; 17)
-    UNSAFE_KW@[0; 6) "unsafe"
-    WHITESPACE@[6; 7) " "
-    TRAIT_KW@[7; 12) "trait"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.rs
deleted file mode 100644 (file)
index 27eb22f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type T = [(); 92];
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt
deleted file mode 100644 (file)
index b4055c9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE@[0; 19)
-  TYPE_ALIAS_DEF@[0; 18)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    ARRAY_TYPE@[9; 17)
-      L_BRACK@[9; 10) "["
-      TUPLE_TYPE@[10; 12)
-        L_PAREN@[10; 11) "("
-        R_PAREN@[11; 12) ")"
-      SEMI@[12; 13) ";"
-      WHITESPACE@[13; 14) " "
-      LITERAL@[14; 16)
-        INT_NUMBER@[14; 16) "92"
-      R_BRACK@[16; 17) "]"
-    SEMI@[17; 18) ";"
-  WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.rs
deleted file mode 100644 (file)
index 6a170d5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-impl S {
-    fn a(self: &Self) {}
-    fn b(mut self: Box<Self>) {}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt
deleted file mode 100644 (file)
index 67d0de0..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-SOURCE_FILE@[0; 69)
-  IMPL_BLOCK@[0; 68)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 6)
-      PATH@[5; 6)
-        PATH_SEGMENT@[5; 6)
-          NAME_REF@[5; 6)
-            IDENT@[5; 6) "S"
-    WHITESPACE@[6; 7) " "
-    ITEM_LIST@[7; 68)
-      L_CURLY@[7; 8) "{"
-      WHITESPACE@[8; 13) "\n    "
-      FN_DEF@[13; 33)
-        FN_KW@[13; 15) "fn"
-        WHITESPACE@[15; 16) " "
-        NAME@[16; 17)
-          IDENT@[16; 17) "a"
-        PARAM_LIST@[17; 30)
-          L_PAREN@[17; 18) "("
-          SELF_PARAM@[18; 29)
-            SELF_KW@[18; 22) "self"
-            COLON@[22; 23) ":"
-            WHITESPACE@[23; 24) " "
-            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) "\n    "
-      FN_DEF@[38; 66)
-        FN_KW@[38; 40) "fn"
-        WHITESPACE@[40; 41) " "
-        NAME@[41; 42)
-          IDENT@[41; 42) "b"
-        PARAM_LIST@[42; 63)
-          L_PAREN@[42; 43) "("
-          SELF_PARAM@[43; 62)
-            MUT_KW@[43; 46) "mut"
-            WHITESPACE@[46; 47) " "
-            SELF_KW@[47; 51) "self"
-            COLON@[51; 52) ":"
-            WHITESPACE@[52; 53) " "
-            PATH_TYPE@[53; 62)
-              PATH@[53; 62)
-                PATH_SEGMENT@[53; 62)
-                  NAME_REF@[53; 56)
-                    IDENT@[53; 56) "Box"
-                  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) "\n"
-      R_CURLY@[67; 68) "}"
-  WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.rs
deleted file mode 100644 (file)
index f1c3f71..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    **&1;
-    !!true;
-    --1;
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt
deleted file mode 100644 (file)
index 42032f5..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-SOURCE_FILE@[0; 44)
-  FN_DEF@[0; 43)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 43)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 20)
-        PREFIX_EXPR@[15; 19)
-          STAR@[15; 16) "*"
-          PREFIX_EXPR@[16; 19)
-            STAR@[16; 17) "*"
-            REF_EXPR@[17; 19)
-              AMP@[17; 18) "&"
-              LITERAL@[18; 19)
-                INT_NUMBER@[18; 19) "1"
-        SEMI@[19; 20) ";"
-      WHITESPACE@[20; 25) "\n    "
-      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) "true"
-        SEMI@[31; 32) ";"
-      WHITESPACE@[32; 37) "\n    "
-      EXPR_STMT@[37; 41)
-        PREFIX_EXPR@[37; 40)
-          MINUS@[37; 38) "-"
-          PREFIX_EXPR@[38; 40)
-            MINUS@[38; 39) "-"
-            LITERAL@[39; 40)
-              INT_NUMBER@[39; 40) "1"
-        SEMI@[40; 41) ";"
-      WHITESPACE@[41; 42) "\n"
-      R_CURLY@[42; 43) "}"
-  WHITESPACE@[43; 44) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.rs
deleted file mode 100644 (file)
index 6f15769..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-use *;
-use ::*;
-use some::path::{*};
-use some::path::{::*};
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt
deleted file mode 100644 (file)
index dd2095d..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-SOURCE_FILE@[0; 60)
-  USE_ITEM@[0; 6)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 5)
-      STAR@[4; 5) "*"
-    SEMI@[5; 6) ";"
-  WHITESPACE@[6; 7) "\n"
-  USE_ITEM@[7; 15)
-    USE_KW@[7; 10) "use"
-    WHITESPACE@[10; 11) " "
-    USE_TREE@[11; 14)
-      COLONCOLON@[11; 13) "::"
-      STAR@[13; 14) "*"
-    SEMI@[14; 15) ";"
-  WHITESPACE@[15; 16) "\n"
-  USE_ITEM@[16; 36)
-    USE_KW@[16; 19) "use"
-    WHITESPACE@[19; 20) " "
-    USE_TREE@[20; 35)
-      PATH@[20; 30)
-        PATH@[20; 24)
-          PATH_SEGMENT@[20; 24)
-            NAME_REF@[20; 24)
-              IDENT@[20; 24) "some"
-        COLONCOLON@[24; 26) "::"
-        PATH_SEGMENT@[26; 30)
-          NAME_REF@[26; 30)
-            IDENT@[26; 30) "path"
-      COLONCOLON@[30; 32) "::"
-      USE_TREE_LIST@[32; 35)
-        L_CURLY@[32; 33) "{"
-        USE_TREE@[33; 34)
-          STAR@[33; 34) "*"
-        R_CURLY@[34; 35) "}"
-    SEMI@[35; 36) ";"
-  WHITESPACE@[36; 37) "\n"
-  USE_ITEM@[37; 59)
-    USE_KW@[37; 40) "use"
-    WHITESPACE@[40; 41) " "
-    USE_TREE@[41; 58)
-      PATH@[41; 51)
-        PATH@[41; 45)
-          PATH_SEGMENT@[41; 45)
-            NAME_REF@[41; 45)
-              IDENT@[41; 45) "some"
-        COLONCOLON@[45; 47) "::"
-        PATH_SEGMENT@[47; 51)
-          NAME_REF@[47; 51)
-            IDENT@[47; 51) "path"
-      COLONCOLON@[51; 53) "::"
-      USE_TREE_LIST@[53; 58)
-        L_CURLY@[53; 54) "{"
-        USE_TREE@[54; 57)
-          COLONCOLON@[54; 56) "::"
-          STAR@[56; 57) "*"
-        R_CURLY@[57; 58) "}"
-    SEMI@[58; 59) ";"
-  WHITESPACE@[59; 60) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.rs
deleted file mode 100644 (file)
index f108514..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-impl F {
-    type A = i32;
-    const B: i32 = 92;
-    fn foo() {}
-    fn bar(&self) {}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt
deleted file mode 100644 (file)
index a893833..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-SOURCE_FILE@[0; 89)
-  IMPL_BLOCK@[0; 88)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 6)
-      PATH@[5; 6)
-        PATH_SEGMENT@[5; 6)
-          NAME_REF@[5; 6)
-            IDENT@[5; 6) "F"
-    WHITESPACE@[6; 7) " "
-    ITEM_LIST@[7; 88)
-      L_CURLY@[7; 8) "{"
-      WHITESPACE@[8; 13) "\n    "
-      TYPE_ALIAS_DEF@[13; 26)
-        TYPE_KW@[13; 17) "type"
-        WHITESPACE@[17; 18) " "
-        NAME@[18; 19)
-          IDENT@[18; 19) "A"
-        WHITESPACE@[19; 20) " "
-        EQ@[20; 21) "="
-        WHITESPACE@[21; 22) " "
-        PATH_TYPE@[22; 25)
-          PATH@[22; 25)
-            PATH_SEGMENT@[22; 25)
-              NAME_REF@[22; 25)
-                IDENT@[22; 25) "i32"
-        SEMI@[25; 26) ";"
-      WHITESPACE@[26; 31) "\n    "
-      CONST_DEF@[31; 49)
-        CONST_KW@[31; 36) "const"
-        WHITESPACE@[36; 37) " "
-        NAME@[37; 38)
-          IDENT@[37; 38) "B"
-        COLON@[38; 39) ":"
-        WHITESPACE@[39; 40) " "
-        PATH_TYPE@[40; 43)
-          PATH@[40; 43)
-            PATH_SEGMENT@[40; 43)
-              NAME_REF@[40; 43)
-                IDENT@[40; 43) "i32"
-        WHITESPACE@[43; 44) " "
-        EQ@[44; 45) "="
-        WHITESPACE@[45; 46) " "
-        LITERAL@[46; 48)
-          INT_NUMBER@[46; 48) "92"
-        SEMI@[48; 49) ";"
-      WHITESPACE@[49; 54) "\n    "
-      FN_DEF@[54; 65)
-        FN_KW@[54; 56) "fn"
-        WHITESPACE@[56; 57) " "
-        NAME@[57; 60)
-          IDENT@[57; 60) "foo"
-        PARAM_LIST@[60; 62)
-          L_PAREN@[60; 61) "("
-          R_PAREN@[61; 62) ")"
-        WHITESPACE@[62; 63) " "
-        BLOCK@[63; 65)
-          L_CURLY@[63; 64) "{"
-          R_CURLY@[64; 65) "}"
-      WHITESPACE@[65; 70) "\n    "
-      FN_DEF@[70; 86)
-        FN_KW@[70; 72) "fn"
-        WHITESPACE@[72; 73) " "
-        NAME@[73; 76)
-          IDENT@[73; 76) "bar"
-        PARAM_LIST@[76; 83)
-          L_PAREN@[76; 77) "("
-          SELF_PARAM@[77; 82)
-            AMP@[77; 78) "&"
-            SELF_KW@[78; 82) "self"
-          R_PAREN@[82; 83) ")"
-        WHITESPACE@[83; 84) " "
-        BLOCK@[84; 86)
-          L_CURLY@[84; 85) "{"
-          R_CURLY@[85; 86) "}"
-      WHITESPACE@[86; 87) "\n"
-      R_CURLY@[87; 88) "}"
-  WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.rs
deleted file mode 100644 (file)
index faeefde..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-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/ok/0022_crate_visibility.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.txt
deleted file mode 100644 (file)
index 891943f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-SOURCE_FILE@[0; 81)
-  STRUCT_DEF@[0; 20)
-    VISIBILITY@[0; 10)
-      PUB_KW@[0; 3) "pub"
-      L_PAREN@[3; 4) "("
-      CRATE_KW@[4; 9) "crate"
-      R_PAREN@[9; 10) ")"
-    WHITESPACE@[10; 11) " "
-    STRUCT_KW@[11; 17) "struct"
-    WHITESPACE@[17; 18) " "
-    NAME@[18; 19)
-      IDENT@[18; 19) "S"
-    SEMI@[19; 20) ";"
-  WHITESPACE@[20; 21) "\n"
-  STRUCT_DEF@[21; 40)
-    VISIBILITY@[21; 30)
-      PUB_KW@[21; 24) "pub"
-      L_PAREN@[24; 25) "("
-      SELF_KW@[25; 29) "self"
-      R_PAREN@[29; 30) ")"
-    WHITESPACE@[30; 31) " "
-    STRUCT_KW@[31; 37) "struct"
-    WHITESPACE@[37; 38) " "
-    NAME@[38; 39)
-      IDENT@[38; 39) "S"
-    SEMI@[39; 40) ";"
-  WHITESPACE@[40; 41) "\n"
-  STRUCT_DEF@[41; 60)
-    VISIBILITY@[41; 50)
-      PUB_KW@[41; 44) "pub"
-      L_PAREN@[44; 45) "("
-      SELF_KW@[45; 49) "self"
-      R_PAREN@[49; 50) ")"
-    WHITESPACE@[50; 51) " "
-    STRUCT_KW@[51; 57) "struct"
-    WHITESPACE@[57; 58) " "
-    NAME@[58; 59)
-      IDENT@[58; 59) "S"
-    SEMI@[59; 60) ";"
-  WHITESPACE@[60; 61) "\n"
-  STRUCT_DEF@[61; 80)
-    VISIBILITY@[61; 70)
-      PUB_KW@[61; 64) "pub"
-      L_PAREN@[64; 65) "("
-      SELF_KW@[65; 69) "self"
-      R_PAREN@[69; 70) ")"
-    WHITESPACE@[70; 71) " "
-    STRUCT_KW@[71; 77) "struct"
-    WHITESPACE@[77; 78) " "
-    NAME@[78; 79)
-      IDENT@[78; 79) "S"
-    SEMI@[79; 80) ";"
-  WHITESPACE@[80; 81) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.rs
deleted file mode 100644 (file)
index 7952dbd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type Placeholder = _;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt
deleted file mode 100644 (file)
index 0f32aec..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE@[0; 22)
-  TYPE_ALIAS_DEF@[0; 21)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 16)
-      IDENT@[5; 16) "Placeholder"
-    WHITESPACE@[16; 17) " "
-    EQ@[17; 18) "="
-    WHITESPACE@[18; 19) " "
-    PLACEHOLDER_TYPE@[19; 20)
-      UNDERSCORE@[19; 20) "_"
-    SEMI@[20; 21) ";"
-  WHITESPACE@[21; 22) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.rs
deleted file mode 100644 (file)
index 7955973..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
-    let [a, b, ..] = [];
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt
deleted file mode 100644 (file)
index 40ddbfb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-SOURCE_FILE@[0; 39)
-  FN_DEF@[0; 38)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 38)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      LET_STMT@[16; 36)
-        LET_KW@[16; 19) "let"
-        WHITESPACE@[19; 20) " "
-        SLICE_PAT@[20; 30)
-          L_BRACK@[20; 21) "["
-          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) "\n"
-      R_CURLY@[37; 38) "}"
-  WHITESPACE@[38; 39) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.rs
deleted file mode 100644 (file)
index 4da1af8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type T = [()];
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt
deleted file mode 100644 (file)
index b3a2428..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SOURCE_FILE@[0; 15)
-  TYPE_ALIAS_DEF@[0; 14)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    SLICE_TYPE@[9; 13)
-      L_BRACK@[9; 10) "["
-      TUPLE_TYPE@[10; 12)
-        L_PAREN@[10; 11) "("
-        R_PAREN@[11; 12) ")"
-      R_BRACK@[12; 13) "]"
-    SEMI@[13; 14) ";"
-  WHITESPACE@[14; 15) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.rs
deleted file mode 100644 (file)
index 0dfe636..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    let S() = ();
-    let S(_) = ();
-    let S(_,) = ();
-    let S(_, .. , x) = ();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt
deleted file mode 100644 (file)
index 0ff9364..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-SOURCE_FILE@[0; 97)
-  FN_DEF@[0; 96)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 96)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 28)
-        LET_KW@[15; 18) "let"
-        WHITESPACE@[18; 19) " "
-        TUPLE_STRUCT_PAT@[19; 22)
-          PATH@[19; 20)
-            PATH_SEGMENT@[19; 20)
-              NAME_REF@[19; 20)
-                IDENT@[19; 20) "S"
-          L_PAREN@[20; 21) "("
-          R_PAREN@[21; 22) ")"
-        WHITESPACE@[22; 23) " "
-        EQ@[23; 24) "="
-        WHITESPACE@[24; 25) " "
-        TUPLE_EXPR@[25; 27)
-          L_PAREN@[25; 26) "("
-          R_PAREN@[26; 27) ")"
-        SEMI@[27; 28) ";"
-      WHITESPACE@[28; 33) "\n    "
-      LET_STMT@[33; 47)
-        LET_KW@[33; 36) "let"
-        WHITESPACE@[36; 37) " "
-        TUPLE_STRUCT_PAT@[37; 41)
-          PATH@[37; 38)
-            PATH_SEGMENT@[37; 38)
-              NAME_REF@[37; 38)
-                IDENT@[37; 38) "S"
-          L_PAREN@[38; 39) "("
-          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) "\n    "
-      LET_STMT@[52; 67)
-        LET_KW@[52; 55) "let"
-        WHITESPACE@[55; 56) " "
-        TUPLE_STRUCT_PAT@[56; 61)
-          PATH@[56; 57)
-            PATH_SEGMENT@[56; 57)
-              NAME_REF@[56; 57)
-                IDENT@[56; 57) "S"
-          L_PAREN@[57; 58) "("
-          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) "\n    "
-      LET_STMT@[72; 94)
-        LET_KW@[72; 75) "let"
-        WHITESPACE@[75; 76) " "
-        TUPLE_STRUCT_PAT@[76; 88)
-          PATH@[76; 77)
-            PATH_SEGMENT@[76; 77)
-              NAME_REF@[76; 77)
-                IDENT@[76; 77) "S"
-          L_PAREN@[77; 78) "("
-          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) "\n"
-      R_CURLY@[95; 96) "}"
-  WHITESPACE@[96; 97) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.rs
deleted file mode 100644 (file)
index de41f5c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn main() {
-    let &a = ();
-    let &mut b = ();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt
deleted file mode 100644 (file)
index a833b1b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE@[0; 52)
-  FN_DEF@[0; 51)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 51)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      LET_STMT@[16; 28)
-        LET_KW@[16; 19) "let"
-        WHITESPACE@[19; 20) " "
-        REF_PAT@[20; 22)
-          AMP@[20; 21) "&"
-          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) "\n    "
-      LET_STMT@[33; 49)
-        LET_KW@[33; 36) "let"
-        WHITESPACE@[36; 37) " "
-        REF_PAT@[37; 43)
-          AMP@[37; 38) "&"
-          MUT_KW@[38; 41) "mut"
-          WHITESPACE@[41; 42) " "
-          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) "\n"
-      R_CURLY@[50; 51) "}"
-  WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.rs
deleted file mode 100644 (file)
index 54c5a7c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type A = impl Iterator<Item=Foo<'a>> + 'a;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt
deleted file mode 100644 (file)
index f07027f..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE@[0; 43)
-  TYPE_ALIAS_DEF@[0; 42)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    IMPL_TRAIT_TYPE@[9; 41)
-      IMPL_KW@[9; 13) "impl"
-      WHITESPACE@[13; 14) " "
-      TYPE_BOUND_LIST@[14; 41)
-        TYPE_BOUND@[14; 36)
-          PATH_TYPE@[14; 36)
-            PATH@[14; 36)
-              PATH_SEGMENT@[14; 36)
-                NAME_REF@[14; 22)
-                  IDENT@[14; 22) "Iterator"
-                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) " "
-        TYPE_BOUND@[39; 41)
-          LIFETIME@[39; 41) "\'a"
-    SEMI@[41; 42) ";"
-  WHITESPACE@[42; 43) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs
deleted file mode 100644 (file)
index bfe8e4b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    82 as i32;
-    81 as i8 + 1;
-    79 as i16 - 1;
-    0x36 as u8 <= 0x37;
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt
deleted file mode 100644 (file)
index 11c14e3..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-SOURCE_FILE@[0; 89)
-  FN_DEF@[0; 88)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 88)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 25)
-        CAST_EXPR@[15; 24)
-          LITERAL@[15; 17)
-            INT_NUMBER@[15; 17) "82"
-          WHITESPACE@[17; 18) " "
-          AS_KW@[18; 20) "as"
-          WHITESPACE@[20; 21) " "
-          PATH_TYPE@[21; 24)
-            PATH@[21; 24)
-              PATH_SEGMENT@[21; 24)
-                NAME_REF@[21; 24)
-                  IDENT@[21; 24) "i32"
-        SEMI@[24; 25) ";"
-      WHITESPACE@[25; 30) "\n    "
-      EXPR_STMT@[30; 43)
-        BIN_EXPR@[30; 42)
-          CAST_EXPR@[30; 38)
-            LITERAL@[30; 32)
-              INT_NUMBER@[30; 32) "81"
-            WHITESPACE@[32; 33) " "
-            AS_KW@[33; 35) "as"
-            WHITESPACE@[35; 36) " "
-            PATH_TYPE@[36; 38)
-              PATH@[36; 38)
-                PATH_SEGMENT@[36; 38)
-                  NAME_REF@[36; 38)
-                    IDENT@[36; 38) "i8"
-          WHITESPACE@[38; 39) " "
-          PLUS@[39; 40) "+"
-          WHITESPACE@[40; 41) " "
-          LITERAL@[41; 42)
-            INT_NUMBER@[41; 42) "1"
-        SEMI@[42; 43) ";"
-      WHITESPACE@[43; 48) "\n    "
-      EXPR_STMT@[48; 62)
-        BIN_EXPR@[48; 61)
-          CAST_EXPR@[48; 57)
-            LITERAL@[48; 50)
-              INT_NUMBER@[48; 50) "79"
-            WHITESPACE@[50; 51) " "
-            AS_KW@[51; 53) "as"
-            WHITESPACE@[53; 54) " "
-            PATH_TYPE@[54; 57)
-              PATH@[54; 57)
-                PATH_SEGMENT@[54; 57)
-                  NAME_REF@[54; 57)
-                    IDENT@[54; 57) "i16"
-          WHITESPACE@[57; 58) " "
-          MINUS@[58; 59) "-"
-          WHITESPACE@[59; 60) " "
-          LITERAL@[60; 61)
-            INT_NUMBER@[60; 61) "1"
-        SEMI@[61; 62) ";"
-      WHITESPACE@[62; 67) "\n    "
-      EXPR_STMT@[67; 86)
-        BIN_EXPR@[67; 85)
-          CAST_EXPR@[67; 77)
-            LITERAL@[67; 71)
-              INT_NUMBER@[67; 71) "0x36"
-            WHITESPACE@[71; 72) " "
-            AS_KW@[72; 74) "as"
-            WHITESPACE@[74; 75) " "
-            PATH_TYPE@[75; 77)
-              PATH@[75; 77)
-                PATH_SEGMENT@[75; 77)
-                  NAME_REF@[75; 77)
-                    IDENT@[75; 77) "u8"
-          WHITESPACE@[77; 78) " "
-          LTEQ@[78; 80) "<="
-          WHITESPACE@[80; 81) " "
-          LITERAL@[81; 85)
-            INT_NUMBER@[81; 85) "0x37"
-        SEMI@[85; 86) ";"
-      WHITESPACE@[86; 87) "\n"
-      R_CURLY@[87; 88) "}"
-  WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.rs
deleted file mode 100644 (file)
index 2552a26..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-fn foo() { if let Some(_) = None {} }
-fn bar() {
-    if let Some(_) | Some(_) = None {}
-    if let | Some(_) = None {}
-    while let Some(_) | Some(_) = None {}
-    while let | Some(_) = None {}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt
deleted file mode 100644 (file)
index 1c9414b..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-SOURCE_FILE@[0; 197)
-  FN_DEF@[0; 37)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 37)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) " "
-      IF_EXPR@[11; 35)
-        IF_KW@[11; 13) "if"
-        WHITESPACE@[13; 14) " "
-        CONDITION@[14; 32)
-          LET_KW@[14; 17) "let"
-          WHITESPACE@[17; 18) " "
-          TUPLE_STRUCT_PAT@[18; 25)
-            PATH@[18; 22)
-              PATH_SEGMENT@[18; 22)
-                NAME_REF@[18; 22)
-                  IDENT@[18; 22) "Some"
-            L_PAREN@[22; 23) "("
-            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) "\n"
-  FN_DEF@[38; 196)
-    FN_KW@[38; 40) "fn"
-    WHITESPACE@[40; 41) " "
-    NAME@[41; 44)
-      IDENT@[41; 44) "bar"
-    PARAM_LIST@[44; 46)
-      L_PAREN@[44; 45) "("
-      R_PAREN@[45; 46) ")"
-    WHITESPACE@[46; 47) " "
-    BLOCK@[47; 196)
-      L_CURLY@[47; 48) "{"
-      WHITESPACE@[48; 53) "\n    "
-      EXPR_STMT@[53; 87)
-        IF_EXPR@[53; 87)
-          IF_KW@[53; 55) "if"
-          WHITESPACE@[55; 56) " "
-          CONDITION@[56; 84)
-            LET_KW@[56; 59) "let"
-            WHITESPACE@[59; 60) " "
-            TUPLE_STRUCT_PAT@[60; 67)
-              PATH@[60; 64)
-                PATH_SEGMENT@[60; 64)
-                  NAME_REF@[60; 64)
-                    IDENT@[60; 64) "Some"
-              L_PAREN@[64; 65) "("
-              PLACEHOLDER_PAT@[65; 66)
-                UNDERSCORE@[65; 66) "_"
-              R_PAREN@[66; 67) ")"
-            WHITESPACE@[67; 68) " "
-            PIPE@[68; 69) "|"
-            WHITESPACE@[69; 70) " "
-            TUPLE_STRUCT_PAT@[70; 77)
-              PATH@[70; 74)
-                PATH_SEGMENT@[70; 74)
-                  NAME_REF@[70; 74)
-                    IDENT@[70; 74) "Some"
-              L_PAREN@[74; 75) "("
-              PLACEHOLDER_PAT@[75; 76)
-                UNDERSCORE@[75; 76) "_"
-              R_PAREN@[76; 77) ")"
-            WHITESPACE@[77; 78) " "
-            EQ@[78; 79) "="
-            WHITESPACE@[79; 80) " "
-            PATH_EXPR@[80; 84)
-              PATH@[80; 84)
-                PATH_SEGMENT@[80; 84)
-                  NAME_REF@[80; 84)
-                    IDENT@[80; 84) "None"
-          WHITESPACE@[84; 85) " "
-          BLOCK@[85; 87)
-            L_CURLY@[85; 86) "{"
-            R_CURLY@[86; 87) "}"
-      WHITESPACE@[87; 92) "\n    "
-      EXPR_STMT@[92; 118)
-        IF_EXPR@[92; 118)
-          IF_KW@[92; 94) "if"
-          WHITESPACE@[94; 95) " "
-          CONDITION@[95; 115)
-            LET_KW@[95; 98) "let"
-            WHITESPACE@[98; 99) " "
-            PIPE@[99; 100) "|"
-            WHITESPACE@[100; 101) " "
-            TUPLE_STRUCT_PAT@[101; 108)
-              PATH@[101; 105)
-                PATH_SEGMENT@[101; 105)
-                  NAME_REF@[101; 105)
-                    IDENT@[101; 105) "Some"
-              L_PAREN@[105; 106) "("
-              PLACEHOLDER_PAT@[106; 107)
-                UNDERSCORE@[106; 107) "_"
-              R_PAREN@[107; 108) ")"
-            WHITESPACE@[108; 109) " "
-            EQ@[109; 110) "="
-            WHITESPACE@[110; 111) " "
-            PATH_EXPR@[111; 115)
-              PATH@[111; 115)
-                PATH_SEGMENT@[111; 115)
-                  NAME_REF@[111; 115)
-                    IDENT@[111; 115) "None"
-          WHITESPACE@[115; 116) " "
-          BLOCK@[116; 118)
-            L_CURLY@[116; 117) "{"
-            R_CURLY@[117; 118) "}"
-      WHITESPACE@[118; 123) "\n    "
-      EXPR_STMT@[123; 160)
-        WHILE_EXPR@[123; 160)
-          WHILE_KW@[123; 128) "while"
-          WHITESPACE@[128; 129) " "
-          CONDITION@[129; 157)
-            LET_KW@[129; 132) "let"
-            WHITESPACE@[132; 133) " "
-            TUPLE_STRUCT_PAT@[133; 140)
-              PATH@[133; 137)
-                PATH_SEGMENT@[133; 137)
-                  NAME_REF@[133; 137)
-                    IDENT@[133; 137) "Some"
-              L_PAREN@[137; 138) "("
-              PLACEHOLDER_PAT@[138; 139)
-                UNDERSCORE@[138; 139) "_"
-              R_PAREN@[139; 140) ")"
-            WHITESPACE@[140; 141) " "
-            PIPE@[141; 142) "|"
-            WHITESPACE@[142; 143) " "
-            TUPLE_STRUCT_PAT@[143; 150)
-              PATH@[143; 147)
-                PATH_SEGMENT@[143; 147)
-                  NAME_REF@[143; 147)
-                    IDENT@[143; 147) "Some"
-              L_PAREN@[147; 148) "("
-              PLACEHOLDER_PAT@[148; 149)
-                UNDERSCORE@[148; 149) "_"
-              R_PAREN@[149; 150) ")"
-            WHITESPACE@[150; 151) " "
-            EQ@[151; 152) "="
-            WHITESPACE@[152; 153) " "
-            PATH_EXPR@[153; 157)
-              PATH@[153; 157)
-                PATH_SEGMENT@[153; 157)
-                  NAME_REF@[153; 157)
-                    IDENT@[153; 157) "None"
-          WHITESPACE@[157; 158) " "
-          BLOCK@[158; 160)
-            L_CURLY@[158; 159) "{"
-            R_CURLY@[159; 160) "}"
-      WHITESPACE@[160; 165) "\n    "
-      WHILE_EXPR@[165; 194)
-        WHILE_KW@[165; 170) "while"
-        WHITESPACE@[170; 171) " "
-        CONDITION@[171; 191)
-          LET_KW@[171; 174) "let"
-          WHITESPACE@[174; 175) " "
-          PIPE@[175; 176) "|"
-          WHITESPACE@[176; 177) " "
-          TUPLE_STRUCT_PAT@[177; 184)
-            PATH@[177; 181)
-              PATH_SEGMENT@[177; 181)
-                NAME_REF@[177; 181)
-                  IDENT@[177; 181) "Some"
-            L_PAREN@[181; 182) "("
-            PLACEHOLDER_PAT@[182; 183)
-              UNDERSCORE@[182; 183) "_"
-            R_PAREN@[183; 184) ")"
-          WHITESPACE@[184; 185) " "
-          EQ@[185; 186) "="
-          WHITESPACE@[186; 187) " "
-          PATH_EXPR@[187; 191)
-            PATH@[187; 191)
-              PATH_SEGMENT@[187; 191)
-                NAME_REF@[187; 191)
-                  IDENT@[187; 191) "None"
-        WHITESPACE@[191; 192) " "
-        BLOCK@[192; 194)
-          L_CURLY@[192; 193) "{"
-          R_CURLY@[193; 194) "}"
-      WHITESPACE@[194; 195) "\n"
-      R_CURLY@[195; 196) "}"
-  WHITESPACE@[196; 197) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.rs
deleted file mode 100644 (file)
index 293046a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-    while true {};
-    while let Some(x) = it.next() {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt
deleted file mode 100644 (file)
index a772117..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-SOURCE_FILE@[0; 70)
-  FN_DEF@[0; 69)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 69)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 29)
-        WHILE_EXPR@[15; 28)
-          WHILE_KW@[15; 20) "while"
-          WHITESPACE@[20; 21) " "
-          CONDITION@[21; 25)
-            LITERAL@[21; 25)
-              TRUE_KW@[21; 25) "true"
-          WHITESPACE@[25; 26) " "
-          BLOCK@[26; 28)
-            L_CURLY@[26; 27) "{"
-            R_CURLY@[27; 28) "}"
-        SEMI@[28; 29) ";"
-      WHITESPACE@[29; 34) "\n    "
-      EXPR_STMT@[34; 67)
-        WHILE_EXPR@[34; 66)
-          WHILE_KW@[34; 39) "while"
-          WHITESPACE@[39; 40) " "
-          CONDITION@[40; 63)
-            LET_KW@[40; 43) "let"
-            WHITESPACE@[43; 44) " "
-            TUPLE_STRUCT_PAT@[44; 51)
-              PATH@[44; 48)
-                PATH_SEGMENT@[44; 48)
-                  NAME_REF@[44; 48)
-                    IDENT@[44; 48) "Some"
-              L_PAREN@[48; 49) "("
-              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) "\n"
-      R_CURLY@[68; 69) "}"
-  WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.rs
deleted file mode 100644 (file)
index 9493da8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-type A = fn();
-type B = unsafe fn();
-type C = unsafe extern "C" fn();
-type D = extern "C" fn ( u8 , ... ) -> u8;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt
deleted file mode 100644 (file)
index a0a8aea..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-SOURCE_FILE@[0; 113)
-  TYPE_ALIAS_DEF@[0; 14)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    FN_POINTER_TYPE@[9; 13)
-      FN_KW@[9; 11) "fn"
-      PARAM_LIST@[11; 13)
-        L_PAREN@[11; 12) "("
-        R_PAREN@[12; 13) ")"
-    SEMI@[13; 14) ";"
-  WHITESPACE@[14; 15) "\n"
-  TYPE_ALIAS_DEF@[15; 36)
-    TYPE_KW@[15; 19) "type"
-    WHITESPACE@[19; 20) " "
-    NAME@[20; 21)
-      IDENT@[20; 21) "B"
-    WHITESPACE@[21; 22) " "
-    EQ@[22; 23) "="
-    WHITESPACE@[23; 24) " "
-    FN_POINTER_TYPE@[24; 35)
-      UNSAFE_KW@[24; 30) "unsafe"
-      WHITESPACE@[30; 31) " "
-      FN_KW@[31; 33) "fn"
-      PARAM_LIST@[33; 35)
-        L_PAREN@[33; 34) "("
-        R_PAREN@[34; 35) ")"
-    SEMI@[35; 36) ";"
-  WHITESPACE@[36; 37) "\n"
-  TYPE_ALIAS_DEF@[37; 69)
-    TYPE_KW@[37; 41) "type"
-    WHITESPACE@[41; 42) " "
-    NAME@[42; 43)
-      IDENT@[42; 43) "C"
-    WHITESPACE@[43; 44) " "
-    EQ@[44; 45) "="
-    WHITESPACE@[45; 46) " "
-    FN_POINTER_TYPE@[46; 68)
-      UNSAFE_KW@[46; 52) "unsafe"
-      WHITESPACE@[52; 53) " "
-      ABI@[53; 63)
-        EXTERN_KW@[53; 59) "extern"
-        WHITESPACE@[59; 60) " "
-        STRING@[60; 63) "\"C\""
-      WHITESPACE@[63; 64) " "
-      FN_KW@[64; 66) "fn"
-      PARAM_LIST@[66; 68)
-        L_PAREN@[66; 67) "("
-        R_PAREN@[67; 68) ")"
-    SEMI@[68; 69) ";"
-  WHITESPACE@[69; 70) "\n"
-  TYPE_ALIAS_DEF@[70; 112)
-    TYPE_KW@[70; 74) "type"
-    WHITESPACE@[74; 75) " "
-    NAME@[75; 76)
-      IDENT@[75; 76) "D"
-    WHITESPACE@[76; 77) " "
-    EQ@[77; 78) "="
-    WHITESPACE@[78; 79) " "
-    FN_POINTER_TYPE@[79; 111)
-      ABI@[79; 89)
-        EXTERN_KW@[79; 85) "extern"
-        WHITESPACE@[85; 86) " "
-        STRING@[86; 89) "\"C\""
-      WHITESPACE@[89; 90) " "
-      FN_KW@[90; 92) "fn"
-      WHITESPACE@[92; 93) " "
-      PARAM_LIST@[93; 105)
-        L_PAREN@[93; 94) "("
-        WHITESPACE@[94; 95) " "
-        PARAM@[95; 97)
-          PATH_TYPE@[95; 97)
-            PATH@[95; 97)
-              PATH_SEGMENT@[95; 97)
-                NAME_REF@[95; 97)
-                  IDENT@[95; 97) "u8"
-        WHITESPACE@[97; 98) " "
-        COMMA@[98; 99) ","
-        WHITESPACE@[99; 100) " "
-        DOTDOTDOT@[100; 103) "..."
-        WHITESPACE@[103; 104) " "
-        R_PAREN@[104; 105) ")"
-      WHITESPACE@[105; 106) " "
-      RET_TYPE@[106; 111)
-        THIN_ARROW@[106; 108) "->"
-        WHITESPACE@[108; 109) " "
-        PATH_TYPE@[109; 111)
-          PATH@[109; 111)
-            PATH_SEGMENT@[109; 111)
-              NAME_REF@[109; 111)
-                IDENT@[109; 111) "u8"
-    SEMI@[111; 112) ";"
-  WHITESPACE@[112; 113) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.rs
deleted file mode 100644 (file)
index 3ac0bad..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-type A = &();
-type B = &'static ();
-type C = &mut ();
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt
deleted file mode 100644 (file)
index 7642ea6..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-SOURCE_FILE@[0; 54)
-  TYPE_ALIAS_DEF@[0; 13)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    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) "\n"
-  TYPE_ALIAS_DEF@[14; 35)
-    TYPE_KW@[14; 18) "type"
-    WHITESPACE@[18; 19) " "
-    NAME@[19; 20)
-      IDENT@[19; 20) "B"
-    WHITESPACE@[20; 21) " "
-    EQ@[21; 22) "="
-    WHITESPACE@[22; 23) " "
-    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) "\n"
-  TYPE_ALIAS_DEF@[36; 53)
-    TYPE_KW@[36; 40) "type"
-    WHITESPACE@[40; 41) " "
-    NAME@[41; 42)
-      IDENT@[41; 42) "C"
-    WHITESPACE@[42; 43) " "
-    EQ@[43; 44) "="
-    WHITESPACE@[44; 45) " "
-    REFERENCE_TYPE@[45; 52)
-      AMP@[45; 46) "&"
-      MUT_KW@[46; 49) "mut"
-      WHITESPACE@[49; 50) " "
-      TUPLE_TYPE@[50; 52)
-        L_PAREN@[50; 51) "("
-        R_PAREN@[51; 52) ")"
-    SEMI@[52; 53) ";"
-  WHITESPACE@[53; 54) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.rs
deleted file mode 100644 (file)
index 1b40946..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-fn foo() {
-    loop {
-        break;
-        break 'l;
-        break 92;
-        break 'l 92;
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt
deleted file mode 100644 (file)
index 4ece7cd..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-SOURCE_FILE@[0; 102)
-  FN_DEF@[0; 101)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 101)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LOOP_EXPR@[15; 99)
-        LOOP_KW@[15; 19) "loop"
-        WHITESPACE@[19; 20) " "
-        BLOCK@[20; 99)
-          L_CURLY@[20; 21) "{"
-          WHITESPACE@[21; 30) "\n        "
-          EXPR_STMT@[30; 36)
-            BREAK_EXPR@[30; 35)
-              BREAK_KW@[30; 35) "break"
-            SEMI@[35; 36) ";"
-          WHITESPACE@[36; 45) "\n        "
-          EXPR_STMT@[45; 54)
-            BREAK_EXPR@[45; 53)
-              BREAK_KW@[45; 50) "break"
-              WHITESPACE@[50; 51) " "
-              LIFETIME@[51; 53) "\'l"
-            SEMI@[53; 54) ";"
-          WHITESPACE@[54; 63) "\n        "
-          EXPR_STMT@[63; 72)
-            BREAK_EXPR@[63; 71)
-              BREAK_KW@[63; 68) "break"
-              WHITESPACE@[68; 69) " "
-              LITERAL@[69; 71)
-                INT_NUMBER@[69; 71) "92"
-            SEMI@[71; 72) ";"
-          WHITESPACE@[72; 81) "\n        "
-          EXPR_STMT@[81; 93)
-            BREAK_EXPR@[81; 92)
-              BREAK_KW@[81; 86) "break"
-              WHITESPACE@[86; 87) " "
-              LIFETIME@[87; 89) "\'l"
-              WHITESPACE@[89; 90) " "
-              LITERAL@[90; 92)
-                INT_NUMBER@[90; 92) "92"
-            SEMI@[92; 93) ";"
-          WHITESPACE@[93; 98) "\n    "
-          R_CURLY@[98; 99) "}"
-      WHITESPACE@[99; 100) "\n"
-      R_CURLY@[100; 101) "}"
-  WHITESPACE@[101; 102) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.rs
deleted file mode 100644 (file)
index 1295c2c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unsafe extern "C" fn foo() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt
deleted file mode 100644 (file)
index b5b09b2..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE@[0; 30)
-  FN_DEF@[0; 29)
-    UNSAFE_KW@[0; 6) "unsafe"
-    WHITESPACE@[6; 7) " "
-    ABI@[7; 17)
-      EXTERN_KW@[7; 13) "extern"
-      WHITESPACE@[13; 14) " "
-      STRING@[14; 17) "\"C\""
-    WHITESPACE@[17; 18) " "
-    FN_KW@[18; 20) "fn"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.rs
deleted file mode 100644 (file)
index d140692..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-type X = <A as B>::Output;
-fn foo() { <usize as Default>::default(); }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt
deleted file mode 100644 (file)
index 9bfddf5..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-SOURCE_FILE@[0; 71)
-  TYPE_ALIAS_DEF@[0; 26)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "X"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    PATH_TYPE@[9; 25)
-      PATH@[9; 25)
-        PATH@[9; 17)
-          PATH_SEGMENT@[9; 17)
-            L_ANGLE@[9; 10) "<"
-            PATH_TYPE@[10; 11)
-              PATH@[10; 11)
-                PATH_SEGMENT@[10; 11)
-                  NAME_REF@[10; 11)
-                    IDENT@[10; 11) "A"
-            WHITESPACE@[11; 12) " "
-            AS_KW@[12; 14) "as"
-            WHITESPACE@[14; 15) " "
-            PATH_TYPE@[15; 16)
-              PATH@[15; 16)
-                PATH_SEGMENT@[15; 16)
-                  NAME_REF@[15; 16)
-                    IDENT@[15; 16) "B"
-            R_ANGLE@[16; 17) ">"
-        COLONCOLON@[17; 19) "::"
-        PATH_SEGMENT@[19; 25)
-          NAME_REF@[19; 25)
-            IDENT@[19; 25) "Output"
-    SEMI@[25; 26) ";"
-  WHITESPACE@[26; 27) "\n"
-  FN_DEF@[27; 70)
-    FN_KW@[27; 29) "fn"
-    WHITESPACE@[29; 30) " "
-    NAME@[30; 33)
-      IDENT@[30; 33) "foo"
-    PARAM_LIST@[33; 35)
-      L_PAREN@[33; 34) "("
-      R_PAREN@[34; 35) ")"
-    WHITESPACE@[35; 36) " "
-    BLOCK@[36; 70)
-      L_CURLY@[36; 37) "{"
-      WHITESPACE@[37; 38) " "
-      EXPR_STMT@[38; 68)
-        CALL_EXPR@[38; 67)
-          PATH_EXPR@[38; 65)
-            PATH@[38; 65)
-              PATH@[38; 56)
-                PATH_SEGMENT@[38; 56)
-                  L_ANGLE@[38; 39) "<"
-                  PATH_TYPE@[39; 44)
-                    PATH@[39; 44)
-                      PATH_SEGMENT@[39; 44)
-                        NAME_REF@[39; 44)
-                          IDENT@[39; 44) "usize"
-                  WHITESPACE@[44; 45) " "
-                  AS_KW@[45; 47) "as"
-                  WHITESPACE@[47; 48) " "
-                  PATH_TYPE@[48; 55)
-                    PATH@[48; 55)
-                      PATH_SEGMENT@[48; 55)
-                        NAME_REF@[48; 55)
-                          IDENT@[48; 55) "Default"
-                  R_ANGLE@[55; 56) ">"
-              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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.rs
deleted file mode 100644 (file)
index ae21ad9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo() { xs[..]; }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt
deleted file mode 100644 (file)
index 477c645..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE@[0; 21)
-  FN_DEF@[0; 20)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.rs
deleted file mode 100644 (file)
index 385c431..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type A = B<'static, i32, Item=u64>;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt
deleted file mode 100644 (file)
index 4786bf7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-SOURCE_FILE@[0; 36)
-  TYPE_ALIAS_DEF@[0; 35)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    PATH_TYPE@[9; 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) ">"
-    SEMI@[34; 35) ";"
-  WHITESPACE@[35; 36) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.rs
deleted file mode 100644 (file)
index e2b5f21..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-crate fn main() { }
-struct S { crate field: u32 }
-struct T(crate u32);
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt
deleted file mode 100644 (file)
index fb82461..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-SOURCE_FILE@[0; 71)
-  FN_DEF@[0; 19)
-    VISIBILITY@[0; 5)
-      CRATE_KW@[0; 5) "crate"
-    WHITESPACE@[5; 6) " "
-    FN_KW@[6; 8) "fn"
-    WHITESPACE@[8; 9) " "
-    NAME@[9; 13)
-      IDENT@[9; 13) "main"
-    PARAM_LIST@[13; 15)
-      L_PAREN@[13; 14) "("
-      R_PAREN@[14; 15) ")"
-    WHITESPACE@[15; 16) " "
-    BLOCK@[16; 19)
-      L_CURLY@[16; 17) "{"
-      WHITESPACE@[17; 18) " "
-      R_CURLY@[18; 19) "}"
-  WHITESPACE@[19; 20) "\n"
-  STRUCT_DEF@[20; 49)
-    STRUCT_KW@[20; 26) "struct"
-    WHITESPACE@[26; 27) " "
-    NAME@[27; 28)
-      IDENT@[27; 28) "S"
-    WHITESPACE@[28; 29) " "
-    NAMED_FIELD_DEF_LIST@[29; 49)
-      L_CURLY@[29; 30) "{"
-      WHITESPACE@[30; 31) " "
-      NAMED_FIELD_DEF@[31; 47)
-        VISIBILITY@[31; 36)
-          CRATE_KW@[31; 36) "crate"
-        WHITESPACE@[36; 37) " "
-        NAME@[37; 42)
-          IDENT@[37; 42) "field"
-        COLON@[42; 43) ":"
-        WHITESPACE@[43; 44) " "
-        PATH_TYPE@[44; 47)
-          PATH@[44; 47)
-            PATH_SEGMENT@[44; 47)
-              NAME_REF@[44; 47)
-                IDENT@[44; 47) "u32"
-      WHITESPACE@[47; 48) " "
-      R_CURLY@[48; 49) "}"
-  WHITESPACE@[49; 50) "\n"
-  STRUCT_DEF@[50; 70)
-    STRUCT_KW@[50; 56) "struct"
-    WHITESPACE@[56; 57) " "
-    NAME@[57; 58)
-      IDENT@[57; 58) "T"
-    POS_FIELD_DEF_LIST@[58; 69)
-      L_PAREN@[58; 59) "("
-      POS_FIELD_DEF@[59; 68)
-        VISIBILITY@[59; 64)
-          CRATE_KW@[59; 64) "crate"
-        WHITESPACE@[64; 65) " "
-        PATH_TYPE@[65; 68)
-          PATH@[65; 68)
-            PATH_SEGMENT@[65; 68)
-              NAME_REF@[65; 68)
-                IDENT@[65; 68) "u32"
-      R_PAREN@[68; 69) ")"
-    SEMI@[69; 70) ";"
-  WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs
deleted file mode 100644 (file)
index 32761dd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-trait T<U>: Hash + Clone where U: Copy {}
-trait X<U: Debug + Display>: Hash + Clone where U: Copy {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
deleted file mode 100644 (file)
index 5783617..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-SOURCE_FILE@[0; 101)
-  TRAIT_DEF@[0; 41)
-    TRAIT_KW@[0; 5) "trait"
-    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) " "
-    TYPE_BOUND_LIST@[12; 24)
-      TYPE_BOUND@[12; 16)
-        PATH_TYPE@[12; 16)
-          PATH@[12; 16)
-            PATH_SEGMENT@[12; 16)
-              NAME_REF@[12; 16)
-                IDENT@[12; 16) "Hash"
-      WHITESPACE@[16; 17) " "
-      PLUS@[17; 18) "+"
-      WHITESPACE@[18; 19) " "
-      TYPE_BOUND@[19; 24)
-        PATH_TYPE@[19; 24)
-          PATH@[19; 24)
-            PATH_SEGMENT@[19; 24)
-              NAME_REF@[19; 24)
-                IDENT@[19; 24) "Clone"
-    WHITESPACE@[24; 25) " "
-    WHERE_CLAUSE@[25; 38)
-      WHERE_KW@[25; 30) "where"
-      WHITESPACE@[30; 31) " "
-      WHERE_PRED@[31; 38)
-        PATH_TYPE@[31; 32)
-          PATH@[31; 32)
-            PATH_SEGMENT@[31; 32)
-              NAME_REF@[31; 32)
-                IDENT@[31; 32) "U"
-        COLON@[32; 33) ":"
-        WHITESPACE@[33; 34) " "
-        TYPE_BOUND_LIST@[34; 38)
-          TYPE_BOUND@[34; 38)
-            PATH_TYPE@[34; 38)
-              PATH@[34; 38)
-                PATH_SEGMENT@[34; 38)
-                  NAME_REF@[34; 38)
-                    IDENT@[34; 38) "Copy"
-    WHITESPACE@[38; 39) " "
-    ITEM_LIST@[39; 41)
-      L_CURLY@[39; 40) "{"
-      R_CURLY@[40; 41) "}"
-  WHITESPACE@[41; 42) "\n"
-  TRAIT_DEF@[42; 100)
-    TRAIT_KW@[42; 47) "trait"
-    WHITESPACE@[47; 48) " "
-    NAME@[48; 49)
-      IDENT@[48; 49) "X"
-    TYPE_PARAM_LIST@[49; 69)
-      L_ANGLE@[49; 50) "<"
-      TYPE_PARAM@[50; 68)
-        NAME@[50; 51)
-          IDENT@[50; 51) "U"
-        COLON@[51; 52) ":"
-        WHITESPACE@[52; 53) " "
-        TYPE_BOUND_LIST@[53; 68)
-          TYPE_BOUND@[53; 58)
-            PATH_TYPE@[53; 58)
-              PATH@[53; 58)
-                PATH_SEGMENT@[53; 58)
-                  NAME_REF@[53; 58)
-                    IDENT@[53; 58) "Debug"
-          WHITESPACE@[58; 59) " "
-          PLUS@[59; 60) "+"
-          WHITESPACE@[60; 61) " "
-          TYPE_BOUND@[61; 68)
-            PATH_TYPE@[61; 68)
-              PATH@[61; 68)
-                PATH_SEGMENT@[61; 68)
-                  NAME_REF@[61; 68)
-                    IDENT@[61; 68) "Display"
-      R_ANGLE@[68; 69) ">"
-    COLON@[69; 70) ":"
-    WHITESPACE@[70; 71) " "
-    TYPE_BOUND_LIST@[71; 83)
-      TYPE_BOUND@[71; 75)
-        PATH_TYPE@[71; 75)
-          PATH@[71; 75)
-            PATH_SEGMENT@[71; 75)
-              NAME_REF@[71; 75)
-                IDENT@[71; 75) "Hash"
-      WHITESPACE@[75; 76) " "
-      PLUS@[76; 77) "+"
-      WHITESPACE@[77; 78) " "
-      TYPE_BOUND@[78; 83)
-        PATH_TYPE@[78; 83)
-          PATH@[78; 83)
-            PATH_SEGMENT@[78; 83)
-              NAME_REF@[78; 83)
-                IDENT@[78; 83) "Clone"
-    WHITESPACE@[83; 84) " "
-    WHERE_CLAUSE@[84; 97)
-      WHERE_KW@[84; 89) "where"
-      WHITESPACE@[89; 90) " "
-      WHERE_PRED@[90; 97)
-        PATH_TYPE@[90; 91)
-          PATH@[90; 91)
-            PATH_SEGMENT@[90; 91)
-              NAME_REF@[90; 91)
-                IDENT@[90; 91) "U"
-        COLON@[91; 92) ":"
-        WHITESPACE@[92; 93) " "
-        TYPE_BOUND_LIST@[93; 97)
-          TYPE_BOUND@[93; 97)
-            PATH_TYPE@[93; 97)
-              PATH@[93; 97)
-                PATH_SEGMENT@[93; 97)
-                  NAME_REF@[93; 97)
-                    IDENT@[93; 97) "Copy"
-    WHITESPACE@[97; 98) " "
-    ITEM_LIST@[98; 100)
-      L_CURLY@[98; 99) "{"
-      R_CURLY@[99; 100) "}"
-  WHITESPACE@[100; 101) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.rs
deleted file mode 100644 (file)
index ffbf46d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    let _ = f();
-    let _ = f()(1)(1, 2,);
-    let _ = f(<Foo>::func());
-    f(<Foo as Trait>::func());
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt
deleted file mode 100644 (file)
index dd8946a..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-SOURCE_FILE@[0; 118)
-  FN_DEF@[0; 117)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 117)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 27)
-        LET_KW@[15; 18) "let"
-        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) "\n    "
-      LET_STMT@[32; 54)
-        LET_KW@[32; 35) "let"
-        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; 59) "\n    "
-      LET_STMT@[59; 84)
-        LET_KW@[59; 62) "let"
-        WHITESPACE@[62; 63) " "
-        PLACEHOLDER_PAT@[63; 64)
-          UNDERSCORE@[63; 64) "_"
-        WHITESPACE@[64; 65) " "
-        EQ@[65; 66) "="
-        WHITESPACE@[66; 67) " "
-        CALL_EXPR@[67; 83)
-          PATH_EXPR@[67; 68)
-            PATH@[67; 68)
-              PATH_SEGMENT@[67; 68)
-                NAME_REF@[67; 68)
-                  IDENT@[67; 68) "f"
-          ARG_LIST@[68; 83)
-            L_PAREN@[68; 69) "("
-            CALL_EXPR@[69; 82)
-              PATH_EXPR@[69; 80)
-                PATH@[69; 80)
-                  PATH@[69; 74)
-                    PATH_SEGMENT@[69; 74)
-                      L_ANGLE@[69; 70) "<"
-                      PATH_TYPE@[70; 73)
-                        PATH@[70; 73)
-                          PATH_SEGMENT@[70; 73)
-                            NAME_REF@[70; 73)
-                              IDENT@[70; 73) "Foo"
-                      R_ANGLE@[73; 74) ">"
-                  COLONCOLON@[74; 76) "::"
-                  PATH_SEGMENT@[76; 80)
-                    NAME_REF@[76; 80)
-                      IDENT@[76; 80) "func"
-              ARG_LIST@[80; 82)
-                L_PAREN@[80; 81) "("
-                R_PAREN@[81; 82) ")"
-            R_PAREN@[82; 83) ")"
-        SEMI@[83; 84) ";"
-      WHITESPACE@[84; 89) "\n    "
-      EXPR_STMT@[89; 115)
-        CALL_EXPR@[89; 114)
-          PATH_EXPR@[89; 90)
-            PATH@[89; 90)
-              PATH_SEGMENT@[89; 90)
-                NAME_REF@[89; 90)
-                  IDENT@[89; 90) "f"
-          ARG_LIST@[90; 114)
-            L_PAREN@[90; 91) "("
-            CALL_EXPR@[91; 113)
-              PATH_EXPR@[91; 111)
-                PATH@[91; 111)
-                  PATH@[91; 105)
-                    PATH_SEGMENT@[91; 105)
-                      L_ANGLE@[91; 92) "<"
-                      PATH_TYPE@[92; 95)
-                        PATH@[92; 95)
-                          PATH_SEGMENT@[92; 95)
-                            NAME_REF@[92; 95)
-                              IDENT@[92; 95) "Foo"
-                      WHITESPACE@[95; 96) " "
-                      AS_KW@[96; 98) "as"
-                      WHITESPACE@[98; 99) " "
-                      PATH_TYPE@[99; 104)
-                        PATH@[99; 104)
-                          PATH_SEGMENT@[99; 104)
-                            NAME_REF@[99; 104)
-                              IDENT@[99; 104) "Trait"
-                      R_ANGLE@[104; 105) ">"
-                  COLONCOLON@[105; 107) "::"
-                  PATH_SEGMENT@[107; 111)
-                    NAME_REF@[107; 111)
-                      IDENT@[107; 111) "func"
-              ARG_LIST@[111; 113)
-                L_PAREN@[111; 112) "("
-                R_PAREN@[112; 113) ")"
-            R_PAREN@[113; 114) ")"
-        SEMI@[114; 115) ";"
-      WHITESPACE@[115; 116) "\n"
-      R_CURLY@[116; 117) "}"
-  WHITESPACE@[117; 118) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs
deleted file mode 100644 (file)
index 9be50f8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-use some::path as some_name;
-use some::{
- other::path as some_other_name,
- different::path as different_name,
- yet::another::path,
- running::out::of::synonyms::for_::different::*
-};
-use Trait as _;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt
deleted file mode 100644 (file)
index 18d8a15..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-SOURCE_FILE@[0; 198)
-  USE_ITEM@[0; 28)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 27)
-      PATH@[4; 14)
-        PATH@[4; 8)
-          PATH_SEGMENT@[4; 8)
-            NAME_REF@[4; 8)
-              IDENT@[4; 8) "some"
-        COLONCOLON@[8; 10) "::"
-        PATH_SEGMENT@[10; 14)
-          NAME_REF@[10; 14)
-            IDENT@[10; 14) "path"
-      WHITESPACE@[14; 15) " "
-      ALIAS@[15; 27)
-        AS_KW@[15; 17) "as"
-        WHITESPACE@[17; 18) " "
-        NAME@[18; 27)
-          IDENT@[18; 27) "some_name"
-    SEMI@[27; 28) ";"
-  WHITESPACE@[28; 29) "\n"
-  USE_ITEM@[29; 181)
-    USE_KW@[29; 32) "use"
-    WHITESPACE@[32; 33) " "
-    USE_TREE@[33; 180)
-      PATH@[33; 37)
-        PATH_SEGMENT@[33; 37)
-          NAME_REF@[33; 37)
-            IDENT@[33; 37) "some"
-      COLONCOLON@[37; 39) "::"
-      USE_TREE_LIST@[39; 180)
-        L_CURLY@[39; 40) "{"
-        WHITESPACE@[40; 42) "\n "
-        USE_TREE@[42; 72)
-          PATH@[42; 53)
-            PATH@[42; 47)
-              PATH_SEGMENT@[42; 47)
-                NAME_REF@[42; 47)
-                  IDENT@[42; 47) "other"
-            COLONCOLON@[47; 49) "::"
-            PATH_SEGMENT@[49; 53)
-              NAME_REF@[49; 53)
-                IDENT@[49; 53) "path"
-          WHITESPACE@[53; 54) " "
-          ALIAS@[54; 72)
-            AS_KW@[54; 56) "as"
-            WHITESPACE@[56; 57) " "
-            NAME@[57; 72)
-              IDENT@[57; 72) "some_other_name"
-        COMMA@[72; 73) ","
-        WHITESPACE@[73; 75) "\n "
-        USE_TREE@[75; 108)
-          PATH@[75; 90)
-            PATH@[75; 84)
-              PATH_SEGMENT@[75; 84)
-                NAME_REF@[75; 84)
-                  IDENT@[75; 84) "different"
-            COLONCOLON@[84; 86) "::"
-            PATH_SEGMENT@[86; 90)
-              NAME_REF@[86; 90)
-                IDENT@[86; 90) "path"
-          WHITESPACE@[90; 91) " "
-          ALIAS@[91; 108)
-            AS_KW@[91; 93) "as"
-            WHITESPACE@[93; 94) " "
-            NAME@[94; 108)
-              IDENT@[94; 108) "different_name"
-        COMMA@[108; 109) ","
-        WHITESPACE@[109; 111) "\n "
-        USE_TREE@[111; 129)
-          PATH@[111; 129)
-            PATH@[111; 123)
-              PATH@[111; 114)
-                PATH_SEGMENT@[111; 114)
-                  NAME_REF@[111; 114)
-                    IDENT@[111; 114) "yet"
-              COLONCOLON@[114; 116) "::"
-              PATH_SEGMENT@[116; 123)
-                NAME_REF@[116; 123)
-                  IDENT@[116; 123) "another"
-            COLONCOLON@[123; 125) "::"
-            PATH_SEGMENT@[125; 129)
-              NAME_REF@[125; 129)
-                IDENT@[125; 129) "path"
-        COMMA@[129; 130) ","
-        WHITESPACE@[130; 132) "\n "
-        USE_TREE@[132; 178)
-          PATH@[132; 175)
-            PATH@[132; 164)
-              PATH@[132; 158)
-                PATH@[132; 148)
-                  PATH@[132; 144)
-                    PATH@[132; 139)
-                      PATH_SEGMENT@[132; 139)
-                        NAME_REF@[132; 139)
-                          IDENT@[132; 139) "running"
-                    COLONCOLON@[139; 141) "::"
-                    PATH_SEGMENT@[141; 144)
-                      NAME_REF@[141; 144)
-                        IDENT@[141; 144) "out"
-                  COLONCOLON@[144; 146) "::"
-                  PATH_SEGMENT@[146; 148)
-                    NAME_REF@[146; 148)
-                      IDENT@[146; 148) "of"
-                COLONCOLON@[148; 150) "::"
-                PATH_SEGMENT@[150; 158)
-                  NAME_REF@[150; 158)
-                    IDENT@[150; 158) "synonyms"
-              COLONCOLON@[158; 160) "::"
-              PATH_SEGMENT@[160; 164)
-                NAME_REF@[160; 164)
-                  IDENT@[160; 164) "for_"
-            COLONCOLON@[164; 166) "::"
-            PATH_SEGMENT@[166; 175)
-              NAME_REF@[166; 175)
-                IDENT@[166; 175) "different"
-          COLONCOLON@[175; 177) "::"
-          STAR@[177; 178) "*"
-        WHITESPACE@[178; 179) "\n"
-        R_CURLY@[179; 180) "}"
-    SEMI@[180; 181) ";"
-  WHITESPACE@[181; 182) "\n"
-  USE_ITEM@[182; 197)
-    USE_KW@[182; 185) "use"
-    WHITESPACE@[185; 186) " "
-    USE_TREE@[186; 196)
-      PATH@[186; 191)
-        PATH_SEGMENT@[186; 191)
-          NAME_REF@[186; 191)
-            IDENT@[186; 191) "Trait"
-      WHITESPACE@[191; 192) " "
-      ALIAS@[192; 196)
-        AS_KW@[192; 194) "as"
-        WHITESPACE@[194; 195) " "
-        UNDERSCORE@[195; 196) "_"
-    SEMI@[196; 197) ";"
-  WHITESPACE@[197; 198) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.rs
deleted file mode 100644 (file)
index d986871..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn a() { fn b() {} }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt
deleted file mode 100644 (file)
index d1a8c56..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE@[0; 21)
-  FN_DEF@[0; 20)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 4)
-      IDENT@[3; 4) "a"
-    PARAM_LIST@[4; 6)
-      L_PAREN@[4; 5) "("
-      R_PAREN@[5; 6) ")"
-    WHITESPACE@[6; 7) " "
-    BLOCK@[7; 20)
-      L_CURLY@[7; 8) "{"
-      WHITESPACE@[8; 9) " "
-      FN_DEF@[9; 18)
-        FN_KW@[9; 11) "fn"
-        WHITESPACE@[11; 12) " "
-        NAME@[12; 13)
-          IDENT@[12; 13) "b"
-        PARAM_LIST@[13; 15)
-          L_PAREN@[13; 14) "("
-          R_PAREN@[14; 15) ")"
-        WHITESPACE@[15; 16) " "
-        BLOCK@[16; 18)
-          L_CURLY@[16; 17) "{"
-          R_CURLY@[17; 18) "}"
-      WHITESPACE@[18; 19) " "
-      R_CURLY@[19; 20) "}"
-  WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.rs
deleted file mode 100644 (file)
index 9b93442..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo<F: FnMut(&mut Foo<'a>)>(){}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt
deleted file mode 100644 (file)
index f85d6a4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-SOURCE_FILE@[0; 35)
-  FN_DEF@[0; 34)
-    FN_KW@[0; 2) "fn"
-    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) " "
-        TYPE_BOUND_LIST@[10; 29)
-          TYPE_BOUND@[10; 29)
-            PATH_TYPE@[10; 29)
-              PATH@[10; 29)
-                PATH_SEGMENT@[10; 29)
-                  NAME_REF@[10; 15)
-                    IDENT@[10; 15) "FnMut"
-                  PARAM_LIST@[15; 29)
-                    L_PAREN@[15; 16) "("
-                    PARAM@[16; 28)
-                      REFERENCE_TYPE@[16; 28)
-                        AMP@[16; 17) "&"
-                        MUT_KW@[17; 20) "mut"
-                        WHITESPACE@[20; 21) " "
-                        PATH_TYPE@[21; 28)
-                          PATH@[21; 28)
-                            PATH_SEGMENT@[21; 28)
-                              NAME_REF@[21; 24)
-                                IDENT@[21; 24) "Foo"
-                              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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.rs
deleted file mode 100644 (file)
index cb66bad..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type T = (i32,);
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt
deleted file mode 100644 (file)
index c7b4e61..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-SOURCE_FILE@[0; 17)
-  TYPE_ALIAS_DEF@[0; 16)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    TUPLE_TYPE@[9; 15)
-      L_PAREN@[9; 10) "("
-      PATH_TYPE@[10; 13)
-        PATH@[10; 13)
-          PATH_SEGMENT@[10; 13)
-            NAME_REF@[10; 13)
-              IDENT@[10; 13) "i32"
-      COMMA@[13; 14) ","
-      R_PAREN@[14; 15) ")"
-    SEMI@[15; 16) ";"
-  WHITESPACE@[16; 17) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.rs
deleted file mode 100644 (file)
index 9cd6c57..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unsafe default impl Foo {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt
deleted file mode 100644 (file)
index 8f3dcaf..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SOURCE_FILE@[0; 27)
-  IMPL_BLOCK@[0; 26)
-    UNSAFE_KW@[0; 6) "unsafe"
-    WHITESPACE@[6; 7) " "
-    DEFAULT_KW@[7; 14) "default"
-    WHITESPACE@[14; 15) " "
-    IMPL_KW@[15; 19) "impl"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs
deleted file mode 100644 (file)
index 4bb0f63..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-fn foo() -> Box<T + 'f> {}
-fn foo() -> Box<dyn T + 'f> {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt
deleted file mode 100644 (file)
index bb948c8..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-SOURCE_FILE@[0; 58)
-  FN_DEF@[0; 26)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    RET_TYPE@[9; 23)
-      THIN_ARROW@[9; 11) "->"
-      WHITESPACE@[11; 12) " "
-      PATH_TYPE@[12; 23)
-        PATH@[12; 23)
-          PATH_SEGMENT@[12; 23)
-            NAME_REF@[12; 15)
-              IDENT@[12; 15) "Box"
-            TYPE_ARG_LIST@[15; 23)
-              L_ANGLE@[15; 16) "<"
-              TYPE_ARG@[16; 22)
-                DYN_TRAIT_TYPE@[16; 22)
-                  TYPE_BOUND_LIST@[16; 22)
-                    TYPE_BOUND@[16; 17)
-                      PATH_TYPE@[16; 17)
-                        PATH@[16; 17)
-                          PATH_SEGMENT@[16; 17)
-                            NAME_REF@[16; 17)
-                              IDENT@[16; 17) "T"
-                    WHITESPACE@[17; 18) " "
-                    PLUS@[18; 19) "+"
-                    WHITESPACE@[19; 20) " "
-                    TYPE_BOUND@[20; 22)
-                      LIFETIME@[20; 22) "\'f"
-              R_ANGLE@[22; 23) ">"
-    WHITESPACE@[23; 24) " "
-    BLOCK@[24; 26)
-      L_CURLY@[24; 25) "{"
-      R_CURLY@[25; 26) "}"
-  WHITESPACE@[26; 27) "\n"
-  FN_DEF@[27; 57)
-    FN_KW@[27; 29) "fn"
-    WHITESPACE@[29; 30) " "
-    NAME@[30; 33)
-      IDENT@[30; 33) "foo"
-    PARAM_LIST@[33; 35)
-      L_PAREN@[33; 34) "("
-      R_PAREN@[34; 35) ")"
-    WHITESPACE@[35; 36) " "
-    RET_TYPE@[36; 54)
-      THIN_ARROW@[36; 38) "->"
-      WHITESPACE@[38; 39) " "
-      PATH_TYPE@[39; 54)
-        PATH@[39; 54)
-          PATH_SEGMENT@[39; 54)
-            NAME_REF@[39; 42)
-              IDENT@[39; 42) "Box"
-            TYPE_ARG_LIST@[42; 54)
-              L_ANGLE@[42; 43) "<"
-              TYPE_ARG@[43; 53)
-                DYN_TRAIT_TYPE@[43; 53)
-                  DYN_KW@[43; 46) "dyn"
-                  WHITESPACE@[46; 47) " "
-                  TYPE_BOUND_LIST@[47; 53)
-                    TYPE_BOUND@[47; 48)
-                      PATH_TYPE@[47; 48)
-                        PATH@[47; 48)
-                          PATH_SEGMENT@[47; 48)
-                            NAME_REF@[47; 48)
-                              IDENT@[47; 48) "T"
-                    WHITESPACE@[48; 49) " "
-                    PLUS@[49; 50) "+"
-                    WHITESPACE@[50; 51) " "
-                    TYPE_BOUND@[51; 53)
-                      LIFETIME@[51; 53) "\'f"
-              R_ANGLE@[53; 54) ">"
-    WHITESPACE@[54; 55) " "
-    BLOCK@[55; 57)
-      L_CURLY@[55; 56) "{"
-      R_CURLY@[56; 57) "}"
-  WHITESPACE@[57; 58) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.rs
deleted file mode 100644 (file)
index c9f74f7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-trait T { fn foo(); }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt
deleted file mode 100644 (file)
index 19f961e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE@[0; 22)
-  TRAIT_DEF@[0; 21)
-    TRAIT_KW@[0; 5) "trait"
-    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) "fn"
-        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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.rs
deleted file mode 100644 (file)
index c039cf7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type T = ();
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt
deleted file mode 100644 (file)
index 6a469f8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-SOURCE_FILE@[0; 13)
-  TYPE_ALIAS_DEF@[0; 12)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    TUPLE_TYPE@[9; 11)
-      L_PAREN@[9; 10) "("
-      R_PAREN@[10; 11) ")"
-    SEMI@[11; 12) ";"
-  WHITESPACE@[12; 13) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.rs
deleted file mode 100644 (file)
index bf94f32..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-type A = Foo;
-type B = ::Foo;
-type C = self::Foo;
-type D = super::Foo;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt
deleted file mode 100644 (file)
index ee55ee2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-SOURCE_FILE@[0; 71)
-  TYPE_ALIAS_DEF@[0; 13)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    PATH_TYPE@[9; 12)
-      PATH@[9; 12)
-        PATH_SEGMENT@[9; 12)
-          NAME_REF@[9; 12)
-            IDENT@[9; 12) "Foo"
-    SEMI@[12; 13) ";"
-  WHITESPACE@[13; 14) "\n"
-  TYPE_ALIAS_DEF@[14; 29)
-    TYPE_KW@[14; 18) "type"
-    WHITESPACE@[18; 19) " "
-    NAME@[19; 20)
-      IDENT@[19; 20) "B"
-    WHITESPACE@[20; 21) " "
-    EQ@[21; 22) "="
-    WHITESPACE@[22; 23) " "
-    PATH_TYPE@[23; 28)
-      PATH@[23; 28)
-        PATH_SEGMENT@[23; 28)
-          COLONCOLON@[23; 25) "::"
-          NAME_REF@[25; 28)
-            IDENT@[25; 28) "Foo"
-    SEMI@[28; 29) ";"
-  WHITESPACE@[29; 30) "\n"
-  TYPE_ALIAS_DEF@[30; 49)
-    TYPE_KW@[30; 34) "type"
-    WHITESPACE@[34; 35) " "
-    NAME@[35; 36)
-      IDENT@[35; 36) "C"
-    WHITESPACE@[36; 37) " "
-    EQ@[37; 38) "="
-    WHITESPACE@[38; 39) " "
-    PATH_TYPE@[39; 48)
-      PATH@[39; 48)
-        PATH@[39; 43)
-          PATH_SEGMENT@[39; 43)
-            SELF_KW@[39; 43) "self"
-        COLONCOLON@[43; 45) "::"
-        PATH_SEGMENT@[45; 48)
-          NAME_REF@[45; 48)
-            IDENT@[45; 48) "Foo"
-    SEMI@[48; 49) ";"
-  WHITESPACE@[49; 50) "\n"
-  TYPE_ALIAS_DEF@[50; 70)
-    TYPE_KW@[50; 54) "type"
-    WHITESPACE@[54; 55) " "
-    NAME@[55; 56)
-      IDENT@[55; 56) "D"
-    WHITESPACE@[56; 57) " "
-    EQ@[57; 58) "="
-    WHITESPACE@[58; 59) " "
-    PATH_TYPE@[59; 69)
-      PATH@[59; 69)
-        PATH@[59; 64)
-          PATH_SEGMENT@[59; 64)
-            SUPER_KW@[59; 64) "super"
-        COLONCOLON@[64; 66) "::"
-        PATH_SEGMENT@[66; 69)
-          NAME_REF@[66; 69)
-            IDENT@[66; 69) "Foo"
-    SEMI@[69; 70) ";"
-  WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.rs
deleted file mode 100644 (file)
index 333ebab..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    let _ = a;
-    let _ = a::b;
-    let _ = ::a::<b>;
-    let _ = format!();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt
deleted file mode 100644 (file)
index bc4b97c..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-SOURCE_FILE@[0; 91)
-  FN_DEF@[0; 90)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 90)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 25)
-        LET_KW@[15; 18) "let"
-        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) "\n    "
-      LET_STMT@[30; 43)
-        LET_KW@[30; 33) "let"
-        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) "\n    "
-      LET_STMT@[48; 65)
-        LET_KW@[48; 51) "let"
-        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) "\n    "
-      LET_STMT@[70; 88)
-        LET_KW@[70; 73) "let"
-        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) "\n"
-      R_CURLY@[89; 90) "}"
-  WHITESPACE@[90; 91) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.rs
deleted file mode 100644 (file)
index 4744d8a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-struct S {
-    #[serde(with = "url_serde")]
-    pub uri: Uri,
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt
deleted file mode 100644 (file)
index f214d1d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE@[0; 64)
-  STRUCT_DEF@[0; 63)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n    "
-      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) "\"url_serde\""
-              R_PAREN@[41; 42) ")"
-            R_BRACK@[42; 43) "]"
-        WHITESPACE@[43; 48) "\n    "
-        VISIBILITY@[48; 51)
-          PUB_KW@[48; 51) "pub"
-        WHITESPACE@[51; 52) " "
-        NAME@[52; 55)
-          IDENT@[52; 55) "uri"
-        COLON@[55; 56) ":"
-        WHITESPACE@[56; 57) " "
-        PATH_TYPE@[57; 60)
-          PATH@[57; 60)
-            PATH_SEGMENT@[57; 60)
-              NAME_REF@[57; 60)
-                IDENT@[57; 60) "Uri"
-      COMMA@[60; 61) ","
-      WHITESPACE@[61; 62) "\n"
-      R_CURLY@[62; 63) "}"
-  WHITESPACE@[63; 64) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.rs
deleted file mode 100644 (file)
index 6dfd67b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-fn main() {
-    match () {
-        -1 => (),
-        92 => (),
-        'c' => (),
-        "hello" => (),
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt
deleted file mode 100644 (file)
index ab5dad4..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-SOURCE_FILE@[0; 113)
-  FN_DEF@[0; 112)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 112)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      MATCH_EXPR@[16; 110)
-        MATCH_KW@[16; 21) "match"
-        WHITESPACE@[21; 22) " "
-        TUPLE_EXPR@[22; 24)
-          L_PAREN@[22; 23) "("
-          R_PAREN@[23; 24) ")"
-        WHITESPACE@[24; 25) " "
-        MATCH_ARM_LIST@[25; 110)
-          L_CURLY@[25; 26) "{"
-          WHITESPACE@[26; 35) "\n        "
-          MATCH_ARM@[35; 43)
-            LITERAL_PAT@[35; 37)
-              MINUS@[35; 36) "-"
-              LITERAL@[36; 37)
-                INT_NUMBER@[36; 37) "1"
-            WHITESPACE@[37; 38) " "
-            FAT_ARROW@[38; 40) "=>"
-            WHITESPACE@[40; 41) " "
-            TUPLE_EXPR@[41; 43)
-              L_PAREN@[41; 42) "("
-              R_PAREN@[42; 43) ")"
-          COMMA@[43; 44) ","
-          WHITESPACE@[44; 53) "\n        "
-          MATCH_ARM@[53; 61)
-            LITERAL_PAT@[53; 55)
-              LITERAL@[53; 55)
-                INT_NUMBER@[53; 55) "92"
-            WHITESPACE@[55; 56) " "
-            FAT_ARROW@[56; 58) "=>"
-            WHITESPACE@[58; 59) " "
-            TUPLE_EXPR@[59; 61)
-              L_PAREN@[59; 60) "("
-              R_PAREN@[60; 61) ")"
-          COMMA@[61; 62) ","
-          WHITESPACE@[62; 71) "\n        "
-          MATCH_ARM@[71; 80)
-            LITERAL_PAT@[71; 74)
-              LITERAL@[71; 74)
-                CHAR@[71; 74) "\'c\'"
-            WHITESPACE@[74; 75) " "
-            FAT_ARROW@[75; 77) "=>"
-            WHITESPACE@[77; 78) " "
-            TUPLE_EXPR@[78; 80)
-              L_PAREN@[78; 79) "("
-              R_PAREN@[79; 80) ")"
-          COMMA@[80; 81) ","
-          WHITESPACE@[81; 90) "\n        "
-          MATCH_ARM@[90; 103)
-            LITERAL_PAT@[90; 97)
-              LITERAL@[90; 97)
-                STRING@[90; 97) "\"hello\""
-            WHITESPACE@[97; 98) " "
-            FAT_ARROW@[98; 100) "=>"
-            WHITESPACE@[100; 101) " "
-            TUPLE_EXPR@[101; 103)
-              L_PAREN@[101; 102) "("
-              R_PAREN@[102; 103) ")"
-          COMMA@[103; 104) ","
-          WHITESPACE@[104; 109) "\n    "
-          R_CURLY@[109; 110) "}"
-      WHITESPACE@[110; 111) "\n"
-      R_CURLY@[111; 112) "}"
-  WHITESPACE@[112; 113) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.rs
deleted file mode 100644 (file)
index 19d7e57..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-fn foo()
-where
-   'a: 'b + 'c,
-   T: Clone + Copy + 'static,
-   Iterator::Item: 'a,
-   <T as Iterator>::Item: 'a
-{}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt
deleted file mode 100644 (file)
index c86a0db..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-SOURCE_FILE@[0; 116)
-  FN_DEF@[0; 115)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) "\n"
-    WHERE_CLAUSE@[9; 112)
-      WHERE_KW@[9; 14) "where"
-      WHITESPACE@[14; 18) "\n   "
-      WHERE_PRED@[18; 29)
-        LIFETIME@[18; 20) "\'a"
-        COLON@[20; 21) ":"
-        WHITESPACE@[21; 22) " "
-        TYPE_BOUND_LIST@[22; 29)
-          TYPE_BOUND@[22; 24)
-            LIFETIME@[22; 24) "\'b"
-          WHITESPACE@[24; 25) " "
-          PLUS@[25; 26) "+"
-          WHITESPACE@[26; 27) " "
-          TYPE_BOUND@[27; 29)
-            LIFETIME@[27; 29) "\'c"
-      COMMA@[29; 30) ","
-      WHITESPACE@[30; 34) "\n   "
-      WHERE_PRED@[34; 59)
-        PATH_TYPE@[34; 35)
-          PATH@[34; 35)
-            PATH_SEGMENT@[34; 35)
-              NAME_REF@[34; 35)
-                IDENT@[34; 35) "T"
-        COLON@[35; 36) ":"
-        WHITESPACE@[36; 37) " "
-        TYPE_BOUND_LIST@[37; 59)
-          TYPE_BOUND@[37; 42)
-            PATH_TYPE@[37; 42)
-              PATH@[37; 42)
-                PATH_SEGMENT@[37; 42)
-                  NAME_REF@[37; 42)
-                    IDENT@[37; 42) "Clone"
-          WHITESPACE@[42; 43) " "
-          PLUS@[43; 44) "+"
-          WHITESPACE@[44; 45) " "
-          TYPE_BOUND@[45; 49)
-            PATH_TYPE@[45; 49)
-              PATH@[45; 49)
-                PATH_SEGMENT@[45; 49)
-                  NAME_REF@[45; 49)
-                    IDENT@[45; 49) "Copy"
-          WHITESPACE@[49; 50) " "
-          PLUS@[50; 51) "+"
-          WHITESPACE@[51; 52) " "
-          TYPE_BOUND@[52; 59)
-            LIFETIME@[52; 59) "\'static"
-      COMMA@[59; 60) ","
-      WHITESPACE@[60; 64) "\n   "
-      WHERE_PRED@[64; 82)
-        PATH_TYPE@[64; 78)
-          PATH@[64; 78)
-            PATH@[64; 72)
-              PATH_SEGMENT@[64; 72)
-                NAME_REF@[64; 72)
-                  IDENT@[64; 72) "Iterator"
-            COLONCOLON@[72; 74) "::"
-            PATH_SEGMENT@[74; 78)
-              NAME_REF@[74; 78)
-                IDENT@[74; 78) "Item"
-        COLON@[78; 79) ":"
-        WHITESPACE@[79; 80) " "
-        TYPE_BOUND_LIST@[80; 82)
-          TYPE_BOUND@[80; 82)
-            LIFETIME@[80; 82) "\'a"
-      COMMA@[82; 83) ","
-      WHITESPACE@[83; 87) "\n   "
-      WHERE_PRED@[87; 112)
-        PATH_TYPE@[87; 108)
-          PATH@[87; 108)
-            PATH@[87; 102)
-              PATH_SEGMENT@[87; 102)
-                L_ANGLE@[87; 88) "<"
-                PATH_TYPE@[88; 89)
-                  PATH@[88; 89)
-                    PATH_SEGMENT@[88; 89)
-                      NAME_REF@[88; 89)
-                        IDENT@[88; 89) "T"
-                WHITESPACE@[89; 90) " "
-                AS_KW@[90; 92) "as"
-                WHITESPACE@[92; 93) " "
-                PATH_TYPE@[93; 101)
-                  PATH@[93; 101)
-                    PATH_SEGMENT@[93; 101)
-                      NAME_REF@[93; 101)
-                        IDENT@[93; 101) "Iterator"
-                R_ANGLE@[101; 102) ">"
-            COLONCOLON@[102; 104) "::"
-            PATH_SEGMENT@[104; 108)
-              NAME_REF@[104; 108)
-                IDENT@[104; 108) "Item"
-        COLON@[108; 109) ":"
-        WHITESPACE@[109; 110) " "
-        TYPE_BOUND_LIST@[110; 112)
-          TYPE_BOUND@[110; 112)
-            LIFETIME@[110; 112) "\'a"
-    WHITESPACE@[112; 113) "\n"
-    BLOCK@[113; 115)
-      L_CURLY@[113; 114) "{"
-      R_CURLY@[114; 115) "}"
-  WHITESPACE@[115; 116) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.rs
deleted file mode 100644 (file)
index 8c84d9c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-const fn foo() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt
deleted file mode 100644 (file)
index 7a8b819..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 18)
-  FN_DEF@[0; 17)
-    CONST_KW@[0; 5) "const"
-    WHITESPACE@[5; 6) " "
-    FN_KW@[6; 8) "fn"
-    WHITESPACE@[8; 9) " "
-    NAME@[9; 12)
-      IDENT@[9; 12) "foo"
-    PARAM_LIST@[12; 14)
-      L_PAREN@[12; 13) "("
-      R_PAREN@[13; 14) ")"
-    WHITESPACE@[14; 15) " "
-    BLOCK@[15; 17)
-      L_CURLY@[15; 16) "{"
-      R_CURLY@[16; 17) "}"
-  WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.rs
deleted file mode 100644 (file)
index c12ab6f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-fn main() {
-    match 92 {
-        0 ... 100 => (),
-        101 ..= 200 => (),
-        200 .. 301=> (),
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt
deleted file mode 100644 (file)
index 1b7e9b9..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-SOURCE_FILE@[0; 112)
-  FN_DEF@[0; 111)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 111)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      MATCH_EXPR@[16; 109)
-        MATCH_KW@[16; 21) "match"
-        WHITESPACE@[21; 22) " "
-        LITERAL@[22; 24)
-          INT_NUMBER@[22; 24) "92"
-        WHITESPACE@[24; 25) " "
-        MATCH_ARM_LIST@[25; 109)
-          L_CURLY@[25; 26) "{"
-          WHITESPACE@[26; 35) "\n        "
-          MATCH_ARM@[35; 50)
-            RANGE_PAT@[35; 44)
-              LITERAL_PAT@[35; 36)
-                LITERAL@[35; 36)
-                  INT_NUMBER@[35; 36) "0"
-              WHITESPACE@[36; 37) " "
-              DOTDOTDOT@[37; 40) "..."
-              WHITESPACE@[40; 41) " "
-              LITERAL_PAT@[41; 44)
-                LITERAL@[41; 44)
-                  INT_NUMBER@[41; 44) "100"
-            WHITESPACE@[44; 45) " "
-            FAT_ARROW@[45; 47) "=>"
-            WHITESPACE@[47; 48) " "
-            TUPLE_EXPR@[48; 50)
-              L_PAREN@[48; 49) "("
-              R_PAREN@[49; 50) ")"
-          COMMA@[50; 51) ","
-          WHITESPACE@[51; 60) "\n        "
-          MATCH_ARM@[60; 77)
-            RANGE_PAT@[60; 71)
-              LITERAL_PAT@[60; 63)
-                LITERAL@[60; 63)
-                  INT_NUMBER@[60; 63) "101"
-              WHITESPACE@[63; 64) " "
-              DOTDOTEQ@[64; 67) "..="
-              WHITESPACE@[67; 68) " "
-              LITERAL_PAT@[68; 71)
-                LITERAL@[68; 71)
-                  INT_NUMBER@[68; 71) "200"
-            WHITESPACE@[71; 72) " "
-            FAT_ARROW@[72; 74) "=>"
-            WHITESPACE@[74; 75) " "
-            TUPLE_EXPR@[75; 77)
-              L_PAREN@[75; 76) "("
-              R_PAREN@[76; 77) ")"
-          COMMA@[77; 78) ","
-          WHITESPACE@[78; 87) "\n        "
-          MATCH_ARM@[87; 102)
-            RANGE_PAT@[87; 97)
-              LITERAL_PAT@[87; 90)
-                LITERAL@[87; 90)
-                  INT_NUMBER@[87; 90) "200"
-              WHITESPACE@[90; 91) " "
-              DOTDOT@[91; 93) ".."
-              WHITESPACE@[93; 94) " "
-              LITERAL_PAT@[94; 97)
-                LITERAL@[94; 97)
-                  INT_NUMBER@[94; 97) "301"
-            FAT_ARROW@[97; 99) "=>"
-            WHITESPACE@[99; 100) " "
-            TUPLE_EXPR@[100; 102)
-              L_PAREN@[100; 101) "("
-              R_PAREN@[101; 102) ")"
-          COMMA@[102; 103) ","
-          WHITESPACE@[103; 108) "\n    "
-          R_CURLY@[108; 109) "}"
-      WHITESPACE@[109; 110) "\n"
-      R_CURLY@[110; 111) "}"
-  WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.rs
deleted file mode 100644 (file)
index 1f25d57..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-fn foo() {
-    match () {
-        _ => (),
-        _ => {}
-        _ => ()
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt
deleted file mode 100644 (file)
index 9491171..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-SOURCE_FILE@[0; 83)
-  FN_DEF@[0; 82)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 82)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      MATCH_EXPR@[15; 80)
-        MATCH_KW@[15; 20) "match"
-        WHITESPACE@[20; 21) " "
-        TUPLE_EXPR@[21; 23)
-          L_PAREN@[21; 22) "("
-          R_PAREN@[22; 23) ")"
-        WHITESPACE@[23; 24) " "
-        MATCH_ARM_LIST@[24; 80)
-          L_CURLY@[24; 25) "{"
-          WHITESPACE@[25; 34) "\n        "
-          MATCH_ARM@[34; 41)
-            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) "\n        "
-          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) "\n        "
-          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) "\n    "
-          R_CURLY@[79; 80) "}"
-      WHITESPACE@[80; 81) "\n"
-      R_CURLY@[81; 82) "}"
-  WHITESPACE@[82; 83) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.rs
deleted file mode 100644 (file)
index 49af74e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-extern crate foo;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt
deleted file mode 100644 (file)
index 7667201..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-SOURCE_FILE@[0; 18)
-  EXTERN_CRATE_ITEM@[0; 17)
-    EXTERN_KW@[0; 6) "extern"
-    WHITESPACE@[6; 7) " "
-    CRATE_KW@[7; 12) "crate"
-    WHITESPACE@[12; 13) " "
-    NAME_REF@[13; 16)
-      IDENT@[13; 16) "foo"
-    SEMI@[16; 17) ";"
-  WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.rs
deleted file mode 100644 (file)
index eb711f6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    S {};
-    S { x, y: 32, };
-    S { x, y: 32, ..Default::default() };
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt
deleted file mode 100644 (file)
index 94d1bfe..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-SOURCE_FILE@[0; 86)
-  FN_DEF@[0; 85)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 85)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      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) "\n    "
-      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) "\n    "
-      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) "\n"
-      R_CURLY@[84; 85) "}"
-  WHITESPACE@[85; 86) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.rs
deleted file mode 100644 (file)
index 24a15c5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {}
-macro_rules! foo {}
-foo::bar!();
-super::baz! {}
-struct S;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt
deleted file mode 100644 (file)
index db2b9a5..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-SOURCE_FILE@[0; 70)
-  FN_DEF@[0; 11)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 11)
-      L_CURLY@[9; 10) "{"
-      R_CURLY@[10; 11) "}"
-  WHITESPACE@[11; 12) "\n"
-  MACRO_CALL@[12; 31)
-    PATH@[12; 23)
-      PATH_SEGMENT@[12; 23)
-        NAME_REF@[12; 23)
-          IDENT@[12; 23) "macro_rules"
-    EXCL@[23; 24) "!"
-    WHITESPACE@[24; 25) " "
-    NAME@[25; 28)
-      IDENT@[25; 28) "foo"
-    WHITESPACE@[28; 29) " "
-    TOKEN_TREE@[29; 31)
-      L_CURLY@[29; 30) "{"
-      R_CURLY@[30; 31) "}"
-  WHITESPACE@[31; 32) "\n"
-  MACRO_CALL@[32; 44)
-    PATH@[32; 40)
-      PATH@[32; 35)
-        PATH_SEGMENT@[32; 35)
-          NAME_REF@[32; 35)
-            IDENT@[32; 35) "foo"
-      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) "\n"
-  MACRO_CALL@[45; 59)
-    PATH@[45; 55)
-      PATH@[45; 50)
-        PATH_SEGMENT@[45; 50)
-          SUPER_KW@[45; 50) "super"
-      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) "\n"
-  STRUCT_DEF@[60; 69)
-    STRUCT_KW@[60; 66) "struct"
-    WHITESPACE@[66; 67) " "
-    NAME@[67; 68)
-      IDENT@[67; 68) "S"
-    SEMI@[68; 69) ";"
-  WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.rs
deleted file mode 100644 (file)
index b7527c8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-impl !Send for X {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt
deleted file mode 100644 (file)
index dfff947..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-SOURCE_FILE@[0; 20)
-  IMPL_BLOCK@[0; 19)
-    IMPL_KW@[0; 4) "impl"
-    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) "for"
-    WHITESPACE@[14; 15) " "
-    PATH_TYPE@[15; 16)
-      PATH@[15; 16)
-        PATH_SEGMENT@[15; 16)
-          NAME_REF@[15; 16)
-            IDENT@[15; 16) "X"
-    WHITESPACE@[16; 17) " "
-    ITEM_LIST@[17; 19)
-      L_CURLY@[17; 18) "{"
-      R_CURLY@[18; 19) "}"
-  WHITESPACE@[19; 20) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.rs
deleted file mode 100644 (file)
index 4b0d9af..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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/ok/0064_if_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.txt
deleted file mode 100644 (file)
index 554bda6..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-SOURCE_FILE@[0; 107)
-  FN_DEF@[0; 106)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 106)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 26)
-        IF_EXPR@[15; 25)
-          IF_KW@[15; 17) "if"
-          WHITESPACE@[17; 18) " "
-          CONDITION@[18; 22)
-            LITERAL@[18; 22)
-              TRUE_KW@[18; 22) "true"
-          WHITESPACE@[22; 23) " "
-          BLOCK@[23; 25)
-            L_CURLY@[23; 24) "{"
-            R_CURLY@[24; 25) "}"
-        SEMI@[25; 26) ";"
-      WHITESPACE@[26; 31) "\n    "
-      EXPR_STMT@[31; 50)
-        IF_EXPR@[31; 49)
-          IF_KW@[31; 33) "if"
-          WHITESPACE@[33; 34) " "
-          CONDITION@[34; 38)
-            LITERAL@[34; 38)
-              TRUE_KW@[34; 38) "true"
-          WHITESPACE@[38; 39) " "
-          BLOCK@[39; 41)
-            L_CURLY@[39; 40) "{"
-            R_CURLY@[40; 41) "}"
-          WHITESPACE@[41; 42) " "
-          ELSE_KW@[42; 46) "else"
-          WHITESPACE@[46; 47) " "
-          BLOCK@[47; 49)
-            L_CURLY@[47; 48) "{"
-            R_CURLY@[48; 49) "}"
-        SEMI@[49; 50) ";"
-      WHITESPACE@[50; 55) "\n    "
-      EXPR_STMT@[55; 91)
-        IF_EXPR@[55; 90)
-          IF_KW@[55; 57) "if"
-          WHITESPACE@[57; 58) " "
-          CONDITION@[58; 62)
-            LITERAL@[58; 62)
-              TRUE_KW@[58; 62) "true"
-          WHITESPACE@[62; 63) " "
-          BLOCK@[63; 65)
-            L_CURLY@[63; 64) "{"
-            R_CURLY@[64; 65) "}"
-          WHITESPACE@[65; 66) " "
-          ELSE_KW@[66; 70) "else"
-          WHITESPACE@[70; 71) " "
-          IF_EXPR@[71; 90)
-            IF_KW@[71; 73) "if"
-            WHITESPACE@[73; 74) " "
-            CONDITION@[74; 79)
-              LITERAL@[74; 79)
-                FALSE_KW@[74; 79) "false"
-            WHITESPACE@[79; 80) " "
-            BLOCK@[80; 82)
-              L_CURLY@[80; 81) "{"
-              R_CURLY@[81; 82) "}"
-            WHITESPACE@[82; 83) " "
-            ELSE_KW@[83; 87) "else"
-            WHITESPACE@[87; 88) " "
-            BLOCK@[88; 90)
-              L_CURLY@[88; 89) "{"
-              R_CURLY@[89; 90) "}"
-        SEMI@[90; 91) ";"
-      WHITESPACE@[91; 96) "\n    "
-      EXPR_STMT@[96; 104)
-        IF_EXPR@[96; 103)
-          IF_KW@[96; 98) "if"
-          WHITESPACE@[98; 99) " "
-          CONDITION@[99; 100)
-            PATH_EXPR@[99; 100)
-              PATH@[99; 100)
-                PATH_SEGMENT@[99; 100)
-                  NAME_REF@[99; 100)
-                    IDENT@[99; 100) "S"
-          WHITESPACE@[100; 101) " "
-          BLOCK@[101; 103)
-            L_CURLY@[101; 102) "{"
-            R_CURLY@[102; 103) "}"
-        SEMI@[103; 104) ";"
-      WHITESPACE@[104; 105) "\n"
-      R_CURLY@[105; 106) "}"
-  WHITESPACE@[106; 107) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.rs
deleted file mode 100644 (file)
index c3ecabb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type A = dyn Iterator<Item=Foo<'a>> + 'a;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt
deleted file mode 100644 (file)
index 2ee0dc1..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE@[0; 42)
-  TYPE_ALIAS_DEF@[0; 41)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    DYN_TRAIT_TYPE@[9; 40)
-      DYN_KW@[9; 12) "dyn"
-      WHITESPACE@[12; 13) " "
-      TYPE_BOUND_LIST@[13; 40)
-        TYPE_BOUND@[13; 35)
-          PATH_TYPE@[13; 35)
-            PATH@[13; 35)
-              PATH_SEGMENT@[13; 35)
-                NAME_REF@[13; 21)
-                  IDENT@[13; 21) "Iterator"
-                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) " "
-        TYPE_BOUND@[38; 40)
-          LIFETIME@[38; 40) "\'a"
-    SEMI@[40; 41) ";"
-  WHITESPACE@[41; 42) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.rs
deleted file mode 100644 (file)
index 9e009e2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-fn foo() {
-    match () {
-        _ => (),
-        _ if Test > Test{field: 0} => (),
-        X | Y if Z => (),
-        | X | Y if Z => (),
-        | X => (),
-    };
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt
deleted file mode 100644 (file)
index 041e717..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-SOURCE_FILE@[0; 167)
-  FN_DEF@[0; 166)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 166)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 164)
-        MATCH_EXPR@[15; 163)
-          MATCH_KW@[15; 20) "match"
-          WHITESPACE@[20; 21) " "
-          TUPLE_EXPR@[21; 23)
-            L_PAREN@[21; 22) "("
-            R_PAREN@[22; 23) ")"
-          WHITESPACE@[23; 24) " "
-          MATCH_ARM_LIST@[24; 163)
-            L_CURLY@[24; 25) "{"
-            WHITESPACE@[25; 34) "\n        "
-            MATCH_ARM@[34; 41)
-              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) "\n        "
-            MATCH_ARM@[51; 83)
-              PLACEHOLDER_PAT@[51; 52)
-                UNDERSCORE@[51; 52) "_"
-              WHITESPACE@[52; 53) " "
-              MATCH_GUARD@[53; 77)
-                IF_KW@[53; 55) "if"
-                WHITESPACE@[55; 56) " "
-                BIN_EXPR@[56; 77)
-                  PATH_EXPR@[56; 60)
-                    PATH@[56; 60)
-                      PATH_SEGMENT@[56; 60)
-                        NAME_REF@[56; 60)
-                          IDENT@[56; 60) "Test"
-                  WHITESPACE@[60; 61) " "
-                  R_ANGLE@[61; 62) ">"
-                  WHITESPACE@[62; 63) " "
-                  STRUCT_LIT@[63; 77)
-                    PATH@[63; 67)
-                      PATH_SEGMENT@[63; 67)
-                        NAME_REF@[63; 67)
-                          IDENT@[63; 67) "Test"
-                    NAMED_FIELD_LIST@[67; 77)
-                      L_CURLY@[67; 68) "{"
-                      NAMED_FIELD@[68; 76)
-                        NAME_REF@[68; 73)
-                          IDENT@[68; 73) "field"
-                        COLON@[73; 74) ":"
-                        WHITESPACE@[74; 75) " "
-                        LITERAL@[75; 76)
-                          INT_NUMBER@[75; 76) "0"
-                      R_CURLY@[76; 77) "}"
-              WHITESPACE@[77; 78) " "
-              FAT_ARROW@[78; 80) "=>"
-              WHITESPACE@[80; 81) " "
-              TUPLE_EXPR@[81; 83)
-                L_PAREN@[81; 82) "("
-                R_PAREN@[82; 83) ")"
-            COMMA@[83; 84) ","
-            WHITESPACE@[84; 93) "\n        "
-            MATCH_ARM@[93; 109)
-              BIND_PAT@[93; 94)
-                NAME@[93; 94)
-                  IDENT@[93; 94) "X"
-              WHITESPACE@[94; 95) " "
-              PIPE@[95; 96) "|"
-              WHITESPACE@[96; 97) " "
-              BIND_PAT@[97; 98)
-                NAME@[97; 98)
-                  IDENT@[97; 98) "Y"
-              WHITESPACE@[98; 99) " "
-              MATCH_GUARD@[99; 103)
-                IF_KW@[99; 101) "if"
-                WHITESPACE@[101; 102) " "
-                PATH_EXPR@[102; 103)
-                  PATH@[102; 103)
-                    PATH_SEGMENT@[102; 103)
-                      NAME_REF@[102; 103)
-                        IDENT@[102; 103) "Z"
-              WHITESPACE@[103; 104) " "
-              FAT_ARROW@[104; 106) "=>"
-              WHITESPACE@[106; 107) " "
-              TUPLE_EXPR@[107; 109)
-                L_PAREN@[107; 108) "("
-                R_PAREN@[108; 109) ")"
-            COMMA@[109; 110) ","
-            WHITESPACE@[110; 119) "\n        "
-            MATCH_ARM@[119; 137)
-              PIPE@[119; 120) "|"
-              WHITESPACE@[120; 121) " "
-              BIND_PAT@[121; 122)
-                NAME@[121; 122)
-                  IDENT@[121; 122) "X"
-              WHITESPACE@[122; 123) " "
-              PIPE@[123; 124) "|"
-              WHITESPACE@[124; 125) " "
-              BIND_PAT@[125; 126)
-                NAME@[125; 126)
-                  IDENT@[125; 126) "Y"
-              WHITESPACE@[126; 127) " "
-              MATCH_GUARD@[127; 131)
-                IF_KW@[127; 129) "if"
-                WHITESPACE@[129; 130) " "
-                PATH_EXPR@[130; 131)
-                  PATH@[130; 131)
-                    PATH_SEGMENT@[130; 131)
-                      NAME_REF@[130; 131)
-                        IDENT@[130; 131) "Z"
-              WHITESPACE@[131; 132) " "
-              FAT_ARROW@[132; 134) "=>"
-              WHITESPACE@[134; 135) " "
-              TUPLE_EXPR@[135; 137)
-                L_PAREN@[135; 136) "("
-                R_PAREN@[136; 137) ")"
-            COMMA@[137; 138) ","
-            WHITESPACE@[138; 147) "\n        "
-            MATCH_ARM@[147; 156)
-              PIPE@[147; 148) "|"
-              WHITESPACE@[148; 149) " "
-              BIND_PAT@[149; 150)
-                NAME@[149; 150)
-                  IDENT@[149; 150) "X"
-              WHITESPACE@[150; 151) " "
-              FAT_ARROW@[151; 153) "=>"
-              WHITESPACE@[153; 154) " "
-              TUPLE_EXPR@[154; 156)
-                L_PAREN@[154; 155) "("
-                R_PAREN@[155; 156) ")"
-            COMMA@[156; 157) ","
-            WHITESPACE@[157; 162) "\n    "
-            R_CURLY@[162; 163) "}"
-        SEMI@[163; 164) ";"
-      WHITESPACE@[164; 165) "\n"
-      R_CURLY@[165; 166) "}"
-  WHITESPACE@[166; 167) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.rs
deleted file mode 100644 (file)
index 1bbb593..0000000
+++ /dev/null
@@ -1 +0,0 @@
-use crate::foo;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt
deleted file mode 100644 (file)
index f2ba4e9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-SOURCE_FILE@[0; 16)
-  USE_ITEM@[0; 15)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 14)
-      PATH@[4; 14)
-        PATH@[4; 9)
-          PATH_SEGMENT@[4; 9)
-            CRATE_KW@[4; 9) "crate"
-        COLONCOLON@[9; 11) "::"
-        PATH_SEGMENT@[11; 14)
-          NAME_REF@[11; 14)
-            IDENT@[11; 14) "foo"
-    SEMI@[14; 15) ";"
-  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.rs
deleted file mode 100644 (file)
index b7dd610..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-union Foo {}
-union Foo {
-    a: i32,
-    b: f32,
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt
deleted file mode 100644 (file)
index 4b65331..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-SOURCE_FILE@[0; 51)
-  STRUCT_DEF@[0; 12)
-    UNION_KW@[0; 5) "union"
-    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) "\n"
-  STRUCT_DEF@[13; 50)
-    UNION_KW@[13; 18) "union"
-    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) "\n    "
-      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) "\n    "
-      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) "\n"
-      R_CURLY@[49; 50) "}"
-  WHITESPACE@[50; 51) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.rs
deleted file mode 100644 (file)
index c0a3d63..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-use crate::{Item};
-use self::{Item};
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt
deleted file mode 100644 (file)
index 86afc93..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-SOURCE_FILE@[0; 37)
-  USE_ITEM@[0; 18)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 17)
-      PATH@[4; 9)
-        PATH_SEGMENT@[4; 9)
-          CRATE_KW@[4; 9) "crate"
-      COLONCOLON@[9; 11) "::"
-      USE_TREE_LIST@[11; 17)
-        L_CURLY@[11; 12) "{"
-        USE_TREE@[12; 16)
-          PATH@[12; 16)
-            PATH_SEGMENT@[12; 16)
-              NAME_REF@[12; 16)
-                IDENT@[12; 16) "Item"
-        R_CURLY@[16; 17) "}"
-    SEMI@[17; 18) ";"
-  WHITESPACE@[18; 19) "\n"
-  USE_ITEM@[19; 36)
-    USE_KW@[19; 22) "use"
-    WHITESPACE@[22; 23) " "
-    USE_TREE@[23; 35)
-      PATH@[23; 27)
-        PATH_SEGMENT@[23; 27)
-          SELF_KW@[23; 27) "self"
-      COLONCOLON@[27; 29) "::"
-      USE_TREE_LIST@[29; 35)
-        L_CURLY@[29; 30) "{"
-        USE_TREE@[30; 34)
-          PATH@[30; 34)
-            PATH_SEGMENT@[30; 34)
-              NAME_REF@[30; 34)
-                IDENT@[30; 34) "Item"
-        R_CURLY@[34; 35) "}"
-    SEMI@[35; 36) ";"
-  WHITESPACE@[36; 37) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.rs
deleted file mode 100644 (file)
index 37b8437..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-    let _ = {1} & 2;
-    {1} &2;
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
deleted file mode 100644 (file)
index 40333d5..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-SOURCE_FILE@[0; 46)
-  FN_DEF@[0; 45)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 45)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 31)
-        LET_KW@[15; 18) "let"
-        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) "\n    "
-      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) "\n"
-      R_CURLY@[44; 45) "}"
-  WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.rs
deleted file mode 100644 (file)
index c9205df..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-    match () { };
-    match S {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt
deleted file mode 100644 (file)
index 658948c..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-SOURCE_FILE@[0; 47)
-  FN_DEF@[0; 46)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 46)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 28)
-        MATCH_EXPR@[15; 27)
-          MATCH_KW@[15; 20) "match"
-          WHITESPACE@[20; 21) " "
-          TUPLE_EXPR@[21; 23)
-            L_PAREN@[21; 22) "("
-            R_PAREN@[22; 23) ")"
-          WHITESPACE@[23; 24) " "
-          MATCH_ARM_LIST@[24; 27)
-            L_CURLY@[24; 25) "{"
-            WHITESPACE@[25; 26) " "
-            R_CURLY@[26; 27) "}"
-        SEMI@[27; 28) ";"
-      WHITESPACE@[28; 33) "\n    "
-      EXPR_STMT@[33; 44)
-        MATCH_EXPR@[33; 43)
-          MATCH_KW@[33; 38) "match"
-          WHITESPACE@[38; 39) " "
-          PATH_EXPR@[39; 40)
-            PATH@[39; 40)
-              PATH_SEGMENT@[39; 40)
-                NAME_REF@[39; 40)
-                  IDENT@[39; 40) "S"
-          WHITESPACE@[40; 41) " "
-          MATCH_ARM_LIST@[41; 43)
-            L_CURLY@[41; 42) "{"
-            R_CURLY@[42; 43) "}"
-        SEMI@[43; 44) ";"
-      WHITESPACE@[44; 45) "\n"
-      R_CURLY@[45; 46) "}"
-  WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.rs
deleted file mode 100644 (file)
index 5733666..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-    return;
-    return 92;
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt
deleted file mode 100644 (file)
index cd9e10b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE@[0; 40)
-  FN_DEF@[0; 39)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 39)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 22)
-        RETURN_EXPR@[15; 21)
-          RETURN_KW@[15; 21) "return"
-        SEMI@[21; 22) ";"
-      WHITESPACE@[22; 27) "\n    "
-      EXPR_STMT@[27; 37)
-        RETURN_EXPR@[27; 36)
-          RETURN_KW@[27; 33) "return"
-          WHITESPACE@[33; 34) " "
-          LITERAL@[34; 36)
-            INT_NUMBER@[34; 36) "92"
-        SEMI@[36; 37) ";"
-      WHITESPACE@[37; 38) "\n"
-      R_CURLY@[38; 39) "}"
-  WHITESPACE@[39; 40) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.rs
deleted file mode 100644 (file)
index defd110..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type Result<T> = ();
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt
deleted file mode 100644 (file)
index 2dd6db2..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-SOURCE_FILE@[0; 21)
-  TYPE_ALIAS_DEF@[0; 20)
-    TYPE_KW@[0; 4) "type"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.rs
deleted file mode 100644 (file)
index 2edd578..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-fn foo() {
-    match () {
-        _ => {}
-        () => {}
-        [] => {}
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
deleted file mode 100644 (file)
index 48af2f3..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-SOURCE_FILE@[0; 84)
-  FN_DEF@[0; 83)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 83)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      MATCH_EXPR@[15; 81)
-        MATCH_KW@[15; 20) "match"
-        WHITESPACE@[20; 21) " "
-        TUPLE_EXPR@[21; 23)
-          L_PAREN@[21; 22) "("
-          R_PAREN@[22; 23) ")"
-        WHITESPACE@[23; 24) " "
-        MATCH_ARM_LIST@[24; 81)
-          L_CURLY@[24; 25) "{"
-          WHITESPACE@[25; 34) "\n        "
-          MATCH_ARM@[34; 41)
-            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) "\n        "
-          MATCH_ARM@[50; 58)
-            TUPLE_PAT@[50; 52)
-              L_PAREN@[50; 51) "("
-              R_PAREN@[51; 52) ")"
-            WHITESPACE@[52; 53) " "
-            FAT_ARROW@[53; 55) "=>"
-            WHITESPACE@[55; 56) " "
-            BLOCK_EXPR@[56; 58)
-              BLOCK@[56; 58)
-                L_CURLY@[56; 57) "{"
-                R_CURLY@[57; 58) "}"
-          WHITESPACE@[58; 67) "\n        "
-          MATCH_ARM@[67; 75)
-            SLICE_PAT@[67; 69)
-              L_BRACK@[67; 68) "["
-              R_BRACK@[68; 69) "]"
-            WHITESPACE@[69; 70) " "
-            FAT_ARROW@[70; 72) "=>"
-            WHITESPACE@[72; 73) " "
-            BLOCK_EXPR@[73; 75)
-              BLOCK@[73; 75)
-                L_CURLY@[73; 74) "{"
-                R_CURLY@[74; 75) "}"
-          WHITESPACE@[75; 80) "\n    "
-          R_CURLY@[80; 81) "}"
-      WHITESPACE@[81; 82) "\n"
-      R_CURLY@[82; 83) "}"
-  WHITESPACE@[83; 84) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.rs
deleted file mode 100644 (file)
index 81f44c5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn a() {}
-fn b() { let _ = 1; }
-fn c() { 1; 2; }
-fn d() { 1; 2 }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt
deleted file mode 100644 (file)
index 3698359..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-SOURCE_FILE@[0; 65)
-  FN_DEF@[0; 9)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 4)
-      IDENT@[3; 4) "a"
-    PARAM_LIST@[4; 6)
-      L_PAREN@[4; 5) "("
-      R_PAREN@[5; 6) ")"
-    WHITESPACE@[6; 7) " "
-    BLOCK@[7; 9)
-      L_CURLY@[7; 8) "{"
-      R_CURLY@[8; 9) "}"
-  WHITESPACE@[9; 10) "\n"
-  FN_DEF@[10; 31)
-    FN_KW@[10; 12) "fn"
-    WHITESPACE@[12; 13) " "
-    NAME@[13; 14)
-      IDENT@[13; 14) "b"
-    PARAM_LIST@[14; 16)
-      L_PAREN@[14; 15) "("
-      R_PAREN@[15; 16) ")"
-    WHITESPACE@[16; 17) " "
-    BLOCK@[17; 31)
-      L_CURLY@[17; 18) "{"
-      WHITESPACE@[18; 19) " "
-      LET_STMT@[19; 29)
-        LET_KW@[19; 22) "let"
-        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) "\n"
-  FN_DEF@[32; 48)
-    FN_KW@[32; 34) "fn"
-    WHITESPACE@[34; 35) " "
-    NAME@[35; 36)
-      IDENT@[35; 36) "c"
-    PARAM_LIST@[36; 38)
-      L_PAREN@[36; 37) "("
-      R_PAREN@[37; 38) ")"
-    WHITESPACE@[38; 39) " "
-    BLOCK@[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) "\n"
-  FN_DEF@[49; 64)
-    FN_KW@[49; 51) "fn"
-    WHITESPACE@[51; 52) " "
-    NAME@[52; 53)
-      IDENT@[52; 53) "d"
-    PARAM_LIST@[53; 55)
-      L_PAREN@[53; 54) "("
-      R_PAREN@[54; 55) ")"
-    WHITESPACE@[55; 56) " "
-    BLOCK@[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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.rs
deleted file mode 100644 (file)
index f0920b2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo<T>() where T: Copy {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt
deleted file mode 100644 (file)
index 32979c5..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE@[0; 29)
-  FN_DEF@[0; 28)
-    FN_KW@[0; 2) "fn"
-    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) "where"
-      WHITESPACE@[17; 18) " "
-      WHERE_PRED@[18; 25)
-        PATH_TYPE@[18; 19)
-          PATH@[18; 19)
-            PATH_SEGMENT@[18; 19)
-              NAME_REF@[18; 19)
-                IDENT@[18; 19) "T"
-        COLON@[19; 20) ":"
-        WHITESPACE@[20; 21) " "
-        TYPE_BOUND_LIST@[21; 25)
-          TYPE_BOUND@[21; 25)
-            PATH_TYPE@[21; 25)
-              PATH@[21; 25)
-                PATH_SEGMENT@[21; 25)
-                  NAME_REF@[21; 25)
-                    IDENT@[21; 25) "Copy"
-    WHITESPACE@[25; 26) " "
-    BLOCK@[26; 28)
-      L_CURLY@[26; 27) "{"
-      R_CURLY@[27; 28) "}"
-  WHITESPACE@[28; 29) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.rs
deleted file mode 100644 (file)
index 8b74f7b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo() {
-    x?;
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt
deleted file mode 100644 (file)
index 72de14b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-SOURCE_FILE@[0; 21)
-  FN_DEF@[0; 20)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 20)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 18)
-        TRY_EXPR@[15; 17)
-          PATH_EXPR@[15; 16)
-            PATH@[15; 16)
-              PATH_SEGMENT@[15; 16)
-                NAME_REF@[15; 16)
-                  IDENT@[15; 16) "x"
-          QUESTION@[16; 17) "?"
-        SEMI@[17; 18) ";"
-      WHITESPACE@[18; 19) "\n"
-      R_CURLY@[19; 20) "}"
-  WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.rs
deleted file mode 100644 (file)
index 04c0344..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type Foo = Bar;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt
deleted file mode 100644 (file)
index 4bc0b18..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 16)
-  TYPE_ALIAS_DEF@[0; 15)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 8)
-      IDENT@[5; 8) "Foo"
-    WHITESPACE@[8; 9) " "
-    EQ@[9; 10) "="
-    WHITESPACE@[10; 11) " "
-    PATH_TYPE@[11; 14)
-      PATH@[11; 14)
-        PATH_SEGMENT@[11; 14)
-          NAME_REF@[11; 14)
-            IDENT@[11; 14) "Bar"
-    SEMI@[14; 15) ";"
-  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.rs
deleted file mode 100644 (file)
index d6337f6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-impl Foo {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt
deleted file mode 100644 (file)
index bda3435..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-SOURCE_FILE@[0; 12)
-  IMPL_BLOCK@[0; 11)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 8)
-      PATH@[5; 8)
-        PATH_SEGMENT@[5; 8)
-          NAME_REF@[5; 8)
-            IDENT@[5; 8) "Foo"
-    WHITESPACE@[8; 9) " "
-    ITEM_LIST@[9; 11)
-      L_CURLY@[9; 10) "{"
-      R_CURLY@[10; 11) "}"
-  WHITESPACE@[11; 12) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.rs
deleted file mode 100644 (file)
index c39fe8e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo() { let x = 1..; }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt
deleted file mode 100644 (file)
index 541add8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE@[0; 26)
-  FN_DEF@[0; 25)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 25)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) " "
-      LET_STMT@[11; 23)
-        LET_KW@[11; 14) "let"
-        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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.rs
deleted file mode 100644 (file)
index 7cde5c5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-type A = for<'a> fn() -> ();
-fn foo<T>(_t: &T) where for<'a> &'a T: Iterator {}
-fn bar<T>(_t: &T) where for<'a> &'a mut T: Iterator {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt
deleted file mode 100644 (file)
index 599cf94..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-SOURCE_FILE@[0; 135)
-  TYPE_ALIAS_DEF@[0; 28)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    FOR_TYPE@[9; 27)
-      FOR_KW@[9; 12) "for"
-      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) "fn"
-        PARAM_LIST@[19; 21)
-          L_PAREN@[19; 20) "("
-          R_PAREN@[20; 21) ")"
-        WHITESPACE@[21; 22) " "
-        RET_TYPE@[22; 27)
-          THIN_ARROW@[22; 24) "->"
-          WHITESPACE@[24; 25) " "
-          TUPLE_TYPE@[25; 27)
-            L_PAREN@[25; 26) "("
-            R_PAREN@[26; 27) ")"
-    SEMI@[27; 28) ";"
-  WHITESPACE@[28; 29) "\n"
-  FN_DEF@[29; 79)
-    FN_KW@[29; 31) "fn"
-    WHITESPACE@[31; 32) " "
-    NAME@[32; 35)
-      IDENT@[32; 35) "foo"
-    TYPE_PARAM_LIST@[35; 38)
-      L_ANGLE@[35; 36) "<"
-      TYPE_PARAM@[36; 37)
-        NAME@[36; 37)
-          IDENT@[36; 37) "T"
-      R_ANGLE@[37; 38) ">"
-    PARAM_LIST@[38; 46)
-      L_PAREN@[38; 39) "("
-      PARAM@[39; 45)
-        BIND_PAT@[39; 41)
-          NAME@[39; 41)
-            IDENT@[39; 41) "_t"
-        COLON@[41; 42) ":"
-        WHITESPACE@[42; 43) " "
-        REFERENCE_TYPE@[43; 45)
-          AMP@[43; 44) "&"
-          PATH_TYPE@[44; 45)
-            PATH@[44; 45)
-              PATH_SEGMENT@[44; 45)
-                NAME_REF@[44; 45)
-                  IDENT@[44; 45) "T"
-      R_PAREN@[45; 46) ")"
-    WHITESPACE@[46; 47) " "
-    WHERE_CLAUSE@[47; 76)
-      WHERE_KW@[47; 52) "where"
-      WHITESPACE@[52; 53) " "
-      WHERE_PRED@[53; 76)
-        FOR_TYPE@[53; 66)
-          FOR_KW@[53; 56) "for"
-          TYPE_PARAM_LIST@[56; 60)
-            L_ANGLE@[56; 57) "<"
-            LIFETIME_PARAM@[57; 59)
-              LIFETIME@[57; 59) "\'a"
-            R_ANGLE@[59; 60) ">"
-          WHITESPACE@[60; 61) " "
-          REFERENCE_TYPE@[61; 66)
-            AMP@[61; 62) "&"
-            LIFETIME@[62; 64) "\'a"
-            WHITESPACE@[64; 65) " "
-            PATH_TYPE@[65; 66)
-              PATH@[65; 66)
-                PATH_SEGMENT@[65; 66)
-                  NAME_REF@[65; 66)
-                    IDENT@[65; 66) "T"
-        COLON@[66; 67) ":"
-        WHITESPACE@[67; 68) " "
-        TYPE_BOUND_LIST@[68; 76)
-          TYPE_BOUND@[68; 76)
-            PATH_TYPE@[68; 76)
-              PATH@[68; 76)
-                PATH_SEGMENT@[68; 76)
-                  NAME_REF@[68; 76)
-                    IDENT@[68; 76) "Iterator"
-    WHITESPACE@[76; 77) " "
-    BLOCK@[77; 79)
-      L_CURLY@[77; 78) "{"
-      R_CURLY@[78; 79) "}"
-  WHITESPACE@[79; 80) "\n"
-  FN_DEF@[80; 134)
-    FN_KW@[80; 82) "fn"
-    WHITESPACE@[82; 83) " "
-    NAME@[83; 86)
-      IDENT@[83; 86) "bar"
-    TYPE_PARAM_LIST@[86; 89)
-      L_ANGLE@[86; 87) "<"
-      TYPE_PARAM@[87; 88)
-        NAME@[87; 88)
-          IDENT@[87; 88) "T"
-      R_ANGLE@[88; 89) ">"
-    PARAM_LIST@[89; 97)
-      L_PAREN@[89; 90) "("
-      PARAM@[90; 96)
-        BIND_PAT@[90; 92)
-          NAME@[90; 92)
-            IDENT@[90; 92) "_t"
-        COLON@[92; 93) ":"
-        WHITESPACE@[93; 94) " "
-        REFERENCE_TYPE@[94; 96)
-          AMP@[94; 95) "&"
-          PATH_TYPE@[95; 96)
-            PATH@[95; 96)
-              PATH_SEGMENT@[95; 96)
-                NAME_REF@[95; 96)
-                  IDENT@[95; 96) "T"
-      R_PAREN@[96; 97) ")"
-    WHITESPACE@[97; 98) " "
-    WHERE_CLAUSE@[98; 131)
-      WHERE_KW@[98; 103) "where"
-      WHITESPACE@[103; 104) " "
-      WHERE_PRED@[104; 131)
-        FOR_TYPE@[104; 121)
-          FOR_KW@[104; 107) "for"
-          TYPE_PARAM_LIST@[107; 111)
-            L_ANGLE@[107; 108) "<"
-            LIFETIME_PARAM@[108; 110)
-              LIFETIME@[108; 110) "\'a"
-            R_ANGLE@[110; 111) ">"
-          WHITESPACE@[111; 112) " "
-          REFERENCE_TYPE@[112; 121)
-            AMP@[112; 113) "&"
-            LIFETIME@[113; 115) "\'a"
-            WHITESPACE@[115; 116) " "
-            MUT_KW@[116; 119) "mut"
-            WHITESPACE@[119; 120) " "
-            PATH_TYPE@[120; 121)
-              PATH@[120; 121)
-                PATH_SEGMENT@[120; 121)
-                  NAME_REF@[120; 121)
-                    IDENT@[120; 121) "T"
-        COLON@[121; 122) ":"
-        WHITESPACE@[122; 123) " "
-        TYPE_BOUND_LIST@[123; 131)
-          TYPE_BOUND@[123; 131)
-            PATH_TYPE@[123; 131)
-              PATH@[123; 131)
-                PATH_SEGMENT@[123; 131)
-                  NAME_REF@[123; 131)
-                    IDENT@[123; 131) "Iterator"
-    WHITESPACE@[131; 132) " "
-    BLOCK@[132; 134)
-      L_CURLY@[132; 133) "{"
-      R_CURLY@[133; 134) "}"
-  WHITESPACE@[134; 135) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.rs
deleted file mode 100644 (file)
index 2dac6be..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-    let _ = &1;
-    let _ = &mut &f();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt
deleted file mode 100644 (file)
index 87a56d8..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-SOURCE_FILE@[0; 52)
-  FN_DEF@[0; 51)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 51)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 26)
-        LET_KW@[15; 18) "let"
-        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) "\n    "
-      LET_STMT@[31; 49)
-        LET_KW@[31; 34) "let"
-        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) "mut"
-          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) "\n"
-      R_CURLY@[50; 51) "}"
-  WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.rs
deleted file mode 100644 (file)
index 693e3f3..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-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/ok/0083_struct_items.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.txt
deleted file mode 100644 (file)
index 62d9351..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-SOURCE_FILE@[0; 106)
-  STRUCT_DEF@[0; 11)
-    STRUCT_KW@[0; 6) "struct"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 10)
-      IDENT@[7; 10) "Foo"
-    SEMI@[10; 11) ";"
-  WHITESPACE@[11; 12) "\n"
-  STRUCT_DEF@[12; 25)
-    STRUCT_KW@[12; 18) "struct"
-    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) "\n"
-  STRUCT_DEF@[26; 39)
-    STRUCT_KW@[26; 32) "struct"
-    WHITESPACE@[32; 33) " "
-    NAME@[33; 36)
-      IDENT@[33; 36) "Foo"
-    POS_FIELD_DEF_LIST@[36; 38)
-      L_PAREN@[36; 37) "("
-      R_PAREN@[37; 38) ")"
-    SEMI@[38; 39) ";"
-  WHITESPACE@[39; 40) "\n"
-  STRUCT_DEF@[40; 66)
-    STRUCT_KW@[40; 46) "struct"
-    WHITESPACE@[46; 47) " "
-    NAME@[47; 50)
-      IDENT@[47; 50) "Foo"
-    POS_FIELD_DEF_LIST@[50; 65)
-      L_PAREN@[50; 51) "("
-      POS_FIELD_DEF@[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_DEF@[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) "\n"
-  STRUCT_DEF@[67; 105)
-    STRUCT_KW@[67; 73) "struct"
-    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) "\n    "
-      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) "\n    "
-      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) "\n"
-      R_CURLY@[104; 105) "}"
-  WHITESPACE@[105; 106) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.rs
deleted file mode 100644 (file)
index 6e1b251..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type T = (i32);
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt
deleted file mode 100644 (file)
index c0cf48a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SOURCE_FILE@[0; 16)
-  TYPE_ALIAS_DEF@[0; 15)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    PAREN_TYPE@[9; 14)
-      L_PAREN@[9; 10) "("
-      PATH_TYPE@[10; 13)
-        PATH@[10; 13)
-          PATH_SEGMENT@[10; 13)
-            NAME_REF@[10; 13)
-              IDENT@[10; 13) "i32"
-      R_PAREN@[13; 14) ")"
-    SEMI@[14; 15) ";"
-  WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.rs
deleted file mode 100644 (file)
index 2e11a5a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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/ok/0085_expr_literals.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.txt
deleted file mode 100644 (file)
index 2f2be32..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-SOURCE_FILE@[0; 189)
-  FN_DEF@[0; 188)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 188)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 28)
-        LET_KW@[15; 18) "let"
-        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) "true"
-        SEMI@[27; 28) ";"
-      WHITESPACE@[28; 33) "\n    "
-      LET_STMT@[33; 47)
-        LET_KW@[33; 36) "let"
-        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) "false"
-        SEMI@[46; 47) ";"
-      WHITESPACE@[47; 52) "\n    "
-      LET_STMT@[52; 62)
-        LET_KW@[52; 55) "let"
-        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) "\n    "
-      LET_STMT@[67; 79)
-        LET_KW@[67; 70) "let"
-        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) "\n    "
-      LET_STMT@[84; 97)
-        LET_KW@[84; 87) "let"
-        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) "b\'a\'"
-        SEMI@[96; 97) ";"
-      WHITESPACE@[97; 102) "\n    "
-      LET_STMT@[102; 114)
-        LET_KW@[102; 105) "let"
-        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) "\'b\'"
-        SEMI@[113; 114) ";"
-      WHITESPACE@[114; 119) "\n    "
-      LET_STMT@[119; 131)
-        LET_KW@[119; 122) "let"
-        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) "\"c\""
-        SEMI@[130; 131) ";"
-      WHITESPACE@[131; 136) "\n    "
-      LET_STMT@[136; 149)
-        LET_KW@[136; 139) "let"
-        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) "r\"d\""
-        SEMI@[148; 149) ";"
-      WHITESPACE@[149; 154) "\n    "
-      LET_STMT@[154; 167)
-        LET_KW@[154; 157) "let"
-        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) "b\"e\""
-        SEMI@[166; 167) ";"
-      WHITESPACE@[167; 172) "\n    "
-      LET_STMT@[172; 186)
-        LET_KW@[172; 175) "let"
-        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) "br\"f\""
-        SEMI@[185; 186) ";"
-      WHITESPACE@[186; 187) "\n"
-      R_CURLY@[187; 188) "}"
-  WHITESPACE@[188; 189) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.rs
deleted file mode 100644 (file)
index d22d8ca..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-fn foo() {}
-fn bar() -> () {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt
deleted file mode 100644 (file)
index ac793c9..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCE_FILE@[0; 30)
-  FN_DEF@[0; 11)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 11)
-      L_CURLY@[9; 10) "{"
-      R_CURLY@[10; 11) "}"
-  WHITESPACE@[11; 12) "\n"
-  FN_DEF@[12; 29)
-    FN_KW@[12; 14) "fn"
-    WHITESPACE@[14; 15) " "
-    NAME@[15; 18)
-      IDENT@[15; 18) "bar"
-    PARAM_LIST@[18; 20)
-      L_PAREN@[18; 19) "("
-      R_PAREN@[19; 20) ")"
-    WHITESPACE@[20; 21) " "
-    RET_TYPE@[21; 26)
-      THIN_ARROW@[21; 23) "->"
-      WHITESPACE@[23; 24) " "
-      TUPLE_TYPE@[24; 26)
-        L_PAREN@[24; 25) "("
-        R_PAREN@[25; 26) ")"
-    WHITESPACE@[26; 27) " "
-    BLOCK@[27; 29)
-      L_CURLY@[27; 28) "{"
-      R_CURLY@[28; 29) "}"
-  WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.rs
deleted file mode 100644 (file)
index 41055f4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unsafe impl Foo {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt
deleted file mode 100644 (file)
index 590e2a8..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 19)
-  IMPL_BLOCK@[0; 18)
-    UNSAFE_KW@[0; 6) "unsafe"
-    WHITESPACE@[6; 7) " "
-    IMPL_KW@[7; 11) "impl"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.rs
deleted file mode 100644 (file)
index 560eb05..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo(){
-    if break {}
-    while break {}
-    for i in break {}
-    match break {}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt
deleted file mode 100644 (file)
index b93a10c..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-SOURCE_FILE@[0; 88)
-  FN_DEF@[0; 87)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    BLOCK@[8; 87)
-      L_CURLY@[8; 9) "{"
-      WHITESPACE@[9; 14) "\n    "
-      EXPR_STMT@[14; 25)
-        IF_EXPR@[14; 25)
-          IF_KW@[14; 16) "if"
-          WHITESPACE@[16; 17) " "
-          CONDITION@[17; 22)
-            BREAK_EXPR@[17; 22)
-              BREAK_KW@[17; 22) "break"
-          WHITESPACE@[22; 23) " "
-          BLOCK@[23; 25)
-            L_CURLY@[23; 24) "{"
-            R_CURLY@[24; 25) "}"
-      WHITESPACE@[25; 30) "\n    "
-      EXPR_STMT@[30; 44)
-        WHILE_EXPR@[30; 44)
-          WHILE_KW@[30; 35) "while"
-          WHITESPACE@[35; 36) " "
-          CONDITION@[36; 41)
-            BREAK_EXPR@[36; 41)
-              BREAK_KW@[36; 41) "break"
-          WHITESPACE@[41; 42) " "
-          BLOCK@[42; 44)
-            L_CURLY@[42; 43) "{"
-            R_CURLY@[43; 44) "}"
-      WHITESPACE@[44; 49) "\n    "
-      EXPR_STMT@[49; 66)
-        FOR_EXPR@[49; 66)
-          FOR_KW@[49; 52) "for"
-          WHITESPACE@[52; 53) " "
-          BIND_PAT@[53; 54)
-            NAME@[53; 54)
-              IDENT@[53; 54) "i"
-          WHITESPACE@[54; 55) " "
-          IN_KW@[55; 57) "in"
-          WHITESPACE@[57; 58) " "
-          BREAK_EXPR@[58; 63)
-            BREAK_KW@[58; 63) "break"
-          WHITESPACE@[63; 64) " "
-          BLOCK@[64; 66)
-            L_CURLY@[64; 65) "{"
-            R_CURLY@[65; 66) "}"
-      WHITESPACE@[66; 71) "\n    "
-      MATCH_EXPR@[71; 85)
-        MATCH_KW@[71; 76) "match"
-        WHITESPACE@[76; 77) " "
-        BREAK_EXPR@[77; 82)
-          BREAK_KW@[77; 82) "break"
-        WHITESPACE@[82; 83) " "
-        MATCH_ARM_LIST@[83; 85)
-          L_CURLY@[83; 84) "{"
-          R_CURLY@[84; 85) "}"
-      WHITESPACE@[85; 86) "\n"
-      R_CURLY@[86; 87) "}"
-  WHITESPACE@[87; 88) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.rs
deleted file mode 100644 (file)
index 394a049..0000000
+++ /dev/null
@@ -1 +0,0 @@
-extern fn foo() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt
deleted file mode 100644 (file)
index ed5339e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SOURCE_FILE@[0; 19)
-  FN_DEF@[0; 18)
-    ABI@[0; 6)
-      EXTERN_KW@[0; 6) "extern"
-    WHITESPACE@[6; 7) " "
-    FN_KW@[7; 9) "fn"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.rs
deleted file mode 100644 (file)
index 540eacb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-struct S<T = i32>;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt
deleted file mode 100644 (file)
index 8d2579c..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE@[0; 19)
-  STRUCT_DEF@[0; 18)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.rs
deleted file mode 100644 (file)
index 72adf60..0000000
+++ /dev/null
@@ -1 +0,0 @@
-auto trait T {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt
deleted file mode 100644 (file)
index 7093c2b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-SOURCE_FILE@[0; 16)
-  TRAIT_DEF@[0; 15)
-    AUTO_KW@[0; 4) "auto"
-    WHITESPACE@[4; 5) " "
-    TRAIT_KW@[5; 10) "trait"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.rs
deleted file mode 100644 (file)
index e3ba5e8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type F = fn() -> ();
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
deleted file mode 100644 (file)
index fae8223..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-SOURCE_FILE@[0; 21)
-  TYPE_ALIAS_DEF@[0; 20)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "F"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    FN_POINTER_TYPE@[9; 19)
-      FN_KW@[9; 11) "fn"
-      PARAM_LIST@[11; 13)
-        L_PAREN@[11; 12) "("
-        R_PAREN@[12; 13) ")"
-      WHITESPACE@[13; 14) " "
-      RET_TYPE@[14; 19)
-        THIN_ARROW@[14; 16) "->"
-        WHITESPACE@[16; 17) " "
-        TUPLE_TYPE@[17; 19)
-          L_PAREN@[17; 18) "("
-          R_PAREN@[18; 19) ")"
-    SEMI@[19; 20) ";"
-  WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.rs
deleted file mode 100644 (file)
index b9ba78a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo() {
-    x[1][2];
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt
deleted file mode 100644 (file)
index b4a71f9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-SOURCE_FILE@[0; 26)
-  FN_DEF@[0; 25)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 25)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 23)
-        INDEX_EXPR@[15; 22)
-          INDEX_EXPR@[15; 19)
-            PATH_EXPR@[15; 16)
-              PATH@[15; 16)
-                PATH_SEGMENT@[15; 16)
-                  NAME_REF@[15; 16)
-                    IDENT@[15; 16) "x"
-            L_BRACK@[16; 17) "["
-            LITERAL@[17; 18)
-              INT_NUMBER@[17; 18) "1"
-            R_BRACK@[18; 19) "]"
-          L_BRACK@[19; 20) "["
-          LITERAL@[20; 21)
-            INT_NUMBER@[20; 21) "2"
-          R_BRACK@[21; 22) "]"
-        SEMI@[22; 23) ";"
-      WHITESPACE@[23; 24) "\n"
-      R_CURLY@[24; 25) "}"
-  WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.rs
deleted file mode 100644 (file)
index 03d29f3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unsafe auto trait T {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt
deleted file mode 100644 (file)
index 3da3bea..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-SOURCE_FILE@[0; 23)
-  TRAIT_DEF@[0; 22)
-    UNSAFE_KW@[0; 6) "unsafe"
-    WHITESPACE@[6; 7) " "
-    AUTO_KW@[7; 11) "auto"
-    WHITESPACE@[11; 12) " "
-    TRAIT_KW@[12; 17) "trait"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.rs
deleted file mode 100644 (file)
index 4d719c4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn main() { let _ = (); }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt
deleted file mode 100644 (file)
index f11bc1f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-SOURCE_FILE@[0; 26)
-  FN_DEF@[0; 25)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 25)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 12) " "
-      LET_STMT@[12; 23)
-        LET_KW@[12; 15) "let"
-        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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.rs
deleted file mode 100644 (file)
index 4919665..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-fn foo() {
-    if true {}
-    loop {}
-    match () {}
-    while true {}
-    for _ in () {}
-    {}
-    {}
-    macro_rules! test {
-         () => {}
-    }
-    test!{}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt
deleted file mode 100644 (file)
index 6d24f21..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-SOURCE_FILE@[0; 167)
-  FN_DEF@[0; 166)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 166)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 25)
-        IF_EXPR@[15; 25)
-          IF_KW@[15; 17) "if"
-          WHITESPACE@[17; 18) " "
-          CONDITION@[18; 22)
-            LITERAL@[18; 22)
-              TRUE_KW@[18; 22) "true"
-          WHITESPACE@[22; 23) " "
-          BLOCK@[23; 25)
-            L_CURLY@[23; 24) "{"
-            R_CURLY@[24; 25) "}"
-      WHITESPACE@[25; 30) "\n    "
-      EXPR_STMT@[30; 37)
-        LOOP_EXPR@[30; 37)
-          LOOP_KW@[30; 34) "loop"
-          WHITESPACE@[34; 35) " "
-          BLOCK@[35; 37)
-            L_CURLY@[35; 36) "{"
-            R_CURLY@[36; 37) "}"
-      WHITESPACE@[37; 42) "\n    "
-      EXPR_STMT@[42; 53)
-        MATCH_EXPR@[42; 53)
-          MATCH_KW@[42; 47) "match"
-          WHITESPACE@[47; 48) " "
-          TUPLE_EXPR@[48; 50)
-            L_PAREN@[48; 49) "("
-            R_PAREN@[49; 50) ")"
-          WHITESPACE@[50; 51) " "
-          MATCH_ARM_LIST@[51; 53)
-            L_CURLY@[51; 52) "{"
-            R_CURLY@[52; 53) "}"
-      WHITESPACE@[53; 58) "\n    "
-      EXPR_STMT@[58; 71)
-        WHILE_EXPR@[58; 71)
-          WHILE_KW@[58; 63) "while"
-          WHITESPACE@[63; 64) " "
-          CONDITION@[64; 68)
-            LITERAL@[64; 68)
-              TRUE_KW@[64; 68) "true"
-          WHITESPACE@[68; 69) " "
-          BLOCK@[69; 71)
-            L_CURLY@[69; 70) "{"
-            R_CURLY@[70; 71) "}"
-      WHITESPACE@[71; 76) "\n    "
-      EXPR_STMT@[76; 90)
-        FOR_EXPR@[76; 90)
-          FOR_KW@[76; 79) "for"
-          WHITESPACE@[79; 80) " "
-          PLACEHOLDER_PAT@[80; 81)
-            UNDERSCORE@[80; 81) "_"
-          WHITESPACE@[81; 82) " "
-          IN_KW@[82; 84) "in"
-          WHITESPACE@[84; 85) " "
-          TUPLE_EXPR@[85; 87)
-            L_PAREN@[85; 86) "("
-            R_PAREN@[86; 87) ")"
-          WHITESPACE@[87; 88) " "
-          BLOCK@[88; 90)
-            L_CURLY@[88; 89) "{"
-            R_CURLY@[89; 90) "}"
-      WHITESPACE@[90; 95) "\n    "
-      EXPR_STMT@[95; 97)
-        BLOCK_EXPR@[95; 97)
-          BLOCK@[95; 97)
-            L_CURLY@[95; 96) "{"
-            R_CURLY@[96; 97) "}"
-      WHITESPACE@[97; 102) "\n    "
-      EXPR_STMT@[102; 104)
-        BLOCK_EXPR@[102; 104)
-          BLOCK@[102; 104)
-            L_CURLY@[102; 103) "{"
-            R_CURLY@[103; 104) "}"
-      WHITESPACE@[104; 109) "\n    "
-      EXPR_STMT@[109; 152)
-        MACRO_CALL@[109; 152)
-          PATH@[109; 120)
-            PATH_SEGMENT@[109; 120)
-              NAME_REF@[109; 120)
-                IDENT@[109; 120) "macro_rules"
-          EXCL@[120; 121) "!"
-          WHITESPACE@[121; 122) " "
-          NAME@[122; 126)
-            IDENT@[122; 126) "test"
-          WHITESPACE@[126; 127) " "
-          TOKEN_TREE@[127; 152)
-            L_CURLY@[127; 128) "{"
-            WHITESPACE@[128; 138) "\n         "
-            TOKEN_TREE@[138; 140)
-              L_PAREN@[138; 139) "("
-              R_PAREN@[139; 140) ")"
-            WHITESPACE@[140; 141) " "
-            EQ@[141; 142) "="
-            R_ANGLE@[142; 143) ">"
-            WHITESPACE@[143; 144) " "
-            TOKEN_TREE@[144; 146)
-              L_CURLY@[144; 145) "{"
-              R_CURLY@[145; 146) "}"
-            WHITESPACE@[146; 151) "\n    "
-            R_CURLY@[151; 152) "}"
-      WHITESPACE@[152; 157) "\n    "
-      MACRO_CALL@[157; 164)
-        PATH@[157; 161)
-          PATH_SEGMENT@[157; 161)
-            NAME_REF@[157; 161)
-              IDENT@[157; 161) "test"
-        EXCL@[161; 162) "!"
-        TOKEN_TREE@[162; 164)
-          L_CURLY@[162; 163) "{"
-          R_CURLY@[163; 164) "}"
-      WHITESPACE@[164; 165) "\n"
-      R_CURLY@[165; 166) "}"
-  WHITESPACE@[166; 167) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.rs
deleted file mode 100644 (file)
index ef6aa84..0000000
+++ /dev/null
@@ -1 +0,0 @@
-default impl Foo {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt
deleted file mode 100644 (file)
index ada94a8..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 20)
-  IMPL_BLOCK@[0; 19)
-    DEFAULT_KW@[0; 7) "default"
-    WHITESPACE@[7; 8) " "
-    IMPL_KW@[8; 12) "impl"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.rs
deleted file mode 100644 (file)
index 31a1e43..0000000
+++ /dev/null
@@ -1 +0,0 @@
-const unsafe fn foo() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt
deleted file mode 100644 (file)
index 0dd42ab..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SOURCE_FILE@[0; 25)
-  FN_DEF@[0; 24)
-    CONST_KW@[0; 5) "const"
-    WHITESPACE@[5; 6) " "
-    UNSAFE_KW@[6; 12) "unsafe"
-    WHITESPACE@[12; 13) " "
-    FN_KW@[13; 15) "fn"
-    WHITESPACE@[15; 16) " "
-    NAME@[16; 19)
-      IDENT@[16; 19) "foo"
-    PARAM_LIST@[19; 21)
-      L_PAREN@[19; 20) "("
-      R_PAREN@[20; 21) ")"
-    WHITESPACE@[21; 22) " "
-    BLOCK@[22; 24)
-      L_CURLY@[22; 23) "{"
-      R_CURLY@[23; 24) "}"
-  WHITESPACE@[24; 25) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.rs
deleted file mode 100644 (file)
index 9d55bed..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-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/ok/0099_param_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.txt
deleted file mode 100644 (file)
index 80d6368..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-SOURCE_FILE@[0; 67)
-  FN_DEF@[0; 9)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 4)
-      IDENT@[3; 4) "a"
-    PARAM_LIST@[4; 6)
-      L_PAREN@[4; 5) "("
-      R_PAREN@[5; 6) ")"
-    WHITESPACE@[6; 7) " "
-    BLOCK@[7; 9)
-      L_CURLY@[7; 8) "{"
-      R_CURLY@[8; 9) "}"
-  WHITESPACE@[9; 10) "\n"
-  FN_DEF@[10; 25)
-    FN_KW@[10; 12) "fn"
-    WHITESPACE@[12; 13) " "
-    NAME@[13; 14)
-      IDENT@[13; 14) "b"
-    PARAM_LIST@[14; 22)
-      L_PAREN@[14; 15) "("
-      PARAM@[15; 21)
-        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) "\n"
-  FN_DEF@[26; 43)
-    FN_KW@[26; 28) "fn"
-    WHITESPACE@[28; 29) " "
-    NAME@[29; 30)
-      IDENT@[29; 30) "c"
-    PARAM_LIST@[30; 40)
-      L_PAREN@[30; 31) "("
-      PARAM@[31; 37)
-        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) "\n"
-  FN_DEF@[44; 66)
-    FN_KW@[44; 46) "fn"
-    WHITESPACE@[46; 47) " "
-    NAME@[47; 48)
-      IDENT@[47; 48) "d"
-    PARAM_LIST@[48; 63)
-      L_PAREN@[48; 49) "("
-      PARAM@[49; 55)
-        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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.rs
deleted file mode 100644 (file)
index 972197d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo() {
-    for x in [] {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt
deleted file mode 100644 (file)
index 09e1085..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-SOURCE_FILE@[0; 33)
-  FN_DEF@[0; 32)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 32)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 30)
-        FOR_EXPR@[15; 29)
-          FOR_KW@[15; 18) "for"
-          WHITESPACE@[18; 19) " "
-          BIND_PAT@[19; 20)
-            NAME@[19; 20)
-              IDENT@[19; 20) "x"
-          WHITESPACE@[20; 21) " "
-          IN_KW@[21; 23) "in"
-          WHITESPACE@[23; 24) " "
-          ARRAY_EXPR@[24; 26)
-            L_BRACK@[24; 25) "["
-            R_BRACK@[25; 26) "]"
-          WHITESPACE@[26; 27) " "
-          BLOCK@[27; 29)
-            L_CURLY@[27; 28) "{"
-            R_CURLY@[28; 29) "}"
-        SEMI@[29; 30) ";"
-      WHITESPACE@[30; 31) "\n"
-      R_CURLY@[31; 32) "}"
-  WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.rs
deleted file mode 100644 (file)
index 33cfc4c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-unsafe fn foo() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt
deleted file mode 100644 (file)
index 1a60f6f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 19)
-  FN_DEF@[0; 18)
-    UNSAFE_KW@[0; 6) "unsafe"
-    WHITESPACE@[6; 7) " "
-    FN_KW@[7; 9) "fn"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.rs
deleted file mode 100644 (file)
index da3412f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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/ok/0102_field_pat_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.txt
deleted file mode 100644 (file)
index a2af4fc..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-SOURCE_FILE@[0; 119)
-  FN_DEF@[0; 118)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 118)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 29)
-        LET_KW@[15; 18) "let"
-        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) "\n    "
-      LET_STMT@[34; 62)
-        LET_KW@[34; 37) "let"
-        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) "ref"
-              WHITESPACE@[48; 49) " "
-              MUT_KW@[49; 52) "mut"
-              WHITESPACE@[52; 53) " "
-              NAME@[53; 54)
-                IDENT@[53; 54) "g"
-            WHITESPACE@[54; 55) " "
-            R_CURLY@[55; 56) "}"
-        WHITESPACE@[56; 57) " "
-        EQ@[57; 58) "="
-        WHITESPACE@[58; 59) " "
-        TUPLE_EXPR@[59; 61)
-          L_PAREN@[59; 60) "("
-          R_PAREN@[60; 61) ")"
-        SEMI@[61; 62) ";"
-      WHITESPACE@[62; 67) "\n    "
-      LET_STMT@[67; 90)
-        LET_KW@[67; 70) "let"
-        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) " "
-            FIELD_PAT@[75; 79)
-              NAME@[75; 76)
-                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) "\n    "
-      LET_STMT@[95; 116)
-        LET_KW@[95; 98) "let"
-        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) " "
-            FIELD_PAT@[103; 107)
-              NAME@[103; 104)
-                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) "\n"
-      R_CURLY@[117; 118) "}"
-  WHITESPACE@[118; 119) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.rs
deleted file mode 100644 (file)
index 4dc1999..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    [];
-    [1];
-    [1, 2,];
-    [1; 2];
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt
deleted file mode 100644 (file)
index e74e231..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-SOURCE_FILE@[0; 55)
-  FN_DEF@[0; 54)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 54)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 18)
-        ARRAY_EXPR@[15; 17)
-          L_BRACK@[15; 16) "["
-          R_BRACK@[16; 17) "]"
-        SEMI@[17; 18) ";"
-      WHITESPACE@[18; 23) "\n    "
-      EXPR_STMT@[23; 27)
-        ARRAY_EXPR@[23; 26)
-          L_BRACK@[23; 24) "["
-          LITERAL@[24; 25)
-            INT_NUMBER@[24; 25) "1"
-          R_BRACK@[25; 26) "]"
-        SEMI@[26; 27) ";"
-      WHITESPACE@[27; 32) "\n    "
-      EXPR_STMT@[32; 40)
-        ARRAY_EXPR@[32; 39)
-          L_BRACK@[32; 33) "["
-          LITERAL@[33; 34)
-            INT_NUMBER@[33; 34) "1"
-          COMMA@[34; 35) ","
-          WHITESPACE@[35; 36) " "
-          LITERAL@[36; 37)
-            INT_NUMBER@[36; 37) "2"
-          COMMA@[37; 38) ","
-          R_BRACK@[38; 39) "]"
-        SEMI@[39; 40) ";"
-      WHITESPACE@[40; 45) "\n    "
-      EXPR_STMT@[45; 52)
-        ARRAY_EXPR@[45; 51)
-          L_BRACK@[45; 46) "["
-          LITERAL@[46; 47)
-            INT_NUMBER@[46; 47) "1"
-          SEMI@[47; 48) ";"
-          WHITESPACE@[48; 49) " "
-          LITERAL@[49; 50)
-            INT_NUMBER@[49; 50) "2"
-          R_BRACK@[50; 51) "]"
-        SEMI@[51; 52) ";"
-      WHITESPACE@[52; 53) "\n"
-      R_CURLY@[53; 54) "}"
-  WHITESPACE@[54; 55) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.rs
deleted file mode 100644 (file)
index aef45e5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type F = Box<Fn(x: i32) -> ()>;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt
deleted file mode 100644 (file)
index d6f1968..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-SOURCE_FILE@[0; 32)
-  TYPE_ALIAS_DEF@[0; 31)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "F"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    PATH_TYPE@[9; 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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.rs
deleted file mode 100644 (file)
index 2fed74c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    {};
-    unsafe {};
-    'label: {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt
deleted file mode 100644 (file)
index 4bc446a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE@[0; 52)
-  FN_DEF@[0; 51)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 51)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      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) "\n    "
-      EXPR_STMT@[23; 33)
-        BLOCK_EXPR@[23; 32)
-          UNSAFE_KW@[23; 29) "unsafe"
-          WHITESPACE@[29; 30) " "
-          BLOCK@[30; 32)
-            L_CURLY@[30; 31) "{"
-            R_CURLY@[31; 32) "}"
-        SEMI@[32; 33) ";"
-      WHITESPACE@[33; 38) "\n    "
-      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) "\n"
-      R_CURLY@[50; 51) "}"
-  WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs
deleted file mode 100644 (file)
index 0757178..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-fn foo() {
-    || ();
-    || -> i32 { 92 };
-    |x| x;
-    move |x: i32,| x;
-    async || {};
-    move || {};
-    async move || {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt
deleted file mode 100644 (file)
index a052181..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-SOURCE_FILE@[0; 134)
-  FN_DEF@[0; 133)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 133)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      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) "\n    "
-      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) "\n    "
-      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) "\n    "
-      EXPR_STMT@[59; 76)
-        LAMBDA_EXPR@[59; 75)
-          MOVE_KW@[59; 63) "move"
-          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; 81) "\n    "
-      EXPR_STMT@[81; 93)
-        LAMBDA_EXPR@[81; 92)
-          ASYNC_KW@[81; 86) "async"
-          WHITESPACE@[86; 87) " "
-          PARAM_LIST@[87; 89)
-            PIPE@[87; 88) "|"
-            PIPE@[88; 89) "|"
-          WHITESPACE@[89; 90) " "
-          BLOCK_EXPR@[90; 92)
-            BLOCK@[90; 92)
-              L_CURLY@[90; 91) "{"
-              R_CURLY@[91; 92) "}"
-        SEMI@[92; 93) ";"
-      WHITESPACE@[93; 98) "\n    "
-      EXPR_STMT@[98; 109)
-        LAMBDA_EXPR@[98; 108)
-          MOVE_KW@[98; 102) "move"
-          WHITESPACE@[102; 103) " "
-          PARAM_LIST@[103; 105)
-            PIPE@[103; 104) "|"
-            PIPE@[104; 105) "|"
-          WHITESPACE@[105; 106) " "
-          BLOCK_EXPR@[106; 108)
-            BLOCK@[106; 108)
-              L_CURLY@[106; 107) "{"
-              R_CURLY@[107; 108) "}"
-        SEMI@[108; 109) ";"
-      WHITESPACE@[109; 114) "\n    "
-      EXPR_STMT@[114; 131)
-        LAMBDA_EXPR@[114; 130)
-          ASYNC_KW@[114; 119) "async"
-          WHITESPACE@[119; 120) " "
-          MOVE_KW@[120; 124) "move"
-          WHITESPACE@[124; 125) " "
-          PARAM_LIST@[125; 127)
-            PIPE@[125; 126) "|"
-            PIPE@[126; 127) "|"
-          WHITESPACE@[127; 128) " "
-          BLOCK_EXPR@[128; 130)
-            BLOCK@[128; 130)
-              L_CURLY@[128; 129) "{"
-              R_CURLY@[129; 130) "}"
-        SEMI@[130; 131) ";"
-      WHITESPACE@[131; 132) "\n"
-      R_CURLY@[132; 133) "}"
-  WHITESPACE@[133; 134) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.rs
deleted file mode 100644 (file)
index 1a3aa35..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-    x.foo();
-    y.bar::<T>(1, 2,);
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt
deleted file mode 100644 (file)
index bc28b29..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-SOURCE_FILE@[0; 49)
-  FN_DEF@[0; 48)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 48)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 23)
-        METHOD_CALL_EXPR@[15; 22)
-          PATH_EXPR@[15; 16)
-            PATH@[15; 16)
-              PATH_SEGMENT@[15; 16)
-                NAME_REF@[15; 16)
-                  IDENT@[15; 16) "x"
-          DOT@[16; 17) "."
-          NAME_REF@[17; 20)
-            IDENT@[17; 20) "foo"
-          ARG_LIST@[20; 22)
-            L_PAREN@[20; 21) "("
-            R_PAREN@[21; 22) ")"
-        SEMI@[22; 23) ";"
-      WHITESPACE@[23; 28) "\n    "
-      EXPR_STMT@[28; 46)
-        METHOD_CALL_EXPR@[28; 45)
-          PATH_EXPR@[28; 29)
-            PATH@[28; 29)
-              PATH_SEGMENT@[28; 29)
-                NAME_REF@[28; 29)
-                  IDENT@[28; 29) "y"
-          DOT@[29; 30) "."
-          NAME_REF@[30; 33)
-            IDENT@[30; 33) "bar"
-          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) "\n"
-      R_CURLY@[47; 48) "}"
-  WHITESPACE@[48; 49) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.rs
deleted file mode 100644 (file)
index e4f7742..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    ();
-    (1);
-    (1,);
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt
deleted file mode 100644 (file)
index 32be7a8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE@[0; 40)
-  FN_DEF@[0; 39)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 39)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 18)
-        TUPLE_EXPR@[15; 17)
-          L_PAREN@[15; 16) "("
-          R_PAREN@[16; 17) ")"
-        SEMI@[17; 18) ";"
-      WHITESPACE@[18; 23) "\n    "
-      EXPR_STMT@[23; 27)
-        PAREN_EXPR@[23; 26)
-          L_PAREN@[23; 24) "("
-          LITERAL@[24; 25)
-            INT_NUMBER@[24; 25) "1"
-          R_PAREN@[25; 26) ")"
-        SEMI@[26; 27) ";"
-      WHITESPACE@[27; 32) "\n    "
-      EXPR_STMT@[32; 37)
-        TUPLE_EXPR@[32; 36)
-          L_PAREN@[32; 33) "("
-          LITERAL@[33; 34)
-            INT_NUMBER@[33; 34) "1"
-          COMMA@[34; 35) ","
-          R_PAREN@[35; 36) ")"
-        SEMI@[36; 37) ";"
-      WHITESPACE@[37; 38) "\n"
-      R_CURLY@[38; 39) "}"
-  WHITESPACE@[39; 40) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.rs
deleted file mode 100644 (file)
index 48e83f2..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    'a: loop {}
-    'b: while true {}
-    'c: for x in () {}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt
deleted file mode 100644 (file)
index 39e4f4b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-SOURCE_FILE@[0; 74)
-  FN_DEF@[0; 73)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 73)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 26)
-        LOOP_EXPR@[15; 26)
-          LABEL@[15; 18)
-            LIFETIME@[15; 17) "\'a"
-            COLON@[17; 18) ":"
-          WHITESPACE@[18; 19) " "
-          LOOP_KW@[19; 23) "loop"
-          WHITESPACE@[23; 24) " "
-          BLOCK@[24; 26)
-            L_CURLY@[24; 25) "{"
-            R_CURLY@[25; 26) "}"
-      WHITESPACE@[26; 31) "\n    "
-      EXPR_STMT@[31; 48)
-        WHILE_EXPR@[31; 48)
-          LABEL@[31; 34)
-            LIFETIME@[31; 33) "\'b"
-            COLON@[33; 34) ":"
-          WHITESPACE@[34; 35) " "
-          WHILE_KW@[35; 40) "while"
-          WHITESPACE@[40; 41) " "
-          CONDITION@[41; 45)
-            LITERAL@[41; 45)
-              TRUE_KW@[41; 45) "true"
-          WHITESPACE@[45; 46) " "
-          BLOCK@[46; 48)
-            L_CURLY@[46; 47) "{"
-            R_CURLY@[47; 48) "}"
-      WHITESPACE@[48; 53) "\n    "
-      FOR_EXPR@[53; 71)
-        LABEL@[53; 56)
-          LIFETIME@[53; 55) "\'c"
-          COLON@[55; 56) ":"
-        WHITESPACE@[56; 57) " "
-        FOR_KW@[57; 60) "for"
-        WHITESPACE@[60; 61) " "
-        BIND_PAT@[61; 62)
-          NAME@[61; 62)
-            IDENT@[61; 62) "x"
-        WHITESPACE@[62; 63) " "
-        IN_KW@[63; 65) "in"
-        WHITESPACE@[65; 66) " "
-        TUPLE_EXPR@[66; 68)
-          L_PAREN@[66; 67) "("
-          R_PAREN@[67; 68) ")"
-        WHITESPACE@[68; 69) " "
-        BLOCK@[69; 71)
-          L_CURLY@[69; 70) "{"
-          R_CURLY@[70; 71) "}"
-      WHITESPACE@[71; 72) "\n"
-      R_CURLY@[72; 73) "}"
-  WHITESPACE@[73; 74) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.rs
deleted file mode 100644 (file)
index 328e947..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-use ::crate_name; // Rust 2018 - All flavours
-use crate_name; // Rust 2018 - Anchored paths
-use item_in_scope_or_crate_name; // Rust 2018 - Uniform Paths
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt
deleted file mode 100644 (file)
index 7dbcd39..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE@[0; 154)
-  USE_ITEM@[0; 17)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 16)
-      PATH@[4; 16)
-        PATH_SEGMENT@[4; 16)
-          COLONCOLON@[4; 6) "::"
-          NAME_REF@[6; 16)
-            IDENT@[6; 16) "crate_name"
-    SEMI@[16; 17) ";"
-  WHITESPACE@[17; 18) " "
-  COMMENT@[18; 45) "// Rust 2018 - All fl ..."
-  WHITESPACE@[45; 46) "\n"
-  USE_ITEM@[46; 61)
-    USE_KW@[46; 49) "use"
-    WHITESPACE@[49; 50) " "
-    USE_TREE@[50; 60)
-      PATH@[50; 60)
-        PATH_SEGMENT@[50; 60)
-          NAME_REF@[50; 60)
-            IDENT@[50; 60) "crate_name"
-    SEMI@[60; 61) ";"
-  WHITESPACE@[61; 62) " "
-  COMMENT@[62; 91) "// Rust 2018 - Anchor ..."
-  WHITESPACE@[91; 92) "\n"
-  USE_ITEM@[92; 124)
-    USE_KW@[92; 95) "use"
-    WHITESPACE@[95; 96) " "
-    USE_TREE@[96; 123)
-      PATH@[96; 123)
-        PATH_SEGMENT@[96; 123)
-          NAME_REF@[96; 123)
-            IDENT@[96; 123) "item_in_scope_or_crat ..."
-    SEMI@[123; 124) ";"
-  WHITESPACE@[124; 125) " "
-  COMMENT@[125; 153) "// Rust 2018 - Unifor ..."
-  WHITESPACE@[153; 154) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.rs
deleted file mode 100644 (file)
index f785acd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
-    let (a, b, ..) = ();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt
deleted file mode 100644 (file)
index aef3f7e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-SOURCE_FILE@[0; 39)
-  FN_DEF@[0; 38)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 38)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      LET_STMT@[16; 36)
-        LET_KW@[16; 19) "let"
-        WHITESPACE@[19; 20) " "
-        TUPLE_PAT@[20; 30)
-          L_PAREN@[20; 21) "("
-          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) "\n"
-      R_CURLY@[37; 38) "}"
-  WHITESPACE@[38; 39) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.rs
deleted file mode 100644 (file)
index 5a93469..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
-    let a = ();
-    let mut b = ();
-    let ref c = ();
-    let ref mut d = ();
-    let e @ _ = ();
-    let ref mut f @ g @ _ = ();
-    let box i = Box::new(1i32);
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt
deleted file mode 100644 (file)
index 189254a..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-SOURCE_FILE@[0; 178)
-  FN_DEF@[0; 177)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 177)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      LET_STMT@[16; 27)
-        LET_KW@[16; 19) "let"
-        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) "\n    "
-      LET_STMT@[32; 47)
-        LET_KW@[32; 35) "let"
-        WHITESPACE@[35; 36) " "
-        BIND_PAT@[36; 41)
-          MUT_KW@[36; 39) "mut"
-          WHITESPACE@[39; 40) " "
-          NAME@[40; 41)
-            IDENT@[40; 41) "b"
-        WHITESPACE@[41; 42) " "
-        EQ@[42; 43) "="
-        WHITESPACE@[43; 44) " "
-        TUPLE_EXPR@[44; 46)
-          L_PAREN@[44; 45) "("
-          R_PAREN@[45; 46) ")"
-        SEMI@[46; 47) ";"
-      WHITESPACE@[47; 52) "\n    "
-      LET_STMT@[52; 67)
-        LET_KW@[52; 55) "let"
-        WHITESPACE@[55; 56) " "
-        BIND_PAT@[56; 61)
-          REF_KW@[56; 59) "ref"
-          WHITESPACE@[59; 60) " "
-          NAME@[60; 61)
-            IDENT@[60; 61) "c"
-        WHITESPACE@[61; 62) " "
-        EQ@[62; 63) "="
-        WHITESPACE@[63; 64) " "
-        TUPLE_EXPR@[64; 66)
-          L_PAREN@[64; 65) "("
-          R_PAREN@[65; 66) ")"
-        SEMI@[66; 67) ";"
-      WHITESPACE@[67; 72) "\n    "
-      LET_STMT@[72; 91)
-        LET_KW@[72; 75) "let"
-        WHITESPACE@[75; 76) " "
-        BIND_PAT@[76; 85)
-          REF_KW@[76; 79) "ref"
-          WHITESPACE@[79; 80) " "
-          MUT_KW@[80; 83) "mut"
-          WHITESPACE@[83; 84) " "
-          NAME@[84; 85)
-            IDENT@[84; 85) "d"
-        WHITESPACE@[85; 86) " "
-        EQ@[86; 87) "="
-        WHITESPACE@[87; 88) " "
-        TUPLE_EXPR@[88; 90)
-          L_PAREN@[88; 89) "("
-          R_PAREN@[89; 90) ")"
-        SEMI@[90; 91) ";"
-      WHITESPACE@[91; 96) "\n    "
-      LET_STMT@[96; 111)
-        LET_KW@[96; 99) "let"
-        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) "\n    "
-      LET_STMT@[116; 143)
-        LET_KW@[116; 119) "let"
-        WHITESPACE@[119; 120) " "
-        BIND_PAT@[120; 137)
-          REF_KW@[120; 123) "ref"
-          WHITESPACE@[123; 124) " "
-          MUT_KW@[124; 127) "mut"
-          WHITESPACE@[127; 128) " "
-          NAME@[128; 129)
-            IDENT@[128; 129) "f"
-          WHITESPACE@[129; 130) " "
-          AT@[130; 131) "@"
-          WHITESPACE@[131; 132) " "
-          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; 148) "\n    "
-      LET_STMT@[148; 175)
-        LET_KW@[148; 151) "let"
-        WHITESPACE@[151; 152) " "
-        BIND_PAT@[152; 157)
-          BOX_KW@[152; 155) "box"
-          WHITESPACE@[155; 156) " "
-          NAME@[156; 157)
-            IDENT@[156; 157) "i"
-        WHITESPACE@[157; 158) " "
-        EQ@[158; 159) "="
-        WHITESPACE@[159; 160) " "
-        CALL_EXPR@[160; 174)
-          PATH_EXPR@[160; 168)
-            PATH@[160; 168)
-              PATH@[160; 163)
-                PATH_SEGMENT@[160; 163)
-                  NAME_REF@[160; 163)
-                    IDENT@[160; 163) "Box"
-              COLONCOLON@[163; 165) "::"
-              PATH_SEGMENT@[165; 168)
-                NAME_REF@[165; 168)
-                  IDENT@[165; 168) "new"
-          ARG_LIST@[168; 174)
-            L_PAREN@[168; 169) "("
-            LITERAL@[169; 173)
-              INT_NUMBER@[169; 173) "1i32"
-            R_PAREN@[173; 174) ")"
-        SEMI@[174; 175) ";"
-      WHITESPACE@[175; 176) "\n"
-      R_CURLY@[176; 177) "}"
-  WHITESPACE@[177; 178) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.rs
deleted file mode 100644 (file)
index bbf09e3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo(){
-    ;;;some_expr();;;;{;;;};;;;Ok(())
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt
deleted file mode 100644 (file)
index 601a5ba..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-SOURCE_FILE@[0; 50)
-  FN_DEF@[0; 49)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    BLOCK@[8; 49)
-      L_CURLY@[8; 9) "{"
-      WHITESPACE@[9; 14) "\n    "
-      SEMI@[14; 15) ";"
-      SEMI@[15; 16) ";"
-      SEMI@[16; 17) ";"
-      EXPR_STMT@[17; 29)
-        CALL_EXPR@[17; 28)
-          PATH_EXPR@[17; 26)
-            PATH@[17; 26)
-              PATH_SEGMENT@[17; 26)
-                NAME_REF@[17; 26)
-                  IDENT@[17; 26) "some_expr"
-          ARG_LIST@[26; 28)
-            L_PAREN@[26; 27) "("
-            R_PAREN@[27; 28) ")"
-        SEMI@[28; 29) ";"
-      SEMI@[29; 30) ";"
-      SEMI@[30; 31) ";"
-      SEMI@[31; 32) ";"
-      EXPR_STMT@[32; 38)
-        BLOCK_EXPR@[32; 37)
-          BLOCK@[32; 37)
-            L_CURLY@[32; 33) "{"
-            SEMI@[33; 34) ";"
-            SEMI@[34; 35) ";"
-            SEMI@[35; 36) ";"
-            R_CURLY@[36; 37) "}"
-        SEMI@[37; 38) ";"
-      SEMI@[38; 39) ";"
-      SEMI@[39; 40) ";"
-      SEMI@[40; 41) ";"
-      CALL_EXPR@[41; 47)
-        PATH_EXPR@[41; 43)
-          PATH@[41; 43)
-            PATH_SEGMENT@[41; 43)
-              NAME_REF@[41; 43)
-                IDENT@[41; 43) "Ok"
-        ARG_LIST@[43; 47)
-          L_PAREN@[43; 44) "("
-          TUPLE_EXPR@[44; 46)
-            L_PAREN@[44; 45) "("
-            R_PAREN@[45; 46) ")"
-          R_PAREN@[46; 47) ")"
-      WHITESPACE@[47; 48) "\n"
-      R_CURLY@[48; 49) "}"
-  WHITESPACE@[49; 50) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.rs
deleted file mode 100644 (file)
index ddd5901..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-struct Test<T>(T) where T: Clone;
-struct Test<T>(T);
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt
deleted file mode 100644 (file)
index 8534592..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-SOURCE_FILE@[0; 53)
-  STRUCT_DEF@[0; 33)
-    STRUCT_KW@[0; 6) "struct"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 11)
-      IDENT@[7; 11) "Test"
-    TYPE_PARAM_LIST@[11; 14)
-      L_ANGLE@[11; 12) "<"
-      TYPE_PARAM@[12; 13)
-        NAME@[12; 13)
-          IDENT@[12; 13) "T"
-      R_ANGLE@[13; 14) ">"
-    POS_FIELD_DEF_LIST@[14; 17)
-      L_PAREN@[14; 15) "("
-      POS_FIELD_DEF@[15; 16)
-        PATH_TYPE@[15; 16)
-          PATH@[15; 16)
-            PATH_SEGMENT@[15; 16)
-              NAME_REF@[15; 16)
-                IDENT@[15; 16) "T"
-      R_PAREN@[16; 17) ")"
-    WHITESPACE@[17; 18) " "
-    WHERE_CLAUSE@[18; 32)
-      WHERE_KW@[18; 23) "where"
-      WHITESPACE@[23; 24) " "
-      WHERE_PRED@[24; 32)
-        PATH_TYPE@[24; 25)
-          PATH@[24; 25)
-            PATH_SEGMENT@[24; 25)
-              NAME_REF@[24; 25)
-                IDENT@[24; 25) "T"
-        COLON@[25; 26) ":"
-        WHITESPACE@[26; 27) " "
-        TYPE_BOUND_LIST@[27; 32)
-          TYPE_BOUND@[27; 32)
-            PATH_TYPE@[27; 32)
-              PATH@[27; 32)
-                PATH_SEGMENT@[27; 32)
-                  NAME_REF@[27; 32)
-                    IDENT@[27; 32) "Clone"
-    SEMI@[32; 33) ";"
-  WHITESPACE@[33; 34) "\n"
-  STRUCT_DEF@[34; 52)
-    STRUCT_KW@[34; 40) "struct"
-    WHITESPACE@[40; 41) " "
-    NAME@[41; 45)
-      IDENT@[41; 45) "Test"
-    TYPE_PARAM_LIST@[45; 48)
-      L_ANGLE@[45; 46) "<"
-      TYPE_PARAM@[46; 47)
-        NAME@[46; 47)
-          IDENT@[46; 47) "T"
-      R_ANGLE@[47; 48) ">"
-    POS_FIELD_DEF_LIST@[48; 51)
-      L_PAREN@[48; 49) "("
-      POS_FIELD_DEF@[49; 50)
-        PATH_TYPE@[49; 50)
-          PATH@[49; 50)
-            PATH_SEGMENT@[49; 50)
-              NAME_REF@[49; 50)
-                IDENT@[49; 50) "T"
-      R_PAREN@[50; 51) ")"
-    SEMI@[51; 52) ";"
-  WHITESPACE@[52; 53) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.rs
deleted file mode 100644 (file)
index 635b9ac..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-struct S (
-    #[serde(with = "url_serde")]
-    pub Uri,
-);
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt
deleted file mode 100644 (file)
index 6dd3a9b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE@[0; 60)
-  STRUCT_DEF@[0; 59)
-    STRUCT_KW@[0; 6) "struct"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 8)
-      IDENT@[7; 8) "S"
-    WHITESPACE@[8; 9) " "
-    POS_FIELD_DEF_LIST@[9; 58)
-      L_PAREN@[9; 10) "("
-      WHITESPACE@[10; 15) "\n    "
-      POS_FIELD_DEF@[15; 55)
-        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) "\"url_serde\""
-              R_PAREN@[41; 42) ")"
-            R_BRACK@[42; 43) "]"
-        WHITESPACE@[43; 48) "\n    "
-        VISIBILITY@[48; 51)
-          PUB_KW@[48; 51) "pub"
-        WHITESPACE@[51; 52) " "
-        PATH_TYPE@[52; 55)
-          PATH@[52; 55)
-            PATH_SEGMENT@[52; 55)
-              NAME_REF@[52; 55)
-                IDENT@[52; 55) "Uri"
-      COMMA@[55; 56) ","
-      WHITESPACE@[56; 57) "\n"
-      R_PAREN@[57; 58) ")"
-    SEMI@[58; 59) ";"
-  WHITESPACE@[59; 60) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs
deleted file mode 100644 (file)
index 472cb88..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-trait Foo {
-    fn bar(_: u64, mut x: i32);
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
deleted file mode 100644 (file)
index 158236c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-SOURCE_FILE@[0; 46)
-  TRAIT_DEF@[0; 45)
-    TRAIT_KW@[0; 5) "trait"
-    WHITESPACE@[5; 6) " "
-    NAME@[6; 9)
-      IDENT@[6; 9) "Foo"
-    WHITESPACE@[9; 10) " "
-    ITEM_LIST@[10; 45)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      FN_DEF@[16; 43)
-        FN_KW@[16; 18) "fn"
-        WHITESPACE@[18; 19) " "
-        NAME@[19; 22)
-          IDENT@[19; 22) "bar"
-        PARAM_LIST@[22; 42)
-          L_PAREN@[22; 23) "("
-          PARAM@[23; 29)
-            PLACEHOLDER_PAT@[23; 24)
-              UNDERSCORE@[23; 24) "_"
-            COLON@[24; 25) ":"
-            WHITESPACE@[25; 26) " "
-            PATH_TYPE@[26; 29)
-              PATH@[26; 29)
-                PATH_SEGMENT@[26; 29)
-                  NAME_REF@[26; 29)
-                    IDENT@[26; 29) "u64"
-          COMMA@[29; 30) ","
-          WHITESPACE@[30; 31) " "
-          PARAM@[31; 41)
-            BIND_PAT@[31; 36)
-              MUT_KW@[31; 34) "mut"
-              WHITESPACE@[34; 35) " "
-              NAME@[35; 36)
-                IDENT@[35; 36) "x"
-            COLON@[36; 37) ":"
-            WHITESPACE@[37; 38) " "
-            PATH_TYPE@[38; 41)
-              PATH@[38; 41)
-                PATH_SEGMENT@[38; 41)
-                  NAME_REF@[38; 41)
-                    IDENT@[38; 41) "i32"
-          R_PAREN@[41; 42) ")"
-        SEMI@[42; 43) ";"
-      WHITESPACE@[43; 44) "\n"
-      R_CURLY@[44; 45) "}"
-  WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.rs
deleted file mode 100644 (file)
index edb470c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-type A = foo!();
-type B = crate::foo!();
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt
deleted file mode 100644 (file)
index 892dc81..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SOURCE_FILE@[0; 41)
-  TYPE_ALIAS_DEF@[0; 16)
-    TYPE_KW@[0; 4) "type"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "A"
-    WHITESPACE@[6; 7) " "
-    EQ@[7; 8) "="
-    WHITESPACE@[8; 9) " "
-    MACRO_CALL@[9; 15)
-      PATH@[9; 12)
-        PATH_SEGMENT@[9; 12)
-          NAME_REF@[9; 12)
-            IDENT@[9; 12) "foo"
-      EXCL@[12; 13) "!"
-      TOKEN_TREE@[13; 15)
-        L_PAREN@[13; 14) "("
-        R_PAREN@[14; 15) ")"
-    SEMI@[15; 16) ";"
-  WHITESPACE@[16; 17) "\n"
-  TYPE_ALIAS_DEF@[17; 40)
-    TYPE_KW@[17; 21) "type"
-    WHITESPACE@[21; 22) " "
-    NAME@[22; 23)
-      IDENT@[22; 23) "B"
-    WHITESPACE@[23; 24) " "
-    EQ@[24; 25) "="
-    WHITESPACE@[25; 26) " "
-    MACRO_CALL@[26; 39)
-      PATH@[26; 36)
-        PATH@[26; 31)
-          PATH_SEGMENT@[26; 31)
-            CRATE_KW@[26; 31) "crate"
-        COLONCOLON@[31; 33) "::"
-        PATH_SEGMENT@[33; 36)
-          NAME_REF@[33; 36)
-            IDENT@[33; 36) "foo"
-      EXCL@[36; 37) "!"
-      TOKEN_TREE@[37; 39)
-        L_PAREN@[37; 38) "("
-        R_PAREN@[38; 39) ")"
-    SEMI@[39; 40) ";"
-  WHITESPACE@[40; 41) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.rs
deleted file mode 100644 (file)
index 4d68cce..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-enum F{}
-impl F {
-     //! This is a doc comment
-     #![doc("This is also a doc comment")]
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt
deleted file mode 100644 (file)
index 0ef3eeb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-SOURCE_FILE@[0; 94)
-  ENUM_DEF@[0; 8)
-    ENUM_KW@[0; 4) "enum"
-    WHITESPACE@[4; 5) " "
-    NAME@[5; 6)
-      IDENT@[5; 6) "F"
-    ENUM_VARIANT_LIST@[6; 8)
-      L_CURLY@[6; 7) "{"
-      R_CURLY@[7; 8) "}"
-  WHITESPACE@[8; 9) "\n"
-  IMPL_BLOCK@[9; 93)
-    IMPL_KW@[9; 13) "impl"
-    WHITESPACE@[13; 14) " "
-    PATH_TYPE@[14; 15)
-      PATH@[14; 15)
-        PATH_SEGMENT@[14; 15)
-          NAME_REF@[14; 15)
-            IDENT@[14; 15) "F"
-    WHITESPACE@[15; 16) " "
-    ITEM_LIST@[16; 93)
-      L_CURLY@[16; 17) "{"
-      WHITESPACE@[17; 23) "\n     "
-      COMMENT@[23; 48) "//! This is a doc com ..."
-      WHITESPACE@[48; 54) "\n     "
-      ATTR@[54; 91)
-        POUND@[54; 55) "#"
-        EXCL@[55; 56) "!"
-        TOKEN_TREE@[56; 91)
-          L_BRACK@[56; 57) "["
-          IDENT@[57; 60) "doc"
-          TOKEN_TREE@[60; 90)
-            L_PAREN@[60; 61) "("
-            STRING@[61; 89) "\"This is also a doc c ..."
-            R_PAREN@[89; 90) ")"
-          R_BRACK@[90; 91) "]"
-      WHITESPACE@[91; 92) "\n"
-      R_CURLY@[92; 93) "}"
-  WHITESPACE@[93; 94) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.rs
deleted file mode 100644 (file)
index f1bd72f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    match () {
-        _ if foo => (),
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt
deleted file mode 100644 (file)
index d53e10e..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-SOURCE_FILE@[0; 58)
-  FN_DEF@[0; 57)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 57)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      MATCH_EXPR@[15; 55)
-        MATCH_KW@[15; 20) "match"
-        WHITESPACE@[20; 21) " "
-        TUPLE_EXPR@[21; 23)
-          L_PAREN@[21; 22) "("
-          R_PAREN@[22; 23) ")"
-        WHITESPACE@[23; 24) " "
-        MATCH_ARM_LIST@[24; 55)
-          L_CURLY@[24; 25) "{"
-          WHITESPACE@[25; 34) "\n        "
-          MATCH_ARM@[34; 48)
-            PLACEHOLDER_PAT@[34; 35)
-              UNDERSCORE@[34; 35) "_"
-            WHITESPACE@[35; 36) " "
-            MATCH_GUARD@[36; 42)
-              IF_KW@[36; 38) "if"
-              WHITESPACE@[38; 39) " "
-              PATH_EXPR@[39; 42)
-                PATH@[39; 42)
-                  PATH_SEGMENT@[39; 42)
-                    NAME_REF@[39; 42)
-                      IDENT@[39; 42) "foo"
-            WHITESPACE@[42; 43) " "
-            FAT_ARROW@[43; 45) "=>"
-            WHITESPACE@[45; 46) " "
-            TUPLE_EXPR@[46; 48)
-              L_PAREN@[46; 47) "("
-              R_PAREN@[47; 48) ")"
-          COMMA@[48; 49) ","
-          WHITESPACE@[49; 54) "\n    "
-          R_CURLY@[54; 55) "}"
-      WHITESPACE@[55; 56) "\n"
-      R_CURLY@[56; 57) "}"
-  WHITESPACE@[57; 58) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.rs
deleted file mode 100644 (file)
index 54a67c9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-fn foo() {
-    match () {
-        #![doc("Inner attribute")]
-        #![doc("Can be")]
-        #![doc("Stacked")]
-        _ => (),
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt
deleted file mode 100644 (file)
index 17c2963..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-SOURCE_FILE@[0; 139)
-  FN_DEF@[0; 138)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 138)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      MATCH_EXPR@[15; 136)
-        MATCH_KW@[15; 20) "match"
-        WHITESPACE@[20; 21) " "
-        TUPLE_EXPR@[21; 23)
-          L_PAREN@[21; 22) "("
-          R_PAREN@[22; 23) ")"
-        WHITESPACE@[23; 24) " "
-        MATCH_ARM_LIST@[24; 136)
-          L_CURLY@[24; 25) "{"
-          WHITESPACE@[25; 34) "\n        "
-          ATTR@[34; 60)
-            POUND@[34; 35) "#"
-            EXCL@[35; 36) "!"
-            TOKEN_TREE@[36; 60)
-              L_BRACK@[36; 37) "["
-              IDENT@[37; 40) "doc"
-              TOKEN_TREE@[40; 59)
-                L_PAREN@[40; 41) "("
-                STRING@[41; 58) "\"Inner attribute\""
-                R_PAREN@[58; 59) ")"
-              R_BRACK@[59; 60) "]"
-          WHITESPACE@[60; 69) "\n        "
-          ATTR@[69; 86)
-            POUND@[69; 70) "#"
-            EXCL@[70; 71) "!"
-            TOKEN_TREE@[71; 86)
-              L_BRACK@[71; 72) "["
-              IDENT@[72; 75) "doc"
-              TOKEN_TREE@[75; 85)
-                L_PAREN@[75; 76) "("
-                STRING@[76; 84) "\"Can be\""
-                R_PAREN@[84; 85) ")"
-              R_BRACK@[85; 86) "]"
-          WHITESPACE@[86; 95) "\n        "
-          ATTR@[95; 113)
-            POUND@[95; 96) "#"
-            EXCL@[96; 97) "!"
-            TOKEN_TREE@[97; 113)
-              L_BRACK@[97; 98) "["
-              IDENT@[98; 101) "doc"
-              TOKEN_TREE@[101; 112)
-                L_PAREN@[101; 102) "("
-                STRING@[102; 111) "\"Stacked\""
-                R_PAREN@[111; 112) ")"
-              R_BRACK@[112; 113) "]"
-          WHITESPACE@[113; 122) "\n        "
-          MATCH_ARM@[122; 129)
-            PLACEHOLDER_PAT@[122; 123)
-              UNDERSCORE@[122; 123) "_"
-            WHITESPACE@[123; 124) " "
-            FAT_ARROW@[124; 126) "=>"
-            WHITESPACE@[126; 127) " "
-            TUPLE_EXPR@[127; 129)
-              L_PAREN@[127; 128) "("
-              R_PAREN@[128; 129) ")"
-          COMMA@[129; 130) ","
-          WHITESPACE@[130; 135) "\n    "
-          R_CURLY@[135; 136) "}"
-      WHITESPACE@[136; 137) "\n"
-      R_CURLY@[137; 138) "}"
-  WHITESPACE@[138; 139) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.rs
deleted file mode 100644 (file)
index 676db42..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-fn foo() {
-    match () {
-        #[cfg(feature = "some")]
-        _ => (),
-        #[cfg(feature = "other")]
-        _ => (),
-        #[cfg(feature = "many")]
-        #[cfg(feature = "attributes")]
-        #[cfg(feature = "before")]
-        _ => (),
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt
deleted file mode 100644 (file)
index 9c238e8..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-SOURCE_FILE@[0; 259)
-  FN_DEF@[0; 258)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 258)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      MATCH_EXPR@[15; 256)
-        MATCH_KW@[15; 20) "match"
-        WHITESPACE@[20; 21) " "
-        TUPLE_EXPR@[21; 23)
-          L_PAREN@[21; 22) "("
-          R_PAREN@[22; 23) ")"
-        WHITESPACE@[23; 24) " "
-        MATCH_ARM_LIST@[24; 256)
-          L_CURLY@[24; 25) "{"
-          WHITESPACE@[25; 34) "\n        "
-          MATCH_ARM@[34; 74)
-            ATTR@[34; 58)
-              POUND@[34; 35) "#"
-              TOKEN_TREE@[35; 58)
-                L_BRACK@[35; 36) "["
-                IDENT@[36; 39) "cfg"
-                TOKEN_TREE@[39; 57)
-                  L_PAREN@[39; 40) "("
-                  IDENT@[40; 47) "feature"
-                  WHITESPACE@[47; 48) " "
-                  EQ@[48; 49) "="
-                  WHITESPACE@[49; 50) " "
-                  STRING@[50; 56) "\"some\""
-                  R_PAREN@[56; 57) ")"
-                R_BRACK@[57; 58) "]"
-            WHITESPACE@[58; 67) "\n        "
-            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) ")"
-          COMMA@[74; 75) ","
-          WHITESPACE@[75; 84) "\n        "
-          MATCH_ARM@[84; 125)
-            ATTR@[84; 109)
-              POUND@[84; 85) "#"
-              TOKEN_TREE@[85; 109)
-                L_BRACK@[85; 86) "["
-                IDENT@[86; 89) "cfg"
-                TOKEN_TREE@[89; 108)
-                  L_PAREN@[89; 90) "("
-                  IDENT@[90; 97) "feature"
-                  WHITESPACE@[97; 98) " "
-                  EQ@[98; 99) "="
-                  WHITESPACE@[99; 100) " "
-                  STRING@[100; 107) "\"other\""
-                  R_PAREN@[107; 108) ")"
-                R_BRACK@[108; 109) "]"
-            WHITESPACE@[109; 118) "\n        "
-            PLACEHOLDER_PAT@[118; 119)
-              UNDERSCORE@[118; 119) "_"
-            WHITESPACE@[119; 120) " "
-            FAT_ARROW@[120; 122) "=>"
-            WHITESPACE@[122; 123) " "
-            TUPLE_EXPR@[123; 125)
-              L_PAREN@[123; 124) "("
-              R_PAREN@[124; 125) ")"
-          COMMA@[125; 126) ","
-          WHITESPACE@[126; 135) "\n        "
-          MATCH_ARM@[135; 249)
-            ATTR@[135; 159)
-              POUND@[135; 136) "#"
-              TOKEN_TREE@[136; 159)
-                L_BRACK@[136; 137) "["
-                IDENT@[137; 140) "cfg"
-                TOKEN_TREE@[140; 158)
-                  L_PAREN@[140; 141) "("
-                  IDENT@[141; 148) "feature"
-                  WHITESPACE@[148; 149) " "
-                  EQ@[149; 150) "="
-                  WHITESPACE@[150; 151) " "
-                  STRING@[151; 157) "\"many\""
-                  R_PAREN@[157; 158) ")"
-                R_BRACK@[158; 159) "]"
-            WHITESPACE@[159; 168) "\n        "
-            ATTR@[168; 198)
-              POUND@[168; 169) "#"
-              TOKEN_TREE@[169; 198)
-                L_BRACK@[169; 170) "["
-                IDENT@[170; 173) "cfg"
-                TOKEN_TREE@[173; 197)
-                  L_PAREN@[173; 174) "("
-                  IDENT@[174; 181) "feature"
-                  WHITESPACE@[181; 182) " "
-                  EQ@[182; 183) "="
-                  WHITESPACE@[183; 184) " "
-                  STRING@[184; 196) "\"attributes\""
-                  R_PAREN@[196; 197) ")"
-                R_BRACK@[197; 198) "]"
-            WHITESPACE@[198; 207) "\n        "
-            ATTR@[207; 233)
-              POUND@[207; 208) "#"
-              TOKEN_TREE@[208; 233)
-                L_BRACK@[208; 209) "["
-                IDENT@[209; 212) "cfg"
-                TOKEN_TREE@[212; 232)
-                  L_PAREN@[212; 213) "("
-                  IDENT@[213; 220) "feature"
-                  WHITESPACE@[220; 221) " "
-                  EQ@[221; 222) "="
-                  WHITESPACE@[222; 223) " "
-                  STRING@[223; 231) "\"before\""
-                  R_PAREN@[231; 232) ")"
-                R_BRACK@[232; 233) "]"
-            WHITESPACE@[233; 242) "\n        "
-            PLACEHOLDER_PAT@[242; 243)
-              UNDERSCORE@[242; 243) "_"
-            WHITESPACE@[243; 244) " "
-            FAT_ARROW@[244; 246) "=>"
-            WHITESPACE@[246; 247) " "
-            TUPLE_EXPR@[247; 249)
-              L_PAREN@[247; 248) "("
-              R_PAREN@[248; 249) ")"
-          COMMA@[249; 250) ","
-          WHITESPACE@[250; 255) "\n    "
-          R_CURLY@[255; 256) "}"
-      WHITESPACE@[256; 257) "\n"
-      R_CURLY@[257; 258) "}"
-  WHITESPACE@[258; 259) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.rs
deleted file mode 100644 (file)
index e8fdf74..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-fn foo<#[derive(Lifetime)] 'a, #[derive(Type)] T>(_: &'a T) {
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
deleted file mode 100644 (file)
index a459952..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-SOURCE_FILE@[0; 64)
-  FN_DEF@[0; 63)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    TYPE_PARAM_LIST@[6; 49)
-      L_ANGLE@[6; 7) "<"
-      LIFETIME_PARAM@[7; 29)
-        ATTR@[7; 26)
-          POUND@[7; 8) "#"
-          TOKEN_TREE@[8; 26)
-            L_BRACK@[8; 9) "["
-            IDENT@[9; 15) "derive"
-            TOKEN_TREE@[15; 25)
-              L_PAREN@[15; 16) "("
-              IDENT@[16; 24) "Lifetime"
-              R_PAREN@[24; 25) ")"
-            R_BRACK@[25; 26) "]"
-        WHITESPACE@[26; 27) " "
-        LIFETIME@[27; 29) "\'a"
-      COMMA@[29; 30) ","
-      WHITESPACE@[30; 31) " "
-      TYPE_PARAM@[31; 48)
-        ATTR@[31; 46)
-          POUND@[31; 32) "#"
-          TOKEN_TREE@[32; 46)
-            L_BRACK@[32; 33) "["
-            IDENT@[33; 39) "derive"
-            TOKEN_TREE@[39; 45)
-              L_PAREN@[39; 40) "("
-              IDENT@[40; 44) "Type"
-              R_PAREN@[44; 45) ")"
-            R_BRACK@[45; 46) "]"
-        WHITESPACE@[46; 47) " "
-        NAME@[47; 48)
-          IDENT@[47; 48) "T"
-      R_ANGLE@[48; 49) ">"
-    PARAM_LIST@[49; 59)
-      L_PAREN@[49; 50) "("
-      PARAM@[50; 58)
-        PLACEHOLDER_PAT@[50; 51)
-          UNDERSCORE@[50; 51) "_"
-        COLON@[51; 52) ":"
-        WHITESPACE@[52; 53) " "
-        REFERENCE_TYPE@[53; 58)
-          AMP@[53; 54) "&"
-          LIFETIME@[54; 56) "\'a"
-          WHITESPACE@[56; 57) " "
-          PATH_TYPE@[57; 58)
-            PATH@[57; 58)
-              PATH_SEGMENT@[57; 58)
-                NAME_REF@[57; 58)
-                  IDENT@[57; 58) "T"
-      R_PAREN@[58; 59) ")"
-    WHITESPACE@[59; 60) " "
-    BLOCK@[60; 63)
-      L_CURLY@[60; 61) "{"
-      WHITESPACE@[61; 62) "\n"
-      R_CURLY@[62; 63) "}"
-  WHITESPACE@[63; 64) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.rs
deleted file mode 100644 (file)
index c59adda..0000000
+++ /dev/null
@@ -1 +0,0 @@
-extern "C" { fn printf(format: *const i8, ...) -> i32; }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt
deleted file mode 100644 (file)
index 836e8e5..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE@[0; 57)
-  EXTERN_BLOCK@[0; 56)
-    ABI@[0; 10)
-      EXTERN_KW@[0; 6) "extern"
-      WHITESPACE@[6; 7) " "
-      STRING@[7; 10) "\"C\""
-    WHITESPACE@[10; 11) " "
-    EXTERN_ITEM_LIST@[11; 56)
-      L_CURLY@[11; 12) "{"
-      WHITESPACE@[12; 13) " "
-      FN_DEF@[13; 54)
-        FN_KW@[13; 15) "fn"
-        WHITESPACE@[15; 16) " "
-        NAME@[16; 22)
-          IDENT@[16; 22) "printf"
-        PARAM_LIST@[22; 46)
-          L_PAREN@[22; 23) "("
-          PARAM@[23; 40)
-            BIND_PAT@[23; 29)
-              NAME@[23; 29)
-                IDENT@[23; 29) "format"
-            COLON@[29; 30) ":"
-            WHITESPACE@[30; 31) " "
-            POINTER_TYPE@[31; 40)
-              STAR@[31; 32) "*"
-              CONST_KW@[32; 37) "const"
-              WHITESPACE@[37; 38) " "
-              PATH_TYPE@[38; 40)
-                PATH@[38; 40)
-                  PATH_SEGMENT@[38; 40)
-                    NAME_REF@[38; 40)
-                      IDENT@[38; 40) "i8"
-          COMMA@[40; 41) ","
-          WHITESPACE@[41; 42) " "
-          DOTDOTDOT@[42; 45) "..."
-          R_PAREN@[45; 46) ")"
-        WHITESPACE@[46; 47) " "
-        RET_TYPE@[47; 53)
-          THIN_ARROW@[47; 49) "->"
-          WHITESPACE@[49; 50) " "
-          PATH_TYPE@[50; 53)
-            PATH@[50; 53)
-              PATH_SEGMENT@[50; 53)
-                NAME_REF@[50; 53)
-                  IDENT@[50; 53) "i32"
-        SEMI@[53; 54) ";"
-      WHITESPACE@[54; 55) " "
-      R_CURLY@[55; 56) "}"
-  WHITESPACE@[56; 57) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.rs
deleted file mode 100644 (file)
index f4adcb6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-async fn foo() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt
deleted file mode 100644 (file)
index f0610e7..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 18)
-  FN_DEF@[0; 17)
-    ASYNC_KW@[0; 5) "async"
-    WHITESPACE@[5; 6) " "
-    FN_KW@[6; 8) "fn"
-    WHITESPACE@[8; 9) " "
-    NAME@[9; 12)
-      IDENT@[9; 12) "foo"
-    PARAM_LIST@[12; 14)
-      L_PAREN@[12; 13) "("
-      R_PAREN@[13; 14) ")"
-    WHITESPACE@[14; 15) " "
-    BLOCK@[15; 17)
-      L_CURLY@[15; 16) "{"
-      R_CURLY@[16; 17) "}"
-  WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.rs
deleted file mode 100644 (file)
index 0f454d1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo() { crate::foo(); }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt
deleted file mode 100644 (file)
index 4afe9c5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE@[0; 27)
-  FN_DEF@[0; 26)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 26)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) " "
-      EXPR_STMT@[11; 24)
-        CALL_EXPR@[11; 23)
-          PATH_EXPR@[11; 21)
-            PATH@[11; 21)
-              PATH@[11; 16)
-                PATH_SEGMENT@[11; 16)
-                  CRATE_KW@[11; 16) "crate"
-              COLONCOLON@[16; 18) "::"
-              PATH_SEGMENT@[18; 21)
-                NAME_REF@[18; 21)
-                  IDENT@[18; 21) "foo"
-          ARG_LIST@[21; 23)
-            L_PAREN@[21; 22) "("
-            R_PAREN@[22; 23) ")"
-        SEMI@[23; 24) ";"
-      WHITESPACE@[24; 25) " "
-      R_CURLY@[25; 26) "}"
-  WHITESPACE@[26; 27) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.rs
deleted file mode 100644 (file)
index a6c7760..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
-    S { #[cfg(test)] field: 1 }
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt
deleted file mode 100644 (file)
index f9c5ec1..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-SOURCE_FILE@[0; 46)
-  FN_DEF@[0; 45)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 45)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      STRUCT_LIT@[16; 43)
-        PATH@[16; 17)
-          PATH_SEGMENT@[16; 17)
-            NAME_REF@[16; 17)
-              IDENT@[16; 17) "S"
-        WHITESPACE@[17; 18) " "
-        NAMED_FIELD_LIST@[18; 43)
-          L_CURLY@[18; 19) "{"
-          WHITESPACE@[19; 20) " "
-          NAMED_FIELD@[20; 41)
-            ATTR@[20; 32)
-              POUND@[20; 21) "#"
-              TOKEN_TREE@[21; 32)
-                L_BRACK@[21; 22) "["
-                IDENT@[22; 25) "cfg"
-                TOKEN_TREE@[25; 31)
-                  L_PAREN@[25; 26) "("
-                  IDENT@[26; 30) "test"
-                  R_PAREN@[30; 31) ")"
-                R_BRACK@[31; 32) "]"
-            WHITESPACE@[32; 33) " "
-            NAME_REF@[33; 38)
-              IDENT@[33; 38) "field"
-            COLON@[38; 39) ":"
-            WHITESPACE@[39; 40) " "
-            LITERAL@[40; 41)
-              INT_NUMBER@[40; 41) "1"
-          WHITESPACE@[41; 42) " "
-          R_CURLY@[42; 43) "}"
-      WHITESPACE@[43; 44) "\n"
-      R_CURLY@[44; 45) "}"
-  WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.rs
deleted file mode 100644 (file)
index b28c078..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn foo() {
-    #[A] foo();
-    #[B] bar!{}
-    #[C] #[D] {}
-    #[D] return ();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt
deleted file mode 100644 (file)
index c15c757..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-SOURCE_FILE@[0; 82)
-  FN_DEF@[0; 81)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 81)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 26)
-        ATTR@[15; 19)
-          POUND@[15; 16) "#"
-          TOKEN_TREE@[16; 19)
-            L_BRACK@[16; 17) "["
-            IDENT@[17; 18) "A"
-            R_BRACK@[18; 19) "]"
-        WHITESPACE@[19; 20) " "
-        CALL_EXPR@[20; 25)
-          PATH_EXPR@[20; 23)
-            PATH@[20; 23)
-              PATH_SEGMENT@[20; 23)
-                NAME_REF@[20; 23)
-                  IDENT@[20; 23) "foo"
-          ARG_LIST@[23; 25)
-            L_PAREN@[23; 24) "("
-            R_PAREN@[24; 25) ")"
-        SEMI@[25; 26) ";"
-      WHITESPACE@[26; 31) "\n    "
-      EXPR_STMT@[31; 42)
-        ATTR@[31; 35)
-          POUND@[31; 32) "#"
-          TOKEN_TREE@[32; 35)
-            L_BRACK@[32; 33) "["
-            IDENT@[33; 34) "B"
-            R_BRACK@[34; 35) "]"
-        WHITESPACE@[35; 36) " "
-        MACRO_CALL@[36; 42)
-          PATH@[36; 39)
-            PATH_SEGMENT@[36; 39)
-              NAME_REF@[36; 39)
-                IDENT@[36; 39) "bar"
-          EXCL@[39; 40) "!"
-          TOKEN_TREE@[40; 42)
-            L_CURLY@[40; 41) "{"
-            R_CURLY@[41; 42) "}"
-      WHITESPACE@[42; 47) "\n    "
-      EXPR_STMT@[47; 59)
-        ATTR@[47; 51)
-          POUND@[47; 48) "#"
-          TOKEN_TREE@[48; 51)
-            L_BRACK@[48; 49) "["
-            IDENT@[49; 50) "C"
-            R_BRACK@[50; 51) "]"
-        WHITESPACE@[51; 52) " "
-        ATTR@[52; 56)
-          POUND@[52; 53) "#"
-          TOKEN_TREE@[53; 56)
-            L_BRACK@[53; 54) "["
-            IDENT@[54; 55) "D"
-            R_BRACK@[55; 56) "]"
-        WHITESPACE@[56; 57) " "
-        BLOCK_EXPR@[57; 59)
-          BLOCK@[57; 59)
-            L_CURLY@[57; 58) "{"
-            R_CURLY@[58; 59) "}"
-      WHITESPACE@[59; 64) "\n    "
-      EXPR_STMT@[64; 79)
-        ATTR@[64; 68)
-          POUND@[64; 65) "#"
-          TOKEN_TREE@[65; 68)
-            L_BRACK@[65; 66) "["
-            IDENT@[66; 67) "D"
-            R_BRACK@[67; 68) "]"
-        WHITESPACE@[68; 69) " "
-        RETURN_EXPR@[69; 78)
-          RETURN_KW@[69; 75) "return"
-          WHITESPACE@[75; 76) " "
-          TUPLE_EXPR@[76; 78)
-            L_PAREN@[76; 77) "("
-            R_PAREN@[77; 78) ")"
-        SEMI@[78; 79) ";"
-      WHITESPACE@[79; 80) "\n"
-      R_CURLY@[80; 81) "}"
-  WHITESPACE@[81; 82) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.rs
deleted file mode 100644 (file)
index 9c5c8eb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn foo() {
-    { #[A] bar!()? }
-    #[B] &()
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
deleted file mode 100644 (file)
index 62a6a7b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-SOURCE_FILE@[0; 47)
-  FN_DEF@[0; 46)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 46)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 31)
-        BLOCK_EXPR@[15; 31)
-          BLOCK@[15; 31)
-            L_CURLY@[15; 16) "{"
-            WHITESPACE@[16; 17) " "
-            TRY_EXPR@[17; 29)
-              ATTR@[17; 21)
-                POUND@[17; 18) "#"
-                TOKEN_TREE@[18; 21)
-                  L_BRACK@[18; 19) "["
-                  IDENT@[19; 20) "A"
-                  R_BRACK@[20; 21) "]"
-              WHITESPACE@[21; 22) " "
-              MACRO_CALL@[22; 28)
-                PATH@[22; 25)
-                  PATH_SEGMENT@[22; 25)
-                    NAME_REF@[22; 25)
-                      IDENT@[22; 25) "bar"
-                EXCL@[25; 26) "!"
-                TOKEN_TREE@[26; 28)
-                  L_PAREN@[26; 27) "("
-                  R_PAREN@[27; 28) ")"
-              QUESTION@[28; 29) "?"
-            WHITESPACE@[29; 30) " "
-            R_CURLY@[30; 31) "}"
-      WHITESPACE@[31; 36) "\n    "
-      REF_EXPR@[36; 44)
-        ATTR@[36; 40)
-          POUND@[36; 37) "#"
-          TOKEN_TREE@[37; 40)
-            L_BRACK@[37; 38) "["
-            IDENT@[38; 39) "B"
-            R_BRACK@[39; 40) "]"
-        WHITESPACE@[40; 41) " "
-        AMP@[41; 42) "&"
-        TUPLE_EXPR@[42; 44)
-          L_PAREN@[42; 43) "("
-          R_PAREN@[43; 44) ")"
-      WHITESPACE@[44; 45) "\n"
-      R_CURLY@[45; 46) "}"
-  WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0128_combined_fns.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0128_combined_fns.rs
deleted file mode 100644 (file)
index 46af91b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-unsafe async fn foo() {}
-const unsafe fn bar() {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0128_combined_fns.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0128_combined_fns.txt
deleted file mode 100644 (file)
index 2a16aeb..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE@[0; 50)
-  FN_DEF@[0; 24)
-    UNSAFE_KW@[0; 6) "unsafe"
-    WHITESPACE@[6; 7) " "
-    ASYNC_KW@[7; 12) "async"
-    WHITESPACE@[12; 13) " "
-    FN_KW@[13; 15) "fn"
-    WHITESPACE@[15; 16) " "
-    NAME@[16; 19)
-      IDENT@[16; 19) "foo"
-    PARAM_LIST@[19; 21)
-      L_PAREN@[19; 20) "("
-      R_PAREN@[20; 21) ")"
-    WHITESPACE@[21; 22) " "
-    BLOCK@[22; 24)
-      L_CURLY@[22; 23) "{"
-      R_CURLY@[23; 24) "}"
-  WHITESPACE@[24; 25) "\n"
-  FN_DEF@[25; 49)
-    CONST_KW@[25; 30) "const"
-    WHITESPACE@[30; 31) " "
-    UNSAFE_KW@[31; 37) "unsafe"
-    WHITESPACE@[37; 38) " "
-    FN_KW@[38; 40) "fn"
-    WHITESPACE@[40; 41) " "
-    NAME@[41; 44)
-      IDENT@[41; 44) "bar"
-    PARAM_LIST@[44; 46)
-      L_PAREN@[44; 45) "("
-      R_PAREN@[45; 46) ")"
-    WHITESPACE@[46; 47) " "
-    BLOCK@[47; 49)
-      L_CURLY@[47; 48) "{"
-      R_CURLY@[48; 49) "}"
-  WHITESPACE@[49; 50) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0129_marco_pat.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0129_marco_pat.rs
deleted file mode 100644 (file)
index 811181d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
-    let m!(x) = 0;
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0129_marco_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0129_marco_pat.txt
deleted file mode 100644 (file)
index 50b4ab2..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-SOURCE_FILE@[0; 33)
-  FN_DEF@[0; 32)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 32)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      LET_STMT@[16; 30)
-        LET_KW@[16; 19) "let"
-        WHITESPACE@[19; 20) " "
-        MACRO_CALL@[20; 25)
-          PATH_PAT@[20; 21)
-            PATH@[20; 21)
-              PATH_SEGMENT@[20; 21)
-                NAME_REF@[20; 21)
-                  IDENT@[20; 21) "m"
-          EXCL@[21; 22) "!"
-          TOKEN_TREE@[22; 25)
-            L_PAREN@[22; 23) "("
-            IDENT@[23; 24) "x"
-            R_PAREN@[24; 25) ")"
-        WHITESPACE@[25; 26) " "
-        EQ@[26; 27) "="
-        WHITESPACE@[27; 28) " "
-        LITERAL@[28; 29)
-          INT_NUMBER@[28; 29) "0"
-        SEMI@[29; 30) ";"
-      WHITESPACE@[30; 31) "\n"
-      R_CURLY@[31; 32) "}"
-  WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0130_let_stmt.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0130_let_stmt.rs
deleted file mode 100644 (file)
index 86803fe..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-fn foo() {
-    let a;
-    let b: i32;
-    let c = 92;
-    let d: i32 = 92;
-    let e: !;
-    let _: ! = {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0130_let_stmt.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0130_let_stmt.txt
deleted file mode 100644 (file)
index 82c1eb0..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-SOURCE_FILE@[0; 110)
-  FN_DEF@[0; 109)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 109)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 21)
-        LET_KW@[15; 18) "let"
-        WHITESPACE@[18; 19) " "
-        BIND_PAT@[19; 20)
-          NAME@[19; 20)
-            IDENT@[19; 20) "a"
-        SEMI@[20; 21) ";"
-      WHITESPACE@[21; 26) "\n    "
-      LET_STMT@[26; 37)
-        LET_KW@[26; 29) "let"
-        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) "\n    "
-      LET_STMT@[42; 53)
-        LET_KW@[42; 45) "let"
-        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) "\n    "
-      LET_STMT@[58; 74)
-        LET_KW@[58; 61) "let"
-        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; 79) "\n    "
-      LET_STMT@[79; 88)
-        LET_KW@[79; 82) "let"
-        WHITESPACE@[82; 83) " "
-        BIND_PAT@[83; 84)
-          NAME@[83; 84)
-            IDENT@[83; 84) "e"
-        COLON@[84; 85) ":"
-        WHITESPACE@[85; 86) " "
-        NEVER_TYPE@[86; 87)
-          EXCL@[86; 87) "!"
-        SEMI@[87; 88) ";"
-      WHITESPACE@[88; 93) "\n    "
-      LET_STMT@[93; 107)
-        LET_KW@[93; 96) "let"
-        WHITESPACE@[96; 97) " "
-        PLACEHOLDER_PAT@[97; 98)
-          UNDERSCORE@[97; 98) "_"
-        COLON@[98; 99) ":"
-        WHITESPACE@[99; 100) " "
-        NEVER_TYPE@[100; 101)
-          EXCL@[100; 101) "!"
-        WHITESPACE@[101; 102) " "
-        EQ@[102; 103) "="
-        WHITESPACE@[103; 104) " "
-        BLOCK_EXPR@[104; 106)
-          BLOCK@[104; 106)
-            L_CURLY@[104; 105) "{"
-            R_CURLY@[105; 106) "}"
-        SEMI@[106; 107) ";"
-      WHITESPACE@[107; 108) "\n"
-      R_CURLY@[108; 109) "}"
-  WHITESPACE@[109; 110) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0130_try_block_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0130_try_block_expr.rs
deleted file mode 100644 (file)
index 0f1b41e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn foo() {
-    let _ = try {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0130_try_block_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0130_try_block_expr.txt
deleted file mode 100644 (file)
index 53f49b9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE@[0; 33)
-  FN_DEF@[0; 32)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 32)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 30)
-        LET_KW@[15; 18) "let"
-        WHITESPACE@[18; 19) " "
-        PLACEHOLDER_PAT@[19; 20)
-          UNDERSCORE@[19; 20) "_"
-        WHITESPACE@[20; 21) " "
-        EQ@[21; 22) "="
-        WHITESPACE@[22; 23) " "
-        TRY_EXPR@[23; 29)
-          TRY_KW@[23; 26) "try"
-          WHITESPACE@[26; 27) " "
-          BLOCK@[27; 29)
-            L_CURLY@[27; 28) "{"
-            R_CURLY@[28; 29) "}"
-        SEMI@[29; 30) ";"
-      WHITESPACE@[30; 31) "\n"
-      R_CURLY@[31; 32) "}"
-  WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0131_existential_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0131_existential_type.rs
deleted file mode 100644 (file)
index 23baf71..0000000
+++ /dev/null
@@ -1 +0,0 @@
-existential type Foo: Fn() -> usize;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0131_existential_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0131_existential_type.txt
deleted file mode 100644 (file)
index 6bfac98..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE@[0; 37)
-  TYPE_ALIAS_DEF@[0; 36)
-    EXISTENTIAL_KW@[0; 11) "existential"
-    WHITESPACE@[11; 12) " "
-    TYPE_KW@[12; 16) "type"
-    WHITESPACE@[16; 17) " "
-    NAME@[17; 20)
-      IDENT@[17; 20) "Foo"
-    COLON@[20; 21) ":"
-    WHITESPACE@[21; 22) " "
-    TYPE_BOUND_LIST@[22; 35)
-      TYPE_BOUND@[22; 35)
-        PATH_TYPE@[22; 35)
-          PATH@[22; 35)
-            PATH_SEGMENT@[22; 35)
-              NAME_REF@[22; 24)
-                IDENT@[22; 24) "Fn"
-              PARAM_LIST@[24; 26)
-                L_PAREN@[24; 25) "("
-                R_PAREN@[25; 26) ")"
-              WHITESPACE@[26; 27) " "
-              RET_TYPE@[27; 35)
-                THIN_ARROW@[27; 29) "->"
-                WHITESPACE@[29; 30) " "
-                PATH_TYPE@[30; 35)
-                  PATH@[30; 35)
-                    PATH_SEGMENT@[30; 35)
-                      NAME_REF@[30; 35)
-                        IDENT@[30; 35) "usize"
-    SEMI@[35; 36) ";"
-  WHITESPACE@[36; 37) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0132_box_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0132_box_expr.rs
deleted file mode 100644 (file)
index fc9923b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    let x = box 1i32;
-    let y = (box 1i32, box 2i32);
-    let z = Foo(box 1i32, box 2i32);
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0132_box_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0132_box_expr.txt
deleted file mode 100644 (file)
index 3d22002..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-SOURCE_FILE@[0; 106)
-  FN_DEF@[0; 105)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 105)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      LET_STMT@[15; 32)
-        LET_KW@[15; 18) "let"
-        WHITESPACE@[18; 19) " "
-        BIND_PAT@[19; 20)
-          NAME@[19; 20)
-            IDENT@[19; 20) "x"
-        WHITESPACE@[20; 21) " "
-        EQ@[21; 22) "="
-        WHITESPACE@[22; 23) " "
-        BOX_EXPR@[23; 31)
-          BOX_KW@[23; 26) "box"
-          WHITESPACE@[26; 27) " "
-          LITERAL@[27; 31)
-            INT_NUMBER@[27; 31) "1i32"
-        SEMI@[31; 32) ";"
-      WHITESPACE@[32; 37) "\n    "
-      LET_STMT@[37; 66)
-        LET_KW@[37; 40) "let"
-        WHITESPACE@[40; 41) " "
-        BIND_PAT@[41; 42)
-          NAME@[41; 42)
-            IDENT@[41; 42) "y"
-        WHITESPACE@[42; 43) " "
-        EQ@[43; 44) "="
-        WHITESPACE@[44; 45) " "
-        TUPLE_EXPR@[45; 65)
-          L_PAREN@[45; 46) "("
-          BOX_EXPR@[46; 54)
-            BOX_KW@[46; 49) "box"
-            WHITESPACE@[49; 50) " "
-            LITERAL@[50; 54)
-              INT_NUMBER@[50; 54) "1i32"
-          COMMA@[54; 55) ","
-          WHITESPACE@[55; 56) " "
-          BOX_EXPR@[56; 64)
-            BOX_KW@[56; 59) "box"
-            WHITESPACE@[59; 60) " "
-            LITERAL@[60; 64)
-              INT_NUMBER@[60; 64) "2i32"
-          R_PAREN@[64; 65) ")"
-        SEMI@[65; 66) ";"
-      WHITESPACE@[66; 71) "\n    "
-      LET_STMT@[71; 103)
-        LET_KW@[71; 74) "let"
-        WHITESPACE@[74; 75) " "
-        BIND_PAT@[75; 76)
-          NAME@[75; 76)
-            IDENT@[75; 76) "z"
-        WHITESPACE@[76; 77) " "
-        EQ@[77; 78) "="
-        WHITESPACE@[78; 79) " "
-        CALL_EXPR@[79; 102)
-          PATH_EXPR@[79; 82)
-            PATH@[79; 82)
-              PATH_SEGMENT@[79; 82)
-                NAME_REF@[79; 82)
-                  IDENT@[79; 82) "Foo"
-          ARG_LIST@[82; 102)
-            L_PAREN@[82; 83) "("
-            BOX_EXPR@[83; 91)
-              BOX_KW@[83; 86) "box"
-              WHITESPACE@[86; 87) " "
-              LITERAL@[87; 91)
-                INT_NUMBER@[87; 91) "1i32"
-            COMMA@[91; 92) ","
-            WHITESPACE@[92; 93) " "
-            BOX_EXPR@[93; 101)
-              BOX_KW@[93; 96) "box"
-              WHITESPACE@[96; 97) " "
-              LITERAL@[97; 101)
-                INT_NUMBER@[97; 101) "2i32"
-            R_PAREN@[101; 102) ")"
-        SEMI@[102; 103) ";"
-      WHITESPACE@[103; 104) "\n"
-      R_CURLY@[104; 105) "}"
-  WHITESPACE@[105; 106) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0132_default_fn_type.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0132_default_fn_type.rs
deleted file mode 100644 (file)
index 8f5d611..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-impl T for Foo {
-    default type T = Bar;
-    default fn foo() {}
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0132_default_fn_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0132_default_fn_type.txt
deleted file mode 100644 (file)
index 384b203..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-SOURCE_FILE@[0; 69)
-  IMPL_BLOCK@[0; 68)
-    IMPL_KW@[0; 4) "impl"
-    WHITESPACE@[4; 5) " "
-    PATH_TYPE@[5; 6)
-      PATH@[5; 6)
-        PATH_SEGMENT@[5; 6)
-          NAME_REF@[5; 6)
-            IDENT@[5; 6) "T"
-    WHITESPACE@[6; 7) " "
-    FOR_KW@[7; 10) "for"
-    WHITESPACE@[10; 11) " "
-    PATH_TYPE@[11; 14)
-      PATH@[11; 14)
-        PATH_SEGMENT@[11; 14)
-          NAME_REF@[11; 14)
-            IDENT@[11; 14) "Foo"
-    WHITESPACE@[14; 15) " "
-    ITEM_LIST@[15; 68)
-      L_CURLY@[15; 16) "{"
-      WHITESPACE@[16; 21) "\n    "
-      TYPE_ALIAS_DEF@[21; 42)
-        DEFAULT_KW@[21; 28) "default"
-        WHITESPACE@[28; 29) " "
-        TYPE_KW@[29; 33) "type"
-        WHITESPACE@[33; 34) " "
-        NAME@[34; 35)
-          IDENT@[34; 35) "T"
-        WHITESPACE@[35; 36) " "
-        EQ@[36; 37) "="
-        WHITESPACE@[37; 38) " "
-        PATH_TYPE@[38; 41)
-          PATH@[38; 41)
-            PATH_SEGMENT@[38; 41)
-              NAME_REF@[38; 41)
-                IDENT@[38; 41) "Bar"
-        SEMI@[41; 42) ";"
-      WHITESPACE@[42; 47) "\n    "
-      FN_DEF@[47; 66)
-        DEFAULT_KW@[47; 54) "default"
-        WHITESPACE@[54; 55) " "
-        FN_KW@[55; 57) "fn"
-        WHITESPACE@[57; 58) " "
-        NAME@[58; 61)
-          IDENT@[58; 61) "foo"
-        PARAM_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) "}"
-      WHITESPACE@[66; 67) "\n"
-      R_CURLY@[67; 68) "}"
-  WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0134_nocontentexpr_after_item.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0134_nocontentexpr_after_item.rs
deleted file mode 100644 (file)
index eadc7ff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-fn simple_function() {
-    enum LocalEnum {
-        One,
-        Two,
-    };
-    fn f() {};
-    struct S {};
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0134_nocontentexpr_after_item.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0134_nocontentexpr_after_item.txt
deleted file mode 100644 (file)
index 50d3b5d..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-SOURCE_FILE@[0; 111)
-  FN_DEF@[0; 110)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 18)
-      IDENT@[3; 18) "simple_function"
-    PARAM_LIST@[18; 20)
-      L_PAREN@[18; 19) "("
-      R_PAREN@[19; 20) ")"
-    WHITESPACE@[20; 21) " "
-    BLOCK@[21; 110)
-      L_CURLY@[21; 22) "{"
-      WHITESPACE@[22; 27) "\n    "
-      ENUM_DEF@[27; 75)
-        ENUM_KW@[27; 31) "enum"
-        WHITESPACE@[31; 32) " "
-        NAME@[32; 41)
-          IDENT@[32; 41) "LocalEnum"
-        WHITESPACE@[41; 42) " "
-        ENUM_VARIANT_LIST@[42; 75)
-          L_CURLY@[42; 43) "{"
-          WHITESPACE@[43; 52) "\n        "
-          ENUM_VARIANT@[52; 55)
-            NAME@[52; 55)
-              IDENT@[52; 55) "One"
-          COMMA@[55; 56) ","
-          WHITESPACE@[56; 65) "\n        "
-          ENUM_VARIANT@[65; 68)
-            NAME@[65; 68)
-              IDENT@[65; 68) "Two"
-          COMMA@[68; 69) ","
-          WHITESPACE@[69; 74) "\n    "
-          R_CURLY@[74; 75) "}"
-      SEMI@[75; 76) ";"
-      WHITESPACE@[76; 81) "\n    "
-      FN_DEF@[81; 90)
-        FN_KW@[81; 83) "fn"
-        WHITESPACE@[83; 84) " "
-        NAME@[84; 85)
-          IDENT@[84; 85) "f"
-        PARAM_LIST@[85; 87)
-          L_PAREN@[85; 86) "("
-          R_PAREN@[86; 87) ")"
-        WHITESPACE@[87; 88) " "
-        BLOCK@[88; 90)
-          L_CURLY@[88; 89) "{"
-          R_CURLY@[89; 90) "}"
-      SEMI@[90; 91) ";"
-      WHITESPACE@[91; 96) "\n    "
-      STRUCT_DEF@[96; 107)
-        STRUCT_KW@[96; 102) "struct"
-        WHITESPACE@[102; 103) " "
-        NAME@[103; 104)
-          IDENT@[103; 104) "S"
-        WHITESPACE@[104; 105) " "
-        NAMED_FIELD_DEF_LIST@[105; 107)
-          L_CURLY@[105; 106) "{"
-          R_CURLY@[106; 107) "}"
-      SEMI@[107; 108) ";"
-      WHITESPACE@[108; 109) "\n"
-      R_CURLY@[109; 110) "}"
-  WHITESPACE@[110; 111) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0135_first_array_member_attributes.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0135_first_array_member_attributes.rs
deleted file mode 100644 (file)
index f59e137..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-pub const A: &[i64] = &[
-   #[cfg(test)]
-   1,
-   2,
-];
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0135_first_array_member_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0135_first_array_member_attributes.txt
deleted file mode 100644 (file)
index eac4f6f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-SOURCE_FILE@[0; 56)
-  CONST_DEF@[0; 55)
-    VISIBILITY@[0; 3)
-      PUB_KW@[0; 3) "pub"
-    WHITESPACE@[3; 4) " "
-    CONST_KW@[4; 9) "const"
-    WHITESPACE@[9; 10) " "
-    NAME@[10; 11)
-      IDENT@[10; 11) "A"
-    COLON@[11; 12) ":"
-    WHITESPACE@[12; 13) " "
-    REFERENCE_TYPE@[13; 19)
-      AMP@[13; 14) "&"
-      SLICE_TYPE@[14; 19)
-        L_BRACK@[14; 15) "["
-        PATH_TYPE@[15; 18)
-          PATH@[15; 18)
-            PATH_SEGMENT@[15; 18)
-              NAME_REF@[15; 18)
-                IDENT@[15; 18) "i64"
-        R_BRACK@[18; 19) "]"
-    WHITESPACE@[19; 20) " "
-    EQ@[20; 21) "="
-    WHITESPACE@[21; 22) " "
-    REF_EXPR@[22; 54)
-      AMP@[22; 23) "&"
-      ARRAY_EXPR@[23; 54)
-        L_BRACK@[23; 24) "["
-        WHITESPACE@[24; 28) "\n   "
-        ATTR@[28; 40)
-          POUND@[28; 29) "#"
-          TOKEN_TREE@[29; 40)
-            L_BRACK@[29; 30) "["
-            IDENT@[30; 33) "cfg"
-            TOKEN_TREE@[33; 39)
-              L_PAREN@[33; 34) "("
-              IDENT@[34; 38) "test"
-              R_PAREN@[38; 39) ")"
-            R_BRACK@[39; 40) "]"
-        WHITESPACE@[40; 44) "\n   "
-        LITERAL@[44; 45)
-          INT_NUMBER@[44; 45) "1"
-        COMMA@[45; 46) ","
-        WHITESPACE@[46; 50) "\n   "
-        LITERAL@[50; 51)
-          INT_NUMBER@[50; 51) "2"
-        COMMA@[51; 52) ","
-        WHITESPACE@[52; 53) "\n"
-        R_BRACK@[53; 54) "]"
-    SEMI@[54; 55) ";"
-  WHITESPACE@[55; 56) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0136_subsequent_array_member_attributes.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0136_subsequent_array_member_attributes.rs
deleted file mode 100644 (file)
index 1324acb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-pub const A: &[i64] = &[
-   1,
-   #[cfg(test)]
-   2,
-];
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0136_subsequent_array_member_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0136_subsequent_array_member_attributes.txt
deleted file mode 100644 (file)
index 6fa1b42..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-SOURCE_FILE@[0; 56)
-  CONST_DEF@[0; 55)
-    VISIBILITY@[0; 3)
-      PUB_KW@[0; 3) "pub"
-    WHITESPACE@[3; 4) " "
-    CONST_KW@[4; 9) "const"
-    WHITESPACE@[9; 10) " "
-    NAME@[10; 11)
-      IDENT@[10; 11) "A"
-    COLON@[11; 12) ":"
-    WHITESPACE@[12; 13) " "
-    REFERENCE_TYPE@[13; 19)
-      AMP@[13; 14) "&"
-      SLICE_TYPE@[14; 19)
-        L_BRACK@[14; 15) "["
-        PATH_TYPE@[15; 18)
-          PATH@[15; 18)
-            PATH_SEGMENT@[15; 18)
-              NAME_REF@[15; 18)
-                IDENT@[15; 18) "i64"
-        R_BRACK@[18; 19) "]"
-    WHITESPACE@[19; 20) " "
-    EQ@[20; 21) "="
-    WHITESPACE@[21; 22) " "
-    REF_EXPR@[22; 54)
-      AMP@[22; 23) "&"
-      ARRAY_EXPR@[23; 54)
-        L_BRACK@[23; 24) "["
-        WHITESPACE@[24; 28) "\n   "
-        LITERAL@[28; 29)
-          INT_NUMBER@[28; 29) "1"
-        COMMA@[29; 30) ","
-        WHITESPACE@[30; 34) "\n   "
-        ATTR@[34; 46)
-          POUND@[34; 35) "#"
-          TOKEN_TREE@[35; 46)
-            L_BRACK@[35; 36) "["
-            IDENT@[36; 39) "cfg"
-            TOKEN_TREE@[39; 45)
-              L_PAREN@[39; 40) "("
-              IDENT@[40; 44) "test"
-              R_PAREN@[44; 45) ")"
-            R_BRACK@[45; 46) "]"
-        WHITESPACE@[46; 50) "\n   "
-        LITERAL@[50; 51)
-          INT_NUMBER@[50; 51) "2"
-        COMMA@[51; 52) ","
-        WHITESPACE@[52; 53) "\n"
-        R_BRACK@[53; 54) "]"
-    SEMI@[54; 55) ";"
-  WHITESPACE@[55; 56) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0137_await_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0137_await_expr.rs
deleted file mode 100644 (file)
index d2ba89c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    x.await;
-    x.0.await;
-    x.0().await?.hello();
-}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0137_await_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0137_await_expr.txt
deleted file mode 100644 (file)
index 99bd76a..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-SOURCE_FILE@[0; 67)
-  FN_DEF@[0; 66)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 66)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 23)
-        AWAIT_EXPR@[15; 22)
-          PATH_EXPR@[15; 16)
-            PATH@[15; 16)
-              PATH_SEGMENT@[15; 16)
-                NAME_REF@[15; 16)
-                  IDENT@[15; 16) "x"
-          DOT@[16; 17) "."
-          AWAIT_KW@[17; 22) "await"
-        SEMI@[22; 23) ";"
-      WHITESPACE@[23; 28) "\n    "
-      EXPR_STMT@[28; 38)
-        AWAIT_EXPR@[28; 37)
-          FIELD_EXPR@[28; 31)
-            PATH_EXPR@[28; 29)
-              PATH@[28; 29)
-                PATH_SEGMENT@[28; 29)
-                  NAME_REF@[28; 29)
-                    IDENT@[28; 29) "x"
-            DOT@[29; 30) "."
-            INT_NUMBER@[30; 31) "0"
-          DOT@[31; 32) "."
-          AWAIT_KW@[32; 37) "await"
-        SEMI@[37; 38) ";"
-      WHITESPACE@[38; 43) "\n    "
-      EXPR_STMT@[43; 64)
-        METHOD_CALL_EXPR@[43; 63)
-          TRY_EXPR@[43; 55)
-            AWAIT_EXPR@[43; 54)
-              CALL_EXPR@[43; 48)
-                FIELD_EXPR@[43; 46)
-                  PATH_EXPR@[43; 44)
-                    PATH@[43; 44)
-                      PATH_SEGMENT@[43; 44)
-                        NAME_REF@[43; 44)
-                          IDENT@[43; 44) "x"
-                  DOT@[44; 45) "."
-                  INT_NUMBER@[45; 46) "0"
-                ARG_LIST@[46; 48)
-                  L_PAREN@[46; 47) "("
-                  R_PAREN@[47; 48) ")"
-              DOT@[48; 49) "."
-              AWAIT_KW@[49; 54) "await"
-            QUESTION@[54; 55) "?"
-          DOT@[55; 56) "."
-          NAME_REF@[56; 61)
-            IDENT@[56; 61) "hello"
-          ARG_LIST@[61; 63)
-            L_PAREN@[61; 62) "("
-            R_PAREN@[62; 63) ")"
-        SEMI@[63; 64) ";"
-      WHITESPACE@[64; 65) "\n"
-      R_CURLY@[65; 66) "}"
-  WHITESPACE@[66; 67) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0000_empty.rs b/crates/ra_syntax/tests/data/parser/ok/0000_empty.rs
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt b/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt
deleted file mode 100644 (file)
index 08f5a94..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SOURCE_FILE@[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
deleted file mode 100644 (file)
index 512aeb3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-struct S<T: Copy> {
-    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
deleted file mode 100644 (file)
index c6653cf..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-SOURCE_FILE@[0; 32)
-  STRUCT_DEF@[0; 31)
-    STRUCT_KW@[0; 6) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[12; 16)
-          TYPE_BOUND@[12; 16)
-            PATH_TYPE@[12; 16)
-              PATH@[12; 16)
-                PATH_SEGMENT@[12; 16)
-                  NAME_REF@[12; 16)
-                    IDENT@[12; 16) "Copy"
-      R_ANGLE@[16; 17) ">"
-    WHITESPACE@[17; 18) " "
-    NAMED_FIELD_DEF_LIST@[18; 31)
-      L_CURLY@[18; 19) "{"
-      WHITESPACE@[19; 24) "\n    "
-      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) "\n"
-      R_CURLY@[30; 31) "}"
-  WHITESPACE@[31; 32) "\n"
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
deleted file mode 100644 (file)
index cc3866d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index d0565ea..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE@[0; 25)
-  STRUCT_DEF@[0; 25)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n    "
-      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) "\n"
-      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
deleted file mode 100644 (file)
index 53dc9e6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#!/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
deleted file mode 100644 (file)
index e3915c2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-SOURCE_FILE@[0; 20)
-  SHEBANG@[0; 20) "#!/use/bin/env rusti"
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
deleted file mode 100644 (file)
index 0321055..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index 9b63a24..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-SOURCE_FILE@[0; 13)
-  FN_DEF@[0; 12)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 12)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) "\n"
-      R_CURLY@[11; 12) "}"
-  WHITESPACE@[12; 13) "\n"
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
deleted file mode 100644 (file)
index e81f8b1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#![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
deleted file mode 100644 (file)
index d8cabc9..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-SOURCE_FILE@[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) "\n"
-  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) "true"
-        R_PAREN@[21; 22) ")"
-      R_BRACK@[22; 23) "]"
-  WHITESPACE@[23; 24) "\n"
-  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) "\n"
-  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) "true"
-        COMMA@[64; 65) ","
-        WHITESPACE@[65; 66) " "
-        STRING@[66; 72) "\"true\""
-        COMMA@[72; 73) ","
-        WHITESPACE@[73; 74) " "
-        IDENT@[74; 79) "ident"
-        WHITESPACE@[79; 80) " "
-        EQ@[80; 81) "="
-        WHITESPACE@[81; 82) " "
-        INT_NUMBER@[82; 85) "100"
-        COMMA@[85; 86) ","
-        WHITESPACE@[86; 87) " "
-        IDENT@[87; 92) "ident"
-        WHITESPACE@[92; 93) " "
-        EQ@[93; 94) "="
-        WHITESPACE@[94; 95) " "
-        STRING@[95; 102) "\"hello\""
-        COMMA@[102; 103) ","
-        WHITESPACE@[103; 104) " "
-        IDENT@[104; 109) "ident"
-        TOKEN_TREE@[109; 114)
-          L_PAREN@[109; 110) "("
-          INT_NUMBER@[110; 113) "100"
-          R_PAREN@[113; 114) ")"
-        R_PAREN@[114; 115) ")"
-      R_BRACK@[115; 116) "]"
-  WHITESPACE@[116; 117) "\n"
-  ATTR@[117; 130)
-    POUND@[117; 118) "#"
-    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) "\n"
-  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) "true"
-        R_PAREN@[153; 154) ")"
-      R_BRACK@[154; 155) "]"
-  WHITESPACE@[155; 156) "\n"
-  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) "true"
-        R_PAREN@[171; 172) ")"
-      R_BRACK@[172; 173) "]"
-  WHITESPACE@[173; 174) "\n"
-  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) "\"hello\""
-        R_PAREN@[189; 190) ")"
-      R_BRACK@[190; 191) "]"
-  WHITESPACE@[191; 192) "\n"
-  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) "\n"
-  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
deleted file mode 100644 (file)
index ab81a60..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-extern crate foo;
-extern crate foo as bar;
-extern crate self as baz;
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
deleted file mode 100644 (file)
index 1ffa36c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-SOURCE_FILE@[0; 69)
-  EXTERN_CRATE_ITEM@[0; 17)
-    EXTERN_KW@[0; 6) "extern"
-    WHITESPACE@[6; 7) " "
-    CRATE_KW@[7; 12) "crate"
-    WHITESPACE@[12; 13) " "
-    NAME_REF@[13; 16)
-      IDENT@[13; 16) "foo"
-    SEMI@[16; 17) ";"
-  WHITESPACE@[17; 18) "\n"
-  EXTERN_CRATE_ITEM@[18; 42)
-    EXTERN_KW@[18; 24) "extern"
-    WHITESPACE@[24; 25) " "
-    CRATE_KW@[25; 30) "crate"
-    WHITESPACE@[30; 31) " "
-    NAME_REF@[31; 34)
-      IDENT@[31; 34) "foo"
-    WHITESPACE@[34; 35) " "
-    ALIAS@[35; 41)
-      AS_KW@[35; 37) "as"
-      WHITESPACE@[37; 38) " "
-      NAME@[38; 41)
-        IDENT@[38; 41) "bar"
-    SEMI@[41; 42) ";"
-  WHITESPACE@[42; 43) "\n"
-  EXTERN_CRATE_ITEM@[43; 68)
-    EXTERN_KW@[43; 49) "extern"
-    WHITESPACE@[49; 50) " "
-    CRATE_KW@[50; 55) "crate"
-    WHITESPACE@[55; 56) " "
-    SELF_KW@[56; 60)
-      SELF_KW@[56; 60) "self"
-    WHITESPACE@[60; 61) " "
-    ALIAS@[61; 67)
-      AS_KW@[61; 63) "as"
-      WHITESPACE@[63; 64) " "
-      NAME@[64; 67)
-        IDENT@[64; 67) "baz"
-    SEMI@[67; 68) ";"
-  WHITESPACE@[68; 69) "\n"
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
deleted file mode 100644 (file)
index d22993b..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-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
deleted file mode 100644 (file)
index 9152d6e..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE@[0; 118)
-  MODULE@[0; 6)
-    MOD_KW@[0; 3) "mod"
-    WHITESPACE@[3; 4) " "
-    NAME@[4; 5)
-      IDENT@[4; 5) "a"
-    SEMI@[5; 6) ";"
-  WHITESPACE@[6; 8) "\n\n"
-  MODULE@[8; 17)
-    MOD_KW@[8; 11) "mod"
-    WHITESPACE@[11; 12) " "
-    NAME@[12; 13)
-      IDENT@[12; 13) "b"
-    WHITESPACE@[13; 14) " "
-    ITEM_LIST@[14; 17)
-      L_CURLY@[14; 15) "{"
-      WHITESPACE@[15; 16) "\n"
-      R_CURLY@[16; 17) "}"
-  WHITESPACE@[17; 19) "\n\n"
-  MODULE@[19; 65)
-    MOD_KW@[19; 22) "mod"
-    WHITESPACE@[22; 23) " "
-    NAME@[23; 24)
-      IDENT@[23; 24) "c"
-    WHITESPACE@[24; 25) " "
-    ITEM_LIST@[25; 65)
-      L_CURLY@[25; 26) "{"
-      WHITESPACE@[26; 31) "\n    "
-      FN_DEF@[31; 47)
-        FN_KW@[31; 33) "fn"
-        WHITESPACE@[33; 34) " "
-        NAME@[34; 37)
-          IDENT@[34; 37) "foo"
-        PARAM_LIST@[37; 39)
-          L_PAREN@[37; 38) "("
-          R_PAREN@[38; 39) ")"
-        WHITESPACE@[39; 40) " "
-        BLOCK@[40; 47)
-          L_CURLY@[40; 41) "{"
-          WHITESPACE@[41; 46) "\n    "
-          R_CURLY@[46; 47) "}"
-      WHITESPACE@[47; 52) "\n    "
-      STRUCT_DEF@[52; 63)
-        STRUCT_KW@[52; 58) "struct"
-        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) "\n"
-      R_CURLY@[64; 65) "}"
-  WHITESPACE@[65; 67) "\n\n"
-  MODULE@[67; 118)
-    MOD_KW@[67; 70) "mod"
-    WHITESPACE@[70; 71) " "
-    NAME@[71; 72)
-      IDENT@[71; 72) "d"
-    WHITESPACE@[72; 73) " "
-    ITEM_LIST@[73; 118)
-      L_CURLY@[73; 74) "{"
-      WHITESPACE@[74; 79) "\n    "
-      ATTR@[79; 87)
-        POUND@[79; 80) "#"
-        EXCL@[80; 81) "!"
-        TOKEN_TREE@[81; 87)
-          L_BRACK@[81; 82) "["
-          IDENT@[82; 86) "attr"
-          R_BRACK@[86; 87) "]"
-      WHITESPACE@[87; 92) "\n    "
-      MODULE@[92; 98)
-        MOD_KW@[92; 95) "mod"
-        WHITESPACE@[95; 96) " "
-        NAME@[96; 97)
-          IDENT@[96; 97) "e"
-        SEMI@[97; 98) ";"
-      WHITESPACE@[98; 103) "\n    "
-      MODULE@[103; 116)
-        MOD_KW@[103; 106) "mod"
-        WHITESPACE@[106; 107) " "
-        NAME@[107; 108)
-          IDENT@[107; 108) "f"
-        WHITESPACE@[108; 109) " "
-        ITEM_LIST@[109; 116)
-          L_CURLY@[109; 110) "{"
-          WHITESPACE@[110; 115) "\n    "
-          R_CURLY@[115; 116) "}"
-      WHITESPACE@[116; 117) "\n"
-      R_CURLY@[117; 118) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0009_use_item.rs b/crates/ra_syntax/tests/data/parser/ok/0009_use_item.rs
deleted file mode 100644 (file)
index 05a6aff..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index 41db9db..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE@[0; 19)
-  USE_ITEM@[0; 8)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 7)
-      PATH@[4; 7)
-        PATH_SEGMENT@[4; 7)
-          NAME_REF@[4; 7)
-            IDENT@[4; 7) "foo"
-    SEMI@[7; 8) ";"
-  WHITESPACE@[8; 9) "\n"
-  USE_ITEM@[9; 19)
-    USE_KW@[9; 12) "use"
-    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
deleted file mode 100644 (file)
index 1e71b7a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index 09871b8..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE@[0; 40)
-  USE_ITEM@[0; 20)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 19)
-      PATH@[4; 19)
-        PATH@[4; 14)
-          PATH@[4; 9)
-            PATH_SEGMENT@[4; 9)
-              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) "\n"
-  USE_ITEM@[21; 39)
-    USE_KW@[21; 24) "use"
-    WHITESPACE@[24; 25) " "
-    USE_TREE@[25; 38)
-      PATH@[25; 38)
-        PATH@[25; 33)
-          PATH@[25; 28)
-            PATH_SEGMENT@[25; 28)
-              NAME_REF@[25; 28)
-                IDENT@[25; 28) "foo"
-          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) "\n"
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
deleted file mode 100644 (file)
index 8b80c0d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#[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
deleted file mode 100644 (file)
index 2a0dc7b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-SOURCE_FILE@[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) "\n"
-    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) "\n"
-    FN_KW@[23; 25) "fn"
-    WHITESPACE@[25; 26) " "
-    NAME@[26; 29)
-      IDENT@[26; 29) "foo"
-    PARAM_LIST@[29; 31)
-      L_PAREN@[29; 30) "("
-      R_PAREN@[30; 31) ")"
-    WHITESPACE@[31; 32) " "
-    BLOCK@[32; 34)
-      L_CURLY@[32; 33) "{"
-      R_CURLY@[33; 34) "}"
-  WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0012_visibility.rs b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.rs
deleted file mode 100644 (file)
index 75b1db1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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
deleted file mode 100644 (file)
index c9d038c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-SOURCE_FILE@[0; 98)
-  FN_DEF@[0; 9)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 4)
-      IDENT@[3; 4) "a"
-    PARAM_LIST@[4; 6)
-      L_PAREN@[4; 5) "("
-      R_PAREN@[5; 6) ")"
-    WHITESPACE@[6; 7) " "
-    BLOCK@[7; 9)
-      L_CURLY@[7; 8) "{"
-      R_CURLY@[8; 9) "}"
-  WHITESPACE@[9; 10) "\n"
-  FN_DEF@[10; 23)
-    VISIBILITY@[10; 13)
-      PUB_KW@[10; 13) "pub"
-    WHITESPACE@[13; 14) " "
-    FN_KW@[14; 16) "fn"
-    WHITESPACE@[16; 17) " "
-    NAME@[17; 18)
-      IDENT@[17; 18) "b"
-    PARAM_LIST@[18; 20)
-      L_PAREN@[18; 19) "("
-      R_PAREN@[19; 20) ")"
-    WHITESPACE@[20; 21) " "
-    BLOCK@[21; 23)
-      L_CURLY@[21; 22) "{"
-      R_CURLY@[22; 23) "}"
-  WHITESPACE@[23; 24) "\n"
-  FN_DEF@[24; 44)
-    VISIBILITY@[24; 34)
-      PUB_KW@[24; 27) "pub"
-      L_PAREN@[27; 28) "("
-      CRATE_KW@[28; 33) "crate"
-      R_PAREN@[33; 34) ")"
-    WHITESPACE@[34; 35) " "
-    FN_KW@[35; 37) "fn"
-    WHITESPACE@[37; 38) " "
-    NAME@[38; 39)
-      IDENT@[38; 39) "c"
-    PARAM_LIST@[39; 41)
-      L_PAREN@[39; 40) "("
-      R_PAREN@[40; 41) ")"
-    WHITESPACE@[41; 42) " "
-    BLOCK@[42; 44)
-      L_CURLY@[42; 43) "{"
-      R_CURLY@[43; 44) "}"
-  WHITESPACE@[44; 45) "\n"
-  FN_DEF@[45; 65)
-    VISIBILITY@[45; 55)
-      PUB_KW@[45; 48) "pub"
-      L_PAREN@[48; 49) "("
-      SUPER_KW@[49; 54) "super"
-      R_PAREN@[54; 55) ")"
-    WHITESPACE@[55; 56) " "
-    FN_KW@[56; 58) "fn"
-    WHITESPACE@[58; 59) " "
-    NAME@[59; 60)
-      IDENT@[59; 60) "d"
-    PARAM_LIST@[60; 62)
-      L_PAREN@[60; 61) "("
-      R_PAREN@[61; 62) ")"
-    WHITESPACE@[62; 63) " "
-    BLOCK@[63; 65)
-      L_CURLY@[63; 64) "{"
-      R_CURLY@[64; 65) "}"
-  WHITESPACE@[65; 66) "\n"
-  FN_DEF@[66; 97)
-    VISIBILITY@[66; 87)
-      PUB_KW@[66; 69) "pub"
-      L_PAREN@[69; 70) "("
-      IN_KW@[70; 72) "in"
-      WHITESPACE@[72; 73) " "
-      PATH@[73; 86)
-        PATH@[73; 81)
-          PATH@[73; 76)
-            PATH_SEGMENT@[73; 76)
-              NAME_REF@[73; 76)
-                IDENT@[73; 76) "foo"
-          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) "fn"
-    WHITESPACE@[90; 91) " "
-    NAME@[91; 92)
-      IDENT@[91; 92) "e"
-    PARAM_LIST@[92; 94)
-      L_PAREN@[92; 93) "("
-      R_PAREN@[93; 94) ")"
-    WHITESPACE@[94; 95) " "
-    BLOCK@[95; 97)
-      L_CURLY@[95; 96) "{"
-      R_CURLY@[96; 97) "}"
-  WHITESPACE@[97; 98) "\n"
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
deleted file mode 100644 (file)
index faf6a42..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index 50730e9..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-SOURCE_FILE@[0; 65)
-  USE_ITEM@[0; 14)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 13)
-      PATH@[4; 13)
-        PATH@[4; 8)
-          PATH_SEGMENT@[4; 8)
-            SELF_KW@[4; 8) "self"
-        COLONCOLON@[8; 10) "::"
-        PATH_SEGMENT@[10; 13)
-          NAME_REF@[10; 13)
-            IDENT@[10; 13) "foo"
-    SEMI@[13; 14) ";"
-  WHITESPACE@[14; 15) "\n"
-  USE_ITEM@[15; 37)
-    USE_KW@[15; 18) "use"
-    WHITESPACE@[18; 19) " "
-    USE_TREE@[19; 36)
-      PATH@[19; 36)
-        PATH@[19; 31)
-          PATH@[19; 24)
-            PATH_SEGMENT@[19; 24)
-              SUPER_KW@[19; 24) "super"
-          COLONCOLON@[24; 26) "::"
-          PATH_SEGMENT@[26; 31)
-            SUPER_KW@[26; 31) "super"
-        COLONCOLON@[31; 33) "::"
-        PATH_SEGMENT@[33; 36)
-          NAME_REF@[33; 36)
-            IDENT@[33; 36) "bar"
-    SEMI@[36; 37) ";"
-  WHITESPACE@[37; 38) "\n"
-  USE_ITEM@[38; 64)
-    USE_KW@[38; 41) "use"
-    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) "self"
-            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) "super"
-        COLONCOLON@[58; 60) "::"
-        PATH_SEGMENT@[60; 63)
-          NAME_REF@[60; 63)
-            IDENT@[60; 63) "bar"
-    SEMI@[63; 64) ";"
-  WHITESPACE@[64; 65) "\n"
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
deleted file mode 100644 (file)
index 5e4aa3a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100644 (file)
index 3fe34d0..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-SOURCE_FILE@[0; 81)
-  USE_ITEM@[0; 6)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 5)
-      STAR@[4; 5) "*"
-    SEMI@[5; 6) ";"
-  WHITESPACE@[6; 7) "\n"
-  USE_ITEM@[7; 15)
-    USE_KW@[7; 10) "use"
-    WHITESPACE@[10; 11) " "
-    USE_TREE@[11; 14)
-      COLONCOLON@[11; 13) "::"
-      STAR@[13; 14) "*"
-    SEMI@[14; 15) ";"
-  WHITESPACE@[15; 16) "\n"
-  USE_ITEM@[16; 25)
-    USE_KW@[16; 19) "use"
-    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) "\n"
-  USE_ITEM@[26; 33)
-    USE_KW@[26; 29) "use"
-    WHITESPACE@[29; 30) " "
-    USE_TREE@[30; 32)
-      USE_TREE_LIST@[30; 32)
-        L_CURLY@[30; 31) "{"
-        R_CURLY@[31; 32) "}"
-    SEMI@[32; 33) ";"
-  WHITESPACE@[33; 34) "\n"
-  USE_ITEM@[34; 45)
-    USE_KW@[34; 37) "use"
-    WHITESPACE@[37; 38) " "
-    USE_TREE@[38; 44)
-      PATH@[38; 41)
-        PATH_SEGMENT@[38; 41)
-          NAME_REF@[38; 41)
-            IDENT@[38; 41) "foo"
-      COLONCOLON@[41; 43) "::"
-      STAR@[43; 44) "*"
-    SEMI@[44; 45) ";"
-  WHITESPACE@[45; 46) "\n"
-  USE_ITEM@[46; 58)
-    USE_KW@[46; 49) "use"
-    WHITESPACE@[49; 50) " "
-    USE_TREE@[50; 57)
-      PATH@[50; 53)
-        PATH_SEGMENT@[50; 53)
-          NAME_REF@[50; 53)
-            IDENT@[50; 53) "foo"
-      COLONCOLON@[53; 55) "::"
-      USE_TREE_LIST@[55; 57)
-        L_CURLY@[55; 56) "{"
-        R_CURLY@[56; 57) "}"
-    SEMI@[57; 58) ";"
-  WHITESPACE@[58; 59) "\n"
-  USE_ITEM@[59; 80)
-    USE_KW@[59; 62) "use"
-    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) "\n"
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
deleted file mode 100644 (file)
index 46a0783..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index e63f142..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-SOURCE_FILE@[0; 55)
-  USE_ITEM@[0; 15)
-    USE_KW@[0; 3) "use"
-    WHITESPACE@[3; 4) " "
-    USE_TREE@[4; 14)
-      PATH@[4; 7)
-        PATH_SEGMENT@[4; 7)
-          NAME_REF@[4; 7)
-            IDENT@[4; 7) "foo"
-      WHITESPACE@[7; 8) " "
-      ALIAS@[8; 14)
-        AS_KW@[8; 10) "as"
-        WHITESPACE@[10; 11) " "
-        NAME@[11; 14)
-          IDENT@[11; 14) "bar"
-    SEMI@[14; 15) ";"
-  WHITESPACE@[15; 16) "\n"
-  USE_ITEM@[16; 54)
-    USE_KW@[16; 19) "use"
-    WHITESPACE@[19; 20) " "
-    USE_TREE@[20; 53)
-      PATH@[20; 23)
-        PATH_SEGMENT@[20; 23)
-          NAME_REF@[20; 23)
-            IDENT@[20; 23) "foo"
-      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) "as"
-            WHITESPACE@[30; 31) " "
-            NAME@[31; 32)
-              IDENT@[31; 32) "b"
-        COMMA@[32; 33) ","
-        WHITESPACE@[33; 34) " "
-        USE_TREE@[34; 35)
-          STAR@[34; 35) "*"
-        COMMA@[35; 36) ","
-        WHITESPACE@[36; 37) " "
-        USE_TREE@[37; 40)
-          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) "as"
-            WHITESPACE@[50; 51) " "
-            NAME@[51; 52)
-              IDENT@[51; 52) "x"
-        R_CURLY@[52; 53) "}"
-    SEMI@[53; 54) ";"
-  WHITESPACE@[54; 55) "\n"
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
deleted file mode 100644 (file)
index 6963835..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
deleted file mode 100644 (file)
index ac44093..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-SOURCE_FILE@[0; 97)
-  STRUCT_DEF@[0; 9)
-    STRUCT_KW@[0; 6) "struct"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 8)
-      IDENT@[7; 8) "A"
-    SEMI@[8; 9) ";"
-  WHITESPACE@[9; 10) "\n"
-  STRUCT_DEF@[10; 21)
-    STRUCT_KW@[10; 16) "struct"
-    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) "\n"
-  STRUCT_DEF@[22; 33)
-    STRUCT_KW@[22; 28) "struct"
-    WHITESPACE@[28; 29) " "
-    NAME@[29; 30)
-      IDENT@[29; 30) "C"
-    POS_FIELD_DEF_LIST@[30; 32)
-      L_PAREN@[30; 31) "("
-      R_PAREN@[31; 32) ")"
-    SEMI@[32; 33) ";"
-  WHITESPACE@[33; 35) "\n\n"
-  STRUCT_DEF@[35; 74)
-    STRUCT_KW@[35; 41) "struct"
-    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) "\n    "
-      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) "\n    "
-      NAMED_FIELD_DEF@[62; 72)
-        VISIBILITY@[62; 65)
-          PUB_KW@[62; 65) "pub"
-        WHITESPACE@[65; 66) " "
-        NAME@[66; 67)
-          IDENT@[66; 67) "b"
-        COLON@[67; 68) ":"
-        WHITESPACE@[68; 69) " "
-        PATH_TYPE@[69; 72)
-          PATH@[69; 72)
-            PATH_SEGMENT@[69; 72)
-              NAME_REF@[69; 72)
-                IDENT@[69; 72) "u32"
-      WHITESPACE@[72; 73) "\n"
-      R_CURLY@[73; 74) "}"
-  WHITESPACE@[74; 76) "\n\n"
-  STRUCT_DEF@[76; 96)
-    STRUCT_KW@[76; 82) "struct"
-    WHITESPACE@[82; 83) " "
-    NAME@[83; 84)
-      IDENT@[83; 84) "E"
-    POS_FIELD_DEF_LIST@[84; 95)
-      L_PAREN@[84; 85) "("
-      POS_FIELD_DEF@[85; 90)
-        VISIBILITY@[85; 88)
-          PUB_KW@[85; 88) "pub"
-        WHITESPACE@[88; 89) " "
-        PATH_TYPE@[89; 90)
-          PATH@[89; 90)
-            PATH_SEGMENT@[89; 90)
-              NAME_REF@[89; 90)
-                IDENT@[89; 90) "x"
-      COMMA@[90; 91) ","
-      WHITESPACE@[91; 92) " "
-      POS_FIELD_DEF@[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) "\n"
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
deleted file mode 100644 (file)
index fe0a7bb..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#[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
deleted file mode 100644 (file)
index cd8f038..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE@[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) "\n"
-    FN_KW@[11; 13) "fn"
-    WHITESPACE@[13; 14) " "
-    NAME@[14; 17)
-      IDENT@[14; 17) "foo"
-    PARAM_LIST@[17; 19)
-      L_PAREN@[17; 18) "("
-      R_PAREN@[18; 19) ")"
-    WHITESPACE@[19; 20) " "
-    BLOCK@[20; 22)
-      L_CURLY@[20; 21) "{"
-      R_CURLY@[21; 22) "}"
-  WHITESPACE@[22; 23) "\n"
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
deleted file mode 100644 (file)
index 88c5449..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-struct S1<T>;
-struct S2<T>(u32);
-struct S3<T> { 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<T>;
-struct S14<T, U>;
-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
deleted file mode 100644 (file)
index 3f06f20..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-SOURCE_FILE@[0; 290)
-  STRUCT_DEF@[0; 13)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n"
-  STRUCT_DEF@[14; 32)
-    STRUCT_KW@[14; 20) "struct"
-    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_DEF_LIST@[26; 31)
-      L_PAREN@[26; 27) "("
-      POS_FIELD_DEF@[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) "\n"
-  STRUCT_DEF@[33; 56)
-    STRUCT_KW@[33; 39) "struct"
-    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) "\n\n"
-  STRUCT_DEF@[58; 70)
-    STRUCT_KW@[58; 64) "struct"
-    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) "\n"
-  STRUCT_DEF@[71; 85)
-    STRUCT_KW@[71; 77) "struct"
-    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) "\n"
-  STRUCT_DEF@[86; 101)
-    STRUCT_KW@[86; 92) "struct"
-    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) "\n"
-  STRUCT_DEF@[102; 120)
-    STRUCT_KW@[102; 108) "struct"
-    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) "\n"
-  STRUCT_DEF@[121; 142)
-    STRUCT_KW@[121; 127) "struct"
-    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) "\n"
-  STRUCT_DEF@[143; 166)
-    STRUCT_KW@[143; 149) "struct"
-    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) "\n"
-  STRUCT_DEF@[167; 183)
-    STRUCT_KW@[167; 173) "struct"
-    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) "\n"
-  STRUCT_DEF@[184; 203)
-    STRUCT_KW@[184; 190) "struct"
-    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) "\n"
-  STRUCT_DEF@[204; 233)
-    STRUCT_KW@[204; 210) "struct"
-    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) "\n\n"
-  STRUCT_DEF@[235; 249)
-    STRUCT_KW@[235; 241) "struct"
-    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) "\n"
-  STRUCT_DEF@[250; 267)
-    STRUCT_KW@[250; 256) "struct"
-    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) "\n"
-  STRUCT_DEF@[268; 289)
-    STRUCT_KW@[268; 274) "struct"
-    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) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0019_enums.rs b/crates/ra_syntax/tests/data/parser/ok/0019_enums.rs
deleted file mode 100644 (file)
index 7a1afa0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-enum E1 {
-}
-
-enum E2<T> {
-}
-
-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
deleted file mode 100644 (file)
index 37753a7..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-SOURCE_FILE@[0; 182)
-  ENUM_DEF@[0; 11)
-    ENUM_KW@[0; 4) "enum"
-    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) "\n"
-      R_CURLY@[10; 11) "}"
-  WHITESPACE@[11; 13) "\n\n"
-  ENUM_DEF@[13; 27)
-    ENUM_KW@[13; 17) "enum"
-    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) "\n"
-      R_CURLY@[26; 27) "}"
-  WHITESPACE@[27; 29) "\n\n"
-  ENUM_DEF@[29; 46)
-    ENUM_KW@[29; 33) "enum"
-    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) "\n    "
-      ENUM_VARIANT@[43; 44)
-        NAME@[43; 44)
-          IDENT@[43; 44) "X"
-      WHITESPACE@[44; 45) "\n"
-      R_CURLY@[45; 46) "}"
-  WHITESPACE@[46; 48) "\n\n"
-  ENUM_DEF@[48; 66)
-    ENUM_KW@[48; 52) "enum"
-    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) "\n    "
-      ENUM_VARIANT@[62; 63)
-        NAME@[62; 63)
-          IDENT@[62; 63) "X"
-      COMMA@[63; 64) ","
-      WHITESPACE@[64; 65) "\n"
-      R_CURLY@[65; 66) "}"
-  WHITESPACE@[66; 68) "\n\n"
-  ENUM_DEF@[68; 181)
-    ENUM_KW@[68; 72) "enum"
-    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) "\n    "
-      ENUM_VARIANT@[82; 83)
-        NAME@[82; 83)
-          IDENT@[82; 83) "A"
-      COMMA@[83; 84) ","
-      WHITESPACE@[84; 89) "\n    "
-      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) "\n    "
-      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) "\n        "
-          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) "\n        "
-          NAMED_FIELD_DEF@[129; 139)
-            VISIBILITY@[129; 132)
-              PUB_KW@[129; 132) "pub"
-            WHITESPACE@[132; 133) " "
-            NAME@[133; 134)
-              IDENT@[133; 134) "b"
-            COLON@[134; 135) ":"
-            WHITESPACE@[135; 136) " "
-            PATH_TYPE@[136; 139)
-              PATH@[136; 139)
-                PATH_SEGMENT@[136; 139)
-                  NAME_REF@[136; 139)
-                    IDENT@[136; 139) "f64"
-          COMMA@[139; 140) ","
-          WHITESPACE@[140; 145) "\n    "
-          R_CURLY@[145; 146) "}"
-      COMMA@[146; 147) ","
-      WHITESPACE@[147; 152) "\n    "
-      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) "\n    "
-      ENUM_VARIANT@[162; 169)
-        NAME@[162; 163)
-          IDENT@[162; 163) "D"
-        POS_FIELD_DEF_LIST@[163; 169)
-          L_PAREN@[163; 164) "("
-          POS_FIELD_DEF@[164; 167)
-            PATH_TYPE@[164; 167)
-              PATH@[164; 167)
-                PATH_SEGMENT@[164; 167)
-                  NAME_REF@[164; 167)
-                    IDENT@[164; 167) "u32"
-          COMMA@[167; 168) ","
-          R_PAREN@[168; 169) ")"
-      COMMA@[169; 170) ","
-      WHITESPACE@[170; 175) "\n    "
-      ENUM_VARIANT@[175; 178)
-        NAME@[175; 176)
-          IDENT@[175; 176) "E"
-        POS_FIELD_DEF_LIST@[176; 178)
-          L_PAREN@[176; 177) "("
-          R_PAREN@[177; 178) ")"
-      COMMA@[178; 179) ","
-      WHITESPACE@[179; 180) "\n"
-      R_CURLY@[180; 181) "}"
-  WHITESPACE@[181; 182) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs
deleted file mode 100644 (file)
index 7128989..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-struct A<T>;
-struct B<T:>;
-struct C<T: 'a>;
-struct D<T: 'a + >;
-struct E<T: 'a + 'd >;
-struct F<T: 'a + 'd + Clone>;
-struct G<T: Clone + Copy>;
-struct H<T: ::Foo + self::Bar + 'a>;
-struct I<T:, U:,>;
-struct K<'a: 'd, 'd: 'a + 'b, T: 'a + 'd + Clone>;
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt
deleted file mode 100644 (file)
index 18a5fd7..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-SOURCE_FILE@[0; 250)
-  STRUCT_DEF@[0; 12)
-    STRUCT_KW@[0; 6) "struct"
-    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) "\n"
-  STRUCT_DEF@[13; 26)
-    STRUCT_KW@[13; 19) "struct"
-    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) ":"
-        TYPE_BOUND_LIST@[24; 24)
-      R_ANGLE@[24; 25) ">"
-    SEMI@[25; 26) ";"
-  WHITESPACE@[26; 27) "\n"
-  STRUCT_DEF@[27; 43)
-    STRUCT_KW@[27; 33) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[39; 41)
-          TYPE_BOUND@[39; 41)
-            LIFETIME@[39; 41) "\'a"
-      R_ANGLE@[41; 42) ">"
-    SEMI@[42; 43) ";"
-  WHITESPACE@[43; 44) "\n"
-  STRUCT_DEF@[44; 63)
-    STRUCT_KW@[44; 50) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[56; 60)
-          TYPE_BOUND@[56; 58)
-            LIFETIME@[56; 58) "\'a"
-          WHITESPACE@[58; 59) " "
-          PLUS@[59; 60) "+"
-      WHITESPACE@[60; 61) " "
-      R_ANGLE@[61; 62) ">"
-    SEMI@[62; 63) ";"
-  WHITESPACE@[63; 64) "\n"
-  STRUCT_DEF@[64; 86)
-    STRUCT_KW@[64; 70) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[76; 83)
-          TYPE_BOUND@[76; 78)
-            LIFETIME@[76; 78) "\'a"
-          WHITESPACE@[78; 79) " "
-          PLUS@[79; 80) "+"
-          WHITESPACE@[80; 81) " "
-          TYPE_BOUND@[81; 83)
-            LIFETIME@[81; 83) "\'d"
-      WHITESPACE@[83; 84) " "
-      R_ANGLE@[84; 85) ">"
-    SEMI@[85; 86) ";"
-  WHITESPACE@[86; 87) "\n"
-  STRUCT_DEF@[87; 116)
-    STRUCT_KW@[87; 93) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[99; 114)
-          TYPE_BOUND@[99; 101)
-            LIFETIME@[99; 101) "\'a"
-          WHITESPACE@[101; 102) " "
-          PLUS@[102; 103) "+"
-          WHITESPACE@[103; 104) " "
-          TYPE_BOUND@[104; 106)
-            LIFETIME@[104; 106) "\'d"
-          WHITESPACE@[106; 107) " "
-          PLUS@[107; 108) "+"
-          WHITESPACE@[108; 109) " "
-          TYPE_BOUND@[109; 114)
-            PATH_TYPE@[109; 114)
-              PATH@[109; 114)
-                PATH_SEGMENT@[109; 114)
-                  NAME_REF@[109; 114)
-                    IDENT@[109; 114) "Clone"
-      R_ANGLE@[114; 115) ">"
-    SEMI@[115; 116) ";"
-  WHITESPACE@[116; 117) "\n"
-  STRUCT_DEF@[117; 143)
-    STRUCT_KW@[117; 123) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[129; 141)
-          TYPE_BOUND@[129; 134)
-            PATH_TYPE@[129; 134)
-              PATH@[129; 134)
-                PATH_SEGMENT@[129; 134)
-                  NAME_REF@[129; 134)
-                    IDENT@[129; 134) "Clone"
-          WHITESPACE@[134; 135) " "
-          PLUS@[135; 136) "+"
-          WHITESPACE@[136; 137) " "
-          TYPE_BOUND@[137; 141)
-            PATH_TYPE@[137; 141)
-              PATH@[137; 141)
-                PATH_SEGMENT@[137; 141)
-                  NAME_REF@[137; 141)
-                    IDENT@[137; 141) "Copy"
-      R_ANGLE@[141; 142) ">"
-    SEMI@[142; 143) ";"
-  WHITESPACE@[143; 144) "\n"
-  STRUCT_DEF@[144; 180)
-    STRUCT_KW@[144; 150) "struct"
-    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) " "
-        TYPE_BOUND_LIST@[156; 178)
-          TYPE_BOUND@[156; 161)
-            PATH_TYPE@[156; 161)
-              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) " "
-          TYPE_BOUND@[164; 173)
-            PATH_TYPE@[164; 173)
-              PATH@[164; 173)
-                PATH@[164; 168)
-                  PATH_SEGMENT@[164; 168)
-                    SELF_KW@[164; 168) "self"
-                COLONCOLON@[168; 170) "::"
-                PATH_SEGMENT@[170; 173)
-                  NAME_REF@[170; 173)
-                    IDENT@[170; 173) "Bar"
-          WHITESPACE@[173; 174) " "
-          PLUS@[174; 175) "+"
-          WHITESPACE@[175; 176) " "
-          TYPE_BOUND@[176; 178)
-            LIFETIME@[176; 178) "\'a"
-      R_ANGLE@[178; 179) ">"
-    SEMI@[179; 180) ";"
-  WHITESPACE@[180; 181) "\n"
-  STRUCT_DEF@[181; 199)
-    STRUCT_KW@[181; 187) "struct"
-    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) ":"
-        TYPE_BOUND_LIST@[192; 192)
-      COMMA@[192; 193) ","
-      WHITESPACE@[193; 194) " "
-      TYPE_PARAM@[194; 196)
-        NAME@[194; 195)
-          IDENT@[194; 195) "U"
-        COLON@[195; 196) ":"
-        TYPE_BOUND_LIST@[196; 196)
-      COMMA@[196; 197) ","
-      R_ANGLE@[197; 198) ">"
-    SEMI@[198; 199) ";"
-  WHITESPACE@[199; 200) "\n"
-  STRUCT_DEF@[200; 250)
-    STRUCT_KW@[200; 206) "struct"
-    WHITESPACE@[206; 207) " "
-    NAME@[207; 208)
-      IDENT@[207; 208) "K"
-    TYPE_PARAM_LIST@[208; 249)
-      L_ANGLE@[208; 209) "<"
-      LIFETIME_PARAM@[209; 215)
-        LIFETIME@[209; 211) "\'a"
-        COLON@[211; 212) ":"
-        WHITESPACE@[212; 213) " "
-        LIFETIME@[213; 215) "\'d"
-      COMMA@[215; 216) ","
-      WHITESPACE@[216; 217) " "
-      LIFETIME_PARAM@[217; 228)
-        LIFETIME@[217; 219) "\'d"
-        COLON@[219; 220) ":"
-        WHITESPACE@[220; 221) " "
-        LIFETIME@[221; 223) "\'a"
-        WHITESPACE@[223; 224) " "
-        PLUS@[224; 225) "+"
-        WHITESPACE@[225; 226) " "
-        LIFETIME@[226; 228) "\'b"
-      COMMA@[228; 229) ","
-      WHITESPACE@[229; 230) " "
-      TYPE_PARAM@[230; 248)
-        NAME@[230; 231)
-          IDENT@[230; 231) "T"
-        COLON@[231; 232) ":"
-        WHITESPACE@[232; 233) " "
-        TYPE_BOUND_LIST@[233; 248)
-          TYPE_BOUND@[233; 235)
-            LIFETIME@[233; 235) "\'a"
-          WHITESPACE@[235; 236) " "
-          PLUS@[236; 237) "+"
-          WHITESPACE@[237; 238) " "
-          TYPE_BOUND@[238; 240)
-            LIFETIME@[238; 240) "\'d"
-          WHITESPACE@[240; 241) " "
-          PLUS@[241; 242) "+"
-          WHITESPACE@[242; 243) " "
-          TYPE_BOUND@[243; 248)
-            PATH_TYPE@[243; 248)
-              PATH@[243; 248)
-                PATH_SEGMENT@[243; 248)
-                  NAME_REF@[243; 248)
-                    IDENT@[243; 248) "Clone"
-      R_ANGLE@[248; 249) ">"
-    SEMI@[249; 250) ";"
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
deleted file mode 100644 (file)
index e929eef..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644 (file)
index a4e75ec..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-SOURCE_FILE@[0; 71)
-  FN_DEF@[0; 19)
-    ABI@[0; 6)
-      EXTERN_KW@[0; 6) "extern"
-    WHITESPACE@[6; 7) " "
-    FN_KW@[7; 9) "fn"
-    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) "\n"
-      R_CURLY@[18; 19) "}"
-  WHITESPACE@[19; 21) "\n\n"
-  FN_DEF@[21; 44)
-    ABI@[21; 31)
-      EXTERN_KW@[21; 27) "extern"
-      WHITESPACE@[27; 28) " "
-      STRING@[28; 31) "\"C\""
-    WHITESPACE@[31; 32) " "
-    FN_KW@[32; 34) "fn"
-    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) "\n"
-      R_CURLY@[43; 44) "}"
-  WHITESPACE@[44; 46) "\n\n"
-  FN_DEF@[46; 70)
-    ABI@[46; 57)
-      EXTERN_KW@[46; 52) "extern"
-      WHITESPACE@[52; 53) " "
-      RAW_STRING@[53; 57) "r\"D\""
-    WHITESPACE@[57; 58) " "
-    FN_KW@[58; 60) "fn"
-    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) "\n"
-      R_CURLY@[69; 70) "}"
-  WHITESPACE@[70; 71) "\n"
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
deleted file mode 100644 (file)
index f5fe0e6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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
deleted file mode 100644 (file)
index bbbd95f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SOURCE_FILE@[0; 27)
-  EXTERN_BLOCK@[0; 10)
-    ABI@[0; 6)
-      EXTERN_KW@[0; 6) "extern"
-    WHITESPACE@[6; 7) " "
-    EXTERN_ITEM_LIST@[7; 10)
-      L_CURLY@[7; 8) "{"
-      WHITESPACE@[8; 9) "\n"
-      R_CURLY@[9; 10) "}"
-  WHITESPACE@[10; 12) "\n\n"
-  EXTERN_BLOCK@[12; 26)
-    ABI@[12; 22)
-      EXTERN_KW@[12; 18) "extern"
-      WHITESPACE@[18; 19) " "
-      STRING@[19; 22) "\"C\""
-    WHITESPACE@[22; 23) " "
-    EXTERN_ITEM_LIST@[23; 26)
-      L_CURLY@[23; 24) "{"
-      WHITESPACE@[24; 25) "\n"
-      R_CURLY@[25; 26) "}"
-  WHITESPACE@[26; 27) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0023_static_items.rs b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.rs
deleted file mode 100644 (file)
index 5fb92ce..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index 5591f95..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE@[0; 47)
-  STATIC_DEF@[0; 20)
-    STATIC_KW@[0; 6) "static"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 10)
-      IDENT@[7; 10) "FOO"
-    COLON@[10; 11) ":"
-    WHITESPACE@[11; 12) " "
-    PATH_TYPE@[12; 15)
-      PATH@[12; 15)
-        PATH_SEGMENT@[12; 15)
-          NAME_REF@[12; 15)
-            IDENT@[12; 15) "u32"
-    WHITESPACE@[15; 16) " "
-    EQ@[16; 17) "="
-    WHITESPACE@[17; 18) " "
-    LITERAL@[18; 19)
-      INT_NUMBER@[18; 19) "1"
-    SEMI@[19; 20) ";"
-  WHITESPACE@[20; 21) "\n"
-  STATIC_DEF@[21; 46)
-    STATIC_KW@[21; 27) "static"
-    WHITESPACE@[27; 28) " "
-    MUT_KW@[28; 31) "mut"
-    WHITESPACE@[31; 32) " "
-    NAME@[32; 35)
-      IDENT@[32; 35) "BAR"
-    COLON@[35; 36) ":"
-    WHITESPACE@[36; 37) " "
-    PATH_TYPE@[37; 40)
-      PATH@[37; 40)
-        PATH_SEGMENT@[37; 40)
-          NAME_REF@[37; 40)
-            IDENT@[37; 40) "i32"
-    WHITESPACE@[40; 41) " "
-    EQ@[41; 42) "="
-    WHITESPACE@[42; 43) " "
-    LITERAL@[43; 45)
-      INT_NUMBER@[43; 45) "92"
-    SEMI@[45; 46) ";"
-  WHITESPACE@[46; 47) "\n"
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
deleted file mode 100644 (file)
index 7446859..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644 (file)
index dea8a3a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE@[0; 46)
-  CONST_DEF@[0; 20)
-    CONST_KW@[0; 5) "const"
-    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) "\n"
-  CONST_DEF@[21; 45)
-    CONST_KW@[21; 26) "const"
-    WHITESPACE@[26; 27) " "
-    MUT_KW@[27; 30) "mut"
-    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) "\n"
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
deleted file mode 100644 (file)
index 2898098..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index a345f4b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-SOURCE_FILE@[0; 35)
-  FN_DEF@[0; 34)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 34)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      FN_DEF@[16; 32)
-        ABI@[16; 22)
-          EXTERN_KW@[16; 22) "extern"
-        WHITESPACE@[22; 23) " "
-        FN_KW@[23; 25) "fn"
-        WHITESPACE@[25; 26) " "
-        NAME@[26; 27)
-          IDENT@[26; 27) "f"
-        PARAM_LIST@[27; 29)
-          L_PAREN@[27; 28) "("
-          R_PAREN@[28; 29) ")"
-        WHITESPACE@[29; 30) " "
-        BLOCK@[30; 32)
-          L_CURLY@[30; 31) "{"
-          R_CURLY@[31; 32) "}"
-      WHITESPACE@[32; 33) "\n"
-      R_CURLY@[33; 34) "}"
-  WHITESPACE@[34; 35) "\n"
diff --git a/crates/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
deleted file mode 100644 (file)
index 7641a3d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644 (file)
index cbcd15a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE@[0; 34)
-  FN_DEF@[0; 33)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 33)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      FN_DEF@[16; 31)
-        CONST_KW@[16; 21) "const"
-        WHITESPACE@[21; 22) " "
-        FN_KW@[22; 24) "fn"
-        WHITESPACE@[24; 25) " "
-        NAME@[25; 26)
-          IDENT@[25; 26) "f"
-        PARAM_LIST@[26; 28)
-          L_PAREN@[26; 27) "("
-          R_PAREN@[27; 28) ")"
-        WHITESPACE@[28; 29) " "
-        BLOCK@[29; 31)
-          L_CURLY@[29; 30) "{"
-          R_CURLY@[30; 31) "}"
-      WHITESPACE@[31; 32) "\n"
-      R_CURLY@[32; 33) "}"
-  WHITESPACE@[33; 34) "\n"
diff --git a/crates/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
deleted file mode 100644 (file)
index f3c5ff9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-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
deleted file mode 100644 (file)
index f863759..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE@[0; 53)
-  FN_DEF@[0; 52)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 52)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      FN_DEF@[16; 32)
-        UNSAFE_KW@[16; 22) "unsafe"
-        WHITESPACE@[22; 23) " "
-        FN_KW@[23; 25) "fn"
-        WHITESPACE@[25; 26) " "
-        NAME@[26; 27)
-          IDENT@[26; 27) "f"
-        PARAM_LIST@[27; 29)
-          L_PAREN@[27; 28) "("
-          R_PAREN@[28; 29) ")"
-        WHITESPACE@[29; 30) " "
-        BLOCK@[30; 32)
-          L_CURLY@[30; 31) "{"
-          R_CURLY@[31; 32) "}"
-      WHITESPACE@[32; 37) "\n    "
-      BLOCK_EXPR@[37; 50)
-        UNSAFE_KW@[37; 43) "unsafe"
-        WHITESPACE@[43; 44) " "
-        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) "\n"
-      R_CURLY@[51; 52) "}"
-  WHITESPACE@[52; 53) "\n"
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
deleted file mode 100644 (file)
index cc95984..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-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
deleted file mode 100644 (file)
index b066764..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-SOURCE_FILE@[0; 248)
-  FN_DEF@[0; 247)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 16)
-      IDENT@[3; 16) "binding_power"
-    PARAM_LIST@[16; 18)
-      L_PAREN@[16; 17) "("
-      R_PAREN@[17; 18) ")"
-    WHITESPACE@[18; 19) " "
-    BLOCK@[19; 247)
-      L_CURLY@[19; 20) "{"
-      WHITESPACE@[20; 25) "\n    "
-      LET_STMT@[25; 55)
-        LET_KW@[25; 28) "let"
-        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) "\n    "
-      EXPR_STMT@[60; 70)
-        BIN_EXPR@[60; 69)
-          LITERAL@[60; 61)
-            INT_NUMBER@[60; 61) "1"
-          WHITESPACE@[61; 62) " "
-          PLUS@[62; 63) "+"
-          WHITESPACE@[63; 64) " "
-          BIN_EXPR@[64; 69)
-            LITERAL@[64; 65)
-              INT_NUMBER@[64; 65) "2"
-            WHITESPACE@[65; 66) " "
-            STAR@[66; 67) "*"
-            WHITESPACE@[67; 68) " "
-            LITERAL@[68; 69)
-              INT_NUMBER@[68; 69) "3"
-        SEMI@[69; 70) ";"
-      WHITESPACE@[70; 75) "\n    "
-      EXPR_STMT@[75; 86)
-        BIN_EXPR@[75; 85)
-          LITERAL@[75; 76)
-            INT_NUMBER@[75; 76) "1"
-          WHITESPACE@[76; 77) " "
-          SHL@[77; 79) "<<"
-          WHITESPACE@[79; 80) " "
-          BIN_EXPR@[80; 85)
-            LITERAL@[80; 81)
-              INT_NUMBER@[80; 81) "2"
-            WHITESPACE@[81; 82) " "
-            PLUS@[82; 83) "+"
-            WHITESPACE@[83; 84) " "
-            LITERAL@[84; 85)
-              INT_NUMBER@[84; 85) "3"
-        SEMI@[85; 86) ";"
-      WHITESPACE@[86; 91) "\n    "
-      EXPR_STMT@[91; 102)
-        BIN_EXPR@[91; 101)
-          LITERAL@[91; 92)
-            INT_NUMBER@[91; 92) "1"
-          WHITESPACE@[92; 93) " "
-          AMP@[93; 94) "&"
-          WHITESPACE@[94; 95) " "
-          BIN_EXPR@[95; 101)
-            LITERAL@[95; 96)
-              INT_NUMBER@[95; 96) "2"
-            WHITESPACE@[96; 97) " "
-            SHR@[97; 99) ">>"
-            WHITESPACE@[99; 100) " "
-            LITERAL@[100; 101)
-              INT_NUMBER@[100; 101) "3"
-        SEMI@[101; 102) ";"
-      WHITESPACE@[102; 107) "\n    "
-      EXPR_STMT@[107; 117)
-        BIN_EXPR@[107; 116)
-          LITERAL@[107; 108)
-            INT_NUMBER@[107; 108) "1"
-          WHITESPACE@[108; 109) " "
-          CARET@[109; 110) "^"
-          WHITESPACE@[110; 111) " "
-          BIN_EXPR@[111; 116)
-            LITERAL@[111; 112)
-              INT_NUMBER@[111; 112) "2"
-            WHITESPACE@[112; 113) " "
-            AMP@[113; 114) "&"
-            WHITESPACE@[114; 115) " "
-            LITERAL@[115; 116)
-              INT_NUMBER@[115; 116) "3"
-        SEMI@[116; 117) ";"
-      WHITESPACE@[117; 122) "\n    "
-      EXPR_STMT@[122; 132)
-        BIN_EXPR@[122; 131)
-          LITERAL@[122; 123)
-            INT_NUMBER@[122; 123) "1"
-          WHITESPACE@[123; 124) " "
-          PIPE@[124; 125) "|"
-          WHITESPACE@[125; 126) " "
-          BIN_EXPR@[126; 131)
-            LITERAL@[126; 127)
-              INT_NUMBER@[126; 127) "2"
-            WHITESPACE@[127; 128) " "
-            CARET@[128; 129) "^"
-            WHITESPACE@[129; 130) " "
-            LITERAL@[130; 131)
-              INT_NUMBER@[130; 131) "3"
-        SEMI@[131; 132) ";"
-      WHITESPACE@[132; 137) "\n    "
-      EXPR_STMT@[137; 148)
-        BIN_EXPR@[137; 147)
-          LITERAL@[137; 138)
-            INT_NUMBER@[137; 138) "1"
-          WHITESPACE@[138; 139) " "
-          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) "\n    "
-      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) "\n    "
-      COMMENT@[170; 184) "//1 || 2 && 2;"
-      WHITESPACE@[184; 189) "\n    "
-      COMMENT@[189; 203) "//1 .. 2 || 3;"
-      WHITESPACE@[203; 208) "\n    "
-      COMMENT@[208; 221) "//1 = 2 .. 3;"
-      WHITESPACE@[221; 226) "\n    "
-      COMMENT@[226; 245) "//---&*1 - --2 * 9;"
-      WHITESPACE@[245; 246) "\n"
-      R_CURLY@[246; 247) "}"
-  WHITESPACE@[247; 248) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.rs b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.rs
deleted file mode 100644 (file)
index f9ff444..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-fn foo() {
-    ..1 + 1;
-    ..z = 2;
-    x = false..1 == 1;
-    let x = 1..;
-    
-    ..=1 + 1;
-    ..=z = 2;
-    x = false..=1 == 1;
-    let x = 1..;
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt
deleted file mode 100644 (file)
index e4db98c..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-SOURCE_FILE@[0; 153)
-  FN_DEF@[0; 152)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 152)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      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) "\n    "
-      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) "\n    "
-      EXPR_STMT@[41; 59)
-        BIN_EXPR@[41; 58)
-          PATH_EXPR@[41; 42)
-            PATH@[41; 42)
-              PATH_SEGMENT@[41; 42)
-                NAME_REF@[41; 42)
-                  IDENT@[41; 42) "x"
-          WHITESPACE@[42; 43) " "
-          EQ@[43; 44) "="
-          WHITESPACE@[44; 45) " "
-          RANGE_EXPR@[45; 58)
-            LITERAL@[45; 50)
-              FALSE_KW@[45; 50) "false"
-            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) "\n    "
-      LET_STMT@[64; 76)
-        LET_KW@[64; 67) "let"
-        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; 86) "\n    \n    "
-      EXPR_STMT@[86; 95)
-        RANGE_EXPR@[86; 94)
-          DOTDOTEQ@[86; 89) "..="
-          BIN_EXPR@[89; 94)
-            LITERAL@[89; 90)
-              INT_NUMBER@[89; 90) "1"
-            WHITESPACE@[90; 91) " "
-            PLUS@[91; 92) "+"
-            WHITESPACE@[92; 93) " "
-            LITERAL@[93; 94)
-              INT_NUMBER@[93; 94) "1"
-        SEMI@[94; 95) ";"
-      WHITESPACE@[95; 100) "\n    "
-      EXPR_STMT@[100; 109)
-        BIN_EXPR@[100; 108)
-          RANGE_EXPR@[100; 104)
-            DOTDOTEQ@[100; 103) "..="
-            PATH_EXPR@[103; 104)
-              PATH@[103; 104)
-                PATH_SEGMENT@[103; 104)
-                  NAME_REF@[103; 104)
-                    IDENT@[103; 104) "z"
-          WHITESPACE@[104; 105) " "
-          EQ@[105; 106) "="
-          WHITESPACE@[106; 107) " "
-          LITERAL@[107; 108)
-            INT_NUMBER@[107; 108) "2"
-        SEMI@[108; 109) ";"
-      WHITESPACE@[109; 114) "\n    "
-      EXPR_STMT@[114; 133)
-        BIN_EXPR@[114; 132)
-          PATH_EXPR@[114; 115)
-            PATH@[114; 115)
-              PATH_SEGMENT@[114; 115)
-                NAME_REF@[114; 115)
-                  IDENT@[114; 115) "x"
-          WHITESPACE@[115; 116) " "
-          EQ@[116; 117) "="
-          WHITESPACE@[117; 118) " "
-          RANGE_EXPR@[118; 132)
-            LITERAL@[118; 123)
-              FALSE_KW@[118; 123) "false"
-            DOTDOTEQ@[123; 126) "..="
-            BIN_EXPR@[126; 132)
-              LITERAL@[126; 127)
-                INT_NUMBER@[126; 127) "1"
-              WHITESPACE@[127; 128) " "
-              EQEQ@[128; 130) "=="
-              WHITESPACE@[130; 131) " "
-              LITERAL@[131; 132)
-                INT_NUMBER@[131; 132) "1"
-        SEMI@[132; 133) ";"
-      WHITESPACE@[133; 138) "\n    "
-      LET_STMT@[138; 150)
-        LET_KW@[138; 141) "let"
-        WHITESPACE@[141; 142) " "
-        BIND_PAT@[142; 143)
-          NAME@[142; 143)
-            IDENT@[142; 143) "x"
-        WHITESPACE@[143; 144) " "
-        EQ@[144; 145) "="
-        WHITESPACE@[145; 146) " "
-        RANGE_EXPR@[146; 149)
-          LITERAL@[146; 147)
-            INT_NUMBER@[146; 147) "1"
-          DOTDOT@[147; 149) ".."
-        SEMI@[149; 150) ";"
-      WHITESPACE@[150; 151) "\n"
-      R_CURLY@[151; 152) "}"
-  WHITESPACE@[152; 153) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.rs b/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.rs
deleted file mode 100644 (file)
index 261aad1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn main() {
-    let _ = 'c'u32;
-    let _ = "string"invalid;
-    let _ = b'b'_suff;
-    let _ = b"bs"invalid;
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.txt b/crates/ra_syntax/tests/data/parser/ok/0030_string_suffixes.txt
deleted file mode 100644 (file)
index 4f7e809..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-SOURCE_FILE@[0; 112)
-  FN_DEF@[0; 111)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 111)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      LET_STMT@[16; 31)
-        LET_KW@[16; 19) "let"
-        WHITESPACE@[19; 20) " "
-        PLACEHOLDER_PAT@[20; 21)
-          UNDERSCORE@[20; 21) "_"
-        WHITESPACE@[21; 22) " "
-        EQ@[22; 23) "="
-        WHITESPACE@[23; 24) " "
-        LITERAL@[24; 30)
-          CHAR@[24; 30) "\'c\'u32"
-        SEMI@[30; 31) ";"
-      WHITESPACE@[31; 36) "\n    "
-      LET_STMT@[36; 60)
-        LET_KW@[36; 39) "let"
-        WHITESPACE@[39; 40) " "
-        PLACEHOLDER_PAT@[40; 41)
-          UNDERSCORE@[40; 41) "_"
-        WHITESPACE@[41; 42) " "
-        EQ@[42; 43) "="
-        WHITESPACE@[43; 44) " "
-        LITERAL@[44; 59)
-          STRING@[44; 59) "\"string\"invalid"
-        SEMI@[59; 60) ";"
-      WHITESPACE@[60; 65) "\n    "
-      LET_STMT@[65; 83)
-        LET_KW@[65; 68) "let"
-        WHITESPACE@[68; 69) " "
-        PLACEHOLDER_PAT@[69; 70)
-          UNDERSCORE@[69; 70) "_"
-        WHITESPACE@[70; 71) " "
-        EQ@[71; 72) "="
-        WHITESPACE@[72; 73) " "
-        LITERAL@[73; 82)
-          BYTE@[73; 82) "b\'b\'_suff"
-        SEMI@[82; 83) ";"
-      WHITESPACE@[83; 88) "\n    "
-      LET_STMT@[88; 109)
-        LET_KW@[88; 91) "let"
-        WHITESPACE@[91; 92) " "
-        PLACEHOLDER_PAT@[92; 93)
-          UNDERSCORE@[92; 93) "_"
-        WHITESPACE@[93; 94) " "
-        EQ@[94; 95) "="
-        WHITESPACE@[95; 96) " "
-        LITERAL@[96; 108)
-          BYTE_STRING@[96; 108) "b\"bs\"invalid"
-        SEMI@[108; 109) ";"
-      WHITESPACE@[109; 110) "\n"
-      R_CURLY@[110; 111) "}"
-  WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0030_traits.rs b/crates/ra_syntax/tests/data/parser/ok/0030_traits.rs
deleted file mode 100644 (file)
index 23c4be0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-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
deleted file mode 100644 (file)
index b656c1a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-SOURCE_FILE@[0; 164)
-  TRAIT_DEF@[0; 66)
-    VISIBILITY@[0; 3)
-      PUB_KW@[0; 3) "pub"
-    WHITESPACE@[3; 4) " "
-    TRAIT_KW@[4; 9) "trait"
-    WHITESPACE@[9; 10) " "
-    NAME@[10; 22)
-      IDENT@[10; 22) "WriteMessage"
-    WHITESPACE@[22; 23) " "
-    ITEM_LIST@[23; 66)
-      L_CURLY@[23; 24) "{"
-      WHITESPACE@[24; 29) "\n    "
-      FN_DEF@[29; 64)
-        FN_KW@[29; 31) "fn"
-        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) "\n"
-      R_CURLY@[65; 66) "}"
-  WHITESPACE@[66; 68) "\n\n"
-  TRAIT_DEF@[68; 104)
-    TRAIT_KW@[68; 73) "trait"
-    WHITESPACE@[73; 74) " "
-    NAME@[74; 82)
-      IDENT@[74; 82) "Runnable"
-    WHITESPACE@[82; 83) " "
-    ITEM_LIST@[83; 104)
-      L_CURLY@[83; 84) "{"
-      WHITESPACE@[84; 89) "\n    "
-      FN_DEF@[89; 102)
-        FN_KW@[89; 91) "fn"
-        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) "\n"
-      R_CURLY@[103; 104) "}"
-  WHITESPACE@[104; 106) "\n\n"
-  TRAIT_DEF@[106; 163)
-    TRAIT_KW@[106; 111) "trait"
-    WHITESPACE@[111; 112) " "
-    NAME@[112; 125)
-      IDENT@[112; 125) "TraitWithExpr"
-    WHITESPACE@[125; 126) " "
-    ITEM_LIST@[126; 163)
-      L_CURLY@[126; 127) "{"
-      WHITESPACE@[127; 132) "\n    "
-      FN_DEF@[132; 161)
-        FN_KW@[132; 134) "fn"
-        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) "\n"
-      R_CURLY@[162; 163) "}"
-  WHITESPACE@[163; 164) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0031_extern.rs b/crates/ra_syntax/tests/data/parser/ok/0031_extern.rs
deleted file mode 100644 (file)
index b33ac27..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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
deleted file mode 100644 (file)
index badbf76..0000000
+++ /dev/null
@@ -1,973 +0,0 @@
-SOURCE_FILE@[0; 1598)
-  EXTERN_BLOCK@[0; 1597)
-    ABI@[0; 6)
-      EXTERN_KW@[0; 6) "extern"
-    WHITESPACE@[6; 7) " "
-    EXTERN_ITEM_LIST@[7; 1597)
-      L_CURLY@[7; 8) "{"
-      WHITESPACE@[8; 13) "\n    "
-      FN_DEF@[13; 87)
-        VISIBILITY@[13; 16)
-          PUB_KW@[13; 16) "pub"
-        WHITESPACE@[16; 17) " "
-        FN_KW@[17; 19) "fn"
-        WHITESPACE@[19; 20) " "
-        NAME@[20; 26)
-          IDENT@[20; 26) "socket"
-        PARAM_LIST@[26; 75)
-          L_PAREN@[26; 27) "("
-          PARAM@[27; 42)
-            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) "\n    "
-      FN_DEF@[92; 167)
-        VISIBILITY@[92; 95)
-          PUB_KW@[92; 95) "pub"
-        WHITESPACE@[95; 96) " "
-        FN_KW@[96; 98) "fn"
-        WHITESPACE@[98; 99) " "
-        NAME@[99; 103)
-          IDENT@[99; 103) "bind"
-        PARAM_LIST@[103; 155)
-          L_PAREN@[103; 104) "("
-          PARAM@[104; 115)
-            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) "const"
-              WHITESPACE@[129; 130) " "
-              PATH_TYPE@[130; 138)
-                PATH@[130; 138)
-                  PATH_SEGMENT@[130; 138)
-                    NAME_REF@[130; 138)
-                      IDENT@[130; 138) "sockaddr"
-          COMMA@[138; 139) ","
-          WHITESPACE@[139; 140) " "
-          PARAM@[140; 154)
-            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) "\n    "
-      FN_DEF@[172; 276)
-        VISIBILITY@[172; 175)
-          PUB_KW@[172; 175) "pub"
-        WHITESPACE@[175; 176) " "
-        FN_KW@[176; 178) "fn"
-        WHITESPACE@[178; 179) " "
-        NAME@[179; 186)
-          IDENT@[179; 186) "connect"
-        PARAM_LIST@[186; 264)
-          L_PAREN@[186; 187) "("
-          PARAM@[187; 202)
-            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) "const"
-              WHITESPACE@[219; 220) " "
-              PATH_TYPE@[220; 228)
-                PATH@[220; 228)
-                  PATH_SEGMENT@[220; 228)
-                    NAME_REF@[220; 228)
-                      IDENT@[220; 228) "sockaddr"
-          COMMA@[228; 229) ","
-          WHITESPACE@[229; 249) "\n                   "
-          PARAM@[249; 263)
-            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) "\n    "
-      FN_DEF@[281; 341)
-        VISIBILITY@[281; 284)
-          PUB_KW@[281; 284) "pub"
-        WHITESPACE@[284; 285) " "
-        FN_KW@[285; 287) "fn"
-        WHITESPACE@[287; 288) " "
-        NAME@[288; 294)
-          IDENT@[288; 294) "listen"
-        PARAM_LIST@[294; 329)
-          L_PAREN@[294; 295) "("
-          PARAM@[295; 310)
-            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) "\n    "
-      FN_DEF@[346; 469)
-        VISIBILITY@[346; 349)
-          PUB_KW@[346; 349) "pub"
-        WHITESPACE@[349; 350) " "
-        FN_KW@[350; 352) "fn"
-        WHITESPACE@[352; 353) " "
-        NAME@[353; 364)
-          IDENT@[353; 364) "getsockname"
-        PARAM_LIST@[364; 457)
-          L_PAREN@[364; 365) "("
-          PARAM@[365; 380)
-            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) "mut"
-              WHITESPACE@[395; 396) " "
-              PATH_TYPE@[396; 404)
-                PATH@[396; 404)
-                  PATH_SEGMENT@[396; 404)
-                    NAME_REF@[396; 404)
-                      IDENT@[396; 404) "sockaddr"
-          COMMA@[404; 405) ","
-          WHITESPACE@[405; 429) "\n                       "
-          PARAM@[429; 456)
-            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) "mut"
-              WHITESPACE@[446; 447) " "
-              PATH_TYPE@[447; 456)
-                PATH@[447; 456)
-                  PATH_SEGMENT@[447; 456)
-                    NAME_REF@[447; 456)
-                      IDENT@[447; 456) "socklen_t"
-          R_PAREN@[456; 457) ")"
-        WHITESPACE@[457; 458) " "
-        RET_TYPE@[458; 468)
-          THIN_ARROW@[458; 460) "->"
-          WHITESPACE@[460; 461) " "
-          PATH_TYPE@[461; 468)
-            PATH@[461; 468)
-              PATH_SEGMENT@[461; 468)
-                COLONCOLON@[461; 463) "::"
-                NAME_REF@[463; 468)
-                  IDENT@[463; 468) "c_int"
-        SEMI@[468; 469) ";"
-      WHITESPACE@[469; 474) "\n    "
-      FN_DEF@[474; 691)
-        VISIBILITY@[474; 477)
-          PUB_KW@[474; 477) "pub"
-        WHITESPACE@[477; 478) " "
-        FN_KW@[478; 480) "fn"
-        WHITESPACE@[480; 481) " "
-        NAME@[481; 491)
-          IDENT@[481; 491) "getsockopt"
-        PARAM_LIST@[491; 679)
-          L_PAREN@[491; 492) "("
-          PARAM@[492; 507)
-            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) "\n                      "
-          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) "\n                      "
-          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) "\n                      "
-          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) "mut"
-              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) "\n                      "
-          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) "mut"
-              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) "\n    "
-      FN_DEF@[696; 864)
-        VISIBILITY@[696; 699)
-          PUB_KW@[696; 699) "pub"
-        WHITESPACE@[699; 700) " "
-        FN_KW@[700; 702) "fn"
-        WHITESPACE@[702; 703) " "
-        NAME@[703; 713)
-          IDENT@[703; 713) "setsockopt"
-        PARAM_LIST@[713; 852)
-          L_PAREN@[713; 714) "("
-          PARAM@[714; 729)
-            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) "\n                      "
-          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) "const"
-              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) "\n                      "
-          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) "\n    "
-      FN_DEF@[869; 992)
-        VISIBILITY@[869; 872)
-          PUB_KW@[869; 872) "pub"
-        WHITESPACE@[872; 873) " "
-        FN_KW@[873; 875) "fn"
-        WHITESPACE@[875; 876) " "
-        NAME@[876; 887)
-          IDENT@[876; 887) "getpeername"
-        PARAM_LIST@[887; 980)
-          L_PAREN@[887; 888) "("
-          PARAM@[888; 903)
-            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) "mut"
-              WHITESPACE@[918; 919) " "
-              PATH_TYPE@[919; 927)
-                PATH@[919; 927)
-                  PATH_SEGMENT@[919; 927)
-                    NAME_REF@[919; 927)
-                      IDENT@[919; 927) "sockaddr"
-          COMMA@[927; 928) ","
-          WHITESPACE@[928; 952) "\n                       "
-          PARAM@[952; 979)
-            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) "mut"
-              WHITESPACE@[969; 970) " "
-              PATH_TYPE@[970; 979)
-                PATH@[970; 979)
-                  PATH_SEGMENT@[970; 979)
-                    NAME_REF@[970; 979)
-                      IDENT@[970; 979) "socklen_t"
-          R_PAREN@[979; 980) ")"
-        WHITESPACE@[980; 981) " "
-        RET_TYPE@[981; 991)
-          THIN_ARROW@[981; 983) "->"
-          WHITESPACE@[983; 984) " "
-          PATH_TYPE@[984; 991)
-            PATH@[984; 991)
-              PATH_SEGMENT@[984; 991)
-                COLONCOLON@[984; 986) "::"
-                NAME_REF@[986; 991)
-                  IDENT@[986; 991) "c_int"
-        SEMI@[991; 992) ";"
-      WHITESPACE@[992; 997) "\n    "
-      FN_DEF@[997; 1173)
-        VISIBILITY@[997; 1000)
-          PUB_KW@[997; 1000) "pub"
-        WHITESPACE@[1000; 1001) " "
-        FN_KW@[1001; 1003) "fn"
-        WHITESPACE@[1003; 1004) " "
-        NAME@[1004; 1010)
-          IDENT@[1004; 1010) "sendto"
-        PARAM_LIST@[1010; 1159)
-          L_PAREN@[1010; 1011) "("
-          PARAM@[1011; 1026)
-            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) "const"
-              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) "\n                  "
-          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) "const"
-              WHITESPACE@[1111; 1112) " "
-              PATH_TYPE@[1112; 1120)
-                PATH@[1112; 1120)
-                  PATH_SEGMENT@[1112; 1120)
-                    NAME_REF@[1112; 1120)
-                      IDENT@[1112; 1120) "sockaddr"
-          COMMA@[1120; 1121) ","
-          WHITESPACE@[1121; 1140) "\n                  "
-          PARAM@[1140; 1158)
-            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) "\n    "
-      FN_DEF@[1178; 1289)
-        VISIBILITY@[1178; 1181)
-          PUB_KW@[1178; 1181) "pub"
-        WHITESPACE@[1181; 1182) " "
-        FN_KW@[1182; 1184) "fn"
-        WHITESPACE@[1184; 1185) " "
-        NAME@[1185; 1189)
-          IDENT@[1185; 1189) "send"
-        PARAM_LIST@[1189; 1275)
-          L_PAREN@[1189; 1190) "("
-          PARAM@[1190; 1205)
-            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) "const"
-              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) "\n                "
-          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) "\n    "
-      FN_DEF@[1294; 1481)
-        VISIBILITY@[1294; 1297)
-          PUB_KW@[1294; 1297) "pub"
-        WHITESPACE@[1297; 1298) " "
-        FN_KW@[1298; 1300) "fn"
-        WHITESPACE@[1300; 1301) " "
-        NAME@[1301; 1309)
-          IDENT@[1301; 1309) "recvfrom"
-        PARAM_LIST@[1309; 1467)
-          L_PAREN@[1309; 1310) "("
-          PARAM@[1310; 1325)
-            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) "mut"
-              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) "\n                    "
-          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) "mut"
-              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) "\n                    "
-          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) "mut"
-              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) "\n    "
-      FN_DEF@[1486; 1595)
-        VISIBILITY@[1486; 1489)
-          PUB_KW@[1486; 1489) "pub"
-        WHITESPACE@[1489; 1490) " "
-        FN_KW@[1490; 1492) "fn"
-        WHITESPACE@[1492; 1493) " "
-        NAME@[1493; 1497)
-          IDENT@[1493; 1497) "recv"
-        PARAM_LIST@[1497; 1581)
-          L_PAREN@[1497; 1498) "("
-          PARAM@[1498; 1513)
-            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) "mut"
-              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) "\n                "
-          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) "\n"
-      R_CURLY@[1596; 1597) "}"
-  WHITESPACE@[1597; 1598) "\n"
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
deleted file mode 100644 (file)
index 588170f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-fn test_serialization<SER>()
-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
deleted file mode 100644 (file)
index 9b1d0e8..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE@[0; 116)
-  FN_DEF@[0; 115)
-    FN_KW@[0; 2) "fn"
-    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) "\n"
-    WHERE_CLAUSE@[29; 112)
-      WHERE_KW@[29; 34) "where"
-      WHITESPACE@[34; 39) "\n    "
-      WHERE_PRED@[39; 111)
-        PATH_TYPE@[39; 42)
-          PATH@[39; 42)
-            PATH_SEGMENT@[39; 42)
-              NAME_REF@[39; 42)
-                IDENT@[39; 42) "SER"
-        COLON@[42; 43) ":"
-        WHITESPACE@[43; 44) " "
-        TYPE_BOUND_LIST@[44; 111)
-          TYPE_BOUND@[44; 53)
-            PATH_TYPE@[44; 53)
-              PATH@[44; 53)
-                PATH_SEGMENT@[44; 53)
-                  NAME_REF@[44; 53)
-                    IDENT@[44; 53) "Serialize"
-          WHITESPACE@[53; 54) " "
-          PLUS@[54; 55) "+"
-          WHITESPACE@[55; 56) " "
-          TYPE_BOUND@[56; 81)
-            FOR_TYPE@[56; 81)
-              FOR_KW@[56; 59) "for"
-              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) " "
-          TYPE_BOUND@[84; 93)
-            PATH_TYPE@[84; 93)
-              PATH@[84; 93)
-                PATH_SEGMENT@[84; 93)
-                  NAME_REF@[84; 93)
-                    IDENT@[84; 93) "PartialEq"
-          WHITESPACE@[93; 94) " "
-          PLUS@[94; 95) "+"
-          WHITESPACE@[95; 96) " "
-          TYPE_BOUND@[96; 111)
-            PATH_TYPE@[96; 111)
-              PATH@[96; 111)
-                PATH@[96; 104)
-                  PATH@[96; 99)
-                    PATH_SEGMENT@[96; 99)
-                      NAME_REF@[96; 99)
-                        IDENT@[96; 99) "std"
-                  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) "\n"
-    BLOCK@[113; 115)
-      L_CURLY@[113; 114) "{"
-      R_CURLY@[114; 115) "}"
-  WHITESPACE@[115; 116) "\n"
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
deleted file mode 100644 (file)
index 728d781..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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
deleted file mode 100644 (file)
index 845a8d7..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-SOURCE_FILE@[0; 506)
-  FN_DEF@[0; 505)
-    COMMENT@[0; 33) "// format with label  ..."
-    WHITESPACE@[33; 34) "\n"
-    FN_KW@[34; 36) "fn"
-    WHITESPACE@[36; 37) " "
-    NAME@[37; 41)
-      IDENT@[37; 41) "main"
-    PARAM_LIST@[41; 43)
-      L_PAREN@[41; 42) "("
-      R_PAREN@[42; 43) ")"
-    WHITESPACE@[43; 44) " "
-    BLOCK@[44; 505)
-      L_CURLY@[44; 45) "{"
-      WHITESPACE@[45; 50) "\n    "
-      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) "\n\n    "
-      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) "\n        "
-            EXPR_STMT@[90; 101)
-              CALL_EXPR@[90; 100)
-                PATH_EXPR@[90; 98)
-                  PATH@[90; 98)
-                    PATH_SEGMENT@[90; 98)
-                      NAME_REF@[90; 98)
-                        IDENT@[90; 98) "do_thing"
-                ARG_LIST@[98; 100)
-                  L_PAREN@[98; 99) "("
-                  R_PAREN@[99; 100) ")"
-              SEMI@[100; 101) ";"
-            WHITESPACE@[101; 110) "\n        "
-            EXPR_STMT@[110; 170)
-              IF_EXPR@[110; 170)
-                IF_KW@[110; 112) "if"
-                WHITESPACE@[112; 113) " "
-                CONDITION@[113; 132)
-                  CALL_EXPR@[113; 132)
-                    PATH_EXPR@[113; 130)
-                      PATH@[113; 130)
-                        PATH_SEGMENT@[113; 130)
-                          NAME_REF@[113; 130)
-                            IDENT@[113; 130) "condition_not_met"
-                    ARG_LIST@[130; 132)
-                      L_PAREN@[130; 131) "("
-                      R_PAREN@[131; 132) ")"
-                WHITESPACE@[132; 133) " "
-                BLOCK@[133; 170)
-                  L_CURLY@[133; 134) "{"
-                  WHITESPACE@[134; 147) "\n            "
-                  EXPR_STMT@[147; 160)
-                    BREAK_EXPR@[147; 159)
-                      BREAK_KW@[147; 152) "break"
-                      WHITESPACE@[152; 153) " "
-                      LIFETIME@[153; 159) "\'block"
-                    SEMI@[159; 160) ";"
-                  WHITESPACE@[160; 169) "\n        "
-                  R_CURLY@[169; 170) "}"
-            WHITESPACE@[170; 179) "\n        "
-            EXPR_STMT@[179; 195)
-              CALL_EXPR@[179; 194)
-                PATH_EXPR@[179; 192)
-                  PATH@[179; 192)
-                    PATH_SEGMENT@[179; 192)
-                      NAME_REF@[179; 192)
-                        IDENT@[179; 192) "do_next_thing"
-                ARG_LIST@[192; 194)
-                  L_PAREN@[192; 193) "("
-                  R_PAREN@[193; 194) ")"
-              SEMI@[194; 195) ";"
-            WHITESPACE@[195; 204) "\n        "
-            EXPR_STMT@[204; 264)
-              IF_EXPR@[204; 264)
-                IF_KW@[204; 206) "if"
-                WHITESPACE@[206; 207) " "
-                CONDITION@[207; 226)
-                  CALL_EXPR@[207; 226)
-                    PATH_EXPR@[207; 224)
-                      PATH@[207; 224)
-                        PATH_SEGMENT@[207; 224)
-                          NAME_REF@[207; 224)
-                            IDENT@[207; 224) "condition_not_met"
-                    ARG_LIST@[224; 226)
-                      L_PAREN@[224; 225) "("
-                      R_PAREN@[225; 226) ")"
-                WHITESPACE@[226; 227) " "
-                BLOCK@[227; 264)
-                  L_CURLY@[227; 228) "{"
-                  WHITESPACE@[228; 241) "\n            "
-                  EXPR_STMT@[241; 254)
-                    BREAK_EXPR@[241; 253)
-                      BREAK_KW@[241; 246) "break"
-                      WHITESPACE@[246; 247) " "
-                      LIFETIME@[247; 253) "\'block"
-                    SEMI@[253; 254) ";"
-                  WHITESPACE@[254; 263) "\n        "
-                  R_CURLY@[263; 264) "}"
-            WHITESPACE@[264; 273) "\n        "
-            EXPR_STMT@[273; 289)
-              CALL_EXPR@[273; 288)
-                PATH_EXPR@[273; 286)
-                  PATH@[273; 286)
-                    PATH_SEGMENT@[273; 286)
-                      NAME_REF@[273; 286)
-                        IDENT@[273; 286) "do_last_thing"
-                ARG_LIST@[286; 288)
-                  L_PAREN@[286; 287) "("
-                  R_PAREN@[287; 288) ")"
-              SEMI@[288; 289) ";"
-            WHITESPACE@[289; 294) "\n    "
-            R_CURLY@[294; 295) "}"
-      WHITESPACE@[295; 301) "\n\n    "
-      LET_STMT@[301; 503)
-        LET_KW@[301; 304) "let"
-        WHITESPACE@[304; 305) " "
-        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) "\n        "
-            EXPR_STMT@[332; 403)
-              IF_EXPR@[332; 403)
-                IF_KW@[332; 334) "if"
-                WHITESPACE@[334; 335) " "
-                CONDITION@[335; 340)
-                  CALL_EXPR@[335; 340)
-                    PATH_EXPR@[335; 338)
-                      PATH@[335; 338)
-                        PATH_SEGMENT@[335; 338)
-                          NAME_REF@[335; 338)
-                            IDENT@[335; 338) "foo"
-                    ARG_LIST@[338; 340)
-                      L_PAREN@[338; 339) "("
-                      R_PAREN@[339; 340) ")"
-                WHITESPACE@[340; 341) " "
-                BLOCK@[341; 403)
-                  L_CURLY@[341; 342) "{"
-                  WHITESPACE@[342; 355) "\n            "
-                  COMMENT@[355; 365) "// comment"
-                  WHITESPACE@[365; 378) "\n            "
-                  EXPR_STMT@[378; 393)
-                    BREAK_EXPR@[378; 392)
-                      BREAK_KW@[378; 383) "break"
-                      WHITESPACE@[383; 384) " "
-                      LIFETIME@[384; 390) "\'block"
-                      WHITESPACE@[390; 391) " "
-                      LITERAL@[391; 392)
-                        INT_NUMBER@[391; 392) "1"
-                    SEMI@[392; 393) ";"
-                  WHITESPACE@[393; 402) "\n        "
-                  R_CURLY@[402; 403) "}"
-            WHITESPACE@[403; 412) "\n        "
-            EXPR_STMT@[412; 486)
-              IF_EXPR@[412; 486)
-                IF_KW@[412; 414) "if"
-                WHITESPACE@[414; 415) " "
-                CONDITION@[415; 420)
-                  CALL_EXPR@[415; 420)
-                    PATH_EXPR@[415; 418)
-                      PATH@[415; 418)
-                        PATH_SEGMENT@[415; 418)
-                          NAME_REF@[415; 418)
-                            IDENT@[415; 418) "bar"
-                    ARG_LIST@[418; 420)
-                      L_PAREN@[418; 419) "("
-                      R_PAREN@[419; 420) ")"
-                WHITESPACE@[420; 421) " "
-                BLOCK@[421; 486)
-                  L_CURLY@[421; 422) "{"
-                  WHITESPACE@[422; 435) "\n            "
-                  COMMENT@[435; 448) "/* comment */"
-                  WHITESPACE@[448; 461) "\n            "
-                  EXPR_STMT@[461; 476)
-                    BREAK_EXPR@[461; 475)
-                      BREAK_KW@[461; 466) "break"
-                      WHITESPACE@[466; 467) " "
-                      LIFETIME@[467; 473) "\'block"
-                      WHITESPACE@[473; 474) " "
-                      LITERAL@[474; 475)
-                        INT_NUMBER@[474; 475) "2"
-                    SEMI@[475; 476) ";"
-                  WHITESPACE@[476; 485) "\n        "
-                  R_CURLY@[485; 486) "}"
-            WHITESPACE@[486; 495) "\n        "
-            LITERAL@[495; 496)
-              INT_NUMBER@[495; 496) "3"
-            WHITESPACE@[496; 501) "\n    "
-            R_CURLY@[501; 502) "}"
-        SEMI@[502; 503) ";"
-      WHITESPACE@[503; 504) "\n"
-      R_CURLY@[504; 505) "}"
-  WHITESPACE@[505; 506) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.rs b/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.rs
deleted file mode 100644 (file)
index f1ed302..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
-    make_query(crate::module_map::module_tree);
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt b/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt
deleted file mode 100644 (file)
index a77d4aa..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-SOURCE_FILE@[0; 62)
-  FN_DEF@[0; 61)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "main"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    BLOCK@[10; 61)
-      L_CURLY@[10; 11) "{"
-      WHITESPACE@[11; 16) "\n    "
-      EXPR_STMT@[16; 59)
-        CALL_EXPR@[16; 58)
-          PATH_EXPR@[16; 26)
-            PATH@[16; 26)
-              PATH_SEGMENT@[16; 26)
-                NAME_REF@[16; 26)
-                  IDENT@[16; 26) "make_query"
-          ARG_LIST@[26; 58)
-            L_PAREN@[26; 27) "("
-            PATH_EXPR@[27; 57)
-              PATH@[27; 57)
-                PATH@[27; 44)
-                  PATH@[27; 32)
-                    PATH_SEGMENT@[27; 32)
-                      CRATE_KW@[27; 32) "crate"
-                  COLONCOLON@[32; 34) "::"
-                  PATH_SEGMENT@[34; 44)
-                    NAME_REF@[34; 44)
-                      IDENT@[34; 44) "module_map"
-                COLONCOLON@[44; 46) "::"
-                PATH_SEGMENT@[46; 57)
-                  NAME_REF@[46; 57)
-                    IDENT@[46; 57) "module_tree"
-            R_PAREN@[57; 58) ")"
-        SEMI@[58; 59) ";"
-      WHITESPACE@[59; 60) "\n"
-      R_CURLY@[60; 61) "}"
-  WHITESPACE@[61; 62) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.rs b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.rs
deleted file mode 100644 (file)
index 8c13231..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-//! Adapted from a `rustc` test, which can be found at 
-//! https://github.com/rust-lang/rust/blob/6d34ec18c7d7e574553f6347ecf08e1e1c45c13d/src/test/run-pass/weird-exprs.rs.
-//! 
-//! Reported to rust-analyzer in https://github.com/rust-analyzer/rust-analyzer/issues/290
-
-#![allow(non_camel_case_types)]
-#![allow(dead_code)]
-#![allow(unreachable_code)]
-#![allow(unused_parens)]
-
-#![recursion_limit = "128"]
-
-use std::cell::Cell;
-use std::mem::swap;
-
-// Just a grab bag of stuff that you wouldn't want to actually write.
-
-fn strange() -> bool { let _x: bool = return true; }
-
-fn funny() {
-    fn f(_x: ()) { }
-    f(return);
-}
-
-fn what() {
-    fn the(x: &Cell<bool>) {
-        return while !x.get() { x.set(true); };
-    }
-    let i = &Cell::new(false);
-    let dont = {||the(i)};
-    dont();
-    assert!((i.get()));
-}
-
-fn zombiejesus() {
-    loop {
-        while (return) {
-            if (return) {
-                match (return) {
-                    1 => {
-                        if (return) {
-                            return
-                        } else {
-                            return
-                        }
-                    }
-                    _ => { return }
-                };
-            } else if (return) {
-                return;
-            }
-        }
-        if (return) { break; }
-    }
-}
-
-fn notsure() {
-    let mut _x: isize;
-    let mut _y = (_x = 0) == (_x = 0);
-    let mut _z = (_x = 0) < (_x = 0);
-    let _a = (_x += 0) == (_x = 0);
-    let _b = swap(&mut _y, &mut _z) == swap(&mut _y, &mut _z);
-}
-
-fn canttouchthis() -> usize {
-    fn p() -> bool { true }
-    let _a = (assert!((true)) == (assert!(p())));
-    let _c = (assert!((p())) == ());
-    let _b: bool = (println!("{}", 0) == (return 0));
-}
-
-fn angrydome() {
-    loop { if break { } }
-    let mut i = 0;
-    loop { i += 1; if i == 1 { match (continue) { 1 => { }, _ => panic!("wat") } }
-      break; }
-}
-
-fn evil_lincoln() { let _evil = println!("lincoln"); }
-
-fn dots() {
-    assert_eq!(String::from(".................................................."),
-               format!("{:?}", .. .. .. .. .. .. .. .. .. .. .. .. ..
-                               .. .. .. .. .. .. .. .. .. .. .. ..));
-}
-
-fn u8(u8: u8) {
-    if u8 != 0u8 {
-        assert_eq!(8u8, {
-            macro_rules! u8 {
-                (u8) => {
-                    mod u8 {
-                        pub fn u8<'u8: 'u8 + 'u8>(u8: &'u8 u8) -> &'u8 u8 {
-                            "u8";
-                            u8
-                        }
-                    }
-                };
-            }
-
-            u8!(u8);
-            let &u8: &u8 = u8::u8(&8u8);
-            crate::u8(0u8);
-            u8
-        });
-    }
-}
-
-fn fishy() {
-    assert_eq!(String::from("><>"),
-               String::<>::from::<>("><>").chars::<>().rev::<>().collect::<String>());
-}
-
-fn union() {
-    union union<'union> { union: &'union union<'union>, }
-}
-
-fn special_characters() {
-    let val = !((|(..):(_,_),__@_|__)((&*"\\",'🤔')/**/,{})=={&[..=..][..];})//
-    ;
-    assert!(!val);
-}
-
-fn punch_card() -> impl std::fmt::Debug {
-    ..=..=.. ..    .. .. .. ..    .. .. .. ..    .. ..=.. ..
-    ..=.. ..=..    .. .. .. ..    .. .. .. ..    ..=..=..=..
-    ..=.. ..=..    ..=.. ..=..    .. ..=..=..    .. ..=.. ..
-    ..=..=.. ..    ..=.. ..=..    ..=.. .. ..    .. ..=.. ..
-    ..=.. ..=..    ..=.. ..=..    .. ..=.. ..    .. ..=.. ..
-    ..=.. ..=..    ..=.. ..=..    .. .. ..=..    .. ..=.. ..
-    ..=.. ..=..    .. ..=..=..    ..=..=.. ..    .. ..=.. ..
-}
-
-fn ktulhu() {
-    ;;;();;;;;;;;;()
-}
-
-pub fn main() {
-    strange();
-    funny();
-    what();
-    zombiejesus();
-    notsure();
-    canttouchthis();
-    angrydome();
-    evil_lincoln();
-    dots();
-    u8(8u8);
-    fishy();
-    union();
-    special_characters();
-    punch_card();
-    ktulhu();
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt
deleted file mode 100644 (file)
index c89b591..0000000
+++ /dev/null
@@ -1,2285 +0,0 @@
-SOURCE_FILE@[0; 3813)
-  COMMENT@[0; 55) "//! Adapted from a `r ..."
-  WHITESPACE@[55; 56) "\n"
-  COMMENT@[56; 173) "//! https://github.co ..."
-  WHITESPACE@[173; 174) "\n"
-  COMMENT@[174; 178) "//! "
-  WHITESPACE@[178; 179) "\n"
-  COMMENT@[179; 269) "//! Reported to rust- ..."
-  WHITESPACE@[269; 271) "\n\n"
-  ATTR@[271; 302)
-    POUND@[271; 272) "#"
-    EXCL@[272; 273) "!"
-    TOKEN_TREE@[273; 302)
-      L_BRACK@[273; 274) "["
-      IDENT@[274; 279) "allow"
-      TOKEN_TREE@[279; 301)
-        L_PAREN@[279; 280) "("
-        IDENT@[280; 300) "non_camel_case_types"
-        R_PAREN@[300; 301) ")"
-      R_BRACK@[301; 302) "]"
-  WHITESPACE@[302; 303) "\n"
-  ATTR@[303; 323)
-    POUND@[303; 304) "#"
-    EXCL@[304; 305) "!"
-    TOKEN_TREE@[305; 323)
-      L_BRACK@[305; 306) "["
-      IDENT@[306; 311) "allow"
-      TOKEN_TREE@[311; 322)
-        L_PAREN@[311; 312) "("
-        IDENT@[312; 321) "dead_code"
-        R_PAREN@[321; 322) ")"
-      R_BRACK@[322; 323) "]"
-  WHITESPACE@[323; 324) "\n"
-  ATTR@[324; 351)
-    POUND@[324; 325) "#"
-    EXCL@[325; 326) "!"
-    TOKEN_TREE@[326; 351)
-      L_BRACK@[326; 327) "["
-      IDENT@[327; 332) "allow"
-      TOKEN_TREE@[332; 350)
-        L_PAREN@[332; 333) "("
-        IDENT@[333; 349) "unreachable_code"
-        R_PAREN@[349; 350) ")"
-      R_BRACK@[350; 351) "]"
-  WHITESPACE@[351; 352) "\n"
-  ATTR@[352; 376)
-    POUND@[352; 353) "#"
-    EXCL@[353; 354) "!"
-    TOKEN_TREE@[354; 376)
-      L_BRACK@[354; 355) "["
-      IDENT@[355; 360) "allow"
-      TOKEN_TREE@[360; 375)
-        L_PAREN@[360; 361) "("
-        IDENT@[361; 374) "unused_parens"
-        R_PAREN@[374; 375) ")"
-      R_BRACK@[375; 376) "]"
-  WHITESPACE@[376; 378) "\n\n"
-  ATTR@[378; 405)
-    POUND@[378; 379) "#"
-    EXCL@[379; 380) "!"
-    TOKEN_TREE@[380; 405)
-      L_BRACK@[380; 381) "["
-      IDENT@[381; 396) "recursion_limit"
-      WHITESPACE@[396; 397) " "
-      EQ@[397; 398) "="
-      WHITESPACE@[398; 399) " "
-      STRING@[399; 404) "\"128\""
-      R_BRACK@[404; 405) "]"
-  WHITESPACE@[405; 407) "\n\n"
-  USE_ITEM@[407; 427)
-    USE_KW@[407; 410) "use"
-    WHITESPACE@[410; 411) " "
-    USE_TREE@[411; 426)
-      PATH@[411; 426)
-        PATH@[411; 420)
-          PATH@[411; 414)
-            PATH_SEGMENT@[411; 414)
-              NAME_REF@[411; 414)
-                IDENT@[411; 414) "std"
-          COLONCOLON@[414; 416) "::"
-          PATH_SEGMENT@[416; 420)
-            NAME_REF@[416; 420)
-              IDENT@[416; 420) "cell"
-        COLONCOLON@[420; 422) "::"
-        PATH_SEGMENT@[422; 426)
-          NAME_REF@[422; 426)
-            IDENT@[422; 426) "Cell"
-    SEMI@[426; 427) ";"
-  WHITESPACE@[427; 428) "\n"
-  USE_ITEM@[428; 447)
-    USE_KW@[428; 431) "use"
-    WHITESPACE@[431; 432) " "
-    USE_TREE@[432; 446)
-      PATH@[432; 446)
-        PATH@[432; 440)
-          PATH@[432; 435)
-            PATH_SEGMENT@[432; 435)
-              NAME_REF@[432; 435)
-                IDENT@[432; 435) "std"
-          COLONCOLON@[435; 437) "::"
-          PATH_SEGMENT@[437; 440)
-            NAME_REF@[437; 440)
-              IDENT@[437; 440) "mem"
-        COLONCOLON@[440; 442) "::"
-        PATH_SEGMENT@[442; 446)
-          NAME_REF@[442; 446)
-            IDENT@[442; 446) "swap"
-    SEMI@[446; 447) ";"
-  WHITESPACE@[447; 449) "\n\n"
-  COMMENT@[449; 518) "// Just a grab bag of ..."
-  WHITESPACE@[518; 520) "\n\n"
-  FN_DEF@[520; 572)
-    FN_KW@[520; 522) "fn"
-    WHITESPACE@[522; 523) " "
-    NAME@[523; 530)
-      IDENT@[523; 530) "strange"
-    PARAM_LIST@[530; 532)
-      L_PAREN@[530; 531) "("
-      R_PAREN@[531; 532) ")"
-    WHITESPACE@[532; 533) " "
-    RET_TYPE@[533; 540)
-      THIN_ARROW@[533; 535) "->"
-      WHITESPACE@[535; 536) " "
-      PATH_TYPE@[536; 540)
-        PATH@[536; 540)
-          PATH_SEGMENT@[536; 540)
-            NAME_REF@[536; 540)
-              IDENT@[536; 540) "bool"
-    WHITESPACE@[540; 541) " "
-    BLOCK@[541; 572)
-      L_CURLY@[541; 542) "{"
-      WHITESPACE@[542; 543) " "
-      LET_STMT@[543; 570)
-        LET_KW@[543; 546) "let"
-        WHITESPACE@[546; 547) " "
-        BIND_PAT@[547; 549)
-          NAME@[547; 549)
-            IDENT@[547; 549) "_x"
-        COLON@[549; 550) ":"
-        WHITESPACE@[550; 551) " "
-        PATH_TYPE@[551; 555)
-          PATH@[551; 555)
-            PATH_SEGMENT@[551; 555)
-              NAME_REF@[551; 555)
-                IDENT@[551; 555) "bool"
-        WHITESPACE@[555; 556) " "
-        EQ@[556; 557) "="
-        WHITESPACE@[557; 558) " "
-        RETURN_EXPR@[558; 569)
-          RETURN_KW@[558; 564) "return"
-          WHITESPACE@[564; 565) " "
-          LITERAL@[565; 569)
-            TRUE_KW@[565; 569) "true"
-        SEMI@[569; 570) ";"
-      WHITESPACE@[570; 571) " "
-      R_CURLY@[571; 572) "}"
-  WHITESPACE@[572; 574) "\n\n"
-  FN_DEF@[574; 624)
-    FN_KW@[574; 576) "fn"
-    WHITESPACE@[576; 577) " "
-    NAME@[577; 582)
-      IDENT@[577; 582) "funny"
-    PARAM_LIST@[582; 584)
-      L_PAREN@[582; 583) "("
-      R_PAREN@[583; 584) ")"
-    WHITESPACE@[584; 585) " "
-    BLOCK@[585; 624)
-      L_CURLY@[585; 586) "{"
-      WHITESPACE@[586; 591) "\n    "
-      FN_DEF@[591; 607)
-        FN_KW@[591; 593) "fn"
-        WHITESPACE@[593; 594) " "
-        NAME@[594; 595)
-          IDENT@[594; 595) "f"
-        PARAM_LIST@[595; 603)
-          L_PAREN@[595; 596) "("
-          PARAM@[596; 602)
-            BIND_PAT@[596; 598)
-              NAME@[596; 598)
-                IDENT@[596; 598) "_x"
-            COLON@[598; 599) ":"
-            WHITESPACE@[599; 600) " "
-            TUPLE_TYPE@[600; 602)
-              L_PAREN@[600; 601) "("
-              R_PAREN@[601; 602) ")"
-          R_PAREN@[602; 603) ")"
-        WHITESPACE@[603; 604) " "
-        BLOCK@[604; 607)
-          L_CURLY@[604; 605) "{"
-          WHITESPACE@[605; 606) " "
-          R_CURLY@[606; 607) "}"
-      WHITESPACE@[607; 612) "\n    "
-      EXPR_STMT@[612; 622)
-        CALL_EXPR@[612; 621)
-          PATH_EXPR@[612; 613)
-            PATH@[612; 613)
-              PATH_SEGMENT@[612; 613)
-                NAME_REF@[612; 613)
-                  IDENT@[612; 613) "f"
-          ARG_LIST@[613; 621)
-            L_PAREN@[613; 614) "("
-            RETURN_EXPR@[614; 620)
-              RETURN_KW@[614; 620) "return"
-            R_PAREN@[620; 621) ")"
-        SEMI@[621; 622) ";"
-      WHITESPACE@[622; 623) "\n"
-      R_CURLY@[623; 624) "}"
-  WHITESPACE@[624; 626) "\n\n"
-  FN_DEF@[626; 816)
-    FN_KW@[626; 628) "fn"
-    WHITESPACE@[628; 629) " "
-    NAME@[629; 633)
-      IDENT@[629; 633) "what"
-    PARAM_LIST@[633; 635)
-      L_PAREN@[633; 634) "("
-      R_PAREN@[634; 635) ")"
-    WHITESPACE@[635; 636) " "
-    BLOCK@[636; 816)
-      L_CURLY@[636; 637) "{"
-      WHITESPACE@[637; 642) "\n    "
-      FN_DEF@[642; 720)
-        FN_KW@[642; 644) "fn"
-        WHITESPACE@[644; 645) " "
-        NAME@[645; 648)
-          IDENT@[645; 648) "the"
-        PARAM_LIST@[648; 664)
-          L_PAREN@[648; 649) "("
-          PARAM@[649; 663)
-            BIND_PAT@[649; 650)
-              NAME@[649; 650)
-                IDENT@[649; 650) "x"
-            COLON@[650; 651) ":"
-            WHITESPACE@[651; 652) " "
-            REFERENCE_TYPE@[652; 663)
-              AMP@[652; 653) "&"
-              PATH_TYPE@[653; 663)
-                PATH@[653; 663)
-                  PATH_SEGMENT@[653; 663)
-                    NAME_REF@[653; 657)
-                      IDENT@[653; 657) "Cell"
-                    TYPE_ARG_LIST@[657; 663)
-                      L_ANGLE@[657; 658) "<"
-                      TYPE_ARG@[658; 662)
-                        PATH_TYPE@[658; 662)
-                          PATH@[658; 662)
-                            PATH_SEGMENT@[658; 662)
-                              NAME_REF@[658; 662)
-                                IDENT@[658; 662) "bool"
-                      R_ANGLE@[662; 663) ">"
-          R_PAREN@[663; 664) ")"
-        WHITESPACE@[664; 665) " "
-        BLOCK@[665; 720)
-          L_CURLY@[665; 666) "{"
-          WHITESPACE@[666; 675) "\n        "
-          EXPR_STMT@[675; 714)
-            RETURN_EXPR@[675; 713)
-              RETURN_KW@[675; 681) "return"
-              WHITESPACE@[681; 682) " "
-              WHILE_EXPR@[682; 713)
-                WHILE_KW@[682; 687) "while"
-                WHITESPACE@[687; 688) " "
-                CONDITION@[688; 696)
-                  PREFIX_EXPR@[688; 696)
-                    EXCL@[688; 689) "!"
-                    METHOD_CALL_EXPR@[689; 696)
-                      PATH_EXPR@[689; 690)
-                        PATH@[689; 690)
-                          PATH_SEGMENT@[689; 690)
-                            NAME_REF@[689; 690)
-                              IDENT@[689; 690) "x"
-                      DOT@[690; 691) "."
-                      NAME_REF@[691; 694)
-                        IDENT@[691; 694) "get"
-                      ARG_LIST@[694; 696)
-                        L_PAREN@[694; 695) "("
-                        R_PAREN@[695; 696) ")"
-                WHITESPACE@[696; 697) " "
-                BLOCK@[697; 713)
-                  L_CURLY@[697; 698) "{"
-                  WHITESPACE@[698; 699) " "
-                  EXPR_STMT@[699; 711)
-                    METHOD_CALL_EXPR@[699; 710)
-                      PATH_EXPR@[699; 700)
-                        PATH@[699; 700)
-                          PATH_SEGMENT@[699; 700)
-                            NAME_REF@[699; 700)
-                              IDENT@[699; 700) "x"
-                      DOT@[700; 701) "."
-                      NAME_REF@[701; 704)
-                        IDENT@[701; 704) "set"
-                      ARG_LIST@[704; 710)
-                        L_PAREN@[704; 705) "("
-                        LITERAL@[705; 709)
-                          TRUE_KW@[705; 709) "true"
-                        R_PAREN@[709; 710) ")"
-                    SEMI@[710; 711) ";"
-                  WHITESPACE@[711; 712) " "
-                  R_CURLY@[712; 713) "}"
-            SEMI@[713; 714) ";"
-          WHITESPACE@[714; 719) "\n    "
-          R_CURLY@[719; 720) "}"
-      WHITESPACE@[720; 725) "\n    "
-      LET_STMT@[725; 751)
-        LET_KW@[725; 728) "let"
-        WHITESPACE@[728; 729) " "
-        BIND_PAT@[729; 730)
-          NAME@[729; 730)
-            IDENT@[729; 730) "i"
-        WHITESPACE@[730; 731) " "
-        EQ@[731; 732) "="
-        WHITESPACE@[732; 733) " "
-        REF_EXPR@[733; 750)
-          AMP@[733; 734) "&"
-          CALL_EXPR@[734; 750)
-            PATH_EXPR@[734; 743)
-              PATH@[734; 743)
-                PATH@[734; 738)
-                  PATH_SEGMENT@[734; 738)
-                    NAME_REF@[734; 738)
-                      IDENT@[734; 738) "Cell"
-                COLONCOLON@[738; 740) "::"
-                PATH_SEGMENT@[740; 743)
-                  NAME_REF@[740; 743)
-                    IDENT@[740; 743) "new"
-            ARG_LIST@[743; 750)
-              L_PAREN@[743; 744) "("
-              LITERAL@[744; 749)
-                FALSE_KW@[744; 749) "false"
-              R_PAREN@[749; 750) ")"
-        SEMI@[750; 751) ";"
-      WHITESPACE@[751; 756) "\n    "
-      LET_STMT@[756; 778)
-        LET_KW@[756; 759) "let"
-        WHITESPACE@[759; 760) " "
-        BIND_PAT@[760; 764)
-          NAME@[760; 764)
-            IDENT@[760; 764) "dont"
-        WHITESPACE@[764; 765) " "
-        EQ@[765; 766) "="
-        WHITESPACE@[766; 767) " "
-        BLOCK_EXPR@[767; 777)
-          BLOCK@[767; 777)
-            L_CURLY@[767; 768) "{"
-            LAMBDA_EXPR@[768; 776)
-              PARAM_LIST@[768; 770)
-                PIPE@[768; 769) "|"
-                PIPE@[769; 770) "|"
-              CALL_EXPR@[770; 776)
-                PATH_EXPR@[770; 773)
-                  PATH@[770; 773)
-                    PATH_SEGMENT@[770; 773)
-                      NAME_REF@[770; 773)
-                        IDENT@[770; 773) "the"
-                ARG_LIST@[773; 776)
-                  L_PAREN@[773; 774) "("
-                  PATH_EXPR@[774; 775)
-                    PATH@[774; 775)
-                      PATH_SEGMENT@[774; 775)
-                        NAME_REF@[774; 775)
-                          IDENT@[774; 775) "i"
-                  R_PAREN@[775; 776) ")"
-            R_CURLY@[776; 777) "}"
-        SEMI@[777; 778) ";"
-      WHITESPACE@[778; 783) "\n    "
-      EXPR_STMT@[783; 790)
-        CALL_EXPR@[783; 789)
-          PATH_EXPR@[783; 787)
-            PATH@[783; 787)
-              PATH_SEGMENT@[783; 787)
-                NAME_REF@[783; 787)
-                  IDENT@[783; 787) "dont"
-          ARG_LIST@[787; 789)
-            L_PAREN@[787; 788) "("
-            R_PAREN@[788; 789) ")"
-        SEMI@[789; 790) ";"
-      WHITESPACE@[790; 795) "\n    "
-      EXPR_STMT@[795; 814)
-        MACRO_CALL@[795; 813)
-          PATH@[795; 801)
-            PATH_SEGMENT@[795; 801)
-              NAME_REF@[795; 801)
-                IDENT@[795; 801) "assert"
-          EXCL@[801; 802) "!"
-          TOKEN_TREE@[802; 813)
-            L_PAREN@[802; 803) "("
-            TOKEN_TREE@[803; 812)
-              L_PAREN@[803; 804) "("
-              IDENT@[804; 805) "i"
-              DOT@[805; 806) "."
-              IDENT@[806; 809) "get"
-              TOKEN_TREE@[809; 811)
-                L_PAREN@[809; 810) "("
-                R_PAREN@[810; 811) ")"
-              R_PAREN@[811; 812) ")"
-            R_PAREN@[812; 813) ")"
-        SEMI@[813; 814) ";"
-      WHITESPACE@[814; 815) "\n"
-      R_CURLY@[815; 816) "}"
-  WHITESPACE@[816; 818) "\n\n"
-  FN_DEF@[818; 1322)
-    FN_KW@[818; 820) "fn"
-    WHITESPACE@[820; 821) " "
-    NAME@[821; 832)
-      IDENT@[821; 832) "zombiejesus"
-    PARAM_LIST@[832; 834)
-      L_PAREN@[832; 833) "("
-      R_PAREN@[833; 834) ")"
-    WHITESPACE@[834; 835) " "
-    BLOCK@[835; 1322)
-      L_CURLY@[835; 836) "{"
-      WHITESPACE@[836; 841) "\n    "
-      LOOP_EXPR@[841; 1320)
-        LOOP_KW@[841; 845) "loop"
-        WHITESPACE@[845; 846) " "
-        BLOCK@[846; 1320)
-          L_CURLY@[846; 847) "{"
-          WHITESPACE@[847; 856) "\n        "
-          EXPR_STMT@[856; 1283)
-            WHILE_EXPR@[856; 1283)
-              WHILE_KW@[856; 861) "while"
-              WHITESPACE@[861; 862) " "
-              CONDITION@[862; 870)
-                PAREN_EXPR@[862; 870)
-                  L_PAREN@[862; 863) "("
-                  RETURN_EXPR@[863; 869)
-                    RETURN_KW@[863; 869) "return"
-                  R_PAREN@[869; 870) ")"
-              WHITESPACE@[870; 871) " "
-              BLOCK@[871; 1283)
-                L_CURLY@[871; 872) "{"
-                WHITESPACE@[872; 885) "\n            "
-                IF_EXPR@[885; 1273)
-                  IF_KW@[885; 887) "if"
-                  WHITESPACE@[887; 888) " "
-                  CONDITION@[888; 896)
-                    PAREN_EXPR@[888; 896)
-                      L_PAREN@[888; 889) "("
-                      RETURN_EXPR@[889; 895)
-                        RETURN_KW@[889; 895) "return"
-                      R_PAREN@[895; 896) ")"
-                  WHITESPACE@[896; 897) " "
-                  BLOCK@[897; 1216)
-                    L_CURLY@[897; 898) "{"
-                    WHITESPACE@[898; 915) "\n                "
-                    EXPR_STMT@[915; 1202)
-                      MATCH_EXPR@[915; 1201)
-                        MATCH_KW@[915; 920) "match"
-                        WHITESPACE@[920; 921) " "
-                        PAREN_EXPR@[921; 929)
-                          L_PAREN@[921; 922) "("
-                          RETURN_EXPR@[922; 928)
-                            RETURN_KW@[922; 928) "return"
-                          R_PAREN@[928; 929) ")"
-                        WHITESPACE@[929; 930) " "
-                        MATCH_ARM_LIST@[930; 1201)
-                          L_CURLY@[930; 931) "{"
-                          WHITESPACE@[931; 952) "\n                    "
-                          MATCH_ARM@[952; 1147)
-                            LITERAL_PAT@[952; 953)
-                              LITERAL@[952; 953)
-                                INT_NUMBER@[952; 953) "1"
-                            WHITESPACE@[953; 954) " "
-                            FAT_ARROW@[954; 956) "=>"
-                            WHITESPACE@[956; 957) " "
-                            BLOCK_EXPR@[957; 1147)
-                              BLOCK@[957; 1147)
-                                L_CURLY@[957; 958) "{"
-                                WHITESPACE@[958; 983) "\n                     ..."
-                                IF_EXPR@[983; 1125)
-                                  IF_KW@[983; 985) "if"
-                                  WHITESPACE@[985; 986) " "
-                                  CONDITION@[986; 994)
-                                    PAREN_EXPR@[986; 994)
-                                      L_PAREN@[986; 987) "("
-                                      RETURN_EXPR@[987; 993)
-                                        RETURN_KW@[987; 993) "return"
-                                      R_PAREN@[993; 994) ")"
-                                  WHITESPACE@[994; 995) " "
-                                  BLOCK@[995; 1057)
-                                    L_CURLY@[995; 996) "{"
-                                    WHITESPACE@[996; 1025) "\n                     ..."
-                                    RETURN_EXPR@[1025; 1031)
-                                      RETURN_KW@[1025; 1031) "return"
-                                    WHITESPACE@[1031; 1056) "\n                     ..."
-                                    R_CURLY@[1056; 1057) "}"
-                                  WHITESPACE@[1057; 1058) " "
-                                  ELSE_KW@[1058; 1062) "else"
-                                  WHITESPACE@[1062; 1063) " "
-                                  BLOCK@[1063; 1125)
-                                    L_CURLY@[1063; 1064) "{"
-                                    WHITESPACE@[1064; 1093) "\n                     ..."
-                                    RETURN_EXPR@[1093; 1099)
-                                      RETURN_KW@[1093; 1099) "return"
-                                    WHITESPACE@[1099; 1124) "\n                     ..."
-                                    R_CURLY@[1124; 1125) "}"
-                                WHITESPACE@[1125; 1146) "\n                    "
-                                R_CURLY@[1146; 1147) "}"
-                          WHITESPACE@[1147; 1168) "\n                    "
-                          MATCH_ARM@[1168; 1183)
-                            PLACEHOLDER_PAT@[1168; 1169)
-                              UNDERSCORE@[1168; 1169) "_"
-                            WHITESPACE@[1169; 1170) " "
-                            FAT_ARROW@[1170; 1172) "=>"
-                            WHITESPACE@[1172; 1173) " "
-                            BLOCK_EXPR@[1173; 1183)
-                              BLOCK@[1173; 1183)
-                                L_CURLY@[1173; 1174) "{"
-                                WHITESPACE@[1174; 1175) " "
-                                RETURN_EXPR@[1175; 1181)
-                                  RETURN_KW@[1175; 1181) "return"
-                                WHITESPACE@[1181; 1182) " "
-                                R_CURLY@[1182; 1183) "}"
-                          WHITESPACE@[1183; 1200) "\n                "
-                          R_CURLY@[1200; 1201) "}"
-                      SEMI@[1201; 1202) ";"
-                    WHITESPACE@[1202; 1215) "\n            "
-                    R_CURLY@[1215; 1216) "}"
-                  WHITESPACE@[1216; 1217) " "
-                  ELSE_KW@[1217; 1221) "else"
-                  WHITESPACE@[1221; 1222) " "
-                  IF_EXPR@[1222; 1273)
-                    IF_KW@[1222; 1224) "if"
-                    WHITESPACE@[1224; 1225) " "
-                    CONDITION@[1225; 1233)
-                      PAREN_EXPR@[1225; 1233)
-                        L_PAREN@[1225; 1226) "("
-                        RETURN_EXPR@[1226; 1232)
-                          RETURN_KW@[1226; 1232) "return"
-                        R_PAREN@[1232; 1233) ")"
-                    WHITESPACE@[1233; 1234) " "
-                    BLOCK@[1234; 1273)
-                      L_CURLY@[1234; 1235) "{"
-                      WHITESPACE@[1235; 1252) "\n                "
-                      EXPR_STMT@[1252; 1259)
-                        RETURN_EXPR@[1252; 1258)
-                          RETURN_KW@[1252; 1258) "return"
-                        SEMI@[1258; 1259) ";"
-                      WHITESPACE@[1259; 1272) "\n            "
-                      R_CURLY@[1272; 1273) "}"
-                WHITESPACE@[1273; 1282) "\n        "
-                R_CURLY@[1282; 1283) "}"
-          WHITESPACE@[1283; 1292) "\n        "
-          IF_EXPR@[1292; 1314)
-            IF_KW@[1292; 1294) "if"
-            WHITESPACE@[1294; 1295) " "
-            CONDITION@[1295; 1303)
-              PAREN_EXPR@[1295; 1303)
-                L_PAREN@[1295; 1296) "("
-                RETURN_EXPR@[1296; 1302)
-                  RETURN_KW@[1296; 1302) "return"
-                R_PAREN@[1302; 1303) ")"
-            WHITESPACE@[1303; 1304) " "
-            BLOCK@[1304; 1314)
-              L_CURLY@[1304; 1305) "{"
-              WHITESPACE@[1305; 1306) " "
-              EXPR_STMT@[1306; 1312)
-                BREAK_EXPR@[1306; 1311)
-                  BREAK_KW@[1306; 1311) "break"
-                SEMI@[1311; 1312) ";"
-              WHITESPACE@[1312; 1313) " "
-              R_CURLY@[1313; 1314) "}"
-          WHITESPACE@[1314; 1319) "\n    "
-          R_CURLY@[1319; 1320) "}"
-      WHITESPACE@[1320; 1321) "\n"
-      R_CURLY@[1321; 1322) "}"
-  WHITESPACE@[1322; 1324) "\n\n"
-  FN_DEF@[1324; 1539)
-    FN_KW@[1324; 1326) "fn"
-    WHITESPACE@[1326; 1327) " "
-    NAME@[1327; 1334)
-      IDENT@[1327; 1334) "notsure"
-    PARAM_LIST@[1334; 1336)
-      L_PAREN@[1334; 1335) "("
-      R_PAREN@[1335; 1336) ")"
-    WHITESPACE@[1336; 1337) " "
-    BLOCK@[1337; 1539)
-      L_CURLY@[1337; 1338) "{"
-      WHITESPACE@[1338; 1343) "\n    "
-      LET_STMT@[1343; 1361)
-        LET_KW@[1343; 1346) "let"
-        WHITESPACE@[1346; 1347) " "
-        BIND_PAT@[1347; 1353)
-          MUT_KW@[1347; 1350) "mut"
-          WHITESPACE@[1350; 1351) " "
-          NAME@[1351; 1353)
-            IDENT@[1351; 1353) "_x"
-        COLON@[1353; 1354) ":"
-        WHITESPACE@[1354; 1355) " "
-        PATH_TYPE@[1355; 1360)
-          PATH@[1355; 1360)
-            PATH_SEGMENT@[1355; 1360)
-              NAME_REF@[1355; 1360)
-                IDENT@[1355; 1360) "isize"
-        SEMI@[1360; 1361) ";"
-      WHITESPACE@[1361; 1366) "\n    "
-      LET_STMT@[1366; 1400)
-        LET_KW@[1366; 1369) "let"
-        WHITESPACE@[1369; 1370) " "
-        BIND_PAT@[1370; 1376)
-          MUT_KW@[1370; 1373) "mut"
-          WHITESPACE@[1373; 1374) " "
-          NAME@[1374; 1376)
-            IDENT@[1374; 1376) "_y"
-        WHITESPACE@[1376; 1377) " "
-        EQ@[1377; 1378) "="
-        WHITESPACE@[1378; 1379) " "
-        BIN_EXPR@[1379; 1399)
-          PAREN_EXPR@[1379; 1387)
-            L_PAREN@[1379; 1380) "("
-            BIN_EXPR@[1380; 1386)
-              PATH_EXPR@[1380; 1382)
-                PATH@[1380; 1382)
-                  PATH_SEGMENT@[1380; 1382)
-                    NAME_REF@[1380; 1382)
-                      IDENT@[1380; 1382) "_x"
-              WHITESPACE@[1382; 1383) " "
-              EQ@[1383; 1384) "="
-              WHITESPACE@[1384; 1385) " "
-              LITERAL@[1385; 1386)
-                INT_NUMBER@[1385; 1386) "0"
-            R_PAREN@[1386; 1387) ")"
-          WHITESPACE@[1387; 1388) " "
-          EQEQ@[1388; 1390) "=="
-          WHITESPACE@[1390; 1391) " "
-          PAREN_EXPR@[1391; 1399)
-            L_PAREN@[1391; 1392) "("
-            BIN_EXPR@[1392; 1398)
-              PATH_EXPR@[1392; 1394)
-                PATH@[1392; 1394)
-                  PATH_SEGMENT@[1392; 1394)
-                    NAME_REF@[1392; 1394)
-                      IDENT@[1392; 1394) "_x"
-              WHITESPACE@[1394; 1395) " "
-              EQ@[1395; 1396) "="
-              WHITESPACE@[1396; 1397) " "
-              LITERAL@[1397; 1398)
-                INT_NUMBER@[1397; 1398) "0"
-            R_PAREN@[1398; 1399) ")"
-        SEMI@[1399; 1400) ";"
-      WHITESPACE@[1400; 1405) "\n    "
-      LET_STMT@[1405; 1438)
-        LET_KW@[1405; 1408) "let"
-        WHITESPACE@[1408; 1409) " "
-        BIND_PAT@[1409; 1415)
-          MUT_KW@[1409; 1412) "mut"
-          WHITESPACE@[1412; 1413) " "
-          NAME@[1413; 1415)
-            IDENT@[1413; 1415) "_z"
-        WHITESPACE@[1415; 1416) " "
-        EQ@[1416; 1417) "="
-        WHITESPACE@[1417; 1418) " "
-        BIN_EXPR@[1418; 1437)
-          PAREN_EXPR@[1418; 1426)
-            L_PAREN@[1418; 1419) "("
-            BIN_EXPR@[1419; 1425)
-              PATH_EXPR@[1419; 1421)
-                PATH@[1419; 1421)
-                  PATH_SEGMENT@[1419; 1421)
-                    NAME_REF@[1419; 1421)
-                      IDENT@[1419; 1421) "_x"
-              WHITESPACE@[1421; 1422) " "
-              EQ@[1422; 1423) "="
-              WHITESPACE@[1423; 1424) " "
-              LITERAL@[1424; 1425)
-                INT_NUMBER@[1424; 1425) "0"
-            R_PAREN@[1425; 1426) ")"
-          WHITESPACE@[1426; 1427) " "
-          L_ANGLE@[1427; 1428) "<"
-          WHITESPACE@[1428; 1429) " "
-          PAREN_EXPR@[1429; 1437)
-            L_PAREN@[1429; 1430) "("
-            BIN_EXPR@[1430; 1436)
-              PATH_EXPR@[1430; 1432)
-                PATH@[1430; 1432)
-                  PATH_SEGMENT@[1430; 1432)
-                    NAME_REF@[1430; 1432)
-                      IDENT@[1430; 1432) "_x"
-              WHITESPACE@[1432; 1433) " "
-              EQ@[1433; 1434) "="
-              WHITESPACE@[1434; 1435) " "
-              LITERAL@[1435; 1436)
-                INT_NUMBER@[1435; 1436) "0"
-            R_PAREN@[1436; 1437) ")"
-        SEMI@[1437; 1438) ";"
-      WHITESPACE@[1438; 1443) "\n    "
-      LET_STMT@[1443; 1474)
-        LET_KW@[1443; 1446) "let"
-        WHITESPACE@[1446; 1447) " "
-        BIND_PAT@[1447; 1449)
-          NAME@[1447; 1449)
-            IDENT@[1447; 1449) "_a"
-        WHITESPACE@[1449; 1450) " "
-        EQ@[1450; 1451) "="
-        WHITESPACE@[1451; 1452) " "
-        BIN_EXPR@[1452; 1473)
-          PAREN_EXPR@[1452; 1461)
-            L_PAREN@[1452; 1453) "("
-            BIN_EXPR@[1453; 1460)
-              PATH_EXPR@[1453; 1455)
-                PATH@[1453; 1455)
-                  PATH_SEGMENT@[1453; 1455)
-                    NAME_REF@[1453; 1455)
-                      IDENT@[1453; 1455) "_x"
-              WHITESPACE@[1455; 1456) " "
-              PLUSEQ@[1456; 1458) "+="
-              WHITESPACE@[1458; 1459) " "
-              LITERAL@[1459; 1460)
-                INT_NUMBER@[1459; 1460) "0"
-            R_PAREN@[1460; 1461) ")"
-          WHITESPACE@[1461; 1462) " "
-          EQEQ@[1462; 1464) "=="
-          WHITESPACE@[1464; 1465) " "
-          PAREN_EXPR@[1465; 1473)
-            L_PAREN@[1465; 1466) "("
-            BIN_EXPR@[1466; 1472)
-              PATH_EXPR@[1466; 1468)
-                PATH@[1466; 1468)
-                  PATH_SEGMENT@[1466; 1468)
-                    NAME_REF@[1466; 1468)
-                      IDENT@[1466; 1468) "_x"
-              WHITESPACE@[1468; 1469) " "
-              EQ@[1469; 1470) "="
-              WHITESPACE@[1470; 1471) " "
-              LITERAL@[1471; 1472)
-                INT_NUMBER@[1471; 1472) "0"
-            R_PAREN@[1472; 1473) ")"
-        SEMI@[1473; 1474) ";"
-      WHITESPACE@[1474; 1479) "\n    "
-      LET_STMT@[1479; 1537)
-        LET_KW@[1479; 1482) "let"
-        WHITESPACE@[1482; 1483) " "
-        BIND_PAT@[1483; 1485)
-          NAME@[1483; 1485)
-            IDENT@[1483; 1485) "_b"
-        WHITESPACE@[1485; 1486) " "
-        EQ@[1486; 1487) "="
-        WHITESPACE@[1487; 1488) " "
-        BIN_EXPR@[1488; 1536)
-          CALL_EXPR@[1488; 1510)
-            PATH_EXPR@[1488; 1492)
-              PATH@[1488; 1492)
-                PATH_SEGMENT@[1488; 1492)
-                  NAME_REF@[1488; 1492)
-                    IDENT@[1488; 1492) "swap"
-            ARG_LIST@[1492; 1510)
-              L_PAREN@[1492; 1493) "("
-              REF_EXPR@[1493; 1500)
-                AMP@[1493; 1494) "&"
-                MUT_KW@[1494; 1497) "mut"
-                WHITESPACE@[1497; 1498) " "
-                PATH_EXPR@[1498; 1500)
-                  PATH@[1498; 1500)
-                    PATH_SEGMENT@[1498; 1500)
-                      NAME_REF@[1498; 1500)
-                        IDENT@[1498; 1500) "_y"
-              COMMA@[1500; 1501) ","
-              WHITESPACE@[1501; 1502) " "
-              REF_EXPR@[1502; 1509)
-                AMP@[1502; 1503) "&"
-                MUT_KW@[1503; 1506) "mut"
-                WHITESPACE@[1506; 1507) " "
-                PATH_EXPR@[1507; 1509)
-                  PATH@[1507; 1509)
-                    PATH_SEGMENT@[1507; 1509)
-                      NAME_REF@[1507; 1509)
-                        IDENT@[1507; 1509) "_z"
-              R_PAREN@[1509; 1510) ")"
-          WHITESPACE@[1510; 1511) " "
-          EQEQ@[1511; 1513) "=="
-          WHITESPACE@[1513; 1514) " "
-          CALL_EXPR@[1514; 1536)
-            PATH_EXPR@[1514; 1518)
-              PATH@[1514; 1518)
-                PATH_SEGMENT@[1514; 1518)
-                  NAME_REF@[1514; 1518)
-                    IDENT@[1514; 1518) "swap"
-            ARG_LIST@[1518; 1536)
-              L_PAREN@[1518; 1519) "("
-              REF_EXPR@[1519; 1526)
-                AMP@[1519; 1520) "&"
-                MUT_KW@[1520; 1523) "mut"
-                WHITESPACE@[1523; 1524) " "
-                PATH_EXPR@[1524; 1526)
-                  PATH@[1524; 1526)
-                    PATH_SEGMENT@[1524; 1526)
-                      NAME_REF@[1524; 1526)
-                        IDENT@[1524; 1526) "_y"
-              COMMA@[1526; 1527) ","
-              WHITESPACE@[1527; 1528) " "
-              REF_EXPR@[1528; 1535)
-                AMP@[1528; 1529) "&"
-                MUT_KW@[1529; 1532) "mut"
-                WHITESPACE@[1532; 1533) " "
-                PATH_EXPR@[1533; 1535)
-                  PATH@[1533; 1535)
-                    PATH_SEGMENT@[1533; 1535)
-                      NAME_REF@[1533; 1535)
-                        IDENT@[1533; 1535) "_z"
-              R_PAREN@[1535; 1536) ")"
-        SEMI@[1536; 1537) ";"
-      WHITESPACE@[1537; 1538) "\n"
-      R_CURLY@[1538; 1539) "}"
-  WHITESPACE@[1539; 1541) "\n\n"
-  FN_DEF@[1541; 1741)
-    FN_KW@[1541; 1543) "fn"
-    WHITESPACE@[1543; 1544) " "
-    NAME@[1544; 1557)
-      IDENT@[1544; 1557) "canttouchthis"
-    PARAM_LIST@[1557; 1559)
-      L_PAREN@[1557; 1558) "("
-      R_PAREN@[1558; 1559) ")"
-    WHITESPACE@[1559; 1560) " "
-    RET_TYPE@[1560; 1568)
-      THIN_ARROW@[1560; 1562) "->"
-      WHITESPACE@[1562; 1563) " "
-      PATH_TYPE@[1563; 1568)
-        PATH@[1563; 1568)
-          PATH_SEGMENT@[1563; 1568)
-            NAME_REF@[1563; 1568)
-              IDENT@[1563; 1568) "usize"
-    WHITESPACE@[1568; 1569) " "
-    BLOCK@[1569; 1741)
-      L_CURLY@[1569; 1570) "{"
-      WHITESPACE@[1570; 1575) "\n    "
-      FN_DEF@[1575; 1598)
-        FN_KW@[1575; 1577) "fn"
-        WHITESPACE@[1577; 1578) " "
-        NAME@[1578; 1579)
-          IDENT@[1578; 1579) "p"
-        PARAM_LIST@[1579; 1581)
-          L_PAREN@[1579; 1580) "("
-          R_PAREN@[1580; 1581) ")"
-        WHITESPACE@[1581; 1582) " "
-        RET_TYPE@[1582; 1589)
-          THIN_ARROW@[1582; 1584) "->"
-          WHITESPACE@[1584; 1585) " "
-          PATH_TYPE@[1585; 1589)
-            PATH@[1585; 1589)
-              PATH_SEGMENT@[1585; 1589)
-                NAME_REF@[1585; 1589)
-                  IDENT@[1585; 1589) "bool"
-        WHITESPACE@[1589; 1590) " "
-        BLOCK@[1590; 1598)
-          L_CURLY@[1590; 1591) "{"
-          WHITESPACE@[1591; 1592) " "
-          LITERAL@[1592; 1596)
-            TRUE_KW@[1592; 1596) "true"
-          WHITESPACE@[1596; 1597) " "
-          R_CURLY@[1597; 1598) "}"
-      WHITESPACE@[1598; 1603) "\n    "
-      LET_STMT@[1603; 1648)
-        LET_KW@[1603; 1606) "let"
-        WHITESPACE@[1606; 1607) " "
-        BIND_PAT@[1607; 1609)
-          NAME@[1607; 1609)
-            IDENT@[1607; 1609) "_a"
-        WHITESPACE@[1609; 1610) " "
-        EQ@[1610; 1611) "="
-        WHITESPACE@[1611; 1612) " "
-        PAREN_EXPR@[1612; 1647)
-          L_PAREN@[1612; 1613) "("
-          BIN_EXPR@[1613; 1646)
-            MACRO_CALL@[1613; 1628)
-              PATH@[1613; 1619)
-                PATH_SEGMENT@[1613; 1619)
-                  NAME_REF@[1613; 1619)
-                    IDENT@[1613; 1619) "assert"
-              EXCL@[1619; 1620) "!"
-              TOKEN_TREE@[1620; 1628)
-                L_PAREN@[1620; 1621) "("
-                TOKEN_TREE@[1621; 1627)
-                  L_PAREN@[1621; 1622) "("
-                  TRUE_KW@[1622; 1626) "true"
-                  R_PAREN@[1626; 1627) ")"
-                R_PAREN@[1627; 1628) ")"
-            WHITESPACE@[1628; 1629) " "
-            EQEQ@[1629; 1631) "=="
-            WHITESPACE@[1631; 1632) " "
-            PAREN_EXPR@[1632; 1646)
-              L_PAREN@[1632; 1633) "("
-              MACRO_CALL@[1633; 1645)
-                PATH@[1633; 1639)
-                  PATH_SEGMENT@[1633; 1639)
-                    NAME_REF@[1633; 1639)
-                      IDENT@[1633; 1639) "assert"
-                EXCL@[1639; 1640) "!"
-                TOKEN_TREE@[1640; 1645)
-                  L_PAREN@[1640; 1641) "("
-                  IDENT@[1641; 1642) "p"
-                  TOKEN_TREE@[1642; 1644)
-                    L_PAREN@[1642; 1643) "("
-                    R_PAREN@[1643; 1644) ")"
-                  R_PAREN@[1644; 1645) ")"
-              R_PAREN@[1645; 1646) ")"
-          R_PAREN@[1646; 1647) ")"
-        SEMI@[1647; 1648) ";"
-      WHITESPACE@[1648; 1653) "\n    "
-      LET_STMT@[1653; 1685)
-        LET_KW@[1653; 1656) "let"
-        WHITESPACE@[1656; 1657) " "
-        BIND_PAT@[1657; 1659)
-          NAME@[1657; 1659)
-            IDENT@[1657; 1659) "_c"
-        WHITESPACE@[1659; 1660) " "
-        EQ@[1660; 1661) "="
-        WHITESPACE@[1661; 1662) " "
-        PAREN_EXPR@[1662; 1684)
-          L_PAREN@[1662; 1663) "("
-          BIN_EXPR@[1663; 1683)
-            MACRO_CALL@[1663; 1677)
-              PATH@[1663; 1669)
-                PATH_SEGMENT@[1663; 1669)
-                  NAME_REF@[1663; 1669)
-                    IDENT@[1663; 1669) "assert"
-              EXCL@[1669; 1670) "!"
-              TOKEN_TREE@[1670; 1677)
-                L_PAREN@[1670; 1671) "("
-                TOKEN_TREE@[1671; 1676)
-                  L_PAREN@[1671; 1672) "("
-                  IDENT@[1672; 1673) "p"
-                  TOKEN_TREE@[1673; 1675)
-                    L_PAREN@[1673; 1674) "("
-                    R_PAREN@[1674; 1675) ")"
-                  R_PAREN@[1675; 1676) ")"
-                R_PAREN@[1676; 1677) ")"
-            WHITESPACE@[1677; 1678) " "
-            EQEQ@[1678; 1680) "=="
-            WHITESPACE@[1680; 1681) " "
-            TUPLE_EXPR@[1681; 1683)
-              L_PAREN@[1681; 1682) "("
-              R_PAREN@[1682; 1683) ")"
-          R_PAREN@[1683; 1684) ")"
-        SEMI@[1684; 1685) ";"
-      WHITESPACE@[1685; 1690) "\n    "
-      LET_STMT@[1690; 1739)
-        LET_KW@[1690; 1693) "let"
-        WHITESPACE@[1693; 1694) " "
-        BIND_PAT@[1694; 1696)
-          NAME@[1694; 1696)
-            IDENT@[1694; 1696) "_b"
-        COLON@[1696; 1697) ":"
-        WHITESPACE@[1697; 1698) " "
-        PATH_TYPE@[1698; 1702)
-          PATH@[1698; 1702)
-            PATH_SEGMENT@[1698; 1702)
-              NAME_REF@[1698; 1702)
-                IDENT@[1698; 1702) "bool"
-        WHITESPACE@[1702; 1703) " "
-        EQ@[1703; 1704) "="
-        WHITESPACE@[1704; 1705) " "
-        PAREN_EXPR@[1705; 1738)
-          L_PAREN@[1705; 1706) "("
-          BIN_EXPR@[1706; 1737)
-            MACRO_CALL@[1706; 1723)
-              PATH@[1706; 1713)
-                PATH_SEGMENT@[1706; 1713)
-                  NAME_REF@[1706; 1713)
-                    IDENT@[1706; 1713) "println"
-              EXCL@[1713; 1714) "!"
-              TOKEN_TREE@[1714; 1723)
-                L_PAREN@[1714; 1715) "("
-                STRING@[1715; 1719) "\"{}\""
-                COMMA@[1719; 1720) ","
-                WHITESPACE@[1720; 1721) " "
-                INT_NUMBER@[1721; 1722) "0"
-                R_PAREN@[1722; 1723) ")"
-            WHITESPACE@[1723; 1724) " "
-            EQEQ@[1724; 1726) "=="
-            WHITESPACE@[1726; 1727) " "
-            PAREN_EXPR@[1727; 1737)
-              L_PAREN@[1727; 1728) "("
-              RETURN_EXPR@[1728; 1736)
-                RETURN_KW@[1728; 1734) "return"
-                WHITESPACE@[1734; 1735) " "
-                LITERAL@[1735; 1736)
-                  INT_NUMBER@[1735; 1736) "0"
-              R_PAREN@[1736; 1737) ")"
-          R_PAREN@[1737; 1738) ")"
-        SEMI@[1738; 1739) ";"
-      WHITESPACE@[1739; 1740) "\n"
-      R_CURLY@[1740; 1741) "}"
-  WHITESPACE@[1741; 1743) "\n\n"
-  FN_DEF@[1743; 1904)
-    FN_KW@[1743; 1745) "fn"
-    WHITESPACE@[1745; 1746) " "
-    NAME@[1746; 1755)
-      IDENT@[1746; 1755) "angrydome"
-    PARAM_LIST@[1755; 1757)
-      L_PAREN@[1755; 1756) "("
-      R_PAREN@[1756; 1757) ")"
-    WHITESPACE@[1757; 1758) " "
-    BLOCK@[1758; 1904)
-      L_CURLY@[1758; 1759) "{"
-      WHITESPACE@[1759; 1764) "\n    "
-      EXPR_STMT@[1764; 1785)
-        LOOP_EXPR@[1764; 1785)
-          LOOP_KW@[1764; 1768) "loop"
-          WHITESPACE@[1768; 1769) " "
-          BLOCK@[1769; 1785)
-            L_CURLY@[1769; 1770) "{"
-            WHITESPACE@[1770; 1771) " "
-            IF_EXPR@[1771; 1783)
-              IF_KW@[1771; 1773) "if"
-              WHITESPACE@[1773; 1774) " "
-              CONDITION@[1774; 1779)
-                BREAK_EXPR@[1774; 1779)
-                  BREAK_KW@[1774; 1779) "break"
-              WHITESPACE@[1779; 1780) " "
-              BLOCK@[1780; 1783)
-                L_CURLY@[1780; 1781) "{"
-                WHITESPACE@[1781; 1782) " "
-                R_CURLY@[1782; 1783) "}"
-            WHITESPACE@[1783; 1784) " "
-            R_CURLY@[1784; 1785) "}"
-      WHITESPACE@[1785; 1790) "\n    "
-      LET_STMT@[1790; 1804)
-        LET_KW@[1790; 1793) "let"
-        WHITESPACE@[1793; 1794) " "
-        BIND_PAT@[1794; 1799)
-          MUT_KW@[1794; 1797) "mut"
-          WHITESPACE@[1797; 1798) " "
-          NAME@[1798; 1799)
-            IDENT@[1798; 1799) "i"
-        WHITESPACE@[1799; 1800) " "
-        EQ@[1800; 1801) "="
-        WHITESPACE@[1801; 1802) " "
-        LITERAL@[1802; 1803)
-          INT_NUMBER@[1802; 1803) "0"
-        SEMI@[1803; 1804) ";"
-      WHITESPACE@[1804; 1809) "\n    "
-      LOOP_EXPR@[1809; 1902)
-        LOOP_KW@[1809; 1813) "loop"
-        WHITESPACE@[1813; 1814) " "
-        BLOCK@[1814; 1902)
-          L_CURLY@[1814; 1815) "{"
-          WHITESPACE@[1815; 1816) " "
-          EXPR_STMT@[1816; 1823)
-            BIN_EXPR@[1816; 1822)
-              PATH_EXPR@[1816; 1817)
-                PATH@[1816; 1817)
-                  PATH_SEGMENT@[1816; 1817)
-                    NAME_REF@[1816; 1817)
-                      IDENT@[1816; 1817) "i"
-              WHITESPACE@[1817; 1818) " "
-              PLUSEQ@[1818; 1820) "+="
-              WHITESPACE@[1820; 1821) " "
-              LITERAL@[1821; 1822)
-                INT_NUMBER@[1821; 1822) "1"
-            SEMI@[1822; 1823) ";"
-          WHITESPACE@[1823; 1824) " "
-          EXPR_STMT@[1824; 1887)
-            IF_EXPR@[1824; 1887)
-              IF_KW@[1824; 1826) "if"
-              WHITESPACE@[1826; 1827) " "
-              CONDITION@[1827; 1833)
-                BIN_EXPR@[1827; 1833)
-                  PATH_EXPR@[1827; 1828)
-                    PATH@[1827; 1828)
-                      PATH_SEGMENT@[1827; 1828)
-                        NAME_REF@[1827; 1828)
-                          IDENT@[1827; 1828) "i"
-                  WHITESPACE@[1828; 1829) " "
-                  EQEQ@[1829; 1831) "=="
-                  WHITESPACE@[1831; 1832) " "
-                  LITERAL@[1832; 1833)
-                    INT_NUMBER@[1832; 1833) "1"
-              WHITESPACE@[1833; 1834) " "
-              BLOCK@[1834; 1887)
-                L_CURLY@[1834; 1835) "{"
-                WHITESPACE@[1835; 1836) " "
-                MATCH_EXPR@[1836; 1885)
-                  MATCH_KW@[1836; 1841) "match"
-                  WHITESPACE@[1841; 1842) " "
-                  PAREN_EXPR@[1842; 1852)
-                    L_PAREN@[1842; 1843) "("
-                    CONTINUE_EXPR@[1843; 1851)
-                      CONTINUE_KW@[1843; 1851) "continue"
-                    R_PAREN@[1851; 1852) ")"
-                  WHITESPACE@[1852; 1853) " "
-                  MATCH_ARM_LIST@[1853; 1885)
-                    L_CURLY@[1853; 1854) "{"
-                    WHITESPACE@[1854; 1855) " "
-                    MATCH_ARM@[1855; 1863)
-                      LITERAL_PAT@[1855; 1856)
-                        LITERAL@[1855; 1856)
-                          INT_NUMBER@[1855; 1856) "1"
-                      WHITESPACE@[1856; 1857) " "
-                      FAT_ARROW@[1857; 1859) "=>"
-                      WHITESPACE@[1859; 1860) " "
-                      BLOCK_EXPR@[1860; 1863)
-                        BLOCK@[1860; 1863)
-                          L_CURLY@[1860; 1861) "{"
-                          WHITESPACE@[1861; 1862) " "
-                          R_CURLY@[1862; 1863) "}"
-                    COMMA@[1863; 1864) ","
-                    WHITESPACE@[1864; 1865) " "
-                    MATCH_ARM@[1865; 1883)
-                      PLACEHOLDER_PAT@[1865; 1866)
-                        UNDERSCORE@[1865; 1866) "_"
-                      WHITESPACE@[1866; 1867) " "
-                      FAT_ARROW@[1867; 1869) "=>"
-                      WHITESPACE@[1869; 1870) " "
-                      MACRO_CALL@[1870; 1883)
-                        PATH@[1870; 1875)
-                          PATH_SEGMENT@[1870; 1875)
-                            NAME_REF@[1870; 1875)
-                              IDENT@[1870; 1875) "panic"
-                        EXCL@[1875; 1876) "!"
-                        TOKEN_TREE@[1876; 1883)
-                          L_PAREN@[1876; 1877) "("
-                          STRING@[1877; 1882) "\"wat\""
-                          R_PAREN@[1882; 1883) ")"
-                    WHITESPACE@[1883; 1884) " "
-                    R_CURLY@[1884; 1885) "}"
-                WHITESPACE@[1885; 1886) " "
-                R_CURLY@[1886; 1887) "}"
-          WHITESPACE@[1887; 1894) "\n      "
-          EXPR_STMT@[1894; 1900)
-            BREAK_EXPR@[1894; 1899)
-              BREAK_KW@[1894; 1899) "break"
-            SEMI@[1899; 1900) ";"
-          WHITESPACE@[1900; 1901) " "
-          R_CURLY@[1901; 1902) "}"
-      WHITESPACE@[1902; 1903) "\n"
-      R_CURLY@[1903; 1904) "}"
-  WHITESPACE@[1904; 1906) "\n\n"
-  FN_DEF@[1906; 1960)
-    FN_KW@[1906; 1908) "fn"
-    WHITESPACE@[1908; 1909) " "
-    NAME@[1909; 1921)
-      IDENT@[1909; 1921) "evil_lincoln"
-    PARAM_LIST@[1921; 1923)
-      L_PAREN@[1921; 1922) "("
-      R_PAREN@[1922; 1923) ")"
-    WHITESPACE@[1923; 1924) " "
-    BLOCK@[1924; 1960)
-      L_CURLY@[1924; 1925) "{"
-      WHITESPACE@[1925; 1926) " "
-      LET_STMT@[1926; 1958)
-        LET_KW@[1926; 1929) "let"
-        WHITESPACE@[1929; 1930) " "
-        BIND_PAT@[1930; 1935)
-          NAME@[1930; 1935)
-            IDENT@[1930; 1935) "_evil"
-        WHITESPACE@[1935; 1936) " "
-        EQ@[1936; 1937) "="
-        WHITESPACE@[1937; 1938) " "
-        MACRO_CALL@[1938; 1957)
-          PATH@[1938; 1945)
-            PATH_SEGMENT@[1938; 1945)
-              NAME_REF@[1938; 1945)
-                IDENT@[1938; 1945) "println"
-          EXCL@[1945; 1946) "!"
-          TOKEN_TREE@[1946; 1957)
-            L_PAREN@[1946; 1947) "("
-            STRING@[1947; 1956) "\"lincoln\""
-            R_PAREN@[1956; 1957) ")"
-        SEMI@[1957; 1958) ";"
-      WHITESPACE@[1958; 1959) " "
-      R_CURLY@[1959; 1960) "}"
-  WHITESPACE@[1960; 1962) "\n\n"
-  FN_DEF@[1962; 2198)
-    FN_KW@[1962; 1964) "fn"
-    WHITESPACE@[1964; 1965) " "
-    NAME@[1965; 1969)
-      IDENT@[1965; 1969) "dots"
-    PARAM_LIST@[1969; 1971)
-      L_PAREN@[1969; 1970) "("
-      R_PAREN@[1970; 1971) ")"
-    WHITESPACE@[1971; 1972) " "
-    BLOCK@[1972; 2198)
-      L_CURLY@[1972; 1973) "{"
-      WHITESPACE@[1973; 1978) "\n    "
-      EXPR_STMT@[1978; 2196)
-        MACRO_CALL@[1978; 2195)
-          PATH@[1978; 1987)
-            PATH_SEGMENT@[1978; 1987)
-              NAME_REF@[1978; 1987)
-                IDENT@[1978; 1987) "assert_eq"
-          EXCL@[1987; 1988) "!"
-          TOKEN_TREE@[1988; 2195)
-            L_PAREN@[1988; 1989) "("
-            IDENT@[1989; 1995) "String"
-            COLON@[1995; 1996) ":"
-            COLON@[1996; 1997) ":"
-            IDENT@[1997; 2001) "from"
-            TOKEN_TREE@[2001; 2055)
-              L_PAREN@[2001; 2002) "("
-              STRING@[2002; 2054) "\".................... ..."
-              R_PAREN@[2054; 2055) ")"
-            COMMA@[2055; 2056) ","
-            WHITESPACE@[2056; 2072) "\n               "
-            IDENT@[2072; 2078) "format"
-            EXCL@[2078; 2079) "!"
-            TOKEN_TREE@[2079; 2194)
-              L_PAREN@[2079; 2080) "("
-              STRING@[2080; 2086) "\"{:?}\""
-              COMMA@[2086; 2087) ","
-              WHITESPACE@[2087; 2088) " "
-              DOT@[2088; 2089) "."
-              DOT@[2089; 2090) "."
-              WHITESPACE@[2090; 2091) " "
-              DOT@[2091; 2092) "."
-              DOT@[2092; 2093) "."
-              WHITESPACE@[2093; 2094) " "
-              DOT@[2094; 2095) "."
-              DOT@[2095; 2096) "."
-              WHITESPACE@[2096; 2097) " "
-              DOT@[2097; 2098) "."
-              DOT@[2098; 2099) "."
-              WHITESPACE@[2099; 2100) " "
-              DOT@[2100; 2101) "."
-              DOT@[2101; 2102) "."
-              WHITESPACE@[2102; 2103) " "
-              DOT@[2103; 2104) "."
-              DOT@[2104; 2105) "."
-              WHITESPACE@[2105; 2106) " "
-              DOT@[2106; 2107) "."
-              DOT@[2107; 2108) "."
-              WHITESPACE@[2108; 2109) " "
-              DOT@[2109; 2110) "."
-              DOT@[2110; 2111) "."
-              WHITESPACE@[2111; 2112) " "
-              DOT@[2112; 2113) "."
-              DOT@[2113; 2114) "."
-              WHITESPACE@[2114; 2115) " "
-              DOT@[2115; 2116) "."
-              DOT@[2116; 2117) "."
-              WHITESPACE@[2117; 2118) " "
-              DOT@[2118; 2119) "."
-              DOT@[2119; 2120) "."
-              WHITESPACE@[2120; 2121) " "
-              DOT@[2121; 2122) "."
-              DOT@[2122; 2123) "."
-              WHITESPACE@[2123; 2124) " "
-              DOT@[2124; 2125) "."
-              DOT@[2125; 2126) "."
-              WHITESPACE@[2126; 2158) "\n                     ..."
-              DOT@[2158; 2159) "."
-              DOT@[2159; 2160) "."
-              WHITESPACE@[2160; 2161) " "
-              DOT@[2161; 2162) "."
-              DOT@[2162; 2163) "."
-              WHITESPACE@[2163; 2164) " "
-              DOT@[2164; 2165) "."
-              DOT@[2165; 2166) "."
-              WHITESPACE@[2166; 2167) " "
-              DOT@[2167; 2168) "."
-              DOT@[2168; 2169) "."
-              WHITESPACE@[2169; 2170) " "
-              DOT@[2170; 2171) "."
-              DOT@[2171; 2172) "."
-              WHITESPACE@[2172; 2173) " "
-              DOT@[2173; 2174) "."
-              DOT@[2174; 2175) "."
-              WHITESPACE@[2175; 2176) " "
-              DOT@[2176; 2177) "."
-              DOT@[2177; 2178) "."
-              WHITESPACE@[2178; 2179) " "
-              DOT@[2179; 2180) "."
-              DOT@[2180; 2181) "."
-              WHITESPACE@[2181; 2182) " "
-              DOT@[2182; 2183) "."
-              DOT@[2183; 2184) "."
-              WHITESPACE@[2184; 2185) " "
-              DOT@[2185; 2186) "."
-              DOT@[2186; 2187) "."
-              WHITESPACE@[2187; 2188) " "
-              DOT@[2188; 2189) "."
-              DOT@[2189; 2190) "."
-              WHITESPACE@[2190; 2191) " "
-              DOT@[2191; 2192) "."
-              DOT@[2192; 2193) "."
-              R_PAREN@[2193; 2194) ")"
-            R_PAREN@[2194; 2195) ")"
-        SEMI@[2195; 2196) ";"
-      WHITESPACE@[2196; 2197) "\n"
-      R_CURLY@[2197; 2198) "}"
-  WHITESPACE@[2198; 2200) "\n\n"
-  FN_DEF@[2200; 2693)
-    FN_KW@[2200; 2202) "fn"
-    WHITESPACE@[2202; 2203) " "
-    NAME@[2203; 2205)
-      IDENT@[2203; 2205) "u8"
-    PARAM_LIST@[2205; 2213)
-      L_PAREN@[2205; 2206) "("
-      PARAM@[2206; 2212)
-        BIND_PAT@[2206; 2208)
-          NAME@[2206; 2208)
-            IDENT@[2206; 2208) "u8"
-        COLON@[2208; 2209) ":"
-        WHITESPACE@[2209; 2210) " "
-        PATH_TYPE@[2210; 2212)
-          PATH@[2210; 2212)
-            PATH_SEGMENT@[2210; 2212)
-              NAME_REF@[2210; 2212)
-                IDENT@[2210; 2212) "u8"
-      R_PAREN@[2212; 2213) ")"
-    WHITESPACE@[2213; 2214) " "
-    BLOCK@[2214; 2693)
-      L_CURLY@[2214; 2215) "{"
-      WHITESPACE@[2215; 2220) "\n    "
-      IF_EXPR@[2220; 2691)
-        IF_KW@[2220; 2222) "if"
-        WHITESPACE@[2222; 2223) " "
-        CONDITION@[2223; 2232)
-          BIN_EXPR@[2223; 2232)
-            PATH_EXPR@[2223; 2225)
-              PATH@[2223; 2225)
-                PATH_SEGMENT@[2223; 2225)
-                  NAME_REF@[2223; 2225)
-                    IDENT@[2223; 2225) "u8"
-            WHITESPACE@[2225; 2226) " "
-            NEQ@[2226; 2228) "!="
-            WHITESPACE@[2228; 2229) " "
-            LITERAL@[2229; 2232)
-              INT_NUMBER@[2229; 2232) "0u8"
-        WHITESPACE@[2232; 2233) " "
-        BLOCK@[2233; 2691)
-          L_CURLY@[2233; 2234) "{"
-          WHITESPACE@[2234; 2243) "\n        "
-          EXPR_STMT@[2243; 2685)
-            MACRO_CALL@[2243; 2684)
-              PATH@[2243; 2252)
-                PATH_SEGMENT@[2243; 2252)
-                  NAME_REF@[2243; 2252)
-                    IDENT@[2243; 2252) "assert_eq"
-              EXCL@[2252; 2253) "!"
-              TOKEN_TREE@[2253; 2684)
-                L_PAREN@[2253; 2254) "("
-                INT_NUMBER@[2254; 2257) "8u8"
-                COMMA@[2257; 2258) ","
-                WHITESPACE@[2258; 2259) " "
-                TOKEN_TREE@[2259; 2683)
-                  L_CURLY@[2259; 2260) "{"
-                  WHITESPACE@[2260; 2273) "\n            "
-                  IDENT@[2273; 2284) "macro_rules"
-                  EXCL@[2284; 2285) "!"
-                  WHITESPACE@[2285; 2286) " "
-                  IDENT@[2286; 2288) "u8"
-                  WHITESPACE@[2288; 2289) " "
-                  TOKEN_TREE@[2289; 2567)
-                    L_CURLY@[2289; 2290) "{"
-                    WHITESPACE@[2290; 2307) "\n                "
-                    TOKEN_TREE@[2307; 2311)
-                      L_PAREN@[2307; 2308) "("
-                      IDENT@[2308; 2310) "u8"
-                      R_PAREN@[2310; 2311) ")"
-                    WHITESPACE@[2311; 2312) " "
-                    EQ@[2312; 2313) "="
-                    R_ANGLE@[2313; 2314) ">"
-                    WHITESPACE@[2314; 2315) " "
-                    TOKEN_TREE@[2315; 2552)
-                      L_CURLY@[2315; 2316) "{"
-                      WHITESPACE@[2316; 2337) "\n                    "
-                      MOD_KW@[2337; 2340) "mod"
-                      WHITESPACE@[2340; 2341) " "
-                      IDENT@[2341; 2343) "u8"
-                      WHITESPACE@[2343; 2344) " "
-                      TOKEN_TREE@[2344; 2534)
-                        L_CURLY@[2344; 2345) "{"
-                        WHITESPACE@[2345; 2370) "\n                     ..."
-                        PUB_KW@[2370; 2373) "pub"
-                        WHITESPACE@[2373; 2374) " "
-                        FN_KW@[2374; 2376) "fn"
-                        WHITESPACE@[2376; 2377) " "
-                        IDENT@[2377; 2379) "u8"
-                        L_ANGLE@[2379; 2380) "<"
-                        LIFETIME@[2380; 2383) "\'u8"
-                        COLON@[2383; 2384) ":"
-                        WHITESPACE@[2384; 2385) " "
-                        LIFETIME@[2385; 2388) "\'u8"
-                        WHITESPACE@[2388; 2389) " "
-                        PLUS@[2389; 2390) "+"
-                        WHITESPACE@[2390; 2391) " "
-                        LIFETIME@[2391; 2394) "\'u8"
-                        R_ANGLE@[2394; 2395) ">"
-                        TOKEN_TREE@[2395; 2408)
-                          L_PAREN@[2395; 2396) "("
-                          IDENT@[2396; 2398) "u8"
-                          COLON@[2398; 2399) ":"
-                          WHITESPACE@[2399; 2400) " "
-                          AMP@[2400; 2401) "&"
-                          LIFETIME@[2401; 2404) "\'u8"
-                          WHITESPACE@[2404; 2405) " "
-                          IDENT@[2405; 2407) "u8"
-                          R_PAREN@[2407; 2408) ")"
-                        WHITESPACE@[2408; 2409) " "
-                        MINUS@[2409; 2410) "-"
-                        R_ANGLE@[2410; 2411) ">"
-                        WHITESPACE@[2411; 2412) " "
-                        AMP@[2412; 2413) "&"
-                        LIFETIME@[2413; 2416) "\'u8"
-                        WHITESPACE@[2416; 2417) " "
-                        IDENT@[2417; 2419) "u8"
-                        WHITESPACE@[2419; 2420) " "
-                        TOKEN_TREE@[2420; 2512)
-                          L_CURLY@[2420; 2421) "{"
-                          WHITESPACE@[2421; 2450) "\n                     ..."
-                          STRING@[2450; 2454) "\"u8\""
-                          SEMI@[2454; 2455) ";"
-                          WHITESPACE@[2455; 2484) "\n                     ..."
-                          IDENT@[2484; 2486) "u8"
-                          WHITESPACE@[2486; 2511) "\n                     ..."
-                          R_CURLY@[2511; 2512) "}"
-                        WHITESPACE@[2512; 2533) "\n                    "
-                        R_CURLY@[2533; 2534) "}"
-                      WHITESPACE@[2534; 2551) "\n                "
-                      R_CURLY@[2551; 2552) "}"
-                    SEMI@[2552; 2553) ";"
-                    WHITESPACE@[2553; 2566) "\n            "
-                    R_CURLY@[2566; 2567) "}"
-                  WHITESPACE@[2567; 2581) "\n\n            "
-                  IDENT@[2581; 2583) "u8"
-                  EXCL@[2583; 2584) "!"
-                  TOKEN_TREE@[2584; 2588)
-                    L_PAREN@[2584; 2585) "("
-                    IDENT@[2585; 2587) "u8"
-                    R_PAREN@[2587; 2588) ")"
-                  SEMI@[2588; 2589) ";"
-                  WHITESPACE@[2589; 2602) "\n            "
-                  LET_KW@[2602; 2605) "let"
-                  WHITESPACE@[2605; 2606) " "
-                  AMP@[2606; 2607) "&"
-                  IDENT@[2607; 2609) "u8"
-                  COLON@[2609; 2610) ":"
-                  WHITESPACE@[2610; 2611) " "
-                  AMP@[2611; 2612) "&"
-                  IDENT@[2612; 2614) "u8"
-                  WHITESPACE@[2614; 2615) " "
-                  EQ@[2615; 2616) "="
-                  WHITESPACE@[2616; 2617) " "
-                  IDENT@[2617; 2619) "u8"
-                  COLON@[2619; 2620) ":"
-                  COLON@[2620; 2621) ":"
-                  IDENT@[2621; 2623) "u8"
-                  TOKEN_TREE@[2623; 2629)
-                    L_PAREN@[2623; 2624) "("
-                    AMP@[2624; 2625) "&"
-                    INT_NUMBER@[2625; 2628) "8u8"
-                    R_PAREN@[2628; 2629) ")"
-                  SEMI@[2629; 2630) ";"
-                  WHITESPACE@[2630; 2643) "\n            "
-                  CRATE_KW@[2643; 2648) "crate"
-                  COLON@[2648; 2649) ":"
-                  COLON@[2649; 2650) ":"
-                  IDENT@[2650; 2652) "u8"
-                  TOKEN_TREE@[2652; 2657)
-                    L_PAREN@[2652; 2653) "("
-                    INT_NUMBER@[2653; 2656) "0u8"
-                    R_PAREN@[2656; 2657) ")"
-                  SEMI@[2657; 2658) ";"
-                  WHITESPACE@[2658; 2671) "\n            "
-                  IDENT@[2671; 2673) "u8"
-                  WHITESPACE@[2673; 2682) "\n        "
-                  R_CURLY@[2682; 2683) "}"
-                R_PAREN@[2683; 2684) ")"
-            SEMI@[2684; 2685) ";"
-          WHITESPACE@[2685; 2690) "\n    "
-          R_CURLY@[2690; 2691) "}"
-      WHITESPACE@[2691; 2692) "\n"
-      R_CURLY@[2692; 2693) "}"
-  WHITESPACE@[2693; 2695) "\n\n"
-  FN_DEF@[2695; 2832)
-    FN_KW@[2695; 2697) "fn"
-    WHITESPACE@[2697; 2698) " "
-    NAME@[2698; 2703)
-      IDENT@[2698; 2703) "fishy"
-    PARAM_LIST@[2703; 2705)
-      L_PAREN@[2703; 2704) "("
-      R_PAREN@[2704; 2705) ")"
-    WHITESPACE@[2705; 2706) " "
-    BLOCK@[2706; 2832)
-      L_CURLY@[2706; 2707) "{"
-      WHITESPACE@[2707; 2712) "\n    "
-      EXPR_STMT@[2712; 2830)
-        MACRO_CALL@[2712; 2829)
-          PATH@[2712; 2721)
-            PATH_SEGMENT@[2712; 2721)
-              NAME_REF@[2712; 2721)
-                IDENT@[2712; 2721) "assert_eq"
-          EXCL@[2721; 2722) "!"
-          TOKEN_TREE@[2722; 2829)
-            L_PAREN@[2722; 2723) "("
-            IDENT@[2723; 2729) "String"
-            COLON@[2729; 2730) ":"
-            COLON@[2730; 2731) ":"
-            IDENT@[2731; 2735) "from"
-            TOKEN_TREE@[2735; 2742)
-              L_PAREN@[2735; 2736) "("
-              STRING@[2736; 2741) "\"><>\""
-              R_PAREN@[2741; 2742) ")"
-            COMMA@[2742; 2743) ","
-            WHITESPACE@[2743; 2759) "\n               "
-            IDENT@[2759; 2765) "String"
-            COLON@[2765; 2766) ":"
-            COLON@[2766; 2767) ":"
-            L_ANGLE@[2767; 2768) "<"
-            R_ANGLE@[2768; 2769) ">"
-            COLON@[2769; 2770) ":"
-            COLON@[2770; 2771) ":"
-            IDENT@[2771; 2775) "from"
-            COLON@[2775; 2776) ":"
-            COLON@[2776; 2777) ":"
-            L_ANGLE@[2777; 2778) "<"
-            R_ANGLE@[2778; 2779) ">"
-            TOKEN_TREE@[2779; 2786)
-              L_PAREN@[2779; 2780) "("
-              STRING@[2780; 2785) "\"><>\""
-              R_PAREN@[2785; 2786) ")"
-            DOT@[2786; 2787) "."
-            IDENT@[2787; 2792) "chars"
-            COLON@[2792; 2793) ":"
-            COLON@[2793; 2794) ":"
-            L_ANGLE@[2794; 2795) "<"
-            R_ANGLE@[2795; 2796) ">"
-            TOKEN_TREE@[2796; 2798)
-              L_PAREN@[2796; 2797) "("
-              R_PAREN@[2797; 2798) ")"
-            DOT@[2798; 2799) "."
-            IDENT@[2799; 2802) "rev"
-            COLON@[2802; 2803) ":"
-            COLON@[2803; 2804) ":"
-            L_ANGLE@[2804; 2805) "<"
-            R_ANGLE@[2805; 2806) ">"
-            TOKEN_TREE@[2806; 2808)
-              L_PAREN@[2806; 2807) "("
-              R_PAREN@[2807; 2808) ")"
-            DOT@[2808; 2809) "."
-            IDENT@[2809; 2816) "collect"
-            COLON@[2816; 2817) ":"
-            COLON@[2817; 2818) ":"
-            L_ANGLE@[2818; 2819) "<"
-            IDENT@[2819; 2825) "String"
-            R_ANGLE@[2825; 2826) ">"
-            TOKEN_TREE@[2826; 2828)
-              L_PAREN@[2826; 2827) "("
-              R_PAREN@[2827; 2828) ")"
-            R_PAREN@[2828; 2829) ")"
-        SEMI@[2829; 2830) ";"
-      WHITESPACE@[2830; 2831) "\n"
-      R_CURLY@[2831; 2832) "}"
-  WHITESPACE@[2832; 2834) "\n\n"
-  FN_DEF@[2834; 2906)
-    FN_KW@[2834; 2836) "fn"
-    WHITESPACE@[2836; 2837) " "
-    NAME@[2837; 2842)
-      IDENT@[2837; 2842) "union"
-    PARAM_LIST@[2842; 2844)
-      L_PAREN@[2842; 2843) "("
-      R_PAREN@[2843; 2844) ")"
-    WHITESPACE@[2844; 2845) " "
-    BLOCK@[2845; 2906)
-      L_CURLY@[2845; 2846) "{"
-      WHITESPACE@[2846; 2851) "\n    "
-      STRUCT_DEF@[2851; 2904)
-        UNION_KW@[2851; 2856) "union"
-        WHITESPACE@[2856; 2857) " "
-        NAME@[2857; 2862)
-          IDENT@[2857; 2862) "union"
-        TYPE_PARAM_LIST@[2862; 2870)
-          L_ANGLE@[2862; 2863) "<"
-          LIFETIME_PARAM@[2863; 2869)
-            LIFETIME@[2863; 2869) "\'union"
-          R_ANGLE@[2869; 2870) ">"
-        WHITESPACE@[2870; 2871) " "
-        NAMED_FIELD_DEF_LIST@[2871; 2904)
-          L_CURLY@[2871; 2872) "{"
-          WHITESPACE@[2872; 2873) " "
-          NAMED_FIELD_DEF@[2873; 2901)
-            NAME@[2873; 2878)
-              IDENT@[2873; 2878) "union"
-            COLON@[2878; 2879) ":"
-            WHITESPACE@[2879; 2880) " "
-            REFERENCE_TYPE@[2880; 2901)
-              AMP@[2880; 2881) "&"
-              LIFETIME@[2881; 2887) "\'union"
-              WHITESPACE@[2887; 2888) " "
-              PATH_TYPE@[2888; 2901)
-                PATH@[2888; 2901)
-                  PATH_SEGMENT@[2888; 2901)
-                    NAME_REF@[2888; 2893)
-                      IDENT@[2888; 2893) "union"
-                    TYPE_ARG_LIST@[2893; 2901)
-                      L_ANGLE@[2893; 2894) "<"
-                      LIFETIME_ARG@[2894; 2900)
-                        LIFETIME@[2894; 2900) "\'union"
-                      R_ANGLE@[2900; 2901) ">"
-          COMMA@[2901; 2902) ","
-          WHITESPACE@[2902; 2903) " "
-          R_CURLY@[2903; 2904) "}"
-      WHITESPACE@[2904; 2905) "\n"
-      R_CURLY@[2905; 2906) "}"
-  WHITESPACE@[2906; 2908) "\n\n"
-  FN_DEF@[2908; 3042)
-    FN_KW@[2908; 2910) "fn"
-    WHITESPACE@[2910; 2911) " "
-    NAME@[2911; 2929)
-      IDENT@[2911; 2929) "special_characters"
-    PARAM_LIST@[2929; 2931)
-      L_PAREN@[2929; 2930) "("
-      R_PAREN@[2930; 2931) ")"
-    WHITESPACE@[2931; 2932) " "
-    BLOCK@[2932; 3042)
-      L_CURLY@[2932; 2933) "{"
-      WHITESPACE@[2933; 2938) "\n    "
-      LET_STMT@[2938; 3021)
-        LET_KW@[2938; 2941) "let"
-        WHITESPACE@[2941; 2942) " "
-        BIND_PAT@[2942; 2945)
-          NAME@[2942; 2945)
-            IDENT@[2942; 2945) "val"
-        WHITESPACE@[2945; 2946) " "
-        EQ@[2946; 2947) "="
-        WHITESPACE@[2947; 2948) " "
-        PREFIX_EXPR@[2948; 3013)
-          EXCL@[2948; 2949) "!"
-          PAREN_EXPR@[2949; 3013)
-            L_PAREN@[2949; 2950) "("
-            BIN_EXPR@[2950; 3012)
-              CALL_EXPR@[2950; 2995)
-                PAREN_EXPR@[2950; 2971)
-                  L_PAREN@[2950; 2951) "("
-                  LAMBDA_EXPR@[2951; 2970)
-                    PARAM_LIST@[2951; 2968)
-                      PIPE@[2951; 2952) "|"
-                      PARAM@[2952; 2962)
-                        TUPLE_PAT@[2952; 2956)
-                          L_PAREN@[2952; 2953) "("
-                          DOTDOT@[2953; 2955) ".."
-                          R_PAREN@[2955; 2956) ")"
-                        COLON@[2956; 2957) ":"
-                        TUPLE_TYPE@[2957; 2962)
-                          L_PAREN@[2957; 2958) "("
-                          PLACEHOLDER_TYPE@[2958; 2959)
-                            UNDERSCORE@[2958; 2959) "_"
-                          COMMA@[2959; 2960) ","
-                          PLACEHOLDER_TYPE@[2960; 2961)
-                            UNDERSCORE@[2960; 2961) "_"
-                          R_PAREN@[2961; 2962) ")"
-                      COMMA@[2962; 2963) ","
-                      PARAM@[2963; 2967)
-                        BIND_PAT@[2963; 2967)
-                          NAME@[2963; 2965)
-                            IDENT@[2963; 2965) "__"
-                          AT@[2965; 2966) "@"
-                          PLACEHOLDER_PAT@[2966; 2967)
-                            UNDERSCORE@[2966; 2967) "_"
-                      PIPE@[2967; 2968) "|"
-                    PATH_EXPR@[2968; 2970)
-                      PATH@[2968; 2970)
-                        PATH_SEGMENT@[2968; 2970)
-                          NAME_REF@[2968; 2970)
-                            IDENT@[2968; 2970) "__"
-                  R_PAREN@[2970; 2971) ")"
-                ARG_LIST@[2971; 2995)
-                  L_PAREN@[2971; 2972) "("
-                  TUPLE_EXPR@[2972; 2987)
-                    L_PAREN@[2972; 2973) "("
-                    REF_EXPR@[2973; 2979)
-                      AMP@[2973; 2974) "&"
-                      PREFIX_EXPR@[2974; 2979)
-                        STAR@[2974; 2975) "*"
-                        LITERAL@[2975; 2979)
-                          STRING@[2975; 2979) "\"\\\\\""
-                    COMMA@[2979; 2980) ","
-                    LITERAL@[2980; 2986)
-                      CHAR@[2980; 2986) "\'🤔\'"
-                    R_PAREN@[2986; 2987) ")"
-                  COMMENT@[2987; 2991) "/**/"
-                  COMMA@[2991; 2992) ","
-                  BLOCK_EXPR@[2992; 2994)
-                    BLOCK@[2992; 2994)
-                      L_CURLY@[2992; 2993) "{"
-                      R_CURLY@[2993; 2994) "}"
-                  R_PAREN@[2994; 2995) ")"
-              EQEQ@[2995; 2997) "=="
-              BLOCK_EXPR@[2997; 3012)
-                BLOCK@[2997; 3012)
-                  L_CURLY@[2997; 2998) "{"
-                  EXPR_STMT@[2998; 3011)
-                    REF_EXPR@[2998; 3010)
-                      AMP@[2998; 2999) "&"
-                      INDEX_EXPR@[2999; 3010)
-                        ARRAY_EXPR@[2999; 3006)
-                          L_BRACK@[2999; 3000) "["
-                          RANGE_EXPR@[3000; 3005)
-                            DOTDOTEQ@[3000; 3003) "..="
-                            RANGE_EXPR@[3003; 3005)
-                              DOTDOT@[3003; 3005) ".."
-                          R_BRACK@[3005; 3006) "]"
-                        L_BRACK@[3006; 3007) "["
-                        RANGE_EXPR@[3007; 3009)
-                          DOTDOT@[3007; 3009) ".."
-                        R_BRACK@[3009; 3010) "]"
-                    SEMI@[3010; 3011) ";"
-                  R_CURLY@[3011; 3012) "}"
-            R_PAREN@[3012; 3013) ")"
-        COMMENT@[3013; 3015) "//"
-        WHITESPACE@[3015; 3020) "\n    "
-        SEMI@[3020; 3021) ";"
-      WHITESPACE@[3021; 3026) "\n    "
-      EXPR_STMT@[3026; 3040)
-        MACRO_CALL@[3026; 3039)
-          PATH@[3026; 3032)
-            PATH_SEGMENT@[3026; 3032)
-              NAME_REF@[3026; 3032)
-                IDENT@[3026; 3032) "assert"
-          EXCL@[3032; 3033) "!"
-          TOKEN_TREE@[3033; 3039)
-            L_PAREN@[3033; 3034) "("
-            EXCL@[3034; 3035) "!"
-            IDENT@[3035; 3038) "val"
-            R_PAREN@[3038; 3039) ")"
-        SEMI@[3039; 3040) ";"
-      WHITESPACE@[3040; 3041) "\n"
-      R_CURLY@[3041; 3042) "}"
-  WHITESPACE@[3042; 3044) "\n\n"
-  FN_DEF@[3044; 3514)
-    FN_KW@[3044; 3046) "fn"
-    WHITESPACE@[3046; 3047) " "
-    NAME@[3047; 3057)
-      IDENT@[3047; 3057) "punch_card"
-    PARAM_LIST@[3057; 3059)
-      L_PAREN@[3057; 3058) "("
-      R_PAREN@[3058; 3059) ")"
-    WHITESPACE@[3059; 3060) " "
-    RET_TYPE@[3060; 3083)
-      THIN_ARROW@[3060; 3062) "->"
-      WHITESPACE@[3062; 3063) " "
-      IMPL_TRAIT_TYPE@[3063; 3083)
-        IMPL_KW@[3063; 3067) "impl"
-        WHITESPACE@[3067; 3068) " "
-        TYPE_BOUND_LIST@[3068; 3083)
-          TYPE_BOUND@[3068; 3083)
-            PATH_TYPE@[3068; 3083)
-              PATH@[3068; 3083)
-                PATH@[3068; 3076)
-                  PATH@[3068; 3071)
-                    PATH_SEGMENT@[3068; 3071)
-                      NAME_REF@[3068; 3071)
-                        IDENT@[3068; 3071) "std"
-                  COLONCOLON@[3071; 3073) "::"
-                  PATH_SEGMENT@[3073; 3076)
-                    NAME_REF@[3073; 3076)
-                      IDENT@[3073; 3076) "fmt"
-                COLONCOLON@[3076; 3078) "::"
-                PATH_SEGMENT@[3078; 3083)
-                  NAME_REF@[3078; 3083)
-                    IDENT@[3078; 3083) "Debug"
-    WHITESPACE@[3083; 3084) " "
-    BLOCK@[3084; 3514)
-      L_CURLY@[3084; 3085) "{"
-      WHITESPACE@[3085; 3090) "\n    "
-      RANGE_EXPR@[3090; 3512)
-        DOTDOTEQ@[3090; 3093) "..="
-        RANGE_EXPR@[3093; 3512)
-          DOTDOTEQ@[3093; 3096) "..="
-          RANGE_EXPR@[3096; 3512)
-            DOTDOT@[3096; 3098) ".."
-            WHITESPACE@[3098; 3099) " "
-            RANGE_EXPR@[3099; 3512)
-              DOTDOT@[3099; 3101) ".."
-              WHITESPACE@[3101; 3105) "    "
-              RANGE_EXPR@[3105; 3512)
-                DOTDOT@[3105; 3107) ".."
-                WHITESPACE@[3107; 3108) " "
-                RANGE_EXPR@[3108; 3512)
-                  DOTDOT@[3108; 3110) ".."
-                  WHITESPACE@[3110; 3111) " "
-                  RANGE_EXPR@[3111; 3512)
-                    DOTDOT@[3111; 3113) ".."
-                    WHITESPACE@[3113; 3114) " "
-                    RANGE_EXPR@[3114; 3512)
-                      DOTDOT@[3114; 3116) ".."
-                      WHITESPACE@[3116; 3120) "    "
-                      RANGE_EXPR@[3120; 3512)
-                        DOTDOT@[3120; 3122) ".."
-                        WHITESPACE@[3122; 3123) " "
-                        RANGE_EXPR@[3123; 3512)
-                          DOTDOT@[3123; 3125) ".."
-                          WHITESPACE@[3125; 3126) " "
-                          RANGE_EXPR@[3126; 3512)
-                            DOTDOT@[3126; 3128) ".."
-                            WHITESPACE@[3128; 3129) " "
-                            RANGE_EXPR@[3129; 3512)
-                              DOTDOT@[3129; 3131) ".."
-                              WHITESPACE@[3131; 3135) "    "
-                              RANGE_EXPR@[3135; 3512)
-                                DOTDOT@[3135; 3137) ".."
-                                WHITESPACE@[3137; 3138) " "
-                                RANGE_EXPR@[3138; 3512)
-                                  DOTDOTEQ@[3138; 3141) "..="
-                                  RANGE_EXPR@[3141; 3512)
-                                    DOTDOT@[3141; 3143) ".."
-                                    WHITESPACE@[3143; 3144) " "
-                                    RANGE_EXPR@[3144; 3512)
-                                      DOTDOT@[3144; 3146) ".."
-                                      WHITESPACE@[3146; 3151) "\n    "
-                                      RANGE_EXPR@[3151; 3512)
-                                        DOTDOTEQ@[3151; 3154) "..="
-                                        RANGE_EXPR@[3154; 3512)
-                                          DOTDOT@[3154; 3156) ".."
-                                          WHITESPACE@[3156; 3157) " "
-                                          RANGE_EXPR@[3157; 3512)
-                                            DOTDOTEQ@[3157; 3160) "..="
-                                            RANGE_EXPR@[3160; 3512)
-                                              DOTDOT@[3160; 3162) ".."
-                                              WHITESPACE@[3162; 3166) "    "
-                                              RANGE_EXPR@[3166; 3512)
-                                                DOTDOT@[3166; 3168) ".."
-                                                WHITESPACE@[3168; 3169) " "
-                                                RANGE_EXPR@[3169; 3512)
-                                                  DOTDOT@[3169; 3171) ".."
-                                                  WHITESPACE@[3171; 3172) " "
-                                                  RANGE_EXPR@[3172; 3512)
-                                                    DOTDOT@[3172; 3174) ".."
-                                                    WHITESPACE@[3174; 3175) " "
-                                                    RANGE_EXPR@[3175; 3512)
-                                                      DOTDOT@[3175; 3177) ".."
-                                                      WHITESPACE@[3177; 3181) "    "
-                                                      RANGE_EXPR@[3181; 3512)
-                                                        DOTDOT@[3181; 3183) ".."
-                                                        WHITESPACE@[3183; 3184) " "
-                                                        RANGE_EXPR@[3184; 3512)
-                                                          DOTDOT@[3184; 3186) ".."
-                                                          WHITESPACE@[3186; 3187) " "
-                                                          RANGE_EXPR@[3187; 3512)
-                                                            DOTDOT@[3187; 3189) ".."
-                                                            WHITESPACE@[3189; 3190) " "
-                                                            RANGE_EXPR@[3190; 3512)
-                                                              DOTDOT@[3190; 3192) ".."
-                                                              WHITESPACE@[3192; 3196) "    "
-                                                              RANGE_EXPR@[3196; 3512)
-                                                                DOTDOTEQ@[3196; 3199) "..="
-                                                                RANGE_EXPR@[3199; 3512)
-                                                                  DOTDOTEQ@[3199; 3202) "..="
-                                                                  RANGE_EXPR@[3202; 3512)
-                                                                    DOTDOTEQ@[3202; 3205) "..="
-                                                                    RANGE_EXPR@[3205; 3512)
-                                                                      DOTDOT@[3205; 3207) ".."
-                                                                      WHITESPACE@[3207; 3212) "\n    "
-                                                                      RANGE_EXPR@[3212; 3512)
-                                                                        DOTDOTEQ@[3212; 3215) "..="
-                                                                        RANGE_EXPR@[3215; 3512)
-                                                                          DOTDOT@[3215; 3217) ".."
-                                                                          WHITESPACE@[3217; 3218) " "
-                                                                          RANGE_EXPR@[3218; 3512)
-                                                                            DOTDOTEQ@[3218; 3221) "..="
-                                                                            RANGE_EXPR@[3221; 3512)
-                                                                              DOTDOT@[3221; 3223) ".."
-                                                                              WHITESPACE@[3223; 3227) "    "
-                                                                              RANGE_EXPR@[3227; 3512)
-                                                                                DOTDOTEQ@[3227; 3230) "..="
-                                                                                RANGE_EXPR@[3230; 3512)
-                                                                                  DOTDOT@[3230; 3232) ".."
-                                                                                  WHITESPACE@[3232; 3233) " "
-                                                                                  RANGE_EXPR@[3233; 3512)
-                                                                                    DOTDOTEQ@[3233; 3236) "..="
-                                                                                    RANGE_EXPR@[3236; 3512)
-                                                                                      DOTDOT@[3236; 3238) ".."
-                                                                                      WHITESPACE@[3238; 3242) "    "
-                                                                                      RANGE_EXPR@[3242; 3512)
-                                                                                        DOTDOT@[3242; 3244) ".."
-                                                                                        WHITESPACE@[3244; 3245) " "
-                                                                                        RANGE_EXPR@[3245; 3512)
-                                                                                          DOTDOTEQ@[3245; 3248) "..="
-                                                                                          RANGE_EXPR@[3248; 3512)
-                                                                                            DOTDOTEQ@[3248; 3251) "..="
-                                                                                            RANGE_EXPR@[3251; 3512)
-                                                                                              DOTDOT@[3251; 3253) ".."
-                                                                                              WHITESPACE@[3253; 3257) "    "
-                                                                                              RANGE_EXPR@[3257; 3512)
-                                                                                                DOTDOT@[3257; 3259) ".."
-                                                                                                WHITESPACE@[3259; 3260) " "
-                                                                                                RANGE_EXPR@[3260; 3512)
-                                                                                                  DOTDOTEQ@[3260; 3263) "..="
-                                                                                                  RANGE_EXPR@[3263; 3512)
-                                                                                                    DOTDOT@[3263; 3265) ".."
-                                                                                                    WHITESPACE@[3265; 3266) " "
-                                                                                                    RANGE_EXPR@[3266; 3512)
-                                                                                                      DOTDOT@[3266; 3268) ".."
-                                                                                                      WHITESPACE@[3268; 3273) "\n    "
-                                                                                                      RANGE_EXPR@[3273; 3512)
-                                                                                                        DOTDOTEQ@[3273; 3276) "..="
-                                                                                                        RANGE_EXPR@[3276; 3512)
-                                                                                                          DOTDOTEQ@[3276; 3279) "..="
-                                                                                                          RANGE_EXPR@[3279; 3512)
-                                                                                                            DOTDOT@[3279; 3281) ".."
-                                                                                                            WHITESPACE@[3281; 3282) " "
-                                                                                                            RANGE_EXPR@[3282; 3512)
-                                                                                                              DOTDOT@[3282; 3284) ".."
-                                                                                                              WHITESPACE@[3284; 3288) "    "
-                                                                                                              RANGE_EXPR@[3288; 3512)
-                                                                                                                DOTDOTEQ@[3288; 3291) "..="
-                                                                                                                RANGE_EXPR@[3291; 3512)
-                                                                                                                  DOTDOT@[3291; 3293) ".."
-                                                                                                                  WHITESPACE@[3293; 3294) " "
-                                                                                                                  RANGE_EXPR@[3294; 3512)
-                                                                                                                    DOTDOTEQ@[3294; 3297) "..="
-                                                                                                                    RANGE_EXPR@[3297; 3512)
-                                                                                                                      DOTDOT@[3297; 3299) ".."
-                                                                                                                      WHITESPACE@[3299; 3303) "    "
-                                                                                                                      RANGE_EXPR@[3303; 3512)
-                                                                                                                        DOTDOTEQ@[3303; 3306) "..="
-                                                                                                                        RANGE_EXPR@[3306; 3512)
-                                                                                                                          DOTDOT@[3306; 3308) ".."
-                                                                                                                          WHITESPACE@[3308; 3309) " "
-                                                                                                                          RANGE_EXPR@[3309; 3512)
-                                                                                                                            DOTDOT@[3309; 3311) ".."
-                                                                                                                            WHITESPACE@[3311; 3312) " "
-                                                                                                                            RANGE_EXPR@[3312; 3512)
-                                                                                                                              DOTDOT@[3312; 3314) ".."
-                                                                                                                              WHITESPACE@[3314; 3318) "    "
-                                                                                                                              RANGE_EXPR@[3318; 3512)
-                                                                                                                                DOTDOT@[3318; 3320) ".."
-                                                                                                                                WHITESPACE@[3320; 3321) " "
-                                                                                                                                RANGE_EXPR@[3321; 3512)
-                                                                                                                                  DOTDOTEQ@[3321; 3324) "..="
-                                                                                                                                  RANGE_EXPR@[3324; 3512)
-                                                                                                                                    DOTDOT@[3324; 3326) ".."
-                                                                                                                                    WHITESPACE@[3326; 3327) " "
-                                                                                                                                    RANGE_EXPR@[3327; 3512)
-                                                                                                                                      DOTDOT@[3327; 3329) ".."
-                                                                                                                                      WHITESPACE@[3329; 3334) "\n    "
-                                                                                                                                      RANGE_EXPR@[3334; 3512)
-                                                                                                                                        DOTDOTEQ@[3334; 3337) "..="
-                                                                                                                                        RANGE_EXPR@[3337; 3512)
-                                                                                                                                          DOTDOT@[3337; 3339) ".."
-                                                                                                                                          WHITESPACE@[3339; 3340) " "
-                                                                                                                                          RANGE_EXPR@[3340; 3512)
-                                                                                                                                            DOTDOTEQ@[3340; 3343) "..="
-                                                                                                                                            RANGE_EXPR@[3343; 3512)
-                                                                                                                                              DOTDOT@[3343; 3345) ".."
-                                                                                                                                              WHITESPACE@[3345; 3349) "    "
-                                                                                                                                              RANGE_EXPR@[3349; 3512)
-                                                                                                                                                DOTDOTEQ@[3349; 3352) "..="
-                                                                                                                                                RANGE_EXPR@[3352; 3512)
-                                                                                                                                                  DOTDOT@[3352; 3354) ".."
-                                                                                                                                                  WHITESPACE@[3354; 3355) " "
-                                                                                                                                                  RANGE_EXPR@[3355; 3512)
-                                                                                                                                                    DOTDOTEQ@[3355; 3358) "..="
-                                                                                                                                                    RANGE_EXPR@[3358; 3512)
-                                                                                                                                                      DOTDOT@[3358; 3360) ".."
-                                                                                                                                                      WHITESPACE@[3360; 3364) "    "
-                                                                                                                                                      RANGE_EXPR@[3364; 3512)
-                                                                                                                                                        DOTDOT@[3364; 3366) ".."
-                                                                                                                                                        WHITESPACE@[3366; 3367) " "
-                                                                                                                                                        RANGE_EXPR@[3367; 3512)
-                                                                                                                                                          DOTDOTEQ@[3367; 3370) "..="
-                                                                                                                                                          RANGE_EXPR@[3370; 3512)
-                                                                                                                                                            DOTDOT@[3370; 3372) ".."
-                                                                                                                                                            WHITESPACE@[3372; 3373) " "
-                                                                                                                                                            RANGE_EXPR@[3373; 3512)
-                                                                                                                                                              DOTDOT@[3373; 3375) ".."
-                                                                                                                                                              WHITESPACE@[3375; 3379) "    "
-                                                                                                                                                              RANGE_EXPR@[3379; 3512)
-                                                                                                                                                                DOTDOT@[3379; 3381) ".."
-                                                                                                                                                                WHITESPACE@[3381; 3382) " "
-                                                                                                                                                                RANGE_EXPR@[3382; 3512)
-                                                                                                                                                                  DOTDOTEQ@[3382; 3385) "..="
-                                                                                                                                                                  RANGE_EXPR@[3385; 3512)
-                                                                                                                                                                    DOTDOT@[3385; 3387) ".."
-                                                                                                                                                                    WHITESPACE@[3387; 3388) " "
-                                                                                                                                                                    RANGE_EXPR@[3388; 3512)
-                                                                                                                                                                      DOTDOT@[3388; 3390) ".."
-                                                                                                                                                                      WHITESPACE@[3390; 3395) "\n    "
-                                                                                                                                                                      RANGE_EXPR@[3395; 3512)
-                                                                                                                                                                        DOTDOTEQ@[3395; 3398) "..="
-                                                                                                                                                                        RANGE_EXPR@[3398; 3512)
-                                                                                                                                                                          DOTDOT@[3398; 3400) ".."
-                                                                                                                                                                          WHITESPACE@[3400; 3401) " "
-                                                                                                                                                                          RANGE_EXPR@[3401; 3512)
-                                                                                                                                                                            DOTDOTEQ@[3401; 3404) "..="
-                                                                                                                                                                            RANGE_EXPR@[3404; 3512)
-                                                                                                                                                                              DOTDOT@[3404; 3406) ".."
-                                                                                                                                                                              WHITESPACE@[3406; 3410) "    "
-                                                                                                                                                                              RANGE_EXPR@[3410; 3512)
-                                                                                                                                                                                DOTDOTEQ@[3410; 3413) "..="
-                                                                                                                                                                                RANGE_EXPR@[3413; 3512)
-                                                                                                                                                                                  DOTDOT@[3413; 3415) ".."
-                                                                                                                                                                                  WHITESPACE@[3415; 3416) " "
-                                                                                                                                                                                  RANGE_EXPR@[3416; 3512)
-                                                                                                                                                                                    DOTDOTEQ@[3416; 3419) "..="
-                                                                                                                                                                                    RANGE_EXPR@[3419; 3512)
-                                                                                                                                                                                      DOTDOT@[3419; 3421) ".."
-                                                                                                                                                                                      WHITESPACE@[3421; 3425) "    "
-                                                                                                                                                                                      RANGE_EXPR@[3425; 3512)
-                                                                                                                                                                                        DOTDOT@[3425; 3427) ".."
-                                                                                                                                                                                        WHITESPACE@[3427; 3428) " "
-                                                                                                                                                                                        RANGE_EXPR@[3428; 3512)
-                                                                                                                                                                                          DOTDOT@[3428; 3430) ".."
-                                                                                                                                                                                          WHITESPACE@[3430; 3431) " "
-                                                                                                                                                                                          RANGE_EXPR@[3431; 3512)
-                                                                                                                                                                                            DOTDOTEQ@[3431; 3434) "..="
-                                                                                                                                                                                            RANGE_EXPR@[3434; 3512)
-                                                                                                                                                                                              DOTDOT@[3434; 3436) ".."
-                                                                                                                                                                                              WHITESPACE@[3436; 3440) "    "
-                                                                                                                                                                                              RANGE_EXPR@[3440; 3512)
-                                                                                                                                                                                                DOTDOT@[3440; 3442) ".."
-                                                                                                                                                                                                WHITESPACE@[3442; 3443) " "
-                                                                                                                                                                                                RANGE_EXPR@[3443; 3512)
-                                                                                                                                                                                                  DOTDOTEQ@[3443; 3446) "..="
-                                                                                                                                                                                                  RANGE_EXPR@[3446; 3512)
-                                                                                                                                                                                                    DOTDOT@[3446; 3448) ".."
-                                                                                                                                                                                                    WHITESPACE@[3448; 3449) " "
-                                                                                                                                                                                                    RANGE_EXPR@[3449; 3512)
-                                                                                                                                                                                                      DOTDOT@[3449; 3451) ".."
-                                                                                                                                                                                                      WHITESPACE@[3451; 3456) "\n    "
-                                                                                                                                                                                                      RANGE_EXPR@[3456; 3512)
-                                                                                                                                                                                                        DOTDOTEQ@[3456; 3459) "..="
-                                                                                                                                                                                                        RANGE_EXPR@[3459; 3512)
-                                                                                                                                                                                                          DOTDOT@[3459; 3461) ".."
-                                                                                                                                                                                                          WHITESPACE@[3461; 3462) " "
-                                                                                                                                                                                                          RANGE_EXPR@[3462; 3512)
-                                                                                                                                                                                                            DOTDOTEQ@[3462; 3465) "..="
-                                                                                                                                                                                                            RANGE_EXPR@[3465; 3512)
-                                                                                                                                                                                                              DOTDOT@[3465; 3467) ".."
-                                                                                                                                                                                                              WHITESPACE@[3467; 3471) "    "
-                                                                                                                                                                                                              RANGE_EXPR@[3471; 3512)
-                                                                                                                                                                                                                DOTDOT@[3471; 3473) ".."
-                                                                                                                                                                                                                WHITESPACE@[3473; 3474) " "
-                                                                                                                                                                                                                RANGE_EXPR@[3474; 3512)
-                                                                                                                                                                                                                  DOTDOTEQ@[3474; 3477) "..="
-                                                                                                                                                                                                                  RANGE_EXPR@[3477; 3512)
-                                                                                                                                                                                                                    DOTDOTEQ@[3477; 3480) "..="
-                                                                                                                                                                                                                    RANGE_EXPR@[3480; 3512)
-                                                                                                                                                                                                                      DOTDOT@[3480; 3482) ".."
-                                                                                                                                                                                                                      WHITESPACE@[3482; 3486) "    "
-                                                                                                                                                                                                                      RANGE_EXPR@[3486; 3512)
-                                                                                                                                                                                                                        DOTDOTEQ@[3486; 3489) "..="
-                                                                                                                                                                                                                        RANGE_EXPR@[3489; 3512)
-                                                                                                                                                                                                                          DOTDOTEQ@[3489; 3492) "..="
-                                                                                                                                                                                                                          RANGE_EXPR@[3492; 3512)
-                                                                                                                                                                                                                            DOTDOT@[3492; 3494) ".."
-                                                                                                                                                                                                                            WHITESPACE@[3494; 3495) " "
-                                                                                                                                                                                                                            RANGE_EXPR@[3495; 3512)
-                                                                                                                                                                                                                              DOTDOT@[3495; 3497) ".."
-                                                                                                                                                                                                                              WHITESPACE@[3497; 3501) "    "
-                                                                                                                                                                                                                              RANGE_EXPR@[3501; 3512)
-                                                                                                                                                                                                                                DOTDOT@[3501; 3503) ".."
-                                                                                                                                                                                                                                WHITESPACE@[3503; 3504) " "
-                                                                                                                                                                                                                                RANGE_EXPR@[3504; 3512)
-                                                                                                                                                                                                                                  DOTDOTEQ@[3504; 3507) "..="
-                                                                                                                                                                                                                                  RANGE_EXPR@[3507; 3512)
-                                                                                                                                                                                                                                    DOTDOT@[3507; 3509) ".."
-                                                                                                                                                                                                                                    WHITESPACE@[3509; 3510) " "
-                                                                                                                                                                                                                                    RANGE_EXPR@[3510; 3512)
-                                                                                                                                                                                                                                      DOTDOT@[3510; 3512) ".."
-      WHITESPACE@[3512; 3513) "\n"
-      R_CURLY@[3513; 3514) "}"
-  WHITESPACE@[3514; 3516) "\n\n"
-  FN_DEF@[3516; 3552)
-    FN_KW@[3516; 3518) "fn"
-    WHITESPACE@[3518; 3519) " "
-    NAME@[3519; 3525)
-      IDENT@[3519; 3525) "ktulhu"
-    PARAM_LIST@[3525; 3527)
-      L_PAREN@[3525; 3526) "("
-      R_PAREN@[3526; 3527) ")"
-    WHITESPACE@[3527; 3528) " "
-    BLOCK@[3528; 3552)
-      L_CURLY@[3528; 3529) "{"
-      WHITESPACE@[3529; 3534) "\n    "
-      SEMI@[3534; 3535) ";"
-      SEMI@[3535; 3536) ";"
-      SEMI@[3536; 3537) ";"
-      EXPR_STMT@[3537; 3540)
-        TUPLE_EXPR@[3537; 3539)
-          L_PAREN@[3537; 3538) "("
-          R_PAREN@[3538; 3539) ")"
-        SEMI@[3539; 3540) ";"
-      SEMI@[3540; 3541) ";"
-      SEMI@[3541; 3542) ";"
-      SEMI@[3542; 3543) ";"
-      SEMI@[3543; 3544) ";"
-      SEMI@[3544; 3545) ";"
-      SEMI@[3545; 3546) ";"
-      SEMI@[3546; 3547) ";"
-      SEMI@[3547; 3548) ";"
-      TUPLE_EXPR@[3548; 3550)
-        L_PAREN@[3548; 3549) "("
-        R_PAREN@[3549; 3550) ")"
-      WHITESPACE@[3550; 3551) "\n"
-      R_CURLY@[3551; 3552) "}"
-  WHITESPACE@[3552; 3554) "\n\n"
-  FN_DEF@[3554; 3812)
-    VISIBILITY@[3554; 3557)
-      PUB_KW@[3554; 3557) "pub"
-    WHITESPACE@[3557; 3558) " "
-    FN_KW@[3558; 3560) "fn"
-    WHITESPACE@[3560; 3561) " "
-    NAME@[3561; 3565)
-      IDENT@[3561; 3565) "main"
-    PARAM_LIST@[3565; 3567)
-      L_PAREN@[3565; 3566) "("
-      R_PAREN@[3566; 3567) ")"
-    WHITESPACE@[3567; 3568) " "
-    BLOCK@[3568; 3812)
-      L_CURLY@[3568; 3569) "{"
-      WHITESPACE@[3569; 3574) "\n    "
-      EXPR_STMT@[3574; 3584)
-        CALL_EXPR@[3574; 3583)
-          PATH_EXPR@[3574; 3581)
-            PATH@[3574; 3581)
-              PATH_SEGMENT@[3574; 3581)
-                NAME_REF@[3574; 3581)
-                  IDENT@[3574; 3581) "strange"
-          ARG_LIST@[3581; 3583)
-            L_PAREN@[3581; 3582) "("
-            R_PAREN@[3582; 3583) ")"
-        SEMI@[3583; 3584) ";"
-      WHITESPACE@[3584; 3589) "\n    "
-      EXPR_STMT@[3589; 3597)
-        CALL_EXPR@[3589; 3596)
-          PATH_EXPR@[3589; 3594)
-            PATH@[3589; 3594)
-              PATH_SEGMENT@[3589; 3594)
-                NAME_REF@[3589; 3594)
-                  IDENT@[3589; 3594) "funny"
-          ARG_LIST@[3594; 3596)
-            L_PAREN@[3594; 3595) "("
-            R_PAREN@[3595; 3596) ")"
-        SEMI@[3596; 3597) ";"
-      WHITESPACE@[3597; 3602) "\n    "
-      EXPR_STMT@[3602; 3609)
-        CALL_EXPR@[3602; 3608)
-          PATH_EXPR@[3602; 3606)
-            PATH@[3602; 3606)
-              PATH_SEGMENT@[3602; 3606)
-                NAME_REF@[3602; 3606)
-                  IDENT@[3602; 3606) "what"
-          ARG_LIST@[3606; 3608)
-            L_PAREN@[3606; 3607) "("
-            R_PAREN@[3607; 3608) ")"
-        SEMI@[3608; 3609) ";"
-      WHITESPACE@[3609; 3614) "\n    "
-      EXPR_STMT@[3614; 3628)
-        CALL_EXPR@[3614; 3627)
-          PATH_EXPR@[3614; 3625)
-            PATH@[3614; 3625)
-              PATH_SEGMENT@[3614; 3625)
-                NAME_REF@[3614; 3625)
-                  IDENT@[3614; 3625) "zombiejesus"
-          ARG_LIST@[3625; 3627)
-            L_PAREN@[3625; 3626) "("
-            R_PAREN@[3626; 3627) ")"
-        SEMI@[3627; 3628) ";"
-      WHITESPACE@[3628; 3633) "\n    "
-      EXPR_STMT@[3633; 3643)
-        CALL_EXPR@[3633; 3642)
-          PATH_EXPR@[3633; 3640)
-            PATH@[3633; 3640)
-              PATH_SEGMENT@[3633; 3640)
-                NAME_REF@[3633; 3640)
-                  IDENT@[3633; 3640) "notsure"
-          ARG_LIST@[3640; 3642)
-            L_PAREN@[3640; 3641) "("
-            R_PAREN@[3641; 3642) ")"
-        SEMI@[3642; 3643) ";"
-      WHITESPACE@[3643; 3648) "\n    "
-      EXPR_STMT@[3648; 3664)
-        CALL_EXPR@[3648; 3663)
-          PATH_EXPR@[3648; 3661)
-            PATH@[3648; 3661)
-              PATH_SEGMENT@[3648; 3661)
-                NAME_REF@[3648; 3661)
-                  IDENT@[3648; 3661) "canttouchthis"
-          ARG_LIST@[3661; 3663)
-            L_PAREN@[3661; 3662) "("
-            R_PAREN@[3662; 3663) ")"
-        SEMI@[3663; 3664) ";"
-      WHITESPACE@[3664; 3669) "\n    "
-      EXPR_STMT@[3669; 3681)
-        CALL_EXPR@[3669; 3680)
-          PATH_EXPR@[3669; 3678)
-            PATH@[3669; 3678)
-              PATH_SEGMENT@[3669; 3678)
-                NAME_REF@[3669; 3678)
-                  IDENT@[3669; 3678) "angrydome"
-          ARG_LIST@[3678; 3680)
-            L_PAREN@[3678; 3679) "("
-            R_PAREN@[3679; 3680) ")"
-        SEMI@[3680; 3681) ";"
-      WHITESPACE@[3681; 3686) "\n    "
-      EXPR_STMT@[3686; 3701)
-        CALL_EXPR@[3686; 3700)
-          PATH_EXPR@[3686; 3698)
-            PATH@[3686; 3698)
-              PATH_SEGMENT@[3686; 3698)
-                NAME_REF@[3686; 3698)
-                  IDENT@[3686; 3698) "evil_lincoln"
-          ARG_LIST@[3698; 3700)
-            L_PAREN@[3698; 3699) "("
-            R_PAREN@[3699; 3700) ")"
-        SEMI@[3700; 3701) ";"
-      WHITESPACE@[3701; 3706) "\n    "
-      EXPR_STMT@[3706; 3713)
-        CALL_EXPR@[3706; 3712)
-          PATH_EXPR@[3706; 3710)
-            PATH@[3706; 3710)
-              PATH_SEGMENT@[3706; 3710)
-                NAME_REF@[3706; 3710)
-                  IDENT@[3706; 3710) "dots"
-          ARG_LIST@[3710; 3712)
-            L_PAREN@[3710; 3711) "("
-            R_PAREN@[3711; 3712) ")"
-        SEMI@[3712; 3713) ";"
-      WHITESPACE@[3713; 3718) "\n    "
-      EXPR_STMT@[3718; 3726)
-        CALL_EXPR@[3718; 3725)
-          PATH_EXPR@[3718; 3720)
-            PATH@[3718; 3720)
-              PATH_SEGMENT@[3718; 3720)
-                NAME_REF@[3718; 3720)
-                  IDENT@[3718; 3720) "u8"
-          ARG_LIST@[3720; 3725)
-            L_PAREN@[3720; 3721) "("
-            LITERAL@[3721; 3724)
-              INT_NUMBER@[3721; 3724) "8u8"
-            R_PAREN@[3724; 3725) ")"
-        SEMI@[3725; 3726) ";"
-      WHITESPACE@[3726; 3731) "\n    "
-      EXPR_STMT@[3731; 3739)
-        CALL_EXPR@[3731; 3738)
-          PATH_EXPR@[3731; 3736)
-            PATH@[3731; 3736)
-              PATH_SEGMENT@[3731; 3736)
-                NAME_REF@[3731; 3736)
-                  IDENT@[3731; 3736) "fishy"
-          ARG_LIST@[3736; 3738)
-            L_PAREN@[3736; 3737) "("
-            R_PAREN@[3737; 3738) ")"
-        SEMI@[3738; 3739) ";"
-      WHITESPACE@[3739; 3744) "\n    "
-      EXPR_STMT@[3744; 3752)
-        CALL_EXPR@[3744; 3751)
-          PATH_EXPR@[3744; 3749)
-            PATH@[3744; 3749)
-              PATH_SEGMENT@[3744; 3749)
-                NAME_REF@[3744; 3749)
-                  IDENT@[3744; 3749) "union"
-          ARG_LIST@[3749; 3751)
-            L_PAREN@[3749; 3750) "("
-            R_PAREN@[3750; 3751) ")"
-        SEMI@[3751; 3752) ";"
-      WHITESPACE@[3752; 3757) "\n    "
-      EXPR_STMT@[3757; 3778)
-        CALL_EXPR@[3757; 3777)
-          PATH_EXPR@[3757; 3775)
-            PATH@[3757; 3775)
-              PATH_SEGMENT@[3757; 3775)
-                NAME_REF@[3757; 3775)
-                  IDENT@[3757; 3775) "special_characters"
-          ARG_LIST@[3775; 3777)
-            L_PAREN@[3775; 3776) "("
-            R_PAREN@[3776; 3777) ")"
-        SEMI@[3777; 3778) ";"
-      WHITESPACE@[3778; 3783) "\n    "
-      EXPR_STMT@[3783; 3796)
-        CALL_EXPR@[3783; 3795)
-          PATH_EXPR@[3783; 3793)
-            PATH@[3783; 3793)
-              PATH_SEGMENT@[3783; 3793)
-                NAME_REF@[3783; 3793)
-                  IDENT@[3783; 3793) "punch_card"
-          ARG_LIST@[3793; 3795)
-            L_PAREN@[3793; 3794) "("
-            R_PAREN@[3794; 3795) ")"
-        SEMI@[3795; 3796) ";"
-      WHITESPACE@[3796; 3801) "\n    "
-      EXPR_STMT@[3801; 3810)
-        CALL_EXPR@[3801; 3809)
-          PATH_EXPR@[3801; 3807)
-            PATH@[3801; 3807)
-              PATH_SEGMENT@[3801; 3807)
-                NAME_REF@[3801; 3807)
-                  IDENT@[3801; 3807) "ktulhu"
-          ARG_LIST@[3807; 3809)
-            L_PAREN@[3807; 3808) "("
-            R_PAREN@[3808; 3809) ")"
-        SEMI@[3809; 3810) ";"
-      WHITESPACE@[3810; 3811) "\n"
-      R_CURLY@[3811; 3812) "}"
-  WHITESPACE@[3812; 3813) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.rs b/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.rs
deleted file mode 100644 (file)
index 6da2793..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// https://github.com/rust-analyzer/rust-analyzer/issues/311
-
-pub fn foo<S: Iterator>() -> String
-where
-    <S as Iterator>::Item: Eq,
-{
-    "".to_owned()
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt b/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt
deleted file mode 100644 (file)
index 86263c0..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-SOURCE_FILE@[0; 157)
-  COMMENT@[0; 60) "// https://github.com ..."
-  WHITESPACE@[60; 62) "\n\n"
-  FN_DEF@[62; 156)
-    VISIBILITY@[62; 65)
-      PUB_KW@[62; 65) "pub"
-    WHITESPACE@[65; 66) " "
-    FN_KW@[66; 68) "fn"
-    WHITESPACE@[68; 69) " "
-    NAME@[69; 72)
-      IDENT@[69; 72) "foo"
-    TYPE_PARAM_LIST@[72; 85)
-      L_ANGLE@[72; 73) "<"
-      TYPE_PARAM@[73; 84)
-        NAME@[73; 74)
-          IDENT@[73; 74) "S"
-        COLON@[74; 75) ":"
-        WHITESPACE@[75; 76) " "
-        TYPE_BOUND_LIST@[76; 84)
-          TYPE_BOUND@[76; 84)
-            PATH_TYPE@[76; 84)
-              PATH@[76; 84)
-                PATH_SEGMENT@[76; 84)
-                  NAME_REF@[76; 84)
-                    IDENT@[76; 84) "Iterator"
-      R_ANGLE@[84; 85) ">"
-    PARAM_LIST@[85; 87)
-      L_PAREN@[85; 86) "("
-      R_PAREN@[86; 87) ")"
-    WHITESPACE@[87; 88) " "
-    RET_TYPE@[88; 97)
-      THIN_ARROW@[88; 90) "->"
-      WHITESPACE@[90; 91) " "
-      PATH_TYPE@[91; 97)
-        PATH@[91; 97)
-          PATH_SEGMENT@[91; 97)
-            NAME_REF@[91; 97)
-              IDENT@[91; 97) "String"
-    WHITESPACE@[97; 98) "\n"
-    WHERE_CLAUSE@[98; 134)
-      WHERE_KW@[98; 103) "where"
-      WHITESPACE@[103; 108) "\n    "
-      WHERE_PRED@[108; 133)
-        PATH_TYPE@[108; 129)
-          PATH@[108; 129)
-            PATH@[108; 123)
-              PATH_SEGMENT@[108; 123)
-                L_ANGLE@[108; 109) "<"
-                PATH_TYPE@[109; 110)
-                  PATH@[109; 110)
-                    PATH_SEGMENT@[109; 110)
-                      NAME_REF@[109; 110)
-                        IDENT@[109; 110) "S"
-                WHITESPACE@[110; 111) " "
-                AS_KW@[111; 113) "as"
-                WHITESPACE@[113; 114) " "
-                PATH_TYPE@[114; 122)
-                  PATH@[114; 122)
-                    PATH_SEGMENT@[114; 122)
-                      NAME_REF@[114; 122)
-                        IDENT@[114; 122) "Iterator"
-                R_ANGLE@[122; 123) ">"
-            COLONCOLON@[123; 125) "::"
-            PATH_SEGMENT@[125; 129)
-              NAME_REF@[125; 129)
-                IDENT@[125; 129) "Item"
-        COLON@[129; 130) ":"
-        WHITESPACE@[130; 131) " "
-        TYPE_BOUND_LIST@[131; 133)
-          TYPE_BOUND@[131; 133)
-            PATH_TYPE@[131; 133)
-              PATH@[131; 133)
-                PATH_SEGMENT@[131; 133)
-                  NAME_REF@[131; 133)
-                    IDENT@[131; 133) "Eq"
-      COMMA@[133; 134) ","
-    WHITESPACE@[134; 135) "\n"
-    BLOCK@[135; 156)
-      L_CURLY@[135; 136) "{"
-      WHITESPACE@[136; 141) "\n    "
-      METHOD_CALL_EXPR@[141; 154)
-        LITERAL@[141; 143)
-          STRING@[141; 143) "\"\""
-        DOT@[143; 144) "."
-        NAME_REF@[144; 152)
-          IDENT@[144; 152) "to_owned"
-        ARG_LIST@[152; 154)
-          L_PAREN@[152; 153) "("
-          R_PAREN@[153; 154) ")"
-      WHITESPACE@[154; 155) "\n"
-      R_CURLY@[155; 156) "}"
-  WHITESPACE@[156; 157) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0037_mod.rs b/crates/ra_syntax/tests/data/parser/ok/0037_mod.rs
deleted file mode 100644 (file)
index 7e5a1b8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// https://github.com/rust-analyzer/rust-analyzer/issues/357
-
-//! docs
-// non-docs
-mod foo {}
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/ok/0037_mod.txt b/crates/ra_syntax/tests/data/parser/ok/0037_mod.txt
deleted file mode 100644 (file)
index 3af40a1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SOURCE_FILE@[0; 93)
-  COMMENT@[0; 60) "// https://github.com ..."
-  WHITESPACE@[60; 62) "\n\n"
-  MODULE@[62; 93)
-    COMMENT@[62; 70) "//! docs"
-    WHITESPACE@[70; 71) "\n"
-    COMMENT@[71; 82) "// non-docs"
-    WHITESPACE@[82; 83) "\n"
-    MOD_KW@[83; 86) "mod"
-    WHITESPACE@[86; 87) " "
-    NAME@[87; 90)
-      IDENT@[87; 90) "foo"
-    WHITESPACE@[90; 91) " "
-    ITEM_LIST@[91; 93)
-      L_CURLY@[91; 92) "{"
-      R_CURLY@[92; 93) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.rs b/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.rs
deleted file mode 100644 (file)
index 8bfc341..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn test() where (u64, u64): Foo {}
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt b/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt
deleted file mode 100644 (file)
index 7a55074..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCE_FILE@[0; 34)
-  FN_DEF@[0; 34)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 7)
-      IDENT@[3; 7) "test"
-    PARAM_LIST@[7; 9)
-      L_PAREN@[7; 8) "("
-      R_PAREN@[8; 9) ")"
-    WHITESPACE@[9; 10) " "
-    WHERE_CLAUSE@[10; 31)
-      WHERE_KW@[10; 15) "where"
-      WHITESPACE@[15; 16) " "
-      WHERE_PRED@[16; 31)
-        TUPLE_TYPE@[16; 26)
-          L_PAREN@[16; 17) "("
-          PATH_TYPE@[17; 20)
-            PATH@[17; 20)
-              PATH_SEGMENT@[17; 20)
-                NAME_REF@[17; 20)
-                  IDENT@[17; 20) "u64"
-          COMMA@[20; 21) ","
-          WHITESPACE@[21; 22) " "
-          PATH_TYPE@[22; 25)
-            PATH@[22; 25)
-              PATH_SEGMENT@[22; 25)
-                NAME_REF@[22; 25)
-                  IDENT@[22; 25) "u64"
-          R_PAREN@[25; 26) ")"
-        COLON@[26; 27) ":"
-        WHITESPACE@[27; 28) " "
-        TYPE_BOUND_LIST@[28; 31)
-          TYPE_BOUND@[28; 31)
-            PATH_TYPE@[28; 31)
-              PATH@[28; 31)
-                PATH_SEGMENT@[28; 31)
-                  NAME_REF@[28; 31)
-                    IDENT@[28; 31) "Foo"
-    WHITESPACE@[31; 32) " "
-    BLOCK@[32; 34)
-      L_CURLY@[32; 33) "{"
-      R_CURLY@[33; 34) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.rs b/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.rs
deleted file mode 100644 (file)
index 8380d1e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-fn r#foo() {
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt b/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt
deleted file mode 100644 (file)
index 69fac87..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-SOURCE_FILE@[0; 15)
-  FN_DEF@[0; 14)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 8)
-      IDENT@[3; 8) "r#foo"
-    PARAM_LIST@[8; 10)
-      L_PAREN@[8; 9) "("
-      R_PAREN@[9; 10) ")"
-    WHITESPACE@[10; 11) " "
-    BLOCK@[11; 14)
-      L_CURLY@[11; 12) "{"
-      WHITESPACE@[12; 13) "\n"
-      R_CURLY@[13; 14) "}"
-  WHITESPACE@[14; 15) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.rs b/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.rs
deleted file mode 100644 (file)
index 098a60a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-struct S {
-    r#foo: u32
-}
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt b/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt
deleted file mode 100644 (file)
index 3c71755..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCE_FILE@[0; 27)
-  STRUCT_DEF@[0; 27)
-    STRUCT_KW@[0; 6) "struct"
-    WHITESPACE@[6; 7) " "
-    NAME@[7; 8)
-      IDENT@[7; 8) "S"
-    WHITESPACE@[8; 9) " "
-    NAMED_FIELD_DEF_LIST@[9; 27)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      NAMED_FIELD_DEF@[15; 25)
-        NAME@[15; 20)
-          IDENT@[15; 20) "r#foo"
-        COLON@[20; 21) ":"
-        WHITESPACE@[21; 22) " "
-        PATH_TYPE@[22; 25)
-          PATH@[22; 25)
-            PATH_SEGMENT@[22; 25)
-              NAME_REF@[22; 25)
-                IDENT@[22; 25) "u32"
-      WHITESPACE@[25; 26) "\n"
-      R_CURLY@[26; 27) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.rs b/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.rs
deleted file mode 100644 (file)
index d59a6d3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fn foo() { let r#struct = 92; let r#trait = r#struct * 2; }
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt b/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt
deleted file mode 100644 (file)
index 554b52f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-SOURCE_FILE@[0; 59)
-  FN_DEF@[0; 59)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 59)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 11) " "
-      LET_STMT@[11; 29)
-        LET_KW@[11; 14) "let"
-        WHITESPACE@[14; 15) " "
-        BIND_PAT@[15; 23)
-          NAME@[15; 23)
-            IDENT@[15; 23) "r#struct"
-        WHITESPACE@[23; 24) " "
-        EQ@[24; 25) "="
-        WHITESPACE@[25; 26) " "
-        LITERAL@[26; 28)
-          INT_NUMBER@[26; 28) "92"
-        SEMI@[28; 29) ";"
-      WHITESPACE@[29; 30) " "
-      LET_STMT@[30; 57)
-        LET_KW@[30; 33) "let"
-        WHITESPACE@[33; 34) " "
-        BIND_PAT@[34; 41)
-          NAME@[34; 41)
-            IDENT@[34; 41) "r#trait"
-        WHITESPACE@[41; 42) " "
-        EQ@[42; 43) "="
-        WHITESPACE@[43; 44) " "
-        BIN_EXPR@[44; 56)
-          PATH_EXPR@[44; 52)
-            PATH@[44; 52)
-              PATH_SEGMENT@[44; 52)
-                NAME_REF@[44; 52)
-                  IDENT@[44; 52) "r#struct"
-          WHITESPACE@[52; 53) " "
-          STAR@[53; 54) "*"
-          WHITESPACE@[54; 55) " "
-          LITERAL@[55; 56)
-            INT_NUMBER@[55; 56) "2"
-        SEMI@[56; 57) ";"
-      WHITESPACE@[57; 58) " "
-      R_CURLY@[58; 59) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.rs b/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.rs
deleted file mode 100644 (file)
index 6c02e65..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// https://github.com/rust-analyzer/rust-analyzer/issues/596
-
-struct Foo;
-
-impl Foo {
-    fn bar() -> bool {
-        unimplemented!()
-    }
-}
-
-fn baz(_: bool) {}
-
-fn main() {
-    baz(<Foo>::bar())
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt b/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt
deleted file mode 100644 (file)
index 1995101..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-SOURCE_FILE@[0; 199)
-  COMMENT@[0; 60) "// https://github.com ..."
-  WHITESPACE@[60; 62) "\n\n"
-  STRUCT_DEF@[62; 73)
-    STRUCT_KW@[62; 68) "struct"
-    WHITESPACE@[68; 69) " "
-    NAME@[69; 72)
-      IDENT@[69; 72) "Foo"
-    SEMI@[72; 73) ";"
-  WHITESPACE@[73; 75) "\n\n"
-  IMPL_BLOCK@[75; 141)
-    IMPL_KW@[75; 79) "impl"
-    WHITESPACE@[79; 80) " "
-    PATH_TYPE@[80; 83)
-      PATH@[80; 83)
-        PATH_SEGMENT@[80; 83)
-          NAME_REF@[80; 83)
-            IDENT@[80; 83) "Foo"
-    WHITESPACE@[83; 84) " "
-    ITEM_LIST@[84; 141)
-      L_CURLY@[84; 85) "{"
-      WHITESPACE@[85; 90) "\n    "
-      FN_DEF@[90; 139)
-        FN_KW@[90; 92) "fn"
-        WHITESPACE@[92; 93) " "
-        NAME@[93; 96)
-          IDENT@[93; 96) "bar"
-        PARAM_LIST@[96; 98)
-          L_PAREN@[96; 97) "("
-          R_PAREN@[97; 98) ")"
-        WHITESPACE@[98; 99) " "
-        RET_TYPE@[99; 106)
-          THIN_ARROW@[99; 101) "->"
-          WHITESPACE@[101; 102) " "
-          PATH_TYPE@[102; 106)
-            PATH@[102; 106)
-              PATH_SEGMENT@[102; 106)
-                NAME_REF@[102; 106)
-                  IDENT@[102; 106) "bool"
-        WHITESPACE@[106; 107) " "
-        BLOCK@[107; 139)
-          L_CURLY@[107; 108) "{"
-          WHITESPACE@[108; 117) "\n        "
-          MACRO_CALL@[117; 133)
-            PATH@[117; 130)
-              PATH_SEGMENT@[117; 130)
-                NAME_REF@[117; 130)
-                  IDENT@[117; 130) "unimplemented"
-            EXCL@[130; 131) "!"
-            TOKEN_TREE@[131; 133)
-              L_PAREN@[131; 132) "("
-              R_PAREN@[132; 133) ")"
-          WHITESPACE@[133; 138) "\n    "
-          R_CURLY@[138; 139) "}"
-      WHITESPACE@[139; 140) "\n"
-      R_CURLY@[140; 141) "}"
-  WHITESPACE@[141; 143) "\n\n"
-  FN_DEF@[143; 161)
-    FN_KW@[143; 145) "fn"
-    WHITESPACE@[145; 146) " "
-    NAME@[146; 149)
-      IDENT@[146; 149) "baz"
-    PARAM_LIST@[149; 158)
-      L_PAREN@[149; 150) "("
-      PARAM@[150; 157)
-        PLACEHOLDER_PAT@[150; 151)
-          UNDERSCORE@[150; 151) "_"
-        COLON@[151; 152) ":"
-        WHITESPACE@[152; 153) " "
-        PATH_TYPE@[153; 157)
-          PATH@[153; 157)
-            PATH_SEGMENT@[153; 157)
-              NAME_REF@[153; 157)
-                IDENT@[153; 157) "bool"
-      R_PAREN@[157; 158) ")"
-    WHITESPACE@[158; 159) " "
-    BLOCK@[159; 161)
-      L_CURLY@[159; 160) "{"
-      R_CURLY@[160; 161) "}"
-  WHITESPACE@[161; 163) "\n\n"
-  FN_DEF@[163; 198)
-    FN_KW@[163; 165) "fn"
-    WHITESPACE@[165; 166) " "
-    NAME@[166; 170)
-      IDENT@[166; 170) "main"
-    PARAM_LIST@[170; 172)
-      L_PAREN@[170; 171) "("
-      R_PAREN@[171; 172) ")"
-    WHITESPACE@[172; 173) " "
-    BLOCK@[173; 198)
-      L_CURLY@[173; 174) "{"
-      WHITESPACE@[174; 179) "\n    "
-      CALL_EXPR@[179; 196)
-        PATH_EXPR@[179; 182)
-          PATH@[179; 182)
-            PATH_SEGMENT@[179; 182)
-              NAME_REF@[179; 182)
-                IDENT@[179; 182) "baz"
-        ARG_LIST@[182; 196)
-          L_PAREN@[182; 183) "("
-          CALL_EXPR@[183; 195)
-            PATH_EXPR@[183; 193)
-              PATH@[183; 193)
-                PATH@[183; 188)
-                  PATH_SEGMENT@[183; 188)
-                    L_ANGLE@[183; 184) "<"
-                    PATH_TYPE@[184; 187)
-                      PATH@[184; 187)
-                        PATH_SEGMENT@[184; 187)
-                          NAME_REF@[184; 187)
-                            IDENT@[184; 187) "Foo"
-                    R_ANGLE@[187; 188) ">"
-                COLONCOLON@[188; 190) "::"
-                PATH_SEGMENT@[190; 193)
-                  NAME_REF@[190; 193)
-                    IDENT@[190; 193) "bar"
-            ARG_LIST@[193; 195)
-              L_PAREN@[193; 194) "("
-              R_PAREN@[194; 195) ")"
-          R_PAREN@[195; 196) ")"
-      WHITESPACE@[196; 197) "\n"
-      R_CURLY@[197; 198) "}"
-  WHITESPACE@[198; 199) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.rs b/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.rs
deleted file mode 100644 (file)
index 7e4a28b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// https://github.com/rust-analyzer/rust-analyzer/issues/674
-
-struct Repr { raw: [u8; 1] }
-
-fn abc() {
-    Repr { raw: [0] }.raw[0] = 0;
-    Repr{raw:[0]}();
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt b/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt
deleted file mode 100644 (file)
index ef47521..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-SOURCE_FILE@[0; 160)
-  COMMENT@[0; 60) "// https://github.com ..."
-  WHITESPACE@[60; 62) "\n\n"
-  STRUCT_DEF@[62; 90)
-    STRUCT_KW@[62; 68) "struct"
-    WHITESPACE@[68; 69) " "
-    NAME@[69; 73)
-      IDENT@[69; 73) "Repr"
-    WHITESPACE@[73; 74) " "
-    NAMED_FIELD_DEF_LIST@[74; 90)
-      L_CURLY@[74; 75) "{"
-      WHITESPACE@[75; 76) " "
-      NAMED_FIELD_DEF@[76; 88)
-        NAME@[76; 79)
-          IDENT@[76; 79) "raw"
-        COLON@[79; 80) ":"
-        WHITESPACE@[80; 81) " "
-        ARRAY_TYPE@[81; 88)
-          L_BRACK@[81; 82) "["
-          PATH_TYPE@[82; 84)
-            PATH@[82; 84)
-              PATH_SEGMENT@[82; 84)
-                NAME_REF@[82; 84)
-                  IDENT@[82; 84) "u8"
-          SEMI@[84; 85) ";"
-          WHITESPACE@[85; 86) " "
-          LITERAL@[86; 87)
-            INT_NUMBER@[86; 87) "1"
-          R_BRACK@[87; 88) "]"
-      WHITESPACE@[88; 89) " "
-      R_CURLY@[89; 90) "}"
-  WHITESPACE@[90; 92) "\n\n"
-  FN_DEF@[92; 159)
-    FN_KW@[92; 94) "fn"
-    WHITESPACE@[94; 95) " "
-    NAME@[95; 98)
-      IDENT@[95; 98) "abc"
-    PARAM_LIST@[98; 100)
-      L_PAREN@[98; 99) "("
-      R_PAREN@[99; 100) ")"
-    WHITESPACE@[100; 101) " "
-    BLOCK@[101; 159)
-      L_CURLY@[101; 102) "{"
-      WHITESPACE@[102; 107) "\n    "
-      EXPR_STMT@[107; 136)
-        BIN_EXPR@[107; 135)
-          INDEX_EXPR@[107; 131)
-            FIELD_EXPR@[107; 128)
-              STRUCT_LIT@[107; 124)
-                PATH@[107; 111)
-                  PATH_SEGMENT@[107; 111)
-                    NAME_REF@[107; 111)
-                      IDENT@[107; 111) "Repr"
-                WHITESPACE@[111; 112) " "
-                NAMED_FIELD_LIST@[112; 124)
-                  L_CURLY@[112; 113) "{"
-                  WHITESPACE@[113; 114) " "
-                  NAMED_FIELD@[114; 122)
-                    NAME_REF@[114; 117)
-                      IDENT@[114; 117) "raw"
-                    COLON@[117; 118) ":"
-                    WHITESPACE@[118; 119) " "
-                    ARRAY_EXPR@[119; 122)
-                      L_BRACK@[119; 120) "["
-                      LITERAL@[120; 121)
-                        INT_NUMBER@[120; 121) "0"
-                      R_BRACK@[121; 122) "]"
-                  WHITESPACE@[122; 123) " "
-                  R_CURLY@[123; 124) "}"
-              DOT@[124; 125) "."
-              NAME_REF@[125; 128)
-                IDENT@[125; 128) "raw"
-            L_BRACK@[128; 129) "["
-            LITERAL@[129; 130)
-              INT_NUMBER@[129; 130) "0"
-            R_BRACK@[130; 131) "]"
-          WHITESPACE@[131; 132) " "
-          EQ@[132; 133) "="
-          WHITESPACE@[133; 134) " "
-          LITERAL@[134; 135)
-            INT_NUMBER@[134; 135) "0"
-        SEMI@[135; 136) ";"
-      WHITESPACE@[136; 141) "\n    "
-      EXPR_STMT@[141; 157)
-        CALL_EXPR@[141; 156)
-          STRUCT_LIT@[141; 154)
-            PATH@[141; 145)
-              PATH_SEGMENT@[141; 145)
-                NAME_REF@[141; 145)
-                  IDENT@[141; 145) "Repr"
-            NAMED_FIELD_LIST@[145; 154)
-              L_CURLY@[145; 146) "{"
-              NAMED_FIELD@[146; 153)
-                NAME_REF@[146; 149)
-                  IDENT@[146; 149) "raw"
-                COLON@[149; 150) ":"
-                ARRAY_EXPR@[150; 153)
-                  L_BRACK@[150; 151) "["
-                  LITERAL@[151; 152)
-                    INT_NUMBER@[151; 152) "0"
-                  R_BRACK@[152; 153) "]"
-              R_CURLY@[153; 154) "}"
-          ARG_LIST@[154; 156)
-            L_PAREN@[154; 155) "("
-            R_PAREN@[155; 156) ")"
-        SEMI@[156; 157) ";"
-      WHITESPACE@[157; 158) "\n"
-      R_CURLY@[158; 159) "}"
-  WHITESPACE@[159; 160) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.rs b/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.rs
deleted file mode 100644 (file)
index 325a97a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-// https://github.com/rust-analyzer/rust-analyzer/issues/677
-fn main() {
-    #[cfg(feature = "backtrace")]
-    let exit_code = panic::catch_unwind(move || main());
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt b/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt
deleted file mode 100644 (file)
index b928ada..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-SOURCE_FILE@[0; 166)
-  FN_DEF@[0; 165)
-    COMMENT@[0; 60) "// https://github.com ..."
-    WHITESPACE@[60; 61) "\n"
-    FN_KW@[61; 63) "fn"
-    WHITESPACE@[63; 64) " "
-    NAME@[64; 68)
-      IDENT@[64; 68) "main"
-    PARAM_LIST@[68; 70)
-      L_PAREN@[68; 69) "("
-      R_PAREN@[69; 70) ")"
-    WHITESPACE@[70; 71) " "
-    BLOCK@[71; 165)
-      L_CURLY@[71; 72) "{"
-      WHITESPACE@[72; 77) "\n    "
-      LET_STMT@[77; 163)
-        ATTR@[77; 106)
-          POUND@[77; 78) "#"
-          TOKEN_TREE@[78; 106)
-            L_BRACK@[78; 79) "["
-            IDENT@[79; 82) "cfg"
-            TOKEN_TREE@[82; 105)
-              L_PAREN@[82; 83) "("
-              IDENT@[83; 90) "feature"
-              WHITESPACE@[90; 91) " "
-              EQ@[91; 92) "="
-              WHITESPACE@[92; 93) " "
-              STRING@[93; 104) "\"backtrace\""
-              R_PAREN@[104; 105) ")"
-            R_BRACK@[105; 106) "]"
-        WHITESPACE@[106; 111) "\n    "
-        LET_KW@[111; 114) "let"
-        WHITESPACE@[114; 115) " "
-        BIND_PAT@[115; 124)
-          NAME@[115; 124)
-            IDENT@[115; 124) "exit_code"
-        WHITESPACE@[124; 125) " "
-        EQ@[125; 126) "="
-        WHITESPACE@[126; 127) " "
-        CALL_EXPR@[127; 162)
-          PATH_EXPR@[127; 146)
-            PATH@[127; 146)
-              PATH@[127; 132)
-                PATH_SEGMENT@[127; 132)
-                  NAME_REF@[127; 132)
-                    IDENT@[127; 132) "panic"
-              COLONCOLON@[132; 134) "::"
-              PATH_SEGMENT@[134; 146)
-                NAME_REF@[134; 146)
-                  IDENT@[134; 146) "catch_unwind"
-          ARG_LIST@[146; 162)
-            L_PAREN@[146; 147) "("
-            LAMBDA_EXPR@[147; 161)
-              MOVE_KW@[147; 151) "move"
-              WHITESPACE@[151; 152) " "
-              PARAM_LIST@[152; 154)
-                PIPE@[152; 153) "|"
-                PIPE@[153; 154) "|"
-              WHITESPACE@[154; 155) " "
-              CALL_EXPR@[155; 161)
-                PATH_EXPR@[155; 159)
-                  PATH@[155; 159)
-                    PATH_SEGMENT@[155; 159)
-                      NAME_REF@[155; 159)
-                        IDENT@[155; 159) "main"
-                ARG_LIST@[159; 161)
-                  L_PAREN@[159; 160) "("
-                  R_PAREN@[160; 161) ")"
-            R_PAREN@[161; 162) ")"
-        SEMI@[162; 163) ";"
-      WHITESPACE@[163; 164) "\n"
-      R_CURLY@[164; 165) "}"
-  WHITESPACE@[165; 166) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.rs b/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.rs
deleted file mode 100644 (file)
index 88df813..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-fn block() {
-    #![doc("Inner attributes allowed here")]
-    //! As are ModuleDoc style comments
-    {
-        #![doc("Inner attributes are allowed in blocks used as statements")]
-        #![doc("Being validated is not affected by duplcates")]
-        //! As are ModuleDoc style comments
-    };
-    {
-        #![doc("Inner attributes are allowed in blocks when they are the last statement of another block")]
-        //! As are ModuleDoc style comments
-    }
-}
-
-// https://github.com/rust-analyzer/rust-analyzer/issues/689
-impl Whatever {
-    fn salsa_event(&self, event_fn: impl Fn() -> Event<Self>) {
-        #![allow(unused_variables)] // this is  `inner_attr` of the block
-    }
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt
deleted file mode 100644 (file)
index f6d3bf3..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-SOURCE_FILE@[0; 686)
-  FN_DEF@[0; 461)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 8)
-      IDENT@[3; 8) "block"
-    PARAM_LIST@[8; 10)
-      L_PAREN@[8; 9) "("
-      R_PAREN@[9; 10) ")"
-    WHITESPACE@[10; 11) " "
-    BLOCK@[11; 461)
-      L_CURLY@[11; 12) "{"
-      WHITESPACE@[12; 17) "\n    "
-      ATTR@[17; 57)
-        POUND@[17; 18) "#"
-        EXCL@[18; 19) "!"
-        TOKEN_TREE@[19; 57)
-          L_BRACK@[19; 20) "["
-          IDENT@[20; 23) "doc"
-          TOKEN_TREE@[23; 56)
-            L_PAREN@[23; 24) "("
-            STRING@[24; 55) "\"Inner attributes all ..."
-            R_PAREN@[55; 56) ")"
-          R_BRACK@[56; 57) "]"
-      WHITESPACE@[57; 62) "\n    "
-      COMMENT@[62; 97) "//! As are ModuleDoc  ..."
-      WHITESPACE@[97; 102) "\n    "
-      EXPR_STMT@[102; 295)
-        BLOCK_EXPR@[102; 294)
-          BLOCK@[102; 294)
-            L_CURLY@[102; 103) "{"
-            WHITESPACE@[103; 112) "\n        "
-            ATTR@[112; 180)
-              POUND@[112; 113) "#"
-              EXCL@[113; 114) "!"
-              TOKEN_TREE@[114; 180)
-                L_BRACK@[114; 115) "["
-                IDENT@[115; 118) "doc"
-                TOKEN_TREE@[118; 179)
-                  L_PAREN@[118; 119) "("
-                  STRING@[119; 178) "\"Inner attributes are ..."
-                  R_PAREN@[178; 179) ")"
-                R_BRACK@[179; 180) "]"
-            WHITESPACE@[180; 189) "\n        "
-            ATTR@[189; 244)
-              POUND@[189; 190) "#"
-              EXCL@[190; 191) "!"
-              TOKEN_TREE@[191; 244)
-                L_BRACK@[191; 192) "["
-                IDENT@[192; 195) "doc"
-                TOKEN_TREE@[195; 243)
-                  L_PAREN@[195; 196) "("
-                  STRING@[196; 242) "\"Being validated is n ..."
-                  R_PAREN@[242; 243) ")"
-                R_BRACK@[243; 244) "]"
-            WHITESPACE@[244; 253) "\n        "
-            COMMENT@[253; 288) "//! As are ModuleDoc  ..."
-            WHITESPACE@[288; 293) "\n    "
-            R_CURLY@[293; 294) "}"
-        SEMI@[294; 295) ";"
-      WHITESPACE@[295; 300) "\n    "
-      BLOCK_EXPR@[300; 459)
-        BLOCK@[300; 459)
-          L_CURLY@[300; 301) "{"
-          WHITESPACE@[301; 310) "\n        "
-          ATTR@[310; 409)
-            POUND@[310; 311) "#"
-            EXCL@[311; 312) "!"
-            TOKEN_TREE@[312; 409)
-              L_BRACK@[312; 313) "["
-              IDENT@[313; 316) "doc"
-              TOKEN_TREE@[316; 408)
-                L_PAREN@[316; 317) "("
-                STRING@[317; 407) "\"Inner attributes are ..."
-                R_PAREN@[407; 408) ")"
-              R_BRACK@[408; 409) "]"
-          WHITESPACE@[409; 418) "\n        "
-          COMMENT@[418; 453) "//! As are ModuleDoc  ..."
-          WHITESPACE@[453; 458) "\n    "
-          R_CURLY@[458; 459) "}"
-      WHITESPACE@[459; 460) "\n"
-      R_CURLY@[460; 461) "}"
-  WHITESPACE@[461; 463) "\n\n"
-  COMMENT@[463; 523) "// https://github.com ..."
-  WHITESPACE@[523; 524) "\n"
-  IMPL_BLOCK@[524; 685)
-    IMPL_KW@[524; 528) "impl"
-    WHITESPACE@[528; 529) " "
-    PATH_TYPE@[529; 537)
-      PATH@[529; 537)
-        PATH_SEGMENT@[529; 537)
-          NAME_REF@[529; 537)
-            IDENT@[529; 537) "Whatever"
-    WHITESPACE@[537; 538) " "
-    ITEM_LIST@[538; 685)
-      L_CURLY@[538; 539) "{"
-      WHITESPACE@[539; 544) "\n    "
-      FN_DEF@[544; 683)
-        FN_KW@[544; 546) "fn"
-        WHITESPACE@[546; 547) " "
-        NAME@[547; 558)
-          IDENT@[547; 558) "salsa_event"
-        PARAM_LIST@[558; 601)
-          L_PAREN@[558; 559) "("
-          SELF_PARAM@[559; 564)
-            AMP@[559; 560) "&"
-            SELF_KW@[560; 564) "self"
-          COMMA@[564; 565) ","
-          WHITESPACE@[565; 566) " "
-          PARAM@[566; 600)
-            BIND_PAT@[566; 574)
-              NAME@[566; 574)
-                IDENT@[566; 574) "event_fn"
-            COLON@[574; 575) ":"
-            WHITESPACE@[575; 576) " "
-            IMPL_TRAIT_TYPE@[576; 600)
-              IMPL_KW@[576; 580) "impl"
-              WHITESPACE@[580; 581) " "
-              TYPE_BOUND_LIST@[581; 600)
-                TYPE_BOUND@[581; 600)
-                  PATH_TYPE@[581; 600)
-                    PATH@[581; 600)
-                      PATH_SEGMENT@[581; 600)
-                        NAME_REF@[581; 583)
-                          IDENT@[581; 583) "Fn"
-                        PARAM_LIST@[583; 585)
-                          L_PAREN@[583; 584) "("
-                          R_PAREN@[584; 585) ")"
-                        WHITESPACE@[585; 586) " "
-                        RET_TYPE@[586; 600)
-                          THIN_ARROW@[586; 588) "->"
-                          WHITESPACE@[588; 589) " "
-                          PATH_TYPE@[589; 600)
-                            PATH@[589; 600)
-                              PATH_SEGMENT@[589; 600)
-                                NAME_REF@[589; 594)
-                                  IDENT@[589; 594) "Event"
-                                TYPE_ARG_LIST@[594; 600)
-                                  L_ANGLE@[594; 595) "<"
-                                  TYPE_ARG@[595; 599)
-                                    PATH_TYPE@[595; 599)
-                                      PATH@[595; 599)
-                                        PATH_SEGMENT@[595; 599)
-                                          NAME_REF@[595; 599)
-                                            IDENT@[595; 599) "Self"
-                                  R_ANGLE@[599; 600) ">"
-          R_PAREN@[600; 601) ")"
-        WHITESPACE@[601; 602) " "
-        BLOCK@[602; 683)
-          L_CURLY@[602; 603) "{"
-          WHITESPACE@[603; 612) "\n        "
-          ATTR@[612; 639)
-            POUND@[612; 613) "#"
-            EXCL@[613; 614) "!"
-            TOKEN_TREE@[614; 639)
-              L_BRACK@[614; 615) "["
-              IDENT@[615; 620) "allow"
-              TOKEN_TREE@[620; 638)
-                L_PAREN@[620; 621) "("
-                IDENT@[621; 637) "unused_variables"
-                R_PAREN@[637; 638) ")"
-              R_BRACK@[638; 639) "]"
-          WHITESPACE@[639; 640) " "
-          COMMENT@[640; 677) "// this is  `inner_at ..."
-          WHITESPACE@[677; 682) "\n    "
-          R_CURLY@[682; 683) "}"
-      WHITESPACE@[683; 684) "\n"
-      R_CURLY@[684; 685) "}"
-  WHITESPACE@[685; 686) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.rs b/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.rs
deleted file mode 100644 (file)
index fe67e2d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-extern "C" {
-    //! This is a doc comment
-    #![doc("This is also a doc comment")]
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt b/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt
deleted file mode 100644 (file)
index 4487a6e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-SOURCE_FILE@[0; 87)
-  EXTERN_BLOCK@[0; 86)
-    ABI@[0; 10)
-      EXTERN_KW@[0; 6) "extern"
-      WHITESPACE@[6; 7) " "
-      STRING@[7; 10) "\"C\""
-    WHITESPACE@[10; 11) " "
-    EXTERN_ITEM_LIST@[11; 86)
-      L_CURLY@[11; 12) "{"
-      WHITESPACE@[12; 17) "\n    "
-      COMMENT@[17; 42) "//! This is a doc com ..."
-      WHITESPACE@[42; 47) "\n    "
-      ATTR@[47; 84)
-        POUND@[47; 48) "#"
-        EXCL@[48; 49) "!"
-        TOKEN_TREE@[49; 84)
-          L_BRACK@[49; 50) "["
-          IDENT@[50; 53) "doc"
-          TOKEN_TREE@[53; 83)
-            L_PAREN@[53; 54) "("
-            STRING@[54; 82) "\"This is also a doc c ..."
-            R_PAREN@[82; 83) ")"
-          R_BRACK@[83; 84) "]"
-      WHITESPACE@[84; 85) "\n"
-      R_CURLY@[85; 86) "}"
-  WHITESPACE@[86; 87) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.rs b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.rs
deleted file mode 100644 (file)
index bbd6b0f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// https://github.com/rust-analyzer/rust-analyzer/issues/972
-
-fn main() {
-    match Some(-1) {
-        Some(-1) => (),
-        _ => (),
-    }
-
-    match Some((-1, -1)) {
-        Some((-1, -1)) => (),
-        _ => (),
-    }
-
-    match A::B(-1, -1) {
-        A::B(-1, -1) => (),
-        _ => (),
-    }
-
-    if let Some(-1) = Some(-1) {
-    }
-}
-
-enum A {
-    B(i8, i8)
-}
-
-fn foo(-128..=127: i8) {}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt
deleted file mode 100644 (file)
index 917b50d..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-SOURCE_FILE@[0; 395)
-  COMMENT@[0; 60) "// https://github.com ..."
-  WHITESPACE@[60; 62) "\n\n"
-  FN_DEF@[62; 341)
-    FN_KW@[62; 64) "fn"
-    WHITESPACE@[64; 65) " "
-    NAME@[65; 69)
-      IDENT@[65; 69) "main"
-    PARAM_LIST@[69; 71)
-      L_PAREN@[69; 70) "("
-      R_PAREN@[70; 71) ")"
-    WHITESPACE@[71; 72) " "
-    BLOCK@[72; 341)
-      L_CURLY@[72; 73) "{"
-      WHITESPACE@[73; 78) "\n    "
-      EXPR_STMT@[78; 141)
-        MATCH_EXPR@[78; 141)
-          MATCH_KW@[78; 83) "match"
-          WHITESPACE@[83; 84) " "
-          CALL_EXPR@[84; 92)
-            PATH_EXPR@[84; 88)
-              PATH@[84; 88)
-                PATH_SEGMENT@[84; 88)
-                  NAME_REF@[84; 88)
-                    IDENT@[84; 88) "Some"
-            ARG_LIST@[88; 92)
-              L_PAREN@[88; 89) "("
-              PREFIX_EXPR@[89; 91)
-                MINUS@[89; 90) "-"
-                LITERAL@[90; 91)
-                  INT_NUMBER@[90; 91) "1"
-              R_PAREN@[91; 92) ")"
-          WHITESPACE@[92; 93) " "
-          MATCH_ARM_LIST@[93; 141)
-            L_CURLY@[93; 94) "{"
-            WHITESPACE@[94; 103) "\n        "
-            MATCH_ARM@[103; 117)
-              TUPLE_STRUCT_PAT@[103; 111)
-                PATH@[103; 107)
-                  PATH_SEGMENT@[103; 107)
-                    NAME_REF@[103; 107)
-                      IDENT@[103; 107) "Some"
-                L_PAREN@[107; 108) "("
-                LITERAL_PAT@[108; 110)
-                  MINUS@[108; 109) "-"
-                  LITERAL@[109; 110)
-                    INT_NUMBER@[109; 110) "1"
-                R_PAREN@[110; 111) ")"
-              WHITESPACE@[111; 112) " "
-              FAT_ARROW@[112; 114) "=>"
-              WHITESPACE@[114; 115) " "
-              TUPLE_EXPR@[115; 117)
-                L_PAREN@[115; 116) "("
-                R_PAREN@[116; 117) ")"
-            COMMA@[117; 118) ","
-            WHITESPACE@[118; 127) "\n        "
-            MATCH_ARM@[127; 134)
-              PLACEHOLDER_PAT@[127; 128)
-                UNDERSCORE@[127; 128) "_"
-              WHITESPACE@[128; 129) " "
-              FAT_ARROW@[129; 131) "=>"
-              WHITESPACE@[131; 132) " "
-              TUPLE_EXPR@[132; 134)
-                L_PAREN@[132; 133) "("
-                R_PAREN@[133; 134) ")"
-            COMMA@[134; 135) ","
-            WHITESPACE@[135; 140) "\n    "
-            R_CURLY@[140; 141) "}"
-      WHITESPACE@[141; 147) "\n\n    "
-      EXPR_STMT@[147; 222)
-        MATCH_EXPR@[147; 222)
-          MATCH_KW@[147; 152) "match"
-          WHITESPACE@[152; 153) " "
-          CALL_EXPR@[153; 167)
-            PATH_EXPR@[153; 157)
-              PATH@[153; 157)
-                PATH_SEGMENT@[153; 157)
-                  NAME_REF@[153; 157)
-                    IDENT@[153; 157) "Some"
-            ARG_LIST@[157; 167)
-              L_PAREN@[157; 158) "("
-              TUPLE_EXPR@[158; 166)
-                L_PAREN@[158; 159) "("
-                PREFIX_EXPR@[159; 161)
-                  MINUS@[159; 160) "-"
-                  LITERAL@[160; 161)
-                    INT_NUMBER@[160; 161) "1"
-                COMMA@[161; 162) ","
-                WHITESPACE@[162; 163) " "
-                PREFIX_EXPR@[163; 165)
-                  MINUS@[163; 164) "-"
-                  LITERAL@[164; 165)
-                    INT_NUMBER@[164; 165) "1"
-                R_PAREN@[165; 166) ")"
-              R_PAREN@[166; 167) ")"
-          WHITESPACE@[167; 168) " "
-          MATCH_ARM_LIST@[168; 222)
-            L_CURLY@[168; 169) "{"
-            WHITESPACE@[169; 178) "\n        "
-            MATCH_ARM@[178; 198)
-              TUPLE_STRUCT_PAT@[178; 192)
-                PATH@[178; 182)
-                  PATH_SEGMENT@[178; 182)
-                    NAME_REF@[178; 182)
-                      IDENT@[178; 182) "Some"
-                L_PAREN@[182; 183) "("
-                TUPLE_PAT@[183; 191)
-                  L_PAREN@[183; 184) "("
-                  LITERAL_PAT@[184; 186)
-                    MINUS@[184; 185) "-"
-                    LITERAL@[185; 186)
-                      INT_NUMBER@[185; 186) "1"
-                  COMMA@[186; 187) ","
-                  WHITESPACE@[187; 188) " "
-                  LITERAL_PAT@[188; 190)
-                    MINUS@[188; 189) "-"
-                    LITERAL@[189; 190)
-                      INT_NUMBER@[189; 190) "1"
-                  R_PAREN@[190; 191) ")"
-                R_PAREN@[191; 192) ")"
-              WHITESPACE@[192; 193) " "
-              FAT_ARROW@[193; 195) "=>"
-              WHITESPACE@[195; 196) " "
-              TUPLE_EXPR@[196; 198)
-                L_PAREN@[196; 197) "("
-                R_PAREN@[197; 198) ")"
-            COMMA@[198; 199) ","
-            WHITESPACE@[199; 208) "\n        "
-            MATCH_ARM@[208; 215)
-              PLACEHOLDER_PAT@[208; 209)
-                UNDERSCORE@[208; 209) "_"
-              WHITESPACE@[209; 210) " "
-              FAT_ARROW@[210; 212) "=>"
-              WHITESPACE@[212; 213) " "
-              TUPLE_EXPR@[213; 215)
-                L_PAREN@[213; 214) "("
-                R_PAREN@[214; 215) ")"
-            COMMA@[215; 216) ","
-            WHITESPACE@[216; 221) "\n    "
-            R_CURLY@[221; 222) "}"
-      WHITESPACE@[222; 228) "\n\n    "
-      EXPR_STMT@[228; 299)
-        MATCH_EXPR@[228; 299)
-          MATCH_KW@[228; 233) "match"
-          WHITESPACE@[233; 234) " "
-          CALL_EXPR@[234; 246)
-            PATH_EXPR@[234; 238)
-              PATH@[234; 238)
-                PATH@[234; 235)
-                  PATH_SEGMENT@[234; 235)
-                    NAME_REF@[234; 235)
-                      IDENT@[234; 235) "A"
-                COLONCOLON@[235; 237) "::"
-                PATH_SEGMENT@[237; 238)
-                  NAME_REF@[237; 238)
-                    IDENT@[237; 238) "B"
-            ARG_LIST@[238; 246)
-              L_PAREN@[238; 239) "("
-              PREFIX_EXPR@[239; 241)
-                MINUS@[239; 240) "-"
-                LITERAL@[240; 241)
-                  INT_NUMBER@[240; 241) "1"
-              COMMA@[241; 242) ","
-              WHITESPACE@[242; 243) " "
-              PREFIX_EXPR@[243; 245)
-                MINUS@[243; 244) "-"
-                LITERAL@[244; 245)
-                  INT_NUMBER@[244; 245) "1"
-              R_PAREN@[245; 246) ")"
-          WHITESPACE@[246; 247) " "
-          MATCH_ARM_LIST@[247; 299)
-            L_CURLY@[247; 248) "{"
-            WHITESPACE@[248; 257) "\n        "
-            MATCH_ARM@[257; 275)
-              TUPLE_STRUCT_PAT@[257; 269)
-                PATH@[257; 261)
-                  PATH@[257; 258)
-                    PATH_SEGMENT@[257; 258)
-                      NAME_REF@[257; 258)
-                        IDENT@[257; 258) "A"
-                  COLONCOLON@[258; 260) "::"
-                  PATH_SEGMENT@[260; 261)
-                    NAME_REF@[260; 261)
-                      IDENT@[260; 261) "B"
-                L_PAREN@[261; 262) "("
-                LITERAL_PAT@[262; 264)
-                  MINUS@[262; 263) "-"
-                  LITERAL@[263; 264)
-                    INT_NUMBER@[263; 264) "1"
-                COMMA@[264; 265) ","
-                WHITESPACE@[265; 266) " "
-                LITERAL_PAT@[266; 268)
-                  MINUS@[266; 267) "-"
-                  LITERAL@[267; 268)
-                    INT_NUMBER@[267; 268) "1"
-                R_PAREN@[268; 269) ")"
-              WHITESPACE@[269; 270) " "
-              FAT_ARROW@[270; 272) "=>"
-              WHITESPACE@[272; 273) " "
-              TUPLE_EXPR@[273; 275)
-                L_PAREN@[273; 274) "("
-                R_PAREN@[274; 275) ")"
-            COMMA@[275; 276) ","
-            WHITESPACE@[276; 285) "\n        "
-            MATCH_ARM@[285; 292)
-              PLACEHOLDER_PAT@[285; 286)
-                UNDERSCORE@[285; 286) "_"
-              WHITESPACE@[286; 287) " "
-              FAT_ARROW@[287; 289) "=>"
-              WHITESPACE@[289; 290) " "
-              TUPLE_EXPR@[290; 292)
-                L_PAREN@[290; 291) "("
-                R_PAREN@[291; 292) ")"
-            COMMA@[292; 293) ","
-            WHITESPACE@[293; 298) "\n    "
-            R_CURLY@[298; 299) "}"
-      WHITESPACE@[299; 305) "\n\n    "
-      IF_EXPR@[305; 339)
-        IF_KW@[305; 307) "if"
-        WHITESPACE@[307; 308) " "
-        CONDITION@[308; 331)
-          LET_KW@[308; 311) "let"
-          WHITESPACE@[311; 312) " "
-          TUPLE_STRUCT_PAT@[312; 320)
-            PATH@[312; 316)
-              PATH_SEGMENT@[312; 316)
-                NAME_REF@[312; 316)
-                  IDENT@[312; 316) "Some"
-            L_PAREN@[316; 317) "("
-            LITERAL_PAT@[317; 319)
-              MINUS@[317; 318) "-"
-              LITERAL@[318; 319)
-                INT_NUMBER@[318; 319) "1"
-            R_PAREN@[319; 320) ")"
-          WHITESPACE@[320; 321) " "
-          EQ@[321; 322) "="
-          WHITESPACE@[322; 323) " "
-          CALL_EXPR@[323; 331)
-            PATH_EXPR@[323; 327)
-              PATH@[323; 327)
-                PATH_SEGMENT@[323; 327)
-                  NAME_REF@[323; 327)
-                    IDENT@[323; 327) "Some"
-            ARG_LIST@[327; 331)
-              L_PAREN@[327; 328) "("
-              PREFIX_EXPR@[328; 330)
-                MINUS@[328; 329) "-"
-                LITERAL@[329; 330)
-                  INT_NUMBER@[329; 330) "1"
-              R_PAREN@[330; 331) ")"
-        WHITESPACE@[331; 332) " "
-        BLOCK@[332; 339)
-          L_CURLY@[332; 333) "{"
-          WHITESPACE@[333; 338) "\n    "
-          R_CURLY@[338; 339) "}"
-      WHITESPACE@[339; 340) "\n"
-      R_CURLY@[340; 341) "}"
-  WHITESPACE@[341; 343) "\n\n"
-  ENUM_DEF@[343; 367)
-    ENUM_KW@[343; 347) "enum"
-    WHITESPACE@[347; 348) " "
-    NAME@[348; 349)
-      IDENT@[348; 349) "A"
-    WHITESPACE@[349; 350) " "
-    ENUM_VARIANT_LIST@[350; 367)
-      L_CURLY@[350; 351) "{"
-      WHITESPACE@[351; 356) "\n    "
-      ENUM_VARIANT@[356; 365)
-        NAME@[356; 357)
-          IDENT@[356; 357) "B"
-        POS_FIELD_DEF_LIST@[357; 365)
-          L_PAREN@[357; 358) "("
-          POS_FIELD_DEF@[358; 360)
-            PATH_TYPE@[358; 360)
-              PATH@[358; 360)
-                PATH_SEGMENT@[358; 360)
-                  NAME_REF@[358; 360)
-                    IDENT@[358; 360) "i8"
-          COMMA@[360; 361) ","
-          WHITESPACE@[361; 362) " "
-          POS_FIELD_DEF@[362; 364)
-            PATH_TYPE@[362; 364)
-              PATH@[362; 364)
-                PATH_SEGMENT@[362; 364)
-                  NAME_REF@[362; 364)
-                    IDENT@[362; 364) "i8"
-          R_PAREN@[364; 365) ")"
-      WHITESPACE@[365; 366) "\n"
-      R_CURLY@[366; 367) "}"
-  WHITESPACE@[367; 369) "\n\n"
-  FN_DEF@[369; 394)
-    FN_KW@[369; 371) "fn"
-    WHITESPACE@[371; 372) " "
-    NAME@[372; 375)
-      IDENT@[372; 375) "foo"
-    PARAM_LIST@[375; 391)
-      L_PAREN@[375; 376) "("
-      PARAM@[376; 390)
-        RANGE_PAT@[376; 386)
-          LITERAL_PAT@[376; 380)
-            MINUS@[376; 377) "-"
-            LITERAL@[377; 380)
-              INT_NUMBER@[377; 380) "128"
-          DOTDOTEQ@[380; 383) "..="
-          LITERAL_PAT@[383; 386)
-            LITERAL@[383; 386)
-              INT_NUMBER@[383; 386) "127"
-        COLON@[386; 387) ":"
-        WHITESPACE@[387; 388) " "
-        PATH_TYPE@[388; 390)
-          PATH@[388; 390)
-            PATH_SEGMENT@[388; 390)
-              NAME_REF@[388; 390)
-                IDENT@[388; 390) "i8"
-      R_PAREN@[390; 391) ")"
-    WHITESPACE@[391; 392) " "
-    BLOCK@[392; 394)
-      L_CURLY@[392; 393) "{"
-      R_CURLY@[393; 394) "}"
-  WHITESPACE@[394; 395) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.rs b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.rs
deleted file mode 100644 (file)
index 871720a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-// https://github.com/rust-analyzer/rust-analyzer/pull/983
-
-fn compound_assignment() {
-    let mut a = 0;
-    a += 1;
-    a -= 2;
-    a *= 3;
-    a %= 4;
-    a /= 5;
-    a |= 6;
-    a &= 7;
-    a ^= 8;
-    a <= 9;
-    a >= 10;
-    a >>= 11;
-    a <<= 12;
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt
deleted file mode 100644 (file)
index 3fca499..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-SOURCE_FILE@[0; 257)
-  COMMENT@[0; 58) "// https://github.com ..."
-  WHITESPACE@[58; 60) "\n\n"
-  FN_DEF@[60; 256)
-    FN_KW@[60; 62) "fn"
-    WHITESPACE@[62; 63) " "
-    NAME@[63; 82)
-      IDENT@[63; 82) "compound_assignment"
-    PARAM_LIST@[82; 84)
-      L_PAREN@[82; 83) "("
-      R_PAREN@[83; 84) ")"
-    WHITESPACE@[84; 85) " "
-    BLOCK@[85; 256)
-      L_CURLY@[85; 86) "{"
-      WHITESPACE@[86; 91) "\n    "
-      LET_STMT@[91; 105)
-        LET_KW@[91; 94) "let"
-        WHITESPACE@[94; 95) " "
-        BIND_PAT@[95; 100)
-          MUT_KW@[95; 98) "mut"
-          WHITESPACE@[98; 99) " "
-          NAME@[99; 100)
-            IDENT@[99; 100) "a"
-        WHITESPACE@[100; 101) " "
-        EQ@[101; 102) "="
-        WHITESPACE@[102; 103) " "
-        LITERAL@[103; 104)
-          INT_NUMBER@[103; 104) "0"
-        SEMI@[104; 105) ";"
-      WHITESPACE@[105; 110) "\n    "
-      EXPR_STMT@[110; 117)
-        BIN_EXPR@[110; 116)
-          PATH_EXPR@[110; 111)
-            PATH@[110; 111)
-              PATH_SEGMENT@[110; 111)
-                NAME_REF@[110; 111)
-                  IDENT@[110; 111) "a"
-          WHITESPACE@[111; 112) " "
-          PLUSEQ@[112; 114) "+="
-          WHITESPACE@[114; 115) " "
-          LITERAL@[115; 116)
-            INT_NUMBER@[115; 116) "1"
-        SEMI@[116; 117) ";"
-      WHITESPACE@[117; 122) "\n    "
-      EXPR_STMT@[122; 129)
-        BIN_EXPR@[122; 128)
-          PATH_EXPR@[122; 123)
-            PATH@[122; 123)
-              PATH_SEGMENT@[122; 123)
-                NAME_REF@[122; 123)
-                  IDENT@[122; 123) "a"
-          WHITESPACE@[123; 124) " "
-          MINUSEQ@[124; 126) "-="
-          WHITESPACE@[126; 127) " "
-          LITERAL@[127; 128)
-            INT_NUMBER@[127; 128) "2"
-        SEMI@[128; 129) ";"
-      WHITESPACE@[129; 134) "\n    "
-      EXPR_STMT@[134; 141)
-        BIN_EXPR@[134; 140)
-          PATH_EXPR@[134; 135)
-            PATH@[134; 135)
-              PATH_SEGMENT@[134; 135)
-                NAME_REF@[134; 135)
-                  IDENT@[134; 135) "a"
-          WHITESPACE@[135; 136) " "
-          STAREQ@[136; 138) "*="
-          WHITESPACE@[138; 139) " "
-          LITERAL@[139; 140)
-            INT_NUMBER@[139; 140) "3"
-        SEMI@[140; 141) ";"
-      WHITESPACE@[141; 146) "\n    "
-      EXPR_STMT@[146; 153)
-        BIN_EXPR@[146; 152)
-          PATH_EXPR@[146; 147)
-            PATH@[146; 147)
-              PATH_SEGMENT@[146; 147)
-                NAME_REF@[146; 147)
-                  IDENT@[146; 147) "a"
-          WHITESPACE@[147; 148) " "
-          PERCENTEQ@[148; 150) "%="
-          WHITESPACE@[150; 151) " "
-          LITERAL@[151; 152)
-            INT_NUMBER@[151; 152) "4"
-        SEMI@[152; 153) ";"
-      WHITESPACE@[153; 158) "\n    "
-      EXPR_STMT@[158; 165)
-        BIN_EXPR@[158; 164)
-          PATH_EXPR@[158; 159)
-            PATH@[158; 159)
-              PATH_SEGMENT@[158; 159)
-                NAME_REF@[158; 159)
-                  IDENT@[158; 159) "a"
-          WHITESPACE@[159; 160) " "
-          SLASHEQ@[160; 162) "/="
-          WHITESPACE@[162; 163) " "
-          LITERAL@[163; 164)
-            INT_NUMBER@[163; 164) "5"
-        SEMI@[164; 165) ";"
-      WHITESPACE@[165; 170) "\n    "
-      EXPR_STMT@[170; 177)
-        BIN_EXPR@[170; 176)
-          PATH_EXPR@[170; 171)
-            PATH@[170; 171)
-              PATH_SEGMENT@[170; 171)
-                NAME_REF@[170; 171)
-                  IDENT@[170; 171) "a"
-          WHITESPACE@[171; 172) " "
-          PIPEEQ@[172; 174) "|="
-          WHITESPACE@[174; 175) " "
-          LITERAL@[175; 176)
-            INT_NUMBER@[175; 176) "6"
-        SEMI@[176; 177) ";"
-      WHITESPACE@[177; 182) "\n    "
-      EXPR_STMT@[182; 189)
-        BIN_EXPR@[182; 188)
-          PATH_EXPR@[182; 183)
-            PATH@[182; 183)
-              PATH_SEGMENT@[182; 183)
-                NAME_REF@[182; 183)
-                  IDENT@[182; 183) "a"
-          WHITESPACE@[183; 184) " "
-          AMPEQ@[184; 186) "&="
-          WHITESPACE@[186; 187) " "
-          LITERAL@[187; 188)
-            INT_NUMBER@[187; 188) "7"
-        SEMI@[188; 189) ";"
-      WHITESPACE@[189; 194) "\n    "
-      EXPR_STMT@[194; 201)
-        BIN_EXPR@[194; 200)
-          PATH_EXPR@[194; 195)
-            PATH@[194; 195)
-              PATH_SEGMENT@[194; 195)
-                NAME_REF@[194; 195)
-                  IDENT@[194; 195) "a"
-          WHITESPACE@[195; 196) " "
-          CARETEQ@[196; 198) "^="
-          WHITESPACE@[198; 199) " "
-          LITERAL@[199; 200)
-            INT_NUMBER@[199; 200) "8"
-        SEMI@[200; 201) ";"
-      WHITESPACE@[201; 206) "\n    "
-      EXPR_STMT@[206; 213)
-        BIN_EXPR@[206; 212)
-          PATH_EXPR@[206; 207)
-            PATH@[206; 207)
-              PATH_SEGMENT@[206; 207)
-                NAME_REF@[206; 207)
-                  IDENT@[206; 207) "a"
-          WHITESPACE@[207; 208) " "
-          LTEQ@[208; 210) "<="
-          WHITESPACE@[210; 211) " "
-          LITERAL@[211; 212)
-            INT_NUMBER@[211; 212) "9"
-        SEMI@[212; 213) ";"
-      WHITESPACE@[213; 218) "\n    "
-      EXPR_STMT@[218; 226)
-        BIN_EXPR@[218; 225)
-          PATH_EXPR@[218; 219)
-            PATH@[218; 219)
-              PATH_SEGMENT@[218; 219)
-                NAME_REF@[218; 219)
-                  IDENT@[218; 219) "a"
-          WHITESPACE@[219; 220) " "
-          GTEQ@[220; 222) ">="
-          WHITESPACE@[222; 223) " "
-          LITERAL@[223; 225)
-            INT_NUMBER@[223; 225) "10"
-        SEMI@[225; 226) ";"
-      WHITESPACE@[226; 231) "\n    "
-      EXPR_STMT@[231; 240)
-        BIN_EXPR@[231; 239)
-          PATH_EXPR@[231; 232)
-            PATH@[231; 232)
-              PATH_SEGMENT@[231; 232)
-                NAME_REF@[231; 232)
-                  IDENT@[231; 232) "a"
-          WHITESPACE@[232; 233) " "
-          SHREQ@[233; 236) ">>="
-          WHITESPACE@[236; 237) " "
-          LITERAL@[237; 239)
-            INT_NUMBER@[237; 239) "11"
-        SEMI@[239; 240) ";"
-      WHITESPACE@[240; 245) "\n    "
-      EXPR_STMT@[245; 254)
-        BIN_EXPR@[245; 253)
-          PATH_EXPR@[245; 246)
-            PATH@[245; 246)
-              PATH_SEGMENT@[245; 246)
-                NAME_REF@[245; 246)
-                  IDENT@[245; 246) "a"
-          WHITESPACE@[246; 247) " "
-          SHLEQ@[247; 250) "<<="
-          WHITESPACE@[250; 251) " "
-          LITERAL@[251; 253)
-            INT_NUMBER@[251; 253) "12"
-        SEMI@[253; 254) ";"
-      WHITESPACE@[254; 255) "\n"
-      R_CURLY@[255; 256) "}"
-  WHITESPACE@[256; 257) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0049_async_block.rs b/crates/ra_syntax/tests/data/parser/ok/0049_async_block.rs
deleted file mode 100644 (file)
index 4781b32..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo() {
-    async {};
-    async move {};
-}
-
diff --git a/crates/ra_syntax/tests/data/parser/ok/0049_async_block.txt b/crates/ra_syntax/tests/data/parser/ok/0049_async_block.txt
deleted file mode 100644 (file)
index 517982d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-SOURCE_FILE@[0; 47)
-  FN_DEF@[0; 45)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 8)
-      L_PAREN@[6; 7) "("
-      R_PAREN@[7; 8) ")"
-    WHITESPACE@[8; 9) " "
-    BLOCK@[9; 45)
-      L_CURLY@[9; 10) "{"
-      WHITESPACE@[10; 15) "\n    "
-      EXPR_STMT@[15; 24)
-        BLOCK_EXPR@[15; 23)
-          ASYNC_KW@[15; 20) "async"
-          WHITESPACE@[20; 21) " "
-          BLOCK@[21; 23)
-            L_CURLY@[21; 22) "{"
-            R_CURLY@[22; 23) "}"
-        SEMI@[23; 24) ";"
-      WHITESPACE@[24; 29) "\n    "
-      EXPR_STMT@[29; 43)
-        BLOCK_EXPR@[29; 42)
-          ASYNC_KW@[29; 34) "async"
-          WHITESPACE@[34; 35) " "
-          MOVE_KW@[35; 39) "move"
-          WHITESPACE@[39; 40) " "
-          BLOCK@[40; 42)
-            L_CURLY@[40; 41) "{"
-            R_CURLY@[41; 42) "}"
-        SEMI@[42; 43) ";"
-      WHITESPACE@[43; 44) "\n"
-      R_CURLY@[44; 45) "}"
-  WHITESPACE@[45; 47) "\n\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.rs b/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.rs
deleted file mode 100644 (file)
index ec4612c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-fn foo(x: impl std::future::Future<Output = i32>) {}
-
-fn main() {
-    foo(async move { 12 })
-}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.txt b/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.txt
deleted file mode 100644 (file)
index 64da587..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-SOURCE_FILE@[0; 95)
-  FN_DEF@[0; 52)
-    FN_KW@[0; 2) "fn"
-    WHITESPACE@[2; 3) " "
-    NAME@[3; 6)
-      IDENT@[3; 6) "foo"
-    PARAM_LIST@[6; 49)
-      L_PAREN@[6; 7) "("
-      PARAM@[7; 48)
-        BIND_PAT@[7; 8)
-          NAME@[7; 8)
-            IDENT@[7; 8) "x"
-        COLON@[8; 9) ":"
-        WHITESPACE@[9; 10) " "
-        IMPL_TRAIT_TYPE@[10; 48)
-          IMPL_KW@[10; 14) "impl"
-          WHITESPACE@[14; 15) " "
-          TYPE_BOUND_LIST@[15; 48)
-            TYPE_BOUND@[15; 48)
-              PATH_TYPE@[15; 48)
-                PATH@[15; 48)
-                  PATH@[15; 26)
-                    PATH@[15; 18)
-                      PATH_SEGMENT@[15; 18)
-                        NAME_REF@[15; 18)
-                          IDENT@[15; 18) "std"
-                    COLONCOLON@[18; 20) "::"
-                    PATH_SEGMENT@[20; 26)
-                      NAME_REF@[20; 26)
-                        IDENT@[20; 26) "future"
-                  COLONCOLON@[26; 28) "::"
-                  PATH_SEGMENT@[28; 48)
-                    NAME_REF@[28; 34)
-                      IDENT@[28; 34) "Future"
-                    TYPE_ARG_LIST@[34; 48)
-                      L_ANGLE@[34; 35) "<"
-                      ASSOC_TYPE_ARG@[35; 47)
-                        NAME_REF@[35; 41)
-                          IDENT@[35; 41) "Output"
-                        WHITESPACE@[41; 42) " "
-                        EQ@[42; 43) "="
-                        WHITESPACE@[43; 44) " "
-                        PATH_TYPE@[44; 47)
-                          PATH@[44; 47)
-                            PATH_SEGMENT@[44; 47)
-                              NAME_REF@[44; 47)
-                                IDENT@[44; 47) "i32"
-                      R_ANGLE@[47; 48) ">"
-      R_PAREN@[48; 49) ")"
-    WHITESPACE@[49; 50) " "
-    BLOCK@[50; 52)
-      L_CURLY@[50; 51) "{"
-      R_CURLY@[51; 52) "}"
-  WHITESPACE@[52; 54) "\n\n"
-  FN_DEF@[54; 94)
-    FN_KW@[54; 56) "fn"
-    WHITESPACE@[56; 57) " "
-    NAME@[57; 61)
-      IDENT@[57; 61) "main"
-    PARAM_LIST@[61; 63)
-      L_PAREN@[61; 62) "("
-      R_PAREN@[62; 63) ")"
-    WHITESPACE@[63; 64) " "
-    BLOCK@[64; 94)
-      L_CURLY@[64; 65) "{"
-      WHITESPACE@[65; 70) "\n    "
-      CALL_EXPR@[70; 92)
-        PATH_EXPR@[70; 73)
-          PATH@[70; 73)
-            PATH_SEGMENT@[70; 73)
-              NAME_REF@[70; 73)
-                IDENT@[70; 73) "foo"
-        ARG_LIST@[73; 92)
-          L_PAREN@[73; 74) "("
-          BLOCK_EXPR@[74; 91)
-            ASYNC_KW@[74; 79) "async"
-            WHITESPACE@[79; 80) " "
-            MOVE_KW@[80; 84) "move"
-            WHITESPACE@[84; 85) " "
-            BLOCK@[85; 91)
-              L_CURLY@[85; 86) "{"
-              WHITESPACE@[86; 87) " "
-              LITERAL@[87; 89)
-                INT_NUMBER@[87; 89) "12"
-              WHITESPACE@[89; 90) " "
-              R_CURLY@[90; 91) "}"
-          R_PAREN@[91; 92) ")"
-      WHITESPACE@[92; 93) "\n"
-      R_CURLY@[93; 94) "}"
-  WHITESPACE@[94; 95) "\n"
diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs
deleted file mode 100644 (file)
index 388eb74..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-0
-1
-
-
-
-0
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs
deleted file mode 100644 (file)
index d2d42c6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-0
-1
-
-bb"
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs
deleted file mode 100644 (file)
index 3fbee15..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-1
-1
-
-""!
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs
deleted file mode 100644 (file)
index d2757cd..0000000
Binary files a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs and /dev/null differ
diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs
deleted file mode 100644 (file)
index 481617a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-0
-0
-}
-{;
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs
deleted file mode 100644 (file)
index 074d761..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-05
-1
-
-
-
-b'\ 1
-               
\ No newline at end of file
diff --git a/crates/ra_syntax/tests/test.rs b/crates/ra_syntax/tests/test.rs
deleted file mode 100644 (file)
index cabd3e9..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-extern crate ra_syntax;
-extern crate test_utils;
-extern crate walkdir;
-
-use std::{
-    fmt::Write,
-    path::{Component, PathBuf},
-};
-
-use ra_syntax::{fuzz, SourceFile};
-use test_utils::{collect_tests, dir_tests, project_dir, read_text};
-
-#[test]
-fn lexer_tests() {
-    dir_tests(&test_data_dir(), &["lexer"], |text, _| {
-        let tokens = ra_syntax::tokenize(text);
-        dump_tokens(&tokens, text)
-    })
-}
-
-#[test]
-fn parser_tests() {
-    dir_tests(&test_data_dir(), &["parser/inline/ok", "parser/ok"], |text, path| {
-        let parse = SourceFile::parse(text);
-        let errors = parse.errors();
-        assert_eq!(
-            errors,
-            &[] as &[ra_syntax::SyntaxError],
-            "There should be no errors in the file {:?}",
-            path.display(),
-        );
-        parse.debug_dump()
-    });
-    dir_tests(&test_data_dir(), &["parser/err", "parser/inline/err"], |text, path| {
-        let parse = SourceFile::parse(text);
-        let errors = parse.errors();
-        assert!(!errors.is_empty(), "There should be errors in the file {:?}", path.display());
-        parse.debug_dump()
-    });
-}
-
-#[test]
-fn parser_fuzz_tests() {
-    for (_, text) in collect_tests(&test_data_dir(), &["parser/fuzz-failures"]) {
-        fuzz::check_parser(&text)
-    }
-}
-
-#[test]
-fn reparse_fuzz_tests() {
-    for (_, text) in collect_tests(&test_data_dir(), &["reparse/fuzz-failures"]) {
-        let check = fuzz::CheckReparse::from_data(text.as_bytes()).unwrap();
-        println!("{:?}", check);
-        check.run();
-    }
-}
-
-/// Test that Rust-analyzer can parse and validate the rust-analyzer
-/// FIXME: Use this as a benchmark
-#[test]
-fn self_hosting_parsing() {
-    use std::ffi::OsStr;
-    let dir = project_dir().join("crates");
-    let mut count = 0;
-    for entry in walkdir::WalkDir::new(dir)
-        .into_iter()
-        .filter_entry(|entry| {
-            !entry.path().components().any(|component| {
-                // Get all files which are not in the crates/ra_syntax/tests/data folder
-                component == Component::Normal(OsStr::new("data"))
-            })
-        })
-        .map(|e| e.unwrap())
-        .filter(|entry| {
-            // Get all `.rs ` files
-            !entry.path().is_dir() && (entry.path().extension() == Some(OsStr::new("rs")))
-        })
-    {
-        count += 1;
-        let text = read_text(entry.path());
-        SourceFile::parse(&text).ok().expect("There should be no errors in the file");
-    }
-    assert!(
-        count > 30,
-        "self_hosting_parsing found too few files - is it running in the right directory?"
-    )
-}
-
-fn test_data_dir() -> PathBuf {
-    project_dir().join("crates/ra_syntax/tests/data")
-}
-
-fn dump_tokens(tokens: &[ra_syntax::Token], text: &str) -> String {
-    let mut acc = String::new();
-    let mut offset = 0;
-    for token in tokens {
-        let len: u32 = token.len.into();
-        let len = len as usize;
-        let token_text = &text[offset..offset + len];
-        offset += len;
-        write!(acc, "{:?} {} {:?}\n", token.kind, token.len, token_text).unwrap()
-    }
-    acc
-}
index d56e0d2efd4f78246d01d8e64174f29c311c4628..79fbcd11d03840b39742b77d7667fc3a27965ab7 100644 (file)
@@ -15,8 +15,8 @@
 
 pub const GRAMMAR: &str = "crates/ra_syntax/src/grammar.ron";
 const GRAMMAR_DIR: &str = "crates/ra_parser/src/grammar";
-const OK_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/ok";
-const ERR_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/err";
+const OK_INLINE_TESTS_DIR: &str = "crates/ra_syntax/test_data/parser/inline/ok";
+const ERR_INLINE_TESTS_DIR: &str = "crates/ra_syntax/test_data/parser/inline/err";
 
 pub const SYNTAX_KINDS: &str = "crates/ra_parser/src/syntax_kind/generated.rs.tera";
 pub const AST: &str = "crates/ra_syntax/src/ast/generated.rs.tera";