@@ -61,24 +61,28 @@ pub(crate) fn generate_default_from_new(acc: &mut Assists, ctx: &AssistContext<'
61
61
}
62
62
63
63
let insert_location = impl_. syntax ( ) . text_range ( ) ;
64
+ let default_code = " fn default() -> Self {
65
+ Self::new()
66
+ }" ;
67
+ let code = generate_trait_impl_text_from_impl ( & impl_, "Default" , default_code) ?;
64
68
65
69
acc. add (
66
70
AssistId ( "generate_default_from_new" , crate :: AssistKind :: Generate ) ,
67
71
"Generate a Default impl from a new fn" ,
68
72
insert_location,
69
73
move |builder| {
70
- let default_code = " fn default() -> Self {
71
- Self::new()
72
- }" ;
73
- let code = generate_trait_impl_text_from_impl ( & impl_, "Default" , default_code) ;
74
74
builder. insert ( insert_location. end ( ) , code) ;
75
75
} ,
76
76
)
77
77
}
78
78
79
79
// FIXME: based on from utils::generate_impl_text_inner
80
- fn generate_trait_impl_text_from_impl ( impl_ : & ast:: Impl , trait_text : & str , code : & str ) -> String {
81
- let impl_ty = impl_. self_ty ( ) . unwrap ( ) ;
80
+ fn generate_trait_impl_text_from_impl (
81
+ impl_ : & ast:: Impl ,
82
+ trait_text : & str ,
83
+ code : & str ,
84
+ ) -> Option < String > {
85
+ let impl_ty = impl_. self_ty ( ) ?;
82
86
let generic_params = impl_. generic_param_list ( ) . map ( |generic_params| {
83
87
let lifetime_params =
84
88
generic_params. lifetime_params ( ) . map ( ast:: GenericParam :: LifetimeParam ) ;
@@ -120,7 +124,7 @@ fn generate_trait_impl_text_from_impl(impl_: &ast::Impl, trait_text: &str, code:
120
124
}
121
125
}
122
126
123
- buf
127
+ Some ( buf)
124
128
}
125
129
126
130
fn is_default_implemented ( ctx : & AssistContext < ' _ > , impl_ : & Impl ) -> bool {
0 commit comments