Skip to content

Commit 7228912

Browse files
committed
migrate getter make variant to SyntaxFactory
1 parent 6f1cf03 commit 7228912

1 file changed

Lines changed: 21 additions & 8 deletions

File tree

crates/ide-assists/src/utils.rs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,8 +1036,8 @@ enum ReferenceConversionType {
10361036
}
10371037

10381038
impl<'db> ReferenceConversion<'db> {
1039-
pub(crate) fn convert_type(&self, db: &'db dyn HirDatabase, module: hir::Module) -> ast::Type {
1040-
let ty = match self.conversion {
1039+
fn type_to_string(&self, db: &'db dyn HirDatabase, module: hir::Module) -> String {
1040+
match self.conversion {
10411041
ReferenceConversionType::Copy => self
10421042
.ty
10431043
.display_source_code(db, module.into(), true)
@@ -1087,25 +1087,38 @@ impl<'db> ReferenceConversion<'db> {
10871087
.unwrap_or_else(|_| "_".to_owned());
10881088
format!("Result<&{first_type_argument_name}, &{second_type_argument_name}>")
10891089
}
1090-
};
1090+
}
1091+
}
10911092

1093+
pub(crate) fn convert_type(&self, db: &'db dyn HirDatabase, module: hir::Module) -> ast::Type {
1094+
let ty = self.type_to_string(db, module);
10921095
make::ty(&ty)
10931096
}
10941097

1095-
pub(crate) fn getter(&self, field_name: String) -> ast::Expr {
1096-
let expr = make::expr_field(make::ext::expr_self(), &field_name);
1098+
pub(crate) fn convert_type_with_factory(
1099+
&self,
1100+
make: &SyntaxFactory,
1101+
db: &'db dyn HirDatabase,
1102+
module: hir::Module,
1103+
) -> ast::Type {
1104+
let ty = self.type_to_string(db, module);
1105+
make.ty(&ty)
1106+
}
1107+
1108+
pub(crate) fn getter(&self, make: &SyntaxFactory, field_name: String) -> ast::Expr {
1109+
let expr = make.expr_field(make.expr_self(), &field_name);
10971110

10981111
match self.conversion {
1099-
ReferenceConversionType::Copy => expr,
1112+
ReferenceConversionType::Copy => expr.into(),
11001113
ReferenceConversionType::AsRefStr
11011114
| ReferenceConversionType::AsRefSlice
11021115
| ReferenceConversionType::Dereferenced
11031116
| ReferenceConversionType::Option
11041117
| ReferenceConversionType::Result => {
11051118
if self.impls_deref {
1106-
make::expr_ref(expr, false)
1119+
make.expr_ref(expr.into(), false)
11071120
} else {
1108-
make::expr_method_call(expr, make::name_ref("as_ref"), make::arg_list([]))
1121+
make.expr_method_call(expr.into(), make.name_ref("as_ref"), make.arg_list([]))
11091122
.into()
11101123
}
11111124
}

0 commit comments

Comments
 (0)