@@ -53,8 +53,7 @@ pub(crate) fn generate_default_from_new(acc: &mut Assists, ctx: &AssistContext)
53
53
}
54
54
55
55
let impl_ = fn_node. syntax ( ) . ancestors ( ) . into_iter ( ) . find_map ( ast:: Impl :: cast) ?;
56
- let implements_default = is_default_implemented ( ctx, & impl_) ?;
57
- if implements_default {
56
+ if is_default_implemented ( ctx, & impl_) {
58
57
return None ;
59
58
}
60
59
@@ -84,14 +83,25 @@ impl Default for {} {{
84
83
)
85
84
}
86
85
87
- fn is_default_implemented ( ctx : & AssistContext , impl_ : & Impl ) -> Option < bool > {
86
+ fn is_default_implemented ( ctx : & AssistContext , impl_ : & Impl ) -> bool {
88
87
let db = ctx. sema . db ;
89
- let impl_def = ctx. sema . to_def ( impl_) ?;
88
+ let impl_ = ctx. sema . to_def ( impl_) ;
89
+ let impl_def;
90
+ match impl_ {
91
+ Some ( value) => impl_def = value,
92
+ None => return false ,
93
+ }
94
+
90
95
let ty = impl_def. target_ty ( db) ;
91
96
let krate = impl_def. module ( db) . krate ( ) ;
92
- let default_trait = FamousDefs ( & ctx. sema , Some ( krate) ) . core_default_Default ( ) ?;
93
- let implements_default = ty. impls_trait ( db, default_trait, & [ ] ) ;
94
- Some ( implements_default)
97
+ let default = FamousDefs ( & ctx. sema , Some ( krate) ) . core_default_Default ( ) ;
98
+ let default_trait;
99
+ match default {
100
+ Some ( value) => default_trait = value,
101
+ None => return false ,
102
+ }
103
+
104
+ ty. impls_trait ( db, default_trait, & [ ] )
95
105
}
96
106
97
107
#[ cfg( test) ]
@@ -205,7 +215,7 @@ impl Exmaple {
205
215
r#"
206
216
struct Example { _inner: () }
207
217
208
- impl Exmaple {
218
+ impl Example {
209
219
pub fn n$0ew() -> Self {
210
220
Self { _inner: () }
211
221
}
0 commit comments