Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit ac3844a

Browse files
committed
a number of code simplifications
1 parent 3987c83 commit ac3844a

File tree

13 files changed

+99
-124
lines changed

13 files changed

+99
-124
lines changed

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

Lines changed: 1 addition & 1 deletion
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
}

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

Lines changed: 9 additions & 11 deletions
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/src/lib.rs

Lines changed: 2 additions & 2 deletions
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/generate_default_from_new.rs

Lines changed: 3 additions & 3 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 2 deletions
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

Lines changed: 3 additions & 5 deletions
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

crates/ide-db/src/search.rs

Lines changed: 18 additions & 22 deletions
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-diagnostics/src/handlers/json_is_not_rust.rs

Lines changed: 56 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -99,76 +99,66 @@ pub(crate) fn json_in_items(
9999
&& node.last_token().map(|x| x.kind()) == Some(SyntaxKind::R_CURLY)
100100
{
101101
let node_string = node.to_string();
102-
if let Ok(it) = serde_json::from_str(&node_string) {
103-
if let serde_json::Value::Object(it) = it {
104-
let import_scope = ImportScope::find_insert_use_container(node, sema)?;
105-
let range = node.text_range();
106-
let mut edit = TextEdit::builder();
107-
edit.delete(range);
108-
let mut state = State::default();
109-
let semantics_scope = sema.scope(node)?;
110-
let scope_resolve =
111-
|it| semantics_scope.speculative_resolve(&make::path_from_text(it));
112-
let scope_has = |it| scope_resolve(it).is_some();
113-
let deserialize_resolved = scope_resolve("::serde::Deserialize");
114-
let serialize_resolved = scope_resolve("::serde::Serialize");
115-
state.has_deserialize = deserialize_resolved.is_some();
116-
state.has_serialize = serialize_resolved.is_some();
117-
state.build_struct(&it);
118-
edit.insert(range.start(), state.result);
119-
acc.push(
120-
Diagnostic::new(
121-
"json-is-not-rust",
122-
"JSON syntax is not valid as a Rust item",
123-
range,
124-
)
125-
.severity(Severity::WeakWarning)
126-
.with_fixes(Some(vec![{
127-
let mut scb = SourceChangeBuilder::new(file_id);
128-
let scope = match import_scope {
129-
ImportScope::File(it) => ImportScope::File(scb.make_mut(it)),
130-
ImportScope::Module(it) => ImportScope::Module(scb.make_mut(it)),
131-
ImportScope::Block(it) => ImportScope::Block(scb.make_mut(it)),
132-
};
133-
let current_module = semantics_scope.module();
134-
if !scope_has("Serialize") {
135-
if let Some(PathResolution::Def(it)) = serialize_resolved {
136-
if let Some(it) = current_module.find_use_path_prefixed(
137-
sema.db,
138-
it,
139-
config.insert_use.prefix_kind,
140-
config.prefer_no_std,
141-
) {
142-
insert_use(
143-
&scope,
144-
mod_path_to_ast(&it),
145-
&config.insert_use,
146-
);
147-
}
102+
if let Ok(serde_json::Value::Object(it)) = serde_json::from_str(&node_string) {
103+
let import_scope = ImportScope::find_insert_use_container(node, sema)?;
104+
let range = node.text_range();
105+
let mut edit = TextEdit::builder();
106+
edit.delete(range);
107+
let mut state = State::default();
108+
let semantics_scope = sema.scope(node)?;
109+
let scope_resolve =
110+
|it| semantics_scope.speculative_resolve(&make::path_from_text(it));
111+
let scope_has = |it| scope_resolve(it).is_some();
112+
let deserialize_resolved = scope_resolve("::serde::Deserialize");
113+
let serialize_resolved = scope_resolve("::serde::Serialize");
114+
state.has_deserialize = deserialize_resolved.is_some();
115+
state.has_serialize = serialize_resolved.is_some();
116+
state.build_struct(&it);
117+
edit.insert(range.start(), state.result);
118+
acc.push(
119+
Diagnostic::new(
120+
"json-is-not-rust",
121+
"JSON syntax is not valid as a Rust item",
122+
range,
123+
)
124+
.severity(Severity::WeakWarning)
125+
.with_fixes(Some(vec![{
126+
let mut scb = SourceChangeBuilder::new(file_id);
127+
let scope = match import_scope {
128+
ImportScope::File(it) => ImportScope::File(scb.make_mut(it)),
129+
ImportScope::Module(it) => ImportScope::Module(scb.make_mut(it)),
130+
ImportScope::Block(it) => ImportScope::Block(scb.make_mut(it)),
131+
};
132+
let current_module = semantics_scope.module();
133+
if !scope_has("Serialize") {
134+
if let Some(PathResolution::Def(it)) = serialize_resolved {
135+
if let Some(it) = current_module.find_use_path_prefixed(
136+
sema.db,
137+
it,
138+
config.insert_use.prefix_kind,
139+
config.prefer_no_std,
140+
) {
141+
insert_use(&scope, mod_path_to_ast(&it), &config.insert_use);
148142
}
149143
}
150-
if !scope_has("Deserialize") {
151-
if let Some(PathResolution::Def(it)) = deserialize_resolved {
152-
if let Some(it) = current_module.find_use_path_prefixed(
153-
sema.db,
154-
it,
155-
config.insert_use.prefix_kind,
156-
config.prefer_no_std,
157-
) {
158-
insert_use(
159-
&scope,
160-
mod_path_to_ast(&it),
161-
&config.insert_use,
162-
);
163-
}
144+
}
145+
if !scope_has("Deserialize") {
146+
if let Some(PathResolution::Def(it)) = deserialize_resolved {
147+
if let Some(it) = current_module.find_use_path_prefixed(
148+
sema.db,
149+
it,
150+
config.insert_use.prefix_kind,
151+
config.prefer_no_std,
152+
) {
153+
insert_use(&scope, mod_path_to_ast(&it), &config.insert_use);
164154
}
165155
}
166-
let mut sc = scb.finish();
167-
sc.insert_source_edit(file_id, edit.finish());
168-
fix("convert_json_to_struct", "Convert JSON to struct", sc, range)
169-
}])),
170-
);
171-
}
156+
}
157+
let mut sc = scb.finish();
158+
sc.insert_source_edit(file_id, edit.finish());
159+
fix("convert_json_to_struct", "Convert JSON to struct", sc, range)
160+
}])),
161+
);
172162
}
173163
}
174164
Some(())

crates/ide-diagnostics/src/handlers/private_assoc_item.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ pub(crate) fn private_assoc_item(
1111
d: &hir::PrivateAssocItem,
1212
) -> Diagnostic {
1313
// FIXME: add quickfix
14-
let name = match d.item.name(ctx.sema.db) {
15-
Some(name) => format!("`{}` ", name),
16-
None => String::new(),
17-
};
14+
let name = d.item.name(ctx.sema.db).map(|name| format!("`{name}` ")).unwrap_or_default();
1815
Diagnostic::new(
1916
"private-assoc-item",
2017
format!(

crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,7 @@ pub(crate) fn unresolved_proc_macro(
3434
let message = format!(
3535
"{message}: {}",
3636
if config_enabled {
37-
match def_map.proc_macro_loading_error() {
38-
Some(e) => e,
39-
None => "proc macro not found in the built dylib",
40-
}
37+
def_map.proc_macro_loading_error().unwrap_or("proc macro not found in the built dylib")
4138
} else {
4239
match d.kind {
4340
hir::MacroKind::Attr if proc_macros_enabled => {

crates/mbe/src/expander/transcriber.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ fn expand_var(ctx: &mut ExpandCtx<'_>, v: &SmolStr, id: tt::TokenId) -> ExpandRe
212212
} else {
213213
ctx.bindings.get(v, &mut ctx.nesting).map_or_else(
214214
|e| ExpandResult { value: Fragment::Tokens(tt::TokenTree::empty()), err: Some(e) },
215-
|it| ExpandResult::ok(it),
215+
ExpandResult::ok,
216216
)
217217
}
218218
}

crates/project-model/src/workspace.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,11 +366,11 @@ impl ProjectWorkspace {
366366
_ => None,
367367
})
368368
.collect();
369-
let ref mut outputs = match WorkspaceBuildScripts::run_once(config, &cargo_ws, progress) {
369+
let outputs = &mut (match WorkspaceBuildScripts::run_once(config, &cargo_ws, progress) {
370370
Ok(it) => Ok(it.into_iter()),
371371
// io::Error is not Clone?
372372
Err(e) => Err(Arc::new(e)),
373-
};
373+
});
374374

375375
workspaces
376376
.iter()

0 commit comments

Comments
 (0)