|
1 |
| -use hir::{Semantics, TypeParam}; |
| 1 | +use hir::Semantics; |
2 | 2 | use ide_db::{
|
3 | 3 | base_db::{FileId, FileRange},
|
4 | 4 | defs::Definition,
|
@@ -60,7 +60,9 @@ pub(crate) fn replace_named_generic_with_impl(
|
60 | 60 | }
|
61 | 61 |
|
62 | 62 | let type_param_hir_def = ctx.sema.to_def(&type_param)?;
|
63 |
| - if is_referenced_outside(ctx.db(), type_param_hir_def, &fn_, ctx.file_id()) { |
| 63 | + let type_param_def = Definition::GenericParam(hir::GenericParam::TypeParam(type_param_hir_def)); |
| 64 | + |
| 65 | + if is_referenced_outside(&ctx.sema, type_param_def, &fn_, ctx.file_id()) { |
64 | 66 | return None;
|
65 | 67 | }
|
66 | 68 |
|
@@ -100,27 +102,20 @@ pub(crate) fn replace_named_generic_with_impl(
|
100 | 102 | }
|
101 | 103 |
|
102 | 104 | fn is_referenced_outside(
|
103 |
| - db: &RootDatabase, |
104 |
| - type_param: TypeParam, |
| 105 | + sema: &Semantics<'_, RootDatabase>, |
| 106 | + type_param_def: Definition, |
105 | 107 | fn_: &ast::Fn,
|
106 | 108 | file_id: FileId,
|
107 | 109 | ) -> bool {
|
108 |
| - let semantics = Semantics::new(db); |
109 |
| - let type_param_def = Definition::GenericParam(hir::GenericParam::TypeParam(type_param)); |
110 |
| - |
111 | 110 | // limit search scope to function body & return type
|
112 | 111 | let search_ranges = vec![
|
113 | 112 | fn_.body().map(|body| body.syntax().text_range()),
|
114 | 113 | fn_.ret_type().map(|ret_type| ret_type.syntax().text_range()),
|
115 | 114 | ];
|
116 | 115 |
|
117 |
| - search_ranges.into_iter().filter_map(|search_range| search_range).any(|search_range| { |
| 116 | + search_ranges.into_iter().flatten().any(|search_range| { |
118 | 117 | let file_range = FileRange { file_id, range: search_range };
|
119 |
| - !type_param_def |
120 |
| - .usages(&semantics) |
121 |
| - .in_scope(SearchScope::file_range(file_range)) |
122 |
| - .all() |
123 |
| - .is_empty() |
| 118 | + !type_param_def.usages(sema).in_scope(SearchScope::file_range(file_range)).all().is_empty() |
124 | 119 | })
|
125 | 120 | }
|
126 | 121 |
|
|
0 commit comments