Skip to content

Commit f32f64b

Browse files
committed
Auto merge of rust-lang#13929 - danieleades:simplify, r=lnicola
internal: a number of code simplifications
2 parents 75877d7 + d218b23 commit f32f64b

File tree

22 files changed

+162
-203
lines changed

22 files changed

+162
-203
lines changed

crates/hir-def/src/body/pretty.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ impl<'a> Write for Printer<'a> {
8080
fn write_str(&mut self, s: &str) -> fmt::Result {
8181
for line in s.split_inclusive('\n') {
8282
if self.needs_indent {
83-
match self.buf.chars().rev().skip_while(|ch| *ch == ' ').next() {
83+
match self.buf.chars().rev().find(|ch| *ch != ' ') {
8484
Some('\n') | None => {}
8585
_ => self.buf.push('\n'),
8686
}
@@ -113,7 +113,7 @@ impl<'a> Printer<'a> {
113113
}
114114

115115
fn newline(&mut self) {
116-
match self.buf.chars().rev().skip_while(|ch| *ch == ' ').next() {
116+
match self.buf.chars().rev().find(|ch| *ch != ' ') {
117117
Some('\n') | None => {}
118118
_ => writeln!(self).unwrap(),
119119
}

crates/hir-def/src/nameres/collector.rs

+9-11
Original file line numberDiff line numberDiff line change
@@ -1600,17 +1600,15 @@ impl ModCollector<'_, '_> {
16001600
FunctionLoc { container, id: ItemTreeId::new(self.tree_id, id) }.intern(db);
16011601

16021602
let vis = resolve_vis(def_map, &self.item_tree[it.visibility]);
1603-
if self.def_collector.is_proc_macro {
1604-
if self.module_id == def_map.root {
1605-
if let Some(proc_macro) = attrs.parse_proc_macro_decl(&it.name) {
1606-
let crate_root = def_map.module_id(def_map.root);
1607-
self.def_collector.export_proc_macro(
1608-
proc_macro,
1609-
ItemTreeId::new(self.tree_id, id),
1610-
fn_id,
1611-
crate_root,
1612-
);
1613-
}
1603+
if self.def_collector.is_proc_macro && self.module_id == def_map.root {
1604+
if let Some(proc_macro) = attrs.parse_proc_macro_decl(&it.name) {
1605+
let crate_root = def_map.module_id(def_map.root);
1606+
self.def_collector.export_proc_macro(
1607+
proc_macro,
1608+
ItemTreeId::new(self.tree_id, id),
1609+
fn_id,
1610+
crate_root,
1611+
);
16141612
}
16151613
}
16161614

crates/hir-ty/src/infer/expr.rs

+16-18
Original file line numberDiff line numberDiff line change
@@ -1136,18 +1136,16 @@ impl<'a> InferenceContext<'a> {
11361136
if self.diverges.is_always() {
11371137
// we don't even make an attempt at coercion
11381138
self.table.new_maybe_never_var()
1139-
} else {
1140-
if let Some(t) = expected.only_has_type(&mut self.table) {
1141-
if self.coerce(Some(expr), &TyBuilder::unit(), &t).is_err() {
1142-
self.result.type_mismatches.insert(
1143-
expr.into(),
1144-
TypeMismatch { expected: t.clone(), actual: TyBuilder::unit() },
1145-
);
1146-
}
1147-
t
1148-
} else {
1149-
TyBuilder::unit()
1139+
} else if let Some(t) = expected.only_has_type(&mut self.table) {
1140+
if self.coerce(Some(expr), &TyBuilder::unit(), &t).is_err() {
1141+
self.result.type_mismatches.insert(
1142+
expr.into(),
1143+
TypeMismatch { expected: t.clone(), actual: TyBuilder::unit() },
1144+
);
11501145
}
1146+
t
1147+
} else {
1148+
TyBuilder::unit()
11511149
}
11521150
}
11531151
}
@@ -1314,13 +1312,13 @@ impl<'a> InferenceContext<'a> {
13141312
} else {
13151313
param_ty
13161314
};
1317-
if !coercion_target.is_unknown() {
1318-
if self.coerce(Some(arg), &ty, &coercion_target).is_err() {
1319-
self.result.type_mismatches.insert(
1320-
arg.into(),
1321-
TypeMismatch { expected: coercion_target, actual: ty.clone() },
1322-
);
1323-
}
1315+
if !coercion_target.is_unknown()
1316+
&& self.coerce(Some(arg), &ty, &coercion_target).is_err()
1317+
{
1318+
self.result.type_mismatches.insert(
1319+
arg.into(),
1320+
TypeMismatch { expected: coercion_target, actual: ty.clone() },
1321+
);
13241322
}
13251323
}
13261324
}

crates/hir-ty/src/layout.rs

+7-10
Original file line numberDiff line numberDiff line change
@@ -251,17 +251,14 @@ fn layout_of_unit(cx: &LayoutCx<'_>, dl: &TargetDataLayout) -> Result<Layout, La
251251

252252
fn struct_tail_erasing_lifetimes(db: &dyn HirDatabase, pointee: Ty) -> Ty {
253253
match pointee.kind(Interner) {
254-
TyKind::Adt(AdtId(adt), subst) => match adt {
255-
&hir_def::AdtId::StructId(i) => {
256-
let data = db.struct_data(i);
257-
let mut it = data.variant_data.fields().iter().rev();
258-
match it.next() {
259-
Some((f, _)) => field_ty(db, i.into(), f, subst),
260-
None => pointee,
261-
}
254+
TyKind::Adt(AdtId(hir_def::AdtId::StructId(i)), subst) => {
255+
let data = db.struct_data(*i);
256+
let mut it = data.variant_data.fields().iter().rev();
257+
match it.next() {
258+
Some((f, _)) => field_ty(db, (*i).into(), f, subst),
259+
None => pointee,
262260
}
263-
_ => pointee,
264-
},
261+
}
265262
_ => pointee,
266263
}
267264
}

crates/hir/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,8 @@ impl Module {
472472
let def_map = self.id.def_map(db.upcast());
473473
let children = def_map[self.id.local_id]
474474
.children
475-
.iter()
476-
.map(|(_, module_id)| Module { id: def_map.module_id(*module_id) })
475+
.values()
476+
.map(|module_id| Module { id: def_map.module_id(*module_id) })
477477
.collect::<Vec<_>>();
478478
children.into_iter()
479479
}

crates/ide-assists/src/handlers/extract_type_alias.rs

+10-12
Original file line numberDiff line numberDiff line change
@@ -161,19 +161,17 @@ fn collect_used_generics<'gp>(
161161
.and_then(|lt| known_generics.iter().find(find_lifetime(&lt.text()))),
162162
),
163163
ast::Type::ArrayType(ar) => {
164-
if let Some(expr) = ar.expr() {
165-
if let ast::Expr::PathExpr(p) = expr {
166-
if let Some(path) = p.path() {
167-
if let Some(name_ref) = path.as_single_name_ref() {
168-
if let Some(param) = known_generics.iter().find(|gp| {
169-
if let ast::GenericParam::ConstParam(cp) = gp {
170-
cp.name().map_or(false, |n| n.text() == name_ref.text())
171-
} else {
172-
false
173-
}
174-
}) {
175-
generics.push(param);
164+
if let Some(ast::Expr::PathExpr(p)) = ar.expr() {
165+
if let Some(path) = p.path() {
166+
if let Some(name_ref) = path.as_single_name_ref() {
167+
if let Some(param) = known_generics.iter().find(|gp| {
168+
if let ast::GenericParam::ConstParam(cp) = gp {
169+
cp.name().map_or(false, |n| n.text() == name_ref.text())
170+
} else {
171+
false
176172
}
173+
}) {
174+
generics.push(param);
177175
}
178176
}
179177
}

crates/ide-assists/src/handlers/generate_default_from_new.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,18 @@ fn generate_trait_impl_text_from_impl(impl_: &ast::Impl, trait_text: &str, code:
8282
let generic_params = impl_.generic_param_list().map(|generic_params| {
8383
let lifetime_params =
8484
generic_params.lifetime_params().map(ast::GenericParam::LifetimeParam);
85-
let ty_or_const_params = generic_params.type_or_const_params().filter_map(|param| {
85+
let ty_or_const_params = generic_params.type_or_const_params().map(|param| {
8686
// remove defaults since they can't be specified in impls
8787
match param {
8888
ast::TypeOrConstParam::Type(param) => {
8989
let param = param.clone_for_update();
9090
param.remove_default();
91-
Some(ast::GenericParam::TypeParam(param))
91+
ast::GenericParam::TypeParam(param)
9292
}
9393
ast::TypeOrConstParam::Const(param) => {
9494
let param = param.clone_for_update();
9595
param.remove_default();
96-
Some(ast::GenericParam::ConstParam(param))
96+
ast::GenericParam::ConstParam(param)
9797
}
9898
}
9999
});

crates/ide-assists/src/handlers/merge_imports.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ trait Merge: AstNode + Clone {
9292
fn try_merge_from(self, items: &mut dyn Iterator<Item = Self>) -> Option<Vec<Edit>> {
9393
let mut edits = Vec::new();
9494
let mut merged = self.clone();
95-
while let Some(item) = items.next() {
95+
for item in items {
9696
merged = merged.try_merge(&item)?;
9797
edits.push(Edit::Remove(item.into_either()));
9898
}

crates/ide-assists/src/handlers/unmerge_match_arm.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ pub(crate) fn unmerge_match_arm(acc: &mut Assists, ctx: &AssistContext<'_>) -> O
8686
it.prev_sibling_or_token()
8787
})
8888
.map(|it| it.kind())
89-
.skip_while(|it| it.is_trivia())
90-
.next()
89+
.find(|it| !it.is_trivia())
9190
== Some(T![,]);
9291
let has_arms_after = neighbor(&match_arm, Direction::Next).is_some();
9392
if !has_comma_after && !has_arms_after {

crates/ide-db/src/rename.rs

+14-18
Original file line numberDiff line numberDiff line change
@@ -334,11 +334,9 @@ pub fn source_edit_from_references(
334334
}
335335
_ => false,
336336
};
337-
if !has_emitted_edit {
338-
if !edited_ranges.contains(&range.start()) {
339-
edit.replace(range, new_name.to_string());
340-
edited_ranges.push(range.start());
341-
}
337+
if !has_emitted_edit && !edited_ranges.contains(&range.start()) {
338+
edit.replace(range, new_name.to_string());
339+
edited_ranges.push(range.start());
342340
}
343341
}
344342

@@ -391,19 +389,17 @@ fn source_edit_from_name_ref(
391389
edit.delete(TextRange::new(s, e));
392390
return true;
393391
}
394-
} else if init == name_ref {
395-
if field_name.text() == new_name {
396-
cov_mark::hit!(test_rename_local_put_init_shorthand);
397-
// Foo { field: local } -> Foo { field }
398-
// ^^^^^^^ delete this
399-
400-
// same names, we can use a shorthand here instead.
401-
// we do not want to erase attributes hence this range start
402-
let s = field_name.syntax().text_range().end();
403-
let e = init.syntax().text_range().end();
404-
edit.delete(TextRange::new(s, e));
405-
return true;
406-
}
392+
} else if init == name_ref && field_name.text() == new_name {
393+
cov_mark::hit!(test_rename_local_put_init_shorthand);
394+
// Foo { field: local } -> Foo { field }
395+
// ^^^^^^^ delete this
396+
397+
// same names, we can use a shorthand here instead.
398+
// we do not want to erase attributes hence this range start
399+
let s = field_name.syntax().text_range().end();
400+
let e = init.syntax().text_range().end();
401+
edit.delete(TextRange::new(s, e));
402+
return true;
407403
}
408404
}
409405
// init shorthand

crates/ide-db/src/search.rs

+18-22
Original file line numberDiff line numberDiff line change
@@ -494,41 +494,37 @@ impl<'a> FindUsages<'a> {
494494
}
495495

496496
// Search for `super` and `crate` resolving to our module
497-
match self.def {
498-
Definition::Module(module) => {
499-
let scope = search_scope
500-
.intersection(&SearchScope::module_and_children(self.sema.db, module));
497+
if let Definition::Module(module) = self.def {
498+
let scope =
499+
search_scope.intersection(&SearchScope::module_and_children(self.sema.db, module));
501500

502-
let is_crate_root =
503-
module.is_crate_root(self.sema.db).then(|| Finder::new("crate"));
504-
let finder = &Finder::new("super");
501+
let is_crate_root = module.is_crate_root(self.sema.db).then(|| Finder::new("crate"));
502+
let finder = &Finder::new("super");
505503

506-
for (text, file_id, search_range) in scope_files(sema, &scope) {
507-
let tree = Lazy::new(move || sema.parse(file_id).syntax().clone());
504+
for (text, file_id, search_range) in scope_files(sema, &scope) {
505+
let tree = Lazy::new(move || sema.parse(file_id).syntax().clone());
508506

507+
for offset in match_indices(&text, finder, search_range) {
508+
if let Some(iter) = find_nodes("super", &tree, offset) {
509+
for name_ref in iter.filter_map(ast::NameRef::cast) {
510+
if self.found_name_ref(&name_ref, sink) {
511+
return;
512+
}
513+
}
514+
}
515+
}
516+
if let Some(finder) = &is_crate_root {
509517
for offset in match_indices(&text, finder, search_range) {
510-
if let Some(iter) = find_nodes("super", &tree, offset) {
518+
if let Some(iter) = find_nodes("crate", &tree, offset) {
511519
for name_ref in iter.filter_map(ast::NameRef::cast) {
512520
if self.found_name_ref(&name_ref, sink) {
513521
return;
514522
}
515523
}
516524
}
517525
}
518-
if let Some(finder) = &is_crate_root {
519-
for offset in match_indices(&text, finder, search_range) {
520-
if let Some(iter) = find_nodes("crate", &tree, offset) {
521-
for name_ref in iter.filter_map(ast::NameRef::cast) {
522-
if self.found_name_ref(&name_ref, sink) {
523-
return;
524-
}
525-
}
526-
}
527-
}
528-
}
529526
}
530527
}
531-
_ => (),
532528
}
533529

534530
// search for module `self` references in our module's definition source

crates/ide-db/src/symbol_index.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,10 @@ impl Query {
323323
if symbol.name != self.query {
324324
continue;
325325
}
326-
} else if self.case_sensitive {
327-
if self.query.chars().any(|c| !symbol.name.contains(c)) {
328-
continue;
329-
}
326+
} else if self.case_sensitive
327+
&& self.query.chars().any(|c| !symbol.name.contains(c))
328+
{
329+
continue;
330330
}
331331

332332
res.push(symbol.clone());

0 commit comments

Comments
 (0)