aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-11-07 15:38:43 +0000
committerAleksey Kladov <[email protected]>2018-11-07 15:42:36 +0000
commit2ed1514df3f8837ccebdbbfdadbe89e79b4a4365 (patch)
tree82af1d514d9865db4e2cc163a7ffa601a7c294db /crates
parentf8b36bbc3b968754b71844d942286e81415627b8 (diff)
rename ROOT -> SOURCE_FILE
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_analysis/src/completion.rs6
-rw-r--r--crates/ra_analysis/src/descriptors/module/mod.rs2
-rw-r--r--crates/ra_syntax/src/ast/generated.rs86
-rw-r--r--crates/ra_syntax/src/grammar.ron4
-rw-r--r--crates/ra_syntax/src/grammar/mod.rs2
-rw-r--r--crates/ra_syntax/src/lib.rs11
-rw-r--r--crates/ra_syntax/src/parser_impl/event.rs2
-rw-r--r--crates/ra_syntax/src/syntax_kinds/generated.rs4
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0025_nope.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0045_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0076_cond.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0107_label.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0111_impl_type.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0112_crate_path.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/0113_where_pred_for.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0000_empty.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0019_enums.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0030_traits.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0031_extern.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0035_crate_path_in_call.txt2
185 files changed, 235 insertions, 236 deletions
diff --git a/crates/ra_analysis/src/completion.rs b/crates/ra_analysis/src/completion.rs
index 689d4c92f..ea15f239c 100644
--- a/crates/ra_analysis/src/completion.rs
+++ b/crates/ra_analysis/src/completion.rs
@@ -124,7 +124,7 @@ pub(crate) fn scope_completion(
124 .last() 124 .last()
125 .unwrap(); 125 .unwrap();
126 match top_node.parent().map(|it| it.kind()) { 126 match top_node.parent().map(|it| it.kind()) {
127 Some(ROOT) | Some(ITEM_LIST) => complete_mod_item_snippets(&mut res), 127 Some(SOURCE_FILE) | Some(ITEM_LIST) => complete_mod_item_snippets(&mut res),
128 _ => (), 128 _ => (),
129 } 129 }
130 } 130 }
@@ -171,7 +171,7 @@ fn complete_name_ref(file: &SourceFileNode, name_ref: ast::NameRef, acc: &mut Ve
171 let mut visited_fn = false; 171 let mut visited_fn = false;
172 for node in name_ref.syntax().ancestors() { 172 for node in name_ref.syntax().ancestors() {
173 if let Some(items) = visitor() 173 if let Some(items) = visitor()
174 .visit::<ast::Root, _>(|it| Some(it.items())) 174 .visit::<ast::SourceFile, _>(|it| Some(it.items()))
175 .visit::<ast::Module, _>(|it| Some(it.item_list()?.items())) 175 .visit::<ast::Module, _>(|it| Some(it.item_list()?.items()))
176 .accept(node) 176 .accept(node)
177 { 177 {
@@ -195,7 +195,7 @@ fn param_completions(ctx: SyntaxNodeRef, acc: &mut Vec<CompletionItem>) {
195 let mut params = FxHashMap::default(); 195 let mut params = FxHashMap::default();
196 for node in ctx.ancestors() { 196 for node in ctx.ancestors() {
197 let _ = visitor_ctx(&mut params) 197 let _ = visitor_ctx(&mut params)
198 .visit::<ast::Root, _>(process) 198 .visit::<ast::SourceFile, _>(process)
199 .visit::<ast::ItemList, _>(process) 199 .visit::<ast::ItemList, _>(process)
200 .accept(node); 200 .accept(node);
201 } 201 }
diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs
index 03330240d..5301f44ab 100644
--- a/crates/ra_analysis/src/descriptors/module/mod.rs
+++ b/crates/ra_analysis/src/descriptors/module/mod.rs
@@ -52,7 +52,7 @@ pub(crate) enum ModuleSource {
52/// An owned syntax node for a module. Unlike `ModuleSource`, 52/// An owned syntax node for a module. Unlike `ModuleSource`,
53/// this holds onto the AST for the whole file. 53/// this holds onto the AST for the whole file.
54enum ModuleSourceNode { 54enum ModuleSourceNode {
55 Root(ast::RootNode), 55 Root(ast::SourceFileNode),
56 Inline(ast::ModuleNode), 56 Inline(ast::ModuleNode),
57} 57}
58 58
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs
index 8cf3222f7..5b5f71ee7 100644
--- a/crates/ra_syntax/src/ast/generated.rs
+++ b/crates/ra_syntax/src/ast/generated.rs
@@ -3016,49 +3016,6 @@ impl<R: TreeRoot<RaTypes>> ReturnExprNode<R> {
3016 3016
3017impl<'a> ReturnExpr<'a> {} 3017impl<'a> ReturnExpr<'a> {}
3018 3018
3019// Root
3020#[derive(Debug, Clone, Copy,)]
3021pub struct RootNode<R: TreeRoot<RaTypes> = OwnedRoot> {
3022 pub(crate) syntax: SyntaxNode<R>,
3023}
3024pub type Root<'a> = RootNode<RefRoot<'a>>;
3025
3026impl<R1: TreeRoot<RaTypes>, R2: TreeRoot<RaTypes>> PartialEq<RootNode<R1>> for RootNode<R2> {
3027 fn eq(&self, other: &RootNode<R1>) -> bool { self.syntax == other.syntax }
3028}
3029impl<R: TreeRoot<RaTypes>> Eq for RootNode<R> {}
3030impl<R: TreeRoot<RaTypes>> Hash for RootNode<R> {
3031 fn hash<H: Hasher>(&self, state: &mut H) { self.syntax.hash(state) }
3032}
3033
3034impl<'a> AstNode<'a> for Root<'a> {
3035 fn cast(syntax: SyntaxNodeRef<'a>) -> Option<Self> {
3036 match syntax.kind() {
3037 ROOT => Some(Root { syntax }),
3038 _ => None,
3039 }
3040 }
3041 fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax }
3042}
3043
3044impl<R: TreeRoot<RaTypes>> RootNode<R> {
3045 pub fn borrowed(&self) -> Root {
3046 RootNode { syntax: self.syntax.borrowed() }
3047 }
3048 pub fn owned(&self) -> RootNode {
3049 RootNode { syntax: self.syntax.owned() }
3050 }
3051}
3052
3053
3054impl<'a> ast::ModuleItemOwner<'a> for Root<'a> {}
3055impl<'a> ast::FnDefOwner<'a> for Root<'a> {}
3056impl<'a> Root<'a> {
3057 pub fn modules(self) -> impl Iterator<Item = Module<'a>> + 'a {
3058 super::children(self)
3059 }
3060}
3061
3062// SelfParam 3019// SelfParam
3063#[derive(Debug, Clone, Copy,)] 3020#[derive(Debug, Clone, Copy,)]
3064pub struct SelfParamNode<R: TreeRoot<RaTypes> = OwnedRoot> { 3021pub struct SelfParamNode<R: TreeRoot<RaTypes> = OwnedRoot> {
@@ -3170,6 +3127,49 @@ impl<R: TreeRoot<RaTypes>> SliceTypeNode<R> {
3170 3127
3171impl<'a> SliceType<'a> {} 3128impl<'a> SliceType<'a> {}
3172 3129
3130// SourceFile
3131#[derive(Debug, Clone, Copy,)]
3132pub struct SourceFileNode<R: TreeRoot<RaTypes> = OwnedRoot> {
3133 pub(crate) syntax: SyntaxNode<R>,
3134}
3135pub type SourceFile<'a> = SourceFileNode<RefRoot<'a>>;
3136
3137impl<R1: TreeRoot<RaTypes>, R2: TreeRoot<RaTypes>> PartialEq<SourceFileNode<R1>> for SourceFileNode<R2> {
3138 fn eq(&self, other: &SourceFileNode<R1>) -> bool { self.syntax == other.syntax }
3139}
3140impl<R: TreeRoot<RaTypes>> Eq for SourceFileNode<R> {}
3141impl<R: TreeRoot<RaTypes>> Hash for SourceFileNode<R> {
3142 fn hash<H: Hasher>(&self, state: &mut H) { self.syntax.hash(state) }
3143}
3144
3145impl<'a> AstNode<'a> for SourceFile<'a> {
3146 fn cast(syntax: SyntaxNodeRef<'a>) -> Option<Self> {
3147 match syntax.kind() {
3148 SOURCE_FILE => Some(SourceFile { syntax }),
3149 _ => None,
3150 }
3151 }
3152 fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax }
3153}
3154
3155impl<R: TreeRoot<RaTypes>> SourceFileNode<R> {
3156 pub fn borrowed(&self) -> SourceFile {
3157 SourceFileNode { syntax: self.syntax.borrowed() }
3158 }
3159 pub fn owned(&self) -> SourceFileNode {
3160 SourceFileNode { syntax: self.syntax.owned() }
3161 }
3162}
3163
3164
3165impl<'a> ast::ModuleItemOwner<'a> for SourceFile<'a> {}
3166impl<'a> ast::FnDefOwner<'a> for SourceFile<'a> {}
3167impl<'a> SourceFile<'a> {
3168 pub fn modules(self) -> impl Iterator<Item = Module<'a>> + 'a {
3169 super::children(self)
3170 }
3171}
3172
3173// StaticDef 3173// StaticDef
3174#[derive(Debug, Clone, Copy,)] 3174#[derive(Debug, Clone, Copy,)]
3175pub struct StaticDefNode<R: TreeRoot<RaTypes> = OwnedRoot> { 3175pub struct StaticDefNode<R: TreeRoot<RaTypes> = OwnedRoot> {
diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron
index 1fa25dc4d..a92844415 100644
--- a/crates/ra_syntax/src/grammar.ron
+++ b/crates/ra_syntax/src/grammar.ron
@@ -116,7 +116,7 @@ Grammar(
116 "SHEBANG", 116 "SHEBANG",
117 ], 117 ],
118 nodes: [ 118 nodes: [
119 "ROOT", 119 "SOURCE_FILE",
120 120
121 "STRUCT_DEF", 121 "STRUCT_DEF",
122 "ENUM_DEF", 122 "ENUM_DEF",
@@ -239,7 +239,7 @@ Grammar(
239 "ARG_LIST", 239 "ARG_LIST",
240 ], 240 ],
241 ast: { 241 ast: {
242 "Root": ( 242 "SourceFile": (
243 traits: [ "ModuleItemOwner", "FnDefOwner" ], 243 traits: [ "ModuleItemOwner", "FnDefOwner" ],
244 collections: [ 244 collections: [
245 ["modules", "Module"], 245 ["modules", "Module"],
diff --git a/crates/ra_syntax/src/grammar/mod.rs b/crates/ra_syntax/src/grammar/mod.rs
index 95c437983..06a37d648 100644
--- a/crates/ra_syntax/src/grammar/mod.rs
+++ b/crates/ra_syntax/src/grammar/mod.rs
@@ -53,7 +53,7 @@ pub(crate) fn root(p: &mut Parser) {
53 let m = p.start(); 53 let m = p.start();
54 p.eat(SHEBANG); 54 p.eat(SHEBANG);
55 items::mod_contents(p, false); 55 items::mod_contents(p, false);
56 m.complete(p, ROOT); 56 m.complete(p, SOURCE_FILE);
57} 57}
58 58
59#[derive(Clone, Copy, PartialEq, Eq)] 59#[derive(Clone, Copy, PartialEq, Eq)]
diff --git a/crates/ra_syntax/src/lib.rs b/crates/ra_syntax/src/lib.rs
index 9f8066c70..330f68053 100644
--- a/crates/ra_syntax/src/lib.rs
+++ b/crates/ra_syntax/src/lib.rs
@@ -61,9 +61,8 @@ pub use crate::{
61 61
62use crate::yellow::GreenNode; 62use crate::yellow::GreenNode;
63 63
64// TODO: pick a single name for everything. SourceFileNode maybe? 64/// `SourceFileNode` represents a parse tree for a single Rust file.
65/// File represents a parse tree for a single Rust file. 65pub use crate::ast::SourceFileNode;
66pub type SourceFileNode = ast::RootNode;
67 66
68impl SourceFileNode { 67impl SourceFileNode {
69 fn new(green: GreenNode, errors: Vec<SyntaxError>) -> SourceFileNode { 68 fn new(green: GreenNode, errors: Vec<SyntaxError>) -> SourceFileNode {
@@ -71,8 +70,8 @@ impl SourceFileNode {
71 if cfg!(debug_assertions) { 70 if cfg!(debug_assertions) {
72 utils::validate_block_structure(root.borrowed()); 71 utils::validate_block_structure(root.borrowed());
73 } 72 }
74 assert_eq!(root.kind(), SyntaxKind::ROOT); 73 assert_eq!(root.kind(), SyntaxKind::SOURCE_FILE);
75 ast::RootNode { syntax: root } 74 ast::SourceFileNode { syntax: root }
76 } 75 }
77 pub fn parse(text: &str) -> SourceFileNode { 76 pub fn parse(text: &str) -> SourceFileNode {
78 let tokens = tokenize(&text); 77 let tokens = tokenize(&text);
@@ -94,7 +93,7 @@ impl SourceFileNode {
94 SourceFileNode::parse(&text) 93 SourceFileNode::parse(&text)
95 } 94 }
96 /// Typed AST representation of the parse tree. 95 /// Typed AST representation of the parse tree.
97 pub fn ast(&self) -> ast::Root { 96 pub fn ast(&self) -> ast::SourceFile {
98 self.borrowed() 97 self.borrowed()
99 } 98 }
100 /// Untyped homogeneous representation of the parse tree. 99 /// Untyped homogeneous representation of the parse tree.
diff --git a/crates/ra_syntax/src/parser_impl/event.rs b/crates/ra_syntax/src/parser_impl/event.rs
index bf9c1cef0..3d8b062d5 100644
--- a/crates/ra_syntax/src/parser_impl/event.rs
+++ b/crates/ra_syntax/src/parser_impl/event.rs
@@ -172,7 +172,7 @@ impl<'a, S: Sink> EventProcessor<'a, S> {
172 } 172 }
173 173
174 fn start(&mut self, kind: SyntaxKind) { 174 fn start(&mut self, kind: SyntaxKind) {
175 if kind == ROOT { 175 if kind == SOURCE_FILE {
176 self.sink.start_internal(kind); 176 self.sink.start_internal(kind);
177 return; 177 return;
178 } 178 }
diff --git a/crates/ra_syntax/src/syntax_kinds/generated.rs b/crates/ra_syntax/src/syntax_kinds/generated.rs
index 6568f1a37..c43a8bf65 100644
--- a/crates/ra_syntax/src/syntax_kinds/generated.rs
+++ b/crates/ra_syntax/src/syntax_kinds/generated.rs
@@ -117,7 +117,7 @@ pub enum SyntaxKind {
117 RAW_BYTE_STRING, 117 RAW_BYTE_STRING,
118 COMMENT, 118 COMMENT,
119 SHEBANG, 119 SHEBANG,
120 ROOT, 120 SOURCE_FILE,
121 STRUCT_DEF, 121 STRUCT_DEF,
122 ENUM_DEF, 122 ENUM_DEF,
123 FN_DEF, 123 FN_DEF,
@@ -378,7 +378,7 @@ impl SyntaxKind {
378 RAW_BYTE_STRING => &SyntaxInfo { name: "RAW_BYTE_STRING" }, 378 RAW_BYTE_STRING => &SyntaxInfo { name: "RAW_BYTE_STRING" },
379 COMMENT => &SyntaxInfo { name: "COMMENT" }, 379 COMMENT => &SyntaxInfo { name: "COMMENT" },
380 SHEBANG => &SyntaxInfo { name: "SHEBANG" }, 380 SHEBANG => &SyntaxInfo { name: "SHEBANG" },
381 ROOT => &SyntaxInfo { name: "ROOT" }, 381 SOURCE_FILE => &SyntaxInfo { name: "SOURCE_FILE" },
382 STRUCT_DEF => &SyntaxInfo { name: "STRUCT_DEF" }, 382 STRUCT_DEF => &SyntaxInfo { name: "STRUCT_DEF" },
383 ENUM_DEF => &SyntaxInfo { name: "ENUM_DEF" }, 383 ENUM_DEF => &SyntaxInfo { name: "ENUM_DEF" },
384 FN_DEF => &SyntaxInfo { name: "FN_DEF" }, 384 FN_DEF => &SyntaxInfo { name: "FN_DEF" },
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
index aa375fe8a..665f7599c 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 34) 1SOURCE_FILE@[0; 34)
2 STRUCT_DEF@[0; 34) 2 STRUCT_DEF@[0; 34)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index 771d6e1ef..74743d7ad 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 21) 1SOURCE_FILE@[0; 21)
2 ERROR@[0; 2) 2 ERROR@[0; 2)
3 IF_KW@[0; 2) 3 IF_KW@[0; 2)
4 err: `expected an item` 4 err: `expected an item`
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
index 57fb48420..a1f041c33 100644
--- a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 42) 1SOURCE_FILE@[0; 42)
2 SHEBANG@[0; 20) 2 SHEBANG@[0; 20)
3 WHITESPACE@[20; 21) 3 WHITESPACE@[20; 21)
4 err: `expected an item` 4 err: `expected an item`
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
index b51c0573a..e9400d03b 100644
--- a/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 40) 1SOURCE_FILE@[0; 40)
2 STRUCT_DEF@[0; 40) 2 STRUCT_DEF@[0; 40)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index 646c84534..5bdb24676 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 12) 1SOURCE_FILE@[0; 12)
2 USE_ITEM@[0; 12) 2 USE_ITEM@[0; 12)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
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
index b3cf9b889..381a7d6dd 100644
--- a/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 54) 1SOURCE_FILE@[0; 54)
2 FN_DEF@[0; 31) 2 FN_DEF@[0; 31)
3 ATTR@[0; 18) 3 ATTR@[0; 18)
4 POUND@[0; 1) 4 POUND@[0; 1)
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
index 9abda7099..02f832fb7 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 74) 1SOURCE_FILE@[0; 74)
2 STRUCT_DEF@[0; 73) 2 STRUCT_DEF@[0; 73)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index 802c69b31..d46f753ad 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 31) 1SOURCE_FILE@[0; 31)
2 ERROR@[0; 1) 2 ERROR@[0; 1)
3 R_CURLY@[0; 1) 3 R_CURLY@[0; 1)
4 err: `unmatched `}`` 4 err: `unmatched `}``
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
index 95a34333b..de5c81f29 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 95) 1SOURCE_FILE@[0; 95)
2 FN_DEF@[0; 12) 2 FN_DEF@[0; 12)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index fa8adf881..e22c061d2 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 43) 1SOURCE_FILE@[0; 43)
2 STRUCT_DEF@[0; 11) 2 STRUCT_DEF@[0; 11)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index 38667e030..e6794a2a0 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 42) 1SOURCE_FILE@[0; 42)
2 FN_DEF@[0; 41) 2 FN_DEF@[0; 41)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 0cb7447c4..a65cecde5 100644
--- a/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 19) 1SOURCE_FILE@[0; 19)
2 ERROR@[0; 6) 2 ERROR@[0; 6)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6)
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
index a03aa05e3..12ebc2a3a 100644
--- a/crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0012_broken_lambda.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 389) 1SOURCE_FILE@[0; 389)
2 FN_DEF@[0; 389) 2 FN_DEF@[0; 389)
3 VISIBILITY@[0; 10) 3 VISIBILITY@[0; 10)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3)
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
index e1a6b6432..83d716b2f 100644
--- a/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 86) 1SOURCE_FILE@[0; 86)
2 STRUCT_DEF@[0; 72) 2 STRUCT_DEF@[0; 72)
3 VISIBILITY@[0; 3) 3 VISIBILITY@[0; 3)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3)
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
index 37826ce86..a81772764 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 23) 1SOURCE_FILE@[0; 23)
2 FN_DEF@[0; 22) 2 FN_DEF@[0; 22)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 5f736a978..e4d91109f 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 14) 1SOURCE_FILE@[0; 14)
2 FN_DEF@[0; 7) 2 FN_DEF@[0; 7)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index a3163adcb..5b128caa2 100644
--- a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 56) 1SOURCE_FILE@[0; 56)
2 FN_DEF@[0; 55) 2 FN_DEF@[0; 55)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index f0be287ad..fbfdc2c44 100644
--- a/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 47) 1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 46)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index c4d9f5e7e..3937be255 100644
--- a/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 183) 1SOURCE_FILE@[0; 183)
2 IMPL_ITEM@[0; 182) 2 IMPL_ITEM@[0; 182)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
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
index 6e74771f1..ee75c33ae 100644
--- a/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 139) 1SOURCE_FILE@[0; 139)
2 FN_DEF@[0; 138) 2 FN_DEF@[0; 138)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index b5218b0fa..375fd3ad2 100644
--- a/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 16) 1SOURCE_FILE@[0; 16)
2 FN_DEF@[0; 2) 2 FN_DEF@[0; 2)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 err: `expected a name` 4 err: `expected a name`
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
index 8dcb58ae2..1b3dcd945 100644
--- a/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 22) 1SOURCE_FILE@[0; 22)
2 FN_DEF@[0; 21) 2 FN_DEF@[0; 21)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 287e56ac4..55999c160 100644
--- a/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 112) 1SOURCE_FILE@[0; 112)
2 FN_DEF@[0; 33) 2 FN_DEF@[0; 33)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 2df81b12b..dcca0756d 100644
--- a/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 94) 1SOURCE_FILE@[0; 94)
2 FN_DEF@[0; 55) 2 FN_DEF@[0; 55)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 195c12e08..8720fc6ea 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 240) 1SOURCE_FILE@[0; 240)
2 FN_DEF@[0; 53) 2 FN_DEF@[0; 53)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/err/0025_nope.txt b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
index 6879c8d0a..615064f77 100644
--- a/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 575) 1SOURCE_FILE@[0; 575)
2 FN_DEF@[0; 574) 2 FN_DEF@[0; 574)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 9e26f58a0..82683f6ee 100644
--- a/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 38) 1SOURCE_FILE@[0; 38)
2 IMPL_ITEM@[0; 14) 2 IMPL_ITEM@[0; 14)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 TYPE_PARAM_LIST@[4; 14) 4 TYPE_PARAM_LIST@[4; 14)
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
index 94b75a656..694295a60 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt
index 956532981..814c9f1a0 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0001_const_unsafe_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 25) 1SOURCE_FILE@[0; 25)
2 FN_DEF@[0; 24) 2 FN_DEF@[0; 24)
3 CONST_KW@[0; 5) 3 CONST_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt
index bda875fc5..8206d973b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0002_const_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 18) 1SOURCE_FILE@[0; 18)
2 FN_DEF@[0; 17) 2 FN_DEF@[0; 17)
3 CONST_KW@[0; 5) 3 CONST_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt b/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt
index 2c2bbd035..7e79c2280 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0003_extern_block.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 10) 1SOURCE_FILE@[0; 10)
2 EXTERN_BLOCK@[0; 9) 2 EXTERN_BLOCK@[0; 9)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt
index f6e769475..d2b26566d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0004_extern_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 19) 1SOURCE_FILE@[0; 19)
2 FN_DEF@[0; 18) 2 FN_DEF@[0; 18)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt b/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt
index fc025b0f3..7ffdc7fbd 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0005_extern_crate.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 18) 1SOURCE_FILE@[0; 18)
2 EXTERN_CRATE_ITEM@[0; 17) 2 EXTERN_CRATE_ITEM@[0; 17)
3 EXTERN_KW@[0; 6) 3 EXTERN_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt b/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt
index fb97cc042..3669c93a8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0007_unsafe_trait.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 18) 1SOURCE_FILE@[0; 18)
2 TRAIT_DEF@[0; 17) 2 TRAIT_DEF@[0; 17)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt b/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt
index fa596394f..f9c96c242 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0008_unsafe_impl.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 19) 1SOURCE_FILE@[0; 19)
2 IMPL_ITEM@[0; 18) 2 IMPL_ITEM@[0; 18)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt
index e642bbf80..b541ceff8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0009_unsafe_auto_trait.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 23) 1SOURCE_FILE@[0; 23)
2 TRAIT_DEF@[0; 22) 2 TRAIT_DEF@[0; 22)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt
index 99d33a902..6003ba645 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0010_unsafe_default_impl.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 27) 1SOURCE_FILE@[0; 27)
2 IMPL_ITEM@[0; 26) 2 IMPL_ITEM@[0; 26)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt
index 39ec53b26..5498dbcbb 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0011_unsafe_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 19) 1SOURCE_FILE@[0; 19)
2 FN_DEF@[0; 18) 2 FN_DEF@[0; 18)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt
index 54e296ed6..0cde40595 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0012_unsafe_extern_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt b/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt
index 9825e5ace..d2da2bad7 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0013_unsafe_block_in_mod.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 33) 1SOURCE_FILE@[0; 33)
2 FN_DEF@[0; 10) 2 FN_DEF@[0; 10)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt
index bf65e8a37..89b34d4f1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0014_type_item_type_params.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 21) 1SOURCE_FILE@[0; 21)
2 TYPE_DEF@[0; 20) 2 TYPE_DEF@[0; 20)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt b/crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt
index 71048bcc5..4b66a05a6 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0015_type_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 16) 1SOURCE_FILE@[0; 16)
2 TYPE_DEF@[0; 15) 2 TYPE_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt
index c3fca013e..f38b2f79a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0016_type_item_where_clause.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 31) 1SOURCE_FILE@[0; 31)
2 TYPE_DEF@[0; 30) 2 TYPE_DEF@[0; 30)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt b/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt
index 97e73fea1..bd5feb6b3 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0017_paren_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 16) 1SOURCE_FILE@[0; 16)
2 TYPE_DEF@[0; 15) 2 TYPE_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt b/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt
index 5d04d42fc..9fd19ba4a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0018_unit_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 13) 1SOURCE_FILE@[0; 13)
2 TYPE_DEF@[0; 12) 2 TYPE_DEF@[0; 12)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt b/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt
index 2cd8be9ab..173c325d0 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0019_singleton_tuple_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 17) 1SOURCE_FILE@[0; 17)
2 TYPE_DEF@[0; 16) 2 TYPE_DEF@[0; 16)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt b/crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt
index 6205d9669..e0cae644d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0020_never_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 16) 1SOURCE_FILE@[0; 16)
2 TYPE_DEF@[0; 15) 2 TYPE_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt b/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt
index 23e68557a..189aa563e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0021_pointer_type_no_mutability.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 14) 1SOURCE_FILE@[0; 14)
2 TYPE_DEF@[0; 13) 2 TYPE_DEF@[0; 13)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt b/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt
index 33f5ad8b4..149cd571d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0022_pointer_type_mut.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 36) 1SOURCE_FILE@[0; 36)
2 TYPE_DEF@[0; 17) 2 TYPE_DEF@[0; 17)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt b/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt
index 90bdc5d2e..036363587 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0023_array_type_missing_semi.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 18) 1SOURCE_FILE@[0; 18)
2 TYPE_DEF@[0; 12) 2 TYPE_DEF@[0; 12)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt b/crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt
index 809c86974..2c2b615fc 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0024_array_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 19) 1SOURCE_FILE@[0; 19)
2 TYPE_DEF@[0; 18) 2 TYPE_DEF@[0; 18)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt b/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt
index 978530a6a..db18c7139 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0025_slice_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 15) 1SOURCE_FILE@[0; 15)
2 TYPE_DEF@[0; 14) 2 TYPE_DEF@[0; 14)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt b/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt
index ff27ce5dd..7f35254d1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0026_reference_type;.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 54) 1SOURCE_FILE@[0; 54)
2 TYPE_DEF@[0; 13) 2 TYPE_DEF@[0; 13)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt b/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt
index 538e4e69c..43ada95d4 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0027_placeholder_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 22) 1SOURCE_FILE@[0; 22)
2 TYPE_DEF@[0; 21) 2 TYPE_DEF@[0; 21)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt b/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt
index 4dba83eb5..0c508ec27 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0028_fn_pointer_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 70) 1SOURCE_FILE@[0; 70)
2 TYPE_DEF@[0; 14) 2 TYPE_DEF@[0; 14)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt b/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt
index fa0771ab1..f97db4bff 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0029_fn_pointer_type_missing_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 20) 1SOURCE_FILE@[0; 20)
2 TYPE_DEF@[0; 15) 2 TYPE_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt b/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt
index 203839636..f092c6df7 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0030_fn_pointer_type_with_ret.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 21) 1SOURCE_FILE@[0; 21)
2 TYPE_DEF@[0; 20) 2 TYPE_DEF@[0; 20)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt b/crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt
index f6b962b2c..843cc4973 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0031_for_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 29) 1SOURCE_FILE@[0; 29)
2 TYPE_DEF@[0; 28) 2 TYPE_DEF@[0; 28)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt b/crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt
index b0a110a2c..b72b96e95 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0032_path_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 71) 1SOURCE_FILE@[0; 71)
2 TYPE_DEF@[0; 13) 2 TYPE_DEF@[0; 13)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt
index 9adc89b7c..86f8154ea 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0034_bind_pat.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 146) 1SOURCE_FILE@[0; 146)
2 FN_DEF@[0; 145) 2 FN_DEF@[0; 145)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt
index a625637cd..008f4f159 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0035_ref_pat.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 52) 1SOURCE_FILE@[0; 52)
2 FN_DEF@[0; 51) 2 FN_DEF@[0; 51)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt
index e89ff4e7c..08ba391e3 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0036_placeholder_pat.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt b/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt
index 3b5fbf95d..7d137cfe9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0037_crate_visibility.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 81) 1SOURCE_FILE@[0; 81)
2 STRUCT_DEF@[0; 20) 2 STRUCT_DEF@[0; 20)
3 VISIBILITY@[0; 10) 3 VISIBILITY@[0; 10)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt b/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt
index a3d235ce1..1edf9412f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0038_function_ret_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 11) 2 FN_DEF@[0; 11)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt
index 618afc0a9..673ea1d3d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0039_path_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 91) 1SOURCE_FILE@[0; 91)
2 FN_DEF@[0; 90) 2 FN_DEF@[0; 90)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt b/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt
index 8105ee25a..1d88f952d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0040_expr_literals.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 189) 1SOURCE_FILE@[0; 189)
2 FN_DEF@[0; 188) 2 FN_DEF@[0; 188)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt
index 549b571c2..745cf8798 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0041_type_param_bounds.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 35) 1SOURCE_FILE@[0; 35)
2 STRUCT_DEF@[0; 34) 2 STRUCT_DEF@[0; 34)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt b/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt
index a75b7ed0a..59b3fbd2e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0042_type_param_default.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 19) 1SOURCE_FILE@[0; 19)
2 STRUCT_DEF@[0; 18) 2 STRUCT_DEF@[0; 18)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt
index f8e31045a..6364dc73c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0043_call_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 57) 1SOURCE_FILE@[0; 57)
2 FN_DEF@[0; 56) 2 FN_DEF@[0; 56)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt
index 77f2ca22c..2cd888762 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0044_ref_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 52) 1SOURCE_FILE@[0; 52)
2 FN_DEF@[0; 51) 2 FN_DEF@[0; 51)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0045_block.txt b/crates/ra_syntax/tests/data/parser/inline/0045_block.txt
index e6c841f21..c13e22b3a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0045_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0045_block.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 65) 1SOURCE_FILE@[0; 65)
2 FN_DEF@[0; 9) 2 FN_DEF@[0; 9)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt
index 19fe5ca85..f45b6251f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0046_default_impl.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 20) 1SOURCE_FILE@[0; 20)
2 IMPL_ITEM@[0; 19) 2 IMPL_ITEM@[0; 19)
3 DEFAULT_KW@[0; 7) 3 DEFAULT_KW@[0; 7)
4 WHITESPACE@[7; 8) 4 WHITESPACE@[7; 8)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt b/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt
index 6419243e2..1b9a8aa0e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0047_impl_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 12) 1SOURCE_FILE@[0; 12)
2 IMPL_ITEM@[0; 11) 2 IMPL_ITEM@[0; 11)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt b/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt
index 6739f9c55..b83db380e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0048_impl_item_neg.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 20) 1SOURCE_FILE@[0; 20)
2 IMPL_ITEM@[0; 19) 2 IMPL_ITEM@[0; 19)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt
index 72d9220e8..998ac3da9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0049_trait_item_list.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 83) 1SOURCE_FILE@[0; 83)
2 IMPL_ITEM@[0; 82) 2 IMPL_ITEM@[0; 82)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt b/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt
index 30dc83454..9c2aad7e0 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0050_let_stmt;.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 77) 1SOURCE_FILE@[0; 77)
2 FN_DEF@[0; 76) 2 FN_DEF@[0; 76)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt
index 530c80fa8..51ecfdf78 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0051_method_call_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 49) 1SOURCE_FILE@[0; 49)
2 FN_DEF@[0; 48) 2 FN_DEF@[0; 48)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt
index 9086219ca..03fbf092b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0052_field_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 37) 1SOURCE_FILE@[0; 37)
2 FN_DEF@[0; 36) 2 FN_DEF@[0; 36)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt b/crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt
index 20122d763..dd1843ee5 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0053_block_items.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 21) 1SOURCE_FILE@[0; 21)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt b/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt
index 4df4ca35b..13a51a9d9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0054_field_pat_list.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 119) 1SOURCE_FILE@[0; 119)
2 FN_DEF@[0; 118) 2 FN_DEF@[0; 118)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt b/crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt
index f0e47c2dc..53027c852 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0055_self_param.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 128) 1SOURCE_FILE@[0; 128)
2 IMPL_ITEM@[0; 127) 2 IMPL_ITEM@[0; 127)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt b/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt
index 40c77db4b..333a737ec 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0056_trait_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 42) 1SOURCE_FILE@[0; 42)
2 TRAIT_DEF@[0; 41) 2 TRAIT_DEF@[0; 41)
3 TRAIT_KW@[0; 5) 3 TRAIT_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt
index 0303d76bd..8b3ce28d0 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0057_auto_trait.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 16) 1SOURCE_FILE@[0; 16)
2 TRAIT_DEF@[0; 15) 2 TRAIT_DEF@[0; 15)
3 AUTO_KW@[0; 4) 3 AUTO_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt b/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt
index aaf2924ba..086a74bdb 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0058_type_arg.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 35) 1SOURCE_FILE@[0; 35)
2 TYPE_DEF@[0; 34) 2 TYPE_DEF@[0; 34)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt
index 281e79deb..b58d09e35 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0059_function_where_clause.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 29) 1SOURCE_FILE@[0; 29)
2 FN_DEF@[0; 28) 2 FN_DEF@[0; 28)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt
index b6fea5ab2..b20f13267 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0060_function_type_params.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 28) 1SOURCE_FILE@[0; 28)
2 FN_DEF@[0; 27) 2 FN_DEF@[0; 27)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt b/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt
index cf6e881b2..aec25403d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0061_struct_lit.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 86) 1SOURCE_FILE@[0; 86)
2 FN_DEF@[0; 85) 2 FN_DEF@[0; 85)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt
index 68fce58ee..efd4dd42a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0063_impl_trait_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 43) 1SOURCE_FILE@[0; 43)
2 TYPE_DEF@[0; 42) 2 TYPE_DEF@[0; 42)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt
index 93f6285ac..8c1340c4a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0063_lambda_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 74) 1SOURCE_FILE@[0; 74)
2 FN_DEF@[0; 74) 2 FN_DEF@[0; 74)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 NAME@[2; 6) 4 NAME@[2; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt b/crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt
index de547d699..503fc97ff 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0064_param_list.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 67) 1SOURCE_FILE@[0; 67)
2 FN_DEF@[0; 9) 2 FN_DEF@[0; 9)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt
index ae1a8101e..637d23d9e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0065_if_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 107) 1SOURCE_FILE@[0; 107)
2 FN_DEF@[0; 106) 2 FN_DEF@[0; 106)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt
index 82aaf3897..98271c233 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0066_lambda_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 79) 1SOURCE_FILE@[0; 79)
2 FN_DEF@[0; 78) 2 FN_DEF@[0; 78)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt
index 12a1ff49a..eeb184ab2 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0067_block_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 52) 1SOURCE_FILE@[0; 52)
2 FN_DEF@[0; 51) 2 FN_DEF@[0; 51)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt
index 5f179c3ca..de20eee7a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0068_pub_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 29) 1SOURCE_FILE@[0; 29)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt
index ead1ada96..f8d1db41c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0068_return_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 40) 1SOURCE_FILE@[0; 40)
2 FN_DEF@[0; 39) 2 FN_DEF@[0; 39)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt b/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt
index f862b1268..044faec04 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0069_match_arm.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 125) 1SOURCE_FILE@[0; 125)
2 FN_DEF@[0; 124) 2 FN_DEF@[0; 124)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt
index d7740e3cc..cc22bd3b2 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0070_match_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 47) 1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 46)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt b/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt
index 734e0726c..737fbec22 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0071_tuple_pat_fields.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 97) 1SOURCE_FILE@[0; 97)
2 FN_DEF@[0; 96) 2 FN_DEF@[0; 96)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt b/crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt
index 1a8d1546d..0020cfb4d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0072_path_part.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 103) 1SOURCE_FILE@[0; 103)
2 FN_DEF@[0; 102) 2 FN_DEF@[0; 102)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt
index 1f524f34a..b15f93cd2 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0073_impl_item_list.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 89) 1SOURCE_FILE@[0; 89)
2 IMPL_ITEM@[0; 88) 2 IMPL_ITEM@[0; 88)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt
index 4d77c8c11..72d7d8bfb 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0074_unary_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 44) 1SOURCE_FILE@[0; 44)
2 FN_DEF@[0; 43) 2 FN_DEF@[0; 43)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt
index b80235146..f47e6da55 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0075_try_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 21) 1SOURCE_FILE@[0; 21)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0076_cond.txt b/crates/ra_syntax/tests/data/parser/inline/0076_cond.txt
index 1808f10fb..641a09fff 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0076_cond.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0076_cond.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 38) 1SOURCE_FILE@[0; 38)
2 FN_DEF@[0; 37) 2 FN_DEF@[0; 37)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt
index c73157c04..f9b074e82 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0077_while_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 70) 1SOURCE_FILE@[0; 70)
2 FN_DEF@[0; 69) 2 FN_DEF@[0; 69)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt b/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt
index 57b2b9372..62528ca47 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0078_mod_contents.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 70) 1SOURCE_FILE@[0; 70)
2 FN_DEF@[0; 11) 2 FN_DEF@[0; 11)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt
index 6d57078b3..a80439913 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0079_cast_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 28) 1SOURCE_FILE@[0; 28)
2 FN_DEF@[0; 27) 2 FN_DEF@[0; 27)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt
index cf541411f..4e427c909 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0080_tuple_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 40) 1SOURCE_FILE@[0; 40)
2 FN_DEF@[0; 39) 2 FN_DEF@[0; 39)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt
index 4624aab23..6e10be559 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0081_index_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt
index 2d68a5ff2..2471f6f8c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0082_tuple_pat.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 39) 1SOURCE_FILE@[0; 39)
2 FN_DEF@[0; 38) 2 FN_DEF@[0; 38)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt b/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt
index 475251ea7..415ff2a20 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0083_postfix_range.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt
index 5321fade9..c3c64c322 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0084_loop_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt
index 7ddf8122f..998f12110 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0085_for_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 33) 1SOURCE_FILE@[0; 33)
2 FN_DEF@[0; 32) 2 FN_DEF@[0; 32)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt b/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt
index 560931645..1034846c8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0085_match_arms_commas.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 83) 1SOURCE_FILE@[0; 83)
2 FN_DEF@[0; 82) 2 FN_DEF@[0; 82)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt
index dcdeff609..42df7c450 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0086_array_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 55) 1SOURCE_FILE@[0; 55)
2 FN_DEF@[0; 54) 2 FN_DEF@[0; 54)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt b/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt
index f1b0e2787..69f0a48ce 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0086_no_semi_after_block.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 107) 1SOURCE_FILE@[0; 107)
2 FN_DEF@[0; 106) 2 FN_DEF@[0; 106)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt
index 91edf3f84..48e0026af 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0087_stmt_postfix_expr_ambiguity.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 84) 1SOURCE_FILE@[0; 84)
2 FN_DEF@[0; 83) 2 FN_DEF@[0; 83)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt
index ff1298acb..d8c599537 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0088_stmt_bin_expr_ambiguity.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 46) 1SOURCE_FILE@[0; 46)
2 FN_DEF@[0; 45) 2 FN_DEF@[0; 45)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt
index 99e8dd427..72987308d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0089_slice_pat.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 39) 1SOURCE_FILE@[0; 39)
2 FN_DEF@[0; 38) 2 FN_DEF@[0; 38)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt b/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt
index c35bc8428..bb87e1d06 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0091_fn_decl.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 22) 1SOURCE_FILE@[0; 22)
2 TRAIT_DEF@[0; 21) 2 TRAIT_DEF@[0; 21)
3 TRAIT_KW@[0; 5) 3 TRAIT_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt b/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt
index 3128bfd7d..99b289d56 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0092_literal_pattern.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 95) 1SOURCE_FILE@[0; 95)
2 FN_DEF@[0; 94) 2 FN_DEF@[0; 94)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt b/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt
index 26a690d3a..ba1163c2d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0093_path_fn_trait_args.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 32) 1SOURCE_FILE@[0; 32)
2 TYPE_DEF@[0; 31) 2 TYPE_DEF@[0; 31)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt b/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt
index 4f14d5431..12ccc1314 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0094_range_pat.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 47) 1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 46)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt
index 4b864f741..911a27ea1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0095_path_type_with_bounds.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 27) 1SOURCE_FILE@[0; 27)
2 FN_DEF@[0; 26) 2 FN_DEF@[0; 26)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt
index 3c8352067..f2d7e866b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0096_value_parameters_no_patterns.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 54) 1SOURCE_FILE@[0; 54)
2 TYPE_DEF@[0; 53) 2 TYPE_DEF@[0; 53)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt
index 39bab8dd2..2ce7a6714 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0097_param_list_opt_patterns.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 35) 1SOURCE_FILE@[0; 35)
2 FN_DEF@[0; 34) 2 FN_DEF@[0; 34)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt
index 9fe803554..54c3d64f1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0098_where_clause.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 87) 1SOURCE_FILE@[0; 87)
2 FN_DEF@[0; 86) 2 FN_DEF@[0; 86)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt b/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt
index 96a4e9162..ff5add838 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0099_crate_keyword_vis.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 20) 1SOURCE_FILE@[0; 20)
2 FN_DEF@[0; 19) 2 FN_DEF@[0; 19)
3 VISIBILITY@[0; 5) 3 VISIBILITY@[0; 5)
4 CRATE_KW@[0; 5) 4 CRATE_KW@[0; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt
index c81ae5545..d07fe70b2 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0100_dyn_trait_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 42) 1SOURCE_FILE@[0; 42)
2 TYPE_DEF@[0; 41) 2 TYPE_DEF@[0; 41)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt b/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt
index 99516bf15..394fc7f5b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0101_qual_paths.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 71) 1SOURCE_FILE@[0; 71)
2 TYPE_DEF@[0; 26) 2 TYPE_DEF@[0; 26)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt
index 19f77fb73..caef145ce 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0102_full_range_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 21) 1SOURCE_FILE@[0; 21)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt b/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt
index 420712e89..e02ebf400 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0103_field_attrs.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 64) 1SOURCE_FILE@[0; 64)
2 STRUCT_DEF@[0; 63) 2 STRUCT_DEF@[0; 63)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt b/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt
index 9a306921e..b2f04ea7b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0104_arb_self_types.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 69) 1SOURCE_FILE@[0; 69)
2 IMPL_ITEM@[0; 68) 2 IMPL_ITEM@[0; 68)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt
index 1c78704fa..39be5b2c8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0105_continue_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 69) 1SOURCE_FILE@[0; 69)
2 FN_DEF@[0; 68) 2 FN_DEF@[0; 68)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt b/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt
index 92b6b8bea..1877311e8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0106_break_expr.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 102) 1SOURCE_FILE@[0; 102)
2 FN_DEF@[0; 101) 2 FN_DEF@[0; 101)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0107_label.txt b/crates/ra_syntax/tests/data/parser/inline/0107_label.txt
index 768515595..c641c3b16 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0107_label.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0107_label.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 74) 1SOURCE_FILE@[0; 74)
2 FN_DEF@[0; 73) 2 FN_DEF@[0; 73)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt b/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt
index d00305b97..75533ecc1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0108_misplaced_label_err.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt b/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt
index f9b34cc5e..058639375 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0109_struct_items.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 106) 1SOURCE_FILE@[0; 106)
2 STRUCT_DEF@[0; 11) 2 STRUCT_DEF@[0; 11)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt b/crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt
index e2e755414..2d2fb1a0b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0110_union_items.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 51) 1SOURCE_FILE@[0; 51)
2 STRUCT_DEF@[0; 12) 2 STRUCT_DEF@[0; 12)
3 UNION_KW@[0; 5) 3 UNION_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0111_impl_type.txt b/crates/ra_syntax/tests/data/parser/inline/0111_impl_type.txt
index a2907b060..7279d5cae 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0111_impl_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0111_impl_type.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 87) 1SOURCE_FILE@[0; 87)
2 IMPL_ITEM@[0; 12) 2 IMPL_ITEM@[0; 12)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0112_crate_path.txt b/crates/ra_syntax/tests/data/parser/inline/0112_crate_path.txt
index 4c871ccdd..382286457 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0112_crate_path.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0112_crate_path.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 16) 1SOURCE_FILE@[0; 16)
2 USE_ITEM@[0; 15) 2 USE_ITEM@[0; 15)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
diff --git a/crates/ra_syntax/tests/data/parser/inline/0113_where_pred_for.txt b/crates/ra_syntax/tests/data/parser/inline/0113_where_pred_for.txt
index 08aacc77a..921bdacf4 100644
--- a/crates/ra_syntax/tests/data/parser/inline/0113_where_pred_for.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/0113_where_pred_for.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 49) 1SOURCE_FILE@[0; 49)
2 FN_DEF@[0; 48) 2 FN_DEF@[0; 48)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt b/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt
index 9f505ee96..08f5a942f 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0000_empty.txt
@@ -1 +1 @@
ROOT@[0; 0) SOURCE_FILE@[0; 0)
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
index aa2f1b712..12497e1a9 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 32) 1SOURCE_FILE@[0; 32)
2 STRUCT_DEF@[0; 31) 2 STRUCT_DEF@[0; 31)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index 0b65387ef..2f588c598 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 25) 1SOURCE_FILE@[0; 25)
2 STRUCT_DEF@[0; 25) 2 STRUCT_DEF@[0; 25)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index bb8874ead..31395ffc2 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt
@@ -1,2 +1,2 @@
1ROOT@[0; 20) 1SOURCE_FILE@[0; 20)
2 SHEBANG@[0; 20) 2 SHEBANG@[0; 20)
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
index 8ed92f2a4..c5eb46888 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 13) 1SOURCE_FILE@[0; 13)
2 FN_DEF@[0; 12) 2 FN_DEF@[0; 12)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 2b64c497f..05b114b54 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 236) 1SOURCE_FILE@[0; 236)
2 ATTR@[0; 8) 2 ATTR@[0; 8)
3 POUND@[0; 1) 3 POUND@[0; 1)
4 EXCL@[1; 2) 4 EXCL@[1; 2)
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
index 12193397e..5adf3f276 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 43) 1SOURCE_FILE@[0; 43)
2 EXTERN_CRATE_ITEM@[0; 17) 2 EXTERN_CRATE_ITEM@[0; 17)
3 EXTERN_KW@[0; 6) 3 EXTERN_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index c790f8431..139349fed 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 118) 1SOURCE_FILE@[0; 118)
2 MODULE@[0; 6) 2 MODULE@[0; 6)
3 MOD_KW@[0; 3) 3 MOD_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
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
index 4bcd15357..9e67d176a 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 19) 1SOURCE_FILE@[0; 19)
2 USE_ITEM@[0; 8) 2 USE_ITEM@[0; 8)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
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
index f76ea1a35..d0d2c17ed 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 40) 1SOURCE_FILE@[0; 40)
2 USE_ITEM@[0; 20) 2 USE_ITEM@[0; 20)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
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
index 203a07193..0f5f37474 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 35) 1SOURCE_FILE@[0; 35)
2 FN_DEF@[0; 34) 2 FN_DEF@[0; 34)
3 ATTR@[0; 12) 3 ATTR@[0; 12)
4 POUND@[0; 1) 4 POUND@[0; 1)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt
index 66901af54..15f547d29 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 98) 1SOURCE_FILE@[0; 98)
2 FN_DEF@[0; 9) 2 FN_DEF@[0; 9)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 95be4f75d..1ed498f82 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 65) 1SOURCE_FILE@[0; 65)
2 USE_ITEM@[0; 14) 2 USE_ITEM@[0; 14)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
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
index 4aa539159..55eee5acc 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 81) 1SOURCE_FILE@[0; 81)
2 USE_ITEM@[0; 6) 2 USE_ITEM@[0; 6)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
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
index aa4ef3715..8a4117673 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 55) 1SOURCE_FILE@[0; 55)
2 USE_ITEM@[0; 15) 2 USE_ITEM@[0; 15)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
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
index 349481157..1d355823d 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 97) 1SOURCE_FILE@[0; 97)
2 STRUCT_DEF@[0; 9) 2 STRUCT_DEF@[0; 9)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index 8cfd77256..d49341bc5 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 23) 1SOURCE_FILE@[0; 23)
2 FN_DEF@[0; 22) 2 FN_DEF@[0; 22)
3 ATTR@[0; 10) 3 ATTR@[0; 10)
4 POUND@[0; 1) 4 POUND@[0; 1)
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
index a98e823f6..491d154df 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 290) 1SOURCE_FILE@[0; 290)
2 STRUCT_DEF@[0; 13) 2 STRUCT_DEF@[0; 13)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt b/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt
index 6333e47c5..6925219e8 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 182) 1SOURCE_FILE@[0; 182)
2 ENUM_DEF@[0; 11) 2 ENUM_DEF@[0; 11)
3 ENUM_KW@[0; 4) 3 ENUM_KW@[0; 4)
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5)
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
index ac1a58e9a..b70a1d19a 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 200) 1SOURCE_FILE@[0; 200)
2 STRUCT_DEF@[0; 12) 2 STRUCT_DEF@[0; 12)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index 5ceef46e0..6644d6ca2 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 71) 1SOURCE_FILE@[0; 71)
2 FN_DEF@[0; 19) 2 FN_DEF@[0; 19)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6)
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
index 2099e2433..8f044e0b1 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 27) 1SOURCE_FILE@[0; 27)
2 EXTERN_BLOCK@[0; 10) 2 EXTERN_BLOCK@[0; 10)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6)
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
index 5c1a3a7a5..f7b107d1d 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 47) 1SOURCE_FILE@[0; 47)
2 STATIC_DEF@[0; 20) 2 STATIC_DEF@[0; 20)
3 STATIC_KW@[0; 6) 3 STATIC_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7)
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
index d0e5842da..9cebc4673 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 46) 1SOURCE_FILE@[0; 46)
2 CONST_DEF@[0; 20) 2 CONST_DEF@[0; 20)
3 CONST_KW@[0; 5) 3 CONST_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
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
index 363b3576e..e34ae9c65 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 35) 1SOURCE_FILE@[0; 35)
2 FN_DEF@[0; 34) 2 FN_DEF@[0; 34)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index d45fc2559..6837c05ff 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 34) 1SOURCE_FILE@[0; 34)
2 FN_DEF@[0; 33) 2 FN_DEF@[0; 33)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 5a39fa98c..fe1a1ccbf 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 53) 1SOURCE_FILE@[0; 53)
2 FN_DEF@[0; 52) 2 FN_DEF@[0; 52)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 27efd180f..1427e08fc 100644
--- 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
@@ -1,4 +1,4 @@
1ROOT@[0; 248) 1SOURCE_FILE@[0; 248)
2 FN_DEF@[0; 247) 2 FN_DEF@[0; 247)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
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
index 6d6d2f4d0..2e7703c21 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 79) 1SOURCE_FILE@[0; 79)
2 FN_DEF@[0; 78) 2 FN_DEF@[0; 78)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt b/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt
index ddd666407..b89f34884 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 164) 1SOURCE_FILE@[0; 164)
2 TRAIT_DEF@[0; 66) 2 TRAIT_DEF@[0; 66)
3 VISIBILITY@[0; 3) 3 VISIBILITY@[0; 3)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt b/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt
index f3f1c25a9..9091c08e2 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 1598) 1SOURCE_FILE@[0; 1598)
2 EXTERN_BLOCK@[0; 1597) 2 EXTERN_BLOCK@[0; 1597)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6)
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
index e3b9386a8..150a9e483 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 116) 1SOURCE_FILE@[0; 116)
2 FN_DEF@[0; 115) 2 FN_DEF@[0; 115)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[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
index 201eca644..1c2bf82c9 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 506) 1SOURCE_FILE@[0; 506)
2 FN_DEF@[0; 505) 2 FN_DEF@[0; 505)
3 COMMENT@[0; 33) 3 COMMENT@[0; 33)
4 WHITESPACE@[33; 34) 4 WHITESPACE@[33; 34)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt b/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt
index 74af9d71b..caff8df76 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0034_macro_2.0.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 350) 1SOURCE_FILE@[0; 350)
2 MACRO_CALL@[0; 41) 2 MACRO_CALL@[0; 41)
3 PATH@[0; 5) 3 PATH@[0; 5)
4 PATH_SEGMENT@[0; 5) 4 PATH_SEGMENT@[0; 5)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt b/crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt
index 1a8ca761d..cf9a1a2fa 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0034_macro_stuck.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 350) 1SOURCE_FILE@[0; 350)
2 MACRO_CALL@[0; 41) 2 MACRO_CALL@[0; 41)
3 PATH@[0; 5) 3 PATH@[0; 5)
4 PATH_SEGMENT@[0; 5) 4 PATH_SEGMENT@[0; 5)
diff --git a/crates/ra_syntax/tests/data/parser/ok/0035_crate_path_in_call.txt b/crates/ra_syntax/tests/data/parser/ok/0035_crate_path_in_call.txt
index 364315180..3995f476c 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0035_crate_path_in_call.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0035_crate_path_in_call.txt
@@ -1,4 +1,4 @@
1ROOT@[0; 62) 1SOURCE_FILE@[0; 62)
2 FN_DEF@[0; 61) 2 FN_DEF@[0; 61)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)