@@ -4,8 +4,7 @@ use std::slice;
44
55pub ( crate ) use gen_trait_fn_body:: gen_trait_fn_body;
66use hir:: {
7- DisplayTarget , HasAttrs as HirHasAttrs , HirDisplay , InFile , ModuleDef , PathResolution ,
8- Semantics ,
7+ HasAttrs as HirHasAttrs , HirDisplay , InFile , ModuleDef , PathResolution , Semantics ,
98 db:: { ExpandDatabase , HirDatabase } ,
109} ;
1110use ide_db:: {
@@ -836,22 +835,21 @@ enum ReferenceConversionType {
836835}
837836
838837impl < ' db > ReferenceConversion < ' db > {
839- pub ( crate ) fn convert_type (
840- & self ,
841- db : & ' db dyn HirDatabase ,
842- display_target : DisplayTarget ,
843- ) -> ast:: Type {
838+ pub ( crate ) fn convert_type ( & self , db : & ' db dyn HirDatabase , module : hir:: Module ) -> ast:: Type {
844839 let ty = match self . conversion {
845- ReferenceConversionType :: Copy => self . ty . display ( db, display_target) . to_string ( ) ,
840+ ReferenceConversionType :: Copy => self
841+ . ty
842+ . display_source_code ( db, module. into ( ) , true )
843+ . unwrap_or_else ( |_| "_" . to_owned ( ) ) ,
846844 ReferenceConversionType :: AsRefStr => "&str" . to_owned ( ) ,
847845 ReferenceConversionType :: AsRefSlice => {
848846 let type_argument_name = self
849847 . ty
850848 . type_arguments ( )
851849 . next ( )
852850 . unwrap ( )
853- . display ( db, display_target )
854- . to_string ( ) ;
851+ . display_source_code ( db, module . into ( ) , true )
852+ . unwrap_or_else ( |_| "_" . to_owned ( ) ) ;
855853 format ! ( "&[{type_argument_name}]" )
856854 }
857855 ReferenceConversionType :: Dereferenced => {
@@ -860,8 +858,8 @@ impl<'db> ReferenceConversion<'db> {
860858 . type_arguments ( )
861859 . next ( )
862860 . unwrap ( )
863- . display ( db, display_target )
864- . to_string ( ) ;
861+ . display_source_code ( db, module . into ( ) , true )
862+ . unwrap_or_else ( |_| "_" . to_owned ( ) ) ;
865863 format ! ( "&{type_argument_name}" )
866864 }
867865 ReferenceConversionType :: Option => {
@@ -870,16 +868,22 @@ impl<'db> ReferenceConversion<'db> {
870868 . type_arguments ( )
871869 . next ( )
872870 . unwrap ( )
873- . display ( db, display_target )
874- . to_string ( ) ;
871+ . display_source_code ( db, module . into ( ) , true )
872+ . unwrap_or_else ( |_| "_" . to_owned ( ) ) ;
875873 format ! ( "Option<&{type_argument_name}>" )
876874 }
877875 ReferenceConversionType :: Result => {
878876 let mut type_arguments = self . ty . type_arguments ( ) ;
879- let first_type_argument_name =
880- type_arguments. next ( ) . unwrap ( ) . display ( db, display_target) . to_string ( ) ;
881- let second_type_argument_name =
882- type_arguments. next ( ) . unwrap ( ) . display ( db, display_target) . to_string ( ) ;
877+ let first_type_argument_name = type_arguments
878+ . next ( )
879+ . unwrap ( )
880+ . display_source_code ( db, module. into ( ) , true )
881+ . unwrap_or_else ( |_| "_" . to_owned ( ) ) ;
882+ let second_type_argument_name = type_arguments
883+ . next ( )
884+ . unwrap ( )
885+ . display_source_code ( db, module. into ( ) , true )
886+ . unwrap_or_else ( |_| "_" . to_owned ( ) ) ;
883887 format ! ( "Result<&{first_type_argument_name}, &{second_type_argument_name}>" )
884888 }
885889 } ;
0 commit comments