diff options
Diffstat (limited to 'crates/assists/src/handlers')
9 files changed, 21 insertions, 17 deletions
diff --git a/crates/assists/src/handlers/early_return.rs b/crates/assists/src/handlers/early_return.rs index 7bcc318a9..2c48f32bf 100644 --- a/crates/assists/src/handlers/early_return.rs +++ b/crates/assists/src/handlers/early_return.rs | |||
@@ -69,7 +69,7 @@ pub(crate) fn convert_to_guarded_return(acc: &mut Assists, ctx: &AssistContext) | |||
69 | 69 | ||
70 | let parent_block = if_expr.syntax().parent()?.ancestors().find_map(ast::BlockExpr::cast)?; | 70 | let parent_block = if_expr.syntax().parent()?.ancestors().find_map(ast::BlockExpr::cast)?; |
71 | 71 | ||
72 | if parent_block.expr()? != if_expr.clone().into() { | 72 | if parent_block.tail_expr()? != if_expr.clone().into() { |
73 | return None; | 73 | return None; |
74 | } | 74 | } |
75 | 75 | ||
diff --git a/crates/assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/assists/src/handlers/extract_struct_from_enum_variant.rs index 030b9cd0c..6f35a061c 100644 --- a/crates/assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/assists/src/handlers/extract_struct_from_enum_variant.rs | |||
@@ -117,10 +117,14 @@ fn existing_definition(db: &RootDatabase, variant_name: &ast::Name, variant: &Va | |||
117 | .into_iter() | 117 | .into_iter() |
118 | .filter(|(_, def)| match def { | 118 | .filter(|(_, def)| match def { |
119 | // only check type-namespace | 119 | // only check type-namespace |
120 | hir::ScopeDef::ModuleDef(def) => matches!(def, | 120 | hir::ScopeDef::ModuleDef(def) => matches!( |
121 | ModuleDef::Module(_) | ModuleDef::Adt(_) | | 121 | def, |
122 | ModuleDef::Variant(_) | ModuleDef::Trait(_) | | 122 | ModuleDef::Module(_) |
123 | ModuleDef::TypeAlias(_) | ModuleDef::BuiltinType(_) | 123 | | ModuleDef::Adt(_) |
124 | | ModuleDef::Variant(_) | ||
125 | | ModuleDef::Trait(_) | ||
126 | | ModuleDef::TypeAlias(_) | ||
127 | | ModuleDef::BuiltinType(_) | ||
124 | ), | 128 | ), |
125 | _ => false, | 129 | _ => false, |
126 | }) | 130 | }) |
diff --git a/crates/assists/src/handlers/extract_variable.rs b/crates/assists/src/handlers/extract_variable.rs index 9957012fe..291809205 100644 --- a/crates/assists/src/handlers/extract_variable.rs +++ b/crates/assists/src/handlers/extract_variable.rs | |||
@@ -139,7 +139,7 @@ impl Anchor { | |||
139 | fn from(to_extract: &ast::Expr) -> Option<Anchor> { | 139 | fn from(to_extract: &ast::Expr) -> Option<Anchor> { |
140 | to_extract.syntax().ancestors().find_map(|node| { | 140 | to_extract.syntax().ancestors().find_map(|node| { |
141 | if let Some(expr) = | 141 | if let Some(expr) = |
142 | node.parent().and_then(ast::BlockExpr::cast).and_then(|it| it.expr()) | 142 | node.parent().and_then(ast::BlockExpr::cast).and_then(|it| it.tail_expr()) |
143 | { | 143 | { |
144 | if expr.syntax() == &node { | 144 | if expr.syntax() == &node { |
145 | mark::hit!(test_extract_var_last_expr); | 145 | mark::hit!(test_extract_var_last_expr); |
diff --git a/crates/assists/src/handlers/infer_function_return_type.rs b/crates/assists/src/handlers/infer_function_return_type.rs index aa584eb03..f499cdfdc 100644 --- a/crates/assists/src/handlers/infer_function_return_type.rs +++ b/crates/assists/src/handlers/infer_function_return_type.rs | |||
@@ -89,7 +89,7 @@ fn extract_tail(ctx: &AssistContext) -> Option<(FnType, ast::Expr, InsertOrRepla | |||
89 | let body = closure.body()?; | 89 | let body = closure.body()?; |
90 | let body_start = body.syntax().first_token()?.text_range().start(); | 90 | let body_start = body.syntax().first_token()?.text_range().start(); |
91 | let (tail_expr, wrap_expr) = match body { | 91 | let (tail_expr, wrap_expr) = match body { |
92 | ast::Expr::BlockExpr(block) => (block.expr()?, false), | 92 | ast::Expr::BlockExpr(block) => (block.tail_expr()?, false), |
93 | body => (body, true), | 93 | body => (body, true), |
94 | }; | 94 | }; |
95 | 95 | ||
@@ -101,7 +101,7 @@ fn extract_tail(ctx: &AssistContext) -> Option<(FnType, ast::Expr, InsertOrRepla | |||
101 | let action = ret_ty_to_action(func.ret_type(), rparen_pos)?; | 101 | let action = ret_ty_to_action(func.ret_type(), rparen_pos)?; |
102 | 102 | ||
103 | let body = func.body()?; | 103 | let body = func.body()?; |
104 | let tail_expr = body.expr()?; | 104 | let tail_expr = body.tail_expr()?; |
105 | 105 | ||
106 | let ret_range_end = body.l_curly_token()?.text_range().start(); | 106 | let ret_range_end = body.l_curly_token()?.text_range().start(); |
107 | let ret_range = TextRange::new(rparen_pos, ret_range_end); | 107 | let ret_range = TextRange::new(rparen_pos, ret_range_end); |
diff --git a/crates/assists/src/handlers/inline_function.rs b/crates/assists/src/handlers/inline_function.rs index 2edf252b7..6e351bdcd 100644 --- a/crates/assists/src/handlers/inline_function.rs +++ b/crates/assists/src/handlers/inline_function.rs | |||
@@ -71,7 +71,7 @@ pub(crate) fn inline_function(acc: &mut Assists, ctx: &AssistContext) -> Option< | |||
71 | statements.extend(body.statements()); | 71 | statements.extend(body.statements()); |
72 | 72 | ||
73 | let original_indentation = call.indent_level(); | 73 | let original_indentation = call.indent_level(); |
74 | let replacement = make::block_expr(statements, body.expr()) | 74 | let replacement = make::block_expr(statements, body.tail_expr()) |
75 | .reset_indent() | 75 | .reset_indent() |
76 | .indent(original_indentation); | 76 | .indent(original_indentation); |
77 | 77 | ||
diff --git a/crates/assists/src/handlers/move_guard.rs b/crates/assists/src/handlers/move_guard.rs index eaffd80ce..4318ca6dc 100644 --- a/crates/assists/src/handlers/move_guard.rs +++ b/crates/assists/src/handlers/move_guard.rs | |||
@@ -98,7 +98,7 @@ pub(crate) fn move_arm_cond_to_match_guard(acc: &mut Assists, ctx: &AssistContex | |||
98 | let mut replace_node = None; | 98 | let mut replace_node = None; |
99 | let if_expr: IfExpr = IfExpr::cast(arm_body.syntax().clone()).or_else(|| { | 99 | let if_expr: IfExpr = IfExpr::cast(arm_body.syntax().clone()).or_else(|| { |
100 | let block_expr = BlockExpr::cast(arm_body.syntax().clone())?; | 100 | let block_expr = BlockExpr::cast(arm_body.syntax().clone())?; |
101 | if let Expr::IfExpr(e) = block_expr.expr()? { | 101 | if let Expr::IfExpr(e) = block_expr.tail_expr()? { |
102 | replace_node = Some(block_expr.syntax().clone()); | 102 | replace_node = Some(block_expr.syntax().clone()); |
103 | Some(e) | 103 | Some(e) |
104 | } else { | 104 | } else { |
@@ -128,7 +128,7 @@ pub(crate) fn move_arm_cond_to_match_guard(acc: &mut Assists, ctx: &AssistContex | |||
128 | |edit| { | 128 | |edit| { |
129 | let then_only_expr = then_block.statements().next().is_none(); | 129 | let then_only_expr = then_block.statements().next().is_none(); |
130 | 130 | ||
131 | match &then_block.expr() { | 131 | match &then_block.tail_expr() { |
132 | Some(then_expr) if then_only_expr => { | 132 | Some(then_expr) if then_only_expr => { |
133 | edit.replace(replace_node.text_range(), then_expr.syntax().text()) | 133 | edit.replace(replace_node.text_range(), then_expr.syntax().text()) |
134 | } | 134 | } |
diff --git a/crates/assists/src/handlers/pull_assignment_up.rs b/crates/assists/src/handlers/pull_assignment_up.rs index 560d93e10..63b662fad 100644 --- a/crates/assists/src/handlers/pull_assignment_up.rs +++ b/crates/assists/src/handlers/pull_assignment_up.rs | |||
@@ -118,7 +118,7 @@ fn exprify_block( | |||
118 | sema: &hir::Semantics<ide_db::RootDatabase>, | 118 | sema: &hir::Semantics<ide_db::RootDatabase>, |
119 | name: &ast::Expr, | 119 | name: &ast::Expr, |
120 | ) -> Option<ast::BlockExpr> { | 120 | ) -> Option<ast::BlockExpr> { |
121 | if block.expr().is_some() { | 121 | if block.tail_expr().is_some() { |
122 | return None; | 122 | return None; |
123 | } | 123 | } |
124 | 124 | ||
diff --git a/crates/assists/src/handlers/replace_if_let_with_match.rs b/crates/assists/src/handlers/replace_if_let_with_match.rs index 4a355c66f..b67219222 100644 --- a/crates/assists/src/handlers/replace_if_let_with_match.rs +++ b/crates/assists/src/handlers/replace_if_let_with_match.rs | |||
@@ -138,7 +138,7 @@ pub(crate) fn replace_match_with_if_let(acc: &mut Assists, ctx: &AssistContext) | |||
138 | }; | 138 | }; |
139 | let else_expr = match else_expr { | 139 | let else_expr = match else_expr { |
140 | ast::Expr::BlockExpr(block) | 140 | ast::Expr::BlockExpr(block) |
141 | if block.statements().count() == 0 && block.expr().is_none() => | 141 | if block.statements().count() == 0 && block.tail_expr().is_none() => |
142 | { | 142 | { |
143 | None | 143 | None |
144 | } | 144 | } |
diff --git a/crates/assists/src/handlers/wrap_return_type_in_result.rs b/crates/assists/src/handlers/wrap_return_type_in_result.rs index 59e5debb1..358b61046 100644 --- a/crates/assists/src/handlers/wrap_return_type_in_result.rs +++ b/crates/assists/src/handlers/wrap_return_type_in_result.rs | |||
@@ -98,7 +98,7 @@ impl TailReturnCollector { | |||
98 | } | 98 | } |
99 | 99 | ||
100 | // Browse tail expressions for each block | 100 | // Browse tail expressions for each block |
101 | if let Some(expr) = block_expr.expr() { | 101 | if let Some(expr) = block_expr.tail_expr() { |
102 | if let Some(last_exprs) = get_tail_expr_from_block(&expr) { | 102 | if let Some(last_exprs) = get_tail_expr_from_block(&expr) { |
103 | for last_expr in last_exprs { | 103 | for last_expr in last_exprs { |
104 | let last_expr = match last_expr { | 104 | let last_expr = match last_expr { |
@@ -170,7 +170,7 @@ impl TailReturnCollector { | |||
170 | } | 170 | } |
171 | 171 | ||
172 | fn collect_tail_exprs(&mut self, block: &BlockExpr) { | 172 | fn collect_tail_exprs(&mut self, block: &BlockExpr) { |
173 | if let Some(expr) = block.expr() { | 173 | if let Some(expr) = block.tail_expr() { |
174 | self.handle_exprs(&expr, true); | 174 | self.handle_exprs(&expr, true); |
175 | self.fetch_tail_exprs(&expr); | 175 | self.fetch_tail_exprs(&expr); |
176 | } | 176 | } |
@@ -206,7 +206,7 @@ fn get_tail_expr_from_block(expr: &Expr) -> Option<Vec<NodeType>> { | |||
206 | Expr::IfExpr(if_expr) => { | 206 | Expr::IfExpr(if_expr) => { |
207 | let mut nodes = vec![]; | 207 | let mut nodes = vec![]; |
208 | for block in if_expr.blocks() { | 208 | for block in if_expr.blocks() { |
209 | if let Some(block_expr) = block.expr() { | 209 | if let Some(block_expr) = block.tail_expr() { |
210 | if let Some(tail_exprs) = get_tail_expr_from_block(&block_expr) { | 210 | if let Some(tail_exprs) = get_tail_expr_from_block(&block_expr) { |
211 | nodes.extend(tail_exprs); | 211 | nodes.extend(tail_exprs); |
212 | } | 212 | } |
@@ -228,7 +228,7 @@ fn get_tail_expr_from_block(expr: &Expr) -> Option<Vec<NodeType>> { | |||
228 | while_expr.syntax().last_child().map(|lc| vec![NodeType::Node(lc)]) | 228 | while_expr.syntax().last_child().map(|lc| vec![NodeType::Node(lc)]) |
229 | } | 229 | } |
230 | Expr::BlockExpr(block_expr) => { | 230 | Expr::BlockExpr(block_expr) => { |
231 | block_expr.expr().map(|lc| vec![NodeType::Node(lc.syntax().clone())]) | 231 | block_expr.tail_expr().map(|lc| vec![NodeType::Node(lc.syntax().clone())]) |
232 | } | 232 | } |
233 | Expr::MatchExpr(match_expr) => { | 233 | Expr::MatchExpr(match_expr) => { |
234 | let arm_list = match_expr.match_arm_list()?; | 234 | let arm_list = match_expr.match_arm_list()?; |