aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/assists
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/assists')
-rw-r--r--crates/ra_assists/src/assists/add_missing_impl_members.rs6
-rw-r--r--crates/ra_assists/src/assists/fill_match_arms.rs25
-rw-r--r--crates/ra_assists/src/assists/move_bounds.rs9
3 files changed, 17 insertions, 23 deletions
diff --git a/crates/ra_assists/src/assists/add_missing_impl_members.rs b/crates/ra_assists/src/assists/add_missing_impl_members.rs
index 11d69a04b..22d20909d 100644
--- a/crates/ra_assists/src/assists/add_missing_impl_members.rs
+++ b/crates/ra_assists/src/assists/add_missing_impl_members.rs
@@ -4,7 +4,7 @@ use ra_syntax::{
4 SmolStr, 4 SmolStr,
5}; 5};
6 6
7use crate::{ast_builder::AstBuilder, ast_editor::AstEditor, Assist, AssistCtx, AssistId}; 7use crate::{ast_builder::Make, ast_editor::AstEditor, Assist, AssistCtx, AssistId};
8 8
9#[derive(PartialEq)] 9#[derive(PartialEq)]
10enum AddMissingImplMembersMode { 10enum AddMissingImplMembersMode {
@@ -102,9 +102,7 @@ fn strip_docstring(item: ast::ImplItem) -> ast::ImplItem {
102fn add_body(fn_def: ast::FnDef) -> ast::FnDef { 102fn add_body(fn_def: ast::FnDef) -> ast::FnDef {
103 let mut ast_editor = AstEditor::new(fn_def.clone()); 103 let mut ast_editor = AstEditor::new(fn_def.clone());
104 if fn_def.body().is_none() { 104 if fn_def.body().is_none() {
105 ast_editor.set_body(&AstBuilder::<ast::Block>::single_expr( 105 ast_editor.set_body(&Make::<ast::Block>::single_expr(Make::<ast::Expr>::unimplemented()));
106 AstBuilder::<ast::Expr>::unimplemented(),
107 ));
108 } 106 }
109 ast_editor.ast().to_owned() 107 ast_editor.ast().to_owned()
110} 108}
diff --git a/crates/ra_assists/src/assists/fill_match_arms.rs b/crates/ra_assists/src/assists/fill_match_arms.rs
index f1c36b805..817433526 100644
--- a/crates/ra_assists/src/assists/fill_match_arms.rs
+++ b/crates/ra_assists/src/assists/fill_match_arms.rs
@@ -3,7 +3,7 @@ use std::iter;
3use hir::{db::HirDatabase, Adt, HasSource}; 3use hir::{db::HirDatabase, Adt, HasSource};
4use ra_syntax::ast::{self, AstNode, NameOwner}; 4use ra_syntax::ast::{self, AstNode, NameOwner};
5 5
6use crate::{ast_builder::AstBuilder, Assist, AssistCtx, AssistId}; 6use crate::{ast_builder::Make, Assist, AssistCtx, AssistId};
7 7
8pub(crate) fn fill_match_arms(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 8pub(crate) fn fill_match_arms(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
9 let match_expr = ctx.node_at_offset::<ast::MatchExpr>()?; 9 let match_expr = ctx.node_at_offset::<ast::MatchExpr>()?;
@@ -29,13 +29,10 @@ pub(crate) fn fill_match_arms(mut ctx: AssistCtx<impl HirDatabase>) -> Option<As
29 29
30 ctx.add_action(AssistId("fill_match_arms"), "fill match arms", |edit| { 30 ctx.add_action(AssistId("fill_match_arms"), "fill match arms", |edit| {
31 let variants = variant_list.variants(); 31 let variants = variant_list.variants();
32 let arms = variants.filter_map(build_pat).map(|pat| { 32 let arms = variants
33 AstBuilder::<ast::MatchArm>::from_pieces( 33 .filter_map(build_pat)
34 iter::once(pat), 34 .map(|pat| Make::<ast::MatchArm>::from(iter::once(pat), Make::<ast::Expr>::unit()));
35 AstBuilder::<ast::Expr>::unit(), 35 let new_arm_list = Make::<ast::MatchArmList>::from_arms(arms);
36 )
37 });
38 let new_arm_list = AstBuilder::<ast::MatchArmList>::from_arms(arms);
39 36
40 edit.target(match_expr.syntax().text_range()); 37 edit.target(match_expr.syntax().text_range());
41 edit.set_cursor(expr.syntax().text_range().start()); 38 edit.set_cursor(expr.syntax().text_range().start());
@@ -66,21 +63,21 @@ fn resolve_enum_def(
66} 63}
67 64
68fn build_pat(var: ast::EnumVariant) -> Option<ast::Pat> { 65fn build_pat(var: ast::EnumVariant) -> Option<ast::Pat> {
69 let path = AstBuilder::<ast::Path>::from_pieces(var.parent_enum().name()?, var.name()?); 66 let path = Make::<ast::Path>::from(var.parent_enum().name()?, var.name()?);
70 67
71 let pat: ast::Pat = match var.kind() { 68 let pat: ast::Pat = match var.kind() {
72 ast::StructKind::Tuple(field_list) => { 69 ast::StructKind::Tuple(field_list) => {
73 let pats = iter::repeat(AstBuilder::<ast::PlaceholderPat>::placeholder().into()) 70 let pats = iter::repeat(Make::<ast::PlaceholderPat>::placeholder().into())
74 .take(field_list.fields().count()); 71 .take(field_list.fields().count());
75 AstBuilder::<ast::TupleStructPat>::from_pieces(path, pats).into() 72 Make::<ast::TupleStructPat>::from(path, pats).into()
76 } 73 }
77 ast::StructKind::Named(field_list) => { 74 ast::StructKind::Named(field_list) => {
78 let pats = field_list 75 let pats = field_list
79 .fields() 76 .fields()
80 .map(|f| AstBuilder::<ast::BindPat>::from_name(f.name().unwrap()).into()); 77 .map(|f| Make::<ast::BindPat>::from_name(f.name().unwrap()).into());
81 AstBuilder::<ast::RecordPat>::from_pieces(path, pats).into() 78 Make::<ast::RecordPat>::from(path, pats).into()
82 } 79 }
83 ast::StructKind::Unit => AstBuilder::<ast::PathPat>::from_path(path).into(), 80 ast::StructKind::Unit => Make::<ast::PathPat>::from_path(path).into(),
84 }; 81 };
85 82
86 Some(pat) 83 Some(pat)
diff --git a/crates/ra_assists/src/assists/move_bounds.rs b/crates/ra_assists/src/assists/move_bounds.rs
index aa9036fed..6fd2fb72b 100644
--- a/crates/ra_assists/src/assists/move_bounds.rs
+++ b/crates/ra_assists/src/assists/move_bounds.rs
@@ -6,7 +6,7 @@ use ra_syntax::{
6 TextRange, 6 TextRange,
7}; 7};
8 8
9use crate::{ast_builder::AstBuilder, Assist, AssistCtx, AssistId}; 9use crate::{ast_builder::Make, Assist, AssistCtx, AssistId};
10 10
11pub(crate) fn move_bounds_to_where_clause(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { 11pub(crate) fn move_bounds_to_where_clause(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
12 let type_param_list = ctx.node_at_offset::<ast::TypeParamList>()?; 12 let type_param_list = ctx.node_at_offset::<ast::TypeParamList>()?;
@@ -52,7 +52,7 @@ pub(crate) fn move_bounds_to_where_clause(mut ctx: AssistCtx<impl HirDatabase>)
52 } 52 }
53 53
54 let predicates = type_params.iter().filter_map(build_predicate); 54 let predicates = type_params.iter().filter_map(build_predicate);
55 let where_clause = AstBuilder::<ast::WhereClause>::from_predicates(predicates); 55 let where_clause = Make::<ast::WhereClause>::from_predicates(predicates);
56 56
57 let to_insert = match anchor.prev_sibling_or_token() { 57 let to_insert = match anchor.prev_sibling_or_token() {
58 Some(ref elem) if elem.kind() == WHITESPACE => { 58 Some(ref elem) if elem.kind() == WHITESPACE => {
@@ -69,9 +69,8 @@ pub(crate) fn move_bounds_to_where_clause(mut ctx: AssistCtx<impl HirDatabase>)
69} 69}
70 70
71fn build_predicate(param: &ast::TypeParam) -> Option<ast::WherePred> { 71fn build_predicate(param: &ast::TypeParam) -> Option<ast::WherePred> {
72 let path = AstBuilder::<ast::Path>::from_name(param.name()?); 72 let path = Make::<ast::Path>::from_name(param.name()?);
73 let predicate = 73 let predicate = Make::<ast::WherePred>::from(path, param.type_bound_list()?.bounds());
74 AstBuilder::<ast::WherePred>::from_pieces(path, param.type_bound_list()?.bounds());
75 Some(predicate) 74 Some(predicate)
76} 75}
77 76