diff options
author | Aleksey Kladov <[email protected]> | 2020-03-13 17:02:04 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-03-13 17:02:04 +0000 |
commit | 6eb05c4a14bf233b1a6774074b526b54420deb9d (patch) | |
tree | 97487f9714a7efffc51a7ae6172e3bda79e2303b /crates/ra_assists | |
parent | a6638af4a60688c970ac9bafdf3c2d79aa1bc13c (diff) |
Simplify
Diffstat (limited to 'crates/ra_assists')
-rw-r--r-- | crates/ra_assists/src/ast_transform.rs | 9 | ||||
-rw-r--r-- | crates/ra_assists/src/handlers/add_missing_impl_members.rs | 4 |
2 files changed, 5 insertions, 8 deletions
diff --git a/crates/ra_assists/src/ast_transform.rs b/crates/ra_assists/src/ast_transform.rs index 42856f0ca..45558c448 100644 --- a/crates/ra_assists/src/ast_transform.rs +++ b/crates/ra_assists/src/ast_transform.rs | |||
@@ -37,7 +37,6 @@ pub struct SubstituteTypeParams<'a> { | |||
37 | impl<'a> SubstituteTypeParams<'a> { | 37 | impl<'a> SubstituteTypeParams<'a> { |
38 | pub fn for_trait_impl( | 38 | pub fn for_trait_impl( |
39 | source_scope: &'a SemanticsScope<'a, RootDatabase>, | 39 | source_scope: &'a SemanticsScope<'a, RootDatabase>, |
40 | db: &'a RootDatabase, | ||
41 | // FIXME: there's implicit invariant that `trait_` and `source_scope` match... | 40 | // FIXME: there's implicit invariant that `trait_` and `source_scope` match... |
42 | trait_: hir::Trait, | 41 | trait_: hir::Trait, |
43 | impl_def: ast::ImplDef, | 42 | impl_def: ast::ImplDef, |
@@ -45,7 +44,7 @@ impl<'a> SubstituteTypeParams<'a> { | |||
45 | let substs = get_syntactic_substs(impl_def).unwrap_or_default(); | 44 | let substs = get_syntactic_substs(impl_def).unwrap_or_default(); |
46 | let generic_def: hir::GenericDef = trait_.into(); | 45 | let generic_def: hir::GenericDef = trait_.into(); |
47 | let substs_by_param: FxHashMap<_, _> = generic_def | 46 | let substs_by_param: FxHashMap<_, _> = generic_def |
48 | .params(db) | 47 | .params(source_scope.db) |
49 | .into_iter() | 48 | .into_iter() |
50 | // this is a trait impl, so we need to skip the first type parameter -- this is a bit hacky | 49 | // this is a trait impl, so we need to skip the first type parameter -- this is a bit hacky |
51 | .skip(1) | 50 | .skip(1) |
@@ -104,7 +103,6 @@ impl<'a> AstTransform<'a> for SubstituteTypeParams<'a> { | |||
104 | pub struct QualifyPaths<'a> { | 103 | pub struct QualifyPaths<'a> { |
105 | target_scope: &'a SemanticsScope<'a, RootDatabase>, | 104 | target_scope: &'a SemanticsScope<'a, RootDatabase>, |
106 | source_scope: &'a SemanticsScope<'a, RootDatabase>, | 105 | source_scope: &'a SemanticsScope<'a, RootDatabase>, |
107 | db: &'a RootDatabase, | ||
108 | previous: Box<dyn AstTransform<'a> + 'a>, | 106 | previous: Box<dyn AstTransform<'a> + 'a>, |
109 | } | 107 | } |
110 | 108 | ||
@@ -112,9 +110,8 @@ impl<'a> QualifyPaths<'a> { | |||
112 | pub fn new( | 110 | pub fn new( |
113 | target_scope: &'a SemanticsScope<'a, RootDatabase>, | 111 | target_scope: &'a SemanticsScope<'a, RootDatabase>, |
114 | source_scope: &'a SemanticsScope<'a, RootDatabase>, | 112 | source_scope: &'a SemanticsScope<'a, RootDatabase>, |
115 | db: &'a RootDatabase, | ||
116 | ) -> Self { | 113 | ) -> Self { |
117 | Self { target_scope, source_scope, db, previous: Box::new(NullTransformer) } | 114 | Self { target_scope, source_scope, previous: Box::new(NullTransformer) } |
118 | } | 115 | } |
119 | 116 | ||
120 | fn get_substitution_inner( | 117 | fn get_substitution_inner( |
@@ -132,7 +129,7 @@ impl<'a> QualifyPaths<'a> { | |||
132 | let resolution = self.source_scope.resolve_hir_path(&hir_path?)?; | 129 | let resolution = self.source_scope.resolve_hir_path(&hir_path?)?; |
133 | match resolution { | 130 | match resolution { |
134 | PathResolution::Def(def) => { | 131 | PathResolution::Def(def) => { |
135 | let found_path = from.find_use_path(self.db, def)?; | 132 | let found_path = from.find_use_path(self.source_scope.db, def)?; |
136 | let mut path = path_to_ast(found_path); | 133 | let mut path = path_to_ast(found_path); |
137 | 134 | ||
138 | let type_args = p | 135 | let type_args = p |
diff --git a/crates/ra_assists/src/handlers/add_missing_impl_members.rs b/crates/ra_assists/src/handlers/add_missing_impl_members.rs index 639180d37..e5920b6f6 100644 --- a/crates/ra_assists/src/handlers/add_missing_impl_members.rs +++ b/crates/ra_assists/src/handlers/add_missing_impl_members.rs | |||
@@ -142,8 +142,8 @@ fn add_missing_impl_members_inner( | |||
142 | let n_existing_items = impl_item_list.impl_items().count(); | 142 | let n_existing_items = impl_item_list.impl_items().count(); |
143 | let source_scope = sema.scope_for_def(trait_); | 143 | let source_scope = sema.scope_for_def(trait_); |
144 | let target_scope = sema.scope(impl_item_list.syntax()); | 144 | let target_scope = sema.scope(impl_item_list.syntax()); |
145 | let ast_transform = QualifyPaths::new(&target_scope, &source_scope, sema.db) | 145 | let ast_transform = QualifyPaths::new(&target_scope, &source_scope) |
146 | .or(SubstituteTypeParams::for_trait_impl(&source_scope, sema.db, trait_, impl_node)); | 146 | .or(SubstituteTypeParams::for_trait_impl(&source_scope, trait_, impl_node)); |
147 | let items = missing_items | 147 | let items = missing_items |
148 | .into_iter() | 148 | .into_iter() |
149 | .map(|it| ast_transform::apply(&*ast_transform, it)) | 149 | .map(|it| ast_transform::apply(&*ast_transform, it)) |