@@ -61,24 +61,28 @@ pub(crate) fn generate_default_from_new(acc: &mut Assists, ctx: &AssistContext<'
6161 }
6262
6363 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) ?;
6468
6569 acc. add (
6670 AssistId ( "generate_default_from_new" , crate :: AssistKind :: Generate ) ,
6771 "Generate a Default impl from a new fn" ,
6872 insert_location,
6973 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) ;
7474 builder. insert ( insert_location. end ( ) , code) ;
7575 } ,
7676 )
7777}
7878
7979// 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 ( ) ?;
8286 let generic_params = impl_. generic_param_list ( ) . map ( |generic_params| {
8387 let lifetime_params =
8488 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:
120124 }
121125 }
122126
123- buf
127+ Some ( buf)
124128}
125129
126130fn is_default_implemented ( ctx : & AssistContext < ' _ > , impl_ : & Impl ) -> bool {
0 commit comments