diff options
Diffstat (limited to 'crates/ra_hir')
-rw-r--r-- | crates/ra_hir/src/adt.rs | 11 | ||||
-rw-r--r-- | crates/ra_hir/src/code_model.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir/src/from_source.rs | 8 | ||||
-rw-r--r-- | crates/ra_hir/src/nameres/collector.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir/src/nameres/raw.rs | 5 | ||||
-rw-r--r-- | crates/ra_hir/src/source_binder.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir/src/ty.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir/src/ty/infer.rs | 4 | ||||
-rw-r--r-- | crates/ra_hir/src/ty/method_resolution.rs | 2 |
9 files changed, 15 insertions, 23 deletions
diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs index 56f2b7aa3..fbb4ff4d8 100644 --- a/crates/ra_hir/src/adt.rs +++ b/crates/ra_hir/src/adt.rs | |||
@@ -56,8 +56,7 @@ impl EnumVariant { | |||
56 | .zip(db.enum_data(self.parent).variants.iter()) | 56 | .zip(db.enum_data(self.parent).variants.iter()) |
57 | .find(|(_syntax, (id, _))| *id == self.id) | 57 | .find(|(_syntax, (id, _))| *id == self.id) |
58 | .unwrap() | 58 | .unwrap() |
59 | .0 | 59 | .0; |
60 | .to_owned(); | ||
61 | Source { file_id: src.file_id, ast } | 60 | Source { file_id: src.file_id, ast } |
62 | } | 61 | } |
63 | pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { | 62 | pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { |
@@ -203,12 +202,8 @@ impl StructField { | |||
203 | }; | 202 | }; |
204 | 203 | ||
205 | let field_sources = match struct_kind { | 204 | let field_sources = match struct_kind { |
206 | ast::StructKind::Tuple(fl) => { | 205 | ast::StructKind::Tuple(fl) => fl.fields().map(|it| FieldSource::Pos(it)).collect(), |
207 | fl.fields().map(|it| FieldSource::Pos(it.to_owned())).collect() | 206 | ast::StructKind::Named(fl) => fl.fields().map(|it| FieldSource::Named(it)).collect(), |
208 | } | ||
209 | ast::StructKind::Named(fl) => { | ||
210 | fl.fields().map(|it| FieldSource::Named(it.to_owned())).collect() | ||
211 | } | ||
212 | ast::StructKind::Unit => Vec::new(), | 207 | ast::StructKind::Unit => Vec::new(), |
213 | }; | 208 | }; |
214 | let ast = field_sources | 209 | let ast = field_sources |
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 99c247a0b..9fecba63d 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs | |||
@@ -161,7 +161,7 @@ impl ModuleSource { | |||
161 | ) -> ModuleSource { | 161 | ) -> ModuleSource { |
162 | match (file_id, decl_id) { | 162 | match (file_id, decl_id) { |
163 | (Some(file_id), _) => { | 163 | (Some(file_id), _) => { |
164 | let source_file = db.parse(file_id).tree().to_owned(); | 164 | let source_file = db.parse(file_id).tree(); |
165 | ModuleSource::SourceFile(source_file) | 165 | ModuleSource::SourceFile(source_file) |
166 | } | 166 | } |
167 | (None, Some(item_id)) => { | 167 | (None, Some(item_id)) => { |
diff --git a/crates/ra_hir/src/from_source.rs b/crates/ra_hir/src/from_source.rs index f3194595f..7b6d9b240 100644 --- a/crates/ra_hir/src/from_source.rs +++ b/crates/ra_hir/src/from_source.rs | |||
@@ -137,7 +137,7 @@ impl ModuleSource { | |||
137 | match &find_node_at_offset::<ast::Module>(parse.tree().syntax(), position.offset) { | 137 | match &find_node_at_offset::<ast::Module>(parse.tree().syntax(), position.offset) { |
138 | Some(m) if !m.has_semi() => ModuleSource::Module(m.clone()), | 138 | Some(m) if !m.has_semi() => ModuleSource::Module(m.clone()), |
139 | _ => { | 139 | _ => { |
140 | let source_file = parse.tree().to_owned(); | 140 | let source_file = parse.tree(); |
141 | ModuleSource::SourceFile(source_file) | 141 | ModuleSource::SourceFile(source_file) |
142 | } | 142 | } |
143 | } | 143 | } |
@@ -149,15 +149,15 @@ impl ModuleSource { | |||
149 | child: &SyntaxNode, | 149 | child: &SyntaxNode, |
150 | ) -> ModuleSource { | 150 | ) -> ModuleSource { |
151 | if let Some(m) = child.ancestors().filter_map(ast::Module::cast).find(|it| !it.has_semi()) { | 151 | if let Some(m) = child.ancestors().filter_map(ast::Module::cast).find(|it| !it.has_semi()) { |
152 | ModuleSource::Module(m.clone()) | 152 | ModuleSource::Module(m) |
153 | } else { | 153 | } else { |
154 | let source_file = db.parse(file_id).tree().to_owned(); | 154 | let source_file = db.parse(file_id).tree(); |
155 | ModuleSource::SourceFile(source_file) | 155 | ModuleSource::SourceFile(source_file) |
156 | } | 156 | } |
157 | } | 157 | } |
158 | 158 | ||
159 | pub fn from_file_id(db: &(impl DefDatabase + AstDatabase), file_id: FileId) -> ModuleSource { | 159 | pub fn from_file_id(db: &(impl DefDatabase + AstDatabase), file_id: FileId) -> ModuleSource { |
160 | let source_file = db.parse(file_id).tree().to_owned(); | 160 | let source_file = db.parse(file_id).tree(); |
161 | ModuleSource::SourceFile(source_file) | 161 | ModuleSource::SourceFile(source_file) |
162 | } | 162 | } |
163 | } | 163 | } |
diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index 6b253ac40..ef7dc6ebe 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs | |||
@@ -166,7 +166,7 @@ where | |||
166 | // In Rust, `#[macro_export]` macros are unconditionally visible at the | 166 | // In Rust, `#[macro_export]` macros are unconditionally visible at the |
167 | // crate root, even if the parent modules is **not** visible. | 167 | // crate root, even if the parent modules is **not** visible. |
168 | if export { | 168 | if export { |
169 | self.update(self.def_map.root, None, &[(name.clone(), Resolution::from_macro(macro_))]); | 169 | self.update(self.def_map.root, None, &[(name, Resolution::from_macro(macro_))]); |
170 | } | 170 | } |
171 | } | 171 | } |
172 | 172 | ||
diff --git a/crates/ra_hir/src/nameres/raw.rs b/crates/ra_hir/src/nameres/raw.rs index 8bf883ac2..29aaddbf1 100644 --- a/crates/ra_hir/src/nameres/raw.rs +++ b/crates/ra_hir/src/nameres/raw.rs | |||
@@ -36,10 +36,7 @@ type ImportSource = Either<ast::UseTree, ast::ExternCrateItem>; | |||
36 | 36 | ||
37 | impl ImportSourcePtr { | 37 | impl ImportSourcePtr { |
38 | fn to_node(self, file: &SourceFile) -> ImportSource { | 38 | fn to_node(self, file: &SourceFile) -> ImportSource { |
39 | self.map( | 39 | self.map(|ptr| ptr.to_node(file.syntax()), |ptr| ptr.to_node(file.syntax())) |
40 | |ptr| ptr.to_node(file.syntax()).to_owned(), | ||
41 | |ptr| ptr.to_node(file.syntax()).to_owned(), | ||
42 | ) | ||
43 | } | 40 | } |
44 | } | 41 | } |
45 | 42 | ||
diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs index 296acc364..bd4be8430 100644 --- a/crates/ra_hir/src/source_binder.rs +++ b/crates/ra_hir/src/source_binder.rs | |||
@@ -73,7 +73,7 @@ fn def_with_body_from_child_node( | |||
73 | if let Some(def) = ast::ConstDef::cast(node.clone()) { | 73 | if let Some(def) = ast::ConstDef::cast(node.clone()) { |
74 | return Some(Const { id: ctx.to_def(&def) }.into()); | 74 | return Some(Const { id: ctx.to_def(&def) }.into()); |
75 | } | 75 | } |
76 | if let Some(def) = ast::StaticDef::cast(node.clone()) { | 76 | if let Some(def) = ast::StaticDef::cast(node) { |
77 | return Some(Static { id: ctx.to_def(&def) }.into()); | 77 | return Some(Static { id: ctx.to_def(&def) }.into()); |
78 | } | 78 | } |
79 | None | 79 | None |
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index e6ecbe1ea..fae9c1e22 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs | |||
@@ -223,7 +223,7 @@ impl Substs { | |||
223 | } | 223 | } |
224 | 224 | ||
225 | pub fn prefix(&self, n: usize) -> Substs { | 225 | pub fn prefix(&self, n: usize) -> Substs { |
226 | Substs(self.0.iter().cloned().take(n).collect::<Vec<_>>().into()) | 226 | Substs(self.0[..std::cmp::min(self.0.len(), n)].into()) |
227 | } | 227 | } |
228 | 228 | ||
229 | pub fn walk(&self, f: &mut impl FnMut(&Ty)) { | 229 | pub fn walk(&self, f: &mut impl FnMut(&Ty)) { |
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index 378d2f829..76b4b6faa 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs | |||
@@ -436,7 +436,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
436 | 436 | ||
437 | fn normalize_projection_ty(&mut self, proj_ty: ProjectionTy) -> Ty { | 437 | fn normalize_projection_ty(&mut self, proj_ty: ProjectionTy) -> Ty { |
438 | let var = self.new_type_var(); | 438 | let var = self.new_type_var(); |
439 | let predicate = ProjectionPredicate { projection_ty: proj_ty.clone(), ty: var.clone() }; | 439 | let predicate = ProjectionPredicate { projection_ty: proj_ty, ty: var.clone() }; |
440 | let obligation = Obligation::Projection(predicate); | 440 | let obligation = Obligation::Projection(predicate); |
441 | self.obligations.push(obligation); | 441 | self.obligations.push(obligation); |
442 | var | 442 | var |
@@ -953,7 +953,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
953 | arm_tys.push(self.infer_expr_inner(arm.expr, &expected)); | 953 | arm_tys.push(self.infer_expr_inner(arm.expr, &expected)); |
954 | } | 954 | } |
955 | 955 | ||
956 | let lub_ty = calculate_least_upper_bound(expected.ty.clone(), &arm_tys); | 956 | let lub_ty = calculate_least_upper_bound(expected.ty, &arm_tys); |
957 | 957 | ||
958 | for arm_ty in &arm_tys { | 958 | for arm_ty in &arm_tys { |
959 | self.coerce(arm_ty, &lub_ty); | 959 | self.coerce(arm_ty, &lub_ty); |
diff --git a/crates/ra_hir/src/ty/method_resolution.rs b/crates/ra_hir/src/ty/method_resolution.rs index 8b46b11a9..a967d8a7f 100644 --- a/crates/ra_hir/src/ty/method_resolution.rs +++ b/crates/ra_hir/src/ty/method_resolution.rs | |||
@@ -290,7 +290,7 @@ pub(crate) fn implements_trait( | |||
290 | return true; | 290 | return true; |
291 | } | 291 | } |
292 | let env = lower::trait_env(db, resolver); | 292 | let env = lower::trait_env(db, resolver); |
293 | let goal = generic_implements_goal(db, env.clone(), trait_, ty.clone()); | 293 | let goal = generic_implements_goal(db, env, trait_, ty.clone()); |
294 | let solution = db.trait_solve(krate, goal); | 294 | let solution = db.trait_solve(krate, goal); |
295 | 295 | ||
296 | solution.is_some() | 296 | solution.is_some() |