diff options
31 files changed, 61 insertions, 67 deletions
diff --git a/crates/gen_lsp_server/src/lib.rs b/crates/gen_lsp_server/src/lib.rs index 7ecef83cb..0984e3e25 100644 --- a/crates/gen_lsp_server/src/lib.rs +++ b/crates/gen_lsp_server/src/lib.rs | |||
@@ -130,7 +130,7 @@ fn initialize( | |||
130 | Ok(RawMessage::Notification(n)) => { | 130 | Ok(RawMessage::Notification(n)) => { |
131 | n.cast::<Initialized>().map_err(|_| "expected initialized notification")?; | 131 | n.cast::<Initialized>().map_err(|_| "expected initialized notification")?; |
132 | } | 132 | } |
133 | _ => Err(format!("expected initialized notification"))?, | 133 | _ => Err("expected initialized notification".to_string())?, |
134 | } | 134 | } |
135 | Ok(params) | 135 | Ok(params) |
136 | } | 136 | } |
diff --git a/crates/ra_assists/src/auto_import.rs b/crates/ra_assists/src/auto_import.rs index 75ab8fa0f..f8f37e852 100644 --- a/crates/ra_assists/src/auto_import.rs +++ b/crates/ra_assists/src/auto_import.rs | |||
@@ -39,13 +39,13 @@ fn collect_path_segments_raw<'a>( | |||
39 | // We need to reverse only the new added segments | 39 | // We need to reverse only the new added segments |
40 | let only_new_segments = segments.split_at_mut(oldlen).1; | 40 | let only_new_segments = segments.split_at_mut(oldlen).1; |
41 | only_new_segments.reverse(); | 41 | only_new_segments.reverse(); |
42 | return Some(segments.len() - oldlen); | 42 | Some(segments.len() - oldlen) |
43 | } | 43 | } |
44 | 44 | ||
45 | fn fmt_segments(segments: &[SmolStr]) -> String { | 45 | fn fmt_segments(segments: &[SmolStr]) -> String { |
46 | let mut buf = String::new(); | 46 | let mut buf = String::new(); |
47 | fmt_segments_raw(segments, &mut buf); | 47 | fmt_segments_raw(segments, &mut buf); |
48 | return buf; | 48 | buf |
49 | } | 49 | } |
50 | 50 | ||
51 | fn fmt_segments_raw(segments: &[SmolStr], buf: &mut String) { | 51 | fn fmt_segments_raw(segments: &[SmolStr], buf: &mut String) { |
@@ -61,7 +61,7 @@ fn fmt_segments_raw(segments: &[SmolStr], buf: &mut String) { | |||
61 | 61 | ||
62 | // Returns the numeber of common segments. | 62 | // Returns the numeber of common segments. |
63 | fn compare_path_segments(left: &[SmolStr], right: &[&ast::PathSegment]) -> usize { | 63 | fn compare_path_segments(left: &[SmolStr], right: &[&ast::PathSegment]) -> usize { |
64 | return left.iter().zip(right).filter(|(l, r)| compare_path_segment(l, r)).count(); | 64 | left.iter().zip(right).filter(|(l, r)| compare_path_segment(l, r)).count() |
65 | } | 65 | } |
66 | 66 | ||
67 | fn compare_path_segment(a: &SmolStr, b: &ast::PathSegment) -> bool { | 67 | fn compare_path_segment(a: &SmolStr, b: &ast::PathSegment) -> bool { |
@@ -320,7 +320,7 @@ fn walk_use_tree_for_best_action<'a>( | |||
320 | 320 | ||
321 | // We remove the segments added | 321 | // We remove the segments added |
322 | current_path_segments.truncate(prev_len); | 322 | current_path_segments.truncate(prev_len); |
323 | return action; | 323 | action |
324 | } | 324 | } |
325 | 325 | ||
326 | fn best_action_for_target<'b, 'a: 'b>( | 326 | fn best_action_for_target<'b, 'a: 'b>( |
@@ -339,7 +339,7 @@ fn best_action_for_target<'b, 'a: 'b>( | |||
339 | }); | 339 | }); |
340 | 340 | ||
341 | match best_action { | 341 | match best_action { |
342 | Some(action) => return action, | 342 | Some(action) => action, |
343 | None => { | 343 | None => { |
344 | // We have no action and no UseItem was found in container so we find | 344 | // We have no action and no UseItem was found in container so we find |
345 | // another item and we use it as anchor. | 345 | // another item and we use it as anchor. |
@@ -350,7 +350,7 @@ fn best_action_for_target<'b, 'a: 'b>( | |||
350 | .find(|n| n.range().start() < anchor.range().start()) | 350 | .find(|n| n.range().start() < anchor.range().start()) |
351 | .or_else(|| Some(anchor)); | 351 | .or_else(|| Some(anchor)); |
352 | 352 | ||
353 | return ImportAction::add_new_use(anchor, false); | 353 | ImportAction::add_new_use(anchor, false) |
354 | } | 354 | } |
355 | } | 355 | } |
356 | } | 356 | } |
diff --git a/crates/ra_cli/src/main.rs b/crates/ra_cli/src/main.rs index 25edbd5f7..48bc64450 100644 --- a/crates/ra_cli/src/main.rs +++ b/crates/ra_cli/src/main.rs | |||
@@ -112,6 +112,6 @@ fn read_stdin() -> Result<String> { | |||
112 | } | 112 | } |
113 | 113 | ||
114 | fn rsplit_at_char(s: &str, c: char) -> Result<(&str, &str)> { | 114 | fn rsplit_at_char(s: &str, c: char) -> Result<(&str, &str)> { |
115 | let idx = s.rfind(":").ok_or_else(|| format!("no `{}` in {}", c, s))?; | 115 | let idx = s.rfind(':').ok_or_else(|| format!("no `{}` in {}", c, s))?; |
116 | Ok((&s[..idx], &s[idx + 1..])) | 116 | Ok((&s[..idx], &s[idx + 1..])) |
117 | } | 117 | } |
diff --git a/crates/ra_db/src/input.rs b/crates/ra_db/src/input.rs index 5d3a6b3c9..2d563bd01 100644 --- a/crates/ra_db/src/input.rs +++ b/crates/ra_db/src/input.rs | |||
@@ -139,7 +139,7 @@ impl CrateGraph { | |||
139 | } | 139 | } |
140 | 140 | ||
141 | pub fn iter<'a>(&'a self) -> impl Iterator<Item = CrateId> + 'a { | 141 | pub fn iter<'a>(&'a self) -> impl Iterator<Item = CrateId> + 'a { |
142 | self.arena.keys().map(|it| *it) | 142 | self.arena.keys().copied() |
143 | } | 143 | } |
144 | 144 | ||
145 | pub fn crate_root(&self, crate_id: CrateId) -> FileId { | 145 | pub fn crate_root(&self, crate_id: CrateId) -> FileId { |
@@ -191,7 +191,7 @@ impl CrateGraph { | |||
191 | return true; | 191 | return true; |
192 | } | 192 | } |
193 | } | 193 | } |
194 | return false; | 194 | false |
195 | } | 195 | } |
196 | } | 196 | } |
197 | 197 | ||
diff --git a/crates/ra_hir/src/code_model/docs.rs b/crates/ra_hir/src/code_model/docs.rs index f696307a7..007ef315d 100644 --- a/crates/ra_hir/src/code_model/docs.rs +++ b/crates/ra_hir/src/code_model/docs.rs | |||
@@ -74,7 +74,7 @@ pub(crate) fn documentation_query( | |||
74 | DocDef::Module(it) => docs_from_ast(&*it.declaration_source(db)?.ast), | 74 | DocDef::Module(it) => docs_from_ast(&*it.declaration_source(db)?.ast), |
75 | DocDef::StructField(it) => match it.source(db).ast { | 75 | DocDef::StructField(it) => match it.source(db).ast { |
76 | FieldSource::Named(named) => docs_from_ast(&*named), | 76 | FieldSource::Named(named) => docs_from_ast(&*named), |
77 | FieldSource::Pos(..) => return None, | 77 | FieldSource::Pos(..) => None, |
78 | }, | 78 | }, |
79 | DocDef::Struct(it) => docs_from_ast(&*it.source(db).ast), | 79 | DocDef::Struct(it) => docs_from_ast(&*it.source(db).ast), |
80 | DocDef::Enum(it) => docs_from_ast(&*it.source(db).ast), | 80 | DocDef::Enum(it) => docs_from_ast(&*it.source(db).ast), |
diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs index d5b4ba6b6..3e763fef0 100644 --- a/crates/ra_hir/src/expr.rs +++ b/crates/ra_hir/src/expr.rs | |||
@@ -150,7 +150,7 @@ impl BodySourceMap { | |||
150 | } | 150 | } |
151 | 151 | ||
152 | pub(crate) fn field_syntax(&self, expr: ExprId, field: usize) -> AstPtr<ast::NamedField> { | 152 | pub(crate) fn field_syntax(&self, expr: ExprId, field: usize) -> AstPtr<ast::NamedField> { |
153 | self.field_map[&(expr, field)].clone() | 153 | self.field_map[&(expr, field)] |
154 | } | 154 | } |
155 | } | 155 | } |
156 | 156 | ||
@@ -471,15 +471,15 @@ impl Pat { | |||
471 | match self { | 471 | match self { |
472 | Pat::Range { .. } | Pat::Lit(..) | Pat::Path(..) | Pat::Wild | Pat::Missing => {} | 472 | Pat::Range { .. } | Pat::Lit(..) | Pat::Path(..) | Pat::Wild | Pat::Missing => {} |
473 | Pat::Bind { subpat, .. } => { | 473 | Pat::Bind { subpat, .. } => { |
474 | subpat.iter().map(|pat| *pat).for_each(f); | 474 | subpat.iter().copied().for_each(f); |
475 | } | 475 | } |
476 | Pat::Tuple(args) | Pat::TupleStruct { args, .. } => { | 476 | Pat::Tuple(args) | Pat::TupleStruct { args, .. } => { |
477 | args.iter().map(|pat| *pat).for_each(f); | 477 | args.iter().copied().for_each(f); |
478 | } | 478 | } |
479 | Pat::Ref { pat, .. } => f(*pat), | 479 | Pat::Ref { pat, .. } => f(*pat), |
480 | Pat::Slice { prefix, rest, suffix } => { | 480 | Pat::Slice { prefix, rest, suffix } => { |
481 | let total_iter = prefix.iter().chain(rest.iter()).chain(suffix.iter()); | 481 | let total_iter = prefix.iter().chain(rest.iter()).chain(suffix.iter()); |
482 | total_iter.map(|pat| *pat).for_each(f); | 482 | total_iter.copied().for_each(f); |
483 | } | 483 | } |
484 | Pat::Struct { args, .. } => { | 484 | Pat::Struct { args, .. } => { |
485 | args.iter().map(|f| f.pat).for_each(f); | 485 | args.iter().map(|f| f.pat).for_each(f); |
diff --git a/crates/ra_hir/src/expr/scope.rs b/crates/ra_hir/src/expr/scope.rs index f27cc6e8d..28fd52684 100644 --- a/crates/ra_hir/src/expr/scope.rs +++ b/crates/ra_hir/src/expr/scope.rs | |||
@@ -72,7 +72,7 @@ impl ExprScopes { | |||
72 | } | 72 | } |
73 | 73 | ||
74 | pub(crate) fn scope_for(&self, expr: ExprId) -> Option<ScopeId> { | 74 | pub(crate) fn scope_for(&self, expr: ExprId) -> Option<ScopeId> { |
75 | self.scope_by_expr.get(&expr).map(|&scope| scope) | 75 | self.scope_by_expr.get(&expr).copied() |
76 | } | 76 | } |
77 | 77 | ||
78 | pub(crate) fn scope_by_expr(&self) -> &FxHashMap<ExprId, ScopeId> { | 78 | pub(crate) fn scope_by_expr(&self) -> &FxHashMap<ExprId, ScopeId> { |
diff --git a/crates/ra_hir/src/lang_item.rs b/crates/ra_hir/src/lang_item.rs index f9fe47b0f..0443d4d9a 100644 --- a/crates/ra_hir/src/lang_item.rs +++ b/crates/ra_hir/src/lang_item.rs | |||
@@ -122,7 +122,7 @@ impl LangItems { | |||
122 | module: Module, | 122 | module: Module, |
123 | ) { | 123 | ) { |
124 | if let Some(module_lang_items) = db.module_lang_items(module) { | 124 | if let Some(module_lang_items) = db.module_lang_items(module) { |
125 | self.items.extend(module_lang_items.items.iter().map(|(k, v)| (k.clone(), v.clone()))) | 125 | self.items.extend(module_lang_items.items.iter().map(|(k, v)| (k.clone(), *v))) |
126 | } | 126 | } |
127 | 127 | ||
128 | // Look for lang items in the children | 128 | // Look for lang items in the children |
@@ -142,7 +142,7 @@ impl LangItems { | |||
142 | { | 142 | { |
143 | let node = item.source(db).ast; | 143 | let node = item.source(db).ast; |
144 | if let Some(lang_item_name) = lang_item_name(&*node) { | 144 | if let Some(lang_item_name) = lang_item_name(&*node) { |
145 | self.items.entry(lang_item_name).or_insert(constructor(item)); | 145 | self.items.entry(lang_item_name).or_insert_with(|| constructor(item)); |
146 | } | 146 | } |
147 | } | 147 | } |
148 | } | 148 | } |
diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs index b26ea58c9..ba33273b8 100644 --- a/crates/ra_hir/src/mock.rs +++ b/crates/ra_hir/src/mock.rs | |||
@@ -76,7 +76,7 @@ impl MockDatabase { | |||
76 | 76 | ||
77 | pub fn diagnostics(&self) -> String { | 77 | pub fn diagnostics(&self) -> String { |
78 | let mut buf = String::from("\n"); | 78 | let mut buf = String::from("\n"); |
79 | let mut files: Vec<FileId> = self.files.values().map(|&it| it).collect(); | 79 | let mut files: Vec<FileId> = self.files.values().copied().collect(); |
80 | files.sort(); | 80 | files.sort(); |
81 | for file in files { | 81 | for file in files { |
82 | let module = crate::source_binder::module_from_file_id(self, file).unwrap(); | 82 | let module = crate::source_binder::module_from_file_id(self, file).unwrap(); |
diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index 2b07ebf4a..d66be34db 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs | |||
@@ -227,10 +227,8 @@ where | |||
227 | .items | 227 | .items |
228 | .iter() | 228 | .iter() |
229 | .map(|(name, res)| (name.clone(), Either::A(res.clone()))); | 229 | .map(|(name, res)| (name.clone(), Either::A(res.clone()))); |
230 | let macros = scope | 230 | let macros = |
231 | .macros | 231 | scope.macros.iter().map(|(name, res)| (name.clone(), Either::B(*res))); |
232 | .iter() | ||
233 | .map(|(name, res)| (name.clone(), Either::B(res.clone()))); | ||
234 | 232 | ||
235 | let all = items.chain(macros).collect::<Vec<_>>(); | 233 | let all = items.chain(macros).collect::<Vec<_>>(); |
236 | self.update(module_id, Some(import_id), &all); | 234 | self.update(module_id, Some(import_id), &all); |
@@ -243,10 +241,8 @@ where | |||
243 | .items | 241 | .items |
244 | .iter() | 242 | .iter() |
245 | .map(|(name, res)| (name.clone(), Either::A(res.clone()))); | 243 | .map(|(name, res)| (name.clone(), Either::A(res.clone()))); |
246 | let macros = scope | 244 | let macros = |
247 | .macros | 245 | scope.macros.iter().map(|(name, res)| (name.clone(), Either::B(*res))); |
248 | .iter() | ||
249 | .map(|(name, res)| (name.clone(), Either::B(res.clone()))); | ||
250 | 246 | ||
251 | let all = items.chain(macros).collect::<Vec<_>>(); | 247 | let all = items.chain(macros).collect::<Vec<_>>(); |
252 | 248 | ||
@@ -651,7 +647,7 @@ fn resolve_submodule( | |||
651 | candidates.push(file_dir_mod.clone()); | 647 | candidates.push(file_dir_mod.clone()); |
652 | }; | 648 | }; |
653 | let sr = db.source_root(source_root_id); | 649 | let sr = db.source_root(source_root_id); |
654 | let mut points_to = candidates.into_iter().filter_map(|path| sr.files.get(&path)).map(|&it| it); | 650 | let mut points_to = candidates.into_iter().filter_map(|path| sr.files.get(&path)).copied(); |
655 | // FIXME: handle ambiguity | 651 | // FIXME: handle ambiguity |
656 | match points_to.next() { | 652 | match points_to.next() { |
657 | Some(file_id) => Ok(file_id), | 653 | Some(file_id) => Ok(file_id), |
diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs index fc981e9b3..c8be27e54 100644 --- a/crates/ra_hir/src/resolve.rs +++ b/crates/ra_hir/src/resolve.rs | |||
@@ -272,7 +272,7 @@ impl Scope { | |||
272 | }, | 272 | }, |
273 | Scope::ImplBlockScope(i) => { | 273 | Scope::ImplBlockScope(i) => { |
274 | if name.as_known_name() == Some(KnownName::SelfType) { | 274 | if name.as_known_name() == Some(KnownName::SelfType) { |
275 | PerNs::types(Resolution::SelfType(i.clone())) | 275 | PerNs::types(Resolution::SelfType(*i)) |
276 | } else { | 276 | } else { |
277 | PerNs::none() | 277 | PerNs::none() |
278 | } | 278 | } |
@@ -317,7 +317,7 @@ impl Scope { | |||
317 | } | 317 | } |
318 | } | 318 | } |
319 | Scope::ImplBlockScope(i) => { | 319 | Scope::ImplBlockScope(i) => { |
320 | f(Name::self_type(), PerNs::types(Resolution::SelfType(i.clone()))); | 320 | f(Name::self_type(), PerNs::types(Resolution::SelfType(*i))); |
321 | } | 321 | } |
322 | Scope::ExprScope(e) => { | 322 | Scope::ExprScope(e) => { |
323 | e.expr_scopes.entries(e.scope_id).iter().for_each(|e| { | 323 | e.expr_scopes.entries(e.scope_id).iter().for_each(|e| { |
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index a2dc92370..9228dd314 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs | |||
@@ -116,16 +116,16 @@ pub struct InferenceResult { | |||
116 | 116 | ||
117 | impl InferenceResult { | 117 | impl InferenceResult { |
118 | pub fn method_resolution(&self, expr: ExprId) -> Option<Function> { | 118 | pub fn method_resolution(&self, expr: ExprId) -> Option<Function> { |
119 | self.method_resolutions.get(&expr).map(|it| *it) | 119 | self.method_resolutions.get(&expr).copied() |
120 | } | 120 | } |
121 | pub fn field_resolution(&self, expr: ExprId) -> Option<StructField> { | 121 | pub fn field_resolution(&self, expr: ExprId) -> Option<StructField> { |
122 | self.field_resolutions.get(&expr).map(|it| *it) | 122 | self.field_resolutions.get(&expr).copied() |
123 | } | 123 | } |
124 | pub fn assoc_resolutions_for_expr(&self, id: ExprId) -> Option<ImplItem> { | 124 | pub fn assoc_resolutions_for_expr(&self, id: ExprId) -> Option<ImplItem> { |
125 | self.assoc_resolutions.get(&id.into()).map(|it| *it) | 125 | self.assoc_resolutions.get(&id.into()).copied() |
126 | } | 126 | } |
127 | pub fn assoc_resolutions_for_pat(&self, id: PatId) -> Option<ImplItem> { | 127 | pub fn assoc_resolutions_for_pat(&self, id: PatId) -> Option<ImplItem> { |
128 | self.assoc_resolutions.get(&id.into()).map(|it| *it) | 128 | self.assoc_resolutions.get(&id.into()).copied() |
129 | } | 129 | } |
130 | pub(crate) fn add_diagnostics( | 130 | pub(crate) fn add_diagnostics( |
131 | &self, | 131 | &self, |
@@ -239,8 +239,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
239 | &self.resolver, | 239 | &self.resolver, |
240 | type_ref, | 240 | type_ref, |
241 | ); | 241 | ); |
242 | let ty = self.insert_type_vars(ty); | 242 | self.insert_type_vars(ty) |
243 | ty | ||
244 | } | 243 | } |
245 | 244 | ||
246 | fn unify_substs(&mut self, substs1: &Substs, substs2: &Substs, depth: usize) -> bool { | 245 | fn unify_substs(&mut self, substs1: &Substs, substs2: &Substs, depth: usize) -> bool { |
@@ -973,8 +972,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
973 | 972 | ||
974 | for (arg_pat, arg_type) in args.iter().zip(arg_types.iter()) { | 973 | for (arg_pat, arg_type) in args.iter().zip(arg_types.iter()) { |
975 | let expected = if let Some(type_ref) = arg_type { | 974 | let expected = if let Some(type_ref) = arg_type { |
976 | let ty = self.make_ty(type_ref); | 975 | self.make_ty(type_ref) |
977 | ty | ||
978 | } else { | 976 | } else { |
979 | Ty::Unknown | 977 | Ty::Unknown |
980 | }; | 978 | }; |
diff --git a/crates/ra_hir/src/ty/infer/unify.rs b/crates/ra_hir/src/ty/infer/unify.rs index 04633bdb2..49bf5b946 100644 --- a/crates/ra_hir/src/ty/infer/unify.rs +++ b/crates/ra_hir/src/ty/infer/unify.rs | |||
@@ -102,7 +102,7 @@ impl<T> Canonicalized<T> { | |||
102 | ty.fold(&mut |ty| match ty { | 102 | ty.fold(&mut |ty| match ty { |
103 | Ty::Bound(idx) => { | 103 | Ty::Bound(idx) => { |
104 | if (idx as usize) < self.free_vars.len() { | 104 | if (idx as usize) < self.free_vars.len() { |
105 | Ty::Infer(self.free_vars[idx as usize].clone()) | 105 | Ty::Infer(self.free_vars[idx as usize]) |
106 | } else { | 106 | } else { |
107 | Ty::Bound(idx) | 107 | Ty::Bound(idx) |
108 | } | 108 | } |
@@ -120,7 +120,7 @@ impl<T> Canonicalized<T> { | |||
120 | let new_vars = | 120 | let new_vars = |
121 | (0..solution.num_vars).map(|_| ctx.new_type_var()).collect::<Vec<_>>().into(); | 121 | (0..solution.num_vars).map(|_| ctx.new_type_var()).collect::<Vec<_>>().into(); |
122 | for (i, ty) in solution.value.into_iter().enumerate() { | 122 | for (i, ty) in solution.value.into_iter().enumerate() { |
123 | let var = self.free_vars[i].clone(); | 123 | let var = self.free_vars[i]; |
124 | ctx.unify(&Ty::Infer(var), &ty.subst_bound_vars(&new_vars)); | 124 | ctx.unify(&Ty::Infer(var), &ty.subst_bound_vars(&new_vars)); |
125 | } | 125 | } |
126 | } | 126 | } |
diff --git a/crates/ra_ide_api/src/db.rs b/crates/ra_ide_api/src/db.rs index fc5b06ca8..44216b045 100644 --- a/crates/ra_ide_api/src/db.rs +++ b/crates/ra_ide_api/src/db.rs | |||
@@ -72,8 +72,8 @@ impl salsa::ParallelDatabase for RootDatabase { | |||
72 | fn snapshot(&self) -> salsa::Snapshot<RootDatabase> { | 72 | fn snapshot(&self) -> salsa::Snapshot<RootDatabase> { |
73 | salsa::Snapshot::new(RootDatabase { | 73 | salsa::Snapshot::new(RootDatabase { |
74 | runtime: self.runtime.snapshot(self), | 74 | runtime: self.runtime.snapshot(self), |
75 | last_gc: self.last_gc.clone(), | 75 | last_gc: self.last_gc, |
76 | last_gc_check: self.last_gc_check.clone(), | 76 | last_gc_check: self.last_gc_check, |
77 | }) | 77 | }) |
78 | } | 78 | } |
79 | } | 79 | } |
diff --git a/crates/ra_ide_api/src/display/structure.rs b/crates/ra_ide_api/src/display/structure.rs index e5b257b9b..638484a9b 100644 --- a/crates/ra_ide_api/src/display/structure.rs +++ b/crates/ra_ide_api/src/display/structure.rs | |||
@@ -25,7 +25,7 @@ pub fn file_structure(file: &SourceFile) -> Vec<StructureNode> { | |||
25 | match event { | 25 | match event { |
26 | WalkEvent::Enter(node) => { | 26 | WalkEvent::Enter(node) => { |
27 | if let Some(mut symbol) = structure_node(node) { | 27 | if let Some(mut symbol) = structure_node(node) { |
28 | symbol.parent = stack.last().map(|&n| n); | 28 | symbol.parent = stack.last().copied(); |
29 | stack.push(res.len()); | 29 | stack.push(res.len()); |
30 | res.push(symbol); | 30 | res.push(symbol); |
31 | } | 31 | } |
diff --git a/crates/ra_ide_api/src/line_index_utils.rs b/crates/ra_ide_api/src/line_index_utils.rs index f9073dca2..8f63db5f1 100644 --- a/crates/ra_ide_api/src/line_index_utils.rs +++ b/crates/ra_ide_api/src/line_index_utils.rs | |||
@@ -137,7 +137,7 @@ impl<'a> Edits<'a> { | |||
137 | Step::Newline(n) => n, | 137 | Step::Newline(n) => n, |
138 | Step::Utf16Char(r) => r.end(), | 138 | Step::Utf16Char(r) => r.end(), |
139 | }; | 139 | }; |
140 | let res = match &mut self.current { | 140 | match &mut self.current { |
141 | Some(edit) => { | 141 | Some(edit) => { |
142 | if step_pos <= edit.delete.start() { | 142 | if step_pos <= edit.delete.start() { |
143 | NextSteps::Use | 143 | NextSteps::Use |
@@ -155,8 +155,7 @@ impl<'a> Edits<'a> { | |||
155 | } | 155 | } |
156 | } | 156 | } |
157 | None => NextSteps::Use, | 157 | None => NextSteps::Use, |
158 | }; | 158 | } |
159 | res | ||
160 | } | 159 | } |
161 | 160 | ||
162 | fn translate_range(&self, range: TextRange) -> TextRange { | 161 | fn translate_range(&self, range: TextRange) -> TextRange { |
diff --git a/crates/ra_ide_api/src/symbol_index.rs b/crates/ra_ide_api/src/symbol_index.rs index 2ca0a25d4..f4a0c6ac7 100644 --- a/crates/ra_ide_api/src/symbol_index.rs +++ b/crates/ra_ide_api/src/symbol_index.rs | |||
@@ -87,7 +87,7 @@ pub(crate) fn world_symbols(db: &RootDatabase, query: Query) -> Vec<FileSymbol> | |||
87 | let mut files = Vec::new(); | 87 | let mut files = Vec::new(); |
88 | for &root in db.local_roots().iter() { | 88 | for &root in db.local_roots().iter() { |
89 | let sr = db.source_root(root); | 89 | let sr = db.source_root(root); |
90 | files.extend(sr.files.values().map(|&it| it)) | 90 | files.extend(sr.files.values().copied()) |
91 | } | 91 | } |
92 | 92 | ||
93 | let snap = Snap(db.snapshot()); | 93 | let snap = Snap(db.snapshot()); |
diff --git a/crates/ra_lsp_server/src/conv.rs b/crates/ra_lsp_server/src/conv.rs index c8128f55b..32e67838e 100644 --- a/crates/ra_lsp_server/src/conv.rs +++ b/crates/ra_lsp_server/src/conv.rs | |||
@@ -171,7 +171,7 @@ impl Conv for ra_ide_api::Documentation { | |||
171 | fn conv(self) -> Documentation { | 171 | fn conv(self) -> Documentation { |
172 | Documentation::MarkupContent(MarkupContent { | 172 | Documentation::MarkupContent(MarkupContent { |
173 | kind: MarkupKind::Markdown, | 173 | kind: MarkupKind::Markdown, |
174 | value: crate::markdown::mark_fenced_blocks_as_rust(self.as_str()).into(), | 174 | value: crate::markdown::mark_fenced_blocks_as_rust(self.as_str()), |
175 | }) | 175 | }) |
176 | } | 176 | } |
177 | } | 177 | } |
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs index cb73e6586..c44fc6603 100644 --- a/crates/ra_lsp_server/src/main_loop.rs +++ b/crates/ra_lsp_server/src/main_loop.rs | |||
@@ -398,7 +398,8 @@ fn on_notification( | |||
398 | Ok(mut params) => { | 398 | Ok(mut params) => { |
399 | let uri = params.text_document.uri; | 399 | let uri = params.text_document.uri; |
400 | let path = uri.to_file_path().map_err(|()| format!("invalid uri: {}", uri))?; | 400 | let path = uri.to_file_path().map_err(|()| format!("invalid uri: {}", uri))?; |
401 | let text = params.content_changes.pop().ok_or_else(|| format!("empty changes"))?.text; | 401 | let text = |
402 | params.content_changes.pop().ok_or_else(|| "empty changes".to_string())?.text; | ||
402 | state.vfs.write().change_file_overlay(path.as_path(), text); | 403 | state.vfs.write().change_file_overlay(path.as_path(), text); |
403 | return Ok(()); | 404 | return Ok(()); |
404 | } | 405 | } |
diff --git a/crates/ra_mbe/src/mbe_expander.rs b/crates/ra_mbe/src/mbe_expander.rs index fbad8ebe2..c7c06c7fd 100644 --- a/crates/ra_mbe/src/mbe_expander.rs +++ b/crates/ra_mbe/src/mbe_expander.rs | |||
@@ -498,7 +498,7 @@ fn expand_tt( | |||
498 | tt::Leaf::from(tt::Ident { text: ident.text.clone(), id: TokenId::unspecified() }) | 498 | tt::Leaf::from(tt::Ident { text: ident.text.clone(), id: TokenId::unspecified() }) |
499 | .into() | 499 | .into() |
500 | } | 500 | } |
501 | crate::Leaf::Punct(punct) => tt::Leaf::from(punct.clone()).into(), | 501 | crate::Leaf::Punct(punct) => tt::Leaf::from(*punct).into(), |
502 | crate::Leaf::Var(v) => { | 502 | crate::Leaf::Var(v) => { |
503 | if v.text == "crate" { | 503 | if v.text == "crate" { |
504 | // FIXME: Properly handle $crate token | 504 | // FIXME: Properly handle $crate token |
diff --git a/crates/ra_mbe/src/mbe_parser.rs b/crates/ra_mbe/src/mbe_parser.rs index a29885852..cddb4a7b4 100644 --- a/crates/ra_mbe/src/mbe_parser.rs +++ b/crates/ra_mbe/src/mbe_parser.rs | |||
@@ -56,7 +56,7 @@ fn parse_subtree(tt: &tt::Subtree, transcriber: bool) -> Result<crate::Subtree, | |||
56 | } | 56 | } |
57 | } | 57 | } |
58 | tt::Leaf::Punct(punct) => crate::Leaf::from(*punct).into(), | 58 | tt::Leaf::Punct(punct) => crate::Leaf::from(*punct).into(), |
59 | tt::Leaf::Ident(tt::Ident { text, id: _ }) => { | 59 | tt::Leaf::Ident(tt::Ident { text, .. }) => { |
60 | crate::Leaf::from(crate::Ident { text: text.clone() }).into() | 60 | crate::Leaf::from(crate::Ident { text: text.clone() }).into() |
61 | } | 61 | } |
62 | tt::Leaf::Literal(tt::Literal { text }) => { | 62 | tt::Leaf::Literal(tt::Literal { text }) => { |
diff --git a/crates/ra_mbe/src/subtree_source.rs b/crates/ra_mbe/src/subtree_source.rs index 2489c996b..e1c6e7d91 100644 --- a/crates/ra_mbe/src/subtree_source.rs +++ b/crates/ra_mbe/src/subtree_source.rs | |||
@@ -78,7 +78,7 @@ impl<'a> SubtreeTokenSource<'a> { | |||
78 | } | 78 | } |
79 | } | 79 | } |
80 | 80 | ||
81 | return cached[pos].clone(); | 81 | cached[pos].clone() |
82 | } | 82 | } |
83 | } | 83 | } |
84 | 84 | ||
diff --git a/crates/ra_mbe/src/syntax_bridge.rs b/crates/ra_mbe/src/syntax_bridge.rs index b91b0e7a5..7560d215a 100644 --- a/crates/ra_mbe/src/syntax_bridge.rs +++ b/crates/ra_mbe/src/syntax_bridge.rs | |||
@@ -107,7 +107,7 @@ pub fn token_tree_to_ast_item_list(tt: &tt::Subtree) -> TreeArc<ast::SourceFile> | |||
107 | impl TokenMap { | 107 | impl TokenMap { |
108 | pub fn relative_range_of(&self, tt: tt::TokenId) -> Option<TextRange> { | 108 | pub fn relative_range_of(&self, tt: tt::TokenId) -> Option<TextRange> { |
109 | let idx = tt.0 as usize; | 109 | let idx = tt.0 as usize; |
110 | self.tokens.get(idx).map(|&it| it) | 110 | self.tokens.get(idx).copied() |
111 | } | 111 | } |
112 | 112 | ||
113 | fn alloc(&mut self, relative_range: TextRange) -> tt::TokenId { | 113 | fn alloc(&mut self, relative_range: TextRange) -> tt::TokenId { |
diff --git a/crates/ra_mbe/src/tt_cursor.rs b/crates/ra_mbe/src/tt_cursor.rs index 503c77ef3..8e360ce0f 100644 --- a/crates/ra_mbe/src/tt_cursor.rs +++ b/crates/ra_mbe/src/tt_cursor.rs | |||
@@ -171,14 +171,14 @@ impl<'a> TtCursor<'a> { | |||
171 | } | 171 | } |
172 | 172 | ||
173 | fn eat_punct3(&mut self, p: &tt::Punct) -> Option<SmallVec<[tt::Punct; 3]>> { | 173 | fn eat_punct3(&mut self, p: &tt::Punct) -> Option<SmallVec<[tt::Punct; 3]>> { |
174 | let sec = self.eat_punct()?.clone(); | 174 | let sec = *self.eat_punct()?; |
175 | let third = self.eat_punct()?.clone(); | 175 | let third = *self.eat_punct()?; |
176 | Some(smallvec![p.clone(), sec, third]) | 176 | Some(smallvec![*p, sec, third]) |
177 | } | 177 | } |
178 | 178 | ||
179 | fn eat_punct2(&mut self, p: &tt::Punct) -> Option<SmallVec<[tt::Punct; 3]>> { | 179 | fn eat_punct2(&mut self, p: &tt::Punct) -> Option<SmallVec<[tt::Punct; 3]>> { |
180 | let sec = self.eat_punct()?.clone(); | 180 | let sec = *self.eat_punct()?; |
181 | Some(smallvec![p.clone(), sec]) | 181 | Some(smallvec![*p, sec]) |
182 | } | 182 | } |
183 | 183 | ||
184 | fn eat_multi_char_punct<'b, I>( | 184 | fn eat_multi_char_punct<'b, I>( |
@@ -251,7 +251,7 @@ impl<'a> TtCursor<'a> { | |||
251 | // So we by pass that check here. | 251 | // So we by pass that check here. |
252 | let mut peekable = TokenPeek::new(self.subtree.token_trees[self.pos..].iter()); | 252 | let mut peekable = TokenPeek::new(self.subtree.token_trees[self.pos..].iter()); |
253 | let puncts = self.eat_multi_char_punct(punct, &mut peekable); | 253 | let puncts = self.eat_multi_char_punct(punct, &mut peekable); |
254 | let puncts = puncts.unwrap_or_else(|| smallvec![punct.clone()]); | 254 | let puncts = puncts.unwrap_or_else(|| smallvec![*punct]); |
255 | 255 | ||
256 | Some(crate::Separator::Puncts(puncts)) | 256 | Some(crate::Separator::Puncts(puncts)) |
257 | } | 257 | } |
diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs index 74b7efa9a..08e5c1c32 100644 --- a/crates/ra_project_model/src/lib.rs +++ b/crates/ra_project_model/src/lib.rs | |||
@@ -191,7 +191,7 @@ impl ProjectWorkspace { | |||
191 | } | 191 | } |
192 | } | 192 | } |
193 | 193 | ||
194 | let libstd = sysroot.std().and_then(|it| sysroot_crates.get(&it).map(|&it| it)); | 194 | let libstd = sysroot.std().and_then(|it| sysroot_crates.get(&it).copied()); |
195 | 195 | ||
196 | let mut pkg_to_lib_crate = FxHashMap::default(); | 196 | let mut pkg_to_lib_crate = FxHashMap::default(); |
197 | let mut pkg_crates = FxHashMap::default(); | 197 | let mut pkg_crates = FxHashMap::default(); |
diff --git a/crates/ra_project_model/src/sysroot.rs b/crates/ra_project_model/src/sysroot.rs index a419b81e8..4f6e880dd 100644 --- a/crates/ra_project_model/src/sysroot.rs +++ b/crates/ra_project_model/src/sysroot.rs | |||
@@ -94,7 +94,7 @@ impl SysrootCrate { | |||
94 | self.root(sysroot).parent().unwrap() | 94 | self.root(sysroot).parent().unwrap() |
95 | } | 95 | } |
96 | pub fn deps<'a>(self, sysroot: &'a Sysroot) -> impl Iterator<Item = SysrootCrate> + 'a { | 96 | pub fn deps<'a>(self, sysroot: &'a Sysroot) -> impl Iterator<Item = SysrootCrate> + 'a { |
97 | sysroot.crates[self].deps.iter().map(|&it| it) | 97 | sysroot.crates[self].deps.iter().copied() |
98 | } | 98 | } |
99 | } | 99 | } |
100 | 100 | ||
diff --git a/crates/ra_syntax/src/ast/expr_extensions.rs b/crates/ra_syntax/src/ast/expr_extensions.rs index 87dbb0ea5..4355e3587 100644 --- a/crates/ra_syntax/src/ast/expr_extensions.rs +++ b/crates/ra_syntax/src/ast/expr_extensions.rs | |||
@@ -260,7 +260,7 @@ impl ast::Literal { | |||
260 | .iter() | 260 | .iter() |
261 | .find(|&s| text.ends_with(s)) | 261 | .find(|&s| text.ends_with(s)) |
262 | .map(|&suf| SmolStr::new(suf)); | 262 | .map(|&suf| SmolStr::new(suf)); |
263 | LiteralKind::FloatNumber { suffix: suffix } | 263 | LiteralKind::FloatNumber { suffix } |
264 | } | 264 | } |
265 | STRING | RAW_STRING => LiteralKind::String, | 265 | STRING | RAW_STRING => LiteralKind::String, |
266 | T![true] | T![false] => LiteralKind::Bool, | 266 | T![true] | T![false] => LiteralKind::Bool, |
diff --git a/crates/ra_syntax/src/fuzz.rs b/crates/ra_syntax/src/fuzz.rs index 6d114aad4..00039f970 100644 --- a/crates/ra_syntax/src/fuzz.rs +++ b/crates/ra_syntax/src/fuzz.rs | |||
@@ -21,8 +21,8 @@ pub struct CheckReparse { | |||
21 | 21 | ||
22 | impl CheckReparse { | 22 | impl CheckReparse { |
23 | pub fn from_data(data: &[u8]) -> Option<Self> { | 23 | pub fn from_data(data: &[u8]) -> Option<Self> { |
24 | const PREFIX: &'static str = "fn main(){\n\t"; | 24 | const PREFIX: &str = "fn main(){\n\t"; |
25 | const SUFFIX: &'static str = "\n}"; | 25 | const SUFFIX: &str = "\n}"; |
26 | 26 | ||
27 | let data = str::from_utf8(data).ok()?; | 27 | let data = str::from_utf8(data).ok()?; |
28 | let mut lines = data.lines(); | 28 | let mut lines = data.lines(); |
diff --git a/crates/ra_syntax/src/parsing/text_token_source.rs b/crates/ra_syntax/src/parsing/text_token_source.rs index f592b499f..64cb20ae8 100644 --- a/crates/ra_syntax/src/parsing/text_token_source.rs +++ b/crates/ra_syntax/src/parsing/text_token_source.rs | |||
@@ -28,7 +28,7 @@ pub(crate) struct TextTokenSource<'t> { | |||
28 | 28 | ||
29 | impl<'t> TokenSource for TextTokenSource<'t> { | 29 | impl<'t> TokenSource for TextTokenSource<'t> { |
30 | fn current(&self) -> PToken { | 30 | fn current(&self) -> PToken { |
31 | return self.curr.0; | 31 | self.curr.0 |
32 | } | 32 | } |
33 | 33 | ||
34 | fn lookahead_nth(&self, n: usize) -> PToken { | 34 | fn lookahead_nth(&self, n: usize) -> PToken { |
diff --git a/crates/ra_syntax/src/syntax_node.rs b/crates/ra_syntax/src/syntax_node.rs index 80c8639c8..a1f9a59b6 100644 --- a/crates/ra_syntax/src/syntax_node.rs +++ b/crates/ra_syntax/src/syntax_node.rs | |||
@@ -357,7 +357,7 @@ impl SyntaxNode { | |||
357 | // `range` private afterwards | 357 | // `range` private afterwards |
358 | let mut ptr = SyntaxNodePtr::new(self); | 358 | let mut ptr = SyntaxNodePtr::new(self); |
359 | ptr.range = TextRange::offset_len(ptr.range().start(), len); | 359 | ptr.range = TextRange::offset_len(ptr.range().start(), len); |
360 | return ptr.to_node(file.syntax()).to_owned(); | 360 | ptr.to_node(file.syntax()).to_owned() |
361 | } | 361 | } |
362 | 362 | ||
363 | fn position_of_child(&self, child: SyntaxElement) -> usize { | 363 | fn position_of_child(&self, child: SyntaxElement) -> usize { |
diff --git a/crates/ra_syntax/src/validation/unescape.rs b/crates/ra_syntax/src/validation/unescape.rs index 4c3a7effc..1cb2433f3 100644 --- a/crates/ra_syntax/src/validation/unescape.rs +++ b/crates/ra_syntax/src/validation/unescape.rs | |||
@@ -173,7 +173,7 @@ fn scan_escape(first_char: char, chars: &mut Chars<'_>, mode: Mode) -> Result<ch | |||
173 | } | 173 | } |
174 | 174 | ||
175 | break std::char::from_u32(value).ok_or_else(|| { | 175 | break std::char::from_u32(value).ok_or_else(|| { |
176 | if value > 0x10FFFF { | 176 | if value > 0x0010_FFFF { |
177 | EscapeError::OutOfRangeUnicodeEscape | 177 | EscapeError::OutOfRangeUnicodeEscape |
178 | } else { | 178 | } else { |
179 | EscapeError::LoneSurrogateUnicodeEscape | 179 | EscapeError::LoneSurrogateUnicodeEscape |